DMA每次发送的数据长度不一样,应该怎么写

2019-07-21 07:05发布

[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]


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。