中级会员
 
- 积分
- 493
- 金钱
- 493
- 注册时间
- 2011-9-6
- 在线时间
- 3 小时
|

楼主 |
发表于 2011-10-14 10:55:47
|
显示全部楼层
#include "dma.h"
#include "sys.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//Mini STM32开发板
//DMA 驱动代码
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2010/6/7
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 正点原子 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
u16 DMA1_MEM_LEN;//保存DMA每次数据传送的长度
void DMA1_Channel5_IRQHandler(void){
if(DMA1->ISR&(1<<17)){ //通道5传输完成
DMA1->IFCR|=1<<17; //清楚DMA1 通道5传输完成标志
}
}
//DMA1的各通道配置
//这里的传输形式是固定的,这点要根据不同的情况来修改
//从存储器->外设模式/8位数据宽度/存储器增量模式
//DMA_CHx MA通道CHx
//cpar:外设地址
//cmar:存储器地址
//cndtr:数据传输量
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
RCC->AHBENR|=1<<0;//开启DMA1时钟
__nop();
__nop();
__nop();
DMA_CHx->CPAR=(u32)cpar; //DMA1 外设地址
DMA_CHx->CMAR=(u32)cmar; //DMA1,存储器地址
DMA1_MEM_LEN=cndtr; //保存DMA传输数据量
DMA_CHx->CNDTR=cndtr; //DMA1,传输数据量
DMA_CHx->CCR=0X00000000;//复位
DMA_CHx->CCR|=1<<1; //允许TC中断
DMA_CHx->CCR|=0<<4; //从外设读
DMA_CHx->CCR|=0<<5; //普通模式
DMA_CHx->CCR|=0<<6; //外设地址非增量模式
DMA_CHx->CCR|=1<<7; //存储器增量模式
DMA_CHx->CCR|=0<<8; //外设数据宽度为8位
DMA_CHx->CCR|=0<<10; //存储器数据宽度8位
DMA_CHx->CCR|=1<<12; //中优先级
DMA_CHx->CCR|=0<<14; //非存储器到存储器模式
MY_NVIC_Init(0,1,DMA1_Channel5_IRQHandler,2); ----->出错在这里,很奇快为什么USART的中断优先级也是这样设置的 编译就没问题
}
//开启一次DMA传输
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{
DMA_CHx->CCR&=~(1<<0); //关闭DMA传输
DMA_CHx->CNDTR=DMA1_MEM_LEN; //DMA1,传输数据量
DMA_CHx->CCR|=1<<0; //开启DMA传输
}
编译结果如下:
..\HARDWARE\DMA\dma.c(51): error: #167: argument of type "void (*)(void)" is incompatible with parameter of type "u8"
void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group); 中断优先级设置的原函数定义
如果不能 MY_NVIC_Init(0,1,DMA1_Channel5_IRQHandler,2); 设置,那么串口中断优先级设置 MY_NVIC_Init(3,3,USART1_IRQChannel,2); 外部中断优先级设置 MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2); 编译没有出现数据类型不匹配的. 头疼啊.......... |
|