while(1)
{
if ((uint16_t)(gSysTick - currentTick) >= 1)
{
currentTick = gSysTick;
CheckRecDatum(1);//
SendDatum();
OutputErrorIndex();
}
}
//1ms中断
void Timer0ISR(void) interrupt 1
{
#define kGasTime (uint16_t)(16.6*1000)
TF0 = 0;
TL0 = (uint8_t)((0xbf27) & 0xff); //((65535-kGasTime)&0xff);
TH0 = (uint8_t)((0xbf27) >> 8); //((65535-kGasTime)>>8);
gSysTick++;
}
比如上面这一段代码,gSysTick每1ms增加一次,同时赋值给currentTick(currentTick初始值为0),那么当gSysTick增加到255时,currentTick应等于254,如果gSysTick再增加一次不就变成0了吗?那么while中的if语句是不是就无法判断了呀?
这段代码是不是写的就有问题了?
你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。
您可以点击问题下方的【编辑】,进行补充修改问题。