我有以下代码:
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);