stm32串列埠使用:
1、printf函式呼叫
iar的option設定中將printf庫開啟再編寫printf重定向到usartn的函式
int fputc(int ch, file *f)
return ch;
}使用usb轉ttl直接連線mcu與計算機即可。
除ttl外,rs232與rs485都可作為串列埠線使用。
使用區別在於232餘485電平不同
接線不同rs232三線制 tx、rx、gnd 全雙工通訊,rs485兩線制 ,485+、485- 半雙工通訊(接法不同也可全雙工通訊,資料所說,沒除錯過)
通訊協議,rs232點對點通訊,rs485匯流排形式通訊。
傳輸距離不同,rs485可傳輸幾十公尺到上千公尺
,rs232有效傳輸距離為15公尺。
使用接線與晶元不同,mcu使用232晶元,即使用232串列埠線,使用485晶元即使用485串列埠線。
2、串列埠收發
串列埠接收:
關鍵點:初始化中的1、波特率 2、使能接收中斷 usart_itconfig(usart1, usart_it_rxne, enable); 其餘初始化按部就班
static void bsp_usartinit(void)
串列埠讀取函式,該函式相容乙個mcu多個串列埠根據定義的串口號來呼叫同個函式,使用讀寫wp rp 位置指標訪問讀取資料
中斷函式中接收資料
串列埠傳送:
使用串列埠傳送中斷,中斷分為兩種一種為usart_it_tc第二種為usart_it_txe
使用過程中碰到乙個問題是,當串列埠初始化完之後,使能了usart_it_tc中斷,並且開啟了總中斷後程式一直進入中斷,跳不出來。
後查詢原因解釋說,tc中斷全稱為transmission complete,傳送完中斷,在初始化使能中斷後會自動傳送乙個空閒幀。我試過在使能中斷之前或者之後或者在中斷函式裡都
單獨進行清tc標誌位,但退不出中斷。後改使用txe中斷
txe中斷即為tx dr empty 傳送暫存器為空就產生中斷,所以使用過程中的順序為,
初始化時不使能中斷,在呼叫傳送函式後,或使用暫存器操作時當該暫存器不為空時使能 該中斷usart_it_txe,然後在串列埠中斷裡當接收完所有資料後失能該中斷,以保證不會重複進入中斷。
串列埠寫入資料函式:該函式相容乙個mcu多個串列埠使用,使用定義串口號來使用,並使用讀寫rp與wp位置指標
uint16 sys_comwrite(uint8 comnum, uint8 *pdata, uint16 slen)
if(slen==0)
bsp_setdealyms(sys_com_send_delay_time);
while(1)
/* 等待緩衝區的資料全部傳送完成 */
if(!bsp_getdealyms())
}switch(comnum)
bsp_setdealyms(0);
return slen;
}接收中斷內容}
以上內容為個人使用過程的方法筆記及個人認為的注意點、知識點,內容不全面,如之後使用有所補充隨時更新。如您發現有所問題,希望給我意見。
USART 串列埠通訊
現在我使用串列埠一般都是列印除錯資訊或者藍芽通訊 只會用到tx和rx,不需要用到時鐘訊號線,所以是非同步半雙工 如果想要操作暫存器,那就要看功能框圖了 1.tx傳送資料引腳 rx接受資料引腳,所以要把引腳配置為串列埠復用引腳 每個串列埠對應的引腳都不一樣,這樣檢視手冊 2.傳送資料暫存器和接收資料暫...
串列埠通訊(中) USART
usart即為通用同步非同步收發器,用於序列通訊,例如其可以用於列印程式輸出資訊,以便於除錯程式。圖10 1 這裡簡單介紹下usart框圖。tx為傳送資料的輸出引腳,rx為接收資料的輸入引腳,sclk為傳送器時鐘輸出引腳 同步模式下會用到 其中sclk 於apb1匯流排時鐘 36mhz 和apb2匯...
STM32USART串列埠通訊
問題描述 利用usart串列埠程式,實現pc與stm32通訊,計算機傳送資料,stm32接受後,再傳送給pc端 1.gpio埠配置 根據手冊 pa.9為tx 傳送 pa.10為rx 接受 因此 pa.9為復用推挽輸出,pa.10為浮空輸入,一行 搞定 void gpio config 2.配置usa...