0x00 CREELINKS平台简介

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

0x01 处理器CeCcp资源是什么?

CeCcp资源是CREELINKS平台中将不同处理器平台中计数器(脉冲计数器)的共性提取出来,整理并编写出来的标准库。CeAd标准库包含了Ad操作相关的所有属性及API接口函数,如: 开始计数、停止计数、获得当前Ccp计数的值、清除计数等、。其标准库的头文件为CeCcp.h,不同处理器平台实现的源文件名统一为CeCcp.c。

    详细介绍如下:

    1、资源介绍

        Creelinks平台Ccp对象的操作头文件,包含有关处理器平台Ccp内容的相关操作。可能不同处理器平台,Ccp计数的最大值有所不同,所以使用Ccp资源时,尽量使用CeMcu.h中的相关Ccp属性宏定义。

    2、相关配置

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

 #define CE_CCP_MAX_COUNT            (uint32)65535               /*!< CCP所支持的最大计数值*/

其中:

        CE_CCP_MAX_COUNT:因受处理器的计数器硬件结构限制,不同处理器平台的计数器可计数的最大值不同,则用户在设定计数器的最大值时,请误超过此值。

3、属性对象

 /**
   * @brief  结构体,CCP对象可用属性集合
   */
 typedef struct
 {
     CE_RESOURCE ceResource;                             /*!< Ccp对应的资源号*/
     uint32      ceCntVal;                               /*!< 用户设定的Ccp计数临界值*/
     void*       pAddPar;                                /*!< 空指针,可用于传递额外参数*/
     void        (*callBackReachCntVal)(void* pAddPar);  /*!< Ccp计数到达用户设置的临界值后,需要执行的回调函数*/

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

其中:

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

         ceCntVal用户需设定的当前最大计数值,即达到此计数后即进入中断并调用用户提供的回调函数。

         pAddPar在调用回调函数时,传入的对象,可指向任意值。

         callBackReachCntVal用户需提供的当达到设定的最大计数值后,系统调用的用户回调,此回调一般均在中断中执行,故用户不要在回调内做大量耗时操作,以免影响系统性能。

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

    4、操作对象

 /**
   * @brief  结构体,CCP对象可用操作集合
   */
 typedef struct
 {
     CE_STATUS   (*initial)(CeCcp* ceCcp);               /*!< @brief 初始化Ccp计数器
                                                              @param ceCcp:ceCcp属性对象指针*/

     void        (*start)(CeCcp* ceCcp);                 /*!< @brief 开始Ccp计数
                                                              @param ceCcp:ceCcp属性对象指针*/

     void        (*stop)(CeCcp* ceCcp);                  /*!< @brief 停止Ccp计数
                                                              @param ceCcp:ceCcp属性对象指针*/

     uint32      (*getNowCcpCnt)(CeCcp* ceCcp);          /*!< @brief 获得当前Ccp计数的值,此值一定小于等于ceMaxCnt
                                                              @param ceCcp:ceCcp属性对象指针
                                                              @return 获取本次计数周期的计数值*/

     uint32      (*getAllCcpCnt)(CeCcp* ceCcp);          /*!< @brief 获得从开始计数起(调用startCcp时开始),到现在一共的计数值
                                                              @param ceCcp:ceCcp属性对象指针
                                                              @return 获取从开始计数到目前为止总的计数值*/

     void        (*clearCcpCnt)(CeCcp* ceCcp);           /*!< @brief 清除计数,从0开始重新计数
                                                              @param ceCcp:ceCcp属性对象指针*/
 }CeCcpOpBase;
 extern const CeCcpOpBase ceCcpOp;                       /*!< 所有与Ccp相关的操作*/

其中:

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

        start开始Ccp计数,开始计数时不会重置当前的计数值。

        stop停止Ccp计数,停止后,Ccp计数器操持各个寄存器的值不变,在下次调用start时,还将会在之前的基础上进行脉冲计数。

        getNowCcpCnt获得当前的计数值,即在未达到用户提供的最大计数值时,当前的计数值。一旦到达最大值后,调用回调后,则清空此值,并重新计数。

        getAllCcpCnt获得从Ccp第一次执行start开始到目前的计数总值,除非调用clearCcpCnt,否则内部计数不会清空。

        clearCcpCnt清空有关Ccp所有的计数寄存器,全部从0开始。

5、执行流程

6、应用示例

 /**
 ******************************************************************************
 * @brief  使用流程及示例程序(基于前后台非操作系统环境)
 * @function 设定Ccp的最大计数值为10,并每500ms读取当前值并通过Uart输出到上位机
 ******************************************************************************
 #include "Creelinks.h"
 CeCcp myCcp;                                       //Ccp属性对象
 uint8 ccpCount;                                    //当前Ccp的计数值

 // @brief  Ccp计数器达到设置值后的事件回调
 // @param  pAddPar:Ccp对像指针里的pAddPar参数
 void ceCcpReachCntCallBack(void* pAddPar)
 {
     ceSystemOp.printf("Ccp is reach setting count!\n");
 }

 int main(void)
 {
     ceSystemOp.initial();                          //Creelinks环境初始化
     ceSystemOp.initialDebug(RxUart);               //通过Uart串口输出Debug信息到上位机
     //TODO:请在此处插入模块初始化等操作
     myCcp.ceResource = RxC;                        //指定计数器资源号
     myCcp.ceCntVal = 10;                           //指定计数到何值后,进入中断回调
     myCcp.callBackReachCntVal = ceCcpReachCntCallBack;//指定回调函数
     myCcp.pAddPar = &myCcp;                        //指定属性中空指针为本身,中断回调中传入此指针
     ceCcpOp.initial(&myCcp);                       //初始化计数器
     ceCcpOp.start(&myCcp);                         //开始计数
     while (1)
     {
         ceSystemOp.mainTask();                     //Creelinks环境主循环任务,请保证此函数能够被周期调用
         //TODO:请在此处插入用户操作
         ccpCount = ceCcpOp.getNowCcpCnt(&myCcp);   //获得当前计数值
         ceSystemOp.printf("Ccp count is %d\n", ccpCount);//打印当前计数值
         ceSystemOp.delayMs(500);                   //延时500ms
     };
 }
 ******************************************************************************
 */

0x02 CeCcp的注意事项

    在不同处理器平台或不同的核心板下,Ccp计数器的最大值因受计数器硬件结构限制,会有所不同。使用Ccp资源时,请注意此最大值限制!
    当Ccp计数器达到用户设置的Ccp计数临界值时,当Ccp计数达到用户设定的最大计数值后,系统调用用户回调函数,此回调一般均在中断中执行,故用户不要在回调内做大量耗时操作,以免影响系统性能!

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

1、STM32平台下的ELinkSTM核心板下使用CeCcp...。代码及动画效果如下:

    待添加...

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

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

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

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

    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. API WAVE 专栏

    关于音频输入.输出设备的使用 源:API WAVE 专栏

  2. cocos2d动作讲解

    从本章开始,我们开始讲解cocos2d-x库的动作(Action).游戏的世界是一个动态的世界:无论是主角精灵还是NPC精灵都处于不断的运动当中,甚至是背景中漂流的树叶,随风而动的小草.这些明显的或者 ...

  3. PHP 安装使用 gearman

    1.安装服务器端: 官方下载,请到https://launchpad.net/gearmand. yum install boost-devel* gperf* libevent-devel* lib ...

  4. UWP_小说在线阅读器:功能要求与技术要求

    学了WP开发也有一年了,也没做过什么软件的.17年进发UWP,锻炼自己一下.做一个开源的小说阅读器吧. 既然开发一个软件.所以要设计一下吧. 功能要求: 可能要用到的技术,这个吗,这就是遇到问题在解决 ...

  5. Tsinsen-A1488 : 魔法波【高斯消元+异或方程组】

    高斯消元. 自己只能想出来把每一个点看成一个变量,用Xi表示其状态,这样必定TLE,n^2 个变量,再加上3次方的高斯消元(当然,可以用bitset压位). 正解如下: 我们把地图划分成一个个的横条和 ...

  6. SVN简明课程

    Reference: http://www.cnblogs.com/wangkangluo1/archive/2011/08/11/2135312.html 1. 版本控制介绍 1.1. 什么是版本控 ...

  7. 【蓝牙数据采集模块】-01-Sensor Controller 功能介绍

    一. CC2650芯片内部的结构框图如图,内部包含: 一个Cortex-M3主控制器,用来做整个芯片的功能与任务实现 一个Cortex-M0射频控制器,用来驱动RF相关电路 一个Sensor Cont ...

  8. HNU 13073 Ternarian Weights 解题报告

    本题大意: 用天平对一物品进行称重,现有重量不同的砝码,砝码的重量分别为:1,3,9,27,..,3^n.(n<20) 天平的右侧放砝码,左侧放物品或物品和砝码,使得左右两边的重量相等. 现有一 ...

  9. iOS 之 UITextView

    _lableAssess = [[UITextView alloc] init]; [_lableAssess setFrame:CGRectMake(left2, top2, width2, siz ...

  10. 网上搜集的一段php可逆加密函数

    php加密函数: function my_encrypt($data, $key='unun.in') { $char = $str = ''; $key = md5($key); $x = 0; $ ...