2185|2

1510

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【HC32F4A0开发板测评】+GPIO口使用 [复制链接]

 

要想掌握开发板的使用,GPIO口是较好的入口。本打算先点亮开发板上的LED0~LED2,却没想到人家根本就没直接接在GPIO口上,而是接在一个以I2C方式工作的芯片上,于是只好先找个引脚以外挂LED模块的方式来学习GPIO口的使用。

图1  LED电路

 

为了防止引脚在使用上的冲突,选了一个没被占用的PE4来连接LED模块。

为此,对端口和引脚的定义为:

#define LED_G_PORT         (GPIO_PORT_E)

#define LED_G_PIN           (GPIO_PIN_04)

相应的使LED灯执行异或操作的引脚定义为:

#define LED_G_TOGGLE()      (GPIO_TogglePins(LED_G_PORT, LED_G_PIN))

 

实现引脚初始化函数为:

static void LED_Init(void)
{
    stc_gpio_init_t stcGpioInit;
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinState = PIN_STAT_RST;
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    (void)GPIO_Init(LED_G_PORT, LED_G_PIN, &stcGpioInit);
}

 

使LED灯产生闪烁效果的主程序为:

int32_t main(void)
{
    /* Register write enable for some required peripherals. */
    LL_PERIPH_WE(LL_PERIPH_GPIO);
    /* LED initialize */
    LED_Init();
    /* Register write protected for some required peripherals. */
    LL_PERIPH_WP(LL_PERIPH_GPIO);
    for (;;) {
        LED_G_TOGGLE();
        DDL_DelayMS(DLY_MS);
    }
}

 

经编译下载,其执行效果如图2和图3所示。

图2  熄灭状态

 

图3  点亮状态

 

在开发板上配置了一个3*3按键矩阵,其电路及引脚占用见图4和图5所示。为此,要获取键值 需要以扫描的方式来处理。

图4  按键电路 

 

图5  引脚占用

 

这里仅以按键1来控制LED灯的亮灭,故将KEYOUT0置为低电平,而将KEYOUT1 和KEYOUT2置为高电平,并通过读取KEYIN0的状态来控制LED。

其对KEY所用引脚的定义为:

#define KEY1_O_PORT          (GPIO_PORT_C)

#define KEY1_O_PIN           (GPIO_PIN_11)

#define KEY2_O_PORT          (GPIO_PORT_C)

#define KEY2_O_PIN           (GPIO_PIN_08)

#define KEY3_O_PORT          (GPIO_PORT_A)

#define KEY3_O_PIN           (GPIO_PIN_06)

#define KEY0_I_PORT          (GPIO_PORT_I)

#define KEY0_I_PIN           (GPIO_PIN_08)

对KEY所用引脚的初始化函数为:

static void KEY_Init(void)
{
    stc_gpio_init_t stcGpioInit;
    stcGpioInit.u16PinState = PIN_STAT_RST;
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    (void)GPIO_Init(KEY1_O_PORT, KEY1_O_PIN, &stcGpioInit);
	stcGpioInit.u16PinState = PIN_STAT_RST;
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    GPIO_Init(KEY2_O_PORT, KEY2_O_PIN, &stcGpioInit);
	stcGpioInit.u16PinState = PIN_STAT_RST;
    stcGpioInit.u16PinDir = PIN_DIR_OUT;
    (void)GPIO_Init(KEY3_O_PORT, KEY3_O_PIN, &stcGpioInit);
	GPIO_SetPins(KEY1_O_PORT, KEY1_O_PIN);
	GPIO_SetPins(KEY2_O_PORT, KEY2_O_PIN);
	GPIO_SetPins(KEY3_O_PORT, KEY3_O_PIN);
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinDir = PIN_DIR_IN;
	stcGpioInit.u16PullUp = PIN_PU_ON;
    (void)GPIO_Init(KEY0_I_PORT, KEY0_I_PIN, &stcGpioInit);
}

 

实现按键控制LED灯的主程序为:

int32_t main(void)
{
    LL_PERIPH_WE(LL_PERIPH_GPIO);
    LED_Init();
	KEY_Init();
    LL_PERIPH_WP(LL_PERIPH_GPIO);
    for (;;) {
		  if(GPIO_ReadInputPins(KEY0_I_PORT, KEY0_I_PIN)==0)
		  {
			     GPIO_SetPins(LED_G_PORT, LED_G_PIN);
		  }
		  else
		  {
			     GPIO_ResetPins(LED_G_PORT, LED_G_PIN);
		  }
    }
}

 

经程序的下载测试,其运行效果如图6所示。

图6  点亮状态

 

这样就基本完成了GPIO口的使用方法,后面就可以用它来驱动相应的器件工作了。    

最新回复

外挂LED模块的方式来学习GPIO口的使用,这个方法可以   详情 回复 发表于 2023-2-20 07:31
点赞 关注(1)
 
 

回复
举报

1700

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

外挂LED模块的方式来学习GPIO口的使用,这个方法可以

点评

感谢支持!!!  详情 回复 发表于 2023-2-20 09:52
 
 
 

回复

1510

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
火辣西米秀 发表于 2023-2-20 07:31 外挂LED模块的方式来学习GPIO口的使用,这个方法可以

感谢支持!!!

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表