发新帖本帖赏金 20.00元(功能说明)我要提问
返回列表
[程序源码]

分享下自己写的nrf51822的框架

[复制链接]
楼主: lxian1988
手机看帖
扫描二维码
随时随地手机跟帖
fst034356| | 2015-8-28 15:09 | 显示全部楼层
我想问一下spi怎么用呢。。

使用特权

评论回复
qqww157| | 2015-8-28 19:15 | 显示全部楼层
楼主,请你喝啤酒,告诉我地址。

使用特权

评论回复
beanandpeach| | 2015-8-31 12:36 | 显示全部楼层
谢谢

使用特权

评论回复
追逐浪花| | 2015-8-31 20:44 | 显示全部楼层
实现的这些功能真不少啊

使用特权

评论回复
davidlong1019| | 2015-9-7 13:56 | 显示全部楼层
很不错,学习下

使用特权

评论回复
ppsz77| | 2015-9-9 14:02 | 显示全部楼层
最近看了TI的例子,直接看晕了,来看看楼主的例子怎样

使用特权

评论回复
STUSER| | 2015-10-5 20:41 | 显示全部楼层
非常不错,可以参考一下,NORDIC的IC没有用过。

使用特权

评论回复
FantaSy_| | 2015-10-16 22:32 | 显示全部楼层
好东西!!!!

使用特权

评论回复
xye_yt| | 2015-11-2 15:09 | 显示全部楼层
好**,感谢!

使用特权

评论回复
yao1318| | 2015-11-3 08:18 | 显示全部楼层
好东西,谢谢分享!

使用特权

评论回复
yuanquan12345| | 2015-11-3 11:08 | 显示全部楼层
记号。

使用特权

评论回复
longnbo| | 2015-11-20 19:12 | 显示全部楼层
顶一个!!!!

使用特权

评论回复
qq53257434| | 2015-11-24 18:50 | 显示全部楼层
太好了

使用特权

评论回复
lonfaye| | 2015-11-30 14:02 | 显示全部楼层
你好,lxian1988. 最近从网上下载了你的NRF51822的RTOS程序拜读了一下,受益匪浅。现有个问题想请教一下,怎么在你的rtos中添加ble的service?谢谢。

使用特权

评论回复
jshengw| | 2015-11-30 16:43 | 显示全部楼层
感谢分享啊,虽然暂时用不到

使用特权

评论回复
lxian1988|  楼主 | 2015-12-1 10:32 | 显示全部楼层
lonfaye 发表于 2015-11-30 14:02
你好,lxian1988. 最近从网上下载了你的NRF51822的RTOS程序拜读了一下,受益匪浅。现有个问题想请教一下, ...

你好,首先感谢你的关注,不过这个kit只是一个封装成消息队列的框架而已,算不上RTOS。。。
对于集成BLE的问题,我这里简要的讲下,希望能对小伙伴们有帮助。不过最终集成还是需要你们自己了解Nordic的那部分代码,最好是弄懂了官方的一个简单的例子,比如心率仪。

BLE的SoftDevice是通过软中断的方式与应用程序通信的,当BLE的程序在后台运行的时候,会产生各种事件,例如蓝牙收到数据、蓝牙断开等,这些事件发生后都会自动调用 SWI2_IRQHandler 这个中断函数(注意只是告诉应用层有事件发生,具体的是什么事件要通过其他函数读取)。当这个函数被自动调用的时候,应用层可以通过sd_evt_get 和 sd_ble_evt_get这两个函数去获取SOC和BLE的事件,并解析、处理。

我的框架中已经对这一块进行了封装,把SWI2_IRQHandler被调用与一个消息APP_MSG_SOFTDEVICE_EVENT做了对应。当该中断函数被调用的时候,会往event_loop中加入APP_MSG_SOFTDEVICE_EVENT这个消息,主线程轮询event_loop后会相应调用handleSoftDeviceEvent,在这里去调用sd_evt_get和sd_ble_evt_get,然后处理SOV和BLE的各种事件。到这一块以后其实就可以使用官方的代码了。我的建议是封装一个统一处理BLE事件的函数,例如叫 BLE_HandleEvents(ble_evt_t *event),放在整个BLE模块对外的.h文件中,然后在app.c的handleSoftDeviceEvent函数中调用。

进一步优化:
但是BLE的应用层代码仍然十分复杂。例如现在有个蓝牙断开的事件,按照上面的流程处理,最后会发现在一个嵌套了多层的子函数中才发现这是一个蓝牙断开的事件;又或者是收到了一个蓝牙数据包,最后解析出来是一个自定义的命令,那么要解析出这个结果应该比蓝牙断开还要多一层的逻辑。假如我们希望在这些事件发生的时候分别去做一些工作,直接在这些子函数中处理会对框架造成很大破坏。
解决的方法就是把这些事件继续封装成Message并在发生的时候放入event_loop中,然后对应的在app.c中添加handle函数进行统一处理。

最后祝好运 :)

使用特权

评论回复
chuangyuwei| | 2015-12-2 11:30 | 显示全部楼层
楼主NRF51822这颗芯片可以找我买,深圳创宇微林小娜,QQ:2763909690

使用特权

评论回复
jimaoxin| | 2015-12-4 08:36 | 显示全部楼层
强大!支持!感谢!

使用特权

评论回复
wangjakn| | 2015-12-4 16:51 | 显示全部楼层
楼主这种精神我无话可说,只能大大的点赞。。

使用特权

评论回复
wuqingfan| | 2015-12-14 19:18 | 显示全部楼层
XIEXIE

使用特权

评论回复
发新帖 本帖赏金 20.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则