WFI
2016-09-25 16:26
162 查看
1. WFI与WFE的区别为,WFI等待的是中断,而WFE等待是事件,所以WFE不能进入中断服务函数,而WFI可以。
2. 实验现象和WFE一样。
CLK_Config();//切换LSI为主时钟
//不使用的IO全部设置为输出低电平
GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Slow);//GPIO初始化
GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_PU_IT);//初始化按键,GPB6上拉输入
EXTI_SetPinSensitivity (EXTI_Pin_6,EXTI_Trigger_Falling);//外部中断1,下降沿触发
enableInterrupts();//使能中断
while(1)
{
GPIO_ToggleBits(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);//翻转LED端口电平
Delay(0x00FF);
wfi();
GPIO_ToggleBits(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);//翻转LED端口电平
Delay(0x00FF);
}
INTERRUPT_HANDLER(EXTI6_IRQHandler,14)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
EXTI_ClearITPendingBit (EXTI_IT_Pin6);//清除中断标志 WFE模式下 该句放在while循环里面
}
2. 实验现象和WFE一样。
CLK_Config();//切换LSI为主时钟
//不使用的IO全部设置为输出低电平
GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Slow);//GPIO初始化
GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_PU_IT);//初始化按键,GPB6上拉输入
EXTI_SetPinSensitivity (EXTI_Pin_6,EXTI_Trigger_Falling);//外部中断1,下降沿触发
enableInterrupts();//使能中断
while(1)
{
GPIO_ToggleBits(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);//翻转LED端口电平
Delay(0x00FF);
wfi();
GPIO_ToggleBits(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);//翻转LED端口电平
Delay(0x00FF);
}
INTERRUPT_HANDLER(EXTI6_IRQHandler,14)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
EXTI_ClearITPendingBit (EXTI_IT_Pin6);//清除中断标志 WFE模式下 该句放在while循环里面
}
相关文章推荐
- 微信底部菜单栏实现的几种方法 -- Android学习之路
- 3456: 城市规划
- 从Java的角度看前端JS各种框架
- java 中基本数据类型在内存中占据的存储大小
- SQL mybatis入门
- oracleorc存储过程&函数&触发器
- 3分频器 verilog解析
- oracle的sql
- Hibernate中save()和persist()区别
- C# Tcp协议收发数据(TCPClient发,Socket收)
- HTTPS工作原理和TCP握手机制
- 回文检测(包含中文与字符)
- Keepalived+MySQL主主数据同步实现数据库高可用(HA)
- 实验二.任务三.TASK
- html5移动端适配使用流体布局经常遇到的坑
- $('#message').css('background', 'yellow').html('Hello!').show();
- 【一步步学OpenGL 13】 -《相机空间》
- Linux软链接和硬链接
- LeetCode : Pascal's Triangle
- 初识Struts2