OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 119|回复: 10

读USB例程的时候遇到的一个小问题

[复制链接]

62

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
625
金钱
625
注册时间
2013-11-15
在线时间
80 小时
发表于 2025-1-4 15:11:39 | 显示全部楼层 |阅读模式
5金钱
在STM32F429的例程中,USB那一章
有一个宏定义
#define USBx_PCGCCTL    *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE)

全文都没有找到USBx_BASE定义在哪里
工程中出现的 USBx_BASE都是出现在函数中的局部变量
请问是我没有找到这个变量,还是这是宏定义的一个知识点

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3327

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8416
金钱
8416
注册时间
2020-5-11
在线时间
3837 小时
发表于 2025-1-4 15:26:54 | 显示全部楼层
如果编译通过,你可以右键go to def...
专治疑难杂症
回复

使用道具 举报

62

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
625
金钱
625
注册时间
2013-11-15
在线时间
80 小时
 楼主| 发表于 2025-1-4 15:32:09 | 显示全部楼层
LcwSwust 发表于 2025-1-4 15:26
如果编译通过,你可以右键go to def...

右键和搜索都做过了 ,右键的话,没有转到定义 在左下角出现了一个browser
回复

使用道具 举报

10

主题

3327

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8416
金钱
8416
注册时间
2020-5-11
在线时间
3837 小时
发表于 2025-1-4 15:36:39 | 显示全部楼层
归荑洵 发表于 2025-1-4 15:32
右键和搜索都做过了 ,右键的话,没有转到定义 在左下角出现了一个browser

可能是有多个定义,那就browser里找找看
专治疑难杂症
回复

使用道具 举报

62

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
625
金钱
625
注册时间
2013-11-15
在线时间
80 小时
 楼主| 发表于 2025-1-4 15:37:40 | 显示全部楼层
LcwSwust 发表于 2025-1-4 15:36
可能是有多个定义,那就browser里找找看

可能我对宏的理解不够 ,所有出现他的地方都是函数内的局部变量
回复

使用道具 举报

10

主题

3327

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8416
金钱
8416
注册时间
2020-5-11
在线时间
3837 小时
发表于 2025-1-4 15:45:53 | 显示全部楼层
本帖最后由 LcwSwust 于 2025-1-4 15:53 编辑
归荑洵 发表于 2025-1-4 15:37
可能我对宏的理解不够 ,所有出现他的地方都是函数内的局部变量

那就是局部变量呗,总之是有定义对吧。这里的宏定义就是字符串替换,
将“USBx_PCGCCTL”替换为 “*(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE)”,
你也可以手动将文字进行替换,就不需要宏定义了,这样就看得懂了。
专治疑难杂症
回复

使用道具 举报

62

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
625
金钱
625
注册时间
2013-11-15
在线时间
80 小时
 楼主| 发表于 2025-1-4 15:55:56 | 显示全部楼层
LcwSwust 发表于 2025-1-4 15:45
那就是局部变量呗,总之是有定义对吧。这里的宏定义就是字符串替换,
将“USBx_PCGCCTL”替换为 “*(__I ...

没有看懂,这正是我不能理解的
回复

使用道具 举报

10

主题

3327

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8416
金钱
8416
注册时间
2020-5-11
在线时间
3837 小时
发表于 2025-1-4 15:57:27 | 显示全部楼层
归荑洵 发表于 2025-1-4 15:55
没有看懂,这正是我不能理解的

你认为哪里不懂或哪里不对?有语法上的错误?
建议举个例子将代码发上来
专治疑难杂症
回复

使用道具 举报

62

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
625
金钱
625
注册时间
2013-11-15
在线时间
80 小时
 楼主| 发表于 2025-1-4 17:01:05 | 显示全部楼层
LcwSwust 发表于 2025-1-4 15:57
你认为哪里不懂或哪里不对?有语法上的错误?
建议举个例子将代码发上来

HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed)
{
  uint32_t USBx_BASE = (uint32_t)USBx;

  USBx_DEVICE->DCFG |= speed;
  return HAL_OK;
}
#define USBx_PCGCCTL    *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE)
难道可以这样写  ?搞不懂
回复

使用道具 举报

62

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
625
金钱
625
注册时间
2013-11-15
在线时间
80 小时
 楼主| 发表于 2025-1-4 17:30:55 | 显示全部楼层
LcwSwust 发表于 2025-1-4 15:45
那就是局部变量呗,总之是有定义对吧。这里的宏定义就是字符串替换,
将“USBx_PCGCCTL”替换为 “*(__I ...

你说的对 ,是我孤陋寡闻了
回复

使用道具 举报

10

主题

3327

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8416
金钱
8416
注册时间
2020-5-11
在线时间
3837 小时
发表于 2025-1-6 09:13:53 | 显示全部楼层
归荑洵 发表于 2025-1-4 17:01
HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed)
{
  uint32_t USBx_ ...

这里只是定义但未引用,可以不管它。
专治疑难杂症
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-19 02:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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