发新帖本帖赏金 21.00元(功能说明)我要提问
返回列表
打印
[DemoCode下载]

在M471KI开发板跑新版的RT-Thread Nano

[复制链接]
41201|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 gaoyang9992006 于 2021-8-6 19:39 编辑

#申请原创# @21小跑堂
RT-Thread Nano ,原来的版本是3.1.3,近期已经提供了最新版的3.1.5我们先跑一个老版本的试试
新建工程,先选中这个M471的芯片,然后在RTE里勾选一下基本内容
具体步骤可参考我之前在另外一个单片机上的移植过程

新唐新出单片机M0A23移植RT-Thread竟然这么容易,十分钟搞定。 - - 21ic电子技术开**坛

等一通 操作完成,编译下载,串口助手就可以打印出系统的消息了

然后我升级了一下RT-Thread Nano 系统,重新编译烧录后就失败了
原来新版的RTT 重新设计了配置,现在的报错就是告诉你要分几步走,完城配置,按照几个错误提示的步骤重新配置,完成。
例如第三步的配置,我们屏蔽掉这个报错消息,然后填入相应的代码。




M471.rar (3.44 MB)

board.c
/*
* Copyright (c) 2006-2019, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date           Author       Notes
* 2021-05-24                  the first version
*/

#include <rthw.h>
#include <rtthread.h>

#include <stdio.h>
#include <NUMicro.h>

#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
/*
* Please modify RT_HEAP_SIZE if you enable RT_USING_HEAP
* the RT_HEAP_SIZE max value = (sram size - ZI size), 1024 means 1024 bytes
*/
#define RT_HEAP_SIZE (15*1024)
static rt_uint8_t rt_heap[RT_HEAP_SIZE];

RT_WEAK void *rt_heap_begin_get(void)
{
    return rt_heap;
}

RT_WEAK void *rt_heap_end_get(void)
{
    return rt_heap + RT_HEAP_SIZE;
}
#endif

void rt_os_tick_callback(void)
{
    rt_interrupt_enter();
   
    rt_tick_increase();

    rt_interrupt_leave();
}

/**
* This function will initial your board.
*/

void SYS_Init(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Set XT1_OUT(PF.2) and XT1_IN(PF.3) to input mode */
    PF->MODE &= ~(GPIO_MODE_MODE2_Msk | GPIO_MODE_MODE3_Msk);

    /* Enable HIRC clock (Internal RC 48 MHz) */
    CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

    /* Wait for HIRC clock ready */
    CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);

    /* Set core clock as 96MHz from PLL */
    CLK_SetCoreClock(FREQ_96MHZ);

    /* Set PCLK0/PCLK1 to HCLK/2 */
    CLK->PCLKDIV = (CLK_PCLKDIV_APB0DIV_DIV2 | CLK_PCLKDIV_APB1DIV_DIV2);

    /* Enable UART clock */
    CLK_EnableModuleClock(UART0_MODULE);

    /* Select UART clock source from HIRC */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1));

    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock. */
    SystemCoreClockUpdate();

    /*----------------------------------------------------------------------*/
    /* Init I/O Multi-function                                              */
    /*----------------------------------------------------------------------*/
    /* Set GPB multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFPH = (SYS->GPB_MFPH & ~(SYS_GPB_MFPH_PB12MFP_Msk | SYS_GPB_MFPH_PB13MFP_Msk)) |
                    (SYS_GPB_MFPH_PB12MFP_UART0_RXD | SYS_GPB_MFPH_PB13MFP_UART0_TXD);

    /* Lock protected registers */
    SYS_LockReg();
}


void rt_hw_board_init(void)
{
//#error "TODO 1: OS Tick Configuration."
    /*
     * TODO 1: OS Tick Configuration
     * Enable the hardware timer and call the rt_os_tick_callback function
     * periodically with the frequency RT_TICK_PER_SECOND.
     */
SYS_Init();
    /* Call components board initial (use INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#endif

#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
    rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#endif
}

#ifdef RT_USING_CONSOLE

static int uart_init(void)
{
//#error "TODO 2: Enable the hardware uart and config baudrate."
        
    /* Reset UART0 */
    SYS_ResetModule(UART0_RST);

    /* Configure UART0 and set UART0 baud rate */
    UART_Open(UART0, 115200);
        
    return 0;
}
INIT_BOARD_EXPORT(uart_init);

void rt_hw_console_output(const char *str)
{
//#error "TODO 3: Output the string 'str' through the uart."
printf("%s",str);
}

#endif






finsh_port.c
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date           Author       Notes
*/

#include <rthw.h>
#include <rtconfig.h>
#include <stdio.h>
#ifndef RT_USING_FINSH
#error Please uncomment the line <#include "finsh_config.h"> in the rtconfig.h
#endif

#ifdef RT_USING_FINSH

RT_WEAK char rt_hw_console_getchar(void)
{
    /* Note: the initial value of ch must < 0 */
    int ch = -1;

//#error "TODO 4: Read a char from the uart and assign it to 'ch'."
                ch=getchar();
    return ch;
}

#endif /* RT_USING_FINSH */

配置选项如下






使用特权

评论回复

打赏榜单

21小跑堂 打赏了 20.00 元 2021-08-11
理由:恭喜通过原创文章审核!请多多加油哦!

巧克力娃娃 打赏了 1.00 元 2021-08-10
理由:感谢分享!

沙发
gaoyang9992006|  楼主 | 2021-8-6 19:35 | 只看该作者
新版的还是挺不错的, 不过如果按照老版本的方法做,肯定不行,新的确实很好用,对于小白,上手很容易。

使用特权

评论回复
板凳
yangxiaor520| | 2021-8-7 08:37 | 只看该作者
谢谢分享

使用特权

评论回复
地板
734774645| | 2021-8-9 22:58 | 只看该作者
感谢分享,回头试试看。

使用特权

评论回复
5
sparrow054| | 2021-8-10 13:05 | 只看该作者
看着挺不错,
对于新手,貌似跳过了一些东西,慢慢摸索

使用特权

评论回复
6
Fillmore| | 2021-8-10 14:02 | 只看该作者
顶  厉害了

使用特权

评论回复
7
幸福小强| | 2021-8-10 21:34 | 只看该作者
移植这么容易。

使用特权

评论回复
8
Charlene沙| | 2021-8-17 08:29 | 只看该作者
这个芯片跑系统非常合适,效率会提升很多呢

使用特权

评论回复
9
jiekou001| | 2023-1-12 16:06 | 只看该作者
按照RTT官方的移植说明移植,配置时钟与串口。

使用特权

评论回复
10
643757107| | 2023-1-12 17:17 | 只看该作者
这个操作看起来很容易的样子。

使用特权

评论回复
11
updownq| | 2023-2-2 12:22 | 只看该作者
RT-Thread  studio支持M471KI吗?

使用特权

评论回复
12
gaoyang9992006|  楼主 | 2023-2-2 14:10 | 只看该作者
支持的,支持大部分的新唐arm内核单片机。

使用特权

评论回复
13
mmbs| | 2023-2-7 21:09 | 只看该作者
RT-Thread Nano占用多大的内存?

使用特权

评论回复
14
OKAKAKO| | 2023-2-9 09:09 | 只看该作者
看着挺容易的,自己做做看吧

使用特权

评论回复
15
gaoyang9992006|  楼主 | 2023-2-9 09:15 | 只看该作者
OKAKAKO 发表于 2023-2-9 09:09
看着挺容易的,自己做做看吧

就是这个配置工程要勾选哪些要记住,主要要理清这个RTE配置器每一项对应的是什么,就好办了。

使用特权

评论回复
16
dongnanxibei| | 2023-9-27 19:49 | 只看该作者
从0创建,很少见。

使用特权

评论回复
17
huahuagg| | 2023-9-27 20:26 | 只看该作者
写的不错,给力。

使用特权

评论回复
18
小灵通2018| | 2023-9-27 21:56 | 只看该作者
轻松跑起来。

使用特权

评论回复
发新帖 本帖赏金 21.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1897

主题

15634

帖子

198

粉丝