# 串口

[文件已丢失]

[文件已丢失]

中断使能

# 发送

&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;
	}
	
}