OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2323|回复: 3

中断让主程序卡机

[复制链接]

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-11-1
在线时间
10 小时
发表于 2018-1-19 14:06:47 | 显示全部楼层 |阅读模式
10金钱
个位老师,无意中发现了一个问题,我的主程序是LED01每300毫秒翻转,中断是用K0触发让LED0翻转,
奇怪的事情发生了,偶而 中断可以让主程序卡顿,中退出主程序的“LED1”也不翻转,需要在按几次“K0”主程序长能运行。
有时正常,有时中断会让主程序卡住停止运行,中断正常。
这是什么情况?
void EXTI4_IRQHandler(void)
{

最佳答案

查看完整内容[请看2#楼]

问题解决了,中断代码把清除标志位的函数放到 if 里边了,应该放到 if 的大括号外边可能是有干扰信号触发了中断。 void EXTI4_IRQHandler(void)//⑥编写中断服务函数。 { delay_ms(10); if(s1==0) { LED1=!LED1; EXTI_ClearITPendingBit(EXTI_Line4); } }
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-11-1
在线时间
10 小时
 楼主| 发表于 2018-1-19 14:06:48 | 显示全部楼层
本帖最后由 782835576 于 2018-1-19 16:09 编辑

问题解决了,中断代码把清除标志位的函数放到  if  里边了,应该放到  if  的大括号外边可能是有干扰信号触发了中断。
void EXTI4_IRQHandler(void)//⑥编写中断服务函数。
{
        
   delay_ms(10);
         
   if(s1==0)
         {
         
               
            LED1=!LED1;
            EXTI_ClearITPendingBit(EXTI_Line4);
         }


}
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2018-1-19 14:24:45 | 显示全部楼层
哪里有这种事情?你的代码呢?
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2017-10-1
在线时间
23 小时
发表于 2018-1-19 21:03:24 | 显示全部楼层
782835576 发表于 2018-1-19 16:06
问题解决了,中断代码把清除标志位的函数放到  if  里边了,应该放到  if  的大括号外边可能是有干扰信号触 ...

中断里面延时delay 肯定有卡的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 07:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表