求助大神,你能解决算你牛

2019-08-18 20:15发布

//定时器4中断服务程序
void TIM4_IRQHandler(void)                                             //TIM4中断
{       
        if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)  //检查TIM4更新中断发生与否
                {
                        TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); //清除TIMx更新中断标志
                        n++;
                        V_count=TIM_GetCounter(TIM1);                                                  //读取计数器的值
                        printf("count=%d ",V_count);
                        TIM_SetCounter(TIM1, 0);              //将计数寄存器值清零
                        while(1);     <<<<<<<<<<<<<<<<<<<<<问题在这!!!!!
                        printf("count ");
                }
}


大神们,问题就在这!我配置好定时中断后,每100ms进入一次中断,进入中断后,我先将标志位清除,没毛病吧?清除标志位之后,计数器应该又重新开始计数了,我下边写了一个while(1)。中断里边应该不会卡在这啊。对吗??能明白我意思吗???但是现在的效果是,卡了!!卡在while(1)了。printf("count=%d ",V_count);这句话就执行了一次。printf("count ");这句话,没执行。!!到底是啥问题!!还是32的中断不好使。。。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
会飞的大白猪
1楼-- · 2019-08-20 17:12
yklstudent 发表于 2017-5-19 13:08
你写的代码看不懂????

我是想知道。清除中断标志位后,计数器重新计数,重新定时100Ms,也就是100ms后重新触发中断,进入中断服务函数。while(1);在中断里边不能被打断??在主函数可以???还有,你们谁能把定时器运行机制给我讲讲。。。还有,这是个测试。我while(1)不会在中断里写的。
会飞的大白猪
2楼-- · 2019-08-20 18:54
 精彩回答 2  元偷偷看……
会飞的大白猪
3楼-- · 2019-08-21 00:41
jinggx 发表于 2017-5-19 13:48
我们不牛,你却是太菜,基础知识要多学习啊!你的这种想法,别说是牛了,鸡鸭鹅马羊哪个也解决不了!

我是想知道。清除中断标志位后,计数器重新计数,重新定时100Ms,也就是100ms后重新触发中断,进入中断服务函数。综合大家喷我的理由。while(1);在中断里边不能被打断??在主函数可以???还有,你们谁能把定时器运行机制给我讲讲。。。还有,这是个测试。我while(1)不会在中断里写的。  你别光顾喷我啊。你给我解释清楚才能说明我很菜啊。
会飞的大白猪
4楼-- · 2019-08-21 01:04
来俩不甜的 发表于 2017-5-19 13:54
你激动啥啊,慢慢来啊。没看明白你的问题。  大家一致认为就是会卡在那,只有你才认为不会卡在那

我是想知道。清除中断标志位后,计数器重新计数,重新定时100Ms,也就是100ms后重新触发中断,进入中断服务函数。综合大家喷我的理由。while(1);在中断里边不能被打断??在主函数可以???还有,你们谁能把定时器运行机制给我讲讲。。。还有,这是个测试。我while(1)不会在中断里写的。
会飞的大白猪
5楼-- · 2019-08-21 01:06
束命 发表于 2017-5-19 14:11
中断里面写死循坏,也是没谁了

我是想知道。清除中断标志位后,计数器重新计数,重新定时100Ms,也就是100ms后重新触发中断,进入中断服务函数。综合大家喷我的理由。while(1);在中断里边不能被打断??在主函数可以???还有,你们谁能把定时器运行机制给我讲讲。。。还有,这是个测试。我while(1)不会在中断里写的。只是测试,谢谢。能解决问题么??
会飞的大白猪
6楼-- · 2019-08-21 06:18
ljz1987cj 发表于 2017-5-19 14:29
真6  这么写头一次见到

我是想知道。清除中断标志位后,计数器重新计数,重新定时100Ms,也就是100ms后重新触发中断,进入中断服务函数。综合大家喷我的理由。while(1);在中断里边不能被打断??在主函数可以???还有,你们谁能把定时器运行机制给我讲讲。。。还有,这是个测试。我while(1)不会在中断里写的。

一周热门 更多>