STM32串列埠的設定和庫函式的介紹

2022-06-18 17:12:09 字數 4150 閱讀 3268

串列埠設定的一般步驟可以總結為如下幾個:

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

2) 串列埠復位

3)gpio 埠模式設定

4) 串列埠引數初始化 

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

6) 使能串列埠 使能串列埠

7) 編寫中斷處理函式

下面,我們就簡單介紹這幾個與串列埠基本配置直接相關的韌體庫函式。這些函式和 定義主要分布在 stm32f10x_usart.h ,stm32f10x_usart.c 檔案中。 

1.串列埠時鐘使能。串列埠是掛載在apb2上的,所以使能函式為:

rcc_apb2periphclockcmd(rcc_apb2periph_usart1)

2.串列埠復位。當外設出現異常的時候可以通過復位置 ,實現該外設的復位,然後重新配置這個外設讓其重新工作的目。一般在系統剛開始配置時候,都會先執行復位該這個外 設達到讓其重新工作的目。復位是在函式 usart_deinit()完成:

void usart_deinit(usart_typedef* usartx)

3串列埠引數初始化

void usart_init()函式:

voidusart_init(usart_typedef*usartx,usart_inittypedef*usart_initstruct);

作用:

根據指定引數初始化相應串列埠(波特率,字長,停止位,奇偶校驗,硬體流控制等)

主要是用來初始化暫存器brr以及cr1,cr2,cr3控制暫存器

使用範例:

usart_inittypedefusart_initstructure;

usart_initstructure.usart_baudrate= 9600;//波特率設定;

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);//初始化串列埠

4.void usart_cmd()函式:

原型:

voidusart_cmd(usart_typedef*usartx,functionalstatenewstate);

作用:

使能相應的串列埠,用來設定暫存器cr1的串列埠使能位

使用範例:

usart_cmd(usart1,enable);                    //使能串列埠1

5.void usart_itconfig()函式:

原型:     voidusart_itconfig(usart_typedef*usartx,

uint16_t    usart_it, functionalstatenewstate);

作用:開啟串列埠相應中斷,設定串列埠控制暫存器

使用範例:

usart_itconfig(usart1,usart_it_rxne, enable); //開啟讀資料暫存器非空中斷

6.usart_senddata()函式:

原型:

voidusart_senddata(usart_typedef* usartx, uint16_t data);

作用:

傳送資料到串列埠。

使用範例:

usart_senddata(usart1,0x12);

7.uint16_tusart_receivedata()函式:

原型: uint16_t usart_receivedata(usart_typedef*usartx)

獲取串列埠最新接受的值。

使用範例:

usart_receivedata(usart1);

flagstatususart_getflagstatus(usart_typedef*usartx,uint16_t usart_flag);

void usart_clearflag(usart_typedef*usartx,uint16_t usart_flag);

itstatususart_getitstatus(usart_typedef*usartx,uint16_t usart_it);

void usart_clearitpendingbit(usart_typedef*usartx,uint16_t usart_it);

以下是乙個完整的初始化串列埠函式和乙個中斷服務函式:

//初始化io 串列埠1 

//bound:波特率

void uart_init(u32 bound)

void usart1_irqhandler(void)                //串列埠1中斷服務程式

else //還沒收到0x0d

}}  

}

#ifdef os_ticks_per_sec//如果時鐘節拍數定義了,說明要使用ucosii了.

osintexit();  

#endif

}

STM32串列埠的設定和庫函式的介紹

串列埠設定的一般步驟可以總結為如下幾個 1 串列埠時鐘使能,gpio時鐘使能 2 串列埠復位 3 gpio 埠模式設定 4 串列埠引數初始化 5 開啟中斷並且初始化 nvic 如果需要開啟中斷才這個步驟 如果需要開啟中斷才這個步驟 6 使能串列埠 使能串列埠 7 編寫中斷處理函式 下面,我們就簡單介...

STM32串列埠設定

串列埠時鐘使能,gpio時鐘使能 串列埠復位 gpio埠模式設定 串列埠引數初始化 開啟中斷並且初始化nvic 需要開啟中斷才需要這個步驟 使能串列埠 編寫中斷處理程式 串列埠是掛載在apb2下面的外設,所以使能函式如下 rcc apb2periphclockcmd rcc apb2perip us...

stm32串列埠通訊

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