完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在许多应用程序中,我使用简单的模板,其中中断例程(例如 UART 接收)引发标志(易失性变量)和 main() 函数轮询这些标志并处理这些事件(例如解析传入的 UART 字符)。我想在无事可做时让 MCU 进入睡眠状态——当所有标志都被清除时。但我不能简单地写:
只是为了兴趣: STM32 通过调用“发送事件”指令(在出现标志的地方)来处理该问题,从而防止入睡。 AVR 有单独的位用于“睡眠启用”,该位可以在 IRQ 例程中清除,在该例程中会升高标志并防止 MCU 进入睡眠模式。 如何使用 STM8 做到这一点? |
|
相关推荐
1个回答
|
|
以下是我执行此操作的方法之一(使用优先级事件处理),但它是在汇编程序中:
一些解释: 就像你写的那样,中断执行基本的即时任务并设置一个标志(代码片段中的事件)以表示进一步处理。在永久循环中,如果设置了任何事件标志,则将逐个测试这些标志,如果设置,则执行事件任务处理程序。 如果连续或太频繁地设置其中一个事件,将不会处理以下事件 - 但我希望它以这种方式运行,因为最后一个事件是重置看门狗的事件,以防万一它没有被执行时间,我知道有些事情没有按照我的计划进行。这可以通过使用调用而不是跳转到事件处理程序来轻松更改。 你将如何用 C 语言编写它,或者 C 编译器如何执行它们的循环,我不知道。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2715 浏览 1 评论
3235 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1807 浏览 1 评论
3643 浏览 6 评论
6031 浏览 21 评论
1332浏览 4评论
206浏览 3评论
194浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
348浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
440浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 03:37 , Processed in 1.346704 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号