立即注册
查看: 810|回复: 0

[单片机资料] 华大HC32F120系列MCU的外部按键EKEY用户手册

已绑定手机
发表于 2021-11-26 10:33:25 | 显示全部楼层 |阅读模式 来自 广东省深圳市
适用对象:HC32F120H8TA,HC32F120F8TA,HC32F120H6TA,HC32F120F6TA

1、摘要
本篇应用笔记主要介绍 HC32F120 系列外部按键(EKEY)模块,并简要说明如何通过 EKEY检测按键。

2、EKEY 简介
2.1 基本框图
外部按键(External Key,EKEY)模块,各个外部 EKEY 管脚(KR)均含有一个输入使能控制位,当 EKEY 管脚事件控制寄存器(INTC_EKEYCR)的对应位置 1 时,EKEY 管脚的输入有效。其具体框图如下:
1.jpg

2.2 常用电路
●矩阵扫描方式
2.jpg
矩阵扫描方式可通过少量的 IO 口数量,来实现多个按键的检测。使能全部的扫描线,将全部的 KR 设为有效状态,无论哪个键被按下都会产生 EKEY 中断事件。EKEY 事件产生后,依据键扫描判断出被按下的键值。每短时间间隔(如 30ms)进行一次键检测,当两次检测到的键值一致时,则认为这个键被按下(去抖处理)。
●独立按键方式
3.jpg
独立按键方式通过一对一的 IO 口数量,来实现按键的检测。使能全部的扫描线,将全部的 KR 设为有效状态,无论哪个键被按下都会产生 EKEY 中断事件。EKEY 事件产生后,依据端口电平状态判断出被按下的键值。每短时间间隔(如 30ms)进行一次键检测,当两次检测到的键值一致时,则认为这个键被按下(去抖处理)。

3、HC32F120 系列的 EKEY
3.1 工作原理
外部 EKEY 管脚(KR)在输入低电平时,产生一个输入事件。该事件(在中断事件请求序号表中编号为 49),通过中断选择寄存器(INTC_ISELR)的选通送至 CPU,产生对应的中断请求。

3.2 寄存器介绍
寄存器简称:INTC_EKEYCR
寄存器功能:EKEY 管脚事件控制寄存器
复位值:0x00000000

3.3 注意事项
-对于 GPIO 功能选择寄存器 FSEL 未配置成 EKEY 功能时,禁止把此管脚上 EKEY 的对应通道位 EKEYCR[m:n]使能;
-由于 EKEY 模块只有使能寄存器,没有标志寄存器,只能在进入中断服务程序后,读取对应通道引脚电平来确认触发事件的 EKEYx;
-由于 EKEY 模块只有使能寄存器,没有标志寄存器,共享中断入口 IRQ27 中的 EKEY 事件与其他事件互斥,建议不同时使用;
-EKEY 为低电平触发,低电平若不释放且中断开启,程序将一直响应中断事件。

4、样例代码
4.1 代码介绍
用户可以根据上述的介绍编写自己的代码来学习验证该模块,也可以直接通过华大半导体的网站下载到 HC32F120 系列 MCU 的设备驱动库(Device Driver Library,DDL)来体验 EKEY 的按键检测功能。
以下部分主要基于 DDL 的 EKEY 模块的按键检测样例 ekey 代码,简要介绍 EKEY 功能使用方法:
1) 配置 LED
/* RGB LED initialize */
GPIO_StructInit(&stcGpioInit);
GPIO_Init(LED_RGB_PORT, (LED_R_PIN | LED_G_PIN | LED_B_PIN), &stcGpioInit);
LED_RGB_OFF();
GPIO_OE(LED_RGB_PORT, (LED_R_PIN | LED_G_PIN | LED_B_PIN), Enable);
2) 配置 EKEY 端口:
/* Set P70/P62 to EKEY0/EKEY5 on START-KIT */
GPIO_SetFunc(EKEY0_PORT, EKEY0_PIN, GPIO_FUNC_KR);
GPIO_SetFunc(EKEY5_PORT, EKEY5_PIN, GPIO_FUNC_KR);
3) 配置及使能中断:
/* Set IRQ handler 14 as the EKEY interrupt entry */
stcIrqRegister.enIRQn = Int014_IRQn;
stcIrqRegister.enIntSrc = INT_PORT_EKEY;
stcIrqRegister.pfnCallback = &EKEY_IrqCallback;
u8Ret = INTC_IrqRegistration(&stcIrqRegister);
if (Ok != u8Ret)
{
// check parameter
while(1);
}
/* Enable NVIC */
NVIC_ClearPendingIRQ(Int014_IRQn);
NVIC_SetPriority(Int014_IRQn, DDL_IRQ_PRIORITY_03);
NVIC_EnableIRQ(Int014_IRQn);

更多内容请下载附件查看
2021-11-26 10:32 上传
文件大小:
355.59 KB
下载次数:
0
本地下载

16RD supports Paypal , Payment is calculated at the exchange rate of the day. Unable to download please contact 18902843661 (WhatsApp OR wechat number)

关于一牛网在微软浏览器(Microsoft Edge、IE浏览器)警报通告&解决方案!(无法下载直接更换浏览器即可)

*附件为作者发布,与本站无关,如有侵权,请联系客服删除


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

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表