OpenEdv-开源电子网

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

调用TIM_SetAutoreload之后,程序容易跑飞!!!

[复制链接]

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-9-29
在线时间
38 小时
发表于 2017-3-1 10:11:38 | 显示全部楼层 |阅读模式
1金钱


    我用定时器产生PWM,利用编码器来改变PWM的频率或者占空比。。现在调用TIM_SetComparex 来改变占空比没有任何问题,,改成调用TIM_SetAutoreload,来改变频率,程序有时候就会跑飞,过几秒程序又自己回来了。。就在旋转编码器的过程中跑飞的,(跑飞=不产生PWM),编码器计数是正常的,就是没有PWM了,过几秒PWM又回来了

求大神指点,纠结几天了!!!

最佳答案

查看完整内容[请看2#楼]

我把TIMx_CR1 寄存器的ARPE位置1,ARR缓冲输入,之后就好了,,。ARR的值变化再快,差值再大都没问题了。。。为什么不缓冲就不行呢?? 、?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-9-29
在线时间
38 小时
 楼主| 发表于 2017-3-1 10:11:39 | 显示全部楼层
我把TIMx_CR1 寄存器的ARPE位置1,ARR缓冲输入,之后就好了,,。ARR的值变化再快,差值再大都没问题了。。。为什么不缓冲就不行呢??
、?
回复

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-9-29
在线时间
38 小时
 楼主| 发表于 2017-3-1 10:54:00 | 显示全部楼层
ARR的值变化太大是不是不行啊?   我测试了几次,发现新赋值的ARR如果比之前的值相比,相差太大的话,波形就没有了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-1 22:25:16 | 显示全部楼层
你改变频率的时候,有可能CNT的值和你设置的ARR关系不对。
你乱改ARR,是不能控制CNT的,看你的定时器CNT计数频率是多少?另外还要看ARR的值范围是多少?
比如F4,定时器2或者5,是一个32位定时器,那么当你乱射ARR的时候,假设CNT刚好比你的ARR大那么一点点,可能就要跑一圈回来了。。。那够你等半天了。。。

所以,检查下是否是这个问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-9-29
在线时间
38 小时
 楼主| 发表于 2017-3-2 11:53:31 | 显示全部楼层
正点原子 发表于 2017-3-1 22:25
你改变频率的时候,有可能CNT的值和你设置的ARR关系不对。
你乱改ARR,是不能控制CNT的,看你的定时器CNT ...

谢谢指点,一直没有关心CNT的值,,我只是判断正反转,来控制频率的变大还是变小的。。检查下是不是这个问题
回复

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-9-29
在线时间
38 小时
 楼主| 发表于 2017-3-3 19:27:57 | 显示全部楼层
正点原子 发表于 2017-3-1 22:25
你改变频率的时候,有可能CNT的值和你设置的ARR关系不对。
你乱改ARR,是不能控制CNT的,看你的定时器CNT ...

测试过了,我让ARR的最小值肯定比CNT大的情况下还是会死机。。还没搞明白具体什么原因
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-4 12:28:51 | 显示全部楼层
chengyuanting 发表于 2017-3-3 19:27
测试过了,我让ARR的最小值肯定比CNT大的情况下还是会死机。。还没搞明白具体什么原因

不应该,你看看死机的时候,ARR和CNT的变化规律。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

JACKhuangsf 该用户已被删除
发表于 2017-3-30 22:57:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

JACKhuangsf 该用户已被删除
发表于 2017-3-30 23:36:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-22 15:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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