ST意法半导体
直播中

郭中

10年用户 1027经验值
擅长:存储技术
私信 关注
[问答]

CubeMX生成的C代码发出USART启动调用怎么办?

MX 生成的 C 代码在 DMA 启动调用之前发出 USART 启动调用。我的代码只是回显 USART 收到的任何文本。不幸的是,回显数据(正确长度)全为零。UART 读取缓冲区初始化为零。

只需在 USART 启动调用之前放置 DMA 启动调用即可解决此问题!

这是怎么回事?看起来 DMA 代码打乱了 USART 代码设置的某些内容,但是什么?

回帖(1)

韩刚龙

2022-12-27 09:51:06
> 根据您的回答,我假设在某些情况下,例如这个,启蒙的顺序是至关重要的。

我认为主要是这个 (DMA)。但可能还有其他人。

> 你能告诉我为什么会这样吗

UART 初始化修改 DMA 寄存器,这需要 DMA 时钟处于活动状态。时钟在 DMA 初始化中被激活。

对于它的价值,CubeMX 为我在一个新项目上生成了正确的顺序。可能您使用的不是最新版本,或者发生了其他问题。


  •   /* Initialize all configured peripherals */
  •   MX_GPIO_Init();
  •   MX_DMA_Init();
  •   MX_ETH_Init();
  •   MX_USART3_UART_Init();
  •   MX_USB_OTG_HS_USB_Init();
  •   /* USER CODE BEGIN 2 */

举报

更多回帖

发帖
×
20
完善资料,
赚取积分