767598314 发表于 2013-8-16 10:18
谢谢你的分享,还有一点我不太明白:我的硬件是stm32+cc1101无线模块,cc1101向stm32发送数据是通过外部 ...
你要先看清楚你用的SPI是SPI1还是SPI2,如果SPI1的话是要用DMA1的通道2和DMA1的通道3。
那个DMA通道貌似没必要关闭吧,计数到0的话就停了。建议LZ写一个可以控制发送数量的开启DMA函数。
举个例子:
void DMA_SEND( u16 num )
{
DMA1_Channel3->CCR &= ~(1<<0); //关闭DMA通道3
DMA1_Channel3->CNDTR = num ; //重设传输长度
DMA1_Channel3->CCR |= 1<<0 ; //开启DMA通道3
} |