欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
【新提醒】【stm8s003系列例程】2 基本串口收發(fā)(中斷接收方式)
 本帖最后由 辛昕 于 2014-1-4 18:40 編輯

對于串口而言,最基本的就是 收發(fā)。
因為本例程系列及我個(gè)人的風(fēng)格,我總是只讓例程的功能——同時(shí)也就純粹到 只展示這個(gè)功能的最小配置和最少代碼。

而對我而言,串口 收發(fā)(1字節——因此也就不涉及另外 對 收發(fā)的緩沖處理 等 實(shí)質(zhì)上 和 串口基本功能無(wú)關(guān)的 代碼)。
當然大多數時(shí)候,我接收都是中斷方式,而發(fā)送則無(wú)此必要——但是,我知道,在對速度有要求或者需要并行處理的場(chǎng)所,還需要 發(fā)送中斷,但這個(gè)比較少用,因此不考慮。

下面是代碼。
在貼以前,我講一些對相關(guān)庫,代碼的改動(dòng)。

首先,stm8s這個(gè)庫,它的stm8s_uart1.c里,在計算波特率時(shí),它需要獲取當前時(shí)鐘頻率
它采用的是 CLK_GetClockFreq();
這個(gè)函數定義在stm8s_clk.h里
然而,在這里,它并沒(méi)有包含這個(gè)頭文件——我知道,它是想模仿C標準庫,保證內部的十幾個(gè)庫之間不存在互相包含關(guān)系。
很可惜它犯了錯誤。

因為我做這個(gè)串口例程時(shí)始終錯誤,我走了不少彎路,最后想起來(lái)查對相關(guān)寄存器,發(fā)現這個(gè)波特率BRR1 BRR2從來(lái)就沒(méi)正常過(guò)。
而對比我此前的105例程卻是可以的。(因為我此前也改動(dòng)過(guò),而我卻忘了,也沒(méi)有記錄下來(lái)。)

也許在某些編譯器上可以允許這種錯誤,但是調用和返回不會(huì )出錯,但是這種對具體環(huán)境的依賴(lài)絕對是 除了找死還是找死。

其次,采用 CLK_GetClockFreq() 這個(gè)函數獲取系統時(shí)鐘,也有不妥當之處。
因為這個(gè)函數依賴(lài)一個(gè)外部宏,那就是 HSE_VALUE;
因為事實(shí)上,STM8S內部沒(méi)有真正可以用于采樣獲取時(shí)鐘頻率的硬件。
它只不過(guò)是通過(guò) 寄存器(對HSI LSI),以及這個(gè) HSE_VALUE宏來(lái)確定頻率。

我們都知道,如果我希望把這個(gè)庫單獨封裝,那么,對外部晶振頻率這種隨時(shí)會(huì )變化的環(huán)境,采用宏寫(xiě)入庫,那將是一個(gè)大麻煩。

因此這個(gè)地方是造成這個(gè) 庫無(wú)法單獨封裝 的又一個(gè)障礙。

我暫時(shí)沒(méi)想到太好的辦法。
但顯然,這個(gè)地方是一個(gè)隱患。

過(guò)后也許會(huì )考慮比較單純的,采取單獨增加填寫(xiě) BRR1 BRR2寄存器的函數,或者想辦法把外部晶振頻率傳遞入庫,讓它可以獲得真正的 實(shí)際頻率。

注:以上兩處,涉及 庫 以及 CLOCK部分,而這兩部分我先前已經(jīng)發(fā)過(guò)貼,我會(huì )把這些內容同步更新到那兩個(gè)貼里。
此帖出自編程基礎論壇
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
stm32 USART 串口通信[操作寄存器+庫函數]-Changing's Blog
ARM嵌入式編程與實(shí)戰應用(STM32F1系列)第5章 USART串口通信
STM32 ~ USART接收不定長(cháng)數據
STM8L的DMA詳解 含例程
STM8學(xué)習筆記
IAR+STM8 UART串口發(fā)送與中斷接收
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久