问答

汇集网友智慧,解决技术难题

hakenkreuz

TA的家园币:12  

  • GD32E503关于使用DMA+TIMER发送PWM的问题

    本帖最后由sin1111yi于2023-2-1317:07编辑最近在用GD32E503玩一些小东西,设计的时候把PA0用作了TIMER1_CH0,PA1用作TIMER1_CH1,如下所示PA1因为只需要输出一个PWM波即可,所以没有用DMA,PA0上的TIMER1_CH0根据官方的文档的描述应该是DMA0_CH4但是按照DMA0_CH4写完代码,发现还是没有输出,故去查阅了官方的例子中的TIMER/TIMER0_dma得到了如下的配置代码/*!\briefconfiguretheGPIOports\paramnone\param[out]none\retvalnone*/voidgpio_config(void){rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_AF);/*configurePA8(TIMER0CH0)asalternatefunction*/gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_8);}/*!\briefconfiguretheDMAperipheral\paramnone\param[out]none\retvalnone*/voiddma_config(void){dma_parameter_structdma_init_struct;/*enableDMAclock*/rcu_periph_clock_enable(RCU_DMA0);/*initializeDMAchannel5*/dma_deinit(DMA0,DMA_CH4);/*DMAchannel5initialize*/dma_init_struct.periph_addr=(uint32_t)TIMER0_CH0CV;dma_init_struct.periph_inc=DMA_PERIPH_INCREASE_DISABLE;dma_init_struct.memory_addr=(uint32_t)buffer;dma_init_struct.memory_inc=DMA_MEMORY_INCREASE_ENABLE;dma_init_struct.periph_width=DMA_PERIPHERAL_WIDTH_16BIT;dma_init_struct.memory_width=DMA_MEMORY_WIDTH_16BIT;dma_init_struct.direction=DMA_MEMORY_TO_PERIPHERAL;dma_init_struct.number=3;dma_init_struct.priority=DMA_PRIORITY_ULTRA_HIGH;dma_init(DMA0,DMA_CH4,&dma_init_struct);dma_circulation_enable(DMA0,DMA_CH4);/*enableDMAchannel5*/dma_channel_enable(DMA0,DMA_CH4);}/*!\briefconfiguretheTIMERperipheral\paramnone\param[out]none\retvalnone*/voidtimer_config(void){/*TIMER0DMATransferexample-------------------------------------------------TIMER

    嵌入式 单片机

    2023-02-13 4