自学内容网 自学内容网

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

用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
在这里插入图片描述
继续做收发实验:
在这里插入图片描述
这时接收数据与发送数据吻合。


原文地址:https://blog.csdn.net/inputA/article/details/143024790

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!