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

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

[复制链接]
KEY1 提问时间: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

查看全部评分

KEY1 回答时间: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

查看全部评分

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

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

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版