c - 如何在嵌入式 C 中将 MCU-GPIO 引脚状态(值)存储到 10 个数字的数组中?

标签 c embedded microcontroller gpio nrf51

我想读取MCU GPIO引脚状态并将其重复存储到10个数字的数组中。当数组满时,应该左移该值并将新值存储到第[9]个下标位置并继续。

我如何将其实现为嵌入式 C 代码?

最佳答案

鉴于每次仅存储 1 位,数组并不是唯一的解决方案:

static uint16_t buffer = 0;

void gpio_add(bool pin_value)
{
    buffer >>= 1;
    if(pin_value) {buffer |= 0x0200;}
}

bool gpio_get_entry(uint8_t index)
{
    return !!(buffer & (1 << index));
}

请注意,如果您采用这种方法,您也可以存储 8 个或 16 个值。

如果这样做的目的是实现一个简单的防抖器(即确定引脚电平是否保持稳定一段时间),那么我们可以简单地查看buffer是否为零或0x3FF。

关于c - 如何在嵌入式 C 中将 MCU-GPIO 引脚状态(值)存储到 10 个数字的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933893/

相关文章:

c - Linux 接收 ttycontrol 程序的信号中断

c - 不同微 Controller 中的变量大小是否相同?

c - 如何存储fscanf以逆序打印?

embedded - 一组一致且简单的IDE和用于C++的嵌入式代码和单元测试的工具?

c - PlatformIO 构建失败 : undefined reference to http_parser_init

embedded - 树莓派上的 ARM 时钟速度

c - 如何使用蜂窝设备在 Zephyr OS 上实现 MQTT?

c - 微 Controller 计数器溢出和计数

c - C中最快的 boolean 表示

c - 使用 const 创建一次写入变量?