利用stm32串列埠中斷進行數碼管顯示

2021-07-31 14:46:40 字數 1930 閱讀 4015

為了使得本次實驗的效果更加明顯,我將利用串列埠中斷,在中斷服務程式中讀取串列埠輸入的數值,然後在數碼管上顯示出該數值。

一、數碼管配置

在進行本次的實驗之前,由於需要使用數碼管進行實驗結果的顯示,我們首先需要數碼管的真值表,我這邊使用的是普通的共陽極數碼管,所以真值表如下:

0xc0

0xf9

0xa4

0xb0

0x99

0x92

0x82

0xf8ab

cdef

0x80

0x90

0x88

0x83

0xc6

0xa1

0x86

0x8e

以上準備工作完成以後,可以正式進入本次實驗了。很明顯,我們用到了數碼管和串列埠,因此我們至少需要數碼管配置函式以及串列埠配置函式這兩個配置函式。對於數碼管的配置函式,由於我使用的普中pz6806l型的開發板,通過查詢原理圖發現數碼管的各個段對應於led1~led8,然後接到gpioc的0~7管腳上,因此配置好gpioc就可以了,這個簡單,直接給出**如下:

void segmentdisplayinit()

二、串列埠配置

下面是本次實驗的重點,也就是rs232串列埠中斷配置函式usartinit(),在《stm32中文參考手冊》中對usart的描述如下:

通用同步非同步收發器(usart)提供了一種靈活的方法與使用工業標準nrz非同步序列資料格式的外部裝置之間進行全雙工資料交換。usart利用分數波特率發生器提供寬範圍的波特率

選擇。它支援同步單向通訊和半雙工單線通訊,也支援lin(區域性互連網),智慧卡協議和irda(紅外資料組織)sir endec規範,以及數據機(cts/rts)操作。它還允許多處理器

通訊。串列埠通訊一般有三種形式,即查詢方式、中斷方式和dma方式。查詢方式(也有人稱為輪詢法)效率不高,在需要查詢時cpu的占用很高,在程式上的體現就是用迴圈不斷

查詢標誌位狀態,在查詢時cpu不做其他事,因此效率是比較低的。中斷方式的話,只有在傳送中斷、接收中斷、傳輸完成中斷等的中斷時會進入串列埠中斷服務程式,這樣cpu就

在串列埠中斷初始化配置中,首先應開啟串列埠時鐘和pa口的時鐘(afio的時鐘可以不用開啟),開啟pa口時鐘的原因是,在本實驗中,我使用的板子在原理圖上顯示,rs232串列埠的

rx和tx分別與pa10和pa9相連。接著就該根據tx、rx配置pa9和pa10這兩個gpio了,這裡要注意的是這裡模式最好要設定成浮空輸入和復用推挽輸出,至少按下錶設定:

接下來就要呼叫usart_init()程式對串列埠進行引數配置,該函式的入口引數是乙個結構體指標usart_inittypedef*,查詢stm32f10x_usart.h可得,該結構體定義如下:

typedef struct

usart_inittypedef;

接著開啟串列埠,使用usart_cmd(usart1,enable);即可。

然後開啟串列埠中斷,這裡我開啟接收中斷,函式如下:

usart_itconfig(usart1,usart_it_rxne, enable);

綜合以上幾點usart總的配置函式給出如下:

void usartinit()

三、串列埠中斷函式

在此函式中只要檢測輸入的資料,然後將對應的數碼管真值表的值寫到gpioc上即可。這裡直接給出程式:

void usart1_irqhandler(void)

;usart_clearflag(usart1 , usart_flag_tc);

if(usart_getitstatus(usart1 , usart_it_rxne) != bit_reset)

}主函式很簡單,這裡就不給出了。

STM32串列埠中斷方式接收

經過除錯在stm32f101cbt6中實現通訊。注意還要配乙個ttl轉usb介面,才能進行通訊。實現字串回發 include stm32f10x it.h include stm32f10x conf.h void rcc configuration void 時鐘配置 void usart con...

STM32 串列埠中斷裡面使用printf 出現錯誤

串列埠收發中斷處理函式 void uart trxover interrupt void if usart getitstatus usart1,usart it rxne set 就是在這個裡面,包含了printf就無法全部回傳傳送的資訊 但是將printf 注釋掉以後,傳送什麼資訊過去,就會回傳...

STM32串列埠中斷接收方式詳細比較

串列埠除錯,以前也調過,只是沒這麼深入的琢磨過,最近又在弄,感覺串列埠很基本,也很有學問,要是出現bug可能導致系統奔潰。現在貼出來,歡迎拍磚指正!本例程通過pc機的串列埠除錯助手將資料傳送至stm32,stm32通過sp3232晶元採用中斷接收方式完成,然後接收資料後將所接收的資料又傳送至pc機,...