智能车小白学习日记—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定时器的学习。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值