[开发工具] cubemx生成代码中gpio的结构错了?

[复制链接]
1231|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生成的理论上不会出现这种错误,毕竟都是测试完成后才会发布出来
专注于嵌入式 发表于 2022-12-21 08:43 | 显示全部楼层
#define LCD_DC_HIGH()                       WRITE_REG(GPIOA->BRR, GPIO_PIN_6) 这个代码是你自己写的还是软件生成的?还是你拿的别人的代码?
dalarang 发表于 2022-12-21 11:31 | 显示全部楼层
STM32有些系列是没有BRR的,BSRR的高16位起到BRR的作用,就这么简单。
sonicll 发表于 2022-12-23 15:44 | 显示全部楼层
说明你这个型号的GPIO就没有BRR这个寄存器,你自己对照手册修改一下寄存器名字就可以了
SantaBunny 发表于 2023-1-2 17:17 | 显示全部楼层
STM32有些系列是没有BRR的,你看看是不是用的不对
MessageRing 发表于 2023-1-3 13:32 | 显示全部楼层
没有BRR寄存器吧
 楼主| 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生成后增加的,不过我现在没把握,毕竟代码历史变化巨大,增加了很多东西
那么,这句话正确写法应该是?(拱手)

评论

翻了一下  发表于 2023-1-24 02:18
翻了一下好像是mx里面的一个package的代码,lcd功能相关的  发表于 2023-1-24 02:17
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

470

帖子

1

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