大学生
最后登录1970-1-1
在线时间 小时
注册时间2016-7-16
|
楼主 |
发表于 2016-9-24 19:47:44
|
显示全部楼层
好的,待会我试一下,
还有一个程序的问题,火哥
- static void GPS_DMA_Config(void)
- {
- DMA_InitTypeDef DMA_InitStructure;
-
- /*开启DMA时钟*/
- RCC_AHBPeriphClockCmd(GPS_DMA_CLK, ENABLE);
- /*设置DMA源:串口数据寄存器地址*/
- DMA_InitStructure.DMA_PeripheralBaseAddr = GPS_DATA_ADDR;
- /*内存地址(要传输的变量的指针)*/
- DMA_InitStructure.DMA_MemoryBaseAddr = (u32)gps_rbuff;
- /*方向:从内存到外设*/
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
- /*传输大小DMA_BufferSize=SENDBUFF_SIZE*/
- DMA_InitStructure.DMA_BufferSize = GPS_RBUFF_SIZE;
- /*外设地址不增*/
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
- /*内存地址自增*/
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
- /*外设数据单位*/
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
- /*内存数据单位 8bit*/
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
- /*DMA模式:不断循环*/
- DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
- /*优先级:中*/
- DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
- /*禁止内存到内存的传输 */
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
- /*配置DMA的通道*/
- DMA_Init(GPS_DMA_CHANNEL, &DMA_InitStructure);
-
- GPS_Interrupt_Config();
-
- DMA_ITConfig(GPS_DMA_CHANNEL,DMA_IT_HT|DMA_IT_TC,ENABLE); //配置DMA发送完成后产生中断
- /*使能DMA*/
- DMA_Cmd (GPS_DMA_CHANNEL,ENABLE);
-
- /* 配置串口 向 DMA发出 RX请求 */
- USART_DMACmd(GPS_USART, USART_DMAReq_Rx, ENABLE);
复制代码
最后一句程序,为什么要发送RX的请求呢?DMA的方向不应该是从USART2的数据寄存器到存储器么,USART2为什么要用使能接收的DMA模式呢 |
|