一笑了之是什么意思| 什么窃什么盗| 东海龙王叫什么| 女生的小鸡鸡长什么样| 藏红花的功效是什么| 消化腺包括什么| 双子座什么性格| 不什么一什么| 内向什么意思| 甘油三酯是什么| 饭铲头是什么蛇| 黑棕色是什么颜色| 夏天什么时候结束| 宝宝嘴巴臭臭的是什么原因| 周六左眼跳是什么预兆| 舒筋健腰丸主治什么| 五月二十三日是什么星座| 来月经前有什么症状| 蒲地蓝消炎片主治什么| 一起共勉是什么意思| 线束厂是做什么的| 为什么低血糖| 为什么头发会变白| 单病种是什么意思| 32周岁属什么生肖| 柳丁是什么水果| 十月十一日是什么星座| 苏格兰牧羊犬吃什么| 冲奶粉用什么水比较好| pr是什么| 男人割了皮包什么样子| 后续是什么意思| 月经推迟7天是什么原因| 黄鼠狼为什么怕鹅| 雪芽是什么| 有什么脑筋急转弯| 做飞机需要注意什么| 磨玻璃结节是什么| 男人趴着睡觉说明什么| 脑垂体挂什么科| 疏肝理气吃什么药| 慢性浅表性胃炎吃什么药好得快| 背靠背是什么意思| 磨人的小妖精是什么意思| 祛痣后应注意什么| 茉莉花茶属于什么茶类| 黄金桂是什么茶| 软肋是什么意思| 喝白茶有什么好处| 乌冬是什么| c02是什么意思| 辛卯五行属什么| 命门火衰是什么意思| 眼睛疼用什么药| gg是什么牌子| 努力的意义是什么| 后脑勺发热是什么原因| 小鱼的尾巴有什么作用| 骨结核吃什么药效果好| ghz是什么意思| 十一月五号是什么星座| b1是什么| 有什么水果| 月经后是什么期| 什么的劝告| 当兵什么兵种最好| 肠炎吃什么药效果最好| 口唇发绀是什么意思| 虐狗什么意思| 轻度肠化是什么意思| 做梦遗精是什么原因| 基础代谢是什么| 什么水果糖分低| 杜康原是什么| 磅礴是什么意思| 马甲线长什么样| 染发膏用什么能洗掉| 仪轨是什么意思| 佞臣什么意思| 五光十色是什么意思| 藏青和藏蓝有什么区别| 地中海贫血是什么原因引起的| 吹面不寒杨柳风什么意思| 山茱萸的功效与作用是什么| 道听途说什么意思| 21三体临界风险是什么意思| 1964年出生属什么| 肺气不足吃什么中成药| 血红蛋白高是什么意思| 瓜子脸适合什么发型| 做梦飞起来了是什么兆头| 天冬与麦冬有什么区别| 丙氨酸氨基转移酶是什么| 王玉是什么字| 四物汤什么时候喝| 男性内分泌失调有什么症状| 着床出血是什么样的| 中暑什么症状表现| 晟是什么字| 为什么会晒黑| 就诊是什么意思| 不宁腿综合症是什么原因引起的| 左心室高电压什么意思| 5月出生是什么星座| 定坤丹适合什么人吃| 舌头肿大是什么原因引起的| 男人梦见鱼是什么征兆| 为什么会得荨麻疹| 脚踝肿是什么病| 吃什么有利于排便| 贞操是什么| 晚上难入睡是什么原因| 6969是什么意思| 坐飞机需要带什么证件| 飞蚊症滴什么眼药水| 浮萍是什么意思| 间隔旁型肺气肿是什么| 嘴唇红肿是什么原因| 吃狗肉有什么危害| 中秋送什么| 物化是什么意思| 体重指数是什么意思| 收尾是什么意思| 伤到什么程度打破伤风| 社会保险费是什么| 试管婴儿是什么| 布鲁斯是什么意思| 宝宝半夜咳嗽是什么原因| 骑马野战指什么生肖| 血压低压低是什么原因| 什么药可以治早迣| 舌苔有裂纹是什么原因| 柏油样便见于什么病| 木耳属于什么类| 呈现是什么意思| 乳头突然疼痛什么原因| 女生被摸胸是什么感觉| 腹腔积液是什么原因| 全职太太是什么意思| 月经来了痛经吃什么药| 笔触是什么意思| 胃病吃什么药最好| 脑供血不足吃什么好| 胆囊炎适合吃什么食物| 什么叫同房| tp是什么| 家宴是什么意思| 精液为什么是苦的| 杀马特是什么| 沦落什么意思| 飞克手表什么档次| 绿茶妹是什么意思| 日加立念什么| 印度的全称是什么| lf是什么意思| 为什么没人敢动景甜| 尿道炎症吃什么药| 胆结石吃什么最好| 什么是中医| ca125是查什么的| 什么是健康| 坐骨神经痛是什么原因引起的| 小野猫是什么意思| 孕妇上火了吃什么降火最快| 男性下焦湿热吃什么药| 坐位体前屈是什么意思| 脑瘤是什么原因引起的| 血糖高一日三餐吃什么东西最适合| 舌头根发麻是什么原因| 浪琴手表属于什么档次| 问加一笔是什么字| 猪巴皮是什么材质| 肠易激综合征吃什么药| 人心叵测什么意思| 什么米不能吃| 埃及人是什么人种| 梦见大鲤鱼是什么征兆| 清静是什么意思| 吃龟苓膏有什么好处| 云裳是什么意思| 骨折吃什么补品| 史无前例是什么意思| 法国铁塔叫什么| 鲁迅是著名的什么家| 山竹什么时候吃是应季| 发难是什么意思| momax是什么牌子| evol是什么意思| 大便水状是什么原因| 婴儿出汗多什么原因| 什么运动使人脸部年轻| 挂号信什么意思| 阴道炎用什么洗液| bunny是什么意思| 日照香炉生紫烟的香炉是什么意思| 格拉苏蒂手表什么档次| 什么是腐女| 什么动物的血是蓝色的| 什么叫骨质增生| 柳絮是什么| 仓鼠可以吃什么蔬菜| 脚干裂用什么药最好| 胆汁反流性胃炎吃什么药| 什么叫放疗治疗| 为什么感冒吃冰棒反而好了| model什么意思| bj什么意思| 金字旁目字读什么| 手足口病是什么病| 皮肤干燥缺什么维生素| 蕊五行属什么| 白色t恤配什么裤子| 气山读什么| 春代表什么生肖| 鸡拉绿色粪便吃什么药| 磨牙齿是什么原因| 咳出血是什么原因| 肺部疼痛是什么原因| lpl是什么| 头发长得快是什么原因| 内心的os是什么意思| 早上八点到九点属于什么时辰| 心烦焦虑吃什么药| 上午8点是什么时辰| 喝苹果醋有什么好处和坏处| 宫商角徵羽是什么意思| 细菌感染吃什么药好| 奶水不足是什么原因造成的| 道场是什么意思| 脂肪肝吃什么水果好| 长期腹泻是什么病| 护士要什么学历| 拔罐颜色深浅代表什么| 佐匹克隆是什么药| 什么样的女人旺夫| 工业氧气和医用氧气有什么区别| 梦见小女孩是什么预兆| 寻麻疹是什么| 免疫力下降吃什么好| 为什么流鼻血| 388是什么意思| 女生心脏在什么位置| 搞破鞋什么意思| 口头禅是什么意思| 脖子大是什么原因| 为什么前壁容易生男孩| 黑曜石五行属什么| 夸父是一个什么样的人| 桑榆未晚是什么意思| 01什么意思| 女性什么时候最容易怀孕| 四眼狗有什么迷信说法| 手脚发胀是什么前兆| 考教师资格证需要什么条件| 皮肤长癣是什么原因| 优雅是什么意思| 面诊是什么意思| sheet是什么意思| 遗精是什么症状| 肝实质回声细密是什么意思| 氮泵有什么作用| jp是什么意思| 肠胃炎吃什么消炎药| 什么是营养| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? STM32 ? 【转载】RTT简介及其简单应用--from毅

共1条 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");

}

}

}

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

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


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
什么叫通分 舌头发涩是什么原因造成的 健脾祛湿吃什么中成药 什么是人格分裂 集成灶什么品牌最好
灵芝长在什么地方 甘心的近义词是什么 痛风吃什么最好 脚水肿是什么原因 腰眼疼是什么原因引起的
双手麻木是什么原因 痰多是什么原因引起的 脑瘤到什么程度才会死 冠状动脉肌桥是什么病 尼泊尔属于什么国家
浑身乏力吃什么药 二氧化硅是什么 浅表性胃炎吃什么中成药最好 hct是什么意思 脸上长痘挂什么科
炖牛肉放什么调料creativexi.com 靓仔是什么意思hcv8jop4ns7r.cn 老上火是什么原因造成的hcv7jop9ns0r.cn 什么人容易得胆汁淤积hcv8jop7ns5r.cn 98年的属什么hcv8jop8ns8r.cn
前列腺液是什么样子hcv7jop6ns4r.cn 内分泌失调吃什么hcv8jop7ns9r.cn 溶血性黄疸是什么原因引起的hcv9jop7ns5r.cn 6月6号是什么日子hcv9jop3ns6r.cn 衣食父母什么意思hcv7jop5ns0r.cn
今年清明节有什么讲究hcv7jop7ns4r.cn 木芙蓉什么时候开花hcv9jop2ns2r.cn 风疹病毒抗体阳性是什么意思hcv9jop5ns6r.cn 男朋友昵称叫什么好听hcv7jop9ns0r.cn 奥利给什么意思hcv8jop9ns8r.cn
缺黄体酮会有什么症状hcv8jop0ns5r.cn 骨量是什么意思hcv7jop5ns6r.cn 特别提款权是什么意思hcv8jop0ns3r.cn dha有什么作用hcv8jop0ns5r.cn 彼岸花是什么花qingzhougame.com
百度