使用STM32CubeIDE创建一个新的项目后,选择自己所需的芯片。如图:
使能外部晶振
配置LED灯相应的管脚为输出模式:下面是蓝色LED灯对应管脚PB2的设置过程,同样的红色、绿色也是相应的设置过程。
根据LED的连接电路图对管脚进行设置:根据电路图可知,LED灯的默认电平为高电平,即当管脚的电压为高电平是LED灯是熄灭状态。下面为LED灯的电路图以及PB2管脚设置,其他管脚的设置同PB2.
设置完成后进行时钟树的设置:使用外部晶振。
最后进行其他相关项目配置后:生成代码,并在Keil中打开相应的代码。
在main.c中进行相关的修改,在while(1)循环中添加如下代码:
HAL_GPIO_WritePin(BlueLed_GPIO_Port, BlueLed_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GreenLed_GPIO_Port, GreenLed_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(RedLed_GPIO_Port, RedLed_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(BlueLed_GPIO_Port, BlueLed_Pin, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GreenLed_GPIO_Port, GreenLed_Pin, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(RedLed_GPIO_Port, RedLed_Pin, GPIO_PIN_SET);
最后编译,烧录到单片机中,便实现相应的现象。
补充说明:
HAL_GPIO_WritePin()函数
该函数为HAL库中操作IO口的函数,主要功能是给某个GPIO写0或1;
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
函数参数:GPIOx: 是GPIO_TypeDef * 类型,是GPIO寄存器类型。
函数参数: GPIO_Pin:是unit16_t类型,是GPIO寄存器的位端口。
函数参数: PinState,指定要写入选定位的值;参数可选范围是,GPIO_PIN_RESET,GPIO_PIN_SET两个值;
返回值:无;
HAL_Delay()函数
该函数为HAL库中的延时函数,实现的是毫秒级的延时。HAL_Delay函数可以满足大部分的应用场景,但在某些特殊场合下,会出现一些局限性。比如,在需要精准延时的场合,HAL_Delay函数可能无法满足我们的需求。在这种情况下,我们需要使用Timer中断等其它方法实现精准延时。
void HAL_Delay(uint32_t Delay)
函数参数:Delay,是uint32_t类型,是需要延迟的毫秒时间。