最近在写 Arduino 的时候发现一种新的初始化方式,通过寄存器来控制端口,这种方法可以更快的完成端口初始化。
使用的开发板是 pro micro(atmega32u4),传统的使用模式:
1 | uint8_t btn[4] = {A0, A1, A2, A3,};//定义端口列表 |
然后看一下 pro micro 和 atmega32u4 的针脚定义图:
可以发现 A0-A3 的寄存器地址是 PF4-PF7,同样属于 PORTF,用寄存器初始化的方法是:
1 | uint8_t LastB; |
DDRF:用于设置 PORTF 的端口方向,1 为输出,0 为输入,设置的值可以是 2 进制或 16 进制,如二进制 B000 就代表将 0-2 的端口设置为输入。
PORTF:用于设置 PORTF 的高低电平(仅输入),1 为高,0 为低。
PINF:读取 PORTF 的所有针脚状态,取出来的是二进制数值,例如 B010 就代表 PF0 和 PF2 是低电平,PF1 是高电平。
参考资料:
Relationship among PORTX, PINX, DDRX, pinMode(), …. of Arduino
Arduino 板上通过操作端口寄存器来进行控制