liuhe_zsc 2025-04-02 21:22 采纳率: 0%
浏览 13

嵌入式大学生问题,主要是关于声明定义的问题

在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文件里

img


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

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-04-02 21:22
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    嵌入式大学生问题,主要是关于声明定义的问题

    你的问题是关于Keil5中 BSP_KEY.H 文件的声明定义问题。

    从你提供的代码来看,这是一个头文件,用于定义一些常量和宏。其中,#ifndef __KEY_H#define __KEY_H 是用于防止头文件被重复包含的预处理指令。

    在这个文件中,你使用了 #include "stm32f10x.h" 将外部头文件包含进来,这个头文件可能包含一些硬件相关的定义和函数声明。

    你的问题可能是关于这些定义和函数的使用和调用问题,或者是关于头文件的组织和使用问题。

    如果你可以提供更多的代码和问题描述,我将尽力帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月2日