用CubeMX创建项目
本实例用的PA14、PA13两个引脚,LPUART1。

对串口参数进行设置:


开启串口中断:

时钟源设置成内部高频时钟:

对项目进行设置:


生成代码:

在串口初始化函数中加入
__HAL_UART_ENABLE_IT(&hlpuart1,UART_IT_RXNE);
开启接收中断,如下:

将stm32l0xx_it.c中串口中断处理函数代码修改成:
unsigned char tmp;
if (__HAL_UART_GET_FLAG(&hlpuart1, UART_FLAG_ORE) != RESET) /* UART接收过载错误中断 */
{
__HAL_UART_CLEAR_OREFLAG(&hlpuart1); /* 清除接收过载错误中断标志 */
tmp = '?';
HAL_UART_Transmit(&hlpuart1, &tmp, 1, HAL_MAX_DELAY);
}
if(__HAL_UART_GET_FLAG(&hlpuart1,UART_FLAG_RXNE)!=RESET)
{
// uint8_t ch;
HAL_UART_Receive(&hlpuart1, &tmp, 1, HAL_MAX_DELAY);
HAL_UART_Transmit(&hlpuart1, &tmp, 1, HAL_MAX_DELAY);
}
结果如下:

测试
用串口调试助手进行通讯实验现象如下:

其中的问号是在触发接收过载错误中断时发出的:

将波特率修改成9600

继续做收发实验:

这时接收数据与发送数据吻合。



















