资源描述
BLE学习应用笔记1OSAL 学习笔记1-OSAL.C * fn osal_strlen 计算字符串的长度。字符串必须空结尾。 * fn osal_memcpy 一般内存复制 * fn osal_revmemcpy /一般的颠倒内存复制。从资源缓存的最后开始,通过使用资源地址的指针移动len字节的,然后指针自减。 * fn osal_memdup /分配一个缓存(和osal_mem_alloc()),并复制这个资源缓存到刚分配好的控件. * fn osal_memcmp 一般内存比较 * fn osal_memset 设置内存缓存值 * fn osal_rand 产生随机数 * fn osal_msg_allocate 动态分配一个OSAL消息缓存 * fn osal_msg_deallocate 释放一个OSAL消息缓存(接收任务调用) * fn osal_msg_send 为某个任务发送一个OSAL消息 * fn osal_msg_receive 检索接收命令消息。 * fn osal_msg_find 发现 在一个OSAL消息匹配任务ID和事件参数。 * fn osal_msg_extract * /从OSAL队列中间 提取和移除 一个OSAL消息 * fn osal_set_event 为一个任务设置一个 OSAL 事件 * fn osal_clear_event 清除一个任务的事件标志。 * fn osal_init_system OSAL 初始化,必须在主函数中被调用 * fn osal_start_system 开始运行OSAL 主循环 * fn osal_run_system 现至少一个等待事件的第一个任务。2-OSAL_bufmgr.c * fn osal_bm_alloc 分配器函数的实现 * fn osal_bm_free 取消分配器函数 的实现 * fn osal_bm_adjust_header 调整header * fn osal_bm_adjust_tail 调整tail3-OSAL_cbtimer.c * fn osal_CbTimerInit 初始化函数 * fn osal_CbTimerProcessEvent/回调 定时器 任务事件处理函数 * fn osal_CbTimerStart/当定时器到期,注册调用函数将被调用。 * fn osal_CbTimerUpdate更新一个已经启动的 消息定时器 * fn osal_CbTimerStop/停止一个已经启动的定时器。4-OSAL_ClockBLE.c * fn osalTimeUpdate 更新 OSAL时间和定时器, * fn osalClockUpdate /用 运行ms 更新OSAL时间表, * fn osal_setClock/设置新时间。 * fn osal_getClock /得到当前时间。 * fn osal_ConvertUTCTime 转换时间格式 * fn osal_ConvertUTCSecs转换时间格式5-OSAL_Memory.c * fn osal_mem_init内存管理初始化 * fn osal_mem_kick /任务初始化 * fn osal_mem_alloc执行 OSAL 动态内存分配函数 * fn osal_mem_free /执行OSAL动态内存 释放函数6-OSAL_PwrMgr.c * fn osal_pwrmgr_init /初始化 电源管理系统 * fn osal_pwrmgr_task_state/每一个任务调用函数,来陈述是否这个任务要保存电源 * fn osal_pwrmgr_powerconserve /当没有活动安排 这个函数从主循环被调用,不应该从别的地方被调用。7-OSAL_snv.c8-OSAL_timers.c * fn osalTimerInit 初始化OSAL定时器系统 * fn osalAddTimer增加一个定时器到定时器列表 * fn osalFindTimer 在定时器列表中发现一个定时器 * fn osalDeleteTimer 从一个列表中删除一个定时器 * fn osal_start_timerEx /调用开始一个定时器在n ms内 * fn osal_stop_timerEx /停止一个已经启动的定时器。 * fn osalTimerUpdate更新 定时器结构 * fn osal_adjust_timers 更新已经过去的定时器结构 * fn osal_GetSystemClock 读取本地系统时钟=以上是一个BLE应用里的OSAL所用到的函数名字,及其功能,方便以后查询。=APP文件夹中(bloodpressure.c VS simpleblebroadcaster.c)BLE学习应用笔记21.安装 D:TI资料BLE-Stack 安装目录文件夹下C:Texas InstrumentsBLE-CC254x-1.2.1Projectsble 下有应用列子程序。2.安装IAR软件 安装目录D:TI资料IAR Embedded Workbench3.安装 SmartRF Flash Programmer软件SmartRF Packet Sniffer SmartRF Studio 7 安装目录D:TI资料TI Software4.阅读文件夹BLE-CC254x-1.2.1下的例子程序。5.APP应用层 HAL硬件驱动层 OSAL操作系统层 PROFILES配置文件层:BLE协议栈的 结构和配置 在这一层设置。 GAP 提供关于连接的服务 设置SMP 安全管理 ATT 属性结构 设置GATT 使用属性协议发现,服务或其他关联属性之间分组信息BLE学习应用笔记3BLE学习应用笔记31.搭建硬件:按接口连接好硬件:USB-小口USB-CCDebugger-DBG_CONNECTOR-设备1或设备2(usb的插头小块向内/插电池的插头小块向外)2.搭建之前安装软件:SmartRF Studio和SmartRF Flash Programmer.3.设备连接好后,电脑提示要求安装驱动:选择从指定位置安装:C:Program FilesTexas InstrumentsSmartRF ToolsDriversCebalwin_32bit_x86 (默认位置)插入设备后还需安装一个驱动:C:Texas InstrumentsBLE-CC254x-1.2.1AccessoriesDrivers。之后,重启CCDebugger,绿灯亮后,即可正常调试。4.打开SmartRF Studio 软件。“2.4GHz”下选择“CC2540”5.下载程序:SmartRF Flash Programmer,选择“SoC”,选择所下载文件*.hex所在文件夹,“Actions”中选择“Erase,program and verify”,下载点击“perform actions”BLE学习应用笔记41,连接好硬件,安装好驱动,USB Dongle小 是主设备。2.查看连接的com口。3.使用BTool软件:打开BTool,位置在C:Texas InstrumentsBLE-CC254x-1.2.1ProjectsBTool。选择com口,其余默认(115200,cts/rts,none,one,8),然后OK。4.下载程序:Flash Programmer或者IARBLE学习应用笔记5OSAL中断操作:1、 允许中断uint8 osal_int_enable( uint8 interrupt_id )- interrupt_id:中断标示符2、 禁止中断uint8 osal_int_disable( uint8 interrupt_id )- interrupt_id:中断标示符3、暂停中断 HAL_ENTER_CRITICAL_SECTION(x)4、重新启用中断 HAL_EXIT_CRITICAL_SECTION(x) OSAL内存操作:1、分配内存 void *osal_mem_alloc( uint16 size ) - size:分配缓冲区的大小2、释放内存 void osal_mem_free( void *ptr ) - ptr:指向释放的缓冲区OSAL消息传递:1、分配信息缓冲区 byte * osal_msg_allocate( uint16 len ) - len:信息的长度2、发送信息 byte osal_msg_send( byte destination_task, byte *msg_ptr ) - destination_task:接收信息任务的标示符 - msg_ptr:消息指针3、接收信息 byte *osal_msg_receive( byte task_id ) - task_id:接收信息的任务ID4、释放消息缓冲区 byte osal_msg_deallocate( byte *msg_ptr ) - msg_ptr:消息指针OSAL任务管理:1、任务初始化 byte osal_init_system( void ) -要创建的任务列表2、任务开始 void osal_start_system( void ) -系统任务的主循环函数3、获取活动任务ID byte osal_self( void ) -中断服务子程序中调用将会发生错误4、事件句柄的函数原型 (*pTaskEventHandlerFn)( unsigned char task_id, unsigned short event )OSAL定时器:1、启动定时器 byte osal_start_timerEx( byte taskID, UINT16 event_id, UINT16 timeout_value ) - taskID:定时器终止时事件任务的任务ID - event_id:用户定义的事件,时间终止时通知这个事件 -定时器设置前的时间量2、停止定时器 byte osal_stop_timerEx( byte task_id, UINT16 event_id ) - task_id:事件任务的任务ID - event_id:用户自定义事件3、读取系统时钟 uint32 osal_GetSystemClock( void ) -用来读取系统时钟(毫秒级)BLE学习应用笔记6将事件理解成按键,将任务理解成蜂鸣器.也就是说按键被按下蜂鸣器就响起来.对应事件-任务.然而,具体是哪一个按键被按下了.那么得利用事件附带的消息来判定,K1,K2?说白了消息就是附带物.
展开阅读全文