初中生
最后登录1970-1-1
在线时间 小时
注册时间2020-10-7
|
- main.c
- #include "led/bsp_led.h"
- #include "led/bsp_key.h"
- #include "main.h"
- void LED_GPIO_Config();
- void Key_GPIO_Config(void);
- int main(void)
- {
- LED_GPIO_Config();
- Key_GPIO_Config();
- while (1)
- {
- LED_RED;
- if(Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON)
- {
- LED1_TOGGLE;
- }
- if(Key_Scan(KEY2_GPIO_PORT,KEY2_PIN) == KEY_ON)
- {
- LED2_TOGGLE;
- }
- }
- }
复制代码
- bsp_led.c
- #include "led/bsp_led.h"
- #include <stm32f1xx_hal_gpio.h>
- void LED_GPIO_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- //RCC_APB2PeriphClockCmd(LED1_GPIO_CLK | LED2_GPIO_CLK | LED3_GPIO_CLK, ENABLE);
- __HAL_RCC_GPIOB_CLK_ENABLE();
- GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
- GPIO_InitStructure.Pull = GPIO_PULLUP;
- GPIO_InitStructure.Pin = LED1_GPIO_PIN;
- HAL_GPIO_Init(LED1_GPIO_PORT,&GPIO_InitStructure); //GPIO端口初始化
- GPIO_InitStructure.Pin = LED2_GPIO_PIN;
- HAL_GPIO_Init(LED2_GPIO_PORT,&GPIO_InitStructure);
- GPIO_InitStructure.Pin = LED3_GPIO_PIN;
- HAL_GPIO_Init(LED3_GPIO_PORT,&GPIO_InitStructure);
- LED_RGBOFF;
- }
- void Delay(unsigned int i)
- {
- for(;i>0;i--){}
- }
复制代码- bsp_led.h
- #ifndef STM32_5_BSP_LED_H
- #define STM32_5_BSP_LED_H
- #include <stm32f1xx_hal.h>
- #include <stm32f1xx_hal_gpio.h>
- #define LED1_GPIO_PORT GPIOB
- #define LED1_GPIO_PIN GPIO_PIN_5
- #define LED2_GPIO_PORT GPIOB
- #define LED2_GPIO_PIN GPIO_PIN_0
- #define LED3_GPIO_PORT GPIOB
- #define LED3_GPIO_PIN GPIO_PIN_1
- #define ON GPIO_PIN_RESET
- //#define ON 0
- #define OFF GPIO_PIN_SET
- //#define OFF 1
- #define LED1(a) HAL_GPIO_WritePin(LED1_GPIO_PORT,LED1_GPIO_PIN,a)
- #define LED2(a) HAL_GPIO_WritePin(LED2_GPIO_PORT,LED2_GPIO_PIN,a)
- #define LED3(a) HAL_GPIO_WritePin(LED3_GPIO_PORT,LED3_GPIO_PIN,a)
- //#define digitalHi(p,i) {p->BSRR=i;}
- #define digitalHi(p,i) {p->BSRR=i;}
- #define digitalLo(p,i) {p->BRR=i;}
- //#define digitalLo(p,i) {p->BSRR=(uint32_t)i << 16;}
- #define digitalToggle(p,i) {p->ODR ^= i;}
- #define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_GPIO_PIN)
- #define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN)
- #define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_GPIO_PIN)
- #define LED2_TOGGLE digitalToggle(LED2_GPIO_PORT,LED2_GPIO_PIN)
- #define LED2_OFF digitalHi(LED2_GPIO_PORT,LED2_GPIO_PIN)
- #define LED2_ON digitalLo(LED2_GPIO_PORT,LED2_GPIO_PIN)
- #define LED3_TOGGLE digitalToggle(LED3_GPIO_PORT,LED3_GPIO_PIN)
- #define LED3_OFF digitalHi(LED3_GPIO_PORT,LED3_GPIO_PIN)
- #define LED3_ON digitalLo(LED3_GPIO_PORT,LED3_GPIO_PIN)
- #define LED_RED {LED1_ON; LED2_OFF; LED3_OFF;}
- #define LED_GREEN {LED1_OFF; LED2_ON; LED3_OFF;}
- #define LED_BLUE {LED1_OFF; LED2_OFF; LED3_ON;}
- #define LED_YELLOW {LED1_ON; LED2_ON; LED3_OFF;}
- #define LED_PURPLE {LED1_ON; LED2_OFF; LED3_ON;}
- #define LED_CYAN {LED1_OFF; LED2_ON; LED3_ON;}
- #define LED_WHITE {LED1_ON; LED2_ON; LED3_ON;}
- #define LED_RGBOFF {LED1_OFF;LED2_OFF; LED3_OFF;}
- void LED_GPIO_Config(void);
- void Delay(unsigned int);
- #endif //STM32_5_BSP_LED_H
复制代码- bsp_key.c
- #include "led/bsp_key.h"
- void Key_GPIO_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- KEY1_GPIO_CLK_ENABLE();
- KEY2_GPIO_CLK_ENABLE();
- GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- GPIO_InitStructure.Pin = KEY1_PIN;
- HAL_GPIO_Init(KEY1_GPIO_PORT,&GPIO_InitStructure);
- GPIO_InitStructure.Pin = KEY2_PIN;
- HAL_GPIO_Init(KEY2_GPIO_PORT,&GPIO_InitStructure);
- }
- uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
- {
- if (HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == KEY_ON)
- {
- while(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == KEY_ON)
- {
- return KEY_ON;
- }
- } else{
- return KEY_OFF;
- }
- }
复制代码- bsp_key.h
- #ifndef STM32_5_BSP_KEY_H
- #define STM32_5_BSP_KEY_H
- #include <stdint-gcc.h>
- #include "stm32f1xx_hal.h"
- #define KEY1_PIN GPIO_PIN_0
- #define KEY1_GPIO_PORT GPIOA
- //#define KEY1_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
- #define KEY1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE();
- #define KEY2_PIN GPIO_PIN_13
- #define KEY2_GPIO_PORT GPIOC
- #define KEY2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE();
- #define KEY_ON 1
- #define KEY_OFF 0
- uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
- void Key_GPIO_Config(void);
- #endif //STM32_5_BSP_KEY_H
复制代码 使用的是HAL库,板子是指南者,按下reset灯会熄灭,按下Key1灯变暗,按下key2灯变量略带黄绿光
|
|