如何解决由于uint8_t变量的ascii转换而导致的错误

时间:2019-07-12 08:57:18

标签: embedded microcontroller stm32

我正在尝试使用标志来实现逻辑,以便标志变量的值只能是0或1。因此,我将uint8_t变量初始化为0,但是在调试时,我发现它转换为0x30(ASCII值为0),所以我以后的逻辑失败了

uint8_t flag_count = 0;

if(flag_count == 0)
{
    counter++;
    if(counter >= 1000)
    {
        counter = 0;
        flag_count = 1;
    }
}

if(flag_count == 1)
{
    //do something
    flag = 0;
}

因此,当我运行程序时flag_count的值为0x30(ASCII值为'0'),因此计数器从不增加,因此逻辑失败。

我尝试了

uint8_t flag_count = 0x00; 

它仍然做同样的事情。

1 个答案:

答案 0 :(得分:0)

对于uint8_t:编译器将其作为char并因此将其转换为ascii

所以我需要使用uint32_t或int使其起作用:)