#define IS_GPIO_PIN(PIN) ((((PIN) & (uint16_t)0x00) == 0x00) && ((PIN) !=(uint16_t)0x00))

1   (PIN) & (uint16_t)0x00) == 0x00PIN与0x00相与;无论PIN为何值其相与的结果都为0x00;也就是这个等式恒成立成立; 
2   (PIN) !=(uint16_t)0x00)如果PIN=0x00;就不成立;其他的PIN值都成立; 
1&&2 表示两者都成立为真 否则为假;也就是PIN的值不能为0x00; 
#define GPIO_Pin_0 ((uint16_t)0x0001)   =>#define GPIO_Pin_0 0000 0000 0000 0001 
#define GPIO_Pin_1 ((uint16_t)0x0002)   =>#define GPIO_Pin_0 0000 0000 0000 0010 
#define GPIO_Pin_2 ((uint16_t)0x0003)   =>#define GPIO_Pin_0 0000 0000 0000 0100 
...... 
#define GPIO_Pin_15 ((uint16_t)0x0001)   =>#define GPIO_Pin_0 1000 0000 0000 0000

 

实际应用举例

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  
  GPIOx->BSRR = GPIO_Pin;
}

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值