Z-Stack中宏定义技巧ST( )宏定义理解

这个宏定义如下(TI Z-Stack的hal_defs.h文件中):#define st(x) do { x } while (__LINE__ == -1)。这个宏定义被其它的宏定义用来构建一个完全有效的C声明。如果没有这个宏定义,那么在if/else条件语句中可能得不到预期的结果。
例如,以下的应用
#define SET_REGS() st( ioreg1 = 0; ioreg2 = 0; )
代替#define SET_REGS() { ioreg1 = 0; ioreg2 = 0; }
或 #define SET_REGS() ioreg1 = 0; ioreg2 = 0;
最后这个宏定义在if/else条件句中将不能得到预期的结果,倒数第二个宏将导致编译器错误在某些使用if/else结构时。
#define st(x) do { x } while (__LINE__ == -1)语句分析:
__LINE__是C/C++的内部宏定义,得到当前代码的行号.
do{x} while(__LINE__==-1) 因行号肯定是大于-1的,所以这个循环只执行一次。

以上内容摘自:http://blog.21ic.com/user1/6121/archives/2010/76525.html

下面是自己的看代码时的一些内容:

HAL_BOARD_INIT()中调用了->HAL_TURN_OFF_LED1()

而#define HAL_TURN_OFF_LED1() st( LED1_SBIT =  LED1_POLARITY  (0); )

补充:#define st(x) do { x } while (__LINE__ == -1)

#define LED1_SBIT P1_0

#define  LED1_POLARITY  ACTIVE_HIGH

#define ACTIVE_HIGH !! //注意:这里使用了两个“!!”表示双重取反,很有意思吧。

绕了一圈终于知道其LED是接在P1.0口了。先记到这里
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值