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

继续做收发实验:

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

相关推荐
不脱发的程序猿15 分钟前
从MCU到SoC的开发思维转变
单片机·嵌入式硬件
&Cheems1 小时前
ZYNQ笔记(二十一): VDMA HDMI 彩条显示
笔记·嵌入式硬件·fpga开发
忧伤火锅麻辣烫1 小时前
Spark,RDD中的转换算子
笔记·微信
孤寂大仙v1 小时前
【Linux笔记】——进程信号的保存
java·linux·笔记
C_Liu_1 小时前
C语言:深入理解指针(3)
c语言·数据结构·算法
饕餮争锋1 小时前
feign.RequestInterceptor 简介-笔记
java·开发语言·笔记
huangyuchi.1 小时前
【C++】智能指针
开发语言·jvm·c++·笔记·c++11·智能指针·shared_ptr
南玖yy1 小时前
C/C++ 内存管理深度解析:从内存分布到实践应用(malloc和new,free和delete的对比与使用,定位 new )
c语言·开发语言·c++·笔记·后端·游戏引擎·课程设计
A-花开堪折2 小时前
OpenMCU(六):STM32F103开发板功能介绍
stm32·单片机·嵌入式硬件
s_little_monster2 小时前
【Linux】socket网络编程之TCP
linux·运维·网络·笔记·学习·tcp/ip·学习方法