HAL_SLEEP開啟后串口中斷無法接收數(shù)據(jù)

一個使用串口中斷接收外部設備數(shù)據(jù)的應用。

在開啟 HAL_SLEEP 之前,通訊一切正常。

開啟 HAL_SLEEP 后,串口中斷無法正常接收外部設備發(fā)來的數(shù)據(jù)。

機器的其他操作都正常? :? 按鍵,pwm輸出,adc采集.

就是串口中斷 失效了。


image.png


和這位用戶的情況基本一致。

image.png


image.png


給出的解決方案是再休眠前將串口修改為io并且設置為喚醒。

喚醒后再將io恢復為串口。


?解決方案中的操作我不太理解:


睡眠前需要將串口設置為普通io:? 我只是開啟了 HAL_SLEEP 。 沒有主動調(diào)用休眠,是系統(tǒng)自動進入休眠,我應該在哪里進行該操作呢?


喚醒后將io重新設置為串口:我不知道系統(tǒng)是在哪進行休眠的, 所以我應該在怎么恢復呢?

系統(tǒng)的休眠是由協(xié)議棧管理的,在進行休眠時無法進行數(shù)據(jù)接收,因此會收不到數(shù)據(jù)。

芯片通過宏開啟睡眠。在接收數(shù)據(jù)之前將串口模式切換為GPIO,當有數(shù)據(jù)過來,GPIO會產(chǎn)生由高電平到低電平的信號,可以由這個信號作為判斷,觸發(fā)GPIO中斷從而喚醒。喚醒后將GPIO再切換為串口來接收數(shù)據(jù),此時需要注意在lowpower函數(shù)中置一個標志進行退出睡眠,否則又無法接收到數(shù)據(jù)了。接收完成后再切換為GPIO進行判斷下一次是否有數(shù)據(jù)過來從而喚醒。

這是大致的流程,相應的程序目前暫未提供,后續(xù)如提供會第一時間在此貼回復。


我的設備為藍牙從機,在上電后處于待機狀態(tài)。在待機狀態(tài)下,只需要進行廣播,等待app連接。但是需要超低功耗。

app連接后,app控制設備開機。開機后,設備就不需要考慮功耗問題了。

直到app控制設備關機,藍牙斷開,重新進入待機,等待app再次連接。



能不能設置,在待機的情況下讓 HAL_SLEEP 生效, 開機后,讓HAL_SLEEP失效呢 ?

或者有其他方案處理我的這種應用環(huán)境嗎?


留一個郵箱,這里提供一個程序作為參考。


個人信息保護,已隱藏


已發(fā)送至郵箱,請查收。


請也發(fā)一份給我參考,謝謝。個人信息保護,已隱藏



已發(fā)送至郵箱,請查收。


這邊也需要一份例程,麻煩給發(fā)一下,謝謝。個人信息保護,已隱藏


也發(fā)我一下郵箱 個人信息保護,已隱藏


已發(fā)送至郵箱,請查收。


也發(fā)我一下,個人信息保護,已隱藏


請查看該博客進行下載:

CH582芯片Sleep模式串口喚醒接收數(shù)據(jù) - SweetTea_lllpc - 博客園 (cnblogs.com)



只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频