野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 33409|回复: 11

定义结构体指针失败,自己写库失败

[复制链接]
发表于 2017-1-1 21:48:34 | 显示全部楼层 |阅读模式
看视频看到自己写库这一节,我已经在stm32f10x.h文件中定义了结构体和结构体指针,如下
typedef struct
{
    uint32_t   CRL;
    uint32_t   CRH;
    uint32_t   IDR;
    uint32_t   ODR;
    uint32_t   BSRR;
    uint32_t   BRR;
    uint32_t   LCKR;
}GPIO_TypeDef;

#define GPIOE (GPIO_TypeDef*)(GPIOE_BASE)

在源文件这样操作
GPIOE->CRL |= (2 << (5*4));
结果报错,提示信息为expression must have pointer type
为什么会这样,明明GPIOE已经被定义成结构体指针了,而且我已经#include了头文件stm32f10x.h,为什么还是会有这样的错误?
@everyone  @fire

回复

使用道具 举报

发表于 2017-1-1 22:12:07 | 显示全部楼层
看不出问题
回复 支持 反对

使用道具 举报

发表于 2017-1-1 23:51:29 | 显示全部楼层
GPIOE->CRL |= (2 << (5*4));这个改成GPIOE->CRL |= (uint32_t)(2 << (5*4));
回复 支持 反对

使用道具 举报

发表于 2017-1-1 23:54:55 | 显示全部楼层
具体请参照官方库文件的写法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 09:03:20 | 显示全部楼层
显然不是你说的那个问题,错误提示,表明识别不了指针的定义啊,还是谢谢你
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 09:17:34 | 显示全部楼层
好像这样写和视频里没什么区别,但是就是不对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 09:18:51 | 显示全部楼层
求解释哦
好像真的会报错,原因不明
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 09:19:26 | 显示全部楼层
求解释哦
好像真的会报错,原因不明
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 09:43:02 | 显示全部楼层
看出来问题了,#define     GPIOE    ((GPIO_TypeDef*)(GPIOE_BASE))这一句少了最外面的一个括号
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-17 18:11:00 | 显示全部楼层
同问   #define GPIOE (GPIO_TypeDef*)(GPIOE_BASE)错在哪里
回复 支持 反对

使用道具 举报

发表于 2021-5-19 17:00:41 | 显示全部楼层
天启之瞳 发表于 2020-11-17 18:11
同问   #define GPIOE (GPIO_TypeDef*)(GPIOE_BASE)错在哪里

少一个大括号
回复 支持 反对

使用道具 举报

发表于 2021-5-19 17:11:58 | 显示全部楼层
举叉的BSD 发表于 2017-1-2 09:43
看出来问题了,#define     GPIOE    ((GPIO_TypeDef*)(GPIOE_BASE))这一句少了最外面的一个括号 ...

谢谢  弄了一下午 没解决
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 06:20 , Processed in 0.030689 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表