请问,在STM32定时器中断服务程序中,启动软件中断为什么中断无法运行?

2019-03-23 19:22发布

这是我用来实验的中断服务程序:
void TIM2_IRQHandler(void)            //定时器2中断服务程序
{
         TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
         EXTI_GenerateSWInterrupt(EXTI_Line1);          //???
}
void EXTI1_IRQHandler(void)        //线路1中断服务程序
{
        EXTI_ClearITPendingBit(EXTI_Line1);
}
我试过,软中断EXTI_GenerateSWInterrupt(EXTI_Line1);  在主程序中时,两给中断服务程序都能正常运行,但是当放到定时器的服务程序时,就无法进入void EXTI1_IRQHandler(void)了,求解惑? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
lr2131
1楼-- · 2019-03-24 01:10
/
原帖由 liangshuan 于 2013-1-10 11:48 发表
这是我用来实验的中断服务程序:
void TIM2_IRQHandler(void)            //定时器2中断服务程序
{
         TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
         EXTI_GenerateSWInterrupt(EXTI_Line1);          //??? ...
EXTI_GenerateSWInterrupt(EXTI_Line1); 是什么意思,干什么的?
liangshuan
2楼-- · 2019-03-24 03:16
 精彩回答 2  元偷偷看……
liangshuan
3楼-- · 2019-03-24 07:24
产生对应服务程序 EXTI1_IRQHandler(void)的中断
liangshuan
4楼-- · 2019-03-24 09:03
我又加了
EXTIStatus = EXTI_GetITStatus(EXTI_Line1);
用来检测线路1是否发生请求,结果一直都是RESET状态,也就是在定时器中断服务程序执行语句
EXTI_GenerateSWInterrupt(EXTI_Line1);         
后,并没有产生中断请求,不知道为什么。。。

求大神指点!
liangshuan
5楼-- · 2019-03-24 09:21
 精彩回答 2  元偷偷看……
wudayongnb
6楼-- · 2019-03-24 11:59
你中断优先级设置的正确吗,中断标志置位也不一定就会产生中断啊

一周热门 更多>