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的内容替换。(好聪明的方法) 未完待续……
  • 相关阅读:
    洛谷 1195 口袋的天空
    洛谷1955 程序自动分析
    【洛谷3295】[SCOI2016]萌萌哒
    洛谷2024 食物链
    八数码问题
    Codeforces Round #442 (Div. 2)
    Oracle 中truncate与delete的区别
    git命令提交步骤和解决冲突的
    git 更新代码到本地
    12、Python中的包
  • 原文地址:https://www.cnblogs.com/simonlin/p/6528330.html
Copyright © 2011-2022 走看看