#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语句貌似直接就跳过去了。
谁知道这是哪里的问题
if(!flag) GPIOC->ODR &= 0x0000;
改成
if(flag)
GPIOC->ODR &= 0xffff;
if(!flag)
GPIOC->ODR &= 0x0000;
一周热门 更多>