stm8l051 halt之后外部中断唤醒问题
来源:互联网 发布:淘宝买刀剑会被扣留不 编辑:程序博客网 时间:2024/05/22 01:29
最近用到stm8l051 halt,在halt之后开启了外部中断,有时灵,有时不灵,设置下降沿触发,但是按键(低有效)放开了才会从HALT退出,最后发现在进去外部中断的时候一直在外部中断里面不退出。
在外部中断程序里面把端口的外部中断和端口使能的外部中断功能关闭,问题解决,可以在下降沿从halt退出。
1、开启halt,其他代码省略,只贴halt部分:
/* 禁止TIM3 */
TIM3->SR1 = (uint8_t)(~(uint8_t)TIM3_IT_Update);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, DISABLE);
TIM3_ITConfig(TIM3_IT_Update, DISABLE);
TIM3_Cmd(DISABLE);
if(Halt.wakeupFlag == 0)
{
POWER433MOFF;
halt();
}
Halt.wakeupFlag = 0;
Si4432PortReset();
MCUTXLEDOFF;
POWER433MON;
//唤醒
EXTI->SR1 = 0Xff;
EXTI->SR2 = 0Xff;
GPIOA->CR2 = 0x00;
GPIOB->CR2 = 0x00;
GPIOD->CR2 = 0x00;
GPIOE->CR2 = 0x00;
Set_X_InputPullHigh();
2、 stm8l15x_it.c里面:
/**
* @brief External IT PIN6 Interrupt routine.
* @param None
* @retval None
*/
INTERRUPT_HANDLER(EXTI6_IRQHandler,14)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
Halt.wakeupFlag = 1; //halt唤醒标志
EXTI_ClearITPendingBit(EXTI_IT_Pin6); //清外部中断6
EXTI->SR1 = 0Xff; //清端口的外部中断标志
EXTI->SR2 = 0Xff;
GPIOA->CR2 = 0x00; //清端口的外部中断功能
GPIOB->CR2 = 0x00;
GPIOD->CR2 = 0x00;
GPIOE->CR2 = 0x00;
}
- stm8l051 halt之后外部中断唤醒问题
- stm8l051的外部中断
- s3c2440外部中断问题
- 中断唤醒
- F2812 外部中断及其中断问题
- rk3288 外部EINT 中断问题
- stm32的外部中断问题
- STM8L051之低功耗停机配置问题
- cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断)
- imx6系列--将一个gpio设置为可唤醒系统的外部中断流程
- 再论UCOS II外部中断问题
- s3c6410外部中断号与引脚问题
- STM32外部中断无法触发的问题
- stm32 EXTI中断BUG,无法进入外部中断的问题
- 按键中断,休眠,唤醒
- 可唤醒中断
- RTC唤醒中断
- 外部中断
- 树状数组
- 采购订单检查/保存BADI使用
- BING
- 数据库
- 学习java之内部类使用以及链式编程
- stm8l051 halt之后外部中断唤醒问题
- Spark shuffle:hash和sort性能对比
- Android自动调用软键盘
- 当你选择编程语言时你在选择什么?
- POJ 3292 数论 类似素数筛
- winpcap 为什么会抓到超过1500byte的包?
- 图片轮播
- 中介者模式
- 数学建模MCM/ICM——LaTeX排版