使用STM32 CubeMX模拟编程实现8个LED流水灯

收线是利用Proteus8.15  绘制仿真的电路图

接着设置CubeMX中的用到的端口

难后生成keil工程文件,添加一部分代码,完成流水灯的操作

把代码也展示一下吧!需要写的只有在main函数中的while循环中。

 while (1)
  {
      /****************************************************************
      // 下面是电平翻转函数,  端口是0的话变成1,  是1的话变成0
      //HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
      HAL_GPIO_TogglePin(led1_GPIO_Port, led1_Pin);  // 电平翻转函数
      //HAL_Delay(uint32_t Delay)
      HAL_Delay(200);           // 延时函数(200毫秒)
      ******************************************************************/
      
      //下面是电平置位函数   可以设置成0或1
      //HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
       HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_RESET);   // led1 置0
       HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET);   // led2 置1
       HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET);   // led3 置1
       HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET);   // led4 置1
       HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET);   // led5 置1
       HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET);   // led6 置1
       HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET);   // led7 置1
       HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET);   // led8 置1
       HAL_Delay(100);           // 延时函数(200毫秒)
      
       HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET);   // led1 置1
       HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_RESET);   // led2 置0
       HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET);   // led3 置1
       HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET);   // led4 置1
       HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET);   // led5 置1
       HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET);   // led6 置1
       HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET);   // led7 置1
       HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET);   // led8 置1
       HAL_Delay(100);           // 延时函数(200毫秒)
       
       HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET);   // led1 置1
       HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET);   // led2 置1
       HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_RESET);   // led3 置0
       HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET);   // led4 置1
       HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET);   // led5 置1
       HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET);   // led6 置1
       HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET);   // led7 置1
       HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET);   // led8 置1
       HAL_Delay(100);           // 延时函数(200毫秒)
       
       HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET);   // led1 置1
       HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET);   // led2 置1
       HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET);   // led3 置1
       HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_RESET);   // led4 置0
       HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET);   // led5 置1
       HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET);   // led6 置1
       HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET);   // led7 置1
       HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET);   // led8 置1
       HAL_Delay(100);           // 延时函数(200毫秒)
       
       HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET);   // led1 置1
       HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET);   // led2 置1
       HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET);   // led3 置1
       HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET);   // led4 置1
       HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_RESET);   // led5 置0
       HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET);   // led6 置1
       HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET);   // led7 置1
       HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET);   // led8 置1
       HAL_Delay(100);           // 延时函数(200毫秒)
       
       HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET);   // led1 置1
       HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET);   // led2 置1
       HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET);   // led3 置1
       HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET);   // led4 置1
       HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET);   // led5 置1
       HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_RESET);   // led6 置0
       HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET);   // led7 置1
       HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET);   // led8 置1
       HAL_Delay(100);           // 延时函数(200毫秒)
       
       HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET);   // led1 置1
       HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET);   // led2 置1
       HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET);   // led3 置1
       HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET);   // led4 置1
       HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET);   // led5 置1
       HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET);   // led6 置1
       HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_RESET);   // led7 置0
       HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_SET);   // led8 置1
       HAL_Delay(100);           // 延时函数(200毫秒)
       
       HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET);   // led1 置1
       HAL_GPIO_WritePin(led2_GPIO_Port,led2_Pin, GPIO_PIN_SET);   // led2 置1
       HAL_GPIO_WritePin(led3_GPIO_Port,led3_Pin, GPIO_PIN_SET);   // led3 置1
       HAL_GPIO_WritePin(led4_GPIO_Port,led4_Pin, GPIO_PIN_SET);   // led4 置1
       HAL_GPIO_WritePin(led5_GPIO_Port,led5_Pin, GPIO_PIN_SET);   // led5 置1
       HAL_GPIO_WritePin(led6_GPIO_Port,led6_Pin, GPIO_PIN_SET);   // led6 置1
       HAL_GPIO_WritePin(led7_GPIO_Port,led7_Pin, GPIO_PIN_SET);   // led7 置1
       HAL_GPIO_WritePin(led8_GPIO_Port,led8_Pin, GPIO_PIN_RESET);   // led8 置0
       HAL_Delay(100);           // 延时函数(200毫秒)
       
       
      
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

下面是使用的函数的来源:

这是延时函数的来源:

下面是GPIO中置位函数的来源:

按照上面的样子编译后导入proteus中就能模拟流水灯效果了。

作者:尚久龙

物联沃分享整理
物联沃-IOTWORD物联网 » 使用STM32 CubeMX模拟编程实现8个LED流水灯

发表评论