打印
[开发工具]

cubemx生成代码中gpio的结构错了?

[复制链接]
889|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wooda|  楼主 | 2022-12-19 13:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
嗯,是这样的,生成的代码有这么一句,编译报结构体中没有这个成员
#define LCD_DC_HIGH()                       WRITE_REG(GPIOA->BRR, GPIO_PIN_6)

结构体定义:
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)

typedef struct
{
  __IO uint32_t MODER;        /*!< GPIO port mode register,                     Address offset: 0x00      */
  __IO uint32_t OTYPER;       /*!< GPIO port output type register,              Address offset: 0x04      */
  __IO uint32_t OSPEEDR;      /*!< GPIO port output speed register,             Address offset: 0x08      */
  __IO uint32_t PUPDR;        /*!< GPIO port pull-up/pull-down register,        Address offset: 0x0C      */
  __IO uint32_t IDR;          /*!< GPIO port input data register,               Address offset: 0x10      */
  __IO uint32_t ODR;          /*!< GPIO port output data register,              Address offset: 0x14      */
  __IO uint32_t BSRR;         /*!< GPIO port bit set/reset registerBSRR,        Address offset: 0x18      */
  __IO uint32_t LCKR;         /*!< GPIO port configuration lock register,       Address offset: 0x1C      */
  __IO uint32_t AFR[2];       /*!< GPIO alternate function register,            Address offset: 0x20-0x24 */
} GPIO_TypeDef;

所以BRR不是结构体成员,所以报错。。。

嗯,我用stm32时间不长,还不熟悉。。。这个可能是什么原因?有bug?
谢谢~~

使用特权

评论回复
沙发
小小蚂蚁举千斤| | 2022-12-20 09:52 | 只看该作者
是的,我理解你说的这个意思,你搜索一下BRR,看是不是只有你自己用了,或者你再确认一下手册吧应该是BRR这个用的不正确

使用特权

评论回复
板凳
一叶倾城wwq| | 2022-12-20 11:19 | 只看该作者
cube生成的库,不需要用到寄存器,我用的HAL库是这样输出的:
#define TEXT_PIN_ON    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET)

使用特权

评论回复
地板
xinmeng_wit| | 2022-12-20 11:52 | 只看该作者
cubeMx生成的理论上不会出现这种错误,毕竟都是测试完成后才会发布出来

使用特权

评论回复
5
专注于嵌入式| | 2022-12-21 08:43 | 只看该作者
#define LCD_DC_HIGH()                       WRITE_REG(GPIOA->BRR, GPIO_PIN_6) 这个代码是你自己写的还是软件生成的?还是你拿的别人的代码?

使用特权

评论回复
6
dalarang| | 2022-12-21 11:31 | 只看该作者
STM32有些系列是没有BRR的,BSRR的高16位起到BRR的作用,就这么简单。

使用特权

评论回复
7
sonicll| | 2022-12-23 15:44 | 只看该作者
说明你这个型号的GPIO就没有BRR这个寄存器,你自己对照手册修改一下寄存器名字就可以了

使用特权

评论回复
8
SantaBunny| | 2023-1-2 17:17 | 只看该作者
STM32有些系列是没有BRR的,你看看是不是用的不对

使用特权

评论回复
9
MessageRing| | 2023-1-3 13:32 | 只看该作者
没有BRR寄存器吧

使用特权

评论回复
10
wooda|  楼主 | 2023-1-17 20:59 | 只看该作者
本帖最后由 wooda 于 2023-1-17 21:00 编辑
专注于嵌入式 发表于 2022-12-21 08:43
#define LCD_DC_HIGH()                       WRITE_REG(GPIOA->BRR, GPIO_PIN_6) 这个代码是你自己写的还 ...

呃,这句话的定义就久远了,我得去翻翻版本记录了,理论上是mx生成后增加的,不过我现在没把握,毕竟代码历史变化巨大,增加了很多东西
那么,这句话正确写法应该是?(拱手)

使用特权

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

本版积分规则

45

主题

464

帖子

1

粉丝