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

实时的定时器中断函数被系统滴答时钟中断影响了怎么办

[复制链接]
AI++ 提问时间:2018-8-16 09:08 /
本帖最后由 50031185 于 2018-8-16 11:03 编辑

最近在用STM32F2 系列
使用CubeMX 配置了FreeRTOS+HAL库,
使用定时器6输出一个调制的信号方波, 两个IO口实现,不是一个IO口单纯输出的方波, 可是发现总是在第2个脉冲时,波形异常,定时器提前进入了中断,测了很久,后来又试着把系统的时钟频率由1000Hz改到250 , 发现 被干扰的信号时序后移了一截,
基本可以确定是被系统时钟干扰了吧,
有什么办法解决吗?

测试时,试了2种方式,
1中是中断函数直接在下面函数中执行
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
   ***
}
第二种方式是在下面函数中 发出信号量给专门的任务来执行中断函数


两种方式都受到了干扰


此外 在中断函数 HAL_TIM_PeriodElapsedCallback 中直接 使用
taskDISABLE_INTERRUPTS();



taskENABLE_INTERRUPTS();

也不行,会造成卡死,将这两句放在中断函数的外部任务中也没起到作用



这是 Cube中的中断配置
000.jpg
收藏 评论5 发布时间:2018-8-16 09:08

举报

5个回答
疯de_恒 回答时间:2018-8-16 09:45:38
TIM6只是输出方波的话,不需要进中断啊,设定好PWM输出即可。
如果只需要计时功能的话,只保留一个定时器计时就好了,比如就用滴答定时器,定时发信号,简单一点。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

AI++ 回答时间:2018-8-16 09:47:55
す疯Ⅱ恒す 发表于 2018-8-16 09:45
TIM6只是输出方波的话,不需要进中断啊,设定好PWM输出即可。
如果只需要计时功能的话,只保留一个定时器计 ...

是调制波形, 实际上要两个IO口输出信号的
wenyangzeng 回答时间:2018-8-16 09:51:20
PWM输出完全不用使用定时器中断。ST官方有很多例程可以参考:
TIM_PWMOutput.rar (46.43 KB, 下载次数: 4)

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

疯de_恒 回答时间:2018-8-16 10:15:01
50031185 发表于 2018-8-16 09:47
是调制波形, 实际上要两个IO口输出信号的

两个IO的波形是否相关?不相关的话直接两个定时器输出,相关的话可以用一个定时器的两个通道,如果需要调制的话还可以用定时器级连的方式做。官方资料很多的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

AI++ 回答时间:2018-8-16 11:03:49
す疯Ⅱ恒す 发表于 2018-8-16 10:15
两个IO的波形是否相关?不相关的话直接两个定时器输出,相关的话可以用一个定时器的两个通道,如果需要调 ...

两个IO口输出的是相关的输出信号

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版