usart串列埠使用

2021-07-30 10:23:40 字數 1606 閱讀 9564

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...