本帖最后由 jinglixixi 于 2020-9-13 23:56 编辑
在HC32L072开发板上,LED与KEY的原理图如图1所示,可以用SW1和SW2分别控制DS1和DS2。 图1 LED与KEY原理图
实现控制功能的主程序如下: /******************************************************************************
* Include files
******************************************************************************/
#include "gpio.h"
/**
******************************************************************************
** \brief Main 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 测试效果
目标代码文件:
|