打印
[STM8]

GPIO_TypeDef未定义问题

[复制链接]
2179|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stly|  楼主 | 2021-8-8 21:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm8做一个按键检测程序,编译的时候提示Error[Pe020]: identifier "GPIO_TypeDef" is undefined

使用特权

评论回复
沙发
jlyuan| | 2021-8-8 21:59 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
stly|  楼主 | 2021-8-8 22:02 | 只看该作者

按键扫描
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__ */

使用特权

评论回复
地板
juventus9554| | 2021-8-8 22:04 | 只看该作者
头文件

使用特权

评论回复
5
pengf| | 2021-8-8 22:06 | 只看该作者
能详细说一下吗?网上搜了一下,说是
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)

使用特权

评论回复
6
jiahy| | 2021-8-8 22:11 | 只看该作者
这东西一般都是头文件定义的,包含进去就可以了

使用特权

评论回复
7
stly|  楼主 | 2021-8-8 22:14 | 只看该作者
找到原因了,key.h也要#include "stm8s.h",我还以为在key.c 里面包含进去就可以了

使用特权

评论回复
8
yszong| | 2021-8-8 22:16 | 只看该作者
一般在.c中包含也是可以的,但是你.h中函数的参数中有GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin这样的参数类型,是在stm8s.h中包含的了

使用特权

评论回复
9
liuzaiy| | 2021-8-8 22:18 | 只看该作者
所以key.h会报错,假设你key.h函数申明的参数中没这些的话,定义在key.c中也是可以的。

使用特权

评论回复
10
liuzaiy| | 2021-8-8 22:24 | 只看该作者
不必那样

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

使用特权

评论回复
11
jlyuan| | 2021-8-8 22:26 | 只看该作者
这个不用俺们自己定义吧

使用特权

评论回复
12
dingy| | 2021-8-8 22:28 | 只看该作者
原来的头文件是不是就有啊

使用特权

评论回复
13
dingy| | 2021-8-8 22:31 | 只看该作者
keaibukelian|技术达人 | 2019-9-19 12:00 | 只看该作者
是不是文件缺失啊

使用特权

评论回复
14
liuzaiy| | 2021-8-8 22:34 | 只看该作者
用cube生成的就不会出现这种问题啊

使用特权

评论回复
15
jlyuan| | 2021-8-8 22:36 | 只看该作者
应该少头文件了

使用特权

评论回复
16
jlyuan| | 2021-8-8 22:38 | 只看该作者
重新生成一下试试看

使用特权

评论回复
17
stly|  楼主 | 2021-8-8 22:40 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
18
stly|  楼主 | 2021-8-8 22:42 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

433

主题

7058

帖子

0

粉丝