jinglixixi 发表于 2020-9-13 09:12

玄宇芯-HC32L072开发板测评 + KEY控制LED

本帖最后由 jinglixixi 于 2020-9-13 23:56 编辑

在HC32L072开发板上,LED与KEY的原理图如图1所示,可以用SW1和SW2分别控制DS1和DS2。图1LED与KEY原理图

实现控制功能的主程序如下:/******************************************************************************
* Include files
******************************************************************************/
#include "gpio.h"
/**
******************************************************************************
** \briefMain function of project
**
** \return uint32_t return value, if needed
**
** This sample
**
******************************************************************************/
int32_t main(void)
{
    ///< 按键端口初始化
    App_UserKeyInit();
    ///< LED端口初始化
    App_LedInit();
    while(1)
    {
      ///< 检测USER按键是否按下(低电平)KEY1
      if(FALSE == Gpio_GetInputIO(GpioPortE, GpioPin3))
      {
            ///< LED点亮
            Gpio_SetIO(GpioPortE, GpioPin4);
      }
      else
      {
            ///< LED关闭
            Gpio_ClrIO(GpioPortE, GpioPin4);
      }
               
                ///< 检测USER按键是否按下(低电平)KEY2
      if(FALSE == Gpio_GetInputIO(GpioPortE, GpioPin5))
      {
            ///< LED点亮
            Gpio_SetIO(GpioPortE, GpioPin2);
      }
      else
      {
            ///< LED关闭
            Gpio_ClrIO(GpioPortE, GpioPin2);
      }
    }
}
按键引脚功能配置函数:static void App_UserKeyInit(void)
{
    stc_gpio_cfg_t stcGpioCfg;
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
    ///< 端口方向配置->输入
    stcGpioCfg.enDir = GpioDirIn;
    ///< 端口驱动能力配置->高驱动能力
    stcGpioCfg.enDrv = GpioDrvL;
    ///< 端口上下拉配置->无
    stcGpioCfg.enPu = GpioPuDisable;
    stcGpioCfg.enPd = GpioPdDisable;
    ///< 端口开漏输出配置->开漏输出关闭
    stcGpioCfg.enOD = GpioOdDisable;
    ///< 端口输入/输出值寄存器总线控制模式配置->AHB
    stcGpioCfg.enCtrlMode = GpioAHB;
    ///< GPIO IO USER KEY初始化
    Gpio_Init(GpioPortE, GpioPin3, &stcGpioCfg);
    Gpio_Init(GpioPortE, GpioPin5, &stcGpioCfg);
}
LED灯引脚功能配置函数:static void App_LedInit(void)
{
    stc_gpio_cfg_t stcGpioCfg;
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
    ///< 端口方向配置->输出(其它参数与以上(输入)配置参数一致)
    stcGpioCfg.enDir = GpioDirOut;
    ///< 端口上下拉配置->下拉
    stcGpioCfg.enPu = GpioPuDisable;
    stcGpioCfg.enPd = GpioPdEnable;
    ///< LED关闭
    Gpio_ClrIO(GpioPortE, GpioPin2);
         Gpio_ClrIO(GpioPortE, GpioPin4);
    ///< GPIO IO LED端口初始化
    Gpio_Init(GpioPortE, GpioPin2, &stcGpioCfg);
    Gpio_Init(GpioPortE, GpioPin4, &stcGpioCfg);
}
程序编译、下载后,其运行效果如2所示。 图2 测试效果

目标代码文件:

guijial511 发表于 2020-9-17 07:48

黑色板子骚啊

zljiu 发表于 2020-10-10 16:42

路过 学习一下

coshi 发表于 2020-10-10 16:42

感谢楼主的分享

aoyi 发表于 2020-10-10 16:42

楼主辛苦了啊

drer 发表于 2020-10-10 16:43

开拓眼界了 谢谢

gwsan 发表于 2020-10-10 16:43

介绍的很详细 谢谢

jinglixixi 发表于 2020-10-10 20:00

多谢各位的支持!!!

rickluo 发表于 2020-10-10 23:09

路过支持!

页: [1]
查看完整版本: 玄宇芯-HC32L072开发板测评 + KEY控制LED