差不多4年前買了STM32F407Discovery這塊開發板,也用它作為我的畢業設計的一部分,今晚整理一下東西,覺得這么不錯的東西應該再次利用起來,做個智能家居系統的一部分什么的也不錯,於是,記錄一下使用流程,以后不用再看官方文檔了,直接看博客流程就行了。
這塊板子是基於STM32F407VGT6芯片的,板載ST-LINK/V2調試器,調試下載程序很方便,而且板載數字加速傳感器、數字轉換麥克風處理芯片、D類功放驅動芯片、支持OTG等,功能算是很不錯了,下面看看它的“艷照”:
引腳和外設插口都有點銹跡了,不過,還是能跑的~
下面是這塊芯片的基本介紹:
1. 經PLL倍頻后最高頻率有168MHz的32位CPU,帶浮點運算單元FPU,LQFP100封裝,192KB的RAM空間,1MB的Flash存儲空間,單周期DSP硬件指令,1.7V~3.6V的CPU供電范圍
2. 上圖左邊那塊就是ST-LINK/V2調試器了,使用SWD調試模式
3. 3軸動作傳感器芯片:LIS302DL
4. 音頻處理傳感器:MP45DT02
5. 集成了D類功放驅動的DAC音頻芯片:CS43L22
6. 17個TIM定時器,3路ADC,15組GPIO口,帶攝像頭接口等外設
下面來開始搭建開發環境,開始第一個程序編譯通過先。
1. 使用IAR for ARM6.40.4,安裝過程很容易,這里就不做介紹了:
2. 新建代碼工程
2.1 新建工作空間
2.2 在該工作空間新建一個工程
選擇創建一個空的工程:
點擊“OK”后選擇工程保存路徑即可。
2.3 配置工程,在工程右鍵,選擇“Option”:
2.3.1 在這里可以設置芯片內核和芯片類型,輸出路徑、調試器類型等,芯片這里選擇Cortex-M4:
2.3.2 在C/C++ compiler配置頭文件包含路徑:
為了方便包含ST的外設庫,后面還需要增加一個宏“USE_STDPERIPH_DRIVER”和文件"stm32f4xx_conf.h"。
2.3.3 配置鏈接文件,該文件主要描述了ARM的RAM和FLASH的段地址分配:
2.3.4 選擇調試器:
2.3.5 配置使用Flash Loader:
2.3.6 配置ST-LINK使用的接口為SWD:
2.3.7 工程配置完成。
3. 配置完成后,到ST官網下載庫函數開發包,並把啟動文件(注意是復制IAR環境的),相關頭文件和中斷配置文件復制到目錄,配置好目錄結構后如下圖,目錄結構是對應的:
4. 編寫main.c,測試編譯運行環境:
4.1 復制ST公司提供的庫函數開發包,目錄如下(記得要在Options選擇配置頭文件包含路徑):
4.2 新建外設模塊目錄結構(記得要在Options選擇配置頭文件包含路徑),如下:
4.3 編寫LED驅動:
led.h文件內容如下:
#ifndef __LED_H__ #define __LED_H__ #define LED_BLUE GPIO_PIN_15 #define LED_ORANGE GPIO_PIN_13 #define LED_RED GPIO_PIN_14 #define LED_YELLOW GPIO_PIN_12 void LED_Config(void); #endif
led.c文件內容如下:
/** * File: led.c * @Description: LED Driver * @Author: LinJK * @Date: 2016/11/20 **/ #include <stm32f4xx.h> #include "led.h" void LED_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Pin = LED_BLUE | LED_ORANGE | LED_RED | LED_YELLOW; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); }
5. 編寫Main函數:
這個業余項目是打算用來做我的智能家居系統的網絡數據轉發處理部分的,因此,雖然目前只是搭建基礎測試環境,這里也新增一些目錄結構,如硬件層hardware,后面會不斷擴充功能,有時間也會把擴展的功能寫一下:
#include "includes.h" void main() { //hard ware init bsp_init(); while (1) { GPIO_SetBits(GPIOD, LED_RED); } }
bsp_init()主要是初始化芯片的外設,如調用led.c的Led_config()函數等,這里就點亮一個led燈先。
6. 下載驗證:
下載工具使用的是購買開發板時提供的STLink工具,如下:
配置工程,生成下載文件:
stlink打開下載文件:
連接開發板到電腦,然后在stlink點擊連接,下載運行文件后,按一下開發板的復位鍵即可以看到,燈已經點亮。
到這里,開發環境已經配置完成了,后面基於它繼續開發功能~~~