使用的中断有:
1) systick 中断,配置超时时间为 5ms;
2) uart 的 IDLE,DMA 的 TC,HT 中断;
在 systick 时间到期发现没有事情可做,就调用了 __WFI();
1)如果在 systick 到期后只让 LED 闪烁,没有串口通讯,也就是说没有 uart 和 dma 中断,程序运行一直都正常;
2)当进行串口数据收发(波特率115200): 20ms 间隔发送 250 字节,很快就发现 MCU 无法被唤醒,数据无法收发,LED 也不闪烁;
发生这种情况之后,通过 SDI 也无法下载程序,必须要复位了;
上边这种测试场景只需要把 __WFI() 注释掉,连续串口通讯 10 分钟 MCU 都运行正常,也不会发生丢数据的情况。
请问 __WFI() 正确的使用方式是?
查看: 1096
回复: 2
CH32V003 使用 __WFI() 后有概率唤不醒 MCU
热门产品 :
CH592: RISC-V内核BLE5.4无线MCU
您好,若需要进入睡眠模式,直接调用__WFI()函数即可。可以检查一下出现问题之后程序是不是进HardFault或者跑飞了,若方便,可将工程发至我的邮箱(lzs@wch.cn),这边测试一下,后续问题的沟通也可以通过邮箱进行沟通。
邮件已发送,请查收,谢谢
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录