stm32配置led

前言:咱們學習一門新語言的時候都是先從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();
     }
 }

 

七、編譯以後,經過仿真器下載到板子上就能夠跑流水燈了。

相關文章
相關標籤/搜索