完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一个使用串口中断接收外部设备数据的应用。
在开启 HAL_SLEEP 之前,通讯一切正常。 开启 HAL_SLEEP 后,串口中断无法正常接收外部设备发来的数据。 机器的其他操作都正常 : 按键,pwm输出,adc采集. 就是串口中断 失效了。 和这位用户的情况基本一致。 给出的解决方案是再休眠前将串口修改为io并且设置为唤醒。 唤醒后再将io恢复为串口。 解决方案中的操作我不太理解: 睡眠前需要将串口设置为普通io: 我只是开启了 HAL_SLEEP 。 没有主动调用休眠,是系统自动进入休眠,我应该在哪里进行该操作呢? 唤醒后将io重新设置为串口:我不知道系统是在哪进行休眠的, 所以我应该在怎么恢复呢? |
|
相关推荐
1个回答
|
|
系统的休眠是由协议栈管理的,在进行休眠时无法进行数据接收,因此会收不到数据。
芯片通过宏开启睡眠。在接收数据之前将串口模式切换为GPIO,当有数据过来,GPIO会产生由高电平到低电平的信号,可以由这个信号作为判断,触发GPIO中断从而唤醒。唤醒后将GPIO再切换为串口来接收数据,此时需要注意在lowpower函数中置一个标志进行退出睡眠,否则又无法接收到数据了。接收完成后再切换为GPIO进行判断下一次是否有数据过来从而唤醒。 |
|
|
|
只有小组成员才能发言,加入小组>>
467 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2871 浏览 2 评论
2359 浏览 1 评论
810浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
637浏览 1评论
495浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
359浏览 1评论
636浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 10:22 , Processed in 1.098110 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号