你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何将前面的宏定义作为后面的宏定义的参数

[复制链接]
qag 提问时间:2017-7-7 16:52 /
本帖最后由 qag 于 2017-7-7 16:55 编辑

比如在移植的时候,需要配置引脚,经常要改下面的代码
  1. #define SDA0_PERIPHCLOCK        RCC_APB2Periph_GPIOB
  2. #define SDA0_GPIO                     GPIOB
复制代码
#define SDA0_PIN              GPIO_Pin_9
#define SDA0_OUT             PORTB_Out(9)
#define SDA0_IN             PORTB_In(9)
想实现的是,只要改
  1. #define SDA0                             B9
复制代码

剩下的宏定义就能根据此自动对应地改变。

搜索了下预处理指令中好像没有相关的内容,请教大家该如何实现。
收藏 评论9 发布时间:2017-7-7 16:52

举报

9个回答
creep 回答时间:2017-7-7 17:13:35
本帖最后由 creep 于 2017-7-7 17:14 编辑

http://www.cnblogs.com/3me-linux/p/5825940.html

试下这个连接符,不知道行不行。
废鱼 回答时间:2017-7-7 19:34:51
理论是可以的,比如用一个计算公式取地址。如下代码:
#define gpiox(x) ((GPIOB_BASE-GPIOA_BASE)*(X-0X0A)+GPIOA_BASE)
或者如下:
#define gpiox(x)  GPIO##x

这些都是想法,楼主可以根据实际情况来选择使用。
eagle0754 回答时间:2017-7-7 22:45:45
联接符满足你要求
MrJiu 回答时间:2017-7-8 09:54:48
你可以参考一下芯片定义的头文件。。。。
zhao.zhao 回答时间:2017-7-8 13:20:08
简单一点,一般我再定义一个SDA引脚,为了和GPIO_PIN_9区别,我一般这样做
.....
#define    PIN9     9
.....
#define   pinSDA   PIN9
.....
#define SDA0_OUT          PORTB_Out(pinSDA)
#define SDA0_IN             PORTB_In(pinSDA)

qag 回答时间:2017-7-10 10:31:14
安 发表于 2017-7-7 19:34
理论是可以的,比如用一个计算公式取地址。如下代码:
#define gpiox(x) ((GPIOB_BASE-GPIOA_BASE)*(X-0X0A ...

好像编译器不支持把一个宏作为另一个宏的参数呀
.c
GPIO_Init(GPIOX(LED_PORT), &GPIO_InitStructure);

.h
#define LED_PIN         13
#define LED_PORT        C

#define GPIOX(x)      GPIO##x

会报错
qag 回答时间:2017-7-10 11:02:09
安 发表于 2017-7-7 19:34
理论是可以的,比如用一个计算公式取地址。如下代码:
#define gpiox(x) ((GPIOB_BASE-GPIOA_BASE)*(X-0X0A ...

#define gpiox(x)  GPIO##x

这个测试了,x不能是另一个宏,这样没有变得简便
废鱼 回答时间:2017-7-10 14:08:13
C要定义为0x0C,我是举例大概这样使用,具体要根据实际情况进行改变。
废鱼 回答时间:2017-7-11 14:45:12
我使用如下代码,没有问题:
#define STD_GPIOx(x)              (GPIOA_BASE + (GPIOB_BASE - GPIOA_BASE)*(x))

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版