OpenEdv-开源电子网

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

stm32H750调试时遇到一个奇怪的现象,LL库定时中断中的端口操作代码在运行暂停后重新运行时失效了

[复制链接]

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
发表于 2022-1-20 09:14:53 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 ColeSofCJ 于 2022-1-20 10:42 编辑

  如题,stm32H750硬件仿真调试时遇到一个奇怪的现象,一开始全速运行时都是正常的,暂停程序运行并重新开始后定时中断3中开关的几个端口就没反应了,但是从该端口的输出寄存器看,每次进出定时器中断是正常更改寄存器状态的(运行后随机多停几次,能观察到输出寄存器的对应位有变化),但是该端口对应的固态继电器指示灯不闪了,表明实际上该端口状态一直不变!重新复位单片机再次运行,现象还是一样,可以一直重复该现象。
  其它几个使用任务控制的端口上面的LED指示灯不受影响,一直是正常闪的(比较诡异的是我上面提到的所有LED灯都是PortE端口的,所以不存在有的端口使能,有的没使能,有的时钟开着,有的关闭这样的现象)。备注:以上定时中断部分使用的是LL库,换成HAL库没有这个现象,不知道是哪里出岔子了!定时中断3就开了溢出更新中断,比较匹配部分的中断没有开,代码只有70K左右,全部在内部Flash运行。
    定时中断中的端口操作代码失效后,两个串口中断及其中的端口操作代码都还是正常的。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1994
金钱
1994
注册时间
2021-4-16
在线时间
509 小时
发表于 2022-1-20 09:41:51 | 显示全部楼层
可以用其他的工程来测试一下你的定时器功能,我以前遇到过工程有问题的,刚刚下载进去正常,后面重新上电就没输出了,后来换了工程模板就没问题。
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2022-1-20 09:47:10 | 显示全部楼层
本帖最后由 ColeSofCJ 于 2022-1-20 12:51 编辑
疾如风 发表于 2022-1-20 09:41
可以用其他的工程来测试一下你的定时器功能,我以前遇到过工程有问题的,刚刚下载进去正常,后面重新上电就 ...

这个Hal库/LL库是比较伤脑筋,全用Hal库担心运行效率低不甘心,要是Hal库与LL库混用的话很容易掉坑里,还是爬不出来的那种,有些问题出了感觉全网都找不到答案!
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-1-20 10:43:36 | 显示全部楼层
跑去寄存器瞅瞅啊,我也是LL库初始化的,然后经常看见他们的库会干莫名其妙的事情,寄存器最牛逼了,就是写着累
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2022-1-20 10:57:14 | 显示全部楼层
本帖最后由 ColeSofCJ 于 2022-1-20 10:58 编辑
聚东风 发表于 2022-1-20 10:43
跑去寄存器瞅瞅啊,我也是LL库初始化的,然后经常看见他们的库会干莫名其妙的事情,寄存器最牛逼了,就是写着累

  看了,输出寄存器是有变化的,奈何实际的硬件Pin脚上无输出,外设也就是固态继电器上的灯不闪!
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-1-20 14:36:32 | 显示全部楼层
ColeSofCJ 发表于 2022-1-20 10:57
看了,输出寄存器是有变化的,奈何实际的硬件Pin脚上无输出,外设也就是固态继电器上的灯不闪!

你如果是驱动定时器的CH引脚,那观察下BDTR
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2022-1-20
在线时间
2 小时
发表于 2022-1-20 15:14:03 | 显示全部楼层
仿真调试停止的是内核的运行,外设并未停止。比如在进行通信时进行调试就会造成通信异常。
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2022-1-20 16:19:58 | 显示全部楼层
聚东风 发表于 2022-1-20 14:36
你如果是驱动定时器的CH引脚,那观察下BDTR

没有使用定时器专用输出端口,只是在定时中断中对端口进行写操作。
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2022-1-20 16:22:44 | 显示全部楼层
本帖最后由 ColeSofCJ 于 2022-1-20 16:24 编辑
DrawTree 发表于 2022-1-20 15:14
仿真调试停止的是内核的运行,外设并未停止。比如在进行通信时进行调试就会造成通信异常。

  仿真的时候定时中断一直是好的,只是在定时中断中操作IO口时,IO口的输出寄存器有变化,但实际上芯片的对应输出端口并没有变化,体现出来就是原本一直在闪的固态继电器突然就不闪了!然而硬件仿真追踪产看寄存器发现寄存器都是正常的,该现象只是使用LL库会出现,使用Hal库的时候没有该现象。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-6 10:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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