久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

小算法撬動大地球

 昵稱29273511 2015-12-09


導讀

在通訊過程中,,時鐘的計算尤其重要,有時候小小的誤差就能導致通訊異常,。本章旨于如何用小算法減小計算產(chǎn)生的誤差,。

在通訊過程,,尤其是像串口等異步通訊過程中,,小小的波特率誤差就可能導致通訊異常。那么究竟是什么原因?qū)е碌哪??可能是時鐘源產(chǎn)生的誤差,,可能是時鐘配置有誤,也有可能是計算產(chǎn)生的誤差?,F(xiàn)在我們就減少計算誤差這一話題來探討一個小小的算法——四舍五入除法,。


以KE02 uart波特率配置為例:

根據(jù)參考手冊的說明,uart波特率的配置如下:



這個顯然是正確的,,但是為什么有時候在某一波特率值下會出現(xiàn)一點點的亂碼呢,?原因可能就是在計算u16Sbr的時候產(chǎn)生誤差,。例如如果(SysClk>>4)/Baud計算出來的值是10.96,,但賦值給u16Sbr(u16Sbr為無符號短整數(shù))后,u16Sbr的值為10,,把小數(shù)省略了,,從而導致產(chǎn)生誤差,。我們不妨把計算方法改變一下:



((SysClk>>4) + (Baud>>1))/Baud等于 (SysClk>>4)/Baud+0.5,即a/b+0.5(a為被除數(shù),,b為除數(shù)),。這里采用了四舍五入除法,當結(jié)果的小數(shù)位小于4時,,加上5也不會進位,,從而舍去;當結(jié)果的小數(shù)位大于等于5時,,加上5就會進位,。如果(SysClk>>4)/Baud計算出來的值是10.96,那么用四舍五入法后,,即(SysClk>>4)/Baud+0.5的值就變成11.46,,u16Sbr的值為11,比10更加接近10.96 ,。這樣的四舍五入算法比直接舍去全部小數(shù)更加精確,,產(chǎn)生的誤差也更加小。



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多