STM32 串列埠USART1 的使用

2021-10-13 19:17:53 字數 1934 閱讀 9321

編寫程式的步驟:

1.初始化串列埠要用的gpio

2.初始化結構體usart_inittypedef

3.中斷配置 nvic_inittypedef

4.使能串列埠中斷

5.編寫發生和接收函式

6.中斷函式

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)

以下是參考一位大哥的 關於 usart_getflagstatus 函式的博文

```c

uint16_t data;

void

usart1_irqhandler

(void

)}

#include

"usart.h"

/*** @brief åäöãç¶ì×ïòá¿öð¶ï¿øöææ÷nvic

* @param îþ

* @retval îþ

*/static

void

nvic_configuration

(void

)//串列埠的配置

void

usart_config

(void

)/***************** 傳送乙個位元組 **********************/

void

usart_sendbyte

( usart_typedef * pusartx, uint8_t ch)

/****************** 傳送陣列 ************************/

void

usart_sendarray1

( usart_typedef * pusartx, uint8_t *array, uint16_t num)

/* µè´ý·¢ëííê³é */

while

(usart_getflagstatus

(pusartx,usart_flag_tc)

==reset);}

/***********傳送字串**********************/

void

usart_sendstring

( usart_typedef * pusartx,

char

*str)

while(*

(str + k)

!='\0');

/* µè´ý·¢ëííê³é */

while

(usart_getflagstatus

(pusartx,usart_flag_tc)

==reset)

}/***************** ·¢ëíò»¸ö16î»êý **********************/

void

usart_sendhalfword

( usart_typedef * pusartx, uint16_t ch)

///öø¶¨ïòc¿âº¯êýprintfµ½´®¿ú£¬öø¶¨ïòºó¿éê¹óãprintfº¯êý

intfputc

(int ch, file *f)

///öø¶¨ïòc¿âº¯êýscanfµ½´®¿ú£¬öøð´ïòºó¿éê¹óãscanf¡¢getcharµèº¯êý

intfgetc

(file *f)

stm32串列埠通訊(usart1)

參考 gpio inittypedef gpio initstructure 24 usart inittypedef usart initstructure 25 nvic inittypedef nvic initstructure 初始化gpio 30 gpio initstructure.g...

STM32 串列埠USART 通訊

通過stm32向串列埠傳送資料顯示在串列埠終端上 我用的是串列埠除錯工具 並且在除錯工具上傳送認識字元,然後在終端上顯示出來,就是這樣了,分別驗證了usart1和usart2,雖說只是乙個1和2,但是初始化時鐘的時候,並不一樣的,我們先來看卡下圖中 各個模組,io口時鐘分布 在系統初始化各個模組前,...

stm32f103c8串列埠USART1傳送多一位元組

用uart寫了一段bootloader 遇到了乙個很奇怪的現象。如下 簡單介紹一下就是先統一配置mcu的io埠,然後配置串列埠引數,然後迴圈傳送 0 和 r 16進製制是0x30 0x0d int main void void io init void void uart init uint32 t...