stm32f107的串列埠通訊總結
stm32f107
的串列埠通訊總結
1.
stm32
的一般規律,首先要使用串列埠必先使能串列埠時鐘,比如串列埠1: rcc_apb2periphclockcmd(rcc_apb2periph_usart1,enable);
2.
串列埠使用的gpio口設定: 首先使能gpio的時鐘rcc_apb2periphclockcmd(rcc_apb2periph_gpioa,enable);其次gpio埠的模式配置(復用推挽輸出、浮空輸入等)
3.
主程式有中斷的要使用中斷配置,注意中斷的搶占優先順序和子優先順序,串列埠的一般排次位。
初始化中斷。
4.
串列埠配置 : 波特率、位元組長度 、停止位、奇偶校驗、模式、硬體流控制等
初始化串列埠、串列埠接收中斷使能、串列埠使能。
5.
接收中斷服務函式編寫, voidusart1_irqhandler(void)。
一般來說,接收中斷服務函式要考慮的問題比較多,主要有一下幾點: 接收資料的正確性(某位元組的校驗、包括crc校驗等),資料長度的正確性(是否接收完整),資料接收過程中突然出現中斷或者宕機的防護措施等。
6.
串列埠函式的傳送和接收函式 usart_senddata(usart_typedef*usartx, uint16_t data);
uint16_tusart_receivedata(usart_typedef* usartx);
7.
串列埠的狀態標誌 flagstatususart_getflagstatus(usart_typedef* usartx, uint16_t usart_flag);
清除串列埠的中斷標誌 voidusart_clearitpendingbit(usart_typedef* usartx, uint16_t usart_it);
------
串列埠章節算是比較複雜的,涉及的內容比較多,也是重點。學好了為以後的485通訊做好基礎。
STM32F107的時鐘設定
stm32f107 的時鐘設定 stm32 的庫函式好像只有外部 8m倍頻到 72m,現在用的板子外部 25m的晶振,如何倍頻到 72m呢?解決辦法 stm32f107 的時鐘分 4步的 1 25mhz先除5 分頻到5mhz 2 再8 倍頻到40mhz 3 再5 分頻到8mhz 4 再9 倍頻到72...
STM32F107的時鐘設定
stm32的庫函式好像只有外部8m倍頻到72m,現在用的板子外部25m的晶振,如何倍頻到72m呢?解決辦法 stm32f107的時鐘分4步的 1 25mhz先除5分頻到5mhz 2 再8倍頻到40mhz 3 再5分頻到8mhz 4 再9倍頻到72mhz.stm32f103和stm32f105 stm...
STM32F103串列埠通訊
usart 通用同步非同步收發器 是乙個序列通訊裝置,可以靈活地與外部裝置進行全雙工資料交換。有別於 usart 還有乙個uart,它是在 usart 基礎上裁剪掉了同步通訊功能,只有非同步通訊。全雙工的,非同步通訊 分數波特率發生器系統 傳送和接收共用的可程式設計波特率,最高達4.5mbits s...