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

Simplifying bit (pin) manipulation in embedded system

本文关键字:引脚 操作 嵌入式 系统      更新时间:2023-10-16

我编写了一个程序来控制多个泵并监视开关,我的目标是双重的:首先,减少代码量,其次,更容易记住和跟踪哪个引脚是哪个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);
    }
}