STM32 IO口设置 为输入,通过对IO口电平的判断来让一个数加减(高加低减),为什么这个数只会是加或者减的?如:初始化IO口拉高,然后只会一直加,把IO口直接接到地也不会减
#define Speed_R PCout(5)// PA12
#define Speed_L PCout(4)// PA13
void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<2; //????PORTA?±??
RCC->APB2ENR|=1<<4;//?????????èPORTC?±??
JTAG_Set(JTAG_SWD_DISABLE);//??±?JTAG??SWD
GPIOA->CRL&=0XFFFFFF0F;//PA1?è????????
GPIOA->CRL|=0X00000080;
GPIOA->CRH&=0XFF000FFF;//PA11??PA12??PA13?è????????
GPIOA->CRH|=0X00448000;
GPIOC->CRL&=0XFF00FFFF;//
GPIOC->CRL|=0X00880000;
GPIOA->ODR|=1<<1; //PA1???
GPIOA->ODR|=1<<11; //PA11???
//GPIOA->ODR|=1<<12; //PA12???
//GPIOA->ODR|=1<<13; //PA13???
GPIOC->ODR|=1<<5; //PC5???
GPIOC->ODR|=1<<4; //PC4???
}
int main(void)
{
Stm32_Clock_Init(9);//?????±???è??
delay_init(72); //???±??????
uart_init(72,9600); //????1??????
Timer4_Init(199,7199);//10Khz??????????????????199??20ms
EXTIX_Init();
LED_Init();
LCD_Init();
Motor_Init();
IIC_Init();
InitMPU6050();
  WM_Init(1000,100); //??·?????PWM????=72000/100=720hz
Set_PWM(950,950);
//?????á??????
  OINT_COLOR=BLUE;//?è??×?????????
RunBack();
while(1)
{
LCD_ShowSint(10,30,GYROY_GetData(),10,16);
LCD_ShowSint(10,70,(ACCEL_GetXData()),10,16);
LCD_ShowSint(10,90,Angle,10,16);
LCD_ShowSint(10,110,speed_mr,10,16);
LCD_ShowSint(10,130,speed_ml,10,16);
if(TIME_1S_FLAG == 1)
{
TIME_1S_FLAG = 0;
if(Speed_R == 1)
{
speed_mr++;
}
else speed_mr--;
LED0=!LED0;
}
}
}
|