项目场景:
串口相关的知识,以及程序的注释。
问题描述
很多同学读不懂程序
uint8_t Tx_str1[]="Welcome \r\n";
uint8_t Tx_str2[]="LED1 ON! \r\n";
uint8_t Tx_str3[]="LED1 OFF! \r\n";
uint8_t Tx_str4[]="COMMAND not found! \r\n";
uint8_t rx_dat=0;//定义接收的数据为unsigned char型,并赋初始值为0。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)(串口回调函数)
{
if(huart==&huart1) //判断是否为串口1
{switch(rx_dat) //选择判断接收的数据
{
case 0x01:HAL_UART_Transmit(&huart1,Tx_str1sizeof(Tx_str1,1000); break; //若接收到的数据为0x01,向上位机发送“Welcome”,后跳出循环
case 0x02: HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),1000); break;
case 0x03 :HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str3,1000); break;
default: HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str4,1000); break;
}}}
原因分析:
程度学的不扎实。
解决方案:
uint8_t Tx_str1[]="Welcome \r\n";
uint8_t Tx_str2[]="LED1 ON! \r\n";
uint8_t Tx_str3[]="LED1 OFF! \r\n";
uint8_t Tx_str4[]="COMMAND not found! \r\n";
uint8_t rx_dat=0;//定义接收的数据为unsigned char型,并赋初始值为0。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//(串口回调函数)
{
if(huart==&huart1) //判断是否为串口1
{switch(rx_dat) //选择判断接收的数据
{
case 0x01:HAL_UART_Transmit(&huart1,Tx_str1sizeof(Tx_str1,1000); break; //若接收到的数据为0x01,向上位机发送“Welcome”,后跳出循环
case 0x02: HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),1000); break;
case 0x03 :HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str3,1000); break;
default: HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str4,1000); break;
}}