使用串列埠實現接收和傳送功能

2021-10-07 02:44:34 字數 2488 閱讀 3049

一、前言

本文以串列埠-usart1為例,初步實現接收和傳送功能,使用的是stm32f1板子,基於火哥教學做的自我小結。電腦裝置需要安裝串列埠除錯助手和usb轉串列埠ch340g的驅動。

二、正文

1.硬體設計:

將 ch340g 的 txd 引腳與 usart1 的 rx 引腳連線, ch340g 的 rxd 引腳與usart1 的 tx 引腳連線,此處已在開發板上配置好了,我們只需進行程式設計。

usart1的引腳重對映是pa9和pa10

2.軟體設計:

編寫的要點:①提前在標頭檔案中寫好需要的巨集定義 ②初始化gpio和usart1編寫於乙個函式中 ③串列埠中斷優先順序配置,包括配置接受中斷 ④使能串列埠 ⑤編寫中斷函式 ⑥編寫傳送和接收函式

—————————————————————————————————

①編寫標頭檔案「bsp_usart.h」

若想使用其它串列埠,只需要在上面改動gpio、usart的時鐘的定義,並且把 ch340g 跟 usart1 直接的連線跳帽拔掉,然後再把其他串列埠的 io 用杜邦線接到 ch340g 的收發引腳即可。

—————————————————————————————————

②編寫功能檔案「bsp_usart.c」

1.編寫配置串列埠中斷優先順序函式

2.編寫串列埠和gpio的初始化、使能函式

這裡為函式的上半部分是時鐘的開啟和gpio初始化。

這裡為函式的下半部分是初始化串列埠。資料幀字長,可選 8 位或 9 位。它設定 usart_cr1 暫存器的 m 位的值。如果沒有使能奇偶校驗控制,一般使用 8 資料位;如果使能了奇偶校驗則一般設定為 9 資料位。一般預設停止位是1。

3.編寫傳送函式

本文只展示傳送乙個位元組的,後續文章會展示傳送字串和兩個位元組的。通過使用 usart_getflagstatus 函式來獲取 usart事件標誌來實現傳送完成功能等待,它接收兩個引數,乙個是 usart,乙個是事件標誌。這裡我們迴圈檢測傳送資料暫存器為空這個標誌,當跳出 while 迴圈時說明傳送資料暫存器為空,傳送完畢。

—————————————————————————————————

③編寫中斷函式

該函式編寫於檔案「stm32f10x_it.c」,該檔案主要是用來存放中斷函式。

————————————————————————————————

④編寫主函式檔案「main.c」

將這兩個功能函式放入主函式中,其中傳送函式放入引數第乙個為串列埠,如usartx, x可以為1、2、3、4、5,第二個是要傳送的位元組,這裡只能傳送乙個位元組,並且傳送出去的都是字元,轉化為相應的ascii碼。

————————————————————————————————

最後,將**燒入到開發板中,並開啟串列埠除錯助手,將助手中的波特率、埠、停止位等配置為與**配置串列埠的相同就可以了。

這是最終的結果

————————————————————————————————

這是乙個自我小結,如果有什麼錯誤的地方,盡請斧正,謝謝**!

串列埠傳送和接收訊息

stm32f4開發板搭載乙個usb串列埠,2個rs232串列埠,部落格內容介紹usb串列埠和電腦通訊 步驟 1 串列埠和io口使能 rcc apb2periphclockcmd rcc apb2periph usart1,enable rcc ahb1periphclockcmd rcc ahb1p...

通過串列埠實現printf和scanf函式

在做裸板開發時,常常需要通過輸出或者通過串列埠輸入一些資訊。在有作業系統機器上,我們很少關心輸入和輸出的問題。因為有很多現成的庫函式供我們呼叫。在做裸板開發時,可沒有現成庫函式供我們呼叫,一切都需要我們自己實現。下面我們通過串列埠在裸板上實現乙個printf和scanf函式。printf主要用來進行...

通過串列埠實現printf和scanf函式

草根老師部落格 程姚根 在做裸板開發時,常常需要通過輸出或者通過串列埠輸入一些資訊。在有作業系統機器上,我們很少關心輸入和輸出的問題。因為有很多現成的庫函式供我們呼叫。在做裸板開發時,可沒有現成庫函式供我們呼叫,一切都需要我們自己實現。下面我們通過串列埠在裸板上實現乙個printf和scanf函式。...