CREELINKS平臺_處理器CeCcp資源使用說明(CeCcp的配置與使用)

来源:http://www.cnblogs.com/semaphores/archive/2017/02/21/6420627.html
-Advertisement-
Play Games

0x00 CREELINKS平臺簡介 0x00 CREELINKS平臺簡介 CREELINKS(創e聯)是由大信科技有限公司研發,集合軟硬體、操作系統、數據云儲存、開發工具於一體,用於物聯網產品的設計、研發與生產的平臺。 平臺涉及智能硬體、車聯網、智能家居、可穿戴設備、工業控制等各個物聯網領域。旨在 ...


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...。代碼及動畫效果如下:

    待添加...


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MacOS:10.12.3 VMware:專業版 8.5.3 CentOS:CentOS-6.5-x86_64-bin-DVD版本 安裝完畢後,配置上網: 第一步: "編輯虛擬機的硬體設置"中打開”網路適配器“修改為下圖配置 註:修改配置完成後需要重啟虛擬機。 第二步: 配置centos為靜態IP: ...
  • 某伺服器只部署了個IIS,應用目錄都在D盤,可C盤97.5GB空間卻被占滿了。 將系統文件,隱藏文件全部顯示,再選中所有的C盤文件及文件夾查看容量只有19GB。 既然只部署了IIS,那自然就懷疑到了IIS日誌上去了。果然IIS日誌是在C盤下麵的。 可從外邊看,inetpub目錄卻只有3MB大小。 下 ...
  • MODBUS讀取多個寄存器(功能碼04) 為了簡單我這裡只用4個寄存器,當讓你也可以用125個寄存器,但是最多也只能用125個寄存器的。每個寄存器有上面的表知道為一個字的大小即2個位元組或者叫16比特位。 1、根據流程主機我們發送:01 04 00 00 00 04 F1 C9 2、響應數據隨意數據例 ...
  • 第十四節 用戶管理初級(下) 標簽(空格分隔): Linux實戰教學筆記 陳思齊 [更多資料點我查看][1] 1,用戶查詢相關命令id,finger,users,w,who,last,lastlog,groups 本節主要介紹在用戶管理中,查詢用戶的幾種常見工具id,finger,w,who,las ...
  • 主要過程為:準備 ubuntu 伺服器 -> 安裝 MySQL -> 安裝 apache -> 安裝 PHP (php 安裝要在 mysql 和 apache 之後的原因是因為 php 要依賴 apache 和 mysql 服務的) 首先有必要更新一下軟體包資源 sudo apt-get updat ...
  • 本位出處:http://www.cnblogs.com/wy123/p/6426261.html 正如ADO.NET連接至數據執行增刪查改操作一樣,PowerShell 也可以連接SQLServer資料庫,執行性增刪查改功能,除此之外,PowerShell還可以執行DDL和DCL操作,另外就是支持D ...
  • 系統:Ubuntu 16.04 JDK版本:1.8.0_121 Ubuntu下安裝JDK配置環境變數可見我的這篇文章 http://www.cnblogs.com/AloneZ/p/Ubuntu1.html 1.官網下載eclipse,我的版本是eclipse-jee-neon-2-linux-gt ...
  • 簡單的來理解,我所說的CNMP,不是CNM+P,而是CentOs+Nginx+MySql+PHP,也可以單純的理解為LNMP,但是系統是我們自己選的,雖說是Linux的一個分支,但我就喜歡CentOs的這個C。 好的,我們開搞伺服器。 工欲善其事,必先利其器,首先,你需要兩臺電腦,為了更好的去模擬。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...