用CubeMX创建项目
本实例用的PA14、PA13两个引脚,LPUART1。
对串口参数进行设置:
开启串口中断:
时钟源设置成内部高频时钟:
对项目进行设置:
生成代码:
在串口初始化函数中加入
c
__HAL_UART_ENABLE_IT(&hlpuart1,UART_IT_RXNE);
开启接收中断,如下:
将stm32l0xx_it.c
中串口中断处理函数代码修改成:
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
继续做收发实验:
这时接收数据与发送数据吻合。