小会 · 2022年04月18日

【GD32F310开发板试用】rt-thread nano移植并创建线程

在上篇项目的基础上移植rt-thread nano系统。移植过程如下:

一、系统移植
移植步骤是按照官网的文档教程进行,地址:https://www.rt-thread.org/doc...

1.1、在keil下添加系统库文件
001.png

1.2、将系统添加进工程文件
002.png

1.3、删除gd32f3x0_it.c中的HardFault_Handler、PendSV_Handler和SysTick_Handler函数
004.png
005.png
006.png

1.4、在board.c中增加和修改如下内容
007.png
008.png

1.5、删除systicks.c
009.png

二、移植串口打印

2.1、增加串口打印功能
010.png
011.png

2.2、编译、下载后,运行显示
012.png

三、移植控制台
移植finSH参考文档 地址

3.1、keil下添加源码
013.png

3.2、包含头文件
014.png

3.3、修改串口接收函数
016.png

3.4、下载后打印信息
015.png

四、创建线程

创建两个线程,线程1运行上篇动态驱动LED数码管的例程,线程2打印信息。
4.1、创建线程程序

#include <rtthread.h>
#include <rthw.h>
#include "gd32f3x0.h"
#include "stdio.h"
#include "string.h"
#include "ledd.h"

static rt_thread_t thread1;
static rt_thread_t thread2;

void thread1_entry(void *parameter)
{
    init_ledd();
    while(1)
    {
        leddisp();
        rt_kprintf("thread1 run \n");
      rt_thread_mdelay(2);    
        
    }
}

void thread2_entry(void *parameter)
{
    while(1)
    {
        rt_kprintf("thread2 run \n");
      rt_thread_mdelay(5);    
        
    }
}    

void TaskInit(void)
{
    thread1 = rt_thread_create("thread1",
                                                                thread1_entry,
                                                                RT_NULL,
                                                                256,
                                                                2,            
                                                                10);
    if(thread1 != RT_NULL)
    {
        rt_thread_startup(thread1);
    }
    else
    {
        rt_kprintf("create thread1 fail\n\n");
    }

    thread2 = rt_thread_create("thread2",
                                                                thread2_entry,
                                                                RT_NULL,
                                                                256,
                                                                2,            
                                                                10);
    if(thread2 != RT_NULL)
    {
        rt_thread_startup(thread2);
    }
    else
    {
        rt_kprintf("create thread2 fail\n\n");
    }

4.2、串口输出
100.png

上面就是我在GD32F310开发板上创建和运行rt-thread nano项目例程的整个过程。

推荐阅读
关注数
10708
内容数
187
中国高性能通用微控制器领域的领跑者兆易创新GD系列芯片技术专栏。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息