基于亚博K210开发板——LED(RGB)点灯

2023-11-03

开发板

在这里插入图片描述

实验目的

实现开发板上LED0、LED1以及RGB灯的点亮

实验准备

查看原理图

在这里插入图片描述
K210 开发板出厂默认已经焊接好 LED0 和 LED1。LED0 连接的是 IO0,LED1
连接的是 IO17,LED0 为红灯,LED1 为绿灯。两颗 LED 灯都是低电平点亮,高电平熄灭

软件对应SDK

对应的头文件 gpio.h

GPIO配置函数

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

• gpio_init:GPIO 口初始化
• gpio_set_drive_mode:设置 GPIO 口输入或输出模式
• gpio_set_pin:设置 GPIO 引脚电平高/低
• gpio_get_pin:读取 GPIO 引脚电平

什么是 FPIOA 呢

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

• 支持IO 的可编程功能选择
• 支持IO 输出的8 种驱动能力选择
• 支持IO 的内部上拉电阻选择
• 支持IO 的内部下拉电阻选择
• 支持IO 输入的内部施密特触发器设置
• 支持IO 输出的斜率控制
• 支持内部输入逻辑的电平设置

实验代码

LED/RGB驱动

bsp_led_rgb.h

#ifndef __BSP_LED_RGB_H_
#define __BSP_LED_RGB_H_
/*****************************HEAR-FILE************************************/
#include "fpioa.h"
#include "gpiohs.h"
#include "gpio.h"
#include "fpioa.h"
#include "sleep.h"

/*****************************HARDWARE-PIN*********************************/

#define IS_HIGH_GPIO  1


// 硬件IO口,与原理图对应

//led
#define PIN_LED_0             (0)
#define PIN_LED_1             (17)

//rgb
#define PIN_RGB_R                 (6)
#define PIN_RGB_G                 (7)
#define PIN_RGB_B                 (8)

/*****************************SOFTWARE-GPIO********************************/
// 软件GPIO口,与程序对应

//led
#define LED0_GPIONUM          (3)
#define LED1_GPIONUM          (4)

//rgb
#define RGB_R_GPIONUM          (0)
#define RGB_G_GPIONUM          (1)
#define RGB_B_GPIONUM          (2)

/*****************************FUNC-GPIO************************************/
// GPIO口的功能,绑定到硬件IO口

//led
#define FUNC_LED0             (FUNC_GPIO0 + LED0_GPIONUM)
#define FUNC_LED1             (FUNC_GPIO0 + LED1_GPIONUM)

//rgb
#if  IS_HIGH_GPIO
#define FUNC_RGB_R             (FUNC_GPIOHS0 + RGB_R_GPIONUM)
#define FUNC_RGB_G             (FUNC_GPIOHS0 + RGB_G_GPIONUM)
#define FUNC_RGB_B             (FUNC_GPIOHS0 + RGB_B_GPIONUM)
#else
#define FUNC_RGB_R             (FUNC_GPIO0 + RGB_R_GPIONUM)
#define FUNC_RGB_G             (FUNC_GPIO0 + RGB_G_GPIONUM)
#define FUNC_RGB_B             (FUNC_GPIO0 + RGB_B_GPIONUM)
#endif

void rgbInit(void);
void ledInit(void);
void rgbClose(void);
void ledClose(void);
void ledFlash(int ms);
void rgbFlash(int ms);


#endif /* __BSP_LED_RGB_H_ */

bsp_led_rgb.c

#include "bsp_led_rgb.h"

/**
* Function       hardware_init
* @author        Gengyue
* @date          2020.05.27
* @brief         硬件初始化,绑定GPIO口
* @param[in]     void
* @param[out]    void
* @retval        void
* @par History   无
*/
void hardware_init(void)
{

    fpioa_set_function(PIN_LED_0, FUNC_LED0);
    fpioa_set_function(PIN_LED_1, FUNC_LED1);

    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);
}

void rgbInit()
{
    gpio_init();
    //硬件初始化,绑定GPIO口
    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);

    //设置模式为输出
#if  IS_HIGH_GPIO     
    gpiohs_set_drive_mode(RGB_R_GPIONUM, GPIO_DM_OUTPUT);
    gpiohs_set_drive_mode(RGB_G_GPIONUM, GPIO_DM_OUTPUT);
    gpiohs_set_drive_mode(RGB_B_GPIONUM, GPIO_DM_OUTPUT);
#else
    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);
 #endif 
}


void ledInit()
{
    gpio_init();
    //硬件初始化,绑定GPIO口
    fpioa_set_function(PIN_LED_0, FUNC_LED0);
    fpioa_set_function(PIN_LED_1, FUNC_LED1);
    //设置LED0和LED1的GPIO模式为输出
    gpio_set_drive_mode(LED0_GPIONUM, GPIO_DM_OUTPUT);
    gpio_set_drive_mode(LED1_GPIONUM, GPIO_DM_OUTPUT);

}

void rgbClose()
{
#if  IS_HIGH_GPIO    
    gpiohs_set_pin(RGB_R_GPIONUM, GPIO_PV_HIGH);
    gpiohs_set_pin(RGB_G_GPIONUM, GPIO_PV_HIGH);
    gpiohs_set_pin(RGB_B_GPIONUM, GPIO_PV_HIGH);
#else
    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);
#endif    
}


void ledClose()
{
    // 先关闭LED0和LED1
    gpio_pin_value_t value = GPIO_PV_HIGH;
    gpio_set_pin(LED0_GPIONUM, value);
    gpio_set_pin(LED1_GPIONUM, value);

}

void ledFlash(int ms)
{
    static gpio_pin_value_t value = GPIO_PV_HIGH;
    msleep(ms);
    gpio_set_pin(LED0_GPIONUM, value);
    gpio_set_pin(LED1_GPIONUM, value = !value);
}

void rgbFlash(int ms)
{
    static uint8_t rgbIndex = 0;
    rgbIndex %= 3; 
    rgbClose();
    gpiohs_set_pin(rgbIndex, GPIO_PV_LOW);
    rgbIndex++;
    msleep(ms);
}

主程序控制

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include "bsp.h"
#include "bsp_led_rgb.h"
#include "bsp_usart.h"


int main(void)
{
    ledInit();
    rgbInit();
    
    while (1){
      
        ledFlash(1000);
       	sleep(1);
       	rgbFlash(300);     
    }
    return 0;
}

实验结果

LED0 和 LED1 两个灯交替点亮,RGB等也会红绿蓝依次切换

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于亚博K210开发板——LED(RGB)点灯 的相关文章

  • 【虚拟机】【ssh】本地ssh连接虚拟机 - Xshell配置与虚拟机ip配置

    目录 前言 安装ifconfig 本机配置 linux配置 ssh连接 问题参考 参考 前言 之前谈到如何创建虚拟机 虚拟机 vmware虚拟机创建 centos7系统配置 这节谈将如何配置ip等信息 使本地ssh连接上虚拟机 安装ifco
  • c语言环境搭建(vs)2022版

    今天开个新专栏来写c语言的学习笔记正好学校下学期开始教c 现在先讲一下语言的环境搭建 先下载Visual Studio软件官网如下 Visual Studio 2022 IDE 适用于软件开发人员的编程工具 microsoft com 注意
  • Notes of Causal Inference Course by Brady Neal (Chap 1-5)

    本文是Youtube上causal inference课程系列的笔记 便于以后回顾 课程作者是Brady Neal 视频link在这里 这个lecture很长 但基本上看完Chapter 1和2就能大致知道causal inference的
  • DFT知识点扫盲——DFT概览

    IC设计公司 无论是研发 测试 PE 质量等岗位 对DFT的概念都不陌生 接下来的几篇内容 谈谈对DFT的理解 有聊得不对的地方 也请做DFT的同行 不吝赐教 1 什么是DFT DFT Design for Test 可测试性是一种设计属性
  • CMD(命令提示符)修改盘符

    进入命令提示符后 输入diskpart 进入diskpart exe list disk可以查询当前计算机磁盘 DISKPART gt list disk 磁盘 状态 大小 可用 Dyn Gpt 磁盘 0 联机 884 GB 1024 KB

随机推荐

  • [转]Tesseract-OCR学习系列(四)API

    原文地址 http www jianshu com p 3df039e42986 2016 09 20 Other API Examples 参考文档 https github com tesseract ocr tesseract wik
  • Python代码——卫星天空图绘制

    前期数据处理 33条消息 C 保存char int 和double到txt文件 他人是一面镜子 保持谦虚的态度的博客 CSDN博客 一 单系统代码 import math import matplotlib pyplot as plt f
  • 基于单片机的智能数字电子秤proteus仿真设计

    一 系统方案 1 当电子称开机时 单片机会进入一系列初始化 进入1602显示模式设定 如开关显示 光标有无设置 光标闪烁设置 定时器初始化 进入定时器模式 如初始值赋值 之后液晶会显示Welcome To Use Electronic Sc
  • 【统计学】stata 梳理输出命令逻辑关系 asdoc outreg2 logout esttab区别 优劣势

    一 概述 初学stata的时候对于stata输出的逻辑颇为疑惑 因为学python和cpp的时候输出函数就是那几个非常的简单 而statac的asdoc outreg2 logout 和 esttab 这些常见的命令在跳出来的时候往往分不清
  • 如何获得最新的太阳神三国杀 自己Qt编译

    太阳神三国杀 是一个基于C QT GUI框架的三国杀非官方开源软件 开发者 Moligaloo 开发者网站 http mogara org 可以在它上面体验一些不同的模式 尤其可以体验一些在测试服上运行 但却还未上线的新武将 相信有些小伙伴
  • postgresql 15源码浅析(1)—— postgres中的1号数据库

    摘要 在创建数据库集簇后 该集簇中默认会包含三个系统数据库template1 template0和postgres 其中template0和postgres都是在初始化过程中从template1复制出来的 这个理论大家想必不是那么陌生 但是
  • 医宗金鉴-01-伤寒论注

    from www oldzy com 老中医 见附件
  • 几个很实用的软件 root 改机 软改 硬改 改串号 改设备 参数生成器APK 电脑软件

    有没有好的安卓抹机软件或者改机 硬件信息修改器 Android改机 安卓改机软件 免root 不刷机 拒绝Xposed 实现 技术分析 改机软件排行榜大全 各种安卓抹机软件 手机抹机改机软件 机型修改器 一键新机改机软件全部免root破解下
  • vs2008中,在OCX控件中应用doc/view基本步骤

    1 利用向导创建一个MFC ActiveX Control控件CMyOCX 2 在工程中加入ActivDoc头文件和执行文件 class CActiveXDocTemplate public CSingleDocTemplate enum
  • 冒泡排序--python(详解)

    对于一个数组 4 6 3 9 第一轮 第一次比较 4 lt 6 两数不用进行交换 数组不变为 4 6 3 9 第二次比较 6 gt 3 两数进行交换 得到一个新数组 4 3 6 9 第三次比较 6 lt 9 两数不用进行交换 数组不变为 4
  • PHP Fatal error: Call to undefined function curl_init() in xxx

    找到php ini文件中这一行 本人是centos extension curl so 加上这一行 重启服务器 如果服务器报错说找不到curl so文件 下载php源码包http www php net downloads php tar
  • MyBaties 提示org.apache.ibatis.builder.BuilderException: The expression ‘’**' evaluated to a null val

    MyBaties 提示的错误信息 org apache ibatis builder BuilderException The expression evaluated to a null value 错误的原因 SQL 参数为List 集
  • java设计模式——状态模式

    状态模式的定义 一个对象在其内部状态改变的时候改变其行为 状态驱动 由上下文负责 代替if else 代替 switch case 普通方式 public String orderState String state if state eq
  • Percona-mysql server 5.5升级5.6

    http blog csdn net lqx0405 article details 50162557 系统环境 操作系统 CentOS 6 5 64 MySQL Percona server 5 5 5 6 一 升级的目的 为什么MySQ
  • Qt学习:Qt优雅地结束线程

    一 Qt线程 如果一个线程运行完成 就会结束 可很多情况并非这么简单 由于某种特殊原因 当线程还未执行完时 我们就想中止它 不恰当的中止往往会引起一些未知错误 比如 当关闭主界面的时候 很有可能次线程正在运行 这时 就会出现如下提示 QTh
  • noip2007 奖学金 (排序)

    A1159 奖学金 时间限制 1 0s 内存限制 256 0MB 总提交次数 797 AC次数 339 平均分 60 95 将本题分享到 查看未格式化的试题 提交 试题讨论 试题来源 NOIP2007 普及组 问题描述 某小学最近得到了一笔
  • 800-C++ throw(抛出异常)详解

    C throw 抛出异常 详解 抛出 Throw gt 检测 Try gt 捕获 Catch 异常必须显式地抛出 才能被检测和捕获到 如果没有显式的抛出 即使有异常也检测不到 在 C 中 我们使用 throw 关键字来显式地抛出异常 它的用
  • Office Online Server预览不了文件 TLS

    最近Office Online Server预览不了文件 服务器上报 从远程终点接收到一个严重警告 TLS 协议所定义的严重警告代码为 70 错误 经过排查发现TLS 1 1 和 TLS 1 2没有开启 将其开启后文档就能正常访问了 开启T
  • 如何利用R语言怎样处理百分数

    楼主在工作时 遇到一个问题 网上析取的资料中有很多百分数 但是R读取的时候把它默认为是因子类型了 用as numeric 函数也没有用 经过查找资料发现几个将百分数化成小数的小技巧 和大家分享一下 其基本思想就是把百分数按照字符处理 首先将
  • 基于亚博K210开发板——LED(RGB)点灯

    文章目录 开发板 实验目的 实验准备 查看原理图 软件对应SDK GPIO配置函数 什么是 FPIOA 呢 实验代码 LED RGB驱动 主程序控制 实验结果 开发板 实验目的 实现开发板上LED0 LED1以及RGB灯的点亮 实验准备 查