OpenEdv-开源电子网

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

TIM中断里使能AD,但AD的使能会导致TIM的输出出现问题!!!

[复制链接]

42

主题

141

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2015-5-26
在线时间
49 小时
发表于 2016-8-4 00:19:46 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 林春霞 于 2016-8-4 00:21 编辑

stm32f103rc的定时器3跟AD模块不能同时使用,不然会出现问题。我用定时器3产生3路pwm波驱动逆变桥H-pwm-L-on的方式。
(1)然后将定时器3作为主机,定时器4作为从机,工作在主从门控方式下。当TIM3输出的PWM为低电平时,打开TIM4,并利用TIM4触发AD转换。
(2)为了指示程序运行。我在AD中断程序里面写了一个 LED1on;delay_us(2); LED1off;,
(3)这样一来由tim3产生pwm斩波并在pwm波为低电平时候启动tim4,tim4的频率要比tim3要高,tim4的中断函数里面就启动AD转换。
        也就是在TIM4中断里面加了ADC_SoftwareStartConvCmd(ADC2, ENABLE);因为AD工作在单次转换模式,所以每一个ENABLE就相当于触发一次。

  接上分析仪,观察LED1的引脚是否有小脉冲就可以知道程序运行情况。一切都好像挺自然的,我自己也觉得没什么问题,但是现在发现一使能AD时候,TIM3的引脚输出就有问题了,请见图,不知道是不是AD跟TIM3冲突了,他俩确实在引脚上有复用,但我重映射TIM3之后,还是老样子。
————————————————————————————————————————————————————————
A图是没使能AD的时候,B图是A图的放大,一切都跟设想的一样。但是C图就是使能了AD之后的。我在上面说了,AD中断函数里面是加了个 LEDon; delay(); LEDoff 的,也就是对应的引脚会产生一个窄脉冲,最后窄脉也观察到了,可是,TIM3波形的输出却跟A和B图不一样了,我什么都没做,只是使能了AD。上述情况实在不知道怎么解决,已经困惑挺久了。麻烦知道的朋友提供点思路吧,谢谢

a.png
b.png
c.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11544
金钱
11544
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-8-4 09:03:23 | 显示全部楼层

配置完成后,重新核对一下相关端口的配置寄存器,
也许后面的程序把前面的配置破坏了。

回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-8-4 09:37:30 | 显示全部楼层
ADC_SoftwareStartConvCmd(ADC2, ENABLE);
这是开始转换而已,AD是使能配置什么的,是你早就准备好的。你看看不加这句,波形对么。我感觉问题不是这一句
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 07:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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