新唐m481配置dma连续发送
时间: 2023-07-04 12:04:37 浏览: 220
对于新唐M481来说,配置DMA连续发送需要以下步骤:
1. 配置DMA通道:首先需要配置DMA通道,包括传输方向(发送)和传输数据的大小。
2. 配置DMA传输流控制器:设置传输流控制器,包括传输流控制器的模式和触发源。
3. 配置DMA传输请求源:设置DMA传输请求源,可以是定时器、外部中断或其他事件。
4. 配置DMA传输完成中断:设置DMA传输完成后的中断处理函数。
5. 启动DMA传输:使用DMA传输指令启动DMA传输。
下面是一个示例代码,展示如何配置DMA连续发送:
```c
#include "stm32f4xx.h"
uint8_t data_buffer[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
void DMA1_Stream6_IRQHandler(void)
{
if (DMA_GetITStatus(DMA1_Stream6, DMA_IT_TCIF6))
{
DMA_ClearITPendingBit(DMA1_Stream6, DMA_IT_TCIF6);
// DMA transfer complete
}
}
void DMA_Init(void)
{
DMA_InitTypeDef DMA_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
DMA_InitStructure.DMA_Channel = DMA_Channel_1;
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(USART1->DR);
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)data_buffer;
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
DMA_InitStructure.DMA_BufferSize = sizeof(data_buffer);
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
DMA_Init(DMA1_Stream6, &DMA_InitStructure);
DMA_ITConfig(DMA1_Stream6, DMA_IT_TC, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream6_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
DMA_Cmd(DMA1_Stream6, ENABLE);
}
int main(void)
{
USART_Init();
DMA_Init();
while (1)
{
// do something
}
}
```
在上面的示例代码中,配置了DMA通道1和DMA传输流控制器为内存到外设传输模式。配置了DMA传输请求源为USART1,并在DMA传输完成后触发一个中断处理函数。最后,启动DMA传输。
阅读全文