OpenEdv-开源电子网

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

看门狗移植问题,调用GetLSIFrequency()函数进入死循环

[复制链接]

16

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2017-10-3
在线时间
42 小时
发表于 2017-10-17 21:36:18 | 显示全部楼层 |阅读模式
1金钱
最近遇到了一个看门狗移植问题。在运算    IwdgHandle.Init.Reload    = uwLsiFreq / 128  这个式子时,uwLsiFreq是通过GetLSIFrequency()函数(获取低速内部时钟频率)获取的,而GetLSIFrequency()中会判断uwMeasurementDone这个变量是否为0,为0的话就会进入死循环。将uwMeasurementDone变量置1是在HAL_TIM_IC_CaptureCallback()函数中。调用这个函数需要等到TIM5捕获到两个LSI边沿才会触发中断的时候。现在是一直都在这行代码里等待。原先移植看门狗的时候是成功的,没有出现这个问题。其实可以不用调用这个函数,直接给uwLsiFreq赋值,例如我的LSI频率是35720,我可以直接让uwLsiFreq等于35720,这样就可以正常运行了。原子哥的程序也是直接跳过这个函数。考虑到这个是动态的获取LSI的频率,在不同的平台中,硬件是不一样的,所以发了这个帖子。希望有高人指点,谢谢。

看门狗进入死循环的地方.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-10-18 00:06:45 | 显示全部楼层
回复

使用道具 举报

4

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2018-1-13
在线时间
13 小时
发表于 2018-2-1 15:59:04 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 03:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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