打印
[STM32U5]

【NUCLEO-U575ZI-Q测评】RT-Thread 点灯

[复制链接]
461|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulugl|  楼主 | 2023-2-22 20:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
RT-Thread 是国产操作系统,提供了U575的开发BSP包,这里带大家体验一下超级简单的入门
1、下载BSPrt-thread: RT-Thread是一个来自中国的开源物联网操作系统,它提供了非常强的可伸缩能力:从一个可以运行在ARM Cortex-M0芯片上的极小内核,到中等的ARM Cortex-M3/4/7系统,甚至是多核,64位的ARM Cortex-A,MIPS32/64处理器的功能丰富系统 (gitee.com)
2、下载后,解压,在bsp目录下面删除除rt-thread-master\bsp\stm32\stm32u575-st-nucleo的其他bsp。当然如果你的硬盘大,可以留下。
3、进入stm32u575-st-nucleo,打开menuconfig.(具体入门资料可以去RT-Thread查看文档,这里不做说明)

4、输入menuconfig进入配置,由于我们使用默认配置,可以save后退出。然后使用scons --target=mdk5,更新工程


5、在目录下面打开keil工程:

6、找到Applications下的main.c,看到系统已经生成了LED1的闪灯任务。我们编译后下载到开发板,就可以实现LED1的闪烁了:
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date           Author       Notes
* 2018-11-06     SummerGift   first version
*/

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>

/* defined the LED1 pin: PC7 */
/* defined the LED0 pin: PG2 */

#define LED0_PIN    GET_PIN(G, 2)

#define LED1_PIN    GET_PIN(C, 7)
#define THREAD_PRIORITY         25
#define THREAD_STACK_SIZE       512
#define THREAD_TIMESLICE        5

/* 线程led 的对象和运行时用到的栈 */


static struct rt_thread thread_led;
static rt_uint8_t thread_led_stack[512];

/*  线程led 入口 */
void thread_led_entry(void* parameter)
{
        rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
        while(1)
        {
                rt_pin_write(LED1_PIN,PIN_HIGH);
                rt_thread_mdelay(500);
                rt_pin_write(LED1_PIN, PIN_LOW);
                rt_thread_mdelay(500);
        }
}

/* 线程LED1 初始化 */
int thread_sample(void)
{
        rt_thread_t threadled_ptr;
        rt_err_t result;
       
        /*
        * 初始化 线程LED1
        * 线程的入口是 thread_led_entry, 参数是RT_NULLL
        * 线程栈是thread_led_stack
        * 优先级是25,时间片是5 OS Tick
               
        */
        result = rt_thread_init(&thread_led,
                                                                                                        "thread led",
                                                                                                        thread_led_entry, RT_NULL,
                                                                                                        &thread_led_stack[0], sizeof(thread_led_stack),
                                                                                                                THREAD_PRIORITY-1,THREAD_TIMESLICE);
        /*  启动线程 */
        if(result == RT_EOK) rt_thread_startup(&thread_led);
        return 0;
}

int main(void)
{
    int count = 1;
    /* set LED0 pin mode to output */
    rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);
                thread_sample();
    while (count++)
    {
        rt_pin_write(LED0_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED0_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }

    return RT_EOK;
}
7、打开串口终端,可以看到经典的启动界面:

【小结】RT-Thread 与ST的合作,对NUCLEO-U575ZI-Q开发板提供了板级支持,使得开发非常容易。

使用特权

评论回复
沙发
Bowclad| | 2024-1-12 16:23 | 只看该作者
RT-Thread最低可以跑在多少资源芯片上啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

748

帖子

10

粉丝