samples: up_squared/gpio_counter: update to new GPIO API
Update the gpio_counter sample app for the UP Squared board: () Update configuration calls to use new flags. () Separate pin configuration into setting it to input, and setting the pin for interrupt. () Use gpio_pin_set() instead of gpio_pin_write(). Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This commit is contained in:
parent
6dd1f66a3c
commit
be8ca9da96
1 changed files with 16 additions and 13 deletions
|
@ -79,15 +79,9 @@ static volatile u32_t counter;
|
||||||
|
|
||||||
K_SEM_DEFINE(counter_sem, 0, 1);
|
K_SEM_DEFINE(counter_sem, 0, 1);
|
||||||
|
|
||||||
#define INTR_PIN_FLAGS \
|
|
||||||
(GPIO_DIR_IN | GPIO_INT | GPIO_INT_EDGE | GPIO_INT_ACTIVE_HIGH | \
|
|
||||||
GPIO_INT_DEBOUNCE | GPIO_PUD_PULL_DOWN)
|
|
||||||
|
|
||||||
#define NUM_PINS ARRAY_SIZE(counter_pins)
|
#define NUM_PINS ARRAY_SIZE(counter_pins)
|
||||||
#define MASK (BIT(NUM_PINS) - 1)
|
#define MASK (BIT(NUM_PINS) - 1)
|
||||||
|
|
||||||
#define GPIO_DEV DT_APL_GPIO_LABEL
|
|
||||||
|
|
||||||
void button_cb(struct device *gpiodev, struct gpio_callback *cb, u32_t pin)
|
void button_cb(struct device *gpiodev, struct gpio_callback *cb, u32_t pin)
|
||||||
{
|
{
|
||||||
counter++;
|
counter++;
|
||||||
|
@ -125,7 +119,7 @@ void main(void)
|
||||||
for (i = 0; i < NUM_PINS; i++) {
|
for (i = 0; i < NUM_PINS; i++) {
|
||||||
ret = gpio_pin_configure(counter_pins[i].gpio_dev,
|
ret = gpio_pin_configure(counter_pins[i].gpio_dev,
|
||||||
counter_pins[i].pin,
|
counter_pins[i].pin,
|
||||||
GPIO_DIR_OUT);
|
GPIO_OUTPUT_LOW);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printk("ERROR: cannot set HAT pin %d to OUT (%d)\n",
|
printk("ERROR: cannot set HAT pin %d to OUT (%d)\n",
|
||||||
counter_pins[i].hat_num, ret);
|
counter_pins[i].hat_num, ret);
|
||||||
|
@ -135,17 +129,26 @@ void main(void)
|
||||||
|
|
||||||
/* Setup input pin */
|
/* Setup input pin */
|
||||||
ret = gpio_pin_configure(intr_pin.gpio_dev, intr_pin.pin,
|
ret = gpio_pin_configure(intr_pin.gpio_dev, intr_pin.pin,
|
||||||
INTR_PIN_FLAGS);
|
GPIO_INPUT);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printk("ERROR: cannot set HAT pin %d to OUT (%d)\n",
|
printk("ERROR: cannot set HAT pin %d to IN (%d)\n",
|
||||||
intr_pin.hat_num, ret);
|
intr_pin.hat_num, ret);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Callback uses pin_mask, so need bit shifting */
|
/* Callback uses pin_mask, so need bit shifting */
|
||||||
gpio_init_callback(&gpio_cb, button_cb, (1 << intr_pin.pin));
|
gpio_init_callback(&gpio_cb, button_cb, (1 << intr_pin.pin));
|
||||||
gpio_add_callback(intr_pin.gpio_dev, &gpio_cb);
|
gpio_add_callback(intr_pin.gpio_dev, &gpio_cb);
|
||||||
gpio_pin_enable_callback(intr_pin.gpio_dev, intr_pin.pin);
|
|
||||||
|
/* Setup input pin for interrupt */
|
||||||
|
ret = gpio_pin_interrupt_configure(intr_pin.gpio_dev, intr_pin.pin,
|
||||||
|
GPIO_INT_EDGE_RISING);
|
||||||
|
if (ret) {
|
||||||
|
printk("ERROR: cannot config interrupt on HAT pin %d (%d)\n",
|
||||||
|
intr_pin.hat_num, ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* main loop */
|
/* main loop */
|
||||||
val = 0U;
|
val = 0U;
|
||||||
|
@ -153,9 +156,9 @@ void main(void)
|
||||||
printk("counter: 0x%x\n", val);
|
printk("counter: 0x%x\n", val);
|
||||||
|
|
||||||
for (i = 0; i < NUM_PINS; i++) {
|
for (i = 0; i < NUM_PINS; i++) {
|
||||||
ret = gpio_pin_write(counter_pins[i].gpio_dev,
|
ret = gpio_pin_set(counter_pins[i].gpio_dev,
|
||||||
counter_pins[i].pin,
|
counter_pins[i].pin,
|
||||||
(val & BIT(i)));
|
(val & BIT(i)));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printk("ERROR: cannot set HAT pin %d value (%d)\n",
|
printk("ERROR: cannot set HAT pin %d value (%d)\n",
|
||||||
counter_pins[i].hat_num, ret);
|
counter_pins[i].hat_num, ret);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue