模块的封装&GPIO的输入
#include "stm32f10x.h" // Device header
void LED_Init(void) { //使能GPIOA的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //GPIOA模式初始化 GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStruct); //GPIO的值初始化 GPIO_SetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_2); }
void LED1_ON(void) { GPIO_ResetBits(GPIOA,GPIO_Pin_1); }
void LED1_OFF(void) { GPIO_SetBits(GPIOA,GPIO_Pin_1); }
void LED2_ON(void) { GPIO_ResetBits(GPIOA,GPIO_Pin_2); }
void LED2_OFF(void) { GPIO_SetBits(GPIOA,GPIO_Pin_2); }
#ifndef _LED_H #define _LED_H
void LED_Init(void);
void LED1_ON(void); void LED1_OFF(void); void LED2_ON(void); void LED2_OFF(void);
#endif
#include "stm32f10x.h" // Device header #include "Delay.h" #include "LED.h" int main(void) {
//GPIO初始化 LED_Init(); while(1) { //流水灯的效果 LED1_ON(); Delay_ms(500); LED1_OFF(); Delay_ms(500); LED2_ON(); Delay_ms(500); LED2_OFF(); Delay_ms(500); } }
GPIO的读取函数
#include "stm32f10x.h" // Device header #include "Delay.h"
void KEY_Inint(void) { //初始化时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //初始GPIO配置 GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStruct); }
uint8_t KEY_GetNum(void) { uint8_t key_num; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0)//如果按键被按下 { Delay_ms(20); while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0); Delay_ms(20); key_num = 1; } if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0)//如果按键被按下 { Delay_ms(20); while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0); Delay_ms(20); key_num = 2; } return key_num;
}
#ifndef _KEY_H #define _KEY_H
void KEY_Inint(void); uint8_t KEY_GetNum(void);
#endif
#include "stm32f10x.h" // Device header #include "Delay.h" #include "LED.h" #include "KEY.h"
uint8_t Key_num;//定义一个全局变量
int main(void) {
LED_Init(); KEY_Inint(); while(1) { Key_num = KEY_GetNum(); if(Key_num == 1)//如果按键1被按下 { LED1_ON(); } if(Key_num == 2) { LED1_OFF(); } } }
————————————————
版权声明:本文为CSDN博主「傻童:CPU」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45159887/article/details/130334512
|