精华内容
下载资源
问答
  • rtthread

    2020-10-20 11:55:15
    rt_inline void rt_list_init(rt_list_t *l) { l->next = l->prev = l; } 插入 rt_inline void rt_list_insert_after(rt_list_t *l, rt_list_t *n) { l->next->prev = n; n->next = l->next; ...

    链表

    初始化双向链表

    rt_inline void rt_list_init(rt_list_t *l)
    {
        l->next = l->prev = l;
    }
    

    插入

    rt_inline void rt_list_insert_after(rt_list_t *l, rt_list_t *n)
    {
        l->next->prev = n;
        n->next = l->next;
    
        l->next = n;
        n->prev = l;
    }
    

    在这里插入图片描述
    NODE1后面插入节点n,可以理解为:NODE3的前一个结点为n,n的后一个节点为NODE3,NODE3l->next

    删除

    rt_inline void rt_list_remove(rt_list_t *n)
    {
        n->next->prev = n->prev;
        n->prev->next = n->next;
    
        n->next = n->prev = n;
    }
    

    在这里插入图片描述

    就绪列表

    就是一个rt_list_t类型的数组。

    /* 线程就绪列表 */
    rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX];
    

    每个线程控制块都有一个成员tlist,类型为rt_list_t.我们将线程插入到就绪列表里面,就是通过将线程控制块的 tlist 这个节点插入到就绪列表中来实现的。

    /* 初始化线程 */
    rt_thread_init( &rt_flag1_thread,                 /* 线程控制块 */
                    flag1_thread_entry,               /* 线程入口地址 */
                    RT_NULL,                          /* 线程形参 */
                    &rt_flag1_thread_stack[0],        /* 线程栈起始地址 */
                    sizeof(rt_flag1_thread_stack) );  /* 线程栈大小,单位为字节 */
    /* 将线程插入到就绪列表 */
    rt_list_insert_before( &(rt_thread_priority_table[0]),&(rt_flag1_thread.tlist) );
    

    系统调度初始化

    /**
     * @ingroup SystemInit
     * This function will initialize the system scheduler
     */
    void rt_system_scheduler_init(void)
    {
        register rt_base_t offset;
    	/* 线程就绪列表初始化 */
        for (offset = 0; offset < RT_THREAD_PRIORITY_MAX; offset ++)
        {
            rt_list_init(&rt_thread_priority_table[offset]);
        }
    	/* 初始化当前线程控制块指针 */
        rt_current_thread = RT_NULL;
    }
    

    此时的链表为空
    在这里插入图片描述

    启动调度器

    /**
     * @ingroup SystemInit
     * This function will startup scheduler. It will select one thread
     * with the highest priority level, then switch to it.
     */
    void rt_system_scheduler_start(void)
    {
        register struct rt_thread *to_thread;
        register rt_ubase_t highest_ready_priority;
    
    #if RT_THREAD_PRIORITY_MAX > 32
        register rt_ubase_t number;
    
        number = __rt_ffs(rt_thread_ready_priority_group) - 1;
        highest_ready_priority = (number << 3) + __rt_ffs(rt_thread_ready_table[number]) - 1;
    #else
        highest_ready_priority = __rt_ffs(rt_thread_ready_priority_group) - 1;
    #endif
    
        /* get switch to thread */
        to_thread = rt_list_entry(rt_thread_priority_table[highest_ready_priority].next,
                                  struct rt_thread,
                                  tlist);
    
        rt_current_thread = to_thread;
    
        /* switch to new thread */
        rt_hw_context_switch_to((rt_uint32_t)&to_thread->sp);
    
        /* never come back */
    }
    

    临界段保护

    PRIMASK寄存器

    这个寄存器只有一个位,置1后,将关闭所有可屏蔽中断的异常,只剩NMI和硬fault,默认值为0

    ;/*
    ; * rt_base_t rt_hw_interrupt_disable();
    ; */
    rt_hw_interrupt_disable    PROC
        EXPORT  rt_hw_interrupt_disable
        MRS     r0, PRIMASK
        CPSID   I
        BX      LR
        ENDP
    
    ;/*
    ; * void rt_hw_interrupt_enable(rt_base_t level);
    ; */
    rt_hw_interrupt_enable    PROC
        EXPORT  rt_hw_interrupt_enable
        MSR     PRIMASK, r0
        BX      LR
        ENDP
    

    为什么不直接这样写?

    ;/*
    ; * void rt_hw_interrupt_disable();
    ; */
    rt_hw_interrupt_disable PROC
    EXPORT rt_hw_interrupt_disable
    CPSID I
    BX LR
    ENDP
    
    ;/*
    ; * void rt_hw_interrupt_enable(void);
    ; */
    rt_hw_interrupt_enable PROC
    EXPORT rt_hw_interrupt_enable
    CPSIE I
    BX LR
    ENDP
    

    避免在嵌套的临界段失效,如下所示

    /* 临界段代码 */
    {
    	/* 临界段 1 开始 */
    	rt_hw_interrupt_disable(); /* 关中断,PRIMASK = 1 */
    	{
    		/* 临界段 2 */
    		rt_hw_interrupt_disable(); /* 关中断,PRIMASK = 1 */
    		{
    		
    		}
    		rt_hw_interrupt_enable(); /* 开中断,PRIMASK = 0 */ //(注意)
    	}
    	/* 这里已经开启了中断,而临界段1还未结束 */
    	/* 临界段 1 结束 */
    	rt_hw_interrupt_enable(); /* 开中断,PRIMASK = 0 */
    }
    

    正确做法如下:

    PRIMASK = 0; /* PRIMASK 初始值为 0,表示没有关中断 */ 
    rt_base_t level1;
    rt_base_t level2;
    
    /* 临界段代码 */
    {
    	/* 临界段 1 开始 */
    	level1 = rt_hw_interrupt_disable(); /* 关中断,level1=0,PRIMASK=1 */
    	{
    		/* 临界段 2 */
    		level2 = rt_hw_interrupt_disable(); /* 关中断,level2=1,PRIMASK=1 */ 
    		{
    		
    		}
    		rt_hw_interrupt_enable(level2); /* 开中断,level2=1,PRIMASK=1 */
    	}
    	/* 临界段 1 结束 */
    	rt_hw_interrupt_enable(level1); /* 开中断,level1=0,PRIMASK=0 */ 
    }
    

    对象

    软件定时器

    
    
    
    
    
    
    展开全文
  • rt-thread.rtthread.3.1.1.pack
  • 打开RT thread settings时 报错: 解决方法:关闭RT thread Studio后重新打开,再点击RT thread settings,可以正常打开,亲测有效!

    打开RT thread settings时 报错:
    在这里插入图片描述
    解决方法:关闭RT thread Studio后重新打开,再点击RT thread settings,可以正常打开,亲测有效!

    在这里插入图片描述

    展开全文
  • RT Thread 文件系统教程RT Thred 文件系统教程-1 SPI Flash使用文件系统小技巧打开RT-Thread Studio软件,新建工程W25Q128底层编写在spi1总线上挂载W25Q128块设备。挂载文件系统到根目录,代码如下测试如下 RT Thred...

    RT Thred 文件系统教程-1 SPI Flash使用文件系统

    link

    这篇文章将讲解如何使用RT-Thread Studio 开发工具操作文件系统,大概分为3篇。

    第一篇:SPI Flash使用文件系统

    第二篇:SD卡使用文件系统

    第三篇:SPI flash和SD卡同时使用文件系统

    小技巧

    (快捷键 alt+/ 自动补全API参数)

    首先了解一下RT-Thread Studio,RT-Thread Studio是基于 eclipse 平台开发,界面设计和风格继承自 eclipse。

    RT-Thread Studio 主要包括工程创建和管理,代码编辑,SDK管理,RT-Thread配置,构建配置,调试配置,程序下载和调试等功能,结合图形化配置系统以及软件包和组件资源,减少重复工作,提高开发效率。

    1.社区版本永久免费

    2.支持主流C/C++语言开发

    3.强大的代码编辑和重构功能

    4.SDK管理器支持在线下载更新 RT-Thread 最新源码包

    5.简单易用的工程创建向导,快速验证原型

    6.全新图形化配置系统,同时支持架构图和树形图配置

    7.软件包市场提供丰富的可用软件包资源

    8.丰富的调试功能,快速查看和跟踪定位代码问题

    RT-Thread Studio下载地址 https://www.rt-thread.org/page/studio.html

    硬件平台:正点原子STM32F407开发板

    外设使用W25Q128,其原理图如下:在这里插入图片描述
    在这里插入图片描述W25Q128使用的引脚有F_CS(PB14)、SPI1_SCK(PB3)、SPI1_MISO(PB4)、SPI1_MOSI(PB5)。

    打开RT-Thread Studio软件,新建工程

    在这里插入图片描述

    修改芯片时钟配置函数void system_clock_config(int target_freq_mhz),修改如下
    在这里插入图片描述

    修改board.h中的晶振时钟定义
    在这里插入图片描述
    修改stm32f4xx_hal_conf.h文件中的外部晶振
    在这里插入图片描述

    至此时钟修改完毕,使用外部晶振时钟8Mhz,系统时钟为168Mhz,APB1外设之中42Mhz,APB2外设之中84Mhz。

    RT-Thread中DFS(虚拟文件系统)组件,全称为 Device File System,即设备虚拟文件系统,文件系统的名称使用类似 UNIX 文件、文件夹的风格,目录结构如下图所示:
    在这里插入图片描述在 RT-Thread DFS 中,文件系统有统一的根目录,使用 /来表示。而在根目录下的 f1.bin 文件则使用 /f1.bin 来表示,2018 目录下的 f1.bin 目录则使用 /data/2018/f1.bin来表示。即目录的分割符号是 /,这与 UNIX/Linux 完全相同,与 Windows 则不相同(Windows 操作系统上使用 \ 来作为目录的分割符)。

    RT-Thread DFS 组件的主要功能特点有:

    为应用程序提供统一的 POSIX 文件和目录操作接口:read、write、poll/select 等。

    支持多种类型的文件系统,如 FatFS、RomFS、DevFS 等,并提供普通文件、设备文件、网络文件描述符的管理。

    支持多种类型的存储设备,如 SD Card、SPI Flash、Nand Flash 等。

    DFS 的层次架构如下图所示,主要分为 POSIX 接口层、虚拟文件系统层和设备抽象层。
    在这里插入图片描述 文件系统的初始化过程一般分为以下几个步骤:
    1.初始化 DFS 组件。
    2.初始化具体类型的文件系统。
    3.在存储器上创建块设备。
    4.格式化块设备。
    5.挂载块设备到 DFS 目录中。
    6.当文件系统不再使用,可以将它卸载。
    根据官方文档我们配置RT-Thread Studio的settings,如下图
    在这里插入图片描述在setting中打开以下组件和驱动框架
    在这里插入图片描述右键Fatfs,选择详细配置,设置如下
    在这里插入图片描述保存配置,系统自动下载更新对应的组件包,如下
    在这里插入图片描述

    W25Q128底层编写

    根据文档完成以下几步配置,STEP1上面以配置完成
    在这里插入图片描述配置STEP3和STEP4
    在这里插入图片描述
    在这里插入图片描述

    编译查看结果
    在这里插入图片描述
    spi1总线设备已注册。

    在spi1总线上挂载W25Q128块设备。

    程序编写如下
    在这里插入图片描述
    在这里插入图片描述
    编译下载,查看信息
    在这里插入图片描述W25Q128注册成功块设备。

    挂载文件系统到根目录,代码如下

    在这里插入图片描述编译下载,查看信息
    在这里插入图片描述
    文件系统挂载成功后就可以进行文件和目录的操作了,文件系统操作常用的 FinSH 命令如下表所示:

    FinSH 命令 描述
    ls 显示文件和目录的信息
    cd 进入指定目录
    cp 复制文件
    rm 删除文件或目录
    mv 将文件移动位置或改名
    echo 将指定内容写入指定文件,当文件存在时,就写入该文件,当文件不存在时就新创建一个文件并写入
    cat 展示文件的内容
    pwd 打印出当前目录地址
    mkdir 创建文件夹
    mkfs 格式化文件系统

    测试如下

    在这里插入图片描述
    欢迎大家关注我的微信公众号
    在这里插入图片描述

    展开全文
  • rtthread mqtt

    2020-12-04 15:12:49
    rtthread 以太网 (LAN8720A) 基于以太网的应用mqtt,在**rtthread 以太网 (LAN8720A)**中已经实现了tcp/ip通信正常,接下需要启用mqtt模块, 嵌入式mqtt设备 rtthread 启用mqtt 在rtthread中田间 pahomqtt 软件包,...

    rtthread 以太网 (LAN8720A)
    基于以太网的应用mqtt,在**rtthread 以太网 (LAN8720A)**中已经实现了tcp/ip通信正常,接下需要启用mqtt模块,

    嵌入式mqtt设备

    rtthread 启用mqtt

    在rtthread中田间 pahomqtt 软件包,并右键详细配置

    软件包
    |---->property
    |		|---->Paho MQTT:嵌入式平的的Eclipse Paho MQTT C/C++客户端   	√
    |				|---->使能MQTT示例 		√
    

    修改示例代码

    路径:rtthread\packages\pahomqtt-v1.1.0\samples
    #define MQTT_URI                "tcp://192.168.1.100:61613"  //设置mqtt服务器ip和端口
    #define MQTT_USERNAME           "admin"						//设置mqtt连接用户名
    #define MQTT_PASSWORD           "password"					//设置mqtt连接用户密码
    #define MQTT_SUBTOPIC           "mqtt_test"						//设置订阅topic
    #define MQTT_PUBTOPIC           "mqtt_test"						//设置发送消息topic
    

    mqtt服务器

    mqtt服务器软件 apache-apollo-1.7.1-windows-distro.zip 下载地址

    mqtt服务器创建

    解压apache-apollo-1.7.1-windows-distro.zip

    cd  apache-apollo-1.7.1\bin
    apollo.cmd create mymqtt_server		//创建服务器实例
    

    创建成功后会在bin目录中创建一个 mybroker

    |----->mymqtt_server
    |	|----->bin  运行脚本
    |	|----->etc 环境配置
    |		|----->users.properties 用来配置可以使用服务器的用户以及相应的密码。
    |		|----->groups.properties 持有群体的用户映射,可以通过组而不是单个用户简化访问控制列表。
    |		|----->black-list.txt 用来存放不允许连接服务器的IP地址,相当于黑名单类似的东西。
    |		|----->login.config 是一个服务器认证的配置文件,
    |		|----->apollo.xml 服务器主配置文件该配置文件用于控制打开的端口,队列,安全,虚拟主机设置等。
    |	|----->data 存储持久化数据
    |	|-----> log  运行日志
    |	|----->tmp 临时文件密码
    
    返回信息
    ------------------------------------------------------------
    Creating apollo instance at: mymqtt_server
    Generating ssl keystore...
    
    Warning:
    JKS ├▄╘┐┐Γ╩╣╙├╫¿╙├╕±╩╜íú╜¿╥Θ╩╣╙├ "keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststore
    type pkcs12" ╟¿╥╞╡╜╨╨╥╡▒Ω╫╝╕±╩╜ PKCS12íú
    
    You can now start the broker by executing:
    
       "D:\Program Files\MQTT_server\apache-apollo-1.7.1\bin\mymqtt_server\bin\apollo-broker" run
    
    Or you can setup the broker as Windows service and run it in the background:
    
       "D:\Program Files\MQTT_server\apache-apollo-1.7.1\bin\mymqtt_server\bin\apollo-broker-service" install
       "D:\Program Files\MQTT_server\apache-apollo-1.7.1\bin\mymqtt_server\bin\apollo-broker-service" start
    
    

    配置mqtt

    mymqtt_server/bin/etc/apollo.xml

    修改服务器ip信息

      <web_admin bind="http://192.168.1.100:61680"/>
      <web_admin bind="https://192.168.1.100:61681"/>
    
      <connector id="tcp" bind="tcp://192.168.1.100:61613" connection_limit="2000"/>
      <connector id="tls" bind="tls://192.168.1.100:61614" connection_limit="2000"/>
      <connector id="ws"  bind="ws://192.168.1.100:61623"  connection_limit="2000"/>
      <connector id="wss" bind="wss://192.168.1.100:61624" connection_limit="2000"/>
    

    启动mqtt 服务

    cd  apache-apollo-1.7.1\bin\mymqtt_server\bin
    apollo-broker.cmd run
    
    返回信息
    ------------------------------------------------------------
                                                                                                                   
       _____                .__  .__                                                                               
      /  _  \ ______   ____ |  | |  |   ____                                                                       
     /  /_\  \\____ \ /  _ \|  | |  |  /  _ \                                                                      
    /    |    \  |_> >  <_> )  |_|  |_(  <_> )                                                                     
    \____|__  /   __/ \____/|____/____/\____/                                                                      
            \/|__|  Apache Apollo (1.7.1)                                                                          
                                                                                                                   
                                                                                                                   
    oading configuration file 'D:\Program Files\MQTT_server\apache-apollo-1.7.1\bin\mymqtt_server\etc\apollo.xml'. 
    NFO  | OS     : Windows 10 10.0                                                                                
    NFO  | JVM    : Java HotSpot(TM) 64-Bit Server VM 1.8.0_271 (Oracle Corporation)                               
    NFO  | Apollo : 1.7.1 (at: D:\Program Files\MQTT_server\apache-apollo-1.7.1)                                   
    NFO  | Starting store: leveldb store at D:\Program Files\MQTT_server\apache-apollo-1.7.1\bin\mymqtt_server\data
    NFO  | Accepting connections at: tcp://192.168.1.100:61613                                                           
    NFO  | Accepting connections at: tls://192.168.1.100:61614                                                           
    NFO  | Accepting connections at: ws://192.168.1.100:61623/                                                           
    NFO  | Accepting connections at: wss://192.168.1.100:61624/                                                          
    NFO  | Administration interface available at: https://192.168.1.100:61681/                                         
    NFO  | Administration interface available at: http://192.168.1.100:61680/                                          
    

    通过返回信息可以看到
    MQTT服务器TCP连接端口:tcp://192.168.1.100:61613

    后台登录接口:
    https://192.168.1.100:61681/
    http://192.168.1.100:61680/

    初始默认帐号是admin,密码password

    mqtt 服务器创建topc

    进入后台管理

    在浏览器中输入 http://192.168.1.100/

    输入账户admin,密码password

    即可看到mqtt管理控制页

    选择 Virtual Hosts -->点击Topics创建主题 mqtt_test
    在这里插入图片描述

    启动mqtt demo 测试服务器

    路径:apache-apollo-1.7.1/examples/mqtt/websocket/index.html

    浏览器中打开index.html

    在Destination中填写一下信息

    host:192.168.1.100

    port:默认

    Destination: mqtt_test (需要订阅的主题)

    在这里插入图片描述

    连接pc端mqtt客户端

    COMNET 下载地址

    打开 COMNET.exe

    选择网络,选择MQTT

    服务器端IP:192.168.1.100
    端口号:61613
    用户名:admin
    密码:password
    点击启用
    
    订阅主题:mqtt_test并点击订阅主题
    发布主题:mqtt_test
    
    点击启用后反馈信息
    [2020/12/4 13:18:02 369]  正在连接MQTT服务器...
    [2020/12/4 13:18:33 497]  MQTT连接成功
    

    在这里插入图片描述

    连接rtthread 设备到mqtt服务器

    启动设备连接mqtt服务器

    msh />mqtt_start
    [D/mqtt.sample] inter mqtt_connect_callback!
    [D/mqtt] ipv4 address port: 61613
    [D/mqtt] HOST = '192.168.1.100'
    msh />[I/mqtt] MQTT server connect success.
    [I/mqtt] Subscribe #0 test OK!
    [D/mqtt.sample] inter mqtt_online_callback!
    

    启动设备发送mqtt

    msh />mqtt_publish mqtt_test
    msh />[D/mqtt.sample] mqtt sub callback: mqtt_test test
    

    启动设备接受mqtt

    msh />mqtt_subscribe mqtt_test
    [D/mqtt] MQTT client topic(mqtt_test) is already subscribed.
    

    设备提示意见连接到了mqtt服务器中

    通过服务器的connectors标签页中看到连接设备
    在这里插入图片描述

    mqttserver发送测试

    在mqtt demo页中发送信息栏中填写信息点击send

    • 在pc mqtt客户端接受信息
    [2020/12/4 14:06:41 124]  MQTT[TOPIC:mqtt_test]接收9字节: 
    [2020/12/4 14:06:41 132]  send_test
    
    • rtthread 设备接受信息
    [D/mqtt.sample] mqtt sub callback: mqtt_test  send_test
    

    mqttserver接受测试

    在mqtt客户端填写信息,点击发布消息–>即可在测试网页中看到接收到的信息

    rtthread 设备接受信息

    [D/mqtt.sample] mqtt sub callback: mqtt_test  send_test
    

    在mqtt demo页中看到接收到的信息

    send_test
    

    rtthread 设备发送测试

    • 设备发送mqtt
    msh />mqtt_publish mqtt_test
    msh />[D/mqtt.sample] mqtt sub callback: mqtt_test test
    

    在mqtt demo页中看到接收到的信息

    test
    
    • 在pc mqtt客户端接受信息
    [2020/12/4 14:06:41 124]  MQTT[TOPIC:mqtt_test]接收9字节: 
    [2020/12/4 14:06:41 132]  test
    
    展开全文
  • RT Thread 文件系统教程 RT Thred 文件系统教程-1 SPI Flash使用文件系统 小技巧 打开RT-Thread Studio软件,新建工程 W25Q128底层编写 在spi1总线上挂载W25Q128块设备。 挂载文件系统到根目录,...
  • rtthread套娃移植

    2020-10-13 17:32:09
    和大家分享下将基于rtthread的项目移植到其他平台的经验。 背景 最近做了一个物联网项目移植。原先的项目使用的硬件平台为stm32f401+sim800c(mcu + 2G modem),软件平台为rtthread 4.0.1。移植到的新平台为BC25(nb ...
  • RTTHREAD软件包目录

    千次阅读 2021-03-06 08:37:34
    RTTHREAD软件包目录 这边统计下RTTHREAD软件包的各项内容 IOT 包名 技术标签 依赖平台 备注 abup_fota OTA TCP/UDP 本软件包是用于 Abup FOTA 升级的固件下载器 agile_jsmn json C库 jsmn是一个超轻巧,...
  • OS版本:RT-Thread 4.0.0芯片:STM32F407RT-Thread的串口驱动...1. serial设备初始化及使用将配置使能的 uart_obj[ ] 进行设备注册rtthread_startup -->rt_hw_usart_init() -->rt_hw_serial_register -->rt...
  • RTthread  RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统,基本 属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任 务。事实上,一个...
  • RTThread-ADC_DMA.rar

    2020-07-10 18:43:57
    目前RTThread的adc设备驱动采用轮询法,比较浪费资源,且读取麻烦,这是我的某个项目中对RTThread的ADC设备驱动添加DMA方式
  • rtthread优先级的实现

    2020-12-17 22:43:18
    title: rtthread优先级的实现 date: 2020-10-22 17:42:59 tags: rtthread 就绪列表 RT-Thread 要支持多优先级,需要靠就绪列表的支持,从代码上看,就绪列表由两个在 scheduler.c 文件定义的全局变量组成,一个是...
  • rtthread posix接口支持

    千次阅读 2019-05-17 17:50:45
    rtthread 支持POSIX 接口,驱动现在也需要支持posix接口,让linux 的应用同样可以运行到让rtthread上 .应用通用可以减少上层应用的改动。加快产品开发速度,同样测试也可以通用,减少维护成本,提高测试效率。 驱动...
  • 华大单片机移植RTThread操作系统

    千次阅读 多人点赞 2020-09-27 16:26:02
    华大单片机移植RTThread-国产操作系统 文章目录华大单片机移植RTThread-国产操作系统1.华大单片机型号选择2.RTThread源码下载2.1 .资料说明2.3.源码下载3.移植过程3.1.新建华大单片机最小系统工程模板,这里不展开...
  • 2.使用RT-Thread 系统实现DIY数字仪表(二)——把TouchGFX移植到RTThread系统 3.使用RT-Thread 系统实现DIY数字仪表(三)——RTThread系统实现物联网平台 4.使用RT-Thread 系统实现DIY数字仪表(四)——完善Touch...
  • 在线程进行调度切换时,会执行调度,我们...rtthread.h> #define THREAD_STACK_SIZE 1024 #define THREAD_PRIORITY 20 #define THREAD_TIMESLICE 10 /* 针对每个线程的计数器 */ volatile rt_uint32_t count[2];
  • RT-Thread中,实际上线程并不存在运行状态,就绪状态和运行状态是等同的。若某线程运行完毕,系统将自动删除线程:自动执行rt_thread_exit()函数,先将该线程从系统就绪队列中删除,再将该线程的状态更改为关闭状态...
  • RT-Thread选题指南介绍+RT-Thread简要介绍RT-Thread诞生于2006年,是国内以开源、中立、社区化发展起来的一款实时操作系统,由上海睿赛德电子科技有限公司拥有并负责开发、维护和运营。因其13年的沉淀积累,加上...
  • RTThread中hardfault定位

    2020-07-28 14:44:47
    RTThread中fault定位方法 在《RTThread中HardFault_Handler分析》一文中已经分析了RTThread中对于fault中断的处理方法。接下来讲解如何根据错误输出信息对程序出现fault的位置进行定位。 rtthrea...
  • rtthread+nano+源码+3.0.3版本
  • rtthread开发笔记心得

    千次阅读 2019-09-01 18:23:50
    1.1:使用env构建rtthread项目:安装env_released_1.1.1,打开env命令终端可以对rtthread的项目进行配置,在env中使用menuconfig命令进行图形界面的选择配置,menuconfig除了系统自带的根目录,外设的设备添加选项由...
  • RT1052 rtthread 报错"FPU active!" “UNALIGNED” 问题 RT1052 rtthread 报错"FPU active!" “UNALIGNED” 开发环境 RT-Thread: v4.0.2(master) SOC: i.MX RT1050 Board: 野火 RT1052 问题背景 我创建了一个线程去...
  • RTThread中falut定位方法

    千次阅读 2019-04-20 16:12:57
    RTThread中fault定位方法 在《RTThread中HardFault_Handler分析》一文中已经分析了RTThread中对于fault中断的处理方法。接下来讲解如何根据错误输出信息对程序出现fault的位置进行定位。 rtthread_simulator_v...
  • RTThread移植到STM32上,添加esp8266,连接wifi,从而实现stm32与服务器通讯。其中STM32做客户端,在华为云服务器上开的网络调试助手(具有固定IP端口)做服务器,esp8266的作用是将串口数据透传到网络上,是...
  • rtthread定时器的实现

    2020-12-17 22:40:24
    title: rtthread定时器的实现 date: 2020-10-25 15:57:01 tags: rtthread 每当线程需要延时的时候,就初始化 remaining_tick 需要延时的时间,然后将线程挂起,这里的挂起只是将线程在线程就绪优先级组中对应的位...
  • title: rtthread对象容器的实现 date: 2020-10-22 15:50:29 tags: rtthread 在 RT-Thread 中,所有的数据结构都称之为对象。 对象 对象枚举定义 中线程,信号量,互斥量、事件、邮箱、消息队列、内存堆、内存池、...
  • 基于stm32实现的bootloader及移植的rtthread,包含lwip。
  • [RTOS]uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点

    万次阅读 多人点赞 2017-08-25 17:52:55
    [RTOS]–uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点 最近正好又重新回顾了一下这几款OS,心里一直有个疑问,明明这几款RTOS是这么像,为什么还要搞出这么多个来呢,最后的结论就是,管他呢,反正那个用的...
  • 一、RT-Thread Studio 驱动支持概况 驱动概况 当前 RT-Thread Studio 驱动开发方式主要分为二种 1、由 RT Thread Studio 自动生成,无需修改任何文件或者简单定义几个宏即可直接使用的驱动,如 GPIO,UART,I2C,SPI...
  • rtthread内存管理原理

    2019-12-26 16:57:56
    rtthread的内存管理分为静态内存管理与动态内存管理,其中动态内存管理根据内存的多少分为两种:1、针对小内存块的分配管理(小内存管理算法),另一种是针对大内存块的分配管理(SLAB管理算法)。 2、静态内存池...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,290
精华内容 5,316
关键字:

rtthread