我想读取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/