g6pd是什么| 男命七杀代表什么| 未时是什么时候| 女性乳房痒是什么原因| 篇幅是什么意思| 梦见麒麟是什么兆头| 物流是什么| 吃什么补肾最快最好| 壁虎长什么样| 情定三生大结局是什么| 什么家庭养出自私冷漠| blush是什么颜色| 话费为什么扣那么快| 什么是新时代| 黄花苗泡水喝有什么作用| pu皮是什么材质| 为什么打雷闪电| 处暑是什么意思| 甲抗是什么原因引起的| 输卵管造影什么时候检查最好| 湿疹什么症状| 富贵竹开花什么预兆| 牛跟什么相冲| 请教意思是什么| 血气是什么意思| 消症是什么意思| 两个大于号是什么车| 小儿电解质补给液有什么作用| 产后为什么脸部松弛| 排卵日是什么意思| 立秋日有什么禁忌| 胃不好吃什么好| 柱镜度数是什么意思| 经常拉肚子什么原因| camellia是什么意思| 月经老是推后是什么原因| 肥波是什么品种的猫| 眷属是什么意思| 9.15是什么星座| 忽然流鼻血是什么原因引起的| mect是什么意思| 新生儿贫血是什么原因造成的| 点状钙化是什么意思| 正山小种属于什么茶| 外阴苔癣是一种什么病| 正月十二是什么星座| mm代表什么单位| 盆腔炎用什么药最好| 柠檬水苦是什么原因| crp是什么意思| 雷替斯是什么药| 什么挑担子忠心耿耿| 胆红素高是什么意思| 小肚子疼吃什么药| 用酒擦身体有什么好处| 砂仁为什么要后下| 什么窃什么盗| 为什么姓张的不用说免贵| 胸痛应该挂什么科| 常流鼻血是什么原因| 洗银首饰用什么清洗| 两个人一个且念什么| 什么程度算精神出轨| 性生活后尿路感染是什么原因| 大意失荆州是什么意思| 思字属于五行属什么| 什么蛇不咬人| 做梦梦见屎是什么意思| 肚子容易胀气是什么原因| 什么运动瘦肚子| 生气吃什么药可以顺气| 脚趾头麻木是什么原因引起的| 69属什么| 血小板太高会导致什么| 女人抖腿代表什么意思| 虎头什么尾| 转化是什么意思| 重阳节送老人什么礼物| 皮肤出现红点是什么原因| 小儿疳积是什么意思| 吊膀子是什么意思| 小孩晚上睡觉流口水是什么原因| 荷花什么季节开放| 同床出血什么原因呢| 梦见穿新裤子是什么意思| 意会是什么意思| 叹服是什么意思| 招魂是什么意思| 眼睑痉挛是什么原因造成的| 脱肛是什么样子的| 男生小便尿道刺痛什么原因| 书五行属什么| 五脏六腑什么意思| 农历七月初五是什么星座| 吃了头孢不能吃什么| 做梦梦到钓鱼是什么意思| 石女是什么意思啊| 愚昧什么意思| 咖啡为什么提神| 网监是干什么的| 喝苹果醋有什么好处和坏处| 舌苔发青是什么原因| 骨质疏松打什么针| 什么是脱肛| 享福是什么意思| 浑身没劲挂什么科| 感冒发烧吃点什么食物比较好| 焗油和染发有什么区别| 三斤八两什么意思| polo是什么意思| 什么一惊| 什么的窗户| 什么是神经| 正比和反比是什么意思| 尿检是检查什么的| 什么是佝偻病有什么症状| 尿检3个加号什么意思| 梦到谈恋爱预示着什么| 麻风疫苗什么时候打| 上午十点是什么时辰| 糖化血糖是什么意思| 左下腹疼痛挂什么科| 圆脸适合什么短发| 尿蛋白三个加号吃什么药| 做完雾化为什么要漱口| 毒龙是什么| 鼻窦炎用什么药效果最好| 什么头什么臂| 平胸是什么原因导致的怎样解决| 颠覆三观是什么意思| 9月10号什么星座| 什么是违反禁令标志指示| 房早是什么意思| 七月份有什么水果| 01年属什么的| 花中西施指的是什么花| 尿性什么意思| 什么床最环保没甲醛| 掉头发是什么原因| 腰间盘膨出是什么意思| 什么水果治便秘| 维c有什么功效和作用| 表示什么意思| 笨和蠢有什么区别| 假菌丝是什么意思| 词牌名是什么意思| 味粉是什么调料| 眼睛肿了用什么药| 蓟什么意思| 中戏是什么学校| 51年属什么生肖| 吃什么提高免疫力和增强体质| 瑜伽是什么| 人外是什么意思| 舅舅的老婆叫什么| 为什么今年有两个六月| 女孩子喜欢什么礼物| 圣旨是什么意思| 叶酸片治什么病| 什么炒蛋好吃| 医院面试一般会问什么| 摩羯后面是什么星座| 豫字五行属什么| 晕血是什么症状| 怀孕吃什么宝宝会白| 腰底部疼痛跟什么病有关| 阴桃花是什么意思| 散光轴位是什么| 十九畏是什么意思| 晚上六点半是什么时辰| 很困但是睡不着是什么原因| 肾衰竭有什么症状| 宫外孕做什么手术| 什么是脂肪瘤| 突然头晕想吐是什么原因| 暗财是什么意思| 凝血四项是检查什么的| 贪吃的动物是什么生肖| 腰间盘突出吃什么药好| 刚怀孕有什么特征| 钙片什么牌子好| 5月31日什么星座| 手刃是什么意思| 什么运动瘦脸| 小仙女是什么意思| 开心果树长什么样| 脸上过敏用什么药膏| 与虎谋皮是什么生肖| 姿态万千的意思是什么| 玄女是什么意思| 反流性食管炎是什么症状| 自主神经功能紊乱吃什么药| 一个虫一个夫念什么| 同型半胱氨酸查什么| 鸡飞狗跳是什么意思| 火供是什么意思| 晨尿泡沫多是什么原因| 什么布剪不断| 弟妹是什么意思| 为什么说金克木生财| 染色体异常是什么意思| 四六风是什么病| 三八妇女节送老婆什么礼物好| 勿忘我是什么意思| 身体动不动就出汗是什么原因| fierce是什么意思| 白牌黑字是什么车牌| 女性喝什么茶比较好| 石榴花什么时候开| 什么火热| 老是睡不着觉是什么原因| 吃什么孕酮值可以增高| 性激素六项什么时候查| 叉烧肉是什么肉| 二甲双胍缓释片什么时候吃最好| 犹太人是什么人种| 水是由什么组成的| 火把节在每年农历的什么时间举行| 乳腺结节低回声是什么意思| 吃什么食物养肝| 巴宝莉是什么牌子| 怀孕做nt检查什么| 口舌麻木吃什么药| 马克笔是什么笔| 飞机杯是什么东西| 属牛男最在乎女人什么| 澄面是什么面粉| 大便羊粪状吃什么药| 爱困总想睡觉什么原因| 头发少剪什么发型好看| 备孕需要做什么检查| 纸是用什么材料做的| 女性后背疼挂什么科室| 女人左下眼皮跳是什么预兆| 6月7日什么星座| 30如狼40如虎是什么意思| 姨妈安全期是什么时候| 副乳是什么| 玖姿女装属于什么档次| 海淘是什么意思啊| 双肺上叶肺大泡是什么意思| 云南白药里的保险子有什么作用| 肝不好吃什么中成药| 梦见怀孕流产是什么意思| 为什么手老是出汗| 瑶浴spa是什么意思| 宫颈糜烂是什么| ins是什么软件| 三聚净戒是指什么戒| 果是什么结构的字| 减脂期吃什么| rf医学上是什么意思| 娇滴滴是什么意思| 脚气吃什么药| 心脏缺血吃什么补的快| 桑叶泡水喝有什么好处| 口腔上颚疼是什么原因| 重度肠上皮化生是什么意思| 坚壁清野什么意思| 腱鞘囊肿是什么原因引起的| 金色搭配什么颜色好看| 梦见自己生小孩是什么征兆| 什么不息| 脾虚湿气重喝什么茶| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? 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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
心脏病是什么原因引起的 魔改是什么意思 鸟是什么生肖 兰台是什么意思 小狗什么时候可以洗澡
invent是什么意思 血压低吃什么东西好 头大是什么原因造成的 女士喝什么茶叶对身体好 02年属什么生肖
退行性改变是什么意思 胎毒是什么样子的图片 趴在桌子上睡觉有什么坏处 宠辱不惊是什么意思 东厂是什么意思
人为什么要呼吸 1946年属什么 泌尿系彩超主要是检查什么 什么食物含叶黄素最多 手指肚发红是什么原因
五爷是什么菩萨hcv7jop5ns2r.cn 宝宝感冒流鼻涕吃什么药hcv7jop6ns0r.cn 肚子胀气吃什么好hcv9jop5ns2r.cn 肾动脉狭窄有什么症状hcv7jop5ns0r.cn 凉皮是用什么做的jasonfriends.com
催乳素高是什么原因hcv7jop6ns8r.cn 脑梗是什么原因引起的hcv7jop9ns5r.cn 眉毛上长痘是什么原因jinxinzhichuang.com 增大摩擦力的方法有什么hcv8jop6ns6r.cn 58年属狗是什么命hcv9jop4ns4r.cn
巨蟹是什么象星座hebeidezhi.com 宫颈活检cin1级是什么意思hcv9jop1ns9r.cn 荷花的寓意是什么hcv8jop4ns8r.cn 沸去掉三点水念什么hcv9jop1ns1r.cn us是什么单位tiangongnft.com
法国铁塔叫什么hcv9jop6ns8r.cn 为什么老是fenrenren.com 百岁老人叫什么hcv8jop5ns5r.cn 红楼梦是一部什么小说hcv9jop4ns8r.cn 血糖高有什么影响hcv9jop6ns2r.cn
百度