STM32人門篇 跑馬燈 蜂鳴器和按鍵

2021-08-14 21:17:40 字數 1936 閱讀 2806

軟體部分

重點:寫乙個跑馬燈程式的步驟:

1.使能io時鐘,呼叫函式rcc_ahb1periphclockcmd();

2.初始化io口模式。呼叫函式gpio_init();

3.操作io口,輸出高低電平。

gpio_setbits(); 設定1

gpio_resetbits(); 設定0

寫乙個蜂鳴器的步驟與跑馬燈類似,所以這個大致的步驟十分重要。

這兩個實驗中用到的韌體庫介紹:

其中 stm32f4xx_rcc.h 標頭檔案在每個實驗中都要引入,因為系統時鐘配置函式(abh1)以及相關的外設時 鐘使能函式都在這個其原始檔 stm32f4xx_rcc.c 中。stm32f4xx_usart.h 和 misc.h 標頭檔案和對應的 原始檔在我們 system 資料夾中都需要使用到,所以每個實驗都會引用。stm32f4xx_syscfg.h 和對應的原始檔雖然本實驗也沒有用到,但是後面很多實驗都要使用到,所以我們不妨也新增進來。

硬體部分(注意中的注釋)

跑馬燈部分:

如所示,由於led在一般情況下是處於高電平狀態,所以判斷為上拉輸出。

還有一點跑馬燈比較簡單,注意一下led是輸出就好,在編寫程式的時候是寫pfout(9)等等

蜂鳴器部分:

如圖所示,注意蜂鳴器硬體結構中r16的作用。

下拉輸出(推挽輸出):因為beep正常情況下是低電平。

還有要注意的是,蜂鳴器同樣是輸出pfout(8);

按鍵:

1.程式設計:步驟與跑馬燈和蜂鳴器的類似;注意一點要區分的是按鍵時輸入外設,所以程式設計勿把pein寫成習慣的想跑馬燈和蜂鳴器一樣的out了。

這裡引用一段很重要的**———按鍵支援連續按和不連續按的合成寫法:

u8 key_scan(u8 mode)

else if(key0==1&&key1==1&&key2==1&&wk_up==0)key_up=1;

return 0;//無按鍵按下

}

//u16 unsigned short 短整型變數;

//u32 unsigned int 整型變數;  //u8 unsigned char 字元型變數;

static函式:申明的區域性變數,存在靜態的儲存區,其申明的區域性變數,具有記憶功能。

2.硬體:

因為在初始化函式部分判斷上下拉輸入很重要,這裡引入以下判斷上拉輸入和下拉輸入的方法:

判斷方法多樣,但是我感覺圖中第三種方法也很不錯的。此處,可以拿這些方法去驗證以下前篇博文中led和蜂鳴器的輸出方式。以及以後在遇到新硬體的時候對初始化函式的編寫都可以用這些方法判斷。

3.error:

我在寫跑馬燈、蜂鳴器和現在的按鍵來看,遇到最難解決的error就是:

..\obj\

template.axf:error: l6200e: symbol intx_enable multiply defined (by key.o and sys.o),

在遇到這個問題時候 看大.o檔案可能大部分我們都是比較懵,下面講一下我的幾個基本操作有80~90%的可能性可以解決:

1.檢視是以下是不是以及把頭檔案全部引入到原始檔中;

2.在manage project items...裡面加入相應檔案;

3.刪去重複定義的部分(這個操作最有效!)

STM32學習篇 跑馬燈

一 工作目錄 user 組user中一般有main.c stm32f10x it.c system stm32f10x.c,主要用來編寫main函式,存放的主要是使用者 stm32f10x it.c中主要用來定義部分中斷服務函式,system stm32f10x.c主要定義systeminit等時鐘...

STM32跑馬燈實驗

本次跑馬燈實驗主要用到pb6 pb9幾個埠 include led.h void led init void 自定義led燈初始化函式 標頭檔案中主要是一些巨集定義和位帶操作 ifndef led h define led h include stm32f10x.h define led1 on g...

stm32跑馬燈實驗

本文記錄stm32mini開發板實驗 普通跑馬燈 回歸gpio基礎知識 每組io口含有下面7個暫存器,7個暫存器一共可以控制一組gpio的16個io口。gpiox crl 埠配置低暫存器 gpiox crh 埠配置高暫存器 gpiox idr 埠輸入暫存器 gpiox odr 埠輸出暫存器 gpio...