【STM32】以實現跑馬燈為例新建工程
我在網上買了一款STM32學習的開發板,具體是哪個牌子的就不明說了,在這篇文章中,我們將根據這款開發板來建立一個工程來執行跑馬燈。
我們將使用庫函式來進行程式設計。
第一步:新建一個資料夾,在資料夾中新建如圖6個資料夾,這6個資料夾分別是CORE資料夾包含系統的啟動檔案,HADWAVE資料夾對應我們所需要的硬體,這裡只用到LED燈,OBJ資料夾對應我們編譯完成產生的HEX檔案和中間檔案,STM32F10x_FWLib資料夾是這個開發板中自帶的STM32庫函式,SYSTEM資料夾是也是開發板中自帶的關於延時,串列埠基礎通訊,和系統初始化檔案,USER資料夾是我們要程式設計的檔案所存放的目錄。稍後我會將這個工程打包連結放在文末。
第二步:開啟Keil V5,大家不要安裝到C51版本的了,可以去百度搜MDK等關鍵字,有許多下載地址和破解教程,這裡放一個Keil下載官網的地址:點選開啟連結。
1.選擇選單欄“project”--“New Uvision Project”,在搜尋欄中輸入STM32F103ZE,我購買的開發板晶片是STM32F103ZE。
2.接下來主要用圖片來說明,選擇工具欄中這個三個方塊的圖示,
3.在彈出的介面中的"Groups"中新增我們第一步中的五個檔案(OBJ除外),接著分別新增對應的C檔案和S檔案。
4.新增完成後,左側的"Project"如下所示(有些C檔案需要自己建立,比如USER中的main.c和HARDWAVE中的led.c)。
5.接著,我們再點選在第二步中第2步三個方塊圖示左邊的圖示,會出現如下配置框,按照以下圖片配置。
注意:在第一個框下面的Define處中STM32F10X_HD是根據晶片不同來選擇,此處STM32F103ZET對應的是STM32F10X_HD,另外的晶片大夥可以百度查詢。
到這一步,我們的一個基本的工程就建立好了。
第三步:接下來是led.h、led.c、main.c中程式碼的編寫。
1.首先是led.h的程式碼編寫,此處涉及到LED硬體引腳的連線,在這個板子上,LED0和GPIOB5引腳相連,LED1和GPIOE5引腳相連,再根據原理圖得知,此處是引腳輸出低電平亮燈,具體的開發板得根據原理圖寫程式碼,大家一定要注意這一點,不然你程式碼寫的再對,也可能半天都看不到正確的效果。
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#define LED0 PBout(5)
#define LED1 PEout(5)
void LED_Init(void);
2.接著是led.c程式碼的編寫。
#include "led.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);//使能GPIOB和GPIOE時鐘
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;//開漏輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_5); //預設輸出高電平,熄滅LED
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
}
3.最後是main.c程式碼的編寫。
#include "led.h"
#include "delay.h"
#include "sys.h"
int main(void)
{
delay_init();//延時初始化
LED_Init();//LED初始化
while(1)
{
LED0=!LED0;
delay_ms(500);//延時0.5s
LED1=~LED1;
}
}
4.新增完以上程式碼,我們就可以編譯生成HEX檔案了,在生成之前,我們還需要配置生成的目錄(在OBJ檔案中),配置如圖所示:
5.生成HEX檔案之後,我們可以通過下載器或下載軟體下載程式到硬體中,看到的效果應該是每個半秒兩個LED燈交替亮滅,就像跑馬燈一樣,最後附上該工程的附件:工程下載地址。
本文有不足或錯誤處請諒解或指出,若有看不懂的地方請在下方留言或加我QQ906102243。