zoukankan      html  css  js  c++  java
  • 关于加法溢出问题

    开个题目《关于加法溢出问题》,以后想到什么情况就在这里更新吧。 1、freeRTOS 的时钟节拍函数 要实现一个定时任务A,当前时钟节拍计数器xTickCount + 需要延时的时钟节拍 delayTick = 延时的时钟节拍时间点tickTime 由于计算机存储数据是有具体大小,所以加法计算是有可能出现溢出问题,如果用xTickCount >= tickTime这样简单的判断区分任务是否到延时时间,将会使所有的溢出情 况无法正确延时。 溢出例子: uint8_t xTickCount; uint8_t delayTick; uint8_t tickTime; 开始定时任务A时,xTickCount=254,delayTick=10,则 tickTime=9 下一个节拍时间,xTickCount = 255 >= tickTime = 9; 这样定时任务A将完成定时,执行定时任务,然而定时的节拍是9,实际定时节拍为1,显然不符合定时的要求 所以,freeRTOS 实现了两个链表,一个放无计算溢出的定时任务 listA,一个放有计算溢出的定时任务listB;每个节拍都会将xTickCount自加并检查listA的任务是否到达定时时间;当xTickCount自加发生溢出时,将listA的内容用listB的内容替换。(好聪明的方法) 未完待续……
  • 相关阅读:
    二叉查找树
    Hash算法原理理解
    算法的时间复杂度
    解决Ubuntu14.04下Clementine音乐播放器不能播放wma文件的问题
    Ubuntu 14.04 开启启动器图标最小化功能
    Ubuntu14.04建立WiFi热点
    C语言运算符优先级
    老鸟的Python入门教程
    MD5算法步骤详解
    MD5算法
  • 原文地址:https://www.cnblogs.com/simonlin/p/6528330.html
Copyright © 2011-2022 走看看