voidbcm2835_delay(unsignedintmillis)[extern]
Delays for the specified number of milliseconds. Uses nanosleep(), and therefore does not use CPU until
the time is up. However, you are at the mercy of nanosleep(). From the manual for nanosleep(): If the
interval specified in req is not an exact multiple of the granularity
underlying clock (see time(7)), then the interval will be rounded up to the next multiple. Furthermore,
after the sleep completes, there may still be a delay before the CPU becomes free to once again execute
the calling thread.
Parametersmillis Delay in milliseconds
voidbcm2835_delayMicroseconds(uint64_tmicros)[extern]
Delays for the specified number of microseconds. Uses a combination of nanosleep() and a busy wait loop
on the BCM2835 system timers, However, you are at the mercy of nanosleep(). From the manual for
nanosleep(): If the interval specified in req is not an exact multiple of the granularity
underlying clock (see time(7)), then the interval will be rounded up to the next multiple. Furthermore,
after the sleep completes, there may still be a delay before the CPU becomes free to once again execute
the calling thread. For times less than about 450 microseconds, uses a busy wait on the System Timer. It
is reported that a delay of 0 microseconds on RaspberryPi will in fact result in a delay of about 80
microseconds. Your mileage may vary.
Parametersmicros Delay in microseconds
voidbcm2835_gpio_afen(uint8_tpin)[extern]
Enable Asynchronous Falling Edge Detect Enable for the specified pin. When a falling edge is detected,
sets the appropriate pin in Event Detect Status. Asynchronous means the incoming signal is not sampled by
the system clock. As such falling edges of very short duration can be detected.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_aren(uint8_tpin)[extern]
Enable Asynchronous Rising Edge Detect Enable for the specified pin. When a rising edge is detected, sets
the appropriate pin in Event Detect Status. Asynchronous means the incoming signal is not sampled by the
system clock. As such rising edges of very short duration can be detected.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_clr(uint8_tpin)[extern]
Sets the specified pin output to LOW.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
Seealsobcm2835_gpio_write()voidbcm2835_gpio_clr_afen(uint8_tpin)[extern]
Disable Asynchronous Falling Edge Detect Enable for the specified pin.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_clr_aren(uint8_tpin)[extern]
Disable Asynchronous Rising Edge Detect Enable for the specified pin.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_clr_fen(uint8_tpin)[extern]
Disable Falling Edge Detect Enable for the specified pin.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_clr_hen(uint8_tpin)[extern]
Disable High Detect Enable for the specified pin.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_clr_len(uint8_tpin)[extern]
Disable Low Detect Enable for the specified pin.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_clr_multi(uint32_tmask)[extern]
Sets any of the first 32 GPIO output pins specified in the mask to LOW.
Parametersmask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
Seealsobcm2835_gpio_write_multi()voidbcm2835_gpio_clr_ren(uint8_tpin)[extern]
Disable Rising Edge Detect Enable for the specified pin.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
uint8_tbcm2835_gpio_eds(uint8_tpin)[extern]
Event Detect Status. Tests whether the specified pin has detected a level or edge as requested by
bcm2835_gpio_ren(), bcm2835_gpio_fen(), bcm2835_gpio_hen(), bcm2835_gpio_len(), bcm2835_gpio_aren(),
bcm2835_gpio_afen(). Clear the flag for a given pin by calling bcm2835_gpio_set_eds(pin);
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
Returns
HIGH if the event detect status for the given pin is true.
uint32_tbcm2835_gpio_eds_multi(uint32_tmask)[extern]
Same as bcm2835_gpio_eds() but checks if any of the pins specified in the mask have detected a level or
edge.
Parametersmask Mask of pins to check. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
Returns
Mask of pins HIGH if the event detect status for the given pin is true.
voidbcm2835_gpio_fen(uint8_tpin)[extern]
Enable Falling Edge Detect Enable for the specified pin. When a falling edge is detected, sets the
appropriate pin in Event Detect Status. The GPRENn registers use synchronous edge detection. This means
the input signal is sampled using the system clock and then it is looking for a ?100? pattern on the
sampled signal. This has the effect of suppressing glitches.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_fsel(uint8_tpin,uint8_tmode)[extern]
Sets the Function Select register for the given pin, which configures the pin as Input, Output or one of
the 6 alternate functions.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
mode Mode to set the pin to, one of BCM2835_GPIO_FSEL_* from bcm2835FunctionSelectuint8_tbcm2835_gpio_get_pud(uint8_tpin)[extern]
On the BCM2711 based RPI 4, gets the current Pull-up/down mode for the specified pin. Returns one of
BCM2835_GPIO_PUD_* from bcm2835PUDControl. On earlier RPI versions not based on the BCM2711, returns
BCM2835_GPIO_PUD_ERROR
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_hen(uint8_tpin)[extern]
Enable High Detect Enable for the specified pin. When a HIGH level is detected on the pin, sets the
appropriate pin in Event Detect Status.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_len(uint8_tpin)[extern]
Enable Low Detect Enable for the specified pin. When a LOW level is detected on the pin, sets the
appropriate pin in Event Detect Status.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
uint8_tbcm2835_gpio_lev(uint8_tpin)[extern]
Reads the current level on the specified pin and returns either HIGH or LOW. Works whether or not the pin
is an input or an output.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
Returns
the current level either HIGH or LOW
uint32_tbcm2835_gpio_pad(uint8_tgroup)[extern]
Reads and returns the Pad Control for the given GPIO group. Caution: requires root access.
Parametersgroup The GPIO pad group number, one of BCM2835_PAD_GROUP_GPIO_*
Returns
Mask of bits from BCM2835_PAD_* from bcm2835PadGroupvoidbcm2835_gpio_pud(uint8_tpud)[extern]
Sets the Pull-up/down register for the given pin. This is used with bcm2835_gpio_pudclk() to set the
Pull-up/down resistor for the given pin. However, it is usually more convenient to use
bcm2835_gpio_set_pud().
Parameterspud The desired Pull-up/down mode. One of BCM2835_GPIO_PUD_* from bcm2835PUDControl On the RPI 4,
although this function and bcm2835_gpio_pudclk() are supported for backward compatibility, new code
should always use bcm2835_gpio_set_pud().
Seealsobcm2835_gpio_set_pud()voidbcm2835_gpio_pudclk(uint8_tpin,uint8_ton)[extern]
Clocks the Pull-up/down value set earlier by bcm2835_gpio_pud() into the pin.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
on HIGH to clock the value from bcm2835_gpio_pud() into the pin. LOW to remove the clock.
On the RPI 4, although this function and bcm2835_gpio_pud() are supported for backward compatibility, new
code should always use bcm2835_gpio_set_pud().
Seealsobcm2835_gpio_set_pud()voidbcm2835_gpio_ren(uint8_tpin)[extern]
Enable Rising Edge Detect Enable for the specified pin. When a rising edge is detected, sets the
appropriate pin in Event Detect Status. The GPRENn registers use synchronous edge detection. This means
the input signal is sampled using the system clock and then it is looking for a ?011? pattern on the
sampled signal. This has the effect of suppressing glitches.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_set(uint8_tpin)[extern]
Sets the specified pin output to HIGH.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
Seealsobcm2835_gpio_write()voidbcm2835_gpio_set_eds(uint8_tpin)[extern]
Sets the Event Detect Status register for a given pin to 1, which has the effect of clearing the flag.
Use this afer seeing an Event Detect Status on the pin.
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
voidbcm2835_gpio_set_eds_multi(uint32_tmask)[extern]
Same as bcm2835_gpio_set_eds() but clears the flag for any pin which is set in the mask.
Parametersmask Mask of pins to clear. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
voidbcm2835_gpio_set_multi(uint32_tmask)[extern]
Sets any of the first 32 GPIO output pins specified in the mask to HIGH.
Parametersmask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
Seealsobcm2835_gpio_write_multi()voidbcm2835_gpio_set_pad(uint8_tgroup,uint32_tcontrol)[extern]
Sets the Pad Control for the given GPIO group. Caution: requires root access.
Parametersgroup The GPIO pad group number, one of BCM2835_PAD_GROUP_GPIO_*
control Mask of bits from BCM2835_PAD_* from bcm2835PadGroup. Note that it is not necessary to
include BCM2835_PAD_PASSWRD in the mask as this is automatically included.
voidbcm2835_gpio_set_pud(uint8_tpin,uint8_tpud)[extern]
Sets the Pull-up/down mode for the specified pin. This is more convenient than clocking the mode in with
bcm2835_gpio_pud() and bcm2835_gpio_pudclk().
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
pud The desired Pull-up/down mode. One of BCM2835_GPIO_PUD_* from bcm2835PUDControl
voidbcm2835_gpio_write(uint8_tpin,uint8_ton)[extern]
Sets the output state of the specified pin
Parameterspin GPIO number, or one of RPI_GPIO_P1_* from RPiGPIOPin.
on HIGH sets the output to HIGH and LOW to LOW.
voidbcm2835_gpio_write_mask(uint32_tvalue,uint32_tmask)[extern]
Sets the first 32 GPIO output pins specified in the mask to the value given by value
Parametersvalue values required for each bit masked in by mask, eg: (1 << RPI_GPIO_P1_03) | (1 <<
RPI_GPIO_P1_05)
mask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
voidbcm2835_gpio_write_multi(uint32_tmask,uint8_ton)[extern]
Sets any of the first 32 GPIO output pins specified in the mask to the state given by on
Parametersmask Mask of pins to affect. Use eg: (1 << RPI_GPIO_P1_03) | (1 << RPI_GPIO_P1_05)
on HIGH sets the output to HIGH and LOW to LOW.