[开发板与模块] 【HT32F52352 Starter Kit测评】+GPIO口的使用

[复制链接]
1203|1
 楼主| jinglixixi 发表于 2022-4-21 09:24 | 显示全部楼层 |阅读模式
本帖最后由 eltonchang2001 于 2022-11-9 11:32 编辑

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

  2. {

  3.   {

  4.     CKCU_PeripClockConfig_TypeDef CKCUClock = {{ 0 }};

  5.     CKCUClock.Bit.AFIO = 1;

  6.     CKCUClock.Bit.PA = 1;

  7.     CKCU_PeripClockConfig(CKCUClock, ENABLE);

  8.   }

  9.   {

  10.     AFIO_GPxConfig(GPIO_PA, AFIO_PIN_1, AFIO_FUN_GPIO);

  11.     GPIO_PullResistorConfig(HT_GPIOA, GPIO_PIN_1, GPIO_PR_DOWN);

  12.     GPIO_DirectionConfig(HT_GPIOA, GPIO_PIN_1, GPIO_DIR_IN);

  13.     GPIO_InputConfig(HT_GPIOA, GPIO_PIN_1, ENABLE);

  14.   }

  15. }

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

  2. {

  3.   FlagStatus InputStatus = RESET;

  4.   InputStatus = GPIO_ReadInBit(HT_GPIOA, GPIO_PIN_1);

  5.   if (InputStatus == SET)

  6.   {

  7.       HT32F_DVB_LEDOn(HT_LED1);

  8.   }

  9.   else

  10.   {

  11.       HT32F_DVB_LEDOff(HT_LED1);

  12.   }

  13. }

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

  2. {

  3.     NVIC_Configuration();

  4.     CKCU_Configuration();

  5.     GPIO_Configuration();

  6.     RETARGET_Configuration();

  7.     HT32F_DVB_LEDInit(HT_LED1);

  8.     HT32F_DVB_LEDOn(HT_LED1);

  9.     T2_GPIO_Configuration();

  10.     while (1)

  11.     {

  12.               GPIO_InputReadBit();

  13.               __Delay(5000000);

  14.     }

  15. }

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

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

cemaj 发表于 2022-8-19 22:58 | 显示全部楼层
IO的基础使用方法。   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

525

主题

2957

帖子

39

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