本实例基于RIBEE_02开发板设计,5个按键分别是PB5、PC13、PA0、PA2、PB0,其余25个LED进行点亮动作,实现按键输入与LED输出逻辑功能。
1.上芯片图与电路图
2.配置晶振,启用内部晶振,失能外部晶振。设置晶振倍频与分频,外设基础时钟配置为64MHZ。
3.编写LED与按键KEY驱动程序
LED.H文件
- #ifndef __LED_H
- #define __LED_H
- /* Includes ------------------------------------------------------------------*/
- #include "stm32g0xx_hal.h"
- typedef struct
- {
- uint8_t NUM;
- } HORSE_Struct;
- /************* 共25个灯跑马点亮 *************/
- typedef enum {
- BLUE_B1= 1, //蓝灯
- GREEN_B2, //绿灯
- YELLOW_B10, //黄灯
- RED_B11, //红灯
- WHITE_B12, //白灯
- BLUE_B13, //蓝灯
- GREEN_B14, //绿灯
- YELLOW_B15, //黄灯
- RED_A8, //红灯
- WHITE_A9, //白灯
- BLUE_C6, //蓝灯
- GREEN_C7, //绿灯
- YELLOW_A10, //黄灯
- RED_A11, //红灯
- WHITE_A12, //白灯
- BLUE_D0, //蓝灯
- GREEN_D1, //绿灯
- YELLOW_D2, //黄灯
- RED_D3, //红灯
- WHITE_B3, //白灯
- BLUE_B4, //蓝灯
- GREEN_B6, //绿灯
- YELLOW_B7, //黄灯
- RED_B8, //红灯
- WHITE_B9, //白灯
- } LEDEnum;
- /* Private defines -----------------------------------------------------------*/
- #define PA8_Pin GPIO_PIN_8
- #define PA8_GPIO_Port GPIOA
- #define PA8_High() HAL_GPIO_WritePin(GPIOA, PA8_Pin, GPIO_PIN_SET)
- #define PA8_Low() HAL_GPIO_WritePin(GPIOA, PA8_Pin, GPIO_PIN_RESET)
- #define PA9_Pin GPIO_PIN_9
- #define PA9_GPIO_Port GPIOA
- #define PA9_High() HAL_GPIO_WritePin(GPIOA, PA9_Pin, GPIO_PIN_SET)
- #define PA9_Low() HAL_GPIO_WritePin(GPIOA, PA9_Pin, GPIO_PIN_RESET)
- #define PA10_Pin GPIO_PIN_10
- #define PA10_GPIO_Port GPIOA
- #define PA10_High() HAL_GPIO_WritePin(GPIOA, PA10_Pin, GPIO_PIN_SET)
- #define PA10_Low() HAL_GPIO_WritePin(GPIOA, PA10_Pin, GPIO_PIN_RESET)
- #define PA11_Pin GPIO_PIN_11
- #define PA11_GPIO_Port GPIOA
- #define PA11_High() HAL_GPIO_WritePin(GPIOA, PA11_Pin, GPIO_PIN_SET)
- #define PA11_Low() HAL_GPIO_WritePin(GPIOA, PA11_Pin, GPIO_PIN_RESET)
- #define PA12_Pin GPIO_PIN_12
- #define PA12_GPIO_Port GPIOA
- #define PA12_High() HAL_GPIO_WritePin(GPIOA, PA12_Pin, GPIO_PIN_SET)
- #define PA12_Low() HAL_GPIO_WritePin(GPIOA, PA12_Pin, GPIO_PIN_RESET)
- #define PA13_Pin GPIO_PIN_13
- #define PA13_GPIO_Port GPIOA
- #define PA13_High() HAL_GPIO_WritePin(GPIOA, PA13_Pin, GPIO_PIN_SET)
- #define PA13_Low() HAL_GPIO_WritePin(GPIOA, PA13_Pin, GPIO_PIN_RESET)
- #define PA14_Pin GPIO_PIN_14
- #define PA14_GPIO_Port GPIOA
- #define PA14_High() HAL_GPIO_WritePin(GPIOA, PA14_Pin, GPIO_PIN_SET)
- #define PA14_Low() HAL_GPIO_WritePin(GPIOA, PA14_Pin, GPIO_PIN_RESET)
- #define PB1_Pin GPIO_PIN_1
- #define PB1_GPIO_Port GPIOB
- #define PB1_High() HAL_GPIO_WritePin(GPIOB, PB1_Pin, GPIO_PIN_SET)
- #define PB1_Low() HAL_GPIO_WritePin(GPIOB, PB1_Pin, GPIO_PIN_RESET)
- #define PB2_Pin GPIO_PIN_2
- #define PB2_GPIO_Port GPIOB
- #define PB2_High() HAL_GPIO_WritePin(GPIOB, PB2_Pin, GPIO_PIN_SET)
- #define PB2_Low() HAL_GPIO_WritePin(GPIOB, PB2_Pin, GPIO_PIN_RESET)
- #define PB3_Pin GPIO_PIN_3
- #define PB3_GPIO_Port GPIOB
- #define PB3_High() HAL_GPIO_WritePin(GPIOB, PB3_Pin, GPIO_PIN_SET)
- #define PB3_Low() HAL_GPIO_WritePin(GPIOB, PB3_Pin, GPIO_PIN_RESET)
- #define PB4_Pin GPIO_PIN_4
- #define PB4_GPIO_Port GPIOB
- #define PB4_High() HAL_GPIO_WritePin(GPIOB, PB4_Pin, GPIO_PIN_SET)
- #define PB4_Low() HAL_GPIO_WritePin(GPIOB, PB4_Pin, GPIO_PIN_RESET)
- #define PB6_Pin GPIO_PIN_6
- #define PB6_GPIO_Port GPIOB
- #define PB6_High() HAL_GPIO_WritePin(GPIOB, PB6_Pin, GPIO_PIN_SET)
- #define PB6_Low() HAL_GPIO_WritePin(GPIOB, PB6_Pin, GPIO_PIN_RESET)
- #define PB7_Pin GPIO_PIN_7
- #define PB7_GPIO_Port GPIOB
- #define PB7_High() HAL_GPIO_WritePin(GPIOB, PB7_Pin, GPIO_PIN_SET)
- #define PB7_Low() HAL_GPIO_WritePin(GPIOB, PB7_Pin, GPIO_PIN_RESET)
- #define PB8_Pin GPIO_PIN_8
- #define PB8_GPIO_Port GPIOB
- #define PB8_High() HAL_GPIO_WritePin(GPIOB, PB8_Pin, GPIO_PIN_SET)
- #define PB8_Low() HAL_GPIO_WritePin(GPIOB, PB8_Pin, GPIO_PIN_RESET)
- #define PB9_Pin GPIO_PIN_9
- #define PB9_GPIO_Port GPIOB
- #define PB9_High() HAL_GPIO_WritePin(GPIOB, PB9_Pin, GPIO_PIN_SET)
- #define PB9_Low() HAL_GPIO_WritePin(GPIOB, PB9_Pin, GPIO_PIN_RESET)
- #define PB10_Pin GPIO_PIN_10
- #define PB10_GPIO_Port GPIOB
- #define PB10_High() HAL_GPIO_WritePin(GPIOB, PB10_Pin, GPIO_PIN_SET)
- #define PB10_Low() HAL_GPIO_WritePin(GPIOB, PB10_Pin, GPIO_PIN_RESET)
- #define PB11_Pin GPIO_PIN_11
- #define PB11_GPIO_Port GPIOB
- #define PB11_High() HAL_GPIO_WritePin(GPIOB, PB11_Pin, GPIO_PIN_SET)
- #define PB11_Low() HAL_GPIO_WritePin(GPIOB, PB11_Pin, GPIO_PIN_RESET)
- #define PB12_Pin GPIO_PIN_12
- #define PB12_GPIO_Port GPIOB
- #define PB12_High() HAL_GPIO_WritePin(GPIOB, PB12_Pin, GPIO_PIN_SET)
- #define PB12_Low() HAL_GPIO_WritePin(GPIOB, PB12_Pin, GPIO_PIN_RESET)
- #define PB13_Pin GPIO_PIN_13
- #define PB13_GPIO_Port GPIOB
- #define PB13_High() HAL_GPIO_WritePin(GPIOB, PB13_Pin, GPIO_PIN_SET)
- #define PB13_Low() HAL_GPIO_WritePin(GPIOB, PB13_Pin, GPIO_PIN_RESET)
- #define PB14_Pin GPIO_PIN_14
- #define PB14_GPIO_Port GPIOB
- #define PB14_High() HAL_GPIO_WritePin(GPIOB, PB14_Pin, GPIO_PIN_SET)
- #define PB14_Low() HAL_GPIO_WritePin(GPIOB, PB14_Pin, GPIO_PIN_RESET)
- #define PB15_Pin GPIO_PIN_15
- #define PB15_GPIO_Port GPIOB
- #define PB15_High() HAL_GPIO_WritePin(GPIOB, PB15_Pin, GPIO_PIN_SET)
- #define PB15_Low() HAL_GPIO_WritePin(GPIOB, PB15_Pin, GPIO_PIN_RESET)
- #define PC6_Pin GPIO_PIN_6
- #define PC6_GPIO_Port GPIOC
- #define PC6_High() HAL_GPIO_WritePin(GPIOC, PC6_Pin, GPIO_PIN_SET)
- #define PC6_Low() HAL_GPIO_WritePin(GPIOC, PC6_Pin, GPIO_PIN_RESET)
- #define PC7_Pin GPIO_PIN_7
- #define PC7_GPIO_Port GPIOC
- #define PC7_High() HAL_GPIO_WritePin(GPIOC, PC7_Pin, GPIO_PIN_SET)
- #define PC7_Low() HAL_GPIO_WritePin(GPIOC, PC7_Pin, GPIO_PIN_RESET)
- #define PD0_Pin GPIO_PIN_0
- #define PD0_GPIO_Port GPIOD
- #define PD0_High() HAL_GPIO_WritePin(GPIOD, PD0_Pin, GPIO_PIN_SET)
- #define PD0_Low() HAL_GPIO_WritePin(GPIOD, PD0_Pin, GPIO_PIN_RESET)
- #define PD1_Pin GPIO_PIN_1
- #define PD1_GPIO_Port GPIOD
- #define PD1_High() HAL_GPIO_WritePin(GPIOD, PD1_Pin, GPIO_PIN_SET)
- #define PD1_Low() HAL_GPIO_WritePin(GPIOD, PD1_Pin, GPIO_PIN_RESET)
- #define PD2_Pin GPIO_PIN_2
- #define PD2_GPIO_Port GPIOD
- #define PD2_High() HAL_GPIO_WritePin(GPIOD, PD2_Pin, GPIO_PIN_SET)
- #define PD2_Low() HAL_GPIO_WritePin(GPIOD, PD2_Pin, GPIO_PIN_RESET)
- #define PD3_Pin GPIO_PIN_3
- #define PD3_GPIO_Port GPIOD
- #define PD3_High() HAL_GPIO_WritePin(GPIOD, PD3_Pin, GPIO_PIN_SET)
- #define PD3_Low() HAL_GPIO_WritePin(GPIOD, PD3_Pin, GPIO_PIN_RESET)
- /* USER CODE BEGIN Private defines */
- extern void BEE_GPIO_HORSE(void);
- /* USER CODE END Private defines */
- #endif /* __LED_H */
- /****END OF FILE****/
复制代码
LED.C文件
KEY.H文件
- #ifndef __KEY_H
- #define __KEY_H
- /* Includes ------------------------------------------------------------------*/
- #include "stm32g0xx_hal.h"
- typedef struct
- {
- uint8_t NUM;
- } KEY_Struct;
- /************* 共5个按键 *************/
- typedef enum {
- KEY_B5= 1, //按键B5
- KEY_C13, //按键C13
- KEY_A0, //按键A0
- KEY_A2, //按键A2
- KEY_B0, //按键B0
- } KEYEnum;
- /* Private defines ---------------INPUT AND READ PIN---------------------------*/
- #define PB5_Pin GPIO_PIN_5
- #define PB5_GPIO_Port GPIOB
- #define PB5_Read() HAL_GPIO_ReadPin(GPIOB, PB5_Pin)
- #define PC13_Pin GPIO_PIN_13
- #define PC13_GPIO_Port GPIOC
- #define PC13_Read() HAL_GPIO_ReadPin(GPIOC, PC13_Pin)
- #define PA0_Pin GPIO_PIN_0
- #define PA0_GPIO_Port GPIOA
- #define PA0_Read() HAL_GPIO_ReadPin(GPIOA, PA0_Pin)
- #define PA2_Pin GPIO_PIN_2
- #define PA2_GPIO_Port GPIOA
- #define PA2_Read() HAL_GPIO_ReadPin(GPIOA, PA2_Pin)
- #define PB0_Pin GPIO_PIN_0
- #define PB0_GPIO_Port GPIOB
- #define PB0_Read() HAL_GPIO_ReadPin(GPIOB, PB0_Pin)
- /* USER CODE BEGIN Private defines */
- extern void BEE_KEY_READ(void);
- extern void BEE_KEY_LED(void);
- /* USER CODE END Private defines */
- #endif /* __KEY_H */
复制代码
KEY.C文件
- #include "BEE_KEY.h"
- #include "BEE_LED.h"
- KEY_Struct KEY = {0};
- /* Private function prototypes --------5 KEY AND LED ---------------------*/
- void BEE_KEY_READ(void)
- {
- if (PB5_Read()==0)
- KEY.NUM=KEY_B5;
- //else
- // KEY.NUM=0;
- if (PC13_Read()==0)
- KEY.NUM=KEY_C13;
- //else
- // KEY.NUM=0;
- if (PA0_Read()==0)
- KEY.NUM=KEY_A0;
- // else
- // KEY.NUM=0;
- if (PA2_Read()==0)
- KEY.NUM=KEY_A2;
- //else
- // KEY.NUM=0;
- if (PB0_Read()==0)
- KEY.NUM=KEY_B0;
- //else
- // KEY.NUM=0;
- }
- void BEE_KEY_LED(void)
- {
- switch(KEY.NUM)
- {
- case KEY_B5:
- PB4_High();
- PB6_Low();
- PB7_Low();
- PB8_Low();
- PB9_Low();
- break ;
- case KEY_C13:
- PB6_High();
- PB4_Low();
- PB7_Low();
- PB8_Low();
- PB9_Low();
- break ;
- case KEY_A0:
- PB7_High();
- PB6_Low();
- PB4_Low();
- PB8_Low();
- PB9_Low();
- break ;
- case KEY_A2:
- PB8_High();
- PB6_Low();
- PB7_Low();
- PB4_Low();
- PB9_Low();
- break ;
- case KEY_B0:
- PB9_High();
- PB6_Low();
- PB7_Low();
- PB8_Low();
- PB4_Low();
- break ;
- default :
- KEY.NUM = 0 ;
- break ;//没有符合的条件即执行本default 非必须
- }
- }
复制代码
4.编写main主程序
- while (1)
- {
- HAL_Delay(100);
- BEE_KEY_READ();
- BEE_KEY_LED();
- }
复制代码
5.最后实现功能说明:按下PB5键,B4蓝灯点亮;按下PC13键,B6绿灯点亮;按下PA0键,B7黄灯点亮;按下PA2键,B8红灯点亮;按下PB0键,B9白灯点亮。
————————————————
版权声明:米蜂科技
|