基础实验例程-3.1 点亮LED灯基础实验例程

基础实验例程-3.1 点亮LED灯基础实验例程

一、实验目的

本节课主要学习K210最基础的功能,FPIOA引脚映射和点亮LED灯。

二、实验准备

1.实验元件

LED0和LED1

image.png

2.元件特性

LED0为红灯,LED1为绿灯。两颗LED灯都是低电平点亮,高电平熄灭。

3.硬件连接

K210开发板出厂默认已经焊接好LED0和LED1。LED0连接的是IO0,LED1连接的是IO17。

image.png

image.png

image.png

4.SDK中对应API功能

对应的头文件 gpio.h

通用gpio共8个,使用同一个中断源,可配置输入输出信号,可配置触发IO口总中断,边沿触发和电平触发。每隔IO可以分配到FPIOA上48个管脚之一。

为用户提供以下接口:

• GPIO口初始化

• GPIO口输入或输出模式

• GPIO引脚电平高gpio_get_pin:读取GPIO引脚电平

5.什么是FPIOA呢?

FPIOA (现场可编程IO阵列)允许用户将255 个内部功能映射到芯片外围的48 个自由IO 上:

• 支持IO 的可编程功能选择

• 支持IO 输出的8 种驱动能力选择

• 支持IO 的内部上拉电阻选择

• 支持IO 的内部下拉电阻选择

• 支持IO 输入的内部施密特触发器设置

• 支持IO 输出的斜率控制

• 支持内部输入逻辑的电平设置

三、实验原理

LED(Light Emitting Diode)也称为发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的内部是一个半导体晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。只需要给正极输入正极电压,负极接地,形成回路就可以点亮LED。

半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个P-N结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED灯发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。

四、实验过程

1. 首先根据上面的硬件连接引脚图,K210的硬件引脚和软件功能使用的是FPIOA映射关系。

这里要注意的是程序里操作的都是软件引脚,所以需要先把硬件引脚映射成软件GPIO功能,操作的时候直接操作软件GPIO即可。

image.png

image.png

2.main函数是K210芯片的入口函数,所有程序都从这里开始执行,首先初始化硬件引脚,然后使能GPIO时钟,再设置LED0和LED1为输出模式,接着设置LED0和LED1的电平为高电平,表示熄灭状态。

最后在while循环中每隔一秒切换修改value的值,让LED0和LED1交替点亮。

image.png

3.编译调试,烧录运行

把本课程资料中的gpio_led复制到SDK中的src目录下,

然后进入build目录,运行以下命令编译。

cmake .. -DPROJ=gpio_led -G “MinGW Makefiles”

make

image.png

image.png

image.png

注意:如果点击了PROBLEMS这一栏,有可能因为安装了某个插件(比如C/C++),插件检测头文件路径而发生的错误,实际并没有错误,不用理会这里的提示。以TERMINAL终端里输出的信息为准就好。

image.png

编译完成后,在build文件夹下会生成gpio_led.bin文件。

使用type-C数据线连接电脑与K210开发板,打开kflash,选择对应的设备,再将gpio_led.bin文件烧录到K210开发板上。

注意要勾选‘Open terminal after flash’,这样烧录完成固件后就会弹出一个终端可以查看调试的信息。

image.png

五、实验现象

LED0和LED1两个灯交替点亮。先亮绿灯1秒,然后绿灯熄灭,红灯亮一秒后熄灭,绿灯再亮起,以此循环。

image.png

image.png

六、实验总结

1.K210芯片使用FPIOA可编程阵列,所以每次使用硬件IO口前都需要对硬件IO口进行引脚映射。而且在软件中调用的也是软件映射后的软件GPIO。

2.K210芯片与其他单片机芯片同样是从main函数开始运行。

3.使用GPIO前需要设置GPIO的输入输出模式。

4.LED灯是低电平点亮的,给LED引脚设置低电平时点亮,设置高电平时熄灭。

附:API

对应的头文件 gpio.h

gpio_init

描述

初始化GPIO。

函数原型

int gpio_init(void)

返回值

返回值描述
0成功
非0失败

gpio_set_drive_mode

描述

设置GPIO驱动模式。

函数原型

void gpio_set_drive_mode(uint8_t pin, gpio_drive_mode_t mode)

参数

参数名称描述输入输出
pinGPIO管脚输入
modeGPIO驱动模式输入

返回值

无。

gpio_set_pin

描述

设置GPIO管脚值。

函数原型

void gpio_set_pin(uint8_t pin, gpio_pin_value_t value)

参数

参数名称描述输入输出
pinGPIO管脚输入
valueGPIO值输入

返回值

无。

gpio_get_pin

描述

获取GPIO管脚值。

函数原型

gpio_pin_value_t gpio_get_pin(uint8_t pin)

参数

参数名称描述输入输出
pinGPIO管脚输入

返回值

获取的GPIO管脚值。

数据类型

相关数据类型、数据结构定义如下:

  • gpio_drive_mode_t:GPIO驱动模式。
  • gpio_pin_value_t:GPIO值。

gpio_drive_mode_t

描述

GPIO驱动模式。

定义

typedef enum _gpio_drive_mode

{

    GPIO_DM_INPUT,

    GPIO_DM_INPUT_PULL_DOWN,

    GPIO_DM_INPUT_PULL_UP,

    GPIO_DM_OUTPUT,

} gpio_drive_mode_t;

成员

成员名称描述
GPIO_DM_INPUT输入
GPIO_DM_INPUT_PULL_DOWN输入下拉
GPIO_DM_INPUT_PULL_UP输入上拉
GPIO_DM_OUTPUT输出

gpio_pin_value_t

描述

GPIO 值。

定义

typedef enum _gpio_pin_value

{

    GPIO_PV_LOW,

    GPIO_PV_HIGH

} gpio_pin_value_t;

成员

成员名称描述
GPIO_PV_LOW
GPIO_PV_HIGH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值