
RT_Thread
噗噗bug
You are no different to the rest of us, remember that.
展开
-
AWTK之时间设置(嵌入式平台)篇
前言:在嵌入式平台需要提供并设置获取当前日期和时间的函数,否则相关的功能(如时钟控件)将无法正常工作。一、date_time_global_init_ex(&s_date_time_vtable);static ret_t date_time_get_now_impl(date_time_t* dt) { st_rtc_time_t rtcTime; st_rtc_time_t localTime; static rt_device_t device; d原创 2021-05-18 15:59:32 · 868 阅读 · 1 评论 -
RT_Thread应用16—邮箱2
第二十二章 邮箱(第二部分)五、邮箱控制块1 struct rt_mailbox { 2 struct rt_ipc_object parent; (1) **:邮箱属于内核对象,也会在自身结构体里面包含一个内核对象类型的成员,通过这个成员可以将邮箱挂到系统对象容器里面。 ** 3 4 rt_uint32_t *msg...原创 2019-12-25 11:12:12 · 1835 阅读 · 0 评论 -
RT_Thread应用15—邮箱1
第二十三章 邮箱(第一部分)一、基本概念邮箱可以在线程与线程之间。中断与线程之间进行消息的传递。优点:开销更低,效率更高。邮箱中的每一封邮件只能容纳固定的 4 字节内容。(STM32 是 32 位处理系统,一个指针的大小即为 4个字节,所以一封邮件恰好能够容纳一个指针)当需要在线程间传递比较大的消息时,可以把指向一个缓冲区的指针作为邮件发送到邮箱中。线程能够从邮箱里面读取邮件消息,当...原创 2019-12-25 09:25:07 · 727 阅读 · 0 评论 -
RT_Thread应用14—软件定时器2
第二十二章 软件定时器2五、定时器超时函数定时器最主要目的:是在经过指定的定时时间后,系统能自动执行用户设定的动作————超时函数。该函数在创建定时器的时候需要用户自己定义,并且编写对应的执行代码。定时器超时函数存在着两种情况:超时函数在(系统时钟)中断上下文环境中执行(硬件定时器)超时函数在线程的上下文环境中执行(软件定时器)。硬件定时器超时在 systick 的 isr 中的...原创 2019-12-24 15:45:12 · 455 阅读 · 0 评论 -
RT_Thread应用13—软件定时器1
第二十二 软件定时器(第一部分)一、概念定时器,是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可以自定义定时器的周期与频率。如:闹钟超时函数需要注意:需要快进快出不能有任何阻塞线程运行的情况,如 rt_thread_delay()以及其它能阻塞线程运行的函数两次触发超时函数的时间间隔 Tick 叫定时器的定时周期。RT-Thread 软件定时器功能上支持...原创 2019-12-24 12:02:38 · 496 阅读 · 0 评论 -
RT_Thread应用12—事件2
第二十一章 事件(第二部分)五、事件函数1、事件控制块块包含了一个 32 位的 set 变量,其变量的各个位表示一个事件,每一位代表一个事件的发生,利用逻辑或、逻辑与等实现不同事件的不同唤醒处理1 struct rt_event { 2 struct rt_ipc_object parent; 3 4 rt_uint32_t s...原创 2019-12-23 17:16:44 · 362 阅读 · 0 评论 -
RT_Thread应用11—事件1
第二十一 事件(第一部分)一、基本概念事件是一种实现线程间通信的机制,主要用于实现线程间的同步,但事件通信只能是事件类型的通信,无数据传输。其可以实现一对多,多对多的同步事件集合用 32 位无符号整型变量来表示,每一位代表一个事件,线程通过“逻辑与”或“逻辑或”与一个或多个事件建立关联,形成一个事件集。线程可以通过创建事件来实现事件的触发和等待操作。RT-Thread 的事件仅用于同...原创 2019-12-23 16:30:09 · 310 阅读 · 0 评论 -
RT_Thread应用10—互斥量2
第二十章 互斥量2五、互斥量函数1、互斥量控制块每一个互斥量都有自己的互斥量控制块,互斥量控制块中包含了互斥量的所有信息,1 struct rt_mutex { 2 struct rt_ipc_object parent; (1) **可以将互斥量挂到系统对象容器里面** 3 4 rt_uint16_t value; (2)...原创 2019-12-23 14:06:17 · 308 阅读 · 0 评论 -
RT_Thread应用9—互斥量1
第二十章 互斥量(第一部分)一、互斥量基本概念互斥量作用:保护资源的互锁过程:用于互锁的互斥量可以充当保护资源的令牌。当一个线程希望访问某个资源时,它必须先获取令牌。当线程使用完资源后,必须还回令牌,以便其它线程可以访问该资源。在之前的信号量提到关于线程优先级翻转的问题,互斥量可以通过优先级继承算法,降低优先级翻转问题产生的影响用于临界资源的保护一般使用互斥量二、优先级继承机制目的...原创 2019-12-23 10:46:03 · 341 阅读 · 0 评论 -
RT_Thread应用8—信号量2
第十九章 信号量(第二部分)一、信号量控制块每一个信号量都有自己的信号量控制块,信号量控制块中包含了信号量的所有信息,1 struct rt_semaphore { 2 struct rt_ipc_object parent; /**< 继承自 ipc_object 类*/ 3 4 rt_uint16_t value; /**<...原创 2019-12-21 16:04:24 · 972 阅读 · 0 评论 -
RT_Thread应用7—信号量1
第十九章 信号量(第一部分)原创 2019-12-21 11:09:30 · 329 阅读 · 0 评论 -
RT_Thread应用6—消息队列2
第十八章 消息队列(第二部分)六、常用消息队列的函数1、创建消息队列在创建消息队列的时候,是需要用户自己定义消息队列的句柄的,但是定义了队列的句柄并不等于创建了队列,创建队列必须是调用rt_mq_create()函数进行创建如果创建成功则返回消息队列句柄,如果是返回实例RT_NULL,则表示失败1 /* 创建一个消息队列 */ 2 test_mq = rt_mq_creat...原创 2019-11-23 15:14:04 · 521 阅读 · 0 评论 -
RT_Thread应用5—消息队列1
第十八章 消息队列一、消息队列概念——用于线程间通信的数据结构队列可以在线程与线程间、中断和线程间传送信息,实现了线程接收来自其他线程或中断的不固定长度的消息,并根据不同的接口选择传递消息是否存放在线程自己的空间。当队列中的消息是空时,挂起读取线程,用户还可以指定挂起的线程时间 timeout;当队列中有新消息时,挂起的读取线程被唤醒并处理新消息,消息队列是一种异步的通信方式。...原创 2019-11-23 10:33:12 · 443 阅读 · 0 评论 -
RT_Thread应用4—线程管理
第十七章 线程管理前言RT-Thread 线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程,RT-Thread的线程调度器是抢占式的,主要的工作就是从就绪线程列表中查找最高优先级线程,保证最高优先级的线程能够被运行,最高优先级的任务一旦就绪,总能得到CPU 的使用权。当一个运行着的线程使一个比它优先级高的线程满足运行条件,当前线程的 C...原创 2019-11-22 14:36:32 · 328 阅读 · 0 评论 -
RT_Thread应用3— RT-Thread 的启动流程
第十六章 RT-Thread 的启动流程在RTOS 中,主要有两种比较流行的启动方式:一、万事俱备,只欠东风1 int main (void) 2 { 3 /* 硬件初始化 */ 4 HardWare_Init(); (1) 5 6 /* RTOS 系统初始化 */...原创 2019-11-22 08:38:53 · 653 阅读 · 0 评论 -
RT_Thread应用2
第十五章 重映射串口到 rt_kprintf 函数一、rt_kprintf 函数1 /** 2 * @brief 这个函数用于向控制台打印特定格式的字符串 3 * 4 * @param fmt 指定的格式 5 */ 6 void rt_kprintf(const char *fmt, ...) 7 { 8 va_list args; 9 ...原创 2019-11-21 11:25:27 · 279 阅读 · 0 评论 -
RT_Thread应用1
第十三章 移植 RT-Thread 到 STM32一、RT_Thread文件夹内容二、小流程三、创建单线程(静态的)流程创建单线程—SRAM 静态内存,线程控制块和线程栈的内存空间都是从内部的 SRAM 里面分配的,具体分配到哪个地址由编译器决定。四、创建单线程(动态的)流程创建一个单线程(动态的),线程使用的栈和线程控制块是在创建线程的时候 RT-Thread 动态分配的,...原创 2019-11-21 10:14:12 · 328 阅读 · 0 评论 -
RT_Thread随笔16-小总结
RT_Thread第一部分总结经过一个多星期的努力,将[野火®]《RT-Thread 内核实现与应用开发实战—基于STM32》的第一部分大致看了一遍,并将仿真也自己执行一遍。下面进行第一部分小总结。对于多线程系统的学习,需要一步一步的学习,而不能一口气吃成一个大胖子。要对基本概念要掌握,比如:线程概念,线程怎么创建,线程怎么切换等等...原创 2019-11-19 21:14:44 · 226 阅读 · 1 评论