|
求助一个很奇怪的问题: 用STM32H7A3ZIT6的串口的DMA模式发送数据时,如果发送缓冲是常量,则可以正常发送;如果是变量,则无法发送,返回值是HAL_OK,但是电脑端没有收到任何数据。 HAL_UART_Transmit_DMA(&huart2, "Hello", 5); //成功发送 HAL_UART_Transmit_DMA(&huart2, buffer, 5); //无法发送 怀疑是MPU导致DMA无法访问内存,但配置全部允许访问后仍有这个问题
求助,真的不知道是哪里出问题了😕 |
STM32H743IIT6驱动外扩SDRAM芯片热启动能成功,冷启动失败
STM32H743IIT6驱动RGB液晶屏显示红,绿,蓝三色显示都偏暗
STM32H757 程序经过SFI加密后,下载到FLASH里的程序是密文吗?
如何解决STM32H7在3V供电下内部LDO启动裕量不足的问题?
为什么STM32H7的DMA第一次启动延时较长?
STM32H7电源问题
STM32 用主从定时器方式实现DSP QEP模块的QCTMR功能,异常
有关STM32H743ZGT6 驱动RTL8201F-VB芯片驱动的问题,有奖寻求帮助
STM32H725内部FLASH读写问题
我在使用STM32H747IGT6的时候,遇到了一个问题;上电前并未短路,上电后电流跳跃至1.6A,且不断增大至1.9A,断开电源后芯片不短路,请问是什么原因?
微信公众号
手机版
已经解决了。我的缓冲区地址0x20000000,在DTCM RAM区,DMA无法访问。把缓冲区定义到0x24000000就可以了
/ STM32H7A3ZITxQ_FLASH.ld /
/ main.c /
uint8_t buffer[1024] = "Hello" __attribute__((section(".my_section")));buffer必须是一个数组:uint8_t buffer[]="Hello";
buffer我定义的是全局变量
char buffer[1024] = "Hello";数组应该这样赋值吧,需要字符串结束符:
uint8_t buffer[] = "Hello\r\n";
HAL_UART_Transmit_DMA(&huart2, buffer, 7);
这个是编译器自动帮你安排的。
你可以将你的buffer指定其存储空间到DTCM区域试试,很快可以验证。
你现在怀疑MPU配置方面的原因,你可以将DCache关闭后进行验证,如果问题依旧说明
就不是MPU方面的原因。