STM32CubeMX配置USART之无须DMA接收1帧数据
一、设备及软件
1、keil
2、STM32CubeMX
3、STM32F103C8T6核心板
二、配置步骤
1、RCC配置
2、SYS配置
3、USART配置
4、配置时钟树
5、完成配置生成代码
6、修改代码,打开接收中断和空闲中断
7、重写中断服务函数
删除stm32f1xx_it.c中usart中断服务函数,在usart.c重写
void USART1_IRQHandler(void)
{
uint8_t clear=clear;
if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE)!=RESET)
{
rece_buffer[RxCounter++]=USART1->DR;
__HAL_UART_CLEAR_FLAG (&huart1, UART_FLAG_RXNE);
}
else if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)!=RESET)
{
__HAL_UART_CLEAR_PEFLAG (&huart1);
HAL_UART_Transmit(&huart1,rece_buffer,RxCounter,0x10);
RxCounter=0;
}
}
8、完成代码修改
9、注意:接收一帧数据的长度必须大于1,否则无法进入空闲中断,当接受数据量较大时,建议使用DMA。