调试STM32F103RCT6的DMA发送

        调试STM32的DMA接收和发送时,遇到了一个问题,就是只能发送第一次,之后再次启动DMA发送,就发不出去了,接收是正常的,能够重新启动DMA接收。
        之后灵光一现,可能是启动下次发送时,在写一些寄存器时要关闭DMA,我也不知道这样的灵光怎么来的,也许是看过一些文字?果然在配置寄存器CNDTR(欲发送的字节数)之前关闭DMA,发送就正常了。
        通过查看STM32 的寄存器手册,果然有这样一段描述:“当通道配置为非循环模式时,传输结束后(即传输计数变为0)将不再产生DMA操作。要开始新的DMA传输,需要在关闭DMA通道的情况下,在DMA_CNDTRx寄存器中重新写入传输数目。”
        从这次调试得出的经验是,以后在调试某个模块之前需要研读STM32的参考手册,不能总寄希望于灵光一现,不能总是寄希望于网络上的例程,不然在遇到问题时,会抓瞎,茫然失措,甚至怀疑人生。参考网上的例程,可以加快开发速度和学习进度,但是忽略参考手册,遇到问题时就傻了。STM32参考手册DMA部分也没有太多,13页。

        谨记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值