嵌入式系统复习2(3)

更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
以下是配置DMA1通道4实现“存储器→USART1”传输的初始化代码,将数组tx_buffer的数据通过USART1发送,传输长度为10字节,请补充空白: #define tx_buffer_SIZE 10 uint8_t tx_buffer[tx_buffer_SIZE] = "Hello World!"; void DMA_USART1_Init(void) { DMA_InitTypeDef DMA_InitStructure; USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; // 开启USART1、GPIOA、DMA1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_DMA1, ENABLE); // 配置USART1 GPIOA的TX引脚,PA9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置USART1参数 USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); // 配置DMA1通道4:存储器→USART1 DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)USART1_BASE; // USART1的DR寄存器地址 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)tx_buffer; // 数组tx_buffer的地址 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; // 传输方向:存储器→外设 DMA_InitStructure.DMA_BufferSize = tx_buffer_SIZE; // 传输长度10字节 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // 外设地址不递增 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; // 存储器地址递增 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; // 外设数据位宽8位 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; // 存储器数据位宽8位 DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; // 普通模式,传输完10字节后停止 DMA_Init(DMA1_Channel4, &DMA_InitStructure); // 使能USART1和DMA1 USART_Cmd(USART1, ENABLE); DMA_Cmd(DMA1_Channel4, ENABLE); // 启动DMA传输 DMA_StartChannelCmd(DMA1_Channel4, ENABLE); }
1 2