c++ - 简化嵌入式系统中的位(引脚)操作

标签 c++ c embedded avr

我编写了一个程序来控制多个泵并监视开关,我的目标有两个:首先,减少代码量,其次是为了更容易记住和跟踪哪个引脚是哪个 LED/开关。

我有两种方法,但无法确定从长远来看哪种方法更好,即将来维护代码。

首先是创建功能 block ,如:

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);
    }
}

关于c++ - 简化嵌入式系统中的位(引脚)操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28919093/

相关文章:

c++ - 使用 STL 算法与 lambda 表达式的仿函数?

创建convert_line_endings函数

c - 使用 C 中的 YAJL 树检测 JSON 文件中的数组时出现问题

仅 C++ 前端编译器(将 C++ 转换为 C)

c - 如何将无符号的磁力计数据转换为度数

c++ - 一段时间后如何停用输入语句?

c++ - 有效使用 enable_if 和 C++ 模板来避免类特化

android - 我可以在 Cordova Android 应用程序和嵌入式设备(棋盘)之间传输数据吗?

c++ - 如何使用 MPI 库为进程子集调用 (c++) 函数?

c++ - 在使用 fwrite 创建图像后交换字节