请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
查看: 421|回复: 2
收起左侧

[有问必答] F407的全局变量是如何影响UART DMA的

[复制链接]

57

主题

88

回帖

259

积分

高级会员

积分
259
发表于 2023-5-13 15:10:37 | 显示全部楼层 |阅读模式
在一个project中,会启动UART2的DMA发送功能,开始时,UART2能正常输出,但是程序又增加了一些内容后,UART2的DMA就不会再输出了,通过跟踪发现,这个异常居然同一个不相干的全局变量有关系,这个变量在一个每1m循环1次的函数中被简单的赋值,这个赋值同UART2及DMA没有任何关系,函数如下:



1、影响UART2工作的方案

UINT16 bLastEMGsta = XFALSE;
void MonitorEMGup()
{
        UINT16 bCurEMGsta=0;
        bLastEMGsta = bCurEMGsta;
        return;
}


查看map文件,bLastEMGsta 分配空间为:0x200002b0   Data           2  zg_taskinput.o(.data)


2、不影响UART2工作的方案

CCMRAM UINT16 bLastEMGsta = XFALSE;   //指定分配到0x10000000区
void MonitorEMGup()
{
        UINT16 bCurEMGsta=0;
        bLastEMGsta = bCurEMGsta;
        return;
}

查看map文件,bLastEMGsta 分配空间为: 0x10000060   Data           2  zg_taskinput.o(ccmram)


使用的是uVision V5.25.2.0编译环境



花费了很长时间才跟踪出问题所在,但是实在不知道是什么原因,请大侠们指教
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105917
QQ
发表于 2023-5-13 18:32:50 | 显示全部楼层
仅这些还不能肯定就是这个变量造成的,看看DMA和串口的配置时候存在未初始化的结构体成员,这些未初始化的会是个随机值。
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2023-5-15 08:46:57 | 显示全部楼层
谢谢版主,我们核对一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-3-29 08:31 , Processed in 0.153744 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表