0x00 CREELINKS平台简介

    CREELINKS(创e联)是由大信科技有限公司研发,集合软硬件、操作系统、数据云储存、开发工具于一体,用于物联网产品的设计、研发与生产的平台。
    平台涉及智能硬件、车联网、智能家居、可穿戴设备、工业控制等各个物联网领域。旨在辅助中小型企业快速完成物联网产品原型的设计与开发;并为开源软硬件爱好者、硬件DIY极客、教育机构等提供更高效的资源。
    平台包含通用功能模块、操作系统、核心库、模块驱动库、物联网典型产品的解决方案及相关开发工具。

0x01 什么是CeGpio

CeGpio是CREELINKS平台中将不同处理器平台中Gpio口(通用输入输出口/通用双向IO口)的共性提取出来,整理并编写出来的标准库。CeGpio标准库包含了Gpio操作相关的所有属性及API接口函数,如: 可将Gpio口配置为输入或输出模式,可以设置或获取此端口的高低电平等。其标准库的头文件为CeGpio.h,不同处理器平台实现的源文件名统一为CeGpio.c。

详细介绍如下:

1、资源介绍

Creelinks平台Gpio对象的操作头文件,包含有关处理器平台Gpio内容的相关操作。可能不同处理器平台,所提供的GPIO的模式不一致、最大电平翻转速率不一致,使用Gpio资源时,尽量使用CeMcu.h中的相关Ad属性宏定义。

2、相关配置

在CeMcu.h中有与处理器平台有关的配置项如下:

 #define CE_GPIO_SPEED_MHZ           (uint32)50                  /*!< GPIO口的最大电平翻转速率*/

 /**
   * @brief  枚举,GPIO模式配置
   */
 typedef enum
 {
     CE_GPIO_MODE_AIN,                       /*!< 模拟输入*/
     CE_GPIO_MODE_IN_FLOATING,               /*!< 浮空输入*/
     CE_GPIO_MODE_IPD,                       /*!< 下拉输入*/
     CE_GPIO_MODE_IPU,                       /*!< 上拉输入*/
     CE_GPIO_MODE_OUT_OD,                    /*!< 开漏输出*/
     CE_GPIO_MODE_OUT_PP,                    /*!< 推挽输出*/
     CE_GPIO_MODE_AF_OD,                     /*!< 复用开漏输出*/
     CE_GPIO_MODE_AF_PP,                     /*!< 复用推挽输出*/
 }CE_GPIO_MODE;

其中:

CE_GPIO_SPEED_MHZ:当前处理器平台Gpio资源最大电平翻转速率、如STM32Fx10x处理器平台最大为50M,可根据需要自行修改。

        CE_GPIO_Mode:Gpio口可配置的模式。

    3、属性对象

 /**
   * @brief  结构体,GPIO对象可用属性集合
   */
 typedef struct
 {
     CE_RESOURCE     ceResource;                                 /*!< GPIO对应的资源号*/
     CE_GPIO_MODE    ceGpioMode;                                 /*!< 所设定的GPIO引脚模式*/

     CeExGpioPar     ceExGpioPar;                                /*!< 与处理器平台相关的额外参数结构体,用以提高代码效率,用户列须关注*/
 }CeGpio;

其中:

ceResource:对应核心模块的Gpio资源号,只要在核心板上,资源接口中带G标号即可。

ceGpioMode: 设置当前Gpio口的模式,此枚举在CeMcu.h文件中定义。

ceExGpioPar:用于存不同的处理器平台,Gpio属性对象需要的额外参数。此结构体在CeMcu.h文件中定义。

    4、操作对象

 /**
   * @brief  结构体,GPIO对象可用操作集合
   */
 typedef struct
 {
     CE_STATUS   (*initial)(CeGpio* ceGpio);                     /*!< @brief 初始化一个GPIO
                                                                      @param ceGpio:GPIO属性对象集合指针*/

     void        (*setGpioBit)(CeGpio* ceGpio);                  /*!< @brief 设置GPIO口的值为1
                                                                      @param ceGpio:GPIO属性对象集合指针*/

     void        (*resetGpioBit)(CeGpio* ceGpio);                /*!< @brief 设置GPIO口的值为0
                                                                      @param ceGpio:GPIO属性对象集合指针*/

     uint8       (*getGpioBit)(CeGpio* ceGpio);                  /*!< @brief 获取GPIO口的值,0x01和0x00
                                                                      @param ceGpio:GPIO属性对象集合指针
                                                                      @return 当前Gpio口的电平状态*/

     void        (*setGpioMode)(CeGpio* ceGpio,CE_GPIO_MODE ceGpioMode);/*!<
                                                                      @brief 配置Gpio口的工作方式
                                                                      @param ceGpio:GPIO属性对象集合指针
                                                                      @param ceGpioMode:GPIO工作模式*/
 }CeGpioOpBase;
 extern const CeGpioOpBase ceGpioOp;                             /*!< 所有与GPIO相关的操作*/

其中:

initial:对一个Gpio资源进行初始化,如果在CeMcu.h中的宏定义 __CE_CHECK_PAR__处于打开状态,则会对输入的CeGpio属性对象进行参数检查。

setGpioBit:设置Gpio口为高电平。

resetGpioBit:设置Gpio口为低电平。

getGpioBit:获取Gpio口的状态,高电平或低电平。

setGpioMode:重新配置Gpio口的工作模式。

5、执行流程

6、应用示例

 /**
 ******************************************************************************
 * @brief  使用流程及示例程序(基于前后台非操作系统环境)
 * @function 设定Gpio每500ms进行一次电平翻转
 ******************************************************************************
 #include "Creelinks.h"
 CeGpio myGpio;                                          //定义Gpio属性对象
 int main(void)
 {
     ceSystemOp.initial();                               //Creelinks环境初始化
     ceSystemOp.initialDebug(RxUart);                    //通过Uart串口输出Debug信息到上位机
     //TODO:请在此处插入模块初始化等操作
     myGpio.ceResource = RxG;                            //指定Gpio使用的资源号
     myGpio.ceGpioMode = CE_GPIO_MODE_OUT_OD;            //配置Gpio的工作模式
     ceGpioOp.initial(&myGpio);                          //初始化Gpio
     while (1)
     {
         ceSystemOp.mainTask();                          //Creelinks环境主循环任务,请保证此函数能够被周期调用
         //TODO:请在此处插入用户操作
         ceGpioOp.setGpioBit(&myGpio);                   //设定Gpio为高电平
         ceSystemOp.printf("Gpio status: up.\n");        //向上位机输出调试信息
         ceSystemOp.delayMs(500);                        //延时500ms
         ceGpioOp.resetGpioBit(&myGpio);                 //设定Gpio为高电平
         ceSystemOp.printf("Gpio status: down.\n");      //向上位机输出调试信息
         ceSystemOp.delayMs(500);                        //延时500ms
     };
 }
 ******************************************************************************
 */

0x02 CeGpio的注意事项

    在不同处理器平台或不同的核心板下,Gpio口电平翻转速率、Gpio口支持的模式等不一致。使用Gpio资源时,尽量使用CeMcu.h中的相关Gpio属性宏定义。如果需要修改电平翻转速率,请直接修改CeMcu.h中的CE_GPIO_SPEED_MHZ宏即可。如果需要查看Gpio口支持的模式,请查看CeGpio.c中的文件头注释、setGpioMode操作函数注释。

0x03 CeGpio在不同处理器的应用实例

1、STM32平台下的ELinkSTM核心板下使用CeGpio控制Led灯。代码及动画效果如下:

 /**
 ******************************************************************************
 * @brief  使用流程及示例程序(基于前后台非操作系统环境)
 * @function 设定Gpio每500ms进行一次电平翻转
 ******************************************************************************/
 #include "Creelinks.h"
 CeGpio myGpio;                                          //定义Gpio属性对象
 int main(void)
 {
     ceSystemOp.initial();                               //Creelinks环境初始化
     ceSystemOp.initialDebug(R9Uart);                    //通过Uart串口输出Debug信息到上位机
     //TODO:请在此处插入模块初始化等操作
     myGpio.ceResource = R13GP;                          //指定Gpio使用的资源号
     myGpio.ceGpioMode = CE_GPIO_MODE_OUT_PP;            //配置Gpio的工作模式
     ceGpioOp.initial(&myGpio);                          //初始化Gpio
     )
     {
         ceSystemOp.mainTask();                          //Creelinks环境主循环任务,请保证此函数能够被周期调用
         //TODO:请在此处插入用户操作
         ceGpioOp.setGpioBit(&myGpio);                   //设定Gpio为高电平
         ceSystemOp.printf("Gpio status: up.\n");        //向上位机输出调试信息
         ceSystemOp.delayMs();                        //延时500ms
         ceGpioOp.resetGpioBit(&myGpio);                 //设定Gpio为高电平
         ceSystemOp.printf("Gpio status: down.\n");      //向上位机输出调试信息
         ceSystemOp.delayMs();                        //延时500ms
     };
 }
 /******************************************************************************
 */

STM32平台下的ELinkSTM核心板下使用CeGpio控制Led灯

2、Arduino平台下的UNO R3开发板下使用CeGpio控制Led灯。代码及动画效果如下:

 /**
 ******************************************************************************
 * @brief  使用流程及示例程序(基于Arduino UNO平台)
 * @function 设定Gpio每500ms进行一次电平翻转
 ******************************************************************************/
 #include <Creelinks.h>
 CeGpio myGpio;                                          //定义Gpio属性对象
 void setup() {
     // put your setup code here, to run once:
     myGpio.ceResource = RD13G;                          //指定Gpio使用的资源号
     myGpio.ceGpioMode = CE_GPIO_MODE_OUT_PP;            //配置Gpio的工作模式
     ceGpioOp.initial(&myGpio);                          //初始化Gpio
 }

 void loop() {
     // put your main code here, to run repeatedly:
     ceGpioOp.setGpioBit(&myGpio);                       //设定Gpio为高电平
     delay();                                         //延时500ms
     ceGpioOp.resetGpioBit(&myGpio);                     //设定Gpio为低电平
     delay();                                         //延时500ms*/
 }
 /******************************************************************************/

Arduino平台下的UNO R3开发板下使用CeGpio控制Led灯

CREELINKS平台_处理器CeGpio资源使用说明(CeGpio的配置与使用)的更多相关文章

  1. CREELINKS平台_处理器CeAd资源使用说明(CeAd的配置与使用)

    0x00 CREELINKS平台简介     CREELINKS(创e联)是由大信科技有限公司研发,集合软硬件.操作系统.数据云储存.开发工具于一体,用于物联网产品的设计.研发与生产的平台.    平 ...

  2. CREELINKS平台_处理器CeCcp资源使用说明(CeCcp的配置与使用)

    0x00 CREELINKS平台简介     CREELINKS(创e联)是由大信科技有限公司研发,集合软硬件.操作系统.数据云储存.开发工具于一体,用于物联网产品的设计.研发与生产的平台.    平 ...

  3. 第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示

    第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示 首先了解一下static静态文件与上传资源的区别,static静态文件里面一般防止的我们网站样式的文件, ...

  4. winform快速开发平台->让有限的资源创造无限的价值!

    最近一直在维护一套自己的快速开发平台. 主要应对针对C/S架构下的项目.然而对winform这快,还真没有看到过相对好的快速开发平台, 何为快速,在博客园逛了了好久, 预览了很多通用权限管理系统. 确 ...

  5. SNF开发平台WinForm之九-代码生成器使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    下面就具体的使用说明: 1.获取代码生成器的授权码(根据本机)-----还原数据库-------改config-----代码生成器 改代码生成器Config 2.登录代码生成器 3.查看是否连接成功 ...

  6. SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    5.1运行效果: 5.2开发实现: 1.按上面效果来说,先来看一下在程序当中如果调用.第一步在页面拖拽一个按钮为“高级查询”,事件上写下如下代码: 如果是单表查询的话,只需要传GridView就行,如 ...

  7. 云之讯融合通讯开放平台_提供融合语音,短信,VoIP,视频和IM等通讯API及SDK。

    云之讯融合通讯开放平台_提供融合语音,短信,VoIP,视频和IM等通讯API及SDK. undefined 全明星之极验证 - SendCloud undefined [转载]国内外几个主流的在线开发 ...

  8. CSDN CODE平台,中国版Github简要使用说明

    CSDN CODE平台,中国版Github简要使用说明!(多图慎入)   楼主说 以前一直看到别人在用github发布自己的代码,各种牛逼,各种羡慕嫉妒恨.最后终于受不了了,也去注册了一个,注册到没什 ...

  9. ML平台_小米深度学习平台的架构与实践

    (转载:http://www.36dsj.com/archives/85383)机器学习与人工智能,相信大家已经耳熟能详,随着大规模标记数据的积累.神经网络算法的成熟以及高性能通用GPU的推广,深度学 ...

随机推荐

  1. Leetcode 181. Employees Earning More Than Their Managers

    The Employee table holds all employees including their managers. Every employee has an Id, and there ...

  2. IE6-能让png图片有透明效果的js代码

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. JS 上传文件 Uploadify 网址及 v3.2.1 参数说明

    http://www.uploadify.com/ 一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 . buttonC ...

  4. 使用(Drawable)资源——StateListDrawable资源

    StateListDrawable用于组织多个Drawable对象.当使用StateListDrawable作为目标组件的背景.前景图片时,StateListDrawable对象所显示的Drawabl ...

  5. 获取打开文件的PID

    var SI : TStartupInfo; PI : TProcessInformation; pid:DWORD; begin ZeroMemory(@SI, SizeOf(SI)); //Zer ...

  6. LNMP 快速安装

    网址是:http://lnmp.org/install.html 值得注意的是:它基本上把所有的扩展都装上了,有点冗余 安装完成后,根目录的位置是 /home/wwwroot/default LNMP ...

  7. Activity的生命周期与加载模式——Activity的4种加载模式

    配置Activity时可指定android:launchMode属性,该属性用于配置该Activity的加载模式,该属性支持如下4个属性值. standard:标准模式,这是默认的加载模式. sing ...

  8. TForm类

    显示给用户的窗体有两种:有模式和无模式的.具体使用哪一种窗体,取决于是否希望用户能够同时与这个窗体和其他窗体交互. 1.当打开一个模式窗体后,用户无法与应用程序的其他部分交互,知道用户关闭了这个窗体. ...

  9. 理解FMS中的实例

    FMS服务器端安装后,唯一需要注意的是设置端口,默认的访问端口是1935和80,如果服务器上安装了IIS提供 WEB服务,那么需要将80修改为其他端口如8080,否则,IIS将会无法工作.如果愿意,也 ...

  10. Java反射机制示例

    链接: http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html package com.stono.reftest; imp ...