本帖最后由 xyz549040622 于 2023-8-31 16:34 编辑
syscfg生成的IO初始化函数中,生成的第一个就是这个函数,这个函数有什么用呢?SYSCONFIG_WEAK void SYSCFG_DL_GPIO_init(void)
{
DL_GPIO_initDigitalOutput(GPIO_LED_USER_LED1_IOMUX);
DL_GPIO_clearPins(GPIO_LED_PORT, GPIO_LED_USER_LED1_PIN);
DL_GPIO_enableOutput(GPIO_LED_PORT, GPIO_LED_USER_LED1_PIN);
}
然我们看看他的底层
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] Configures a pin as a basic GPIO output
*
* @param[in] pincmIndex The PINCM register index that maps to the target
* GPIO pin.
*/
__STATIC_INLINE void DL_GPIO_initDigitalOutput(uint32_t pincmIndex)
{
/* GPIO functionality is always a pin function of 0x00000001 */
IOMUX->SECCFG.PINCM[pincmIndex] =
(IOMUX_PINCM_PC_CONNECTED | ((uint32_t) 0x00000001));
}
他的作用是配置IO引脚的输出功能。原来,器件上的每个数字 IO 在 IOMUX 外设寄存器空间中都有一个专用的 32 位 PINCM 寄存器,用于配置相应 IO 的数字功能。那么,我们每使用一个IO,就要对应一个DL_GPIO_initDigitalOutput()函数。如果有用到三个IO,就必须对应三个DL_GPIO_initDigitalOutput()函数。
注意看这个函数,他只把GPIO配置为输出功能,这点是最重要的,如果想把GPIO配置为其他功能,就需要用到其他函数的配合了,这是由syscfg自动生成的,syscfg的魅力在于,我们不需要研究这些函数,直接点击配置生成即可。
|