10 2019 档案

摘要:软件定时器的基本概念 TencentOS tiny 的软件定时器是由操作系统提供的一类 ,它构建在硬件定时器基础之上,使系统能够提供不受硬件定时器资源限制的定时器服务,本质上软件定时器的使用相当于扩展了定时器的数量,允许创建更多的定时业务,它实现的功能与硬件定时器也是类似的。 硬件定时器是芯片本身提 阅读全文
posted @ 2019-10-16 22:56 杰杰IoT 阅读(393) 评论(0) 推荐(0)
摘要:引言 大家在裸机编程中很可能经常用到 这种变量,用来标志一下某个事件的发生,然后在循环中判断这些标志是否发生,如果是等待多个事件的话,还可能会 这样子做判断。当然,如果聪明一点的同学就会拿 的`某些位 A`事件,第二位表示 事件,当这两个事件都发生的时候,就判断 的值是多少,从而判断出哪个事件发生了 阅读全文
posted @ 2019-10-16 22:53 杰杰IoT 阅读(303) 评论(0) 推荐(0)
摘要:互斥锁 互斥锁又称互斥互斥锁,是一种特殊的信号量,它和信号量不同的是,它具有 等特性,在操作系统中常用于对临界资源的 处理。在任意时刻互斥锁的状态只有两种, ,当互斥锁被任务持有时,该互斥锁处于闭锁状态,当该任务释放互斥锁时,该互斥锁处于开锁状态。 一个任务持有互斥锁就表示它拥有互斥锁的所有权,只有 阅读全文
posted @ 2019-10-16 22:42 杰杰IoT 阅读(374) 评论(0) 推荐(0)
摘要:信号量 信号量( )在操作系统中是一种实现系统中任务与任务、任务与中断间同步或者临界资源互斥保护的机制。在多任务系统中,各任务之间常需要同步或互斥,信号量就可以为用户提供这方面的支持。 抽象来说,信号量是一个非负整数,每当信号量被获取( )时,该整数会减一,当该整数的值为 时,表示信号量处于无效状态 阅读全文
posted @ 2019-10-16 22:40 杰杰IoT 阅读(443) 评论(0) 推荐(0)
摘要:消息队列 在前一篇文章中 "【TencentOS tiny学习】源码分析(3)——队列" 我们描述了TencentOS tiny的队列实现,同时也点出了TencentOS tiny的队列是依赖于消息队列的,那么我们今天来看看消息队列的实现。 其实消息队列是TencentOS tiny的一个 基础组件 阅读全文
posted @ 2019-10-16 22:37 杰杰IoT 阅读(382) 评论(0) 推荐(0)
摘要:队列基本概念 队列是一种常用于任务间通信的数据结构,队列可以在 传递消息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消息是空时,读取消息的任务将被阻塞,用户还可以指定任务等待消息的时间 ,在这段时间中,如果队列为空,该任务将 状态以等待队列数据有效。当 阅读全文
posted @ 2019-10-16 22:35 杰杰IoT 阅读(243) 评论(0) 推荐(0)
摘要:温馨提示:本文不描述与浮点相关的寄存器的内容,如需了解自行查阅(毕竟我自己也不懂) 调度器的基本概念 中提供的任务调度器是基于优先级的全抢占式调度,在系统运行过程中,当有比当前任务优先级更高的任务就绪时,当前任务将立刻被 ,高优先级任务 处理器运行。 内核中也允许创建相同优先级的任务。相同优先级的任 阅读全文
posted @ 2019-10-16 22:32 杰杰IoT 阅读(474) 评论(0) 推荐(0)
摘要:任务的基本概念 从系统的角度看,任务是竞争系统资源的最小运行单元。TencentOS tiny是一个支持多任务的操作系统,任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行,理论上任何数量的任务都可以共享同一个优先级,这样子处于就绪态的多个相同优先级任务将会以时间片切换的方式共享 阅读全文
posted @ 2019-10-16 22:30 杰杰IoT 阅读(604) 评论(0) 推荐(0)
摘要:移植前的准备工作 1. 获取STM32的裸机工程模板 STM32的裸机工程模板直接使用野火STM32开发板配套的固件库例程即可。可以从我 上获取 "https://github.com/jiejieTop/TencentOS Demo" 下载TencentOS tiny 源码 TencentOS t 阅读全文
posted @ 2019-10-16 22:27 杰杰IoT 阅读(1967) 评论(0) 推荐(0)
摘要:新闻 2019年9月18日,腾讯宣布将 `自主研发 轻量级`物联网实时操作系统 TencentOS tiny 。相比市场上其它系统,腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞争力。该系统的开源可大幅降低物联网应用开发成本,提升开发效率,同时支持一键上云,对 阅读全文
posted @ 2019-10-16 22:23 杰杰IoT 阅读(895) 评论(0) 推荐(0)
摘要:ButtonDrive 自己写的一个按键驱动,支持单双击、连按、长按;采用回调处理按键事件(自定义消抖时间),使用只需3步,创建按键,按键事件与回调处理函数链接映射,周期检查按键。 源码地址: "https://github.com/jiejieTop/ButtonDrive" 前言 前几天写了个按 阅读全文
posted @ 2019-10-16 22:13 杰杰IoT 阅读(1993) 评论(2) 推荐(2)
摘要:基于Linux的kfifo移植到STM32(支持os的互斥访问) 关于kfifo kfifo是内核里面的一个First In First Out数据结构,它采用环形循环队列的数据结构来实现;它提供一个无边界的字节流服务,最重要的一点是,它使用并行无锁编程技术,即当它用于只有一个入队线程和一个出队线程 阅读全文
posted @ 2019-10-16 22:11 杰杰IoT 阅读(839) 评论(0) 推荐(1)
摘要:队列的概念 在此之前,我们来回顾一下队列的基本概念: 队列 (Queue):是一种先进先出(First In First Out ,简称 FIFO)的线性表,只允许在一端插入(入队),在另一端进行删除(出队)。 队列的特点 类似售票排队窗口,先到的人看到能先买到票,然后先走,后来的人只能后买到票 队 阅读全文
posted @ 2019-10-16 22:08 杰杰IoT 阅读(4321) 评论(1) 推荐(0)
摘要:本文介绍一种Cortex M内核中的精确延时方法 前言 为什么要学习这种延时的方法? 1. 很多时候我们跑操作系统,就一般会占用一个硬件定时器——SysTick,而我们一般操作系统的时钟节拍一般是设置100 1000HZ,也就是1ms——10ms产生一次中断。很多裸机教程使用延时函数又是基于SysT 阅读全文
posted @ 2019-10-16 22:05 杰杰IoT 阅读(1394) 评论(0) 推荐(0)
摘要:STM32之串口DMA接收不定长数据 引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口中断,在中断中读取数据就行了! 中断就是打断程序正常运行,怎么能保证高效呢?经常把主程序打断,主程序 阅读全文
posted @ 2019-10-16 22:02 杰杰IoT 阅读(6952) 评论(1) 推荐(3)
摘要:准备 在移植之前,我们首先要获取到FreeRTOS的官方的源码包。这里我们提供两个下载链接: 一个是官网:http://www.freertos.org/ 另外一个是代码托管网站:https://sourceforge.net/projects/freertos/files/FreeRTOS/ 这里 阅读全文
posted @ 2019-10-15 21:15 杰杰IoT 阅读(39345) 评论(2) 推荐(5)
摘要:写在前面:杰杰这个月很忙~所以并没有时间更新,现在健身房闭馆装修,晚上有空就更新一下!其实在公众号没更新的这段日子,每天都有兄弟在来关注我的公众号,这让我受宠若惊,在这里谢谢大家的支持啦!!谢谢^ 在这里我们就跟着火哥的书来学习一下FreeRTOS的消息队列,这本书我觉得写得很好,基本都讲解到了,关 阅读全文
posted @ 2019-10-15 21:12 杰杰IoT 阅读(3166) 评论(0) 推荐(1)
摘要:写在前面 主要是为刚接触 FreeRTOS 的用户指出那些新手通常容易遇到的问题。这里把最主要的篇幅放在栈溢出以及栈溢出j检测上,因为栈相关的问题是初学者遇到最多的问题。 printf stdarg.c 当调用 C 标准库 的函数时,栈空间使用量可能会急剧上升,特别是 IO 与字符串处理函数,比如 阅读全文
posted @ 2019-10-15 21:11 杰杰IoT 阅读(1136) 评论(0) 推荐(2)
摘要:没研究过操作系统的源码都不算学过操作系统 FreeRTOS 时间管理 时间管理包括两个方面:系统节拍以及任务延时管理。 系统节拍: 在前面的文章也讲得很多,想要系统正常运行,那么时钟节拍是必不可少的, 的时钟节拍通常由 提供,它周期性的产生定时中断,所谓的时钟节拍管理的核心就是这个定时中断的服务程序 阅读全文
posted @ 2019-10-15 21:10 杰杰IoT 阅读(2645) 评论(0) 推荐(1)
摘要:大家晚上好,我是杰杰,最近挺忙的,好久没有更新了,今天周末就吐血更新一下吧! 前言 是一个是实时内核,任务是程序执行的最小单位,也是调度器处理的基本单位,移植了 ,则避免不了对任务的管理,在多个任务运行的时候,任务切换显得尤为重要。而任务切换的效率会决定了系统的稳定性与效率。 的任务切换是干嘛的呢, 阅读全文
posted @ 2019-10-15 21:09 杰杰IoT 阅读(5864) 评论(0) 推荐(0)
摘要:FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在 中,列表与列表项使用得非常多,是 的一个数据结构,学习过数据结构的同学都知道,数据结构能使我们处理数据更加方便快速,能快速找到数据,在 中,这种列表与列表项更是必不可 阅读全文
posted @ 2019-10-15 21:09 杰杰IoT 阅读(818) 评论(0) 推荐(1)
摘要:问题解答 曾经有人问我,FreeRTOS那么多API,到底怎么记住呢? 我想说,其实API不难记,就是有点难找,因为FreeRTOS的API很多都是带参宏,所以跳来跳去的比较麻烦,而且注释也很多,要找还真不是那么容易,不过也没啥,一般都会有API手册的,我就告诉大家一下: FreeRTOS Kern 阅读全文
posted @ 2019-10-15 21:09 杰杰IoT 阅读(1976) 评论(0) 推荐(0)
摘要:FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数据结构,学习过数据结构的同学都知道,数据结构能使我们处理数据更加方便快速,能快速找到数据,在Fr 阅读全文
posted @ 2019-10-15 21:09 杰杰IoT 阅读(1178) 评论(0) 推荐(0)
摘要:补充 开始今天的内容之前,先补充一下上篇文章 "从单片机到操作系统 1" 的一点点遗漏的知识点。 创建任务中的堆栈大小问题,在task.h中有这样子的描述: 当任务创建时,内核会分为每个任务分配属于任务自己的唯一堆栈。usStackDepth 值用于告诉内核为它应该分配多大的栈空间。 这个值指定的是 阅读全文
posted @ 2019-10-15 21:08 杰杰IoT 阅读(4187) 评论(0) 推荐(0)
摘要:我们知道,(单核)单片机某一时刻只能干一件事,会造成单片机资源的浪费,而且还有可能响应不够及时,所以,在比较庞大的程序或者是要求实时性比较高的情况下,我们可以移植操作系统。因为这种情况下操作系统比裸机方便很多,效率也高。下面,杰杰将带你们走进FreeRTOS的世界随便看看。 下面正式开始本文内容。 阅读全文
posted @ 2019-10-15 21:02 杰杰IoT 阅读(4462) 评论(4) 推荐(2)