你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 9445|回复: 3

stm32f103zet6使用adc3通过dma2_5,为什么进不了dma2_5中断。求高人指点

[复制链接]

2

主题

11

回帖

0

蝴蝶豆

新手上路

最后登录
2018-5-31
发表于 2011-10-26 11:15:47 | 显示全部楼层 |阅读模式
#define ADC3_DR_Address    ((u32)0x40013C4C) 
 
 
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式
 ADC_InitStructure.ADC_ScanConvMode = ENABLE; //使能扫描
 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//ADC转换工作在单次模式
 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;//定时器2的捕获比较2为转换外部触发
 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐
 ADC_InitStructure.ADC_NbrOfChannel = 10;//转换通道为通道1
 ADC_Init(ADC3, &ADC_InitStructure); //初始化ADC
 
 ADC_RegularChannelConfig(ADC3, ADC_Channel_1, 1,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_12, 2,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_8, 3,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_7, 4,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_11, 5,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_10, 6,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_13, 7,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_5, 8,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_6, 9,  ADC_SampleTime_28Cycles5 );
 ADC_RegularChannelConfig(ADC3, ADC_Channel_4, 10,  ADC_SampleTime_28Cycles5 );
 ADC_DMACmd(ADC3, ENABLE);//使能ADC3模块DMA
 ADC_Cmd(ADC3, ENABLE);//使能ADC1
 ADC_ResetCalibration(ADC3); //重置ADC1校准寄存器
  while(ADC_GetResetCalibrationStatus(ADC3));//等待ADC1校准重置完成
 ADC_StartCalibration(ADC3);//开始ADC1校准
 while(ADC_GetCalibrationStatus(ADC3));//等待ADC1校准完成
 ADC_ExternalTrigConvCmd(ADC3, ENABLE); ////设置外部事件为TIM2_CC2
 
 
 DMA_DeInit(DMA2_Channel5);//复位DMA通道5
 DMA_InitStructure.DMA_PeripheralBaseAddr = ADC3_DR_Address;
 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC3ConvertedValue;
 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
 DMA_InitStructure.DMA_BufferSize = 10;
 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//当前存储器地址不变
 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//定义外设数据宽度16位
 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //定义存储器数据宽度16位
 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//DMA通道操作模式位环形缓冲模式
 DMA_InitStructure.DMA_Priority = DMA_Priority_High;//DMA通道优先级高
 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//禁止DMA通道存储器到存储器传输
 DMA_Init(DMA2_Channel5, &DMA_InitStructure);
  DMA_Cmd(DMA2_Channel5, ENABLE); //使能DMA通道5

 DMA_ITConfig(DMA2_Channel5, DMA_IT_TC, ENABLE);
 
void DMA2_Channel4_5_IRQHandler(void)
{
   DMA_ClearFlag(DMA2_FLAG_GL5 );
}
 
 
void Interrupts_Config(void)
{
 NVIC_InitTypeDef NVIC_InitStructure; 
 
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
 
    NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
 NVIC_InitStructure.NVIC_IRQChannel = DMA2_Channel4_5_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
  
}
回复

使用道具 举报

2

主题

11

回帖

0

蝴蝶豆

新手上路

最后登录
2018-5-31
 楼主| 发表于 2011-10-26 12:24:38 | 显示全部楼层

RE:stm32f103zet6使用adc3通过dma2_5,为什么进不了dma2_5中断。求高人指点

自己解决了
ad3 启动转换条件中没有ADC_ExternalTrigConv_T2_CC2
改为ADC_ExternalTrigConv_T2_CC3就行了
回复 支持 反对

使用道具 举报

3

主题

185

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-10-26 13:54:58 | 显示全部楼层

RE:stm32f103zet6使用adc3通过dma2_5,为什么进不了dma2_5中断。求高人指点

好。
回复 支持 反对

使用道具 举报

0

主题

29

回帖

0

蝴蝶豆

初级会员

最后登录
2020-5-12
发表于 2019-12-17 23:15:07 | 显示全部楼层
谢谢,前辈的分享我也遇到这个问题了。看一了你的帖子才,恍然大悟!!!!!
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版