• 3.zigbee开发,OSAL原理及使用(类似操作系统)


    一。cc2530(zigbee的一种芯片)使用中断

            通过使用OSAL进行事件的切换,就是中断。

    二。OSAL初步使用

    1.对zigbee的工程文件进行分析(上一节的工程模版文件)

    (1)osal初始化:中断暂停

    1.main函数中第一个函数是中断暂停,因为初始化事件是不允许打断。

    2.右键进入定义

            主要使用的是hal库的中断暂停函数

    3.右键hal库函数进入定义

            就是把全局的中断置0,全部关闭

    4.为什么置一个0就可以全部中断都暂停呢?

            类似于公司,上管理下。

    (2)osal初始化:osal系统初始化

    1.进入main函数中,找到osal_init_system

    2.右键进入定义

            其中有内存,消息队列,时钟,电源,任务初始化。(所以就对他们进行处理)

    3.右键进入任务初始化

            taskID是在计算任务的数量,每初始化一个任务,就来增加taskID

    4.右键进入autoHome_App_init

            这是任务的初始化,初始化串口之类的代码

    (3)开启osal系统 (在main函数中,我们写流水灯代码的下方

    1.进入osal_start_system

    2.继续进入系统,开始run

    3.下面的方框就是轮寻任务,看那个任务有活干

    补充:查看轮寻查找的数组的定义

    tasksArr就是在任务设置中的那个数组(含盖全部事件)

    二。如何写一个新的事件(任务)

    1.找到写事件的地方

    1.任务初始化

    2.进入后,向下拉,找到process事件,找到msg信息。

    3.进入后,在下面就可以

    2.自己新建一个事件

    (1)MY_EVENT为自己新建的宏定义

    注意:必须是一位置1,多位置1可能会出现误差,所以设置为按位分事件,那么一共只能设置16个事件

    (2)

    1.找到周期发送函数(任务的时间处理函数中,autoHome_App_ProcessEvent前面有)

    2.第二个参数是个宏,也是个事件(信息发送的事件),不用进入,往下拉,再次找到他

    3.进入,这就是无线发送的函数

    补充:如何实现周期性的事件?

    1.运行时,打开这个事件

    2.if判断又会运行,下方定时器又激活

            所以中间就放消息发送代码。

  • 相关阅读:
    读写锁ReentrantReadWriteLock
    计算机网络——wireshark抓包
    JavaScript开发工具WebStorm入门教程:用户界面概况
    索引+sql练习优化
    人工智能数学基础——高等数学
    编译原理(前端)的算法和实现
    【 数据分析概述与职业操守】——CDA level1
    web3.0学习入门1:什么是web3.0
    校招程序员无项目经验如何破局
    前端面试:复习闭包
  • 原文地址:https://blog.csdn.net/m0_61659911/article/details/132854694