[STM8] GPIO_TypeDef未定义问题。

[复制链接]
2462|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
能详细说一下吗?

这东西一般都是头文件定义的,包含进去就可以了
 楼主| 负熵 发表于 2019-8-21 17:34 | 显示全部楼层
ayb_ice 发表于 2019-8-21 17:12
这东西一般都是头文件定义的,包含进去就可以了

找到原因了,key.h也要#include "stm8s.h",我还以为在key.c 里面包含进去就可以了
xyz549040622 发表于 2019-8-21 19:57 | 显示全部楼层
一般在.c中包含也是可以的,但是你.h中函数的参数中有GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin这样的参数类型,是在stm8s.h中包含的了,所以key.h会报错,假设你key.h函数申明的参数中没这些的话,定义在key.c中也是可以的。
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"
guanjiaer 发表于 2019-9-19 11:49 | 显示全部楼层
这个不用俺们自己定义吧
heimaojingzhang 发表于 2019-9-19 11:57 | 显示全部楼层
原来的头文件是不是就有啊
keaibukelian 发表于 2019-9-19 12:00 | 显示全部楼层
是不是文件缺失啊
paotangsan 发表于 2019-9-19 12:06 | 显示全部楼层
用cube生成的就不会出现这种问题啊
labasi 发表于 2019-9-19 12:33 | 显示全部楼层
应该少头文件了
wowu 发表于 2019-9-19 12:46 | 显示全部楼层
重新生成一下试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

80

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部