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

STM32G070 封装HAL_GetTick疑问

[复制链接]
huahuahnu 提问时间:2024-9-25 11:07 / 未解决
HAL_GetTick函数,默认使用了滴答定时器中断,并使用了全局变量uwTick,这个变量是32位的,那变量溢出了就会从0开始,许多外设超时判断的语句是HAL_GetTick() - Tickstart>TimeOut,如果刚好uwTick为0,这里做减法不是会出错吗?
收藏 评论4 发布时间:2024-9-25 11:07

举报

4个回答
xmshao 回答时间:前天 14:53

你觉得会怎么出错呢?

你可以拿个代码简单验证下,不会出错的。

uint32_t para_New,para_Old,Result;

para_New =0;

para_Old=1;

Result= para_New-para_Old;

顺便提醒下,这里的计数累加向上计数的。

huahuahnu 回答时间:前天 17:33

xmshao 发表于 2024-9-25 14:53
你觉得会怎么出错呢?</p>
<p>你可以拿个代码简单验证下,不会出错的。

[md]这样相减得到负数了,赋给无符号整型变量,这个值不就很大吗?

butterflyspring 回答时间:前天 17:50

huahuahnu 发表于 2024-9-25 17:33
这样相减得到负数了,赋给无符号整型变量,这个值不就很大吗?

你可以试试,看看结果是不是如你所料的这样存贮。

说不定是单独将符号结果设置到 APSR中呢。

xmshao 回答时间:昨天 09:51

huahuahnu 发表于 2024-9-25 17:33
这样相减得到负数了,赋给无符号整型变量,这个值不就很大吗?

大或小不是问题,正确就行。具体到这里,一个计数周期就是2的32次方计时单位。

为了直观点,你可以将刚才那三个变量换成8位无符号数来计算,然后自己琢磨琢磨。

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