打印
[开发板与模块]

【HT32F52352 Starter Kit测评】+GPIO口的使用

[复制链接]
882|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 eltonchang2001 于 2022-11-9 11:32 编辑

由于开发板未配置LED3,故无法对其进行观察,为此可以给它外挂一个LED模块来观察效果。
LED3所使用的PC1引脚,其控制效果如图1所示。
图1点亮LED3
了解了GPIO口的输出用法,那该如何验证其输入用法呢?
可以为它配置一个外挂的触摸感应模块,以产生输入状态的变化。
将PA1配置为输入模式的函数为:
void T2_GPIO_Configuration(void)

{

  {

    CKCU_PeripClockConfig_TypeDef CKCUClock = {{ 0 }};

    CKCUClock.Bit.AFIO = 1;

    CKCUClock.Bit.PA = 1;

    CKCU_PeripClockConfig(CKCUClock, ENABLE);

  }

  {

    AFIO_GPxConfig(GPIO_PA, AFIO_PIN_1, AFIO_FUN_GPIO);

    GPIO_PullResistorConfig(HT_GPIOA, GPIO_PIN_1, GPIO_PR_DOWN);

    GPIO_DirectionConfig(HT_GPIOA, GPIO_PIN_1, GPIO_DIR_IN);

    GPIO_InputConfig(HT_GPIOA, GPIO_PIN_1, ENABLE);

  }

}

以PA1来拾取状态变化并通过LED1来指示状态的函数为:
void GPIO_InputReadBit(void)

{

  FlagStatus InputStatus = RESET;

  InputStatus = GPIO_ReadInBit(HT_GPIOA, GPIO_PIN_1);

  if (InputStatus == SET)

  {

      HT32F_DVB_LEDOn(HT_LED1);

  }

  else

  {

      HT32F_DVB_LEDOff(HT_LED1);

  }

}

进行触摸控制LED灯的主程序为:
int main(void)

{

    NVIC_Configuration();

    CKCU_Configuration();

    GPIO_Configuration();

    RETARGET_Configuration();

    HT32F_DVB_LEDInit(HT_LED1);

    HT32F_DVB_LEDOn(HT_LED1);

    T2_GPIO_Configuration();

    while (1)

    {

              GPIO_InputReadBit();

              __Delay(5000000);

    }

}

经编译和下载,其运行效果如图2和图3所示,即在非接触状态,LED处于熄灭状态;而触摸时,则点亮LED。
图2非接触状态
图3接触状态

掌握了GPIO口的输入输出功能,就可以实现大量的应用处理了!

使用特权

评论回复

相关帖子

沙发
cemaj| | 2022-8-19 22:58 | 只看该作者
IO的基础使用方法。   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

463

主题

2774

帖子

38

粉丝