STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收,解决第一笔数据无法收发问题

STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收,解决第一笔数据无法收发问题

目的:

为了能使UART通讯不受长度和回车等字符限制,同时也记录下自己的实施过程,方便以后查阅.

使用工具:

  • STM32CubeMX 6.01 生成代码

  • 编译工具可以使用IAR或KEIL,依照个人习惯,本文使用KEIL 5

DFU代码生成:

STM32CubeMX部分:

  1. 打开STM32CubeMX
  2. 选择"ACCESS TO MCU SELECTOR""
  3. MCU选择"STM32F103VCTx"
  4. System Core配置

    RCC选择,

    如下图,High Speed Clock(HSE)选择Crystal,其他默认即可
    在这里插入图片描述
    SYS配置,
    如果用HAL库不进行SWD或JTAG配置,单片机只能进行下载一次程序,要进行第二次或更多次程序下载,需要按复位键(如果你的单片机有复位按键的话),或者用镊子夹住复位线路上的电容使其短路,点击Keil下载,再松开镊子,我们选择使用Serial Wire.
    SYS配置述

  5. USART1配置

    模式选择异步模式,其他参数默认
    TX和RX的DMA都打开在这里插入图片描述
    开启USART1的中断
    在这里插入图片描述

  6. Clock配置

    通常Clock会自动按照前边选择的功能自动分配,如果没有自动分配,可以按照以下进行配置:
    (1) 外部晶振选择8MHz
    (2) RTC晶振选择内部40kHz
    (3) USB必须要腰围48MHz,如果不是可以微调前方的选项.
    (4) HCLK可以选择与USB相同,或者更高也可以.
    在这里插入图片描述

  7. Project Manager设定

    Project设定,
    填写Project Name和存储位置,IDE选择MDK-ARM, 修改Linker Setting的Heap Size 为0x1000.
    在这里插入图片描述
    在这里插入图片描述

Keil 代码修改:

Main.c

作如下修改:

  1. 添加宏定义
//UART Define
#define UART1_RX_BUFFER_SIZE    128
#define UART1_TX_BUFFER_SIZE    128
#define USB_RX_BUFFER_SIZE      63

uint8_t g_USART1_RX_Buffer
  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值