ES-PDS32 ES32F654评测————第六步:测试LED、按键

Led和按键的测试就很简单了,都属于对GPIO的操作,简单了解一下ES32F065的GPIO

1可配置为输入或输出

输出模式可配置   推挽/开漏  上拉/下拉
输入模式  端口浮空  上拉/下拉模拟端口

2支持端口输出数据的复位、置位或取反,可按位操作
3支持复用为外设功能端口

4输出驱动能力可配置:四种驱动能力选择
5支持 16 个外部输入中断
6支持端口配置写保护功能
  1. 端口控制寄存器

每组 GPIO 有 16 个相对独立的引脚,每个引脚都可以通过寄存器自由配置。
通过配置 GPIO_MODE,可选择相应端口的模式,可配置为输入模式,输出模式和端口关闭模式。选择输出模式时,端口输入同样有效。选择端口关闭模式时,相应端口可被复用为模拟功能。
通过配置 GPIO_PUPD,可使能相应端口的上拉或/和下拉电阻。
通过配置 GPIO_ODOS,可将相应端口输出方式配置为推挽、源极开路和漏极开路三种模式。在配置为源极开路或漏极开路模式时,可使能相应端口的上拉或下拉,以保证正常输出,也可在端口外部连接上拉或下拉电阻。
通过配置 GPIO_ODRV,可选择相应端口的输出驱动能力,以满足不同的负载要求。
通过配置 GPIO_FLT,可使能相应端口的输入滤波功能,可滤除外部引线上高频信号干扰或毛刺。若输入需要较高的实时性,建议关闭输入滤波功能。

通过配置 GPIO_TYPE,可选择相应端口的输入类型,可选择 TTL 或 SMIT 两种模式。
通过配置 GPIO_FUNC,可选择相应 GPIO 的复用功能,可选择 FUNC_ALT0 ~
FUNC_ALT7。复用功能 GPIO 为输入时必须配置为输入模式,且需外部驱动;复用功能GPIO 为输出时必须配置为输出模式,推挽或开漏;复用功能 GPIO 为双向模式时,端口必须配置为输出模式,推挽或开漏。
通过配置 GPIO_LOCK,可锁定相应端口的控制寄存器数值。直到下一次 CPU 复位锁定才可被解除。端口数据寄存器不受锁定的控制。

端口数据寄存器

软件可通过读取 GPIO_DIN 才获知端口的电平状态,若相应端口输入滤波被使能,则读到的是端口滤波之后的状态。

通过配置 GPIO_DOUT,可选择端口输出电平值,若端口模式已配置为输出,则该值所对应的电平会在管脚上立即生效。
通过配置 GPIO_BSRR,可按位改写端口输出电平值。对置位寄存器某些位进行写入 1 可置位相应端口,写入 0 的位不会影响相应端口的输出电平。对复位寄存器某些位进行写入1 可复位相应端口,写入 0 的位不会影响相应端口的输出电平。若同时将某位置位和复位,则置位的优先级更高。
通过配置 GPIO_BIR,可按位翻转端口输出电平值。对翻转寄存器某些位进行写入 1 可将相应端口电平值翻转,写入 0 的位不会影响相应端口的输出电平。
这里简单提及一下端口控制寄存器和端口数据寄存器,想要深入了解可参考ES32F065使用手册,介绍很详细。通过BSP库直接使用LED和KEY更加简单,不需要了解寄存器是如何操作。添加bsp_key.c和bsp_led.c 到BSP目录下。

编译出错,提示不能打开"ald_gpio.h",心态爆炸,我还要把MD库换成ALD库。

移除MD分组,添加ALD分组,在ALD添加对应文件。

替换irq.c文件 ,将用于测试ALD工程的irq.c来替换MD工程的irq.c,不然会报错。

修改main.c 和main.h(用于测试bsp库的LED和按键)

#include "main.h"
//按键处理函数
void KeyProcess()
{
  if(bsp_key_read_key1()== BSP_KEY1_PRESS)
	{
		   led_operate(0, LED_ON);
		   led_operate(1, LED_ON);
	}
	if(bsp_key_read_key1()== BSP_KEY1_RELEASE)
	{
	    led_operate(0, LED_OFF);
		  led_operate(1, LED_OFF);
	}
}

int main()
{
	led_module_init();   //LED初始化
	bsp_key_init();      //按键初始化
	
	while (1) 
	{
		 KeyProcess();     //按键处理函数			
	}
}

#ifndef   __MAIN_H__
#define   __MAIN_H__
#include "bsp_led.h"
#include "bsp_key.h"
#endif

按键和LED顺利执行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值