同個程式不同版子就有不同結果,看起來很像內振16MHz所造成的誤差,
這是因為範例有換算上的誤差,只要將範例做修正即可得到正確的baudrate
在這先貼上範例的公式
RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */
// RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */
以9600來說 經範例的公式換算後會得到FF96 與手冊上的FF98不符,如圖片所示:
如果將換算的誤差修正後應該能解決你的問題 |