主函数的语句直接跳过,麻烦帮忙看下程序是哪里出错了

2019-07-16 09:20发布

#include "STM32f10x_map.h"
void Key_Init(void);
void Key_Proc(void);

   char flag = 1;
int main(void)
{
     Key_Init();
while(1)
   {

   Key_Proc();
   if(flag) GPIOC->ODR &= 0xffff;
   if(!flag) GPIOC->ODR &= 0x0000;

   }


}

   void Key_Init(void)
   {
    RCC->APB2ENR |= 8;
        RCC->APB2ENR |= 0x0010;
        GPIOC->CRH &= 0xffffff00;
        GPIOC->CRH |= 0x00000033;
        GPIOC->CRL &= 0x00ffffff;
    GPIOC->CRL |= 0x33000000;
        GPIOC->ODR = 0xffff;
   }

   void Key_Proc(void)
   {
   short key = GPIOB->IDR;
   if(key & 0x8000)        
   {
   flag = !flag;
   }   
   }


按键只是上电第一次管用,再按就不管用了,调试的时候主函数里的两个if语句貌似直接就跳过去了。
谁知道这是哪里的问题

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。