PINMUX
HAL PINMUX提供抽象的软件接口操作硬件PINMUX模块,设置pin的功能和上下拉属性等。
芯片有两个PINMUX实例,HPSYS域的PINMUX1(hwp_pinmux1
)和LPSYS域的PINMUX2(hwp_pinmux2
)。
PINMUX1的pin列表见 pin_pad_hcpu
, pin可用功能参考 pin_pad_func_hcpu
,类似的,PINMUX2的pin列表见 pin_pad_lcpu
, pin功能定义
见 pin_pad_func_lcpu
。
pinmux的功能从56x的芯片开始(不包括55x,58x)任意一个GPIO都可以作为当前系统任意一个I2C/UART/PWM的IO脚。
详细的API说明参考 bf0_hal_pinmux.h
GPIO和pinmux模块的区别
物理上,GPIO需要通过pinmux模块才能和外界连接,如图:
使用HAL PINMUX
void pin_func_set_example(void)
{
/* set HCPU PA10 and PA14 for I2C */
HAL_PIN_Set(PAD_PA10, I2C1_SCL, PIN_PULLUP, 1);
HAL_PIN_Set(PAD_PA14, I2C1_SDA, PIN_PULLUP, 1);
/* set LCPU PB12 and PB14 for UART4 */
HAL_PIN_Set(PAD_PB12, USART4_TXD, PIN_PULLUP, 0);
HAL_PIN_Set(PAD_PB14, USART4_RXD, PIN_PULLUP, 0);
}