![]() |
https://blog.csdn.net/xiaolong11 ... e/details/116707684 可以看看這個 我覺得遇到問題你一個一個排除,,先看看硬件的連接和藍牙模塊是否有問題,, 再去看你的程序,,我覺得問題在于你的程序。。 |
會不會是串口1時鐘頻率太高,單片機接收補刀手機發來的數據,有沒有這種可能? |
shumivan 發表于 2021-7-16 17:11 藍牙的校驗位這些設置是默認出廠設置,代碼的是8位數據位,1位停止位,均無誤 |
1105730718 發表于 2021-7-16 14:20 非常感謝大佬回復,對于你的疑問,我解釋一下: (1)代碼項目是手機app發送一個字符,單片機返回給手機該字符 (2)這個代碼是用洋桃電子的例程修改的,在我不連接藍牙模塊時,單片機是可以在串口助手上返回數據,亂碼是發生在連接藍牙后。。。 (3)藍牙和單片機的rx,tx交叉連接,應該沒問題 (4)藍牙模塊要求5V供電,單片機是連接數據線供電 (5)經過多天的調試,發現在有些時候,藍牙和單片機可以正常傳輸數據;但在大部分時候是亂碼 |
1.首先你的串口不只是有比特率,還有校驗位,停止位,都確定無誤; |
大概看了下,提出幾個疑問: 1,這個代碼項目是要用單片機做橋梁,實現串口助手和手機藍牙助手的通信嗎? 2,如果要實現雙向通信,藍牙模塊和電腦串口助手得各自分別占用一個串口,我看你代碼只開了串口1,只能是單向通信:即PA9接藍牙PA10接USB-TTL,實現電腦發,單片機收,并轉發給藍牙模塊(也就是轉發給手機);二是反過來接,傳輸方向相反。 3,串口中斷服務函數中沒進行中斷標志位的清除,會造成程序死在中斷。 結論:你的(2)圖電腦發送a之后,進入中斷并且無法退出,則不停執行printf(“%c”,receivedata);所以a之后會有亂碼, 那是接收寄存器里的隨機數據。至于藍牙發送后電腦收到????,大概率是接線錯誤,收到了非顯示字符,串口軟件自動填充成了?。 如果數據線都接的正常, 建議檢查下供電。單片機3.3還真不一定行。 |
適得府君書 發表于 2021-7-16 08:56 單片機程序波特率為4800,藍牙我用USB-TTL測試后,也是4800 |
devcang 發表于 2021-7-16 09:55 手機端。?梢栽O置波特率嗎? |
藍牙模塊,本身要設置波特率的。 四者的波特率,都要對應的 手機端 ------ 藍牙模塊 ----- 單片機 -------- 電腦端 |
藍牙和單片機都是串口通訊的話沒啥時序對不對的問題。只有波特率對不對。串口通訊出現亂碼很大可能是波特率不對。藍牙模塊的波特率。單片機的波特率。 |