2245272269qq.com先点击STM32CubeIDE左上角的File新建一个工程然后搜索你使用的芯片可以添加收藏点击那个五角星然后点灯的原理图如图进入芯片页面后给PA7变成GPIO口相比于单色灯这次把把GPIO改为低电平保存然后自动生成代码电机下载按钮不要忘记勾选自动编译然后观察main.c函数这些注释其实是CubeMX为了重新生成代码时保留我们自己写的代码二设置的一种机制只要将代码写在注释对里面重新生成代码还会保留如果写在外边代码就会没有通过一行代码将PA7设置为高电平有个小技巧按下alt加\有代码提示如果没有提示把大写关掉试试HAL_GPIO_WritePin(GPIOAGPIO_PIN_7GPIO_PIN_SET);第一个参数是设置GPIO分组第二个参数是设置GPIO的编号第三个参数是设置GPIO的状态如果要尝试要让小灯闪烁将这个设置PA7为高电平的代码移动到while中while(1){HAL_GPIO_WritePin(GPIOAGPIO_PIN_7GPIO_PIN_SET);//设置为高电平的代码HAL_GPIO_WritePin(GPIOAGPIO_PIN_7GPIO_PIN_RESET);//设置为低电平的代码让小灯闪烁}注意务必要一个BEGIN-END对之间但是这个代码有一个问题代码不停的高低电平之间切换很快很快肉眼凡胎无法分辨需要在操作中加入延迟HAL_Delay(1000),如果有多个灯的色彩原理图如图然后把这几个对应的口也设置成为了写程序方便可以设置标签在引脚上右键选择Enter User Label比如如果我们希望达到先红灯亮然后红绿灯亮然后红绿蓝亮然后绿蓝亮。。。这样的通过设置一个state状态来循环当state2||state5时红色灯一直亮这样的逻辑然后每一轮state1while(1){if(state2||state5){HAL_GPIO_WritePin(LED_RED_GPIO_Port,LED_RED_Pin,GPIO_PIN_SET);}else{HAL_GPIO_WritePin(LED_RED_GPIO_Port,LED_RED_Pin,GPIO_PIN_RESET);}if(state1state3){HAL_GPIO_WritePin(LED_GREEN_GPIO_Port,LED_GREEN_Pin,GPIO_PIN_SET);}else{HAL_GPIO_WritePin(LED_GREEN_GPIO_Port,LED_GREEN_Pin,GPIO_PIN_RESET);}if(state2){HAL_GPIO_WritePin(LED_BLUE_GPIO_Port,LED_BLUE_Pin,GPIO_PIN_SET);}else{HAL_GPIO_WritePin(LED_BLUE_GPIO_Port,LED_BLUE_Pin,GPIO_PIN_RESET);}HAL_Delay(300);state;if(state5){state0;}}
STM32CubeIDE绚丽小灯
发布时间:2026/7/8 2:34:39
2245272269qq.com先点击STM32CubeIDE左上角的File新建一个工程然后搜索你使用的芯片可以添加收藏点击那个五角星然后点灯的原理图如图进入芯片页面后给PA7变成GPIO口相比于单色灯这次把把GPIO改为低电平保存然后自动生成代码电机下载按钮不要忘记勾选自动编译然后观察main.c函数这些注释其实是CubeMX为了重新生成代码时保留我们自己写的代码二设置的一种机制只要将代码写在注释对里面重新生成代码还会保留如果写在外边代码就会没有通过一行代码将PA7设置为高电平有个小技巧按下alt加\有代码提示如果没有提示把大写关掉试试HAL_GPIO_WritePin(GPIOAGPIO_PIN_7GPIO_PIN_SET);第一个参数是设置GPIO分组第二个参数是设置GPIO的编号第三个参数是设置GPIO的状态如果要尝试要让小灯闪烁将这个设置PA7为高电平的代码移动到while中while(1){HAL_GPIO_WritePin(GPIOAGPIO_PIN_7GPIO_PIN_SET);//设置为高电平的代码HAL_GPIO_WritePin(GPIOAGPIO_PIN_7GPIO_PIN_RESET);//设置为低电平的代码让小灯闪烁}注意务必要一个BEGIN-END对之间但是这个代码有一个问题代码不停的高低电平之间切换很快很快肉眼凡胎无法分辨需要在操作中加入延迟HAL_Delay(1000),如果有多个灯的色彩原理图如图然后把这几个对应的口也设置成为了写程序方便可以设置标签在引脚上右键选择Enter User Label比如如果我们希望达到先红灯亮然后红绿灯亮然后红绿蓝亮然后绿蓝亮。。。这样的通过设置一个state状态来循环当state2||state5时红色灯一直亮这样的逻辑然后每一轮state1while(1){if(state2||state5){HAL_GPIO_WritePin(LED_RED_GPIO_Port,LED_RED_Pin,GPIO_PIN_SET);}else{HAL_GPIO_WritePin(LED_RED_GPIO_Port,LED_RED_Pin,GPIO_PIN_RESET);}if(state1state3){HAL_GPIO_WritePin(LED_GREEN_GPIO_Port,LED_GREEN_Pin,GPIO_PIN_SET);}else{HAL_GPIO_WritePin(LED_GREEN_GPIO_Port,LED_GREEN_Pin,GPIO_PIN_RESET);}if(state2){HAL_GPIO_WritePin(LED_BLUE_GPIO_Port,LED_BLUE_Pin,GPIO_PIN_SET);}else{HAL_GPIO_WritePin(LED_BLUE_GPIO_Port,LED_BLUE_Pin,GPIO_PIN_RESET);}HAL_Delay(300);state;if(state5){state0;}}