在使用串口DMA试验过程中,遇到了一些问题,通过试验找到了问题所在,也对DMA的应用有了新的认识,仅以此分享给大家,不足之处请多多指教。
DMA初始化
// 串口对应的DMA请求通道
#define USART_TX_DMA_CHANNEL DMA1_Channel4
#define USART_TX_DMA_IRQ DMA1_Channel4_IRQn
#define USART_TX_DMA_IRQHandler DMA1_Channel4_IRQHandler
// 外设寄存器地址
#define USART_DR_ADDRESS (USART1_BASE+0x04)
// 一次发送的数据量
#define SENDBUFF_SIZE 250
/**
* @brief USARTx TX DMA 配置,内存到外设(USART1->DR)
* @param 无
* @retval 无
*/
void USARTx_DMA_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
DMA_DeInit(USART_TX_DMA_CHANNEL);
// 开启DMA时钟
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
// 设置DMA源地址:串口数据寄存器地址*/
DMA_InitStructure.DMA_PeripheralBaseAddr = US