Add gpio_get_out_level() accessor, and correct SIO GPIO_OUT struct ty… (#247)
* Add gpio_get_out_level() accessor, and correct SIO GPIO_OUT struct type from WO to RW * Clean up ambiguous-looking parentheses
This commit is contained in:
parent
cdf1a956eb
commit
98574564b8
@ -17,7 +17,7 @@ typedef struct {
|
|||||||
io_ro_32 gpio_hi_in;
|
io_ro_32 gpio_hi_in;
|
||||||
uint32_t _pad;
|
uint32_t _pad;
|
||||||
|
|
||||||
io_wo_32 gpio_out;
|
io_rw_32 gpio_out;
|
||||||
io_wo_32 gpio_set;
|
io_wo_32 gpio_set;
|
||||||
io_wo_32 gpio_clr;
|
io_wo_32 gpio_clr;
|
||||||
io_wo_32 gpio_togl;
|
io_wo_32 gpio_togl;
|
||||||
@ -27,7 +27,7 @@ typedef struct {
|
|||||||
io_wo_32 gpio_oe_clr;
|
io_wo_32 gpio_oe_clr;
|
||||||
io_wo_32 gpio_oe_togl;
|
io_wo_32 gpio_oe_togl;
|
||||||
|
|
||||||
io_wo_32 gpio_hi_out;
|
io_rw_32 gpio_hi_out;
|
||||||
io_wo_32 gpio_hi_set;
|
io_wo_32 gpio_hi_set;
|
||||||
io_wo_32 gpio_hi_clr;
|
io_wo_32 gpio_hi_clr;
|
||||||
io_wo_32 gpio_hi_togl;
|
io_wo_32 gpio_hi_togl;
|
||||||
|
@ -415,6 +415,26 @@ static inline void gpio_put(uint gpio, bool value) {
|
|||||||
gpio_clr_mask(mask);
|
gpio_clr_mask(mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! \brief Determine whether a GPIO is currently driven high or low
|
||||||
|
* \ingroup hardware_gpio
|
||||||
|
*
|
||||||
|
* This function returns the high/low output level most recently assigned to a
|
||||||
|
* GPIO via gpio_put() or similar. This is the value that is presented outward
|
||||||
|
* to the IO muxing, *not* the input level back from the pad (which can be
|
||||||
|
* read using gpio_get()).
|
||||||
|
*
|
||||||
|
* To avoid races, this function must not be used for read-modify-write
|
||||||
|
* sequences when driving GPIOs -- instead functions like gpio_put() should be
|
||||||
|
* used to atomically update GPIOs. This accessor is intended for debug use
|
||||||
|
* only.
|
||||||
|
*
|
||||||
|
* \param gpio GPIO number
|
||||||
|
* \return true if the GPIO output level is high, false if low.
|
||||||
|
*/
|
||||||
|
static inline bool gpio_get_out_level(uint gpio) {
|
||||||
|
return !!(sio_hw->gpio_out & (1u << gpio));
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Direction
|
// Direction
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user