編寫程式的步驟:
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...