硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1097|回复: 5
收起左侧

[STM32H7] 关于定时器CCR通道无法触发标志位的问题

[复制链接]

6

主题

21

回帖

39

积分

新手上路

积分
39
发表于 2024-11-10 10:31:47 | 显示全部楼层 |阅读模式
整体思路借用了硬汉哥bsp_timer里采用硬件定时器的四路CCR通道实现定时的四路,稍微做了修改,新修改的四路如下:

原思路是执行完回调函数后再考虑计时,我这里为了减少回调函数的影响,在回调之前保存了TIM->CNT的值,然后再执行回调。四个通道都是这样子,这里只展示一个通道。
下载.png

另外,为了减少回调的影响,我在回调函数里只做触发软件中断的操作,软件中断的优先级比较低,设置为8,定时器的优先级稍高,设置为3。
这是对应回调函数的内容,分别对应s_TIM_SLAVE_CallBack1和s_TIM_SLAVE_CallBack2,即各自触发软件中断EXTI_LINE0和EXTI_LINE1。
下载 (1).png

软件中断里在执行完所需任务代码后,最后再做重启定时器的设置操作
下载 (2).png

问题就出在定时器重置后,当前我只开启了CCR1和CCR2的定时,但是在重置操作后,CCR2或者CCR1重新设定的目标值在大于当前CNT的情况下也总是无法触发CC1IF和CC2IF标志位。
以下是定时器CCR1和CCR2的重新赋值操作,这里CCR2里做了几个测试变量,因为仿真连续跑的时候很大概率是CCR2没有再次触发从而停止了。所以抓了下最后所处的状态
下载 (3).png


下载 (4).png


经过抓取,CCR2最后一次配置的值在TIM_lastLoc = 2;的位置,且此时CCR2的值远大于TIM->CNT,但就是没有置位CCR2IF标志,

下载 (5).png

可以看到,当配置时CCR2离CNT还有41的差距,我这里配置的是1us一个CNT增量,但就是没有触发标志导致错过了
下载 (6).png


一开始以为是因为有地方禁用了全局中断做临界保护的时候,系统屏蔽了CCR2IF的标志,把所有代码中的禁用全局中断都取消了还是这样。
有大佬知道还有什么可能的原因吗?明明CCR2计数值比CNT大,但就是没有触发中断标志,且此时还远远不到自动重装载的时候



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-11-10 11:05:45 | 显示全部楼层
可能逻辑处理上有问题,建议先把相关的处理都先注释掉,仅仅触发EXTI中断,然后AutoReload里面色设置新的触发位置试试。
回复

使用道具 举报

6

主题

21

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2024-11-10 11:13:26 | 显示全部楼层
eric2013 发表于 2024-11-10 11:05
可能逻辑处理上有问题,建议先把相关的处理都先注释掉,仅仅触发EXTI中断,然后AutoReload里面色设置新的触 ...

试了一下,还真的可以了。不会中间突然停止。只是有点不明白,为什么我的任务处理函数会影响这个?我任务里也没重新配置定时器CCR的操作,都是在任务完成后调用的AutoReload。编译也未开优化
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-11-11 09:04:29 | 显示全部楼层
样时代 发表于 2024-11-10 11:13
试了一下,还真的可以了。不会中间突然停止。只是有点不明白,为什么我的任务处理函数会影响这个?我任务 ...

这个只能排查下了。
回复

使用道具 举报

6

主题

21

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2024-11-13 11:34:35 | 显示全部楼层
eric2013 发表于 2024-11-11 09:04
这个只能排查下了。

已解决,逻辑上不够严谨,带符号数的Timout中间变量转换成无符号数时没处理好。感谢指点
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-11-14 08:57:36 | 显示全部楼层
样时代 发表于 2024-11-13 11:34
已解决,逻辑上不够严谨,带符号数的Timout中间变量转换成无符号数时没处理好。感谢指点

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 17:32 , Processed in 0.041459 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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