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