在keil5里面
第一个问题:
我的bsp_key.h文件代码如下
#ifndef __KEY_H
#define __KEY_H
#include "stm32f10x.h"
// 引脚定义
#define KEY1_GPIO_CLK RCC_APB2Periph_GPIOD
#define KEY1_GPIO_PORT GPIOD
#define KEY1_GPIO_PIN GPIO_Pin_11
#define KEY2_GPIO_CLK RCC_APB2Periph_GPIOD
#define KEY2_GPIO_PORT GPIOD
#define KEY2_GPIO_PIN GPIO_Pin_12
#define KEY3_GPIO_CLK RCC_APB2Periph_GPIOA
#define KEY3_GPIO_PORT GPIOA
#define KEY3_GPIO_PIN GPIO_Pin_2
#define KEY4_GPIO_CLK RCC_APB2Periph_GPIOA
#define KEY4_GPIO_PORT GPIOA
#define KEY4_GPIO_PIN GPIO_Pin_3
#define KEYL_GPIO_CLK RCC_APB2Periph_GPIOB
#define KEYL_GPIO_PORT GPIOB
#define KEYL1_GPIO_PIN GPIO_Pin_15
#define KEYL2_GPIO_PIN GPIO_Pin_14
#define KEYL3_GPIO_PIN GPIO_Pin_13
/** 按键按下标置宏
* 按键按下为高电平,设置 KEY_ON=1, KEY_OFF=0
* 若按键按下为低电平,把宏设置成KEY_ON=0 ,KEY_OFF=1 即可
*/
#define KEY_ON 0
#define KEY_OFF 1
// 按键 GPIO 配置函数声明
void Key_GPIO_Config(void);
// 按键扫描函数声明
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
// 按键公共端 GPIO 配置函数声明
void Key_Com_GPIO_Config(void);
// 状态机按键读取函数声明
uint8_t read_key(void);
// 外部中断配置函数声明
void EXTI_Key1_Config(void);
void EXTI_Key2_Config(void);
void EXTI_Key3_Config(void);
void EXTI_Key4_Config(void);
// 按键消抖函数声明
void KEY_DEBOUNCE_DELAY(uint32_t ms);
#endif /* __KEY_H */
但是在dsp_key.c文件里KEY3和KEY4报错为未定义,KEY1和KEY2都能正常使用
第二个问题:
在main.c文件里

图片中显示uint8_t bsp_RunPer1ms = 0;的声明类型有问题,要加上volatile,可是加上后还是报一样的错,找到bsp_RunPer1ms的定义是uint8_t bsp_RunPer1ms = 0;后面在这个也加上volatile也没用