完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 MOPPLAYER 于 2015-11-7 17:03 编辑 前言:依照官方範例BLE FindMe加以修改,以下流程會幫助你理解和建立此專案 1. 創建BLE FindMe範例專案 Fig. 1 創建專案 2. 範例專案上模塊上不需要做什麼改動,直接編譯即可 Fig. 2 編譯後的專案 3. 編譯完成後我們需要分析一下IAS服務中,所觸發的事件,從main()開始找起,找到如下 Fig. 3 IAS有關的觸發定義 4. 搜尋他的定義,可發現此函式將處理函式給註冊 Fig. 4 Callback定義 5. 其中註冊的Callback函式定義如下 Fig. 5 宣告Callbak函式的Pointer 6. 在理解Callback函式後,我們來分析IAS處理函式 Fig. 6 IAS處理函式定義 7. 其中40行定義了Write_CHAR_CMD事件,我們可以搜尋到他事件的定義 Fig. 7 定義在事件enum中 8. 以此為關鍵字繼續搜尋傳送此事件的處理函式,發現如下 Fig. 8 寫入特徵值的處理函式 9. 由Fig. 8可得知當IAS服務寫入特徵時候,將會觸發此函式來處理 Fig. 9 定義IAS服務有關的寫入觸發函式 Fig. 10 其中可發現觸發值的區間定義 10. 我們搜尋觸發值區間定義,這樣才可以擴充寫入值的範圍,其中長度不改變,一樣是1位8Bit=>00~FF Fig. 11 寫入特徵值結構定義 11. 再往裡層搜尋,可發現特徵值的值定義 Fig. 12 服務DB上特徵值的值定義 12. 因此我們可以知道Fig. 10中,判斷式將會先判斷是否值是小於等於CYBLE_HIGH_ALERT,如果是的話繼續觸發CYBLE_EVT_IASS_WRITE_CHAR_CMD事件並用Callbak函式來回傳 13. 定義Unsigned 8 Bit的最大值,即FF=255如下 Fig. 13 定義CYBLE_MAXIMUM = 255 14. 修改寫入觸發函式中的判斷式,如下 Fig. 14 修改特徵值上限的判斷式 15. 修改完後,回到main()函式,要做個變頻閃燈的話,相對應的在main()裡面要定義他的觸發,如下圖 Fig. 15 定義了INTERVAL=10,代表固定間格的毫秒數,注意此毫秒數只是估計值 Fig. 16 在Switch case中,保留原來三個條件,增加default讓3以上的值能夠跳到此來處理
其中判斷式if的關係為>=是必要的,避免回傳特徵值時候,toggleTimeout超過等號條件造成此if永不成立 Fig. 17 修改toggleTimeout定義為uint32,才不會overflow 至此完成設計 16. 燒寫上開發板,插上USB Dongle,並使用CySmart來驗證,打開特徵值列表如下 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2113 浏览 1 评论
1858 浏览 1 评论
3673 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1793 浏览 6 评论
1540 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
580浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
432浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
444浏览 2评论
391浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
992浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 00:15 , Processed in 1.017097 second(s), Total 64, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号