STM32CubeMX完美RT-THREAD项目创建流程说明(仅限个人备注)

如题。

因为官方使用cubemx生成后需要在board.c等写自定义代码,这样每次通过cubemx重新生成后会被覆盖。使用sub$$main 及super$$关键字使得在rtt在初始化之前可以通过外部进行相关配置,可以不改动rtt内核代码,即cubemx可以随意覆盖。
移植了finSH。

第一部分-安装RTT

  1. 安装RTT固件包
    https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc
  2. 安装3.1.3版本的RTT。(实测3.1.5不能部署在F1)

第二部分-CubeMX配置


我一般会把任务名长度限制改长。这样可以避免显示问题。


在这里插入图片描述
全开。这样可以动态创建线程。


在这里插入图片描述
可开可不开。我是在创建任务的时候就降低main函数优先级,把main当idle线程在用。


在这里插入图片描述
console的buffer我给提高了(记得对齐写256)。
在这里插入图片描述
finsh线程stack提高


剩下的就是按需配置外设

注意中断配置跟官方介绍不一样

在这里插入图片描述
重新定义HAL库时钟源(RTOS默认使用Systick)
在这里插入图片描述
按照如下配置(注意这个不能取消勾选!否则OS TICK或HAK_TICK不递增!)

第三部分 项目结构

包含如下两个文件:
rttinit.c

#include "rtthread.h"
#include "rttinit.h"

#include "usart.h"

#define UartHandle huart1

extern UART_HandleTypeDef huart1;

void $Sub$$rt_hw_board_init()
{
    extern void rt_hw_board_init(void);
    extern void $Super$$rt_hw_board_init(void);
		extern void SystemClock_Config();

		HAL_Init();
		SystemClock_Config();

		MX_USART1_UART_Init();
    $Super$$rt_hw_board_init();
}

void rt_hw_console_output(const char *str)
{
    rt_size_t i = 0, size = 0;
    char a = '\r';

    __HAL_UNLOCK(&UartHandle);

    size = rt_strlen(str);
    for (i = 0; i < size; i++)
    {
        if (*(str + i) == '\n')
        {
            HAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1);
        }
        HAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1);
    }
}
char rt_hw_console_getchar()
{
	int ch = -1;

    if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET)
    {
        ch = UartHandle.Instance->DR & 0xff;
    }
    else
    {
        if(__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_ORE) != RESET)
        {
            __HAL_UART_CLEAR_OREFLAG(&UartHandle);
        }
        rt_thread_mdelay(10);
    }
    return ch;
}

注意更该几系固件包
rttinit.h

#include "rtthread.h"
#include "stm32f1xx_hal.h"

void $Sub$$rt_hw_board_init(void);
void rt_hw_console_output(const char *str);
char rt_hw_console_getchar(void);

默认串口1为终端串口

完毕。直接main.c下include rttinit.h就可以。

注意当while(1)中有代码,finSH才能正常交互。不知道啥问题。
在这里插入图片描述在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
en.stm32cubemx-win-v6-9-1是一个针对STMicroelectronics的STM32微控制器系列的软件工具。这个软件工具可在Windows操作系统上使用,其版本号为6.9.1。 STM32微控制器系列是STMicroelectronics推出的一种低功耗、高性能的微控制器芯片系列。这些微控制器芯片广泛用于嵌入式系统、物联网设备、工业自动化以及各种电子产品中。STM32微控制器系列有多个不同的型号和系列,每个型号都有不同的功能和性能特点。 en.stm32cubemx-win-v6-9-1是用于STM32微控制器系列的软件工具。它具有通过图形化界面进行配置和生成代码的功能,使得开发人员可以更加方便地进行STM32微控制器的软件开发。通过这个软件工具,开发人员可以选择不同的模块、外设和功能,然后生成相应的初始化代码。这个软件工具还可以提供一些自动生成的模版,使得开发人员可以快速开始开发。 除了代码生成外,en.stm32cubemx-win-v6-9-1还提供了一些其他功能。例如,它可以通过图形化界面配置时钟树、引脚映射、中断优先级等。此外,该软件工具还可以集成其他开发环境,例如Keil或IAR,以便更直接地进行代码编辑和编译。 总而言之,en.stm32cubemx-win-v6-9-1是一个用于STM32微控制器系列的软件工具,它提供了图形化界面配置和生成代码的功能,帮助开发人员更方便地进行STM32微控制器的软件开发。它是一个很有用的工具,可以提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值