完善资料让更多小伙伴认识你,还能领取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不住了。 所以,主程序才是搞事的好地方。没有必要,别在中断里长篇大论。。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1107 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1055 浏览 2 评论
2159 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1253 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1678 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:19 , Processed in 0.690383 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号