什么情况下要打狂犬疫苗| 世界八大奇迹是什么| 窝是什么结构的字| 无什么| 不出汗的人是什么原因| 很man是什么意思| 藏海花是什么花| 火龙果不能和什么一起吃| 隐翅虫怕什么| 什么眼霜比较好用| 全科医学科看什么病| 黑色素通过什么排出来| 显怀是什么意思| 金牛男和什么星座女最配| 乐高为什么这么贵| 手掌横纹代表什么意思| 1938年中国发生了什么| 卡介苗什么时候接种| 头痛反胃想吐什么原因| 鼻渊是什么意思| adidas是什么品牌| 抗氧化性是什么意思| 赤脚医生是什么意思| 看脖子应该挂什么科| 一个月一个寸读什么| 早上头晕是什么原因| 肚脐眼中间疼是什么原因| 尘肺病用什么药最好| 何妨是什么意思| 月经期间可以喝什么汤比较好| 什么网站可以看黄片| 中气是什么意思| 胃肠镜检查挂什么科| 做放疗的人吃什么好| 偶像包袱是什么意思| 上午九点多是什么时辰| 颈椎头晕吃点什么药| 蓬头垢面是什么意思| 带状疱疹是什么引起的| 眼睛一直跳是什么原因| 高考三百多分能上什么学校| 丁未五行属什么| 补充镁有什么好处| 榨菜是什么菜做的| 玉对人身体健康有什么好处| 大庭广众什么意思| 什么床垫好| 什么是bmi| 广西是什么族| 椭圆形脸适合什么发型| 脸皮最厚是什么生肖| 抗hp治疗是什么意思| 2018年属什么| 堃字的寓意是什么意思| 胸椎退变是什么意思| 梦见死人复活什么预兆| 梦见捡硬币是什么预兆| 破财消灾什么意思| 什么动物最没有方向感| 疱疹用什么药| 滴虫性阴炎用什么药效果最好| 腹泻吃什么药好| 接吻会传染什么病| 苹果手机为什么那么贵| 吃炒黄豆有什么好处和坏处| 什么叫甲状腺弥漫病变| 吃薄荷对人身体有什么好处| 孔子的真名叫什么| 除牛反绒是什么意思| 什么叫便秘| 阿胶的原料是什么| exo什么意思| 胶原蛋白起什么作用| 亥时右眼跳是什么预兆| 什么运动减肥最快| 人爱出汗是什么原因| 腱鞘炎吃什么药最好| sub是什么意思| 尿素是什么意思| 耀武扬威的意思是什么| 区武装部部长是什么级别| 主观臆断是什么意思| 长方脸适合什么样的发型| 全脂奶粉是什么意思| guou是什么牌子的手表| 胃强脾弱吃什么中成药| 人流需要准备什么| 九牛一毛是什么意思| 韩信属什么生肖| 碱性磷酸酶高吃什么药| 鱼水之欢是什么意思| 蜘蛛代表什么生肖| 桑葚搭配什么泡水喝最好| 凤眼果什么时候成熟| 高温天气喝什么水最好| 乙肝复查检查什么项目| 颈椎反弓有什么症状| 血脂是指什么| m0是什么意思| 12月12是什么星座| 肾结石是什么原因引起的| 经常放屁吃什么药好| 什么动物没有眼睛| 咕咚是什么| 低钾血症是什么意思| 什么闪烁| 柑橘溃疡病用什么药| 华法林是什么药| 牦牛角手串有什么作用| 都有什么菜好吃| vs什么意思| 心脏不舒服吃什么药| 毛宁和毛阿敏是什么关系| 菜粥里面放什么菜最好| 儿童呕吐吃什么药| 心跳不规律是什么原因| 恨天高是什么意思| 吃丝瓜有什么功效和作用| 盆腔炎吃什么药好得快| 年轮稀疏的一面是什么方向| ev71是什么疫苗| 红色加绿色等于什么颜色| 出现幻觉幻听是什么心理疾病| 今天吃什么随机| 舌尖红是什么原因| 什么是春梦| 梳子什么材质的好| 2018 年是什么年| 养仓鼠需要注意什么| 拉肚子吃什么好得快| 鸡眼膏为什么越贴越疼| 马达是什么| 葡萄糖阴性什么意思| 火车代表什么生肖| 初次见面说什么| 奔豚是什么意思| 湿气重不能吃什么| 柯基犬为什么要断尾巴| 狗摇尾巴是什么意思| 减肥最快的运动是什么运动| 植发用什么头发| 十万个为什么内容| 不什么不什么的四字词语| 青柠是什么水果| 相思什么意思| 三羊念什么字| 苏州古代叫什么| 美色是什么意思| 什么情况要割包皮| 蟋蟀吃什么东西| 说话鼻音重是什么原因| 真菌性龟头炎用什么药| 痛风为什么要禁欲| 合卺是什么意思| 头疼发热是什么原因| 发腮是什么意思| 今年什么时候暑伏| 小肚子疼吃什么药| 妈妈弟弟的儿子叫什么| 眼睛红是什么原因引起的| 垂死病中惊坐起什么意思| 护理部是干什么的| 晒伤用什么| 红加黄等于什么颜色| nacl是什么| 耳堵是什么| 过敏性鼻炎吃什么中药| 什么情况要做支气管镜| 红豆杉是什么植物| 33数字代表什么意思| 杠杠的是什么意思| 射线是什么| 鲻鱼是什么鱼| 9点多是什么时辰| left什么意思| 早筛是检查什么项目| x表示什么| 吃什么| 郭字五行属什么| 蛋白烫发是什么意思| 怀孕要检查什么项目| 送老师什么礼物最好| 体温偏低是什么原因| anker是什么牌子| 梦到被雷劈是什么意思| mono是什么意思| 伤骨头了吃什么好得快| 宫颈囊肿是什么症状| 结甲可能是什么意思| 怀孕有什么特征和反应| 阿玛施属于什么档次| 前列腺在哪里男人的什么部位| 郁闷是什么意思| 什么去甲醛最快有效| 吃蜂蜜不能吃什么食物| 肝风是什么意思| 电影bd是什么意思| 4.19是什么星座| 糖尿病吃什么菜最好| 貂蝉原名叫什么| 幽门螺旋杆菌抗体阳性是什么意思| 月经期间喝酒会有什么影响| 温州有什么好玩的| 肾结石是由什么原因引起的| 痛风挂什么科就医| 二级建造师什么时候出成绩| 三三两两是什么生肖| 什么是地震| 女方什么人不能送亲| 梦见栽树是什么意思| 舌头伸不出来是什么原因| 乳杆菌是什么| 恶寒什么意思| 肋间神经痛用什么药| 除是什么意思| 1961年属什么生肖| 河南有什么特产| 乌龟能吃什么| 小孩吃指甲是什么原因造成的| 86年属什么的| 拉拉秧学名叫什么| 什么是钙化灶| 姨妈安全期是什么时候| 窦性心律不齐什么意思| b型和o型生的孩子是什么血型| 腰肌劳损是什么症状| 送病人什么礼物好| 红玫瑰花语是什么意思| ras医学上是什么意思| 办理公证需要什么材料| 流汗多是什么原因| 二垒是什么意思| 1972年出生属什么生肖| 布洛芬的副作用是什么| 什么是生物工程| 双规是什么意思| 日加军念什么| 癫痫病是什么症状| 95年什么命| smile是什么意思| 五年生存率是什么意思| 感冒了挂什么科| 肌酐500多属于什么期怎么治疗| 害怕是什么意思| 日本什么时候开始侵略中国| 今年43岁属什么生肖| 梦见大胖小子是什么意思| 什么水果利尿| 投诉快递打什么电话| 尼龙是什么| 正常的月经是什么颜色| 冰菜是什么菜| 心肾不交是什么意思| 9.15是什么星座| 用什么香皂洗脸可以祛痘| 孙膑原名叫什么| 什么品牌的帽子好| 12.28是什么星座| 幺蛾子是什么意思| 我是舅舅的什么人| 颈椎病挂什么科| 天珠是什么| 土地出让是什么意思| 接吻什么感觉| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? STM32 ? 【转载】RTT简介及其简单应用--from毅

共2条 1/1 1 跳转至

【转载】RTT简介及其简单应用--from毅

工程师
2025-08-04 17:56:51     打赏
百度 在春季新品发布会中,新款卡罗拉此次以时尚秀的方式亮相,作为年度款车型,新款卡罗拉及卡罗拉双擎车型延续了现款车型的设计风格,在细节及配置方面有所优化升级,更有三款特别版车型为消费者带来更丰富的选择。

一、 裸机系统和多任务系统

裸机系统通常分为轮询系统和前后台系统。

轮询系统不难理解就是按照顺序从上往下反复来执行,伪代码如下:

int main()

{

Init();

while(1)

{

/*事件1*/

event1();

/*事件2*/

event2();

/*事件3*/

event3();

}

}

AI写代码

c

运行

前后台系统就是在轮询系统的基础上多个一个中断,伪代码为:


int main(void)

{

Init();

while(1)

{

/*事件1*/

event1();

/*事件2*/

event2();

/事件3*/

event3();

}

}


void interrupt(void)

{

dosoemthing();

}


AI写代码

c

运行


多任务系统则是一个个单独的任务之间相互协调,且这些任务都是无限循环且不返回的,伪代码为:


int main(void)

{

Init();

RTOS_Init();

RTOS_Start();

}


void thread1_entry(void *arg)

{

while(1)

{

event1();

}

}


void thread2_entry(void *arg)

{

while(1)

{

event2();

}

}


AI写代码

c

运行

二、RTT操作系统

RTT就是一个多任务抢占式操作系统,和裸机系统相比,RTT的优势在于当工程庞大时,我们可以将其分解成一个个小任务,这些任务都有优先级,操作系统的调度机制来决定任务的运行顺序,不用担心每个模块之间的相互干扰,同时,抢占的机制可以迅速的来处理紧急任务。


三,RTT相关函数


rt_thread_t rt_thread_create(const char *name,

                             void (*entry)(void *parameter),

                             void       *parameter,

                             rt_uint32_t stack_size,

                             rt_uint8_t  priority,

                             rt_uint32_t tick)

AI写代码

c

运行


函数功能:创建一个线程

参数讲解:

const char *name:线程名称

void (*entry)(void *parameter):线程入口

void *parameter:线程参数

rt_uint32_t stack_size:线程栈大小

rt_uint8_t priority:线程优先级

rt_uint32_t tick:时间片

函数返回值:该线程的句柄


rt_err_t rt_thread_startup(rt_thread_t thread)

AI写代码

c

运行

1

函数功能:启动线程

参数讲解:

rt_thread_t thread:线程的句柄


信号量机制:

信号量是一种实现线程间通信的机制,实现线程之间同步或临界资源的互斥访问, 常用于协助一组相互竞争的线程来访问临界资源。在多线程系统中,各线程之间需要同步或互斥实现临界资源的保护。


rt_sem_t rt_sem_create(const char *name, rt_uint32_t value, rt_uint8_t flag);

AI写代码

c

运行

1

函数功能:创建一个信号量

参数讲解:

const char *name:信号量的名字

rt_uint32_t value:持有信号量的个数

rt_uint8_t flag:RT_IPC_FLAG_FIFO(按先后顺序), RT_IPC_FLAG_PRIO(按优先级)。

函数返回值:信号量句柄


rt_err_t rt_sem_release(rt_sem_t sem)

AI写代码

c

运行

1

函数功能:释放一个信号量


rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time)

AI写代码

c

运行

1

函数功能:获取一个信号量

说明:如果欲获取的信号量为0,则调用该函数的线程会被挂起,挂起的时间由第二个参数设置


四、小demo

生产者、消费者模型:生产者不停的生产数据,但是当队列满了,就停止生产,消费者不停消费数据,当队列空了停止消费。

3.png

#include "board.h"

#include "rtthread.h"


rt_thread_t producer_thread = RT_NULL;

rt_thread_t consumer_thread = RT_NULL;


rt_sem_t notfull_sem = RT_NULL;

rt_sem_t notempty_sem = RT_NULL;



#define BUF_SIZE 5

typedef struct

{

uint32_t buf[BUF_SIZE];

uint32_t write_p;

uint32_t read_p;

}data;


data data_t;


void producer_thread_entry(void *arg);

void consumer_thread_entry(void *arg);


int main(void)

{

notfull_sem = rt_sem_create("notfull_sem", 0, RT_IPC_FLAG_FIFO);

notempty_sem = rt_sem_create("notempty_sem", 0, RT_IPC_FLAG_FIFO);

producer_thread = rt_thread_create("producer_thread",

    producer_thread_entry,

RT_NULL,

512,

0,

20);

consumer_thread = rt_thread_create("consumer_thread",

    consumer_thread_entry,

RT_NULL,

512,

1,

20);

rt_thread_startup(producer_thread);

rt_thread_startup(consumer_thread);

}


void producer_thread_entry(void *arg)

{

static uint32_t cnt=0;

while(1)

{

if(data_t.write_p - data_t.read_p < BUF_SIZE - 1)

{

data_t.buf[data_t.write_p % BUF_SIZE] = cnt++;

rt_kprintf("生产一个数据: %d\n",data_t.buf[data_t.write_p % BUF_SIZE]);

data_t.write_p++;

rt_sem_release(notempty_sem);

rt_thread_delay(200);

}

else

{

rt_kprintf("生产缓冲区已满\n");

rt_sem_take(notfull_sem,RT_WAITING_FOREVER);

rt_thread_delay(200);

}

}

}


void consumer_thread_entry(void *arg)

{

while(1)

{

if(data_t.read_p != data_t.write_p)

{

rt_kprintf("消费一个数据: %d\n",data_t.buf[data_t.read_p% BUF_SIZE]);

data_t.read_p++;

rt_sem_release(notfull_sem);

rt_thread_delay(400);

}

else

{

rt_sem_take(notempty_sem,RT_WAITING_FOREVER);

rt_kprintf("消费缓冲区已空\n");

}

}

}

可以看到生产者的生产速度大于消费者,出现了缓冲区已满的现象,生产者则停止生产,等待消费者消费一个数据后继续生产

来源: 整理文章为传播相关技术,网络版权归原作者所有,如有侵权,请联系删除。


院士
2025-08-04 10:35:55     打赏
2楼

谢谢分享,学习了。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
肺部有结节要注意什么 cr5是什么意思 子宫肌瘤长在什么位置 中午一点半是什么时辰 随诊是什么意思
独在异乡为异客异是什么意思 什么什么的田野 射手座和什么星座最配 湿疹吃什么食物好得快 鳄鱼的尾巴有什么作用
戊肝阳性是什么意思 2025年属什么 什么地响 梦到刷牙什么意思 什么人容易得脑梗
2005属什么生肖 排便困难拉不出来是什么原因 宝宝出急疹要注意什么 天地始交是什么意思 心血管病人吃什么最好
上号是什么意思dayuxmw.com 猫癣传染人什么症状hcv7jop9ns9r.cn 为什么玉镯不能戴左手hcv8jop5ns6r.cn 真菌感染有什么症状hcv9jop3ns0r.cn 没有是什么意思hcv9jop2ns6r.cn
嗜血是什么意思hcv9jop0ns9r.cn 四月初四是什么节日hcv9jop0ns4r.cn 口胃读什么hcv8jop9ns7r.cn 为什么会闪电hcv9jop3ns9r.cn 右边肋骨疼是什么原因hcv9jop5ns9r.cn
经常干咳嗽是什么原因travellingsim.com 羊水少了对宝宝有什么影响hcv9jop5ns9r.cn 诶是什么意思hcv8jop4ns0r.cn 李咏什么病hcv9jop0ns6r.cn 得意忘形是什么意思hcv8jop7ns6r.cn
胃酸吃什么能缓解hcv8jop2ns2r.cn cr医学上是什么意思hcv9jop1ns6r.cn 领导谈话自己该说什么hcv8jop6ns4r.cn 吃多种维生素有什么好处和坏处hcv8jop5ns3r.cn 57属什么生肖hcv8jop3ns8r.cn
百度