STM32一GPIO输出与KEY输入

目录

什么是GPIO

GPIO的输出

KEY的输入

为什么需要打开时钟


什么是GPIO

        通用型之输入输出:

        GPIO(英语:General-purpose input/output),通用型之输入输出的简称,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO);

GPIO的输出

        简而言之,GPIO就是寄存器(拥有特殊功能的地址),我们通过访问寄存器配置内存单元,从而使GPIO达到我们想要的功能;

void LED_GPIO_config()
{

	GPIO_InitTypeDef	GPIO_Initstruct;//申明一个结构体
	
	RCC_APB2PeriphClockCmd(LED_GPIO_CLK,ENABLE);//时钟使能打开
	
	
	GPIO_Initstruct.GPIO_Speed=GPIO_Speed_50MHz;//给GPIO配置传输速度

	GPIO_Initstruct.GPIO_Mode=GPIO_Mode_Out_PP;//GPIO配置为输出模式
	
	
	GPIO_Initstruct.GPIO_Pin=LED_GPIO_G_PIN|LED_GPIO_R_PIN|LED_GPIO_B_PIN;
    //这个GPIO_Initstruct.GPIO_Pin其实就是PB0,PB1...就是那16个端口	
	//这里的GPIO_PIN要与上,会出现的都列举出来,后面好选择;要是一个一个等于的话,那就只能开最后一个	
			
	GPIO_Init(LED_GPIO_PORT, &GPIO_Initstruct);//把前面配置的每个部分合起来
	
}

        比如上面这个,就是控制着GPIOB这个寄存器的端口输出为了表现的更加直观,把输出口放在PB0这个LED上,只要它有输出,那么这个灯就会被点亮;

依据上面的代码,RGB灯三颜色会全亮,所以会配置出其他的颜色,这种灯能够配置出256种颜色,关键在于使用PWM的方式表达,也就是改变占空比;

KEY的输入

        配置过程和配置输出一样,个别不同。比如输入不需要配置传输速度,还要就是把输出模式配置为输入模式;

void Key_GPIO_Config()
{
	
	GPIO_InitTypeDef	GPIO_InitStruct;//创建结构体
	
	RCC_APB2PeriphClockCmd(KEY2_GPIO_CLK|KEY1_GPIO_CLK, ENABLE);//两个按键时钟打开		
	GPIO_InitStruct.GPIO_Pin=KEY1_GPIO_A_PIN;	//按键1的端口确定
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;//按键1模式选择为浮空输入	
	GPIO_Init(KEY1_GPIO_PORT,&GPIO_InitStruct);	//把上面的每个配置整合到一起
	
    //这里和上面一样就不解释了;
	GPIO_InitStruct.GPIO_Pin=KEY2_GPIO_C_PIN;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
	GPIO_Init(KEY2_GPIO_PORT,&GPIO_InitStruct);
}

        由于按键占用位置为GPIO,所以为了能够体现输入,我们就是使用按键表达GPIO的输入;

        这只是单纯的使这个功能打开了,具体要用的话,还得有其他的代码。

这里的按键GPIO为PA0,所以要配置相应的代码;

该图为KEY.h

为什么需要打开时钟

       

 

        这是因为        Cortex™-M3        在启动之后为了省电,把不必要的时钟关掉。所以,这就很具有代表性的告诉我们     Cortex™-M3     的外设是需要打开时钟才能运行的。

        像上面的这些外设,我们需要用的时候,一定要先开启相应的时钟,只有这样才能保证程序是我们想要的目标。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值