RT-Thread专题栏
snaygo
万事胜意,往事清零。
展开
-
RT-Thread物联网操作系统介绍:0、静态线程&&动态线程的区别
使用环境:STM32F103C8T6单片机串口1进行数据打印波特率115200;LED灯IO: PA6、PA7、PB0静态线程&&动态线程的区别区别:①动态线程不需要输入栈的起始地址,不需要定义线程的控制块,只要指出线程栈的大小。②静态线程的线程控制块和线程栈都需要静态地定义出来,而动态线程则不需要提前定义出来,是运行的时候自动分配的。运行效率上,静态线程的线程控制块和线程栈都在芯片的RAM中,速度没有区别,但是系统在外部RAM中的时候,创建的外部动态线程的线程栈和线程控制原创 2022-04-11 21:33:20 · 2815 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:15、静态内存池使用
程序运行,创建一个内存池,一个申请内存任务,一个释放内存任务,usb串口CN3打印内存分配和释放的信息,串口波特率115200工程参考例程在:RT-Thread物联网操作系统介绍//创建内存池 Sample_mp = rt_mp_create("Sample_mp", 20, /* 内存块数量 */ 30); /* 内存块大小 *原创 2022-04-12 10:05:33 · 365 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:16、动态内存使用
程序运行,一个申请内存任务,一个释放内存任务,usb串口CN3打印内存分配和释放的信息,串口波特率115200工程参考例程在:RT-Thread物联网操作系统介绍//定义内存块大小#define Block_SIZE 200/* 定义申请内存的指针 */static rt_uint32_t *p_Sample = RT_NULL;static rt_thread_t TASK1_Thread = RT_NULL;```c rt_kprintf("正在向内存堆申请内存........原创 2022-04-12 10:04:58 · 278 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:14、软件定时器
一个定时器显示函数执行的时间另外一个定时器显示计数值工程参考例程在:RT-Thread物联网操作系统介绍/* 定义线软件定时器制块 */static rt_timer_t S_Timer1 = RT_NULL;static rt_timer_t S_Timer2 = RT_NULL;static uint32_t xTimers1 = 0;static uint32_t xTimers2 = 0;//定时器1回调函数tatic void S_Timer1_callback(void原创 2022-04-12 10:05:46 · 290 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:13、消息邮箱
程序运行,创建一个消息邮箱,一个按键发送消息任务TASK1,一个消息接收任务TASK2,usb串口打印消息邮箱的发送和接收信息,串口波特率115200工程参考例程在:RT-Thread物联网操作系统介绍static rt_mailbox_t Sample_mail = RT_NULL; //消息队列控制块char Sample_Msg1[] = "this is a mail Msg 1"; /* 邮箱消息Msg1 */char Sample_Msg2[] = "this is a mai原创 2022-04-11 21:57:49 · 875 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:12、事件标志组
程序运行,创建一个事件标志组,一个按键发送事件任务,一个接收事件任务,按键每按下KEY1或KEY2,发送一个事件,接收任务全部接收到KEY1和KEY2发送的事件才会唤醒,事件发送、接收都会通过USB串口打印信息,串口波特率115200#define BIT_0 (0x01 << 0)//设置事件掩码的位0#define BIT_1 (0x01 << 1)//设置事件掩码的位1/* 创建一个事件 */ Sample_event = rt_event_create("Sa原创 2022-04-11 21:56:10 · 397 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:11.2、互斥信号量 (优先级正常)
只能有一个信号量线程在执行程序运行,创建一个LED任务(中优先级),2个任务TASK1(低优先级)和TASK2(高优先级),LED任务每隔1S翻转D3彩灯的红色指示, 通过usb串口输出观察任务运行情况,看看在高优先级任务阻塞的情况下,中优先级任务会不会优先运行(发生优先级翻转),利用互斥信号量,发现是不会发生翻转的,串口波特率115200高优先级任务在阻塞时,中优先级任务不会有限运行,优先级不会发生翻转;工程参考例程在:RT-Thread物联网操作系统介绍 /* 创建一个互斥量 */原创 2022-04-11 21:54:11 · 252 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:11.1、多值信号量(优先级翻转)
程序运行,创建一个LED任务(中优先级),2个任务TASK1(低优先级)和TASK2(高优先级),LED任务每隔1S翻转D3彩灯的红色指示, 通过usb串口输出观察任务运行情况,看看在高优先级任务阻塞的情况下,中优先级任务会不会优先运行(发生优先级翻转),多值信号量,发现是会发生翻转的,串口波特率115200主要问题:高优先级任务在阻塞下,中优先级任务会运行,发生优先级的翻转工程参考例程在:RT-Thread物联网操作系统介绍/* 创建一个信号量 */ Sample_sem = rt_sem_原创 2022-04-11 21:52:29 · 822 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:10、计数信号量
工程参考例程在:RT-Thread物联网操作系统介绍 rt_sem_take(Sample_sem, /* 获取信号量 */ RT_WAITING_FOREVER); /* 等待时间:一直等 *///发布信号量之后会立即使用, /* 创建一个信号量 */ Sample_sem = rt_sem_create("Sample_sem",/* 信号量名字 */ 10,/原创 2022-04-11 21:48:21 · 981 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:9、二值信号量
工程参考例程在:RT-Thread物联网操作系统介绍 /* 获取信号量 */ rt_sem_take(Sample_sem, RT_WAITING_FOREVER); /* 等待时间:一直等 */ /* 释放信号量 */ rt_sem_release(Sample_sem);#include "MyIncludes.h"static rt_sem_t Sample_sem = RT_NULL; /* 信号量控制块原创 2022-04-11 21:46:18 · 783 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:8、消息队列
工程参考例程在:RT-Thread物联网操作系统介绍 /* 创建一个消息队列 */ Sample_mq = rt_mq_create("Sample_mq", /* 消息队列名字 */ 4, /* 消息的最大长度 */ 20, /* 消息队列的最大容量 */ RT_IPC_FLAG_FIFO); /* 队列模原创 2022-04-11 21:44:20 · 347 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:6、线程挂起和恢复
//恢复线程函数rt_thread_resume(LED_Thread);//挂起任务函数uwRet = rt_thread_suspend(LED_Thread);工程代码百度网盘链接网址在:RT-Thread物联网操作系统介绍#include "MyIncludes.h"static rt_thread_t LED_Thread = RT_NULL;/********************************************************************原创 2022-04-11 21:39:57 · 1236 阅读 · 0 评论 -
RT-Thread物联网操作系统介绍:5、串口打印
rt_kprintf("beep_thread running,toggle\r\n");工程参考例程在:RT-Thread物联网操作系统介绍#include "MyIncludes.h"/* 定义线程控制块 */static struct rt_thread LED_Thread;static struct rt_thread BEEP_Thread;/* 定义线程控栈时要求RT_ALIGN_SIZE个字节对齐 */ALIGN(RT_ALIGN_SIZE)/* 定义线程栈 .原创 2022-04-11 21:36:49 · 2035 阅读 · 0 评论