你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
与龙共舞 发表于 2018-4-20 10:15 哦 我传参是100 肯定OK 我说的是(猜测) 比如此时ucTick数值就是4294967290 那会发生什么事呢?它++10 ...
anobodykey 发表于 2018-4-20 10:23 楼主可以多分析一下,建议你看下该链接https://www.stmcu.org.cn/module/forum/thread-608277-1-1.html,同样是 ...
查看全部评分
黑皮男 发表于 2018-4-20 13:41 这个肯定会出现溢出,但是可以参考linux中的实现方法。下面是我的代码,只不过改了些名字,实现是一样的。 ...
与龙共舞 发表于 2018-4-20 16:29 所以你的这思路就是把U32提升到U64 再次降低出现溢出的可能吗?
黑皮男 发表于 2018-4-20 18:14 不是,是无符号数和有符号数的问题。http://www.cnblogs.com/hfyinsdu/p/4600052.html
会的,溢出后,肯定回到0
就算移植到8位的系统,uwTick也应该定义为uint32_t,就是unsigned long,怎么能改成uint_8呢?
评分
查看全部评分
这个肯定会出现溢出,但是可以参考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));
}
所以你的这思路就是把U32提升到U64 再次降低出现溢出的可能吗?
不是,是无符号数和有符号数的问题。http://www.cnblogs.com/hfyinsdu/p/4600052.html
评分
查看全部评分
受教了受教了
这个是一个很好的例子:模仿kfifo实现的环形缓冲区
评分
查看全部评分
测试了一下 Keil下面编译是没有负数的
0-0xff=0X01