这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【分享开发笔记,赚取电动螺丝刀】【LP-MSPM0L1306】适配 RT-Thr

共4条 1/1 1 跳转至

【分享开发笔记,赚取电动螺丝刀】【LP-MSPM0L1306】适配 RT-Thread Nano

高工
2025-06-28 16:36:08   被打赏 23 分(兑奖)     打赏

【简介】

 RT-Thread Nano 的代码可以在官网该路径获取下载(https://www.rt-thread.org/download.html#download-rt-thread-nano)本地的开发环境为IAR IDE 针对IAR 环境下移植适配Rt-thread nano 的方法可以参照官方的以下文档(https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-iar/an0040-nano-port-iar),官方的文档对移植的过程有详细的说明,我们参照该文档完成RT-Thread Nano 的适配。以下是官方资料对RT-Thread Nano 敢要说明。

image.png

【 RT-Thread Nano 适配】

1.添加代码

 RT-Thread Nano 的适配我们首先把下载的 RT-Thread Nano kernel 代码加入工程参与编译,在IAR 下添加以下kernel 代码编译。

image.png

将CPU libcpu 体系架构相关的代码加入IAR环境,本地使用的CORTEX M0相关的文件 

image.png

2.配置SysTick

配置SysTick 为RT-Thread Nano 的任务调度定时器,定时器周期配置为1ms

image.png 


添加systick 中断处理函数

#include <rtthread.h>

/********************************************************************************************************
 *                                  Private Function Declarations                                       *
 *******************************************************************************************************/
void SysTick_Handler(void)
{
    /* enter interrupt */
    rt_interrupt_enter();
    rt_tick_increase();
    /* leave interrupt */
    rt_interrupt_leave();
}

3. 配置FinSH 

finsh 的添加可以查看官方的该文档 https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/finsh-port/an0045-finsh-port

将代码加工程并配置finish编译配置

image.png

/* FinSH config file */

#ifndef __MSH_CFG_H__
#define __MSH_CFG_H__

// <<< Use Configuration Wizard in Context Menu >>>
#define RT_USING_FINSH
#define FINSH_USING_MSH
#define FINSH_USING_MSH_ONLY
// <h>FinSH Configuration
// <o>the priority of finsh thread <1-30>
//  <i>the priority of finsh thread
//  <i>Default: 21
#define FINSH_THREAD_PRIORITY       21
// <o>the stack of finsh thread <1-4096>
//  <i>the stack of finsh thread
//  <i>Default: 4096  (4096Byte)
#define FINSH_THREAD_STACK_SIZE     512

#define FINSH_USING_SYMTAB
// <c1>Enable command description
//  <i>Enable command description
#define FINSH_USING_DESCRIPTION
//  </c>
// </h>

// <<< end of configuration section >>>
#endif

 使用finish 需要实现console 的读写接口,本地使用的uart 作为物理层的输入/输出 对应函数如下

void rt_hw_console_output(const char *str)
{
    size_t idx;
    int len = strlen(str);

    for (idx = 0; idx < len; idx++)
    {
        if(*str == '\n')
            DL_UART_Extend_transmitDataBlocking(UART_0_INST,'\r');

        DL_UART_Extend_transmitDataBlocking(UART_0_INST,*str);
        str++;
    }
}

char rt_hw_console_getchar(void)
{
    uint16_t ret = 0;
    uint8_t pdata;
    ret = RingBuffer_Read(&ringbuff,&pdata,1);
    return ret == 0 ? -1 : pdata;
}

 void UART0_IRQHandler(void)
 {
   uint8_t data;
   if (DL_UART_Main_getPendingInterrupt(UART_0_INST) == DL_UART_IIDX_RX)
   {
        data = DL_UART_receiveDataBlocking(UART_0_INST);
        /* Get date and write to ringbuffer */
        RingBuffer_Write(&ringbuff,&data,1);
   }

 }

至此已经完成了适配的工作,启动后finsh 可以输入输出了,启动会输出rt-thread 的log 

image.png

查看任务信息

image.png


专家
2025-07-07 09:21:16     打赏
2楼

看着说明,很容易照着操作。谢谢分享!


工程师
2025-07-09 16:00:46     打赏
3楼

RTT对这个板子有BSP吗?Nano确实也比较适配资源受限型的MCU,裁剪了很多功能。这个移植真的很不错!


专家
2025-07-10 08:17:04     打赏
4楼

楼主,这种移植,有没有通用的方法呢?


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]