Bootstrap

蓝桥杯4T平台(串口控制LD状态)

知识点:串口(单片机接受)+定时器中断(控制LED闪烁)、

配置

串口

定时器 

代码 

定义变量
uint8_t rx_data;
uint8_t led_flag;
uint16_t cnt=0;
使能 
  HAL_UART_Receive_IT(&huart1,&rx_data,1);
  HAL_TIM_Base_Start_IT(&htim2);
  HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
定时器中断 
 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 {   
 if(htim->Instance==TIM2)
 { if(led_flag==1)
	{
	cnt++;
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
    HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_10);
	if(cnt>50)
	{
	led_flag=0;
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
	}
	}
}
 }
串口接受函数 
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(rx_data=='X')
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);
}
if(rx_data=='Y')
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_9);
}
if(rx_data!='X'&&rx_data!='Y')
{
led_flag=1;
TIM2->CNT=0;
}
HAL_UART_Receive_IT(&huart1,&rx_data,1);
}
;