STM32的DMA配置都正确,但是无法发送数据

1 篇文章 0 订阅

这几天从寄存器转战到HAL库,使能串口DMA时惊奇的发现,我的配置全部都正确,但是开始传输数据时,得到的永远都是一个错误传输位,百度无果,最后在Google找到了这么一篇文章,STM32H743Nucleo ADC使用DMA配置无法读取数据的问题及解决,最终得到的问题所在是这样问题
真的是怎么都没想到会这样,最后的解决方法呢也很简单,MDK中勾选这个解决办法
或者更简单的呢,把储存器地址强行换到0X24000000开始,像这样

uint8_t sendbuf[10] __attribute__((section(".ARM.__at_0x24000000")));
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: STM32F103是一款常用的32位单片机,它内置了多个DMA通道,可以实现高效的数据传输。在配置STM32F103的DMA数据发送时,需要按照以下步骤进行: 1. 开启DMA时钟,打开DMA传输通道的时钟使能。 2. 配置DMA通道控制寄存器,设置DMA传输方向(内存到外设或者外设到内存),传输数据大小,传输模式(单次或循环),传输优先级等。 3. 配置DMA通道数据缓存区,指定数据源和目的地址。 4. 配置外设相关寄存器,如USART的发送数据寄存器或SPI的发送缓存寄存器等。 5. 启动DMA传输,通过设置相关位来启动DMA传输并等待传输成。 需要注意的是,在设置DMA传输规则时,应该根据具体的外设接口和数据模式进行设置,以充分发挥STM32F103的DMA传输优势。 总之,STM32F103的DMA传输可以大大提高数据传输的效率和性能,对于高速数据传输、数据采集和通信应用具有重要意义。 ### 回答2: STM32F103DMA是一种微控制器,可以使用DMA功能进行数据传输。在配置STM32F103DMA发送时,需要设置以下几个参数: 1. 设置DMA通道:首先要设置哪个DMA通道将要被使用。这需要根据不同的需求来选择。 2. 设置数据大小:接下来设置数据的大小,这指的是传输的数据大小。 3. 设置源地址和目标地址:接着需要设置源地址和目标地址。这两个地址用来指定数据的储存位置。源地址指的是需要传输的数据的地址,目标地址指的是需要把数据传输到哪个位置。 4. 设置传输模式:传输模式用来指定传输的方式。有三种传输方式,分别为:普通传输模式、循环传输模式、单次传输模式。 5. 设置传输方向:传输方向指的是数据的传输方向,有两种方向:从内存到外设,从外设到内存。 配置成后,就可以开始传输数据了。需要注意的是,在传输过程中需要根据需要进行数据交换。这就意味着在数据传输结束后需要对数据进行清理和处理,以确保数据的正确性。同时,为了确保传输的速度,还需要选择合适的DMA周期,使其与传输数据的速率相匹配。在数据传输过程中,若出现问题,可以参考错误代码进行排除。 ### 回答3: STM32F103DMA是一款基于ARM Cortex-M3架构的微控制器,具备DMA传输功能。以下是stm32f103DMA发送配置的方法: 首先,需要在STM32的寄存器中设置DMA传输的参数。在初始化时,需要指定发送数据的长度、目标地址、数据源地址、传输模式等参数。然后使能DMA传输,并开启发送模式。此外,还需要对每个DMA通道进行配置,包括通道优先级、传输周期、循环模式等。 在具体实现中,可以使用示波器和串口助手等工具来检测数据的传输情况。在发送前,需要检查发送缓冲区的数据是否正确并进行清空;在接收后,需要对接收到的数据进行解析和处理。同时,还要注意数据长度严格的控制,以确保传输的正确性和稳定性。 总之,STM32F103DMA发送配置需要细心和谨慎,需要充分理解掌握参数设置、DMA通道配置、数据处理等方面的技术知识,才能保证数据的安全性和稳定性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值