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

质疑HAL库的延时函数HAL_Delay  

[复制链接]
与龙共舞 提问时间:2018-4-20 08:55 /
阅读主题, 点击返回1楼
收藏 2 评论25 发布时间:2018-4-20 08:55
25个回答
toofree 回答时间:2018-4-20 11:54:22
与龙共舞 发表于 2018-4-20 10:15
哦 我传参是100 肯定OK  
我说的是(猜测) 比如此时ucTick数值就是4294967290 那会发生什么事呢?它++10 ...

会的,溢出后,肯定回到0
jjbboox 回答时间:2018-4-20 12:29:45
anobodykey 发表于 2018-4-20 10:23
楼主可以多分析一下,建议你看下该链接https://www.stmcu.org.cn/module/forum/thread-608277-1-1.html,同样是 ...

就算移植到8位的系统,uwTick也应该定义为uint32_t,就是unsigned long,怎么能改成uint_8呢?
Dandjinh 回答时间:2018-4-20 13:27:15
你的理解没错,是会溢出。可是不知道你注意到了没,跟tick相关函数的都是weak的,如果你觉得不够可以自己定义一套自己的tick

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

黑皮男 回答时间:2018-4-20 13:41:09
本帖最后由 黑皮男 于 2018-4-20 13:43 编辑

这个肯定会出现溢出,但是可以参考linux中的实现方法。下面是我的代码,只不过改了些名字,实现是一样的。
#define kernel_time_after(unknow, known)    ((long)(know)-(long)(unknow)<0)
#define kernel_time_before(unknow, know)    ((long)(unknow)-(long)(know)<0)
#define kernel_time_after_eq(unknow, know)  ((long)(unknow)-(long)(know)>=0)
#define kernel_time_before_eq(unknow, know) ((long)(know)-(long)(unknow)>=0)

void kernel_delay_ms(kernel_msec_t millis)
{
    unsigned long timeout = _kernel_wall_jiffies + millis/1000*KERNEL_HZ;
   
    while(kernel_time_before(_kernel_wall_jiffies, timeout));
        
}
zhdzhd-174422 回答时间:2018-4-20 15:26:11
楼主这是什么试卷啊?
与龙共舞 回答时间:2018-4-20 16:29:25
黑皮男 发表于 2018-4-20 13:41
这个肯定会出现溢出,但是可以参考linux中的实现方法。下面是我的代码,只不过改了些名字,实现是一样的。
...

所以你的这思路就是把U32提升到U64 再次降低出现溢出的可能吗?
黑皮男 回答时间:2018-4-20 18:14:49
与龙共舞 发表于 2018-4-20 16:29
所以你的这思路就是把U32提升到U64 再次降低出现溢出的可能吗?

不是,是无符号数和有符号数的问题。http://www.cnblogs.com/hfyinsdu/p/4600052.html

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

与龙共舞 回答时间:2018-4-20 18:51:33
黑皮男 发表于 2018-4-20 18:14
不是,是无符号数和有符号数的问题。http://www.cnblogs.com/hfyinsdu/p/4600052.html

受教了受教了
XinLiYF 回答时间:2018-4-20 20:13:33
无符号的回环问题:(uint8_t)(0x00) - (uint8_t)(0xFF) = (uint8_t)(0x01)

这个是一个很好的例子:模仿kfifo实现的环形缓冲区

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

与龙共舞 回答时间:2018-4-24 16:11:13
本帖最后由 与龙共舞 于 2018-4-24 16:13 编辑

测试了一下 Keil下面编译是没有负数的
0-0xff=0X01
QQ截图20180424160715.png

所属标签

相似问题

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