这里只讲思路,不讲具体代码
第一步:static void MX_USART1_UART_Init(void);
函数为stm32cube 自动生成, 只是用于配置串口传输格式,波特率等
第二步:void HAL_UART_MspInit(UART_HandleTypeDef *huart)
函数为stm32cube 自动生成, 用于配置串口引脚,使能中断通道,设置优先级代码。
说明一点,此函数在函数MX_USART1_UART_Init(void)中被调用。用户不用理会。
eg. HAL_NVIC_EnableIRQ(USART1_IRQn); //使能USART1中断通道
HAL_NVIC_SetPriority(USART1_IRQn,3,3);
第三部:完善中断函数
//串口1中断服务程序
void USART1_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart1);
HAL_UART_Receive_IT(&huart1, (u8 *)aRxBuffer, 2);//需要多次接收时,添加此函数
}
第四步:完善回调函数(串口接收完成后,会自动调用回调函数)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance==USART1)//如果是串口1
{
//用户代码
}
}