# 串口
[文件已丢失]
[文件已丢失]
中断使能
# 发送
&huart1(全是uart!!)
char send_buf[20];
sprintf(send_buf,"123");
HAL_UART_Transmit(&huart1,(uint8_t*)send_buf,strlen(send_buf),100);
# 接收
&huart1(全是uart!!)
HAL_UART_Receive_IT(&huart1,&rx_buf,1);//使能中断
uint8_t rx_buf;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance ==USART1)//只有这里是 USART1
{
HAL_UART_Transmit(huart ,&rx_buf,1,50);
HAL_UART_Receive_IT(huart,&rx_buf,1);//全是huart
}
}
# 接收,但只接收准确信息,否则error
定时器配0.1ms,波特率9600,因为接收一个消息需要10/9600≈103ms
HAL_TIM_Base_Start(&htim8);
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance ==USART1)
{
TIM4 ->CNT =0;
rx_flag =1;
rx[i++] = rx_buf;
HAL_UART_Receive_IT(huart,&rx_buf,1);
}
}
void show(void)
{
if(rx_flag&&TIM8 -> CNT >150)
{
if(rx[0]=='i'&& rx[1]=='l'&& rx[2]=='o'&& rx[3]=='v'&& rx[4]=='e')
{
sprintf(send ,"right \n\r");
HAL_UART_Transmit(&huart1,(uint8_t*)send,strlen(send),100);
}
else
{
sprintf(send ,"error \n\r");
HAL_UART_Transmit(&huart1,(uint8_t*)send,strlen(send),100);
}
rx_flag = 0;
i=0;
}
}

