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. iOS开发——缩放图片

    捏合图片,在原imageView中放大缩小图片. 懒得多说,直接上代码: // //  ViewController.m //  Demo-hehehe // //  Created by yyt o ...

  2. STM32单片机在Keil5下仿真的问题解决及GPIO口初始化、使用

    STM32单片机在Keil5下仿真的问题解决及GPIO口初始化.使用 最近看了视频,里面有仿真,可以清楚看到GPIO口的数据变化,也想尝试下,DUG时却出现*** error 65: access v ...

  3. iOS动画特效 分类: ios技术 2015-05-15 16:29 311人阅读 评论(0) 收藏

    关于图层的几个坐标系. 对于ios来说,坐标系的(0,0)点在左上角,就是越往下,Y值越大.越往右,X值越大. 一个图层的frame,它是position,bounds,anchorPoint和tra ...

  4. BZOJ 2705 [SDOI2012]Longge的问题 ——Dirichlet积

    [题目分析] 狄利克雷卷积. 然后直接求出欧拉函数,计算和即可. [代码] #include <cstdio> #include <cstring> #include < ...

  5. 【转】50条大牛C++编程开发学习建议

    每个从事C++开发的朋友相信都能给后来者一些建议,但是真正为此进行大致总结的很少.本文就给出了网上流传的对C++编程开发学习的50条建议,总结的还是相当不错的,编程学习者(不仅限于C++学习者)如果真 ...

  6. NSString总结

    [from]http://www.jianshu.com/p/7994b0ad6b88 问题:NSString到底是不是字符串? NSString 是 OC中专门处理字符串的对象!提供了转换大小写,拼 ...

  7. 数据可视化-使用EXCEL和PS制作一个复杂饼图

    一个朋友让我帮忙用饼图去展现一下一堆数据,我说行,后来他给我后,我看到是一堆貌似从什么仪器中导出的一堆使用分隔符分开的文本文档,使用excel打开后如下(为了保护隐私忽略了用字母和数字代替原来的内容: ...

  8. React Native 之 搭建开发环境

    现在只能在MAC系统上安装. 1. 首先,HomeBrew 这是一个包管理库,用来下载其它工具. 打开网站:brew.sh 网页有个命令 /usr/bin/ruby -e "$(curl - ...

  9. UVA - 140 Bandwidth(带宽)(全排列)

    题意:给定图,求是带宽最小的结点排列. 分析:结点数最多为8,全排列即可.顶点范围是A~Z. #pragma comment(linker, "/STACK:102400000, 10240 ...

  10. 建立ipython集群

    启动controller ipcontroller -- ip = ipaddress 设置ssh免登陆 因为需要分发文件,采用ssh通信,所以需要配置ssh免登陆 分发配置文件 scp contro ...