简化嵌入式系统中的位(引脚)操作
Simplifying bit (pin) manipulation in embedded system
我编写了一个程序来控制多个泵并监视开关,我的目标是双重的:首先,减少代码量,其次,更容易记住和跟踪哪个引脚是哪个LED/开关。
我有两种方法,从长远来看无法确定哪种方法更好,即将来维护代码。
第一种是创建功能块,例如:
void pump_on(void)
{
PORTC |= _BV(PC5);
}
第二个是定义:
#define pump_on PORTC |= _BV(PC5)
一个比另一个更可取吗?
我肯定会选择这个函数,因为它不太容易出错(虽然在你的确切示例中没有概率),并且应该在任何像样的编译器上具有完全相同的效率。
但是,我会考虑像这样参数化它:
void set_pump(_Bool enable) //or void set_pump(bool enable) if you are using c++
{
if (enable) {
PORTC |= _BV(PC5);
} else {
PORTC &= ~_BV(PC5);
}
}
相关文章:
- 如何在 setup() 函数中使用数字引脚转动电机?
- 如何获取引脚 4 的值,以便也发送到从站并使用 I2C 显示?
- 直接显示 - 无法使用设置模式设置静止引脚
- 如何从 C 文件将引脚排列与 esp8266 一起使用?
- 如何在嵌入式平台中管理不同引脚输出板的代码,以实现更好的HAL管理
- Arduino Nano - 为什么我的引脚表现得如此?
- 使用硬件 RX 引脚作为 arduino 的中断引脚
- C++ 编译时检查微控制器引脚是否已从其他源文件初始化
- OneWire arduino 库,具有后期引脚定义
- 英特尔引脚:如何生成对象转储ish代码
- 如何从单独的PC控制Raspberry Pi的GPIO引脚
- 如何在Beanglebone黑色内核上启用RTS和CTS引脚4.1.15-Ti-RT-R43
- 英特尔引脚:检测运行过程
- 尝试使用引脚工具从堆栈中打印寄存器的值
- 如何为多个模拟引脚编写功能?(阿杜伊诺)
- QT 中的蓝牙 UUID 和引脚请求
- 使用"英特尔引脚"时跟踪不匹配的CALL和RET指令数
- 引脚类似工具,用于编译时注入检测代码
- C++和引脚工具 - IF语句非常奇怪的双变量问题
- 简化嵌入式系统中的位(引脚)操作