新手入门
- 积分
- 9
- 金钱
- 9
- 注册时间
- 2020-6-28
- 在线时间
- 2 小时
|
1金钱
stm32f103 HAL库接收非标数据串口会死机
串口发送十六进制数据(私有协义)如EB 01 02,可以打开GPIO,控制LED灯,
串口发送十六进制非标数据如 EB 00 02,不会打开GPIO,控制LED灯,此时正常。再发送EB 01 02,不能控制gpio,控制led.
要如何修改?原代码如下:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart -> Instance == USART1 )
{
if(Rx_dat [0]== 0xeb && Rx_dat [1]== 0x01)
{
v=Rx_dat [2];
switch ( v/1%10)
{
case 1:
HAL_GPIO_WritePin (GPIOB,GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9,GPIO_PIN_RESET);
HAL_GPIO_WritePin (GPIOB,GPIO_PIN_9,GPIO_PIN_SET);
HAL_TIM_Base_Start_IT(&htim2);
break;
case 2:
HAL_GPIO_WritePin (GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
HAL_TIM_Base_Start_IT(&htim2);
break;
case 3:
HAL_GPIO_WritePin (GPIOB,GPIO_PIN_7,GPIO_PIN_SET);
HAL_TIM_Base_Start_IT(&htim2);
break;
case 4:
HAL_GPIO_WritePin (GPIOB,GPIO_PIN_6,GPIO_PIN_SET);
HAL_TIM_Base_Start_IT(&htim2);
break;
case 5:
HAL_GPIO_WritePin (GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);
HAL_TIM_Base_Start_IT(&htim2);
break;
case 6:
HAL_GPIO_WritePin (GPIOB,GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9,GPIO_PIN_RESET);
break;
}
HAL_UART_Receive_IT (&huart1 ,Rx_dat ,3);
}
}
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
HAL_GPIO_WritePin (GPIOB,GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9,GPIO_PIN_RESET);
HAL_UART_Receive_IT (&huart1 ,Rx_dat ,3);
|
|