一、风平浪静的程序世界芯片上电的那一刻,犹如小船撑起了帆,开始远航。这艘小船上,PC寄存器负责航行
1. 参考文档TencentOS-tiny 正式开源,全网首发评测,带你极速上手体验!TencentOS tiny端云对接开发指南(IoTHub)2. 云端配置登录腾讯云, 搜索"云产品"下的"物联网通信"产品, 或直接访问:https://console.cloud.tencent.com/iotcloud2.1. 创建新产品对于认证方式, 指定了设备通过何种方式和云端进...
1. SAL套接字抽象层SAL全称Socket Abstract Layer,即套接字抽象层,主要作用是对上层应用提供统一的 socket 编程接口,屏蔽底层网络硬件的差异。1.1. SAL层向下提供的接口SAL层向下提供的接口在net/sal_module_wrapper/sal_module_wrapper.h文件中声明,如下:typedef struct sal_module_st { int (*init)(void); int (*get_local_mac)(char
1. 前言之前在小熊派开发板上移植了TencentOS-tiny系统,通过使用ESP8266连接WIFI对接腾讯云平台IoThub:小熊派移植TencentOS-tiny+ESP8266+MQTT对接腾讯云平台IoThub然而我的手头还有一个M26 2G 模组和一个EC20 Cat.4 4G模组,所以就准备玩起来,因为MQTT是基于TCP通信的,所以先使用串口助手发送AT命令进行模组TCP通信测试:移远 M26 GSM模组(2G通信模组)AT指令测试 TCP 通信过程移远 EC20 模组(4
1. CMSIS-RTOS APICMSIS-RTOS API是ARM公司为RTOS内核制定的一套通用接口协议,它提供了一套标准的API接口,可以移植到各种各样的RTOS上,使得上层的软件、中间件、库以及其他组件在不同的RTOS之上都可以正常工作。这套API表现为两个文件:cmsis-os.h和cmsis-os.c,也就是说,不同的RTOS内核分别用自己的一套东西去适配.c文件中的接口,而用户只需要调用.h文件中给出的API编写应用。本文会列举性的给出CMSIS-RTOS有哪些API和宏定义,并给出每
1. 腾讯云IoT Explorer平台腾讯云物联网开发平台(IoT Explorer)为各行业的设备制造商、方案商及应用开发商提供一站式设备智能化服务。平台提供海量设备连接与管理能力及小程序应用开发能力,并打通腾讯云基础产品及 AI 能力,提升传统行业设备智能化的效率,降低用户的开发运维成本,助力用户业务
1.任务的创建方法回顾在开始探索任务的存在形式之前,让我们先来回顾一下在用户层创建一个任务的流程。① 创建一个数组作为任务栈:#define TASK1_STACK_SIZE 512k_stack_t task1_stack[TASK1_STACK_SIZE];② 创建一个任务控制块:k_task_t task1;③ 编写任务入口函数:void task1_entry(void *arg){ while(1) { printf("task1
知识点回顾双向链表1. 任务是如何切换的在RTOS内核中,一个任务切换到下一个任务的原理是:手动触发PendSV异常,在PendSV异常服务函数中实现任务切换。1.1. 如何触发PendSV异常stm32中,将中断及状态控制寄存器 NVIC_INT_CTRL 的第28位置1,即可触发 PendSV 异常,tos中触发异常的底层函数为port_context_switch,实现在 arch\arm\arm-v7m\cortex-m4\gcc\port_s.S中,如下: GLOBAL port
1. 软件定时器2. 提供的APItos_timer_createk_err_t tos_timer_create(k_timer_t *tmr, k_tick_t delay, k_tick_t period, k_timer_callback_t callback, void *cb_arg,
1. 硬件准备本文中我准备的腾讯官方EVB_MX_Plus开发板和ESP8266 WIFI通信模组:2. 云端产品创建在云端创建产品的过程和下文相同,不再赘述。小熊派移植TencentOS-tiny+ESP8266+MQTT对接腾讯云平台IoThub3. mqttclientmqttclient是一个高性能、高稳定性的跨平台MQTT客户端,基于socket API之上开发,可以在嵌入式设备(FreeRTOS/LiteOS/RT-Thread/TencentOS tiny)、Linux、Wi
1. 什么是队列队列(queue)是一种只能在一端插入元素、在另一端删除元素的数据结构,遵循先入先出(FIFO)的规则。队列中有两个基本概念:队头指针(可变):永远指向此队列的第一个数据元素;队尾指针(可变):永远指向此队列的最后一个数据元素;队列中的数据存储方式有两种:① 基于静态连续内存(数组)存储,如图:② 基于动态内存(链表节点)存储,如图:后续都使用基于静态内存存储的队列讲解。队列提供两个统一的操作:入队(enqueue)入队将一个元素添加到队尾,并将队尾指针
1. PM2.5传感器本文使用的是攀藤PMSA003 PM2.5传感器。PMSA003 是一款基于激光散射原理的数字式通用颗粒物传感器, 可连续采集并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而换算成为质量浓度,并以通用数字接口形式输出。本传感器可嵌入各种与空气中悬浮颗粒物浓度相关的仪器仪表或环境改善设备,为其提供及时准确的浓度数据。1.1. 测量原理本传感器采用激光散射原理。即:令激光照射在空气中的悬浮颗粒物上产生散射,同时在某一特定角度收集散射光,得到散射光强度随时间
内容导读:第一篇文章讲述了任务的三大元素:任务控制块、任务栈、任务入口函数,并讲述了编写RTOS任务入口函数时三个重要的注意点。RTOS内功修炼记(一)—— 任务到底应该怎么写?第二篇文章从任务如何切换开始讲起,引出RTOS内核中的就绪列表、优先级表,一层一层为你揭开RTOS内核优先级抢占式调度方法的神秘面纱。RTOS内功修炼记(二)—— 优先级抢占调度到底是怎么回事?建议先阅读上文,对RTOS内核的抢占式调度机制理解之后,再阅读本文也不迟。这篇文章将讲述RTOS内核到底是如何管理中断的
内容导读:第一篇文章讲述了任务的三大元素:任务控制块、任务栈、任务入口函数,并讲述了编写RTOS任务入口函数时三个重要的注意点。RTOS内功修炼记(一)—— 任务到底应该怎么写?第二篇文章从任务如何切换开始讲起,引出RTOS内核中的就绪列表、优先级表,一层一层为你揭开RTOS内核优先级抢占式调度方法的神秘面纱。RTOS内功修炼记(二)—— 优先级抢占调度到底是怎么回事?第三篇文章讲述了RTOS内核到底是如何管理中断的?用户该如何编写中断处理函数?以及用户如何设置临界段?RTOS内功修炼
任务间同步信号量互斥锁事件完成量计数锁栅栏
1. 甲醛传感器本文使用的是英国达特DART公司生产的 WZ-S型 甲醛检测传感器。WZ-S利用电化学原理对空气中存在的CH2O进行探测,直接将空气中的甲醛气体含量转换为浓度值,并使用数字方式输出,方便使用。1.1. 引脚说明1.2. 技术指标1.3. 输出数据传感器上电后默认状态为主动输出,即传感器主动向主机发送串行数据,时间间隔为 1s。2. 使用USB转串口查看输出数据2.1. 传感器主动模式上报直接使用UBS转串口连接传感器的VCC、GND、TXD、RXD,打开串口助手,波特
一、前言曾几何时,HTTP这种应用层协议对于我来说有点高级,总觉得调用 HTTP 接口是一件很难实现的事情,需要用一个很牛逼的库才行。直到昨天我学习了一个骚操作,原来用 socket 就可以直接玩 http,赶紧分享一波~开门见山,用socket玩转http接口就四步:① 建立 tcp 链接;② 发送请求数据(请求报文);③ 接收响应数据(响应报文);④ 关闭 tcp链接,从接收数据中提取有效信息。接下来一步一步开始玩。二、请求报文和响应报文1. 发送什么建立 TCP 之后,要向服
一、移植前的准备1. 引言因为项目的原因需要将原有的标准库工程升级为基于TencentOS-tiny的RTOS工程,所以花费一点时间记录移植过程,提供一份向基于STM32标准库的老工程中移植TencentOS-tiny的思路。2. 移植条件移植 TencentOS-tiny 需要确保 Systick 可以正常工作:① Systick用于向TencentOS-tiny提供时钟节拍支持,通常为1ms一次中断;② Systick属于内核外设,在TencentOS-tiny中会自动配置,无需用户手动配置
1. 专栏说明本专栏是作者深入研究RTOS内核时记录的笔记,目前包含的8篇文章覆盖了RTOS内核基础原理:01-任务到底应该怎么写02-优先级抢占调度到底是怎么回事03-内核到底是如何管理中断的04-小小的时钟节拍,撑起了内核半边天05-任务间同步机制的实现,万变不离其宗06-任务间通信为什么不用全局变量07-动态内存和静态内存管理机制08-CMSIS RTOS API用法详解及示例在工作过程中,我发现在实际使用RTOS完成项目时,理解这些知识仅能达到会用RTOS的水平,要想用好RT
1. 什么是单向链表链表全称叫做链式存储线性表(对应的,顺序存储线性表叫做数组)。单向链表是最简单的一种链表,每个链表只包含一个指针域,所以称为单链表。单链表分为两种:不带有头结点的单链表,和带有头结点的单链表。① 不带有头结点的单链表如图所示,头指针直接指向第一个有效结点:不带头结点的链表有个缺点:删除第一个结点的操作和其它结点不相同。② 为了解决这个缺陷,在第一个有效结点前放置一个头结点,头结点不存放有效数据,只是为了操作链表方便,就变为了带有头结点的单链表,如图:接下来是四个链表中重要
1. 什么是单向链表链表全称叫做链式存储线性表(对应的,顺序存储线性表叫做数组)。单向链表是最简单的一种链表,每个链表只包含一个指针域,所以称为单链表。单链表分为两种:不带有头结点的单链表,和带有头结点的单链表。
1. 专栏说明本专栏是作者深入研究RTOS内核时记录的笔记,目前包含的8篇文章覆盖了RTOS内核基础原理:01-任务到底应该怎么写02-优先级抢占调度到底是怎么回事03-内核到底是如何管理中断的04-小小的时钟节拍,撑起了内核半边天05-任务间同步机制的实现,万变不离其宗06-任务间通信为什么不用全局变
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号