当时开发和测试的时候花了不少时间,[size=14.3999996185303px]自己感觉还是蛮靠谱的。虽然用的是nrf51的CPU写的,但是核心的内存管理部分可以移植到一般的ARM上(当然如果用RTOS的话就不必要使用我这个库了)。现在虽然不做这个了,但还是发出了跟各位分享下,希望能帮助一些朋友。如果你喜欢的话,可以给我买罐啤酒。:)
正文开始。
框架名字叫LX_NRF51Kit,特点如下:
1. 实现了简单的heap(参考了正点原子的STM32代码),然后基于heap实现了Queue、FIFO等。
2. 基于Queue实现了消息中心。
3. 重写了nordic原有的所有外设驱动,包括UART、Radio、ADC等。对于UART和Radio这类通信外设都把终端封装在了驱动代码内,通过回调向上抛数据(定时器也是如此)。另外通过FIFO作为收发数据的缓存,所以接口函数的结构是一样的,利于一些数据流的重定向。
4. 应用层主要写了一个软件定时器,把一路硬件定时器扩展为N路软件定时器,支持重发和单发模式;另外写了一个无延时(就是不会阻塞主线程)的Button模块,支持单击和双击。
5. 定义了日志系统。日志等级分为ERROR、WARNING、LOG三种,可以选择打开日志的等级;另外支持UART、RADIO和FLASH的重定向,三者可并行。
一句话,我尽了最大努力想让这个框架的使用者能够像在RTOS上开发应用,可以把LX_NRF51Kit看做单线程的RTOS。
文档结构:
1. APP存放的是应用层代码;
2. CortexM0是ARM的;
3. Debug放的是日志调试的模块;
4. Hardward放的是外部芯片的驱动,我写了一个FLASH芯片MX25L4006E的驱动作为示例,Debug模块中有个功能是把日志写到该芯片中的;
5. LX_NRF51Kit是框架的核心部分,包括heap、queue、FIFO和临界区控制等代码。其中临界区支持SoftDevice开启和关闭的,临界区代码也支持在中断中调用。详见lx_nrf51Kit.h;
6. nrf51822是MCU的外设驱动;
7. SoftDevice你懂的,把官方的很多乱七八糟的删除了。
最后,希望你喜欢!