野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 871|回复: 2

DMA—存储器到外设模式的代码问题

[复制链接]
发表于 2024-1-17 22:45:51 | 显示全部楼层 |阅读模式
我用cubemx生成了代码,然后模仿着教程例程来修改,例程目录为:1-程序源码_教程文档/2-[野火]《STM32 HAL库开发实战指南》/1-例程-F103VE指南者/21-DMA—直接存储区访问/DMA—存储器到外设模式。


后来出现了一个bug,我的代码始终卡在UART1初始化里,经过调试才发现是定义的uint8_t SendBuff[SENDBUFF_SIZE]的问题,虽然找到了问题,但是想不清楚导致问题的原因,发出来向大家请教请教。

首先是在main.c中,如果把SendBuff设为全局变量,SENDBUFF_SIZE=1000,代码就不会出现问题,代码部分截图如图一。

如果把SendBuff设为在main函数里定义,SENDBUFF_SIZE=1000,代码就会出现问题,在USART1_UART_INIT()卡住最后促发中断HardFault_Handler(),代码部分截图如图二。

如果把SendBuff设为在main函数里定义,SENDBUFF_SIZE=500,代码不会出现问题。

大家也可以看看我打包好的程序。

图一

图一

图二

图二

08-DMA-MEM2PERI.zip

7.86 MB, 下载次数: 12

代码

回复

使用道具 举报

发表于 2024-1-23 09:11:44 | 显示全部楼层

数组太大定义在局部,栈不够了,改大就行


野火论坛202401230910229047..png

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-24 00:04:20 | 显示全部楼层
WishWish 发表于 2024-1-23 09:11
数组太大定义在局部,栈不够了,改大就行

谢谢!!!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 07:28 , Processed in 0.119234 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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