我想用数组去实现LED灯的逐渐亮的增多,但不知道哪里错了

img


我想用数组去实现LED灯的逐渐亮的增多,但不知道哪里错了??

你传的是引脚定义?点亮led是传值?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7633833
  • 除此之外, 这篇博客: 按键控制LED灯的亮灭中的 按键控制LED灯的亮灭 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    1. 新建库函数的工程文件,在《利用固件库点亮LED灯》文章的基础上加上一个key.c文件和key.h文件。
    2. 初始化KEY的GPIO函数
    void KEY_GPIO_Config(void)
    {
      GPIO_InitTypeDef GPIO_InitStruct;
      
      RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK|KEY2_GPIO_CLK, ENABLE);
      
      GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
      GPIO_InitStruct.GPIO_Pin = KEY1_GPIO_PIN;
      GPIO_Init(KEY1_GPIO_PORT,&GPIO_InitStruct);
      
      GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
      GPIO_InitStruct.GPIO_Pin = KEY2_GPIO_PIN;
      GPIO_Init(KEY2_GPIO_PORT,&GPIO_InitStruct);   
    }
    
    1. 按键扫描函数
    //按键扫描
    uint8_t key_scan(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
    {
      if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == KEY_ON)
      {
        //松手检测
        while(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == KEY_ON);
        return KEY_ON;
      }
      else
        return KEY_OFF;
    }
    
    1. 在main函数中调用
    int main(void)
    {
      LED_GPIO_Config();
      KEY_GPIO_Config();
      while(1)
      {
        if(key_scan(KEY1_GPIO_PORT, KEY1_GPIO_PIN) == KEY_ON)
        {
          LED_TOGGLE;
        }
        if(key_scan(KEY2_GPIO_PORT, KEY2_GPIO_PIN) == KEY_ON)
        {
          LED_TOGGLE;
        }
      }
    }
    

    其中LED_TOGGLE是利用宏定义的方式实现。
    这里需要注意的是不要掉;
    并且是控制LED的GPIO端口。

    #define LED_TOGGLE {LED_GPIO_PORT->ODR^=LED_GPIO_PIN;}
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^