智能车小白学习日记—GPIO模块(2)

文章目录

  • 前言
  • 一、按键的使用
  • 二、串口的信息发送
    • 1.初始化GPIO口
    • 2.通过串口助手输出数据
  • 总结


前言

本次进入GPIO模块的第二阶段学习

一、按键的使用


按键检测宏定义

#define KEY1 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_3) //读取按键1(上拉电阻)
#define KEY2 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) //读取按键2(上拉电阻)

GPIO引脚口初始化

void GPIO_Toggle_INIT(void)
{
     
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);//小灯GPIO相关配置

  /*………………………………………………………………………………………………………………………………*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_15;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
      GPIO_Init(GPIOB, &GPIO_InitStructure);//按键GPIO相关配置
      /*………………………………………………………………………………………………………………………………*/
}

主函数的相关实现,小灯随按键状态量灭

int main(void)
{
     
	u8 i=0;

	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//配置
     Delay_Init();
	USART_Printf_Init(115200);//初始化外设
	printf("SystemClk:%d\r\n",SystemCoreClock);

	printf("GPIO Toggle TEST\r\n");
	GPIO_Toggle_INIT();
	 /*………………………………………………………………………………………………………………………………*/
	 GPIO_WriteBit(GPIOB, GPIO_Pin_8, 1);//给小灯引脚写高电平,小灯不亮
	    GPIO_WriteBit(GPIOB, GPIO_Pin_9, 1);//给小灯引脚写高电平,小灯不亮
	    /*………………………………………………………………………………………………………………………………*/

	while(1)
  {
     
		

		 if(!KEY1){
     

		        GPIO_WriteBit(GPIOB, GPIO_Pin_8, 0);//检测按键1,若按下,(上拉),写低电平,小灯亮



	}
		 else{
     
		     GPIO_WriteBit(GPIOB, GPIO_Pin_8, 1);//检测按键1,若未按下,(上拉),写高电平,小灯不亮

		 }

		 if(!KEY2){
     
		             

		                GPIO_WriteBit(GPIOB, GPIO_Pin_9, 0);//检测按键2,若按下,(上拉),写低电平,另一小灯亮
		             

		    }
		         else{
     

		             GPIO_WriteBit(GPIOB, GPIO_Pin_9, 1);//检测按键2,若未按下,(上拉),写高电平,另一小灯不亮
		         }

  }
}

}

作为最简单的点灯程序,其编程语句简单易懂,初始化系统配置后进行GPIO口的配置,接着随着按键的状态对小灯引脚写高低电平就可,其中本例按键为上拉电阻。

二、串口的信息发送

1.初始化GPIO口

代码如下:

void GPIO_Toggle_INIT(void)
{
     
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
}

2.通过串口助手输出数据

 int main(void)
        {
     
            u8 i=0;

            NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
          Delay_Init();
            USART_Printf_Init(115200);
            printf("SystemClk:%d\r\n",SystemCoreClock);

            printf("GPIO Toggle TEST\r\n");
            GPIO_Toggle_INIT();

            while(1)
          {
     
                Delay_Ms(250);
                GPIO_WriteBit(GPIOA, GPIO_Pin_0, 0xa);
            }
        }

总结

GPIO的学习就告一阶段,其主要包括初始化引脚接口及主函数中调用所需库函数,依据自身进行改写,其中引脚的模式定义等显得较为重要,下面开始对TIM定时器的学习。

你可能感兴趣的:(智能车小白学习入门笔记)