之前用过串口的dma发送,底层收发写好之后一直没有再接触。
今天换了个芯片,想着重新写一遍串口的dma发送,按正常流程配置了io口,串口,dma,在main函数里简单写一个发送做测试,结果怎么也发不出来。
检查后发现是自己大意了,因为初始化函数是分开写的,包括gpio初始化,串口初始化,dma初始化,但我仅仅在gpio初始化中使能了rcc时钟,后面两个初始化忘记了--!
代码就不贴了,切记使能rcc时钟,切记使能rcc时钟,切记使能rcc时钟!
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);