DMA配置mormal模式只能进行一次数据的发送,circular模式可以持续发送相同的数据。但是要多次发送不同的数据,normal模式下需要进行一下操作

DMA1_Channel4->CCR&=~(1<<0);//关闭DMA1的通道四
DMA1_Channel4->CNDTR=9; //设置DMA数据计数器的值
DMA1_Channel4->CCR|=1<<0; //使能DMA1的通道四

上面是使用了直接操作寄存器的方式实现了需求
下面的函数源码最终也是分别对应于上面的代码,但是并没有效果,不知道是什么原因。

DMA_Cmd(DMA1_Channel4,DISABLE);
DMA_SetCurrDataCounter(DMA1_Channel4,9);

之所以没有效果,应该是下面写了DISABLE,粗心没注意,应该是ENABLE,感谢网友提醒.
//DMA_Cmd(DMA1_Channel4,DISABLE);

DMA_Cmd(DMA1_Channel4,ENABLE);