[mw_shl_code=applescript,true]int main(void)
{
MYDMA_Config(DMA1_Channel7,(u32)&USART2->DR,(u32)SEND_BUF,256);//DMA1通道7,外设为串口2,存储器为SEND_BUF,长256.
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
while(1)
{
USART_DMACmd(USART2,USART_DMAReq_Tx,ENABLE); //使能串口2的DMA发送
MYDMA_Enable(DMA1_Channel7);//开始一次DMA传输!
delay_ms(1500);
LED1=!LED1;
}
}
//上边是原来的固定长度代码。
//现在改成不固定长度,是不是每次都要重新初始化一下:MYDMA_Config(DMA1_Channel7,(u32)&USART2->DR,(u32)SEND_BUF,长度);//DMA1通道7,外设为串口2,存储器为SEND_BUF
//还是不重新初始化,直接改下边的数据,把下边函数的DMA1_MEM_LEN的数值改掉
//开启一次DMA传输
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{
DMA_Cmd(DMA_CHx, DISABLE ); //关闭USART1 TX DMA1 所指示的通道
DMA_SetCurrDataCounter(DMA_CHx,DMA1_MEM_LEN);//DMA通道的DMA缓存的大小
DMA_Cmd(DMA_CHx, ENABLE); //使能USART1 TX DMA1 所指示的通道
}
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>