1. 程式人生 > >【BLE-CC2640】CC2640之自定義週期事件

【BLE-CC2640】CC2640之自定義週期事件

本篇博文最後修改時間:2017年06月02日,00:29。

一、簡介

本文以SimpleBLEPeripheral工程為例,介紹如何使用系統提供的定時器執行一個自定義的週期事件

二、實驗平臺

協議棧版本:ble_cc26xx_2_01_00_44423

編譯軟體:IAR Embedded Workbench for ARM Version 7.40

硬體平臺:CC26xxDK開發板

模擬器:XDS100V3(香瓜)

博主:甜甜的大香瓜

宣告:喝水不忘挖井人,轉載請註明出處。

原文地址:http://blog.csdn.NET/feilusia

聯絡方式:[email protected]

香瓜BLE之CC2541群:127442605

香瓜BLE之CC2640群:557278427

香瓜BLE之Android群:541462902

香瓜微控制器之STM8/STM32群:164311667
香瓜微控制器之Linux群:512598061
香瓜微控制器之職場交流群:450154342
甜甜的大香瓜的小店(淘寶店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i 四、實驗前提 1、在進行本文步驟前,請先閱讀以下博文: 暫無 2、在進行本文步驟前,請先實現以下博文:
暫無

五、實驗步驟

1、定義週期事件

1)定義週期事件的巨集(simpleBLEPeripheral.c中)

#define SBP_GUA_PERIODIC_EVT                  0x0020    //香瓜週期事件

2)新增週期事件的處理(simpleBLEPeripheral.c的SimpleBLEPeripheral_taskFxn中)

    //香瓜週期事件
    if (events & SBP_GUA_PERIODIC_EVT)
    {
      events &= ~SBP_GUA_PERIODIC_EVT;

      //再次啟動定時器
      Util_startClock(&GUA_periodicClock);

      //香瓜週期處理函式
      GUA_performPeriodicTask();
    }  
放在其他事件之後即可。

2、定義及宣告週期事件的處理函式(simpleBLEPeripheral.c中)

1)定義週期事件的處理函式

//******************************************************************************            
//name:             GUA_performPeriodicTask           
//introduce:        週期事件的處理函式       
//parameter:        none                
//return:           none         
//author:           甜甜的大香瓜                 
//email:            [email protected]     
//QQ group          香瓜BLE之CC2640(557278427)                  
//changetime:       2016.08.28                     
//****************************************************************************** 
static void GUA_performPeriodicTask(void)
{

}
這裡沒做任何處理,可自行新增如LED閃爍、串列埠列印等,方便檢視現象。

2)宣告週期事件的處理函式

static void GUA_performPeriodicTask(void);

3、初始化定時器

1)定義定時器結構體資料(simpleBLEPeripheral.c中)

//GUA
static Clock_Struct GUA_periodicClock;

2)設定定時時間(simpleBLEPeripheral.c中)

//GUA
#define SBP_GUA_PERIODIC_EVT_PERIOD           3000      //香瓜定時時間
這裡設定為3000ms。

3)初始化定時事件(simpleBLEPeripheral.c的SimpleBLEPeripheral_init中)

  //初始化定時器
  Util_constructClock(&GUA_periodicClock, SimpleBLEPeripheral_clockHandler,
                      SBP_GUA_PERIODIC_EVT_PERIOD, 0, false, SBP_GUA_PERIODIC_EVT);

  //啟動定時器
  Util_startClock(&GUA_periodicClock);  

注意一個是定時器初始化函式,另一個是啟動定時器函式。必須兩個都有,定時器才能被啟動起來。

simpleBLEPeripheral工程預設一上電雖然進行了定時器初始化,而啟動定時器放在連接回調事件中,因此只有連線之後才會執行工程中預設的定時器周期函式。

六、實驗結果

設定斷點在週期事件中,模擬檢視,可發現約3S進一次事件。


因此,實驗成功。

相關推薦

BLE-CC2640CC2640定義週期事件

本篇博文最後修改時間:2017年06月02日,00:29。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何使用系統提供的定時器執行一個自定義的週期事件。 二、實驗平臺 協議棧版本:ble_cc26xx_2_01_00_44423

QtQt定義介面(實現無邊框、可移動)

簡述 UI設計是指對軟體的人機互動、操作邏輯、介面美觀的整體設計。好的UI設計不僅是讓軟體變得有個性、有品位,還要讓軟體的操作變得舒適簡單、自由,充分體現軟體的定位和特點。 愛美之心人皆有之。其實軟體介面就像工業造型一樣,是產品的重要賣點。一個產品擁有美觀的介面會給人帶來舒適的視覺享受,拉近人與產品的

QtQt定義介面(窗體縮放-跨平臺終極版)

簡述 通過上一節內容,我們實現了窗體的縮放,功能很不錯,但是很遺憾-不支援跨平臺!如果對於多平臺來說,這是一個硬傷,所以,我們急需要一個能夠支援跨平臺的實現方案。 在網上看到過很多不同的實現方式,多多少少會存在一些問題-要麼融合度太高、要麼不能很好地進行移動、縮放。基於前人的分享與總結,最後,我花了很

QtQt定義介面(右下角冒泡)

簡述 網頁右下角上經常會出現一些提示性的資訊,桌面軟體中也比較常見,類似360新聞、QQ訊息提示一樣! 這種功能用動畫實現起來很簡單,這節我們暫時使用定時器來實現,後面章節會對動畫框架進行詳細講解。 下面我們來實現一個右下角冒泡的功能。 簡述 效果 實現原理 實現 效果

QtQt定義介面(QMessageBox)

簡述 通過前幾節的自定義窗體的學習,我們可以很容易的寫出一套屬於自己風格的介面框架,通用於各種窗體,比如:QWidget、QDialog、QMainWindow。 大多數窗體的實現都是採用控制元件堆積來完成的,只要思路清晰,再複雜的介面實現起來都遊刃有餘。下面我來列舉一個由QMessageBox擴充套

QtQt定義搜尋框

簡述 關於搜尋框,大家都經常接觸。例如:瀏覽器搜尋、Windows資源管理器搜尋等。 當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。 簡述 效果 細節分析 原始碼下載 效果 細節分析 實現細節需要如下步驟: 組合實現,輸入框+

QtQt定義介面(窗體縮放)

簡述 通過前兩節內容,我們實現了自定義窗體的移動,以及自定義標題欄-用來顯示窗體的圖示、標題,以及控制窗體最小化、最大化、關閉。 在這之後,我們還缺少窗體的縮放-當滑鼠移動到窗體的邊框-左、上、右、下、左上角、左下角、右上角、右下角時候,滑鼠變為相應的樣式,並且窗體可以隨著滑鼠拖動而進行放大、縮小。

QtQt定義介面(新增定義標題欄)

簡述 通過上節內容,我們實現了自定義窗體的移動,但是我們缺少一個標題欄來顯示窗體的圖示、標題,以及控制窗體最小化、最大化、關閉的按鈕。 自定義標題欄後,所有的控制元件我們都可以定製,比如:在標題欄中新增換膚、設定按鈕以及其他控制元件。 簡述 效果 自定義標題欄 實現 介面說明

Android定義裝置管理

需求:控制手機的攝像頭和錄音全部禁用~     這篇文章使用android提供的裝置管理器類DeviceAdminReceiver ,來實現禁用手機攝像頭的功能,還能夠改變密碼,鎖屏,重啟等功能,具體功能請去查API,如果我沒記錯的話有5千多行... ... 但是這篇文章主

C語言字串處理定義函式

1、字串求長度 #include <stdio.h> int Mystrlen1(const char *str) { int i=0; while(*(str++)!='\0') { i++; } return i; } int Mystrlen2(cons

工具篇Android studio 定義註釋快速生成

前言 團隊協作中,儘量保證各自程式碼自己維護。這樣既能保證程式碼編寫者在邏輯上的一慣性,也能避免修改不熟悉的程式碼而引起bug問題。但即使是這樣的規避,也依然無法避免程式設計師之間程式碼的混合。所以,針對在一個類中,產出幾個人同時需要添注的程式碼。最好能做程式碼註釋的區分。這樣為長時間後的程式碼

TP5.1command配置定義命令

author:咔咔 wechat:fangkangfk   之前我們自定義命令都是修改原始碼實現的,今天我們來會一會command   首先在我們設定的名稱空間data裡邊創建出對應的資料夾   雖然我們在command配置自定義命

PE/vsVisual Studio定義生成工具配置方法和相關vs系統變數含義

DATE: 2018.11.20 1、自定義生成工具配置方法 以x86純彙編編譯為例: x86純彙編的編譯需要yasm彙編器工具,在VC系統路徑下檢視當前系統中是否含有可用的yasm.exe: where yasm.exe 可以將yasm.exe放在C盤windo

資源分享Gmod-Expression2 - 定義像素畫生成

entity disable bubuko 像素 video print ont erl ima *作者:BUI* 可自定義制作屬於你的像素畫(默認為Sans) 第77行的COLOR可編輯你想要的顏色(RGB值) 1,2,3,4分別代表第77行所定義的

前端庫jscrollpane.js 定義滾動條

前言 jScrollPane是一個jQuery外掛,它允許用HTML結構替換瀏覽器的預設滾動條(在具有溢位的元素上:auto),可以在css中自定義html。jScrollPane的設計靈活但非

Android intentandroid 攔截定義字尾檔案的intent請求

問題:如何開啟自定義字尾名(檔名.aaa) <intent-filter> <action android:name="android.intent.action.

小作業為NLog定義LayoutRenderer

長話短說   前文《解剖HttpClientFactory,自由擴充套件HttpMessageHandler》主要想講如何擴充套件HttpMessageHandler,  示例為在每個Http請求中的日誌中顯示TraceId, 現在來完成課後的小作業: 將TraceId顯示到Nlog的Layou

Spring MVC系列(五)定義數據綁定---HandlerMethodArgumentResolver

開閉 src pat 獲取參數 mvc .net 定義 開閉原則 淺析 介紹 前面幾節我們介紹了Spring MVC的幾種常見的數據綁定的方法,可以靈活地獲取用戶請求中的參數,例如@PathVariable,@ModelAttribute,@RequestPar

Android定義View實戰定義評價打分控制元件RatingBar,可以定義星星大小和間距

在Android開發中,我們經常會用到對商家或者商品的評價,運用星星進行打分。然而在Android系統中自帶的打分控制元件,RatingBar特別不好用,間距和大小無法改變。所以,我就自定義了一個特別好用的打分控制元件。在專案中可以直接使用,特別簡

Android定義View實戰定義超簡單SearchView搜尋框

package cn.bluemobi.dylan.searchview; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.A