BusIn
BusIn 类层次结构
使用 BusIn API,您可以创建许多可以作为一个值读取的 DigitalIn 引脚。此抽象对于一次检查多个输入非常有用。您可以使用此 API 更快地编写更清晰的代码。
您可以将任何编号的 Arm Mbed 引脚用作 BusIn 中的 DigitalIn。
提示:
- 总线中最多可以有 16 个引脚。
- 构造函数中引脚的顺序是字节顺序中引脚的相反顺序。如果你有 BusIn(a,b,c,d,e,f,g,h)那么字节中的位的顺序是 hgfedcba,其中 a 位为 0,b 为位 1,c 为位 2,依此类推。
BusIn 类参考
公共成员函数 | |
BusIn (PinName p0, PinName p1=NC, PinName p2=NC, PinName p3=NC, PinName p4=NC, PinName p5=NC, PinName p6=NC, PinName p7=NC, PinName p8=NC, PinName p9=NC, PinName p10=NC, PinName p11=NC, PinName p12=NC, PinName p13=NC, PinName p14=NC, PinName p15=NC) | |
BusIn (PinName pins[16]) | |
int | read () |
void | mode (PinMode pull) |
int | mask () |
operator int () | |
DigitalIn & | operator[] (int index) |
受保护的属性 | |
DigitalIn * | _pin [16] |
int | _nc_mask |
PlatformMutex | _mutex |
BusIn Hello World!
/* mbed Example Program
* Copyright (c) 2006-2014 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "mbed.h"
BusIn nibble(D0, D1, D2, D3); // Change these pins to buttons on your board.
int main() {
// Optional: set mode as PullUp/PullDown/PullNone/OpenDrain
nibble.mode(PullNone);
while(1) {
// check bits set in nibble
switch(nibble & nibble.mask()) { // read the bus and mask out bits not being used
case 0x0: printf("0b0000, D3,D2,D1,D0 are low \n\r");break;
case 0x1: printf("0b0001, D0 is high \n\r");break;
case 0x2: printf("0b0010, D1 is high \n\r");break;
case 0x3: printf("0b0011, D1,D0 are high \n\r");break;
case 0x4: printf("0b0100, D2 is high \n\r");break;
case 0x5: printf("0b0101, D2, ,D0 are high \n\r");break;
case 0x6: printf("0b0110, D2,D1 are high \n\r");break;
case 0x7: printf("0b0111, D2,D1,D0 are high \n\r");break;
case 0x8: printf("0b1000, D3 is high \n\r");break;
// ...
case 0xF: printf("0b1111, D3,D2,D1,D0 are high \n\r");break;
}
wait(1);
}
}