完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
希望当外部中断触发时,处理一系列函数,我看大家都说中断函数越短越好,需要处理的函数还是放到主函数里好。一般是在中断函数里放个标志位,置位时在主函数里检测,在主函数里执行相应的程序。
那么主函数是怎么检测这个标志位的呢?是在while(1)里用判断语句一直检测吗? |
|
相关推荐
5个回答
|
|
|
有OS的话可以用个信号量什么的,裸奔就只能一直判断或者定时判断。
|
|
|
|
|
|
顶楼上,中断不频繁且裸奔的话你也可以隔断时间去查询标识
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
本帖最后由 sssdd 于 2017-5-10 13:21 编辑
不懂什么叫裸奔。有个主定时就算操作系统了?那么咱们来个主定时和一打操作系统。 你可以在中断里主定时到时,比如1000us。设立标志位。比如flag=1; while(1)里面get这个标志位,然后巴拉巴拉。。于是,你得到了一个受flag控制的分时系统。 一个时间片就是主定时周期。于是,你可以在里面再搞事。比如设置一个u16 work; work==0,搞串口。work==1,搞采集。work==3,搞计算。。。。让work++;并且当work==n的时候从头再来。 我们就得到了一个分时响应work=n的“多任务操作系统”。。。。 挖槽,是不是好土?? 再来高级一点的。。 n咱们来个动态的? work不++了。咱们来个进程表怎么样? 进程表动态可变的劲爆不劲爆? UI界面怎么办?为了面子不能丢,咱们的display一定要单独开特权。定时刷。嗯,进程表加个权。。 麻蛋work太多太多了。做不完啊。。抱歉,这个真没法子。 每个进程开内存管理。。。。 不行了。。再搞,这单片机真hold不住了。 所以,主程序才是搞事的好地方。没有必要,别在中断里长篇大论。。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:15 , Processed in 0.653878 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3645