沁恒ch32V208处理器开发(六)BLE开发

news2024/11/22 5:30:03

目录

    • 概述
    • 任务初始化
    • 任务的调度执行
    • TMOS 处理事件方法

概述

CH32V 系列是基于青稞 32 位 RISC-V 设计的工业级通用微控制器,片上集成 2Mbps 低功耗蓝牙通讯模块,支持低功耗蓝牙 BLE5.x,低功耗蓝牙协议栈以及应用均基于 TMOS(Task Management Operating System),TMOS
是一个控制循环,通过 TMOS 可设置事件的执行方式。TMOS 作为调度核心,BLE 协议栈、profile 定义、所有的应用都围绕它来实现。TMOS 不是传统意义上的操作系统,而是一种以实现多任务为核心的系统资源管理机制。

任务初始化

为保证 TMOS 持续运行,需要在 main()的最后循环执行 TMOS_SystemProcess()。而初始化任务需要调用 TMOS_ProcessEventRegister 函数,将事件的回调函数注册到 TMOS 中,并生成唯一的 8 位任务 ID。不同的任务初始化后任务 ID 依次递增,而任务 ID 越小任务优先级最高。协议栈任务必须具有最高的优先级。 函数实现如下:

		 halTaskID = TMOS_ProcessEventRegister( HAL_ProcessEvent ); 

任务的调度执行

TMOS 通过轮询的方式进行调度,系统时钟一般来源于 RTC,单位为 625μs。用户通过注册任务(Task)将自定义的事件(Event)添加到 TMOS 的任务链表中,再由 TMOS 调度运行。在任务初始化完成之后,TMOS 就会在循环中轮询任务事件,事件的标志存储在 16 位变量中,其中每一位在同一任务中对应一个唯一的事件。标志位为 1 代表该位对应的事件运行,为 0则为不运行。TMOS 根据任务的优先级轮询其是否有事件需要执行,系统任务,如 2.4G 自动模式中发送结束自动接收应答和蓝牙中相关事务,拥有最高优先级。待系统任务执行完成,若存在用户事件则执行相应的回调函数。当一个循环结束之后,若还有时间空余,系统会进入空闲或睡眠模式。如下图:
在这里插入图片描述

TMOS 处理事件方法

每个Task 用户最多可以自定义 15 个事件,0x8000 为系统预留的SYS_EVENT_MSG
事件,即系统消息传递事件,不可被定义,在TMOS中定义如下:

	// defined for all task
	#define SYS_EVENT_MSG                   (0x8000)  // A message is waiting event

我们以LED 闪灯消息为例,说明 TMOS 处理事件的通用代码格式,以 HAL 层的 HAL_LED_EVENT 事件为例,这里的 HAL_LED_EVENT 定义一个 LED闪烁 事件,在 HAL 层的任务初始化完成之后,在任务回调函数中添加事件 HAL_LED_EVEN,其基本格式如下:

1. if ( events & HAL_LED_EVENT ) 
2. { 
3. 	//LED闪烁功能实现
4.		return events ^ HAL_TEST_EVENT; 
5. } 

事件执行完成后需要返回对应的 16 位事件变量以清除事件,防止重复处理同一事件,
以上代码通过 return events ^ HAL_TEST_EVENT;清除了 HAL_TEST_EVENT 标志。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/903273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

光电比赛小车寻宝【1】--循迹策略

2023光电比赛总结:主要功能实现了,就是视频没做好,落选了非常的遗憾,也有很多的不甘心,也可以作为最后摆烂的惩罚吧,在这里总结一下经验教训。整体感觉时间不是非常充分,因为得到比赛的消息后突…

Linux之管理逻辑卷

目录 管理逻辑卷 认识LInux逻辑卷 LVM基本概念 部署逻辑卷 常用LVM部署命令 案例 管理与调整LVM卷 1.扩展卷组——添加/dev/nvme0n2p4物理卷到vg01中 2.在线扩展逻辑卷 管理逻辑卷 逻辑卷管理器是Linux 系统用于对硬盘分区进行管理的一种机制, 理论性较强 &…

安装搭建私有仓库 Harbor

目录 一. 准备环境 1.1安装 Docker 1.2安装 Docker Compose 二. 下载 Harbor 安装包 三. 解压安装包 四. 配置 Harbor 五. 安装 Harbor 六. 访问 Harbor 七. 创建项目、用户和角色 一. 准备环境 确保您的服务器满足 Harbor 的系统要求。最低要求是至少 2 核 CPU、4GB…

【沁恒蓝牙mesh】CH58x串口环形FIFO数据处理

本文章主要针对沁恒科技的CH58x芯片,以 BLE_UART 工程为依托,介绍串口数据的接收与处理。 该工程中 串口数据的处理用到了环形FIFO机制,可作为其他开发工具 📋 个人简介 💖 作者简介:大家好,我…

【LLM数据篇】预训练数据集+指令生成sft数据集

note 在《Aligning Large Language Models with Human: A Survey》综述中对LLM数据分类为典型的人工标注数据、self-instruct数据集等优秀的开源sft数据集:alpaca_data、belle、千言数据集、firefly、moss-003-sft-data多轮对话数据集等 文章目录 note构造指令实例…

k8s扩缩容与滚动更新

使用kubectl run创建应用 kubectl run kubernetes-bootcamp \> --imagedocker.io/jocatalin/kubernetes-bootcamp:v1 \> --port8080 端口暴露出去 kubectl expose pod kubernetes-bootcamp --type"NodePort" --port 8080 使用kubectl create创建应用 kubect…

该产品与此版 VMware Workstation 不兼容,因此无法使用

目录 VMware虚拟机开机报错 解决错误 VMware虚拟机开机报错 配置文件“D:\Users\tyn\Documents\Virtual Machines\Ubuntu16 的克隆\Ubuntu16 的克隆.vmx”是由 VMware 产品创建,但该产品与此版 VMware Workstation 不兼容,因此无法使用。 无法打开配…

VMware 虚拟机三种网络模式详解

文章目录 前言桥接模式(Bridged)桥接模式特点: 仅主机模式 (Host-only)仅主机模式 (Host-only)特点: NAT网络地址转换模式(NAT)仅主机模式 (Host-only)特点: 前言 很多同学在初次接触虚拟机的时候对 VMware 产品的三种网络模式不是很理解,本文就 VMware 的三种网络模式进行说明…

线上异常的处理

一、线上问题的排查 进程ID 简称为PID free -m 查看内存使用情况 iostat 查看磁盘读写活动情况 netstat 查看网络连接情况 df -h 查看磁盘空间使用情况 du -sh 查看文件大小情况 1.1、top 命令查看CPU占用情况 top -n num 查看CPU占用最高的num个进程top -Hp PID 或 top -H -p…

Vulnhub系列靶机--- Hackadmeic.RTB1

系列:Hackademic(此系列共2台) 难度:初级 信息收集 主机发现 netdiscover -r 192.168.80.0/24端口扫描 nmap -A -p- 192.168.80.143访问80端口 使用指纹识别插件查看是WordPress 根据首页显示的内容,点击target 点击…

Java-类与对象(上)

什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。 面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。 以面向对象方式来进行处理,就…

宏病毒的实践

一、实验目的: 1、了解梅丽莎宏病毒基本概念 2、自己实验梅丽莎宏病毒 二、预备知识: 1.什么是word宏 宏是一个批处理程序命令,正确地运用它可以提高工作效率。微软的office软件运行用户自己编写,叫VBA的脚本来增加其灵活性&…

12. 登录拦截器

由于论坛中的所有功能接口都需要在用户登录的情况下才能访问,所以要做统一的登录身份校验。 1. 在 interceptor 包下创建 LoginInterceptor Component // 交给 Spring 管理 public class LoginInterceptor implements HandlerInterceptor {// 从配置文件中读取配…

ChatGPT和Claude的能力全测评

创造性思维/语言 提示:“写一首 4 行诗,每行只有 3 个词,描写重庆” ChatGPT写诗👇 Claude写诗👇 仁者见仁,您怎么看谁更强? 提示: "如果你随机选择这个问题的答案,…

postgresql 的递归查询

postgresql 的递归查询功能很强大,可以实现传统 sql 无法实现的事情。那递归查询的执行逻辑是什么呢?在递归查询中,我们一般会用到 union 或者 union all,他们两者之间的区别是什么呢? 递归查询的执行逻辑 递归查询的…

⛳ TCP 协议面试题

目录 ⛳ TCP 协议面试题🐾 一、为什么关闭连接的需要四次挥⼿,⽽建⽴连接却只要三次握⼿呢?🏭 二、为什么连接建⽴的时候是三次握⼿,可以改成两次握⼿吗?👣 三、为什么主动断开⽅在TIME-WAIT状态…

shell 简单且常用的几种

目录 一、配置环境的shell脚本 二、系统资源脚本 一、要求 二、脚本内容 三、脚本解析 四、赋权并验证 一、配置环境的shell脚本 systemctl stop firewalld systemctl disable firewalld systemctl stop NetworkManager systemctl disable NetworkManager setenforce…

动物IT

动物是地球上最丰富和多样化的生物群体之一。它们包括鱼类、鸟类、爬行动物、两栖动物和哺乳动物等各种类型。动物在地球上有着不同的生态角色和生活习性。 动物对于维持生态平衡和生态系统的稳定性至关重要。它们在食物链中扮演着重要的角色,通过捕食和被捕食来保…

【李沐】3.5、softmax回归的从0开始实现

注意: 把每个像素位置看作⼀个特征 # 导入PyTorch库 import torch # 从IPython库中导入display模块,用于在交互式环境中显示内容 from IPython import display # 从d2l.torch模块中导入torch作为d2l的别名,方便后续使用d2l库中的功能 from d…

阿里云轻量应用服务器和云服务器有什么区别?2023更新

阿里云轻量应用服务器和云服务器ECS有什么区别?ECS是专业级云服务器,轻量应用服务器是轻量级服务器,轻量服务器使用门槛更低,适合个人开发者或中小企业新手使用,可视化运维,云服务器ECS适合集群类、高可用、…