求助,PWM和ADC中断转换,PWM不正常

2019-07-21 00:21发布

       我刚学STM32,板子是F103mini,这个困扰我好几天了,麻烦解答一下,感激不尽!!!

       PWM、ADC单独使用都没问题。我是用定时器1输出PWM来控制舵机,ADC转换传感器的模拟量(ADC中断读取,禁止扫描模式,连续转换,ADC时钟9MHZ)。通过ADC转换后的数值来判断情况,再调PWM占空比。但两个一起用就不行,原本舵机我让它0~180度来回转动,加了ADC初始化后,舵机就一卡一卡的。用示波器看PWM的波形,它变化幅度、频率都不稳定。(是不是我的ADC采样时间有问题)

      同样PWM加上个基本定时器中断之后(500ms输出一次串口,输出操作是写在主函数里的),PWM和串口都用不了,单独使用没问题。基本定时器初始化用了就立马不行。是定时器中断太频繁了影响PWM吗?还是PWM的定时器初始化和基本定时器初始化哪里冲突了?刚学32,好多不懂,求解答!谢谢了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
ExtremeHoly
1楼-- · 2019-07-21 23:33
edmund1234 发表于 2019-6-1 20:01
uint16_t        PwmC=17;

    原本用网上找的  for延时  或者  原子哥例程里拿的delay,都和 定时器中断 串口输出 有冲突。现在PWM和串口输出延时都用定时器中断,好多了。
     不过ADC用了还是不行,用了ADC之后,转动速度快了好多(像是直接从 0度占空比 到 180度占空比 转动)。转动范围也逐渐减小,之后又逐渐增大,就这样循环增大减小。
edmund1234
2楼-- · 2019-07-22 01:50
ExtremeHoly 发表于 2019-6-2 08:40
原本用网上找的  for延时  或者  原子哥例程里拿的delay,都和 定时器中断 串口输出 有冲突。现在PWM ...

什么意思?还是不正常?
ExtremeHoly
3楼-- · 2019-07-22 04:54
 精彩回答 2  元偷偷看……
edmund1234
4楼-- · 2019-07-22 05:14
ExtremeHoly 发表于 2019-6-2 14:26
不正常,简单说转动速度变快,转完一次来回停顿一两秒,转动范围时大时小

unsigned char x=45;
改为
unsigned short x=45;
ExtremeHoly
5楼-- · 2019-07-22 10:18
edmund1234 发表于 2019-6-2 15:32
unsigned char x=45;
改为
unsigned short x=45;

改了还是一样.....这个好消磨耐心和信心啊,真是太麻烦你了

一周热门 更多>