1-STM32之GPIO点亮LED

简介: 1-STM32之GPIO点亮LED


1-硬件设计


本实验以1个LED灯为例,本篇文章主要目的是理解GPIO输出。


LED的正极通过1KΩ与3.3v连接,LED的阴极以单片机的GPIOC的13号引脚相连接。根据电路图,当PC13位输出低电平时,LED灯亮,输出为高时LED熄灭(亮和灭就是两端的电压差,当LED两端同时都是高电平时,没有电压差)。

注:具体连接引脚请根据自己开发板上的电路原理图进行连接。


2-软件设计


1-编程步骤

  1. 使能GPIO时钟(也就是RCC,这步是非常重要的。具体在那个总线上,请参考数据手册,本专栏芯片为STM32F429)
  2. 设置对应于片上外设使用的GPIO工作模式
  3. 在应用程序中读取引脚状态、控制引脚输出状态或使用复用功能完成特定功能。


2-编程要点

  1. 使能GPIO时钟。调用函数RCC_AHB1PeriphClockCmd()。不同的外设调用的时钟使能函数可能不一样。
  2. 初始化GPIO模式。调用函数GPIO_Init()。
  3. 操作GPIO,设置引脚输出状态。调用函数GPIO_SetBits();或GPIO_ResetBits()或GPIO_ToggleBits()。


3-代码实现


    static  void  LED_Config(void){  GPIO_InitTypeDef GPIO_InitStructure;  //GPIO_InitStructure用于存放GPIO的参数  /*开启LED相关的GPIO外设时钟*/ 第一步  RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOC, ENABLE);  //使能GPIOC的时钟   /*选择要控制的GPIO引脚*/  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_13;      //设置引脚  *设置引脚模式为输出*/  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;    //设置模式    /*设置引脚速率为2MHz */   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  //设置I/O输出速度  /*设置引脚的输出类型为推挽输出*/  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    //设置输出类型  /*设置引脚为上拉模式*/  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;     //设置上拉/下拉模式   /*调用库函数,使用上面配置的GPIO_InitStructure初始化GPIO*/      第二步             GPIO_Init(GPIOC, &GPIO_InitStructure);      //根据参数初始化LED的GPIO    GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET); //将LED默认状态设置为熄灭}


      void InitLED(void){  LED_Config();  //配置LED的GPIO}
        * 函数名称:Contl_lLED* 函数功能:控制LED亮灭* 输入参数:mode:1-点亮,0-熄灭* 输出参数:void* 返 回 值:void* 创建日期:*********************************************************************************************************/void Contl_lLED(u8 mode){  if(mode)  {        GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET); //点亮LED  }  else  {        GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET);   //熄灭LED  } }
        void LED_ON_OF(u16 cnt){   static u16 time;    //time    time++;             //计数器的计数值加1    if(time >= cnt)     //计数器的计数值大于cnt   {    time = 0;         //重置计数器的计数值为0
            //LED状态取反,实现LED闪烁    GPIO_WriteBit(GPIOC, GPIO_Pin_13, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)));      }}
        int main(void){  InitLED();  LED_ON_OF(300);}
        相关文章
        |
        6月前
        |
        存储
        STM32F103标准外设库——GPIO 输入、输出 (五)
        STM32F103标准外设库——GPIO 输入、输出 (五)
        397 0
        STM32F103标准外设库——GPIO 输入、输出 (五)
        |
        芯片
        最详细STM32,cubeMX 按键点亮 led
        最详细STM32,cubeMX 按键点亮 led
        194 0
        |
        5月前
        使用STM32F103标准库实现定时器控制LED点亮和关闭
        通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
        447 2
        |
        1月前
        stm32学习 3-2 LED流水灯
        stm32学习 3-2 LED流水灯
        72 4
        |
        1月前
        stm32学习3-1 LED闪烁
        stm32学习3-1 LED闪烁
        36 4
        |
        4月前
        STM32CubeMX FreeRTOS点亮LED
        STM32CubeMX FreeRTOS点亮LED
        78 10
        |
        4月前
        STM32CubeMX 按键控制LED
        STM32CubeMX 按键控制LED
        71 0
        |
        4月前
        STM32CubeMX 点亮LED
        STM32CubeMX 点亮LED
        62 0
        |
        芯片
        STM32速成笔记(二)—GPIO
        本文介绍了STM32的GPIO的配置和使用方法,并且给出了应用实例。此外,针对使用时可能遇到的一些问题给出了解决办法。
        377 0
        STM32速成笔记(二)—GPIO
        |
        4月前
        stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
        stm32f407探索者开发板(八)——按键输入实验--GPIO做输入