MSPM0L1306 DL_GPIO_initDigitalOutput()函数的解析

[复制链接]
 楼主| xyz549040622 发表于 2023-8-31 15:51 | 显示全部楼层 |阅读模式
本帖最后由 xyz549040622 于 2023-8-31 16:34 编辑

syscfg生成的IO初始化函数中,生成的第一个就是这个函数,这个函数有什么用呢?
  1. SYSCONFIG_WEAK void SYSCFG_DL_GPIO_init(void)
  2. {

  3.     DL_GPIO_initDigitalOutput(GPIO_LED_USER_LED1_IOMUX);

  4.     DL_GPIO_clearPins(GPIO_LED_PORT, GPIO_LED_USER_LED1_PIN);
  5.     DL_GPIO_enableOutput(GPIO_LED_PORT, GPIO_LED_USER_LED1_PIN);

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2841

主题

19330

帖子

110

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2841

主题

19330

帖子

110

粉丝
快速回复 在线客服 返回列表 返回顶部