为什么像下面这样定义两个数组?
const uint16_t LEDS = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
const uint16_t LED[4] = {GPIO_Pin_12, GPIO_Pin_13, GPIO_Pin_14, GPIO_Pin_15};
为什么像下面这样定义两个数组?
const uint16_t LEDS = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
const uint16_t LED[4] = {GPIO_Pin_12, GPIO_Pin_13, GPIO_Pin_14, GPIO_Pin_15};
1 回答3.3k 阅读
1.1k 阅读
132 阅读
你这是嵌入式的编程吧, 玩嵌入式不懂位运算不合适哈 ?
就你给的代码来看, 这是为了控制四个LED的, 且应该有类似这样的定义:
通常要点亮
LED 0
, 将对应的GPIO
(一个寄存器, 假设就叫GPIO_LED
)的值与GPIO_Pin_12
做或(|)
运算, 即GPIO_LED | GPIO_Pin_12
, 对应到你的变量定义也可以是GPIO_LED | LED[0]
. 类推点亮其他LED.有时我们需要一次把四个LED全都点亮, 我们可以这么做:
GPIO_LED | LED[0] | LED[1] | LED[2] | LED[3]
.等价于
GPIO_LED | (LED[0] | LED[1] | LED[2] | LED[3])
, 括号里的东西不就是你的变量LEDS
么~