c-while循环在条件仍然为true时停止



我有以下代码:

void EXTI_Main(uint8_t mult)//range 1-4(inclusive)
{
uint16_t minimum = 200 * mult;
while(TMR3_GetTick() < minimum);
printf("mult:%hhuttick:%hutminimum:%hurn", mult, TMR3_GetTick(), minimum);
//RF_Main();
LCD_Read();

}

具有以下输出:(不知道如何使blockquote与换行符一起工作(

mult:0  tick:0  minimum:0
mult:1  tick:414        minimum:200
mult:2  tick:453        minimum:400
mult:3  tick:600        minimum:600
mult:4  tick:800        minimum:800
mult:0  tick:0  minimum:0
mult:1  tick:414        minimum:200
mult:2  tick:453        minimum:400
mult:3  tick:600        minimum:600
mult:4  tick:768        minimum:800
mult:0  tick:0  minimum:0
mult:1  tick:414        minimum:200
mult:2  tick:453        minimum:400
mult:3  tick:512        minimum:600
mult:4  tick:768        minimum:800
mult:0  tick:0  minimum:0

tmr3.c:中的相关代码

static volatile uint16_t msTick;//incremented using ISR
uint16_t TMR3_GetTick(void)
{
return msTick;
}

当mult==3|4时,为什么会出现问题?易失性是问题吗??我一直在读关于如何处理可变变量的文章,但还没能弄清楚这是否是问题的一部分。

请询问是否需要更多信息。谢谢

编辑:idk如果有用,但当它们失败时,3和4总是512(256*2(和768(256*3(

编辑2:解决方案原来是:

uint16_t tock; while((tock = TMR3_GetTick()) < minimum);

在评论中向我的男人Weather Vane大喊。

已替换:

while(TMR3_GetTick() < minimum);

带有:

uint16_t tock; while((tock = TMR3_GetTick()) < minimum);

相关内容

  • 没有找到相关文章

最新更新