打印
[STM8]

GPIO_TypeDef未定义问题。

[复制链接]
1885|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
负熵|  楼主 | 2019-8-21 16:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教一下,stm8做一个按键检测程序,编译的时候提示Error[Pe020]: identifier "GPIO_TypeDef" is undefined E:\stm8\stm8s_lcd1602_test\Bsp\key.h ,Error[Pe020]: identifier "GPIO_Pin_TypeDef" is undefined E:\stm8\stm8s_lcd1602_test\Bsp\key.h  


按键扫描
char Key_Scan(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
  /*检测是否有按键按下 */
  if(GPIO_ReadInputPin(GPIOx,GPIO_Pin) == KEY_ON )
  {
    /*延时消抖*/
    //Delay(1);
    asm("nop");
   
   
    if(GPIO_ReadInputPin(GPIOx,GPIO_Pin) == KEY_ON )
    {
      /*等待按键释放 */
      while(GPIO_ReadInputPin(GPIOx,GPIO_Pin) == KEY_ON);
      return KEY_ON;
    }
    else
      return KEY_OFF;
  }
  else
    return KEY_OFF;
}
为什么是key.h报错?
key.h如下
#ifndef __key_H__
#define __key_H__


void key_config(void);
void display(char screens);
char Key_Scan(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin);
#endif /* __key_H__ */




使用特权

评论回复
沙发
ayb_ice| | 2019-8-21 17:05 | 只看该作者
头文件

使用特权

评论回复
板凳
负熵|  楼主 | 2019-8-21 17:10 | 只看该作者
本帖最后由 负熵 于 2019-8-21 17:13 编辑

能详细说一下吗?网上搜了一下,说是
stm8s.h缺少定义,我看了一下
stm8s.h文件也有gpiod方面的定义

#define CLK ((CLK_TypeDef *) CLK_BaseAddress)

#define EXTI ((EXTI_TypeDef *) EXTI_BaseAddress)

#define FLASH ((FLASH_TypeDef *) FLASH_BaseAddress)

#define OPT ((OPT_TypeDef *) OPT_BaseAddress)

#define GPIOA ((GPIO_TypeDef *) GPIOA_BaseAddress)

#define GPIOB ((GPIO_TypeDef *) GPIOB_BaseAddress)

#define GPIOC ((GPIO_TypeDef *) GPIOC_BaseAddress)

#define GPIOD ((GPIO_TypeDef *) GPIOD_BaseAddress)

#define GPIOE ((GPIO_TypeDef *) GPIOE_BaseAddress)

#define GPIOF ((GPIO_TypeDef *) GPIOF_BaseAddress)

使用特权

评论回复
地板
ayb_ice| | 2019-8-21 17:12 | 只看该作者
负熵 发表于 2019-8-21 17:10
能详细说一下吗?

这东西一般都是头文件定义的,包含进去就可以了

使用特权

评论回复
5
负熵|  楼主 | 2019-8-21 17:34 | 只看该作者
ayb_ice 发表于 2019-8-21 17:12
这东西一般都是头文件定义的,包含进去就可以了

找到原因了,key.h也要#include "stm8s.h",我还以为在key.c 里面包含进去就可以了

使用特权

评论回复
6
xyz549040622| | 2019-8-21 19:57 | 只看该作者
一般在.c中包含也是可以的,但是你.h中函数的参数中有GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin这样的参数类型,是在stm8s.h中包含的了,所以key.h会报错,假设你key.h函数申明的参数中没这些的话,定义在key.c中也是可以的。

使用特权

评论回复
7
ayb_ice| | 2019-8-22 08:27 | 只看该作者
负熵 发表于 2019-8-21 17:34
找到原因了,key.h也要#include "stm8s.h",我还以为在key.c 里面包含进去就可以了 ...

不必那样

//key.c
#include <stm8s.h>
#include "key.h"

使用特权

评论回复
8
guanjiaer| | 2019-9-19 11:49 | 只看该作者
这个不用俺们自己定义吧

使用特权

评论回复
9
heimaojingzhang| | 2019-9-19 11:57 | 只看该作者
原来的头文件是不是就有啊

使用特权

评论回复
10
keaibukelian| | 2019-9-19 12:00 | 只看该作者
是不是文件缺失啊

使用特权

评论回复
11
paotangsan| | 2019-9-19 12:06 | 只看该作者
用cube生成的就不会出现这种问题啊

使用特权

评论回复
12
labasi| | 2019-9-19 12:33 | 只看该作者
应该少头文件了

使用特权

评论回复
13
wowu| | 2019-9-19 12:46 | 只看该作者
重新生成一下试试看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

80

帖子

0

粉丝