德州CC2640R2f蓝牙芯片学习笔记(三)ti_rto学习

目录

  • 前言:
  • 一、简介:
  • 二、任务:
    • 2.1、创建任务:
    • 2.2、定时器:
    • 2.3、信号量:
    • 2.4、任务队列:
    • 2.5、空闲任务
    • 2.6、单元管理:
    • 2.7、硬件中断:
    • 2.8、软件中断:

本系列文章由江山(csdn名:补不补布)(github:jianggogogo)自己写成,当中用到引用时都已经标记出来,如果出现版权问题,请直接联系我修改。当然,技术在于分享,欢迎大家转载,不过请注明出处。最后,如果出现有错误的地方欢迎大家指正。

前言:

本文基于谷雨cc2640r2f教程所编写,是一篇学习笔记。

一、简介:

  • 总体上来说,这也就是一个实时操作系统,只不过cc2640芯片协议栈是在这个系统之上运行的。
  • 其次,该系统是实时的抢占式的多线程操作系统。
  • 内核采用SYS/BIOS
    线程级别:
    名称|内容
    —|---
    硬件中断服务程序|硬件事件触发器
    软件中断|32个优先级
    任务|32个优先级,当写数据时停止运行
    空闲中断|单独的优先级种类

二、任务:

  • 一个并且只有一个任务处于运行状态,包括空闲任务。
  • 在任何情况下面,mcu都会切换到已经准备就绪的最高优先级任务。

2.1、创建任务:

任务创建之后,会存在一个自己的运行时间栈空间:
这是一个示例:可以看到大致流程为:
1、建立一个任务指针
2、初始化这个任务
3、设置栈内存
4、设置栈内存大小
5、设置任务优先级
6、构建任务,传递任务指针
德州CC2640R2f蓝牙芯片学习笔记(三)ti_rto学习_第1张图片

  • 当创建任务的时候,将一个任务函数的指针传递给,task_construct函数。

2.2、定时器:

这里就是一个定时器,注意,最低分辨率的rtos时钟周期是10微秒
如果需要更加高的分辨率那么需要通过硬件定时器。
例子:
德州CC2640R2f蓝牙芯片学习笔记(三)ti_rto学习_第2张图片

2.3、信号量:

信号量可以分为计数信号量和二进制信号量:
初始化信号量:
德州CC2640R2f蓝牙芯片学习笔记(三)ti_rto学习_第3张图片

  • 等待信号量:
    作用为,任务将在这里被阻塞,直到得到一个信号量
    在这里插入图片描述
  • 发布一个信号量:
    德州CC2640R2f蓝牙芯片学习笔记(三)ti_rto学习_第4张图片

2.4、任务队列:

队列采用先进先出的顺序来处理事件。
德州CC2640R2f蓝牙芯片学习笔记(三)ti_rto学习_第5张图片

2.5、空闲任务

cc2640中,空闲任务运行电源策略管理器

2.6、单元管理:

开发者可以使用pwoer_saving宏定义库来启动和禁止使用低功耗功能。

2.7、硬件中断:

在这里插入图片描述

2.8、软件中断:

不要在中断中执行阻塞代码。
德州CC2640R2f蓝牙芯片学习笔记(三)ti_rto学习_第6张图片

你可能感兴趣的:(#,蓝牙,嵌入式通讯)