USART 串列埠通訊

2021-10-02 04:08:57 字數 2494 閱讀 6434

現在我使用串列埠一般都是列印除錯資訊或者藍芽通訊 ,只會用到tx和rx,不需要用到時鐘訊號線,所以是非同步半雙工

如果想要操作暫存器,那就要看功能框圖了

1.tx傳送資料引腳、rx接受資料引腳,所以要把引腳配置為串列埠復用引腳(每個串列埠對應的引腳都不一樣,這樣檢視手冊)

2.傳送資料暫存器和接收資料暫存器,還有傳送移位暫存器和接受移位暫存器

傳送資料時,傳送暫存器將資料一位位的移向移位暫存器傳送出去

接收資料時,將資料接收到移位暫存器然後再移向接收暫存器

3.控制暫存器cr1:要使能usart、設定資料位(字長)、是否開啟校驗位、奇校驗還是偶校驗、作為傳送器還是作為接收器(使能)

4.波特率設定,直接操作暫存器的時候要自己算出數值,然後寫入暫存器,如果用標準庫就不需要計算了,已經算好了。公式如下:

over8:過取樣模式,根據選擇的模式去更改權位(計算小數的時候)

使用標準庫的話上面的了解一下就好了

**如下:

#ifndef __usart__h

#define __usart__h

#include

"main.h"

#define usart_tx_clock rcc_ahb1periph_gpioa

#define usart_rx_clock rcc_ahb1periph_gpioa

#define usart_tx_port gpioa

#define usart_rx_port gpioa

#define usart_tx_pinsource gpio_pinsource9

#define usart_rx_pinsource gpio_pinsource10

#define usart_af gpio_af_usart1

#define usart_tx_pin gpio_pin_9

#define usart_rx_pin gpio_pin_10

#define usart_clock_cmd() rcc_apb2periphclockcmd(usart_clock,enable)

#define usart_clock rcc_apb2periph_usart1

#define usart usart1

#define baudrate 115200

void

usart_gpio_config

(void);

void

usart_config

(void);

void

usatr_sendbyte

(uint16_t data)

;void

usart_sendstring

(char

*string)

;int

fputc

(int ch, file *f)

;#endif

#include

"usart.h"

void

usart_gpio_config

(void

)void

usart_config

(void

)void

usatr_sendbyte

(uint16_t data)

void

usart_sendstring

(char

*string)

while(*

(string+i)

!='\0');

while

(usart_getflagstatus

(usart,usart_flag_tc)

==reset);}

///重定向c庫函式printf到串列埠,重定向後可使用printf函式

intfputc

(int data, file *f)

intfgetc

(file *f)

串列埠通訊(中) USART

usart即為通用同步非同步收發器,用於序列通訊,例如其可以用於列印程式輸出資訊,以便於除錯程式。圖10 1 這裡簡單介紹下usart框圖。tx為傳送資料的輸出引腳,rx為接收資料的輸入引腳,sclk為傳送器時鐘輸出引腳 同步模式下會用到 其中sclk 於apb1匯流排時鐘 36mhz 和apb2匯...

STM32USART串列埠通訊

問題描述 利用usart串列埠程式,實現pc與stm32通訊,計算機傳送資料,stm32接受後,再傳送給pc端 1.gpio埠配置 根據手冊 pa.9為tx 傳送 pa.10為rx 接受 因此 pa.9為復用推挽輸出,pa.10為浮空輸入,一行 搞定 void gpio config 2.配置usa...

stm32 USART 串列埠通訊

簡單區分同步和非同步就是看通訊時需不需要對外提供時鐘輸出 usart 有專門控制傳送的傳送器 控制接收的接收器,還有喚醒單元 中斷控制等等。使用 usart 之前需要向 usart cr1 暫存器的 ue 位置 1 使能 usart,ue 位用來開啟供給給串列埠的時鐘。傳送或者接收資料字長可選 8 ...