Example #1
0
void pin_mode(PinName pin, PinMode mode) {
    if (pin == (PinName)NC) { return; }
    // set pullup, pulldown,...

    // select resister number
    int group = pin / 10;
    vuint32_t *res = GPFSEL(group);
    vuint32_t shift = (pin % 10) * 3;

    switch(mode){
        case Output:
        case Alt0:
        case Alt1:
        case Alt2:
        case Alt3:
        case Alt4:
        case Alt5:
            *res = (mode << shift) | (*res & ~(0x07 << shift));
            break;
        case PullUp:
        case PullDown:
        case PullNone:
            pin_pull(pin, mode);
            break;
        case Input:
            // register clear(3bit)
            *res &= ~(0x07 << shift);
        default:
            return;
    }
}
Example #2
0
void gpio_set_pulldown(unsigned int pin) {
  pin_pull(pin, PULLDOWN);
}
Example #3
0
void gpio_set_pullup(unsigned int pin) {
  pin_pull(pin, PULLUP);
}