我在使用 atmega328p 的结构和定义时遇到了一些问题。
我有以下代码:
typedef struct {
char port;
unsigned char pin;
unsigned long timestamp;
} BUTTONS;
BUTTONS button_1;
BUTTONS button_2;
BUTTONS button_3;
BUTTONS* button[BUTTONS_ID_COUNT] = {&button_1,&button_2,&button_3};
void Button_init(void){
button[BUTTONS_ID_1]->port = PINB;
button[BUTTONS_ID_1]->pin = PINB4;
button[BUTTONS_ID_1]->timestamp = 0;
}
unsigned char Button_instantRead(int id){
//return PINB & (1 << PINB4);
return button[id]->port & (1 << button[id]->pin);
}
我想使用 myButton_instantRead()
来读取任何端口,只需给它一个 ID 号。我使用我的 init 函数来设置哪个引脚与哪个端口相关联。但是由于某种原因,当我调用我的Button_instantRead()
函数时,即使按下开关,我也没有得到 1。
我使用注释行在我的主文件中尝试了我的配置,一切正常。
我在我的return
行中做错了什么?
经过一番谷歌搜索后,我发现这char
可能不是引用端口的正确类型。我想我会更适合指向端口地址的第一个元素的指针,但我也不知道该怎么做,也找不到答案。