RT-Thread

RT-Thread学习记录4 线程的时间片轮询调度

耗尽温柔 提交于 2020-10-05 13:54:04
以下为看视频笔记。。。。 1.线程的优先级 优先级和时间片是线程的两个重要参数,分别描述了线程竞争处理器资源的能力和持有处理器时间长短的能力。 RT-Thread最大支持256个优先级(数值越小的优先级越高,0为最高优先级,最低优先级预留给空闲线程) ; 用户可以通过rt _config.h中 的RT _THREAD _PRIORITY _MAX宏来修改最大支持的优先级; 针对STM32默认设置最大支持32个优先级; 具体应用中,线程总数不受限制,能创建的线程总数只和具体硬件平台的内存有关 2.线程时间片 时间片只有在相同优先级的就绪态线程中起作用,系统对优先级相同的就绪态线程采用时间片轮转的调度方式进行调度时,时间片起到约束线程单次运行时长的作用,其单位是-一个系统节拍(OS Tick) 假设有2个优先级相同的就绪态线程A与B,A线程的时间片设置为10,B线程的时间片设置为5,那么当系统中不存在比A优先级高的就绪态线程时,系统会在A、B线程间来回切换执行,并且每次对A线程执行10个节拍的时长,对B线程执行5个节拍的时长 3. 线程调度规则 优先级抢占调度 操作系统总是让具有最高优先级的就绪任务优先运行:即当有任务的优先级高于当前任务优先级并且处于就绪态后,就- -定会发生任务调度 通过优先级抢占机制,最大限度的满足了系统的实时性 时间片轮询调度 当操作系统中存在相同优先级的线程时

单片机常用的14个C语言算法,看过的都成了大神!

馋奶兔 提交于 2020-10-03 01:48:37
文章来源于:单片机与嵌入式 算法(Algorithm): 计算机解题的基本思想方法和步骤。 算法的描述: 是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 本题使用数组来处理,用数组a[100]存放产生的确100个随机整数,数组x[10]来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x[1]中,个位是2的个数存放在x[2]中,……个位是0的个数存放在数组x[10]。 二、求两个整数的最大公约数、最小公倍数 分析: 求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数) (1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r; (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2)。 例如: 求 m="14"

基于iMXRT1052核心板设计的太阳能智能跟踪支架系统解决方案

萝らか妹 提交于 2020-10-02 13:25:12
随着中国光伏市场的日益成熟,技术不断提升,支架在整个电站中不仅仅是起到单纯的支撑作用,同时还可以大幅提升发电量,降低基础成本,因为同一地点一天内太阳高度角是不断变化的,所以光伏阵列在不同时间接收最大太阳辐射量的倾斜角度也是不断变化的。智能支架就是通过太阳能自动跟踪装置,使集能器的主光轴始终与太阳光线相平行,提高太阳能利用的控制设备。 一、结构组成 自动跟踪装置由传感器、方位角跟踪机构、高度角跟踪机构和自动控制装置组成。方位角跟踪机构由电源、方位角传感器、放大器、执行器组成。执行器由电机和传动齿轮组成。高度角跟踪机构由高度角传感器、放大器、执行器组成。控制单元由运算放大器、晶体管和继电器组成,并与照度传感器、方位角和高度角传感器及驱动电机连接。 二、方案实现: 1、UART:接传感器,传感器部分包括跟踪传感器和照度传感器,主要检测太阳由东往西视运动的偏转角度、太阳的视高度以及太阳的辐射强度。接lora数据传输采集数据。 2、IO:控制电机;当太阳光线发生倾斜时,传感器输出倾斜信号,该信号经放大后送入控制单元,控制单元经过对信号的处理分析指示执行器调整太阳能集能器,直到太阳能集能器对准太阳;当集能器表面有灰尘时可以控制雨刷喷水、清理集能器。 3、RS485:接上级 网关,发送状态信息并接收网关的指令,便于集中管理。飞凌iMXRT1052核心板将处理器功能管脚全部引出

中国开源激荡 20 年:IT 江湖,谁主沉浮?

女生的网名这么多〃 提交于 2020-10-02 08:47:51
作者 | 马超 责编 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 鹰击长空,鱼翔浅底,万类霜天竞自由。——《沁园春 · 长沙》 去年底,一国外程序员写的《中国的开源项目正在破坏 GitHub 的排行榜》博客引起国内开发者热议,他在博客对中国项目占领 GitHub 趋势榜进行了无奈的吐槽。 这样火爆的场面是我国开源事业蓬勃发展的一个侧影。如今越来越多中国年轻程序员投身到开源社区,目前在 GitHub 全球 4000 万注册用户中,中国开发者从数量和贡献度上均位列第二,越来越多的国内企业在国际合作的开源项目中扮演着重要角色。我国的活跃开源项目贡献者,有40%以上是在2019年里加入的,他们大多是 90 后,是年轻程序员的代表。 纵观开源在我国发展的二十多年历程里,开源软件从无到有,从小到大,目前已成为IT软件的基石:我们使用的安卓手机中运行着开源的操作系统,日常访问的网站中由众多开源软件来支撑。 中国开源事业始于互联网,发力于互联网,崛起于移动互联网,并在即将到来的万物互联时代迎来爆发。 那么什么是开源软件,中国开源软件的历史上又有哪些故事和传奇? 为了讲清楚开源的那些事,笔者找到了中国开源史上的五位代表性人物,他们是 LVS创始人章文嵩、MiniGui创始人魏永明、RT-Thread创始人熊谱翔、TDengine创始人陶建辉、TiDB创始人黄东旭 ,共同畅谈中国开源史

RT-Thread学习记录12 消息队列的使用

孤街醉人 提交于 2020-10-02 08:25:02
以下为看视频笔记.......... 1. 消息队列工作机制 消息队列是RT-Thread中另一种常用的线程间通信方式,消息队列是对邮箱的扩展。 消息队列能够接收来自线程或中断服务例程中发出的不固定长度的消息,并把消息缓存在自己的内存空间中,而其他线程能够从消息队列中读取相应的消息并进行对应的处理。 2. 消息队列控制块 消息队列控制块是操作系统用于管理消息队列的一个数据结构 struct rt_messagequeue { struct rt_ipc_object parent; void *msg_pool; //消息内存空间起始的地址 rt_uint16_t msg_size; //消息队列中的消息框最大大小,以4的整数倍表示 rt_uint16_t max_msgs; //消息队列中消息框的最大数目:msg_pool/(msg_size+4) rt_uint16_t entry; //消息队列实时消息框的个数指示,有新的消息进来就加一,读取了就减一 void *msg_queue_head; //指针指向消息的头 void *msg_queue_tail; //指针指向消息的尾 void *msg_queue_free; //指针指向未使用的消息 } typedef struct rt_messagequeue *rt_mq; 定义静态消息队列:struct rt

操作系统产生死锁的原因和处理策略

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-01 17:57:21
作者:Cyapirear 素材来源:华为开发者论坛 产生死锁的原因 当进程需要以独占的方式访问资源时,可能会发生死锁(Deadlock)。死锁是指两个或以上进程因竞争临界资源而造成的一种僵局,即一个进程等待一个已经被占用且永不释放的资源。若无外力作用,这些进程都无法向前推进。 产生死锁的根本原因 是系统能够提供的资源个数比要求该资源的进程数要少。 产生死锁的基本原因 可以分为两类:资源竞争和进程推进顺序不合理。 在资源竞争场景下,系统所拥有的资源是有限的,不能满足每个进程的需要。 例子: A有纸,B有笔 A:你不给我笔,我就写不了作业 B:你不给我纸,我就写不了作业 彼此僵持不下…… 多个程序同时运行时,进程推进顺序不合理。 例子: A要前进2步,到桌子前,再后退2步。 但如果执行顺序不合理:A先后退,就永远到不了桌子前,触发不了后续动作,就会死锁。 产生死锁的必要条件 产生死锁的四个必要条件: 互斥条件 涉及的资源是非共享的,即一次只能有一个进程使用。如果有另一个进程申请该资源,那么申请进程必须等待,直到该资源被释放。 不剥夺条件(非抢占) 进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自行释放。 占有并等待(部分分配) 进程每次申请它所需要的一部分资源。在等待一新资源的同时,进程继续占用已分配到的资源。 环路条件(循环等待)

10月1日后,GitHub用main替代master

≡放荡痞女 提交于 2020-09-29 06:31:26
转自:开源中国 GitHub 官方表示,从 2020 年 10 月 1 日起,在该平台上创建的所有新的源代码仓库将默认被命名为 "main",而不是原先的"master"。 值得注意的是,现有的存储库不会受到此更改影响。 早在今年 6 月份,受美国大规模的 “Black Lives Matter”运动影响,为了安抚愈演愈烈的民众情绪,GitHub 就宣布将替换掉 master 等术语,以避免联想奴隶制。现如今,在外界一些声音的催促下,这一举措则终于要正式落地了。 除 GitHub 外,为了避免带有所谓的“种族歧视色彩”,许多科技巨头或知名软件也都调整了自己的业务和产品,以平息社会舆论。包括有:MySQL 宣布删除 master、黑名单白名单等术语;Linus Torvalds 通过了 Linux 中避免 master/slave 等术语的提案;还有 Twitter 、GitHub、微软、LinkedIn、Ansible、Splunk、OpenZFS、OpenSSL、JP Morgan、 Android 移动操作系统、Go 编程语言、PHPUnit 和 Curl 等宣布要对此类术语进行删除或更改。同时,IBM、亚马逊、微软也都接连调整面部识别平台业务,以防加深歧视或遭受指责。 且最初在 Git 中写下“master”一词的开发者 Petr Baudis 也于 6

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程

ぃ、小莉子 提交于 2020-09-25 11:23:35
目录 在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程 在ART-Pi H750上移植TouchGFX(二)——制作MDK的外部QSPI-FLASH烧录算法 在ART-Pi H750上移植TouchGFX(三)——移植TouchGFX到RT-Thread系统 在ART-Pi H750上移植TouchGFX(四)——使用RT-Thread Studio移植TouchGFX 在ART-Pi H750上移植TouchGFX(五)——制作ST-LINK的外部QSPI-FLASH烧录算法 实验平台: 硬件: RT-Thread官方ART-PI H750开发版,正点原子4.3寸RGBLCD屏(800*480) 软件: 最新版本的STM32CubeH7固件库,TouchGFXDesigner v4.14和 STM32CubeMX V6.0.1,开发环境MDK v5.29 联系作者: 关注公众号,免费查看,回复“加群”,加入技术交流群 从零开始创建TouchGFX UI项目 选择MCU型号(STM32H750XBH6) 选择和配置组件(系统、外设、中间件) 系统需要 RCC SYS GUI功能需要 I2C FMC 在主程序中添加SDRAM的初始化代码: # define REFRESH_COUNT 677 # define SDRAM

中国开源激荡 20 年:IT 江湖,谁主沉浮?

妖精的绣舞 提交于 2020-08-18 20:52:09
作者 | 马超 责编 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 鹰击长空,鱼翔浅底,万类霜天竞自由。——《沁园春 · 长沙》 去年底,一国外程序员写的《中国的开源项目正在破坏 GitHub 的排行榜》博客引起国内开发者热议,他在博客对中国项目占领 GitHub 趋势榜进行了无奈的吐槽。 这样火爆的场面是我国开源事业蓬勃发展的一个侧影。如今越来越多中国年轻程序员投身到开源社区,目前在 GitHub 全球 4000 万注册用户中,中国开发者从数量和贡献度上均位列第二,越来越多的国内企业在国际合作的开源项目中扮演着重要角色。我国的活跃开源项目贡献者,有40%以上是在2019年里加入的,他们大多是 90 后,是年轻程序员的代表。 纵观开源在我国发展的二十多年历程里,开源软件从无到有,从小到大,目前已成为IT软件的基石:我们使用的安卓手机中运行着开源的操作系统,日常访问的网站中由众多开源软件来支撑。 中国开源事业始于互联网,发力于互联网,崛起于移动互联网,并在即将到来的万物互联时代迎来爆发。 那么什么是开源软件,中国开源软件的历史上又有哪些故事和传奇? 为了讲清楚开源的那些事,笔者找到了中国开源史上的五位代表性人物,他们是 LVS创始人章文嵩、MiniGui创始人魏永明、RT-Thread创始人熊谱翔、TDengine创始人陶建辉、TiDB创始人黄东旭 ,共同畅谈中国开源史

软硬兼备,分享实用且有趣的嵌入式项目

折月煮酒 提交于 2020-08-18 20:36:56
嵌 入式系统已经无处不在。IDC曾预测中国的嵌入式系统市场目前正在以年均30%的高速度增长,权威部门统计,我国嵌入式人才缺口每年50万人左右。但企业纷纷表示,符合需求的嵌入式人才严重短缺,有两个主要原因 1、人才培训体系的缺位 嵌入式专业是一门实践性非常强的学科,只有多动手,多实践,多编程,多调试才能真正掌握好嵌入式开发技术。我国高校和专业培训机构批量、速成、追逐热点的培训方式,难以培养掌握扎实基础的专业性人才。 2、用人市场需要软硬兼备的复合人才 面向嵌入式系统开发的工程师是“软硬不分家”的。既需要有扎实的软件能力,也需要能独立设计硬件的能力。嵌入式系统是面向应用的,不同的应用就有不同的实现方式。即使软件差异不大,也会对系统硬件带来比较大的变化。因此,嵌入式工程师,那就必须是一个既能画板子也能写软件的复合型人才。 予芯智能(上海)有限公司加入RT-Thread嵌入式软件人才计划,并成立予芯学院,从学员实践角度出发,设计了项目、实战、干货的在线训练营,让学员掌握最扎实的基础功底,用尽量多的时间来进行项目实战,从而为嵌入式市场提供实用人才。 01 试听直播课 课程简介 :课程为介绍性内容,适合各种基础,只要你想了解嵌入式相关的技术话题,就可以来学习。本课程的主要目标是为了指引大家如何系统的开展自己的嵌入式工程师之旅。 课程内容 : 本期课程共计两节课,主要讲解嵌入式工程师必备的