串列埠時鐘使能,gpio時鐘使能
串列埠復位
gpio埠模式設定
串列埠引數初始化
開啟中斷並且初始化nvic(需要開啟中斷才需要這個步驟)
使能串列埠
編寫中斷處理程式
串列埠是掛載在apb2下面的外設,所以使能函式如下:
rcc_apb2periphclockcmd(rcc_apb2perip_usart1);
void usart_init(usart_typedef* usartx, usart_inittypedef* usart_initstruct);
__注:__第乙個引數入口是指定初始化的串列埠標號;第二個引數入口是乙個usart_inittypedef型別的結構體指標,該結構體指標變數用來設定一些引數。一般實現格式如下:
庫函式操作usart_dr暫存器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)
;//初始化串列埠
資料傳送函式:
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函式...