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();
     }
 }

 

七、编译以后,经过仿真器下载到板子上就能够跑流水灯了。

相关文章
相关标签/搜索