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

0x00 CREELINKS平台简介

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

    CREELINKS www.creelinks.com

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

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

    详细介绍如下:

    1、资源介绍

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

    2、相关配置

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

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

        其中:

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

    3、属性对象

 1 /**
 2   * @brief  结构体,CCP对象可用属性集合
 3   */
 4 typedef struct
 5 {
 6     CE_RESOURCE ceResource;                             /*!< Ccp对应的资源号*/
 7     uint32      ceCntVal;                               /*!< 用户设定的Ccp计数临界值*/
 8     void*       pAddPar;                                /*!< 空指针,可用于传递额外参数*/
 9     void        (*callBackReachCntVal)(void* pAddPar);  /*!< Ccp计数到达用户设置的临界值后,需要执行的回调函数*/
10 
11     CeExCcpPar  ceExCcpPar;                             /*!< 与处理器平台相关的额外参数结构体,用以提高代码效率,用户无须关注*/
12 }CeCcp;

         其中:

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

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

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

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

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

    4、操作对象

 1 /**
 2   * @brief  结构体,CCP对象可用操作集合
 3   */
 4 typedef struct
 5 {
 6     CE_STATUS   (*initial)(CeCcp* ceCcp);               /*!< @brief 初始化Ccp计数器
 7                                                              @param ceCcp:ceCcp属性对象指针*/
 8 
 9     void        (*start)(CeCcp* ceCcp);                 /*!< @brief 开始Ccp计数
10                                                              @param ceCcp:ceCcp属性对象指针*/
11 
12     void        (*stop)(CeCcp* ceCcp);                  /*!< @brief 停止Ccp计数
13                                                              @param ceCcp:ceCcp属性对象指针*/
14 
15     uint32      (*getNowCcpCnt)(CeCcp* ceCcp);          /*!< @brief 获得当前Ccp计数的值,此值一定小于等于ceMaxCnt
16                                                              @param ceCcp:ceCcp属性对象指针
17                                                              @return 获取本次计数周期的计数值*/
18 
19     uint32      (*getAllCcpCnt)(CeCcp* ceCcp);          /*!< @brief 获得从开始计数起(调用startCcp时开始),到现在一共的计数值
20                                                              @param ceCcp:ceCcp属性对象指针
21                                                              @return 获取从开始计数到目前为止总的计数值*/
22 
23     void        (*clearCcpCnt)(CeCcp* ceCcp);           /*!< @brief 清除计数,从0开始重新计数
24                                                              @param ceCcp:ceCcp属性对象指针*/
25 }CeCcpOpBase;
26 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、应用示例

 1 /**
 2 ******************************************************************************
 3 * @brief  使用流程及示例程序(基于前后台非操作系统环境)
 4 * @function 设定Ccp的最大计数值为10,并每500ms读取当前值并通过Uart输出到上位机
 5 ******************************************************************************
 6 #include "Creelinks.h"
 7 CeCcp myCcp;                                       //Ccp属性对象
 8 uint8 ccpCount;                                    //当前Ccp的计数值
 9 
10 // @brief  Ccp计数器达到设置值后的事件回调
11 // @param  pAddPar:Ccp对像指针里的pAddPar参数
12 void ceCcpReachCntCallBack(void* pAddPar)
13 {
14     ceSystemOp.printf("Ccp is reach setting count!\n");
15 }
16 
17 int main(void)
18 {
19     ceSystemOp.initial();                          //Creelinks环境初始化
20     ceSystemOp.initialDebug(RxUart);               //通过Uart串口输出Debug信息到上位机
21     //TODO:请在此处插入模块初始化等操作
22     myCcp.ceResource = RxC;                        //指定计数器资源号
23     myCcp.ceCntVal = 10;                           //指定计数到何值后,进入中断回调
24     myCcp.callBackReachCntVal = ceCcpReachCntCallBack;//指定回调函数
25     myCcp.pAddPar = &myCcp;                        //指定属性中空指针为本身,中断回调中传入此指针
26     ceCcpOp.initial(&myCcp);                       //初始化计数器
27     ceCcpOp.start(&myCcp);                         //开始计数
28     while (1)
29     {
30         ceSystemOp.mainTask();                     //Creelinks环境主循环任务,请保证此函数能够被周期调用
31         //TODO:请在此处插入用户操作
32         ccpCount = ceCcpOp.getNowCcpCnt(&myCcp);   //获得当前计数值
33         ceSystemOp.printf("Ccp count is %d\n", ccpCount);//打印当前计数值
34         ceSystemOp.delayMs(500);                   //延时500ms
35     };
36 }
37 ******************************************************************************
38 */

0x02 CeCcp的注意事项

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

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

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

    待添加...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CREELINKS小四轴简介 诸多无人机爱好者想亲手动手DIY一个自己专属的无人机,买个现成的飞控板,组装一下就能飞(太easy,不仅毫无成就感,而且啥也没学到)。搜罗一下现如今无人机市场,各种无人机琳琅满目,开源无人机才是DIY的最爱,笔者也了解过无人机现状及相关开源的项目,如Crazepony、CrazyFile、Paparazzi UAV、Dronecode / PX4、OpenDroneMap等,但大多数开源无人机上手难度大,代码晦涩难理解,且处于不同的处理器平台,移植相当困难,代码设计难以借鉴及修改。小编特此打造一款与众不同的开源无人机。 CREELINKS无人机小四轴+遥控器实物展示: 小四轴无人机基本参数: 1) 处理器:STM32F103RET6/512K ROM/64K RAM 2) 加/角速度:MPU6050 3) 气压计:BMP180 4) 通讯方式:WIFI(ESP8266)、蓝牙(HC-05)、2.4G射频(NRF24L01+) 5) 电机:8520空心杯 6) 电池:850mA锂电池 7) 遥控器:10K高精度遥杆、1.8寸TFT彩色液晶显示屏 8) 滤波算法:滑动平均、限幅 9) 姿态解算:默认卡尔曼,可通过地面站配置为一阶、二阶、四元数。 10) PID算法:串行PID控制算法 11) GPS:当前V1.0版本暂不支持 12) 图传:当前V1.0版本暂不支持 无人机特点: 开源所有的源代码及原理图(PCB暂不开源) 支持代码无缝移植到其他平台 支持WIFI方式连接地面站 支持WIFI方式连接手机 支持WIFI方式连接遥控器 支持通过地面站配置PID参数及滤波参数 支持通过地面站观察参数波形 遥控器支持WIFI、蓝牙、2.4G射频三种通讯方式 CREELINKS开源无人机有何不同? 软件及硬件完全基于CREELINKS物平台的模块化设计思想,硬件模块抽象化、模块驱动对象化。整套实现的无人机代码,与底层处理器平台彻底无关,用户可很方便的移植到其它任何处理器平台。 飞控系统架构: 飞控源码: 所有的附件内容截图: 实物购买链接:https://item.taobao.com/item.htm?spm=2013.1.w4023-... 相关推荐: 【2016英飞凌杯一等奖】基于英飞凌无人机解决方案的跟拍应用设计 英飞凌无人机XMC4500多机演示板 - 全系统解决方案

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值