|
菜鳥一枚,遇到問題上網找不到答案,只好自己嘗試,請大神指教。
問題描述:
配置USART的波特率為38400,結果無法成功接收數據,檢查后發(fā)現(xiàn)波特率配置寄存器BRR錯誤,
005LTGcEgy.png (766 Bytes, 下載次數: 134)
下載附件
2015-6-6 21:35 上傳
編譯器優(yōu)化導致USART波特率配置錯誤
,嘗試在USART_Init(USART3, &USART_InitStructure); 增加斷點,結果發(fā)現(xiàn)寄存器竟然不同,
005LTGcEgy6SIFGQ5SI34&690.png (2 KB, 下載次數: 115)
下載附件
2015-6-6 21:34 上傳
編譯器優(yōu)化導致USART波特率配置錯誤
反復試了多次,結果一樣:在又斷點的情況下,波特率寄存器正確;在沒有斷點的情況下波特率寄存器配置錯誤;
原因分析:
有無斷點時運行結果不同,可能是沒加斷點時這些語句沒有執(zhí)行,加了斷點才執(zhí)行。聯(lián)想到編譯器優(yōu)化的問題,于是把優(yōu)化等級設置為0;
005LTGcEgy6SIFHT3Z8b2&690.png (22.7 KB, 下載次數: 186)
下載附件
2015-6-6 21:34 上傳
編譯器優(yōu)化導致USART波特率配置錯誤
結果運行正確
總結:
因為編譯器優(yōu)化的原因導致某些語句沒有執(zhí)行,以后發(fā)現(xiàn)有無斷點結果不同的情況可以考慮編譯器優(yōu)化的問題。
|
|