MRS中的奇怪代码

在MRS中使用CH32V103R8单片机,遇到奇怪现象

    send_flag = 0;

    while(1)

    {

        if(send_flag)

        {

            send_flag = 0;

            printf("This is printf example\r\n");

        }

    }

这段代码,在定时器中置位send_flag=1,不能清send_flag,并发送串口信息,改成以下就正常了

    send_flag = 0;

    while(1)

    {

        if(send_flag==1)

        {

            send_flag = 0;

            printf("This is printf example\r\n");

        }

    }

编译器选择无优化,不知道这里触发了哪种玄妙?

您好,请在send_flag这个变量声明和定义的地方加上volatile。


只有登录才能回复,可以选择微信账号登录