[ BLE4.0 ] 伦茨ST17H66开发-OSAL系统的任务结构

目录

一、前言

二、OSAL任务

三、OSAL设置事件


一、前言

        从本文开始,我将开设关于BLE4.0开发的专栏,分享一下自己的开发经验。

        开发所使用的芯片主要为:伦茨ST17H66

二、OSAL任务

        这个系统不是很常见,他不同于我们开发STM32的FreeRTOS系统,OSAL系统是一种轮询式操作系统,他在程序中一直去查询各个任务有没有需要处理的事件,去发现并执行。

        伦茨开发包:【免费】伦茨ST17H66开发资源包资源-CSDN文库

        先熟悉一下OSAL系统的流程,打开开发包里的simpleBlePeripheral工程。

        我们常说的蓝牙开发,无非就是主机和从机开发,因此我们经常需要在从机例程中完善自己的程序。

        先编译一遍,确保不会报错。

        在main.c函数中经过一系列的基础配置后,启动app_main函数。右键去找到函数定义。

        经过两个初始配置的语句后,进入OSAL系统中,再次F12去找函数定义。

        提示找不到,没关系,这是伦茨将其封装起来了。我们看不见而已。不过大家可以参考其他的芯片学习,比如CC2540,同样使用OSAL系统。

        我们进入OSAL_SimpleBLEPeripheral.c文件中,找到osalInitTasks函数,这就是OSAL系统轮询的任务列表,每个任务都需要一个唯一的Task。这个函数在osal_init_system函数中调用,osal_start_system函数中正是在轮询这些任务。

        一个任务对于一个事件,在osalInitTasks函数的上方,以同样的顺序对应着每个人的事件处理函数。

        我们找到最后一个事件,查看他的定义。

        不难看出,通过events参数可以向事件传递出,我要触发的事件是什么?events即我们所说的事件ID。

        那么根据类型可以看出,事件ID共有16位。由用户在任务的头文件中定义。

位数15

14

131211109876543210
0000000000000000

        其中,最高位为1是0x8000,这代表着系统事件,即SYS_EVENT_MSG。

/*********************************************************************
    Global System Events
*/

#define SYS_EVENT_MSG               0x8000  // A message is waiting event

三、OSAL设置事件

        我们已经知道任务id和事件id,那么如何设置事件?

        使用osal_set_event( TaskID, EventsID )函数即可设置事件。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西菜鸟

打赏支持获得问题解答机会

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值