0


AI嵌入式K210项目(3)-GPIO控制

文章目录


前言

前面介绍了开发板和环境搭建的基本情况,接下来我们开始学习使用C进行裸板开发,本节课先来学习下K210最基础的功能,引脚映射和点灯。
在开始具体学习之前,我介绍下通用的学习和使用方法:大致了解芯片->了解进行编程的类型(GPIO/I2C/UART/SPI)->查看硬件原理图->查看编程手册->进行编程。让我们以一个IO控制开始吧!


一、背景知识

对LED/RGB灯编程其实本质是一样的,RGB可以看作三个LED灯,都是对io的控制,LED发光二极管是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的内部是一个半导体晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。只需要给正极输入正极电压,负极接地,形成回路就可以点亮LED。

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

在编程之前我们还需要进一步了解该款芯片,K210芯片使用BGA144封装,144个引脚,正方形,每一边有12个引脚。芯片宽度为8mm,长度为8mm,高度为0.953mm
引脚描述如下:
在这里插入图片描述
在这里插入图片描述

二、背景知识

可以看到,开发板板载了一颗可编程RGB灯,对其进行编程控制,需要了解其所连接的IO引脚;
在这里插入图片描述
接下来我们查看下原理图,可以看到他们分别连接到了IO12-IO14上,不同的IO控制不同颜色的灯,设置IO为输出模式,当IO设置为高电平时,对应的灯熄灭,当IO设置为低电平时,对应的灯点亮;
在这里插入图片描述

二、开始你的表演

这篇文章内容会涉及到FPIOA的使用,FPIOA的介绍可以参考我的 AI嵌入式K210项目(4)-FPIOA
新建一个gpio的文件夹,在里面新建main.c,以后也都是这样,我们每一个实验放一个文件夹
在这里插入图片描述

代码实现

为了方便大家看,我就不搞什么代码规范之类的了,直接放在一个文件里,方便大家查看

#include"sleep.h"#include"gpio.h"#include"fpioa.h"/*****************************HARDWARE-PIN*********************************/// 硬件IO口,与原理图对应#definePIN_RGB_R(12)#definePIN_RGB_G(13)#definePIN_RGB_B(14)/*****************************SOFTWARE-GPIO********************************/// 软件GPIO口,与程序对应#defineRGB_R_GPIONUM(0)#defineRGB_G_GPIONUM(1)#defineRGB_B_GPIONUM(2)/*****************************FUNC-GPIO************************************/// GPIO口的功能,绑定到硬件IO口#defineFUNC_RGB_R(FUNC_GPIO0 + RGB_R_GPIONUM)#defineFUNC_RGB_G(FUNC_GPIO0 + RGB_G_GPIONUM)#defineFUNC_RGB_B(FUNC_GPIO0 + RGB_B_GPIONUM)/**
* Function       hardware_init
* @brief         硬件初始化,绑定GPIO口
* @param[in]     void
* @param[out]    void
* @retval        void
* @par History   无
*/voidhardware_init(void){// fpioa映射fpioa_set_function(PIN_RGB_R, FUNC_RGB_R);fpioa_set_function(PIN_RGB_G, FUNC_RGB_G);fpioa_set_function(PIN_RGB_B, FUNC_RGB_B);}/**
* Function       hardware_init
* @brief         RGB灯灭
* @param[in]     void
* @param[out]    void
* @retval        void
* @par History   无
*/voidrgb_all_off(void){gpio_set_pin(RGB_R_GPIONUM, GPIO_PV_HIGH);gpio_set_pin(RGB_G_GPIONUM, GPIO_PV_HIGH);gpio_set_pin(RGB_B_GPIONUM, GPIO_PV_HIGH);}/**
* Function       init_rgb
* @brief         初始化RGB灯
* @param[in]     void
* @param[out]    void
* @retval        void
* @par History   无
*/voidinit_rgb(void){// 设置RGB灯的GPIO模式为输出gpio_set_drive_mode(RGB_R_GPIONUM, GPIO_DM_OUTPUT);gpio_set_drive_mode(RGB_G_GPIONUM, GPIO_DM_OUTPUT);gpio_set_drive_mode(RGB_B_GPIONUM, GPIO_DM_OUTPUT);// 关闭RGB灯rgb_all_off();}/**
* Function       main
* @brief         主函数,程序的入口
* @param[in]     void
* @param[out]    void
* @retval        0
* @par History   无
*/intmain(void){// RGB灯状态,0=红灯亮,1=绿灯亮,2=蓝灯亮int state =0;// 硬件引脚初始化hardware_init();// 初始化RGB灯init_rgb();while(1){rgb_all_off();// 先关闭RGB灯// 根据state的值点亮不同颜色的灯gpio_set_pin(state, GPIO_PV_LOW);msleep(500);
        state++;
        state = state %3;}return0;}

代码写好后,我们开始编译,注意:如果你编译过程中出现错误,可以先make clean掉之前生成的过程文件,重新生成

cd build
//注意这里的目标文件目录改成gpio,和刚才新建的文件夹名称一致
cmake ..-DPROJ=gpio  -G "MinGW Makefiles"
make

烧录
在这里插入图片描述
然后来看看结果吧
在这里插入图片描述


总结

本节介绍了K210芯片使用FPIOA可编程阵列,所以每次使用硬件IO口前都需要对硬件IO口进行引脚映射。而且在软件中调用的也是软件映射后的软件GPIO。使用GPIO前需要设置GPIO的输入输出模式。LED灯是低电平点亮的,给LED引脚设置低电平时点亮,设置高电平时熄灭。


本文转载自: https://blog.csdn.net/bin_zhang1/article/details/135519464
版权归原作者 Linfine8 所有, 如有侵权,请联系我们删除。

“AI嵌入式K210项目(3)-GPIO控制”的评论:

还没有评论