STM32L031F6P6基于CubeMX的串口通信调试笔记

用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

继续做收发实验:

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

相关推荐
老王熬夜敲代码6 分钟前
C++中的mutex、condition_val
c++·笔记·面试
平凡灵感码头32 分钟前
第一次做蓝牙产品,从零开发 嵌入式开发日志(2)AC63NSDK 完整合并版目录说明
stm32·单片机·嵌入式硬件
清轩轩39 分钟前
UDS时间参数学习(应用层+网络层+会话层+传输层)
c语言·can·信息与通信·诊断·uds
阿蒙Amon44 分钟前
JavaScript学习笔记:2.基础语法与数据类型
javascript·笔记·学习
SystickInt1 小时前
常见问题整理总结
单片机·嵌入式硬件
誰能久伴不乏1 小时前
深入理解 `poll` 函数:详细解析与实际应用
linux·服务器·c语言·c++·unix
亦诚亦心1 小时前
单片机各种驱动简要解释
单片机·嵌入式硬件
阿拉斯攀登1 小时前
51单片机:点灯程序
单片机·嵌入式硬件·51单片机
逐步前行1 小时前
C51_AT24C02 EEPROM
单片机
遇到困难睡大觉哈哈1 小时前
HarmonyOS —— Remote Communication Kit 定制数据传输(TransferConfiguration)实战笔记
笔记·华为·harmonyos