STM32串列埠設定

2021-10-06 17:34:55 字數 2777 閱讀 9901

串列埠時鐘使能,gpio時鐘使能

串列埠復位

gpio埠模式設定

串列埠引數初始化

開啟中斷並且初始化nvic(需要開啟中斷才需要這個步驟)

使能串列埠

編寫中斷處理程式

串列埠是掛載在apb2下面的外設,所以使能函式如下:

rcc_apb2periphclockcmd(rcc_apb2perip_usart1);

void usart_init(usart_typedef* usartx, usart_inittypedef* usart_initstruct);

__注:__第乙個引數入口是指定初始化的串列埠標號;第二個引數入口是乙個usart_inittypedef型別的結構體指標,該結構體指標變數用來設定一些引數。一般實現格式如下:

usart_initstructure.usart_baudrate = bound;

//波特率設定

usart_initstructure.usart_wordlength = usart_wordlength_8b;

//字長為8為資料格式

usart_initstructure.usart_stopbits = usart_stopbits_1;

//乙個停止位

usart_initstructure.usart_parity = usart_parity_no;

//無奇偶校驗位

usart_initstructure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none;

//無硬體資料流控制

usart_initstructure.usart_mode = usart_mode_rx|usart_mode_tx;

//收發模式

usart_init

(usart1,

&usart_initstructure)

;//初始化串列埠

庫函式操作usart_dr暫存器

資料傳送函式:

void usart_senddata(usart_typedef* usartx, uint16_t data);

讀取接收到資料的函式:

uint16_t usart_receivedata(usart_typedef* usartx);

串列埠狀態可以通過狀態暫存器usart_sr讀取

讀取串列埠狀態的函式是:

flagstatus usart_getflagstatus(usart_typedef* usartx, uint16_t usart_flag);

注:第二個入口引數表示要檢視串列埠的哪種狀態

判斷讀暫存器是否非空(rxne):

usart_getflagstatus(usart1, usart_flag_rxne);

判斷傳送是否完成(tc):

usart_getflagstatus(usart1, usart_flag_tc);

標識的巨集定義:

#define usart_it_pe ((uint16_t)0x0028)

#define usart_it_txe ((uint16_t)0x0727)

#define usart_it_tc ((uint16_t)0x0626)

#define usart_it_rxne ((uint16_t)0x0525)

#define usart_it_idle ((uint16_t)0x0424)

#define usart_it_lbd ((uint16_t)0x0846)

#define usart_it_cts ((uint16_t)0x096a)

#define usart_it_err ((uint16_t)0x0060)

#define usart_it_ore ((uint16_t)0x0360)

#define usart_it_ne ((uint16_t)0x0260)

#define usart_it_fe ((uint16_t)0x0160)

usart_cmd(usart1, enable);

使能串列埠中斷的函式是:

void usart_itconfig(usart_typedef* usartx, uint16_t usart_it, functionalstate newstate)

注:該函式第二個引數入口是表示使能串列埠的型別,即使能哪種中斷。例如在接收資料的時候開啟中斷的方法是:

usart_itconfig(usart1, usart_it_rxne, enable);//開啟中斷,接收到資料中斷

在傳送資料結束要產生中斷的方法是:

usart_itconfig(usart1, usart_it_tc, enable);

判斷中斷的型別使用的函式是:

itstatus usart_getitstatus(usart_typedef* usartx, uint16_t usart_it)

判斷到底是否是串列埠傳送完成中斷方法是:

usart_getitstatus(usart1, usart_it_tc)

返回值是set,說明串列埠傳送完成中斷發生。

stm32串列埠通訊

通訊方式 1 同步通訊 帶時鐘同步訊號傳輸 spi,iic等 2 非同步通訊 不帶時鐘用途訊號 usrt,單匯流排 stm32串列埠引腳表 串口號 rxd txd 1 pa10 pa9 2 pa3pa2 3 pb11 pb10 4 pc11 pc10 5 pd2pc12 通訊過程 接收過程 由rx入...

STM32串列埠通訊

1.常用的串列埠相關暫存器 1 usart sr狀態暫存器,對應的庫函式 flagstatus usart getflagstatus usart typedef usartx,uint16 t usart flag 2 usart dr資料暫存器,對應的庫函式 void usart senddat...

STM32串列埠通訊

串列埠作為mcu最重要的外部介面,同時也是軟體開發重要的除錯手段,其重要性不言而喻。在這裡我們主要從庫函式的角度來講述如何設定串列埠,來達到最基本的通訊功能。串列埠的設定一般可以歸結為以下幾個步驟 1 串列埠時鐘使能,gpio時鐘使能。2 設定引腳復用器對映,呼叫gpio pinafconfig函式...