GD32F130G6U6 USART DMA REMAP

[复制链接]
299|5
 楼主 | 2017-10-23 18:25 | 显示全部楼层 |阅读模式
芯片是gd32f130g6u6,DMA CH1, CH2分配给了SPI的DMA使用,串口接的PB6,PB7,为USART0,由于USART0的收发DMA默认也是DMA CH1, CH2,所以希望将DMA重新映射下,按照数据手册上的说法,当我把SYSCFG_R1中的对应重映射位置1,DMA请求就可以被重映射到这个通道,但是当我执行
*((uint32_t *)0x40010000) = 0x0000060;
时,发现寄存器的值无法被修改,用JLink调试,在线修改寄存器位也没有用,而串口的DMA也一直没有被重映射成功...
即使这样做:
do {
  /* remap DEBUG_USART TX RX Channel */
  *((uint32_t *)0x40010000) = 0x0000060;
  __nop(); __nop(); __nop();  __nop(); __nop();
} while(*((uint32_t *)0x40010000) != 0x0000060);
求教各位大神!
| 2017-10-23 22:43 | 显示全部楼层
看来这个重映射的是个头疼的问题的
| 2017-10-24 18:57 | 显示全部楼层
看来DMA映射的还是很头疼的
| 2017-10-25 09:40 | 显示全部楼层
关于DMA映射,可以使用库函数:
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0TX); //remap USART0 Tx DMA request to channel2(default channel0).
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0RX); //remap USART0 Rx DMA request to channel3(default channel1)
如有问题可以找我沟通375880228@qq.com
 楼主 | 2017-12-26 11:11 | 显示全部楼层
Houtz 发表于 2017-10-25 09:40
关于DMA映射,可以使用库函数:
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0TX); //remap USART0 Tx  ...

试过了,使用库函数的结果是一样的
| 2017-12-29 22:14 | 显示全部楼层
DMA的映射有这么复杂么/
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册 手机登录
高级模式

论坛热帖

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