|
串口助手为什么在发送和接收都不成功,而且USB是没问题的,求解
char rx_array[100];
char send_array[100];
uint8_t rx_flag;
uint8_t rx_size;
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
if(huart->Instance==USART1)
{
rx_flag=1;//接收到了
rx_size=Size;
HAL_UARTEx_ReceiveToIdle_DMA(&huart1,(uint8_t *)rx_array,100);
}
}
uint8_t is_digit(char a)
{
return(a>='0'&&a<='9');
}
void rx_handle(void)//接收处理
{
if(rx_flag)
{
rx_flag=0;
if(rx_size==7)//跳过
{
if(rx_array[0]==password[0]+'0'&&rx_array[1]==password[1]+'0'&&rx_array[2]==password[2]+'0'&&rx_array[3]=='-')
{
if(is_digit(rx_array[4]) && is_digit(rx_array[5]) && is_digit(rx_array[6]))
{
password[0]=rx_array[4]-'0';
password[1]=rx_array[5]-'0';
password[2]=rx_array[6]-'0';
sprintf(send_array,"%d%d%d\r\n",password[0],password[1],password[2]);
HAL_UART_Transmit_DMA(&huart1,(uint8_t *)send_array,strlen(send_array));
}
}
}
memset(rx_array,0,100);//接收数组清零
}
}
主函数:
HAL_UARTEx_ReceiveToIdle_DMA(&huart1,(uint8_t *)rx_array,100);
[/mw_shl_code]
|
|