==7:LED闪烁==
7.1:硬件设计
首先查看硬件原理图,判断指示灯引脚。

从原理图可以看出,用户按键使用PF3引脚。PF3这里作为LED指示灯功能引脚,同时也是芯片启动模式判断引脚。

7.2:软件设计
1:定时GPIO引脚。
#define BSP_LED_GPIO GPIOF
#define BSP_LED_PIN GPIO_PIN_3
#define BSP_LED_MODE GPIO_MODE_OUTPUT_PP
#define BSP_LED_PULL GPIO_PULLUP
#define BSP_LED_DRIVE GPIO_DRIVE_LEVEL3
#define BSP_LED_ALTERNATE GPIO_FUNCTION_0
#define BSP_LED_CLK_ENABLE() __RCC_GPIOF_CLK_ENABLE()
2:LED指示灯初始化
voiddrv_led_init(void)
{
GPIO_InitTypeDefGPIO_InitStruct;
BSP_LED_CLK_ENABLE();
GPIO_InitStruct.Pin = BSP_LED_PIN;
GPIO_InitStruct.Mode = BSP_LED_MODE;
GPIO_InitStruct.Pull = BSP_LED_PULL;
GPIO_InitStruct.Drive = BSP_LED_DRIVE;
GPIO_InitStruct.Alternate = BSP_LED_ALTERNATE;
GPIO_Init(BSP_LED_GPIO, &GPIO_InitStruct);
GPIO_WriteBit(BSP_LED_GPIO, BSP_LED_PIN, GPIO_PIN_RESET);
}
3:设置LED指示灯电平高低
/******************************************************************************
*<a href="https://bbs.eeworld.com.cn/home.php?mod=space&uid=159083" target="_blank">@brief</a> : LED on
*@param : none
*@return: none
******************************************************************************/
void drv_led_on(void)
{
GPIO_WriteBit(BSP_LED_GPIO, BSP_LED_PIN, GPIO_PIN_RESET);
}
/******************************************************************************
*@brief : LED off
*@param : none
*@return: none
******************************************************************************/
void drv_led_off(void)
{
GPIO_WriteBit(BSP_LED_GPIO, BSP_LED_PIN, GPIO_PIN_SET);
}
/******************************************************************************
*@brief : LED toggle
*@param : none
*@return: none
******************************************************************************/
void drv_led_toggle(void)
{
GPIO_ToggleBits(BSP_LED_GPIO, BSP_LED_PIN);
}
4:循环任务LED指示灯闪烁
voidtask4_hook(void)
{
drv_led_toggle();
gVarInfo.toggleFlag =!gVarInfo.toggleFlag;
if(gVarInfo.toggleFlag){
DEBUG_LOG("led_on");
}
else{
DEBUG_LOG("led_off");
}
DEBUG_LOG("1s_task");
}
7.3:LED指示灯输出结果

從串口調試助手,可以看出,LED每秒閃爍!!!