我正在使用 AVR 进行编程,并且正在尝试创建一个函数来将引脚设置为输出。我制作了一个结构来保存寄存器和引脚号,如下所示:
typedef struct Pin{
uint8_t pinNo;
volatile uint8_t* pinReg;
};
然后我有这个功能来设置一个输出。
void pin_output(struct Pin pin){
//DDRA |= _BV(DDA6);
*(pin.pinReg) |= _BV(pin.pinNo);
}
像这样调用:
struct Pin pin6;
pin6.pinNo = DDA6;
pin6.pinReg = DDRA;
pin_output(pin6);
这工作正常,但 LED 亮度非常暗。如果我这样设置输出:
DDRA |= _BV(DDA6);
该引脚的预期亮度比使用该功能的亮度高 3-5 倍。导致亮度问题的功能丢失了什么?