RT-Thread
HBX_1024
不归路
展开
-
error: #147: declaration is incompatible with ……
E:\Keil 5\Keil5\ARM\rtthread nano\3.0.3\src\idle.c(66): error: #147: declaration is incompatible with "rt_err_t rt_thread_idle_sethook(void (*)(void))" (declared at line 176 of "rt-thread\include\rt...原创 2019-05-23 11:08:14 · 20188 阅读 · 2 评论 -
Error: L6200E: Symbol *** *** defined (by context_rvds.o and stm32f10x_it.o).
RT-Thread 会用到了异常处理函数 HardFault_Handler() 和悬挂处理函数 PendSV_Handler(),以及 Systick 中断服务函数 SysTick_Handler()。所以用户代码需要保证这几个函数没有被使用,若编译提示函数重复定义,删除自己定义的函数即可。...原创 2019-05-21 18:36:43 · 2798 阅读 · 0 评论 -
Notes on learning RT-Thread——Env
打开Env,输入SCONS --target=mdk5,(mdk5要小写)生成MDK5的工程输入SCONS可对工程进行编译输入help可显示Env的一些指令操作:> helpFor more information on a specific command, type HELP command-nameASSOC Displays or modifies fil...原创 2019-04-30 10:06:02 · 322 阅读 · 0 评论 -
ARMCC编译环境下的 $ Sub $ $ 和 $ Super $ $
用$sub$$ 和$super$$函数标识符编写代码,可实现在进入主应用程序之前对系统功能的初始化。 ARM® Compiler v5.06 for µVision® armlink User Guide 这是具有特殊模式的函数:用于有一个已经存在且不能被改变的函数的情况下(比如不能更改的库函数和ROM代码中)。使用这两个模式可以帮原函数打补丁进行对程序的修补。例如存在一个函数foo();...原创 2019-04-24 16:06:16 · 826 阅读 · 0 评论 -
Notes on learning RT-Thread——线程应用示例
创建线程/* * 程序清单:创建/删除、初始化线程 * * 这个例子会创建两个线程,一个动态线程,一个静态线程。 * 一个线程在运行完毕后自动被系统删除,另一个线程一直打印计数。 */#include <rtthread.h>#define THREAD_PRIORITY 25#define THREAD_STACK_SIZE 512...原创 2019-04-23 17:43:51 · 324 阅读 · 2 评论 -
Notes on learning RT-Thread——线程的管理方式
文章目录创建和删除线程初始化和脱离线程启动线程获得当前线程使线程让出处理器资源使线程睡眠挂起和恢复线程控制线程设置和删除空闲钩子设置调度器钩子创建和删除线程一个线程要成为可执行的对象,就必须由操作系统的内核来为它创建一个线程。可以通过如下的接口创建一个动态线程:rt_thread_t rt_thread_create(const char* name, ...原创 2019-04-23 00:15:06 · 205 阅读 · 0 评论 -
新建 RT-Thread工程—软件仿真
目的:新建一个具有软件仿真的RT-Thread工程建立工程文件夹建立工程文件夹用来存放工程文件。在此文件下按下图进行其他文件夹的创建。使用keil新建工程使用KEIL5建立工程,我的是5.25版本打开KEIL5,新建一个工程,将工程放在工程文件夹目录project下,文件夹命名为“HBX_RT_Thread”,工程名字必须为英文!下一步选择项目驱动,选择ARMCM3处理器(...原创 2019-04-09 16:53:52 · 1911 阅读 · 2 评论 -
Notes on learning RT-Thread——线程的工作机制
目录线程控制块线程的重要属性线程的状态转换系统线程原创 2019-04-11 18:44:14 · 263 阅读 · 0 评论 -
Notes on learning RT-Thread——系统线程
系统线程系统线程是指由系统创建的线程,用户线程是由用户程序调用线程管理接口创建的线程,在 RT-Thread 内核中的系统线程有空闲线程和主线程。空闲线程空闲线程是系统创建的最低优先级的线程,线程状态永远为就绪态。当系统中无其他就绪线程存在时,调度器将调度到空闲线程,它通常是一个死循环,且永远不能被挂起。另外,空闲线程在 RT-Thread 也有着它的特殊用途:若某线程运行完毕,系统将自动...转载 2019-04-11 18:38:42 · 293 阅读 · 0 评论 -
Notes on learning RT-Thread——线程的重要属性
文章目录线程栈线程状态线程优先级时间片线程的入口函数线程错误码线程栈RT-Thread 线程具有独立的栈,当进行线程切换时,会将当前线程的上下文存在栈中,当线程要恢复运行时,再从栈中读取上下文信息,进行恢复。线程栈还用来存放函数中的局部变量:函数中的局部变量从线程栈空间中申请;函数中局部变量初始时从寄存器中分配(ARM 架构),当这个函数再调用另一个函数时,这些局部变量将放入栈中。对于线程...原创 2019-04-11 18:36:43 · 278 阅读 · 0 评论 -
Notes on learning RT-Thread——线程状态及状态转换
线程的状态线程运行的过程中,同一时间内只允许一个线程在处理器中运行。在 RT-Thread 中,线程包含五种状态,操作系统会自动根据它运行的情况来动态调整它的状态。RT-Thread 中线程的五种状态初始状态当线程刚开始创建还没开始运行时就处于初始状态;在初始状态下,线程不参与调度。此状态在 RT-Thread 中的宏定义为 RT_THREAD_INIT就绪状态在...原创 2019-04-11 18:21:52 · 1096 阅读 · 0 评论 -
Notes on learning RT-Thread——线程控制块
在 RT-Thread 中,线程控制块由结构体 struct rt_thread 表示,线程控制块是操作系统用于管理线程的一个数据结构,它存放线程的一些信息,如下面的程序/* 线程控制块 */struct rt_thread{ /* rt 对象 */ char name[RT_NAME_MAX]; /* 线程名称 */ rt_uint8_t t...原创 2019-04-11 17:42:06 · 1250 阅读 · 1 评论 -
Notes on learning RT-Thread——线程管理的功能和特点
功能RT-Thread 线程管理的主要功能是对线程进行管理和调度。系统中总共存在两类线程,一类是系统线程,一类是用户线程。系统线程是由 RT-Thread 内核创建的线程。用户线程是由应用程序创建的线程。这两类线程都会从内核对象容器中分配线程对象,当线程被删除时,也会被从对象容器中删除。每个线程都有重要的属性,如线程控制块、线程栈、入口函数和线程状态 线程优先级,时间片,线程入口函数等。...原创 2019-04-11 17:32:59 · 170 阅读 · 0 评论 -
Error: L6218E: Undefined symbol $Super$$main (referred from components.o
在移植RT-Thread工程文件,编写程序后编译会出现这个错误 Error: L6218E: Undefined symbol $Super$$main (referred from components.o).错误原因是在components.c的$ Super $ $ main没有定义类型。出错的地方如下#if defined (__CC_ARM) $Super$$main...原创 2019-06-19 18:05:43 · 2149 阅读 · 3 评论