完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我的情况是在一个死循环里面,等待1S定时器到时来跳转出来,循环里面跑一次的时间有点多 ,我如何在IS定时器中断来临时立马跳出来,而不必等它跑完一次循环。所以我想问大家不同函数间的跳转。
|
|
|
|
用定时器中断,在中断里面调用要执行的函数就行。
|
|
|
|
我程序是在死循环里面跑,需求是定时器中断到来 立马跳出循环,不是在中断里面调函数(你终归是返回你进中断的位置) 。
|
|
|
|
那只能在死循环里面多判断几次定时标志位,只要定时时间到了就break,退出循环。
|
|
|
|
循环里先判断定时标志位,时间到了就执行你要的函数,否则执行循环内其他函数,这样不行?
|
|
|
|
我现在就是这么做的,但是我循环里面跑一次要浪费一些时间 ,我定时器中断到了立马跳出来,而不是等它跑到标志位那里再跳出来
|
|
|
|
你不到标志位那里,怎么知道循环到了?应该是在中断里置标志,然后循环里查标志,标志置位了就跳出来,对吧?你说的那些“循环里比较多的其他任务”总归还是要执行的。又不能直接从中断里goto到你指定的位置。
|
|
|
|
这个时候用UCOS系统就可以很简单的解决这个问题。想问一下你调出所谓的主循环之后要做什么啊?你可以在中断里这一个循环,就可以回不到主循环中了。然后用更高优先级的中断(随便一个什么硬件中断)断开中断1中的循环。这样你可以嵌套多层中断已达到你的目的。哈哈哈!!
|
|
|
|
你说对了,我还就是这么想的 想从中断直接跳到标志位的判断里面{} 然后跳出死循环,至于你建议的方法我本来就是这么做的
|
|
|
|
谁吃饱了没事一直卡中断里面不出来,UCOSIII我懂,我是想用跳转语句从中断直接跳出中断外面的死循环。
|
|
|
|
好像并不能直接从中断跳出到中断外的指定位置,起码编译器自身不会自动做这样的操作,而goto语句的话仅仅是直接改变PC指针的值,而不会对堆栈进行任何操作。如果一定要实现你要的效果,那就自己做好堆栈处理,总之很麻烦。因为你也不知道进去之前的状态,如果仅仅是恢复之前的状态那就出个栈就好了,但你出中断后又要进行跳转,这个时候堆栈变量怎么搞?
|
|
|
|
楼上建议用操作系统的哥们说的不错,用操作系统可以实现你的需求。
你把外面的死循环做成一个任务,在中断里你想要退出死循环的地方直接把死循环任务给挂起,甚至删除,这样不就相当于跳出了死循环吗? 然后你想什么时候再循环起来,又开启或者创建任务就是了。 |
|
|
|
只有小组成员才能发言,加入小组>>
809 浏览 0 评论
1161 浏览 1 评论
2535 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2719 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1100浏览 3评论
198浏览 2评论
464浏览 2评论
378浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
459浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 06:29 , Processed in 1.525896 second(s), Total 99, Slave 80 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号