OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7147|回复: 0

DMA中断的问题

[复制链接]

26

主题

34

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2012-4-20
在线时间
13 小时
发表于 2012-12-6 20:09:25 | 显示全部楼层 |阅读模式

问题一:最近做一个项目遇到这样一个问题,ADC采集数据用DMA完成,程序已经打开DMA中断使能。问题是,当DMA中断的时候,我首先执行ADC_DMACmd(ADC1, DISABLE);(关闭ADC的DMA),但是程序在执行该指令的时候,我发现采集的数据还发生变化,不知道是否正常,有其他解决的办法嘛?

问题二:TIM_ARRPreloadConfig(TIM3, ENABLE);定时器自动重装使能,这条语句什么时候需要这一条?一般定时器是否自带自动重装功能?

例如:利用定时器产生一个PWM ,BufferSize=64

 IM_TimeBaseStructure.TIM_Period = BufferSize-1;
 TIM_TimeBaseStructure.TIM_Prescaler = 0;
 TIM_TimeBaseStructure.TIM_ClockDivision = 0;
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

 /* TIM2 channel2 configuration in PWM mode */
 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;               
 TIM_OCInitStructure.TIM_Pulse = 10;
 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low ;        
 TIM_OC2Init(TIM2, &TIM_OCInitStructure);

 TIM_CtrlPWMOutputs(TIM2, ENABLE);
   
 TIM_Cmd(TIM2, ENABLE);

我想问一下当定时器TIM2计数值达到BufferSize时,是否自动将该值重装,是否需要TIM_ARRPreloadConfig(TIM2, ENABLE)这一条语句?

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 04:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表