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

查看: 9448|回复: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版