前言:咱們學習一門新語言的時候都是先從hello world入門,stm32也有本身的入門方式,那就是流水燈的配置。html
在配置以前咱們須要先配置好編譯環境,咱們須要手動修改頭文件中的一些內容。學習
一、首先咱們須要先建立一個新工程,前面我已經詳細講過怎麼建立一個新工程了,在這裏就不贅述了,不懂的朋友能夠看看個人上一篇的隨筆(stm32環境搭建)。spa
二、修改系統時鐘,把文件system_stm32f4xx.c(Startup)文件中的PLL_M宏定義改成8,PLL_N若是不是336的話改爲336,還有stm32f4xx.h文件中的HSE_VALUE的值改爲80000003d
二、J-Link正確鏈接到開發板,安裝驅動Setup_JLinkARM_V415e.execode
3)在工程選項的【Debug】標籤,選中「J-LINK/J-TRACE Cortex」,接着點擊「settings」,設置port爲「sw」,頻率爲「5MHz」;而後點擊【Flash Download】,勾選「Reset and Run」。最後點擊「肯定」按鈕退出。htm
四、經過查看原理圖,找出四盞led燈的管腳名字,我這裏分別爲LED0、LED一、FSMC_D十、FSMC_D11,這裏不一樣的板子led的管腳的名字可能不一樣。blog
五、知道led燈管腳的名字以後,再經過芯片原理圖找到對應的led燈管腳名字的I/O口,從原理圖可知,對應的I/O爲PF九、PF十、PE13和PE14,不一樣的硬件對應的I/O口不一樣,須要本身找出本身硬件上的led對應的I/O口。ip
六、找出對應芯片上的I/O口以後,咱們就能夠着手寫代碼了。若是不懂這麼寫的能夠查閱官方的標準的外設庫文件(Standard Peripherals Library),裏面有配置I/0的模板例子,可是須要作適當的修改。如圖即是標準外設庫文件配置I/O的例子開發
七、具體代碼以下led.c以下:get
#include "stm32f4xx.h" GPIO_InitTypeDef GPIO_InitStructure; void delay(void) { unsigned int i=0x500000; while(i--); } int main(void) { /* GPIOG Peripheral clock enable ,使能外設時鐘GPIOF和GPIOE,也就是讓GPIOF和GPIOE工做*/ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); /* 配置PF9引腳爲推輓輸出模式 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //第PF9和PF10號引腳 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //輸出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推輓輸出模式,增長輸出電流 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //引腳的的工做速度最高爲100MHz,最低爲2MHz,工做速度越高,功耗就越高 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不須要上拉電阻 GPIO_Init(GPIOF, &GPIO_InitStructure); //初始化端口F GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14; //第PE13和PE14號引腳 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //輸出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推輓輸出模式,增長輸出電流 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //引腳的的工做速度最高爲100MHz,最低爲2MHz,工做速度越高,功耗就越高 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不須要上拉電阻 GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化端口E while(1) { GPIO_ResetBits(GPIOF,GPIO_Pin_9);//PF9引腳爲低電平,led燈亮 delay(); GPIO_SetBits(GPIOF,GPIO_Pin_9); //PF9引腳爲高電平,led燈滅 delay(); GPIO_ResetBits(GPIOF,GPIO_Pin_10);//PF10引腳爲低電平,led燈亮 delay(); GPIO_SetBits(GPIOF,GPIO_Pin_10); //PF10引腳爲高電平,led燈滅 delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_13); //PE13引腳爲低電平,led滅亮 delay(); GPIO_SetBits(GPIOE,GPIO_Pin_13); //PE13引腳爲高電平,led燈滅 delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_14); //PE14引腳爲低電平,led滅亮 delay(); GPIO_SetBits(GPIOE,GPIO_Pin_14); //PE14引腳爲高電平,led燈滅 delay(); } }
七、編譯以後,經過仿真器下載到板子上就能夠跑流水燈了。