历史上的今天
今天是:2024年12月05日(星期四)
2019年12月05日 | stm8l051 halt之后外部中断唤醒问题
2019-12-05 来源:elecfans
最近用到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;
}
上一篇:STM8L052低功耗模式
下一篇:STM8S存储器的读写操作
史海拾趣
|
北京时间9月1日消息 据国外媒体报道,谷歌CEO埃里克·施密特在接受彭博电视台采访时称,希望美国政府能批准谷歌与雅虎的合作]计划,使该计划能在今年10月开始实施。 据彭博电视台在科罗拉多州丹佛市进行的一次采访,美国政府正在审查两家公司的网 ...… 查看全部问答> |
|
我了解事物喜欢从底层根本去了解,而不是你说什么我照做就行了,我会形成一些探寻究竟的念头,也会产生很多疑问。 讨论之前当然要先看过某厂的datasheet,我看的是Micron。 按上面说,terminate和precharge都能掐断burst读或写。我也是第一次用Sd ...… 查看全部问答> |
|
自动测试系统(ATS)广泛应用于各类产品(器件、部件、电路板、设备或系统)从设计、生产到使用维护的各个阶段,对提高产品性能及生产率,降低生产成本及整个生命周期成本,起着重要作用。对于飞机、导弹、舰船或武器系统,自动测试系统更是这些它 ...… 查看全部问答> |
|
对于计算机专业的人来说,英语四级很重要吗?现在很忙,根本顾及不了英语,而老师也把它说得很重要。当然,我忙是因为自己的专业,而不是去浪费时间。 对于已经在社会工作的前辈们,你们认为英语四级重要吗? & ...… 查看全部问答> |
|
在DownloadImage函数中,有如下的一段代码,我搞不明白这里为什么给地址赋的是接收长度,而不是地址呢? if (*(UINT32 *)(pCurDownloadFile->dwRegionStart + ROM_SIGNATURE_OFFSET) == ROM_SIGN ...… 查看全部问答> |
|
在stm8s_conf.h中有如下语句: /* Includes ------------------------------------------------------------------*/ #include "stm8s.h" 在stm8s.h中有如下语句: #ifdef USE_STDPERIPH_DRIVER #include "stm8s_conf.h" #endi ...… 查看全部问答> |
|
定时器A模拟串口发送时,DEMO里有这么一句: if (RXTXData & 0x01) //判断最低位是否为1 CCTL0 &= ~ OUTMO ...… 查看全部问答> |
|
WEBENCH设计大赛上传数量排行榜(截止至7月11日下午4:30) 我们看看哪些网友离平板电脑、微单、电子书、固态硬盘或者移动硬盘这些大奖越来越近了呢?(截止到7月11日下午4点30的数据) 如果你也想获得下列奖品,那也赶紧提交设计吧!活动详情:https://bbs.eeworld.com.cn/TI/201307_webench/index.html ...… 查看全部问答> |




