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

TIM1 定时器中断,低频中断正常,高频中断异常,时间不对。

[复制链接]
凭轩 提问时间:2022-6-16 15:27 / 未解决

收藏 评论7 发布时间:2022-6-16 15:27

举报

7个回答
废鱼 回答时间:2022-6-16 15:43:15
具体描述一下芯片名称,定时器达到多少频率以后异常,异常的判断标准,定时器是如何配置的。
凭轩 回答时间:2022-6-16 16:48:55
用的是STM32F407VET6,TIM1时钟150Mhz,中断服务函数(溢出中断)中添加计数变量(cnt),进行PWM脉冲数计算。main函数while(1),进行脉冲数判断,关闭中断和PWM输出。设置PWM频率12.5Mhz时,仿真查看cnt,有参数显示,但while(1)内容未执行。调整为100KZ时,一切正常。
xmshao 回答时间:2022-6-16 16:59:43
看了你的补充描述,你的while(1)内没法正常计数,估计是因为高频时中断过于频繁,来不及运行用户程序的计数操作。如果这样的话,
或许根本就没有什么异常,只是个误会。
废鱼 回答时间:2022-6-16 17:06:40
while里面的代码是如何判断的?是否一直在判断,还是有等待。如果定时器频率太高,某些操作可能导致判断不及时导致判断失败。
凭轩 回答时间:2022-6-16 17:09:34
xmshao 发表于 2022-6-16 16:59
看了你的补充描述,你的while(1)内没法正常计数,估计是因为高频时中断过于频繁,来不及运行用户程序的计数 ...

需求是输出12.5mh的PWM,并且能够知道脉冲数。如果用其他定时器去计数的话,产生的中断数其实是一样的啊。同样会影响主函数执行的啊。除非是定义中断,只去查看计数器的计数值来判断脉冲数,而不是去通过中断计数。
凭轩 回答时间:2022-6-16 17:10:11
废鱼 发表于 2022-6-16 17:06
while里面的代码是如何判断的?是否一直在判断,还是有等待。如果定时器频率太高,某些操作可能导致判断不 ...

一直在判断的,没有延时。
butterflyspring 回答时间:2022-6-17 10:39:01
大伙说的频率达到12.5MHZ,那么中断时间就0.08us。 中断程序跑不过来,所以程序跑不出来了,中断太快太频繁。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版