一、串口设置
1. 异步模式
默认RX在PC7上,根据需要改到PG9上
2. 参数
3. 中断使能
4. 生成代码如下
/* USART6 init function */
static void MX_USART6_UART_Init(void)
{
huart6.Instance = USART6;
huart6.Init.BaudRate = 115200;
huart6.Init.WordLength = UART_WORDLENGTH_8B;
huart6.Init.StopBits = UART_STOPBITS_1;
huart6.Init.Parity = UART_PARITY_NONE;
huart6.Init.Mode = UART_MODE_TX_RX;
huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart6.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart6) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
5. 自己需添加中断服务函数
//发生溢出中断或DMA中断时
uint8_t Rx_HAL_Buff_Temp[2]; //HAL函数接收临时缓存
uint8_t Rx_Buff[100]; //接收帧缓存,自己定义大小
uint8_t RxCounter = 0; //接收计数器
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
huart->ErrorCode = HAL_UART_ERROR_NONE;
HAL_UART_Receive_IT(&huart6,Rx_HAL_Buff_Temp,1);
}
//接收到1字节数据,回调函数如下
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance==USART6)
{
Rx_Buff[[RxCounter++] = Rx_HAL_Buff_Temp[0];
//加上自己的代码
HAL_UART_Receive_IT(&huart6,Rx_HAL_Buff_Temp,1);
}
}