問題描述:利用usart串列埠程式,實現pc與stm32通訊,計算機傳送資料,stm32接受後,再傳送給pc端;
1.gpio埠配置
根據手冊:pa.9為tx(傳送),pa.10為rx(接受),因此:pa.9為復用推挽輸出,pa.10為浮空輸入,一行**搞定:
void gpio_config()
2.配置usart相關暫存器
stm32有3個usart,這裡用usart1說明
波特率:由suart1->brr控制
更正一下,上表錯誤:div_mantissa[11:0]表示整數;div_fraction[3:0]表示小數。
波特率的計算公式如下:
這裡選擇時鐘為72mhz;波特率為9600;可以得到:usartdiv=468.75;整數部分:468=0x1d4;小數部分:0.75=0xc;
所以在usart1->brr=0x1d4c;即可設定波特率9600;
然後是控制暫存器:usart->cr1;
參照手冊,現在只考慮最簡單的形式(無中斷):使能usart,使能讀,使能寫。
void usart_config()
下面在有乙個傳送函式:
void send(uchar data)
其中的延時函式可以不加;
然後就是main主函式:
int main()
}}
其中關於usart1->sr的操作是在檢測微控制器是否接受到資料; stm32 USART 串列埠通訊
簡單區分同步和非同步就是看通訊時需不需要對外提供時鐘輸出 usart 有專門控制傳送的傳送器 控制接收的接收器,還有喚醒單元 中斷控制等等。使用 usart 之前需要向 usart cr1 暫存器的 ue 位置 1 使能 usart,ue 位用來開啟供給給串列埠的時鐘。傳送或者接收資料字長可選 8 ...
stm32 USART串列埠通訊總結
usart.h ifndef usart h define usart h include stdio.h include sys.h define usart rec len 200 定義最大接收位元組數 200 define en usart1 rx 1 使能 1 禁止 0 串列埠1接收 ext...
STM32 USART通訊 筆記
新增usart通訊不良的因素 2020 5 12 stm32f1xx晶元參考手冊 stm32 reference manual rm0008 usart universal synchronous asynchronous receiver transmitter 它名為通用非同步 同步收發器 它是...