• stm32配置led


    前言:我们学习一门新语言的时候都是先从hello world入门,stm32也有自己的入门方式,那就是流水灯的配置。

     在配置之前我们需要先配置好编译环境,我们需要手动修改头文件中的一些内容。

    1、首先我们需要先创建一个新工程,前面我已经详细讲过怎么创建一个新工程了,在这里就不赘述了,不懂的朋友可以看看我的上一篇的随笔(stm32环境搭建)。

    2、修改系统时钟,把文件system_stm32f4xx.c(Startup)文件中的PLL_M宏定义改为8,PLL_N如果不是336的话改成336,还有stm32f4xx.h文件中的HSE_VALUE的值改成8000000

    2、J-Link正确连接到开发板,安装驱动Setup_JLinkARM_V415e.exe

    3)在工程选项的【Debug】标签,选中“J-LINK/J-TRACE Cortex”,接着点击“settings”,设置port为“sw”,频率为“5MHz”;然后点击【Flash Download】,勾选“Reset and Run”。最后点击“确定”按钮退出。

    4、通过查看原理图,找出四盏led灯的管脚名字,我这里分别为LED0、LED1、FSMC_D10、FSMC_D11,这里不同的板子led的管脚的名字可能不同。

    5、知道led灯管脚的名字之后,再通过芯片原理图找到对应的led灯管脚名字的I/O口,从原理图可知,对应的I/O为PF9、PF10、PE13和PE14,不同的硬件对应的I/O口不同,需要自己找出自己硬件上的led对应的I/O口。

    6、找出对应芯片上的I/O口之后,我们就可以着手写代码了。如果不懂这么写的可以查阅官方的标准的外设库文件(Standard Peripherals Library),里面有配置I/0的模板例子,但是需要做适当的修改。如图便是标准外设库文件配置I/O的例子

    7、具体代码如下led.c如下:

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

    7、编译之后,通过仿真器下载到板子上就可以跑流水灯了。

  • 相关阅读:
    Flink RichSourceFunction应用,读关系型数据(mysql)数据写入关系型数据库(mysql)
    基于Filebeat+Kafka+Flink仿天猫双11实时交易额
    Flink消费Kafka数据并把实时计算的结果导入到Redis
    Flink+kafka实现Wordcount实时计算
    Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建完整版
    spring boot+mybatis+quartz项目的搭建完整版
    Hadoop生态组件Hive,Sqoop安装及Sqoop从HDFS/hive抽取数据到关系型数据库Mysql
    Swagger+AutoRest 生成web api客户端(.Net)
    NodeJS学习
    Go学习
  • 原文地址:https://www.cnblogs.com/wurenzhong/p/8491379.html
Copyright © 2020-2023  润新知