日常继续点灯,这次我们用串口点灯,自己制定一个简单的协议,固定接收两个字符,收到"ON"开,收到"OF"关灯继续点


生成
撸程序关闭之前的定时器,因为定时器中断有开关灯程序使能串口中断接收HAL_UART_Receive_IT(&huart2, (uint8_t*)recv_buf, 2);
打开接收中断,接收两个字节产生中断,将字节放进recv_buf数组里
编写接收中断回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart ->Instance == USART2){
if(recv_buf[0]=='O'){
if(recv_buf[1]=='F'){
HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_RESET);
printf("LED_OFF\r\n");
}
else if(recv_buf[1]=='N'){
HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_SET);
printf("LED_ON\r\n");
}
else {
printf("ERROR\r\n");
}
}
else {
printf("ERROR\r\n");
}
//重新使能串口接收中断
HAL_UART_Receive_IT(&huart2, (uint8_t*)recv_buf, 2);
}
}然后编译烧录
看现象
我要赚赏金
