一、序列通訊的通訊方式
1.同步通訊:帶時鐘同步訊號傳輸,有一根線是同步時鐘。例如spi(全雙功)、iic(半雙工)通訊介面
2.非同步通訊:不帶時鐘同步訊號,必須約定好波特率。例如uart(全雙功)
二、stm32的串列埠通訊介面
uart:通用非同步收發器。
usart:通用同步非同步收發器。
stm32f10x系列包含3個usart和2個uart。
都是ttl電平交叉相連即可
與pc機可以使用usb-ttl進行通訊。
三、通訊引腳
四、常用串列埠相關暫存器
2.usart_dr資料暫存器:通過讀寫這個暫存器來傳送接收資料
3.usart_brr波特率暫存器:
波特率計算方法:波特率=fplclkx /(16*usartdiv);usartdiv=72000000/(115200*16)=39.0625
div_fraction=16*0.0625=1=0x01;(小數部分)
div_mantissa=39=0x27;(整數部分)
從而得到usart_brr波特率暫存器的值為0x0271,這就是115200的波特率對應的暫存器值。
五、串列埠操作相關庫函式
void usart_init(usart_typedef* usartx, usart_inittypedef* usart_initstruct);
串列埠初始化:波特率,資料字長,奇偶校驗,硬體控制流以及收發使能。
第乙個成員變數是串列埠標號,第二個成員變數是結構體
typedef struct
usart_inittypedef;
void usart_cmd(usart_typedef* usartx, functionalstate newstate);
使能串列埠
void usart_itconfig(usart_typedef* usartx, uint16_t usart_it, functionalstate newstate);
使能相關中斷
void usart_senddata(usart_typedef* usartx, uint16_t data);
傳送資料到串列埠
uint16_t usart_receivedata(usart_typedef* usartx);
從串列埠接收資料
flagstatus usart_getflagstatus(usart_typedef* usartx, uint16_t usart_flag);
獲取狀態標誌位
void usart_clearflag(usart_typedef* usartx, uint16_t usart_flag);
清除狀態標誌位
itstatus usart_getitstatus(usart_typedef* usartx, uint16_t usart_it);
獲取中斷狀態標誌位
void usart_clearitpendingbit(usart_typedef* usartx, uint16_t usart_it);
清除中斷狀態標誌位
六、串列埠配置一般步驟
1.串列埠時鐘使能
rcc_apb2periphclockcmd(rcc_apb2periph_usart1|rcc_apb2periph_gpioa, enable);
2.串列埠復位(不是必須的)
usart_deinit();
3.gpio模式設定
對gpio口輸入輸出的設定
4.串列埠初始化設定
usart_init(usart1, &usart_initstructure);
5.開啟中斷並且初始化nvic
nvic_init();
usart_itconfig(usart1, usart_it_rxne, enable);
6.使能串列埠
usart_cmd(usart1, enable);
7.編寫中斷處理函式
void usart1_irqhandler(void)
8.串列埠資料收發
void usart_senddata(usart_typedef* usartx, uint16_t data);
uint16_t usart_receivedata(usart_typedef* usartx);
9.串列埠傳輸狀態獲取
itstatus usart_getitstatus(usart_typedef* usartx, uint16_t usart_it);
void usart_clearitpendingbit(usart_typedef* usartx, uint16_t usart_it);
七、串列埠初始化程式編寫
void uart_init(u32 bound)
STM32F103串列埠通訊
usart 通用同步非同步收發器 是乙個序列通訊裝置,可以靈活地與外部裝置進行全雙工資料交換。有別於 usart 還有乙個uart,它是在 usart 基礎上裁剪掉了同步通訊功能,只有非同步通訊。全雙工的,非同步通訊 分數波特率發生器系統 傳送和接收共用的可程式設計波特率,最高達4.5mbits s...
STM32F103XX CAN通訊筆記(一)
一 什麼是can?can是controller area network的縮寫。是一種序列通訊協議,在車載行業中有廣泛的應用,主要連線不同的控制單元和感測器。二 can的通訊協議 三 can的應用 本次對can的研究,主要基於專案需求,研究裝置間通過can通訊進行資料傳輸做一些筆記。平台 stm32...
STM32F103的CAN 通訊之通訊協議
can匯流排的通訊模式 can是一種有效支援分布式控制 3 或實時控制的序列通訊網路,可實現全分布式多機系統 可以用點對點,一點對多點以及全域性廣播幾種方式傳送和接受資料 can匯流排直接通訊距離最遠可達10km 此時傳輸速率可能達到5kb s 通訊速率最高可達1mb s 此時傳輸距離可能達到40m...