STM32
直播中

大红枣

11年用户 630经验值
私信 关注
[问答]

怎么用cubemx去移植rt-thread nano呢

怎么用cubemx去移植rt-thread nano呢?有哪些移植步骤呢?

回帖(1)

李欣榕

2021-12-14 14:06:50
新建工程并进行基础硬件初始化,下边直接上图



  

   
  

  

  
  

  

  
  

  

  
  

  

  
  

  

   
  

  
  

  

  
选择,GENERATE CODE ,生成代码。在keil mdk中打开工程。

二、UART使用查询方式实现rx和tx

2.1 修改board.c

增加头文件





/**
* 此功能将初始化您的板。
*/
extern void SystemCoreClockUpdate(void);
extern HAL_StatusTypeDef HAL_Init(void);
无效 rt_hw_board_init()
{
   //为了和主播生成的代码动画,这里需要使用main.c中调用的两个函数
    HAL_Init();
    /* 系统时钟更新 */
    SystemCoreClockUpdate();
    MX_USART1_UART_Init();
    /* 系统滴答配置 */
    _SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);

    /* 调用组件板初始值(使用 INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#万一

#if 已定义(RT_USING_USER_MAIN) && 已定义(RT_USING_HEAP)
    rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#万一
}
2.2 修改uart.c

增加头文件的引用


/* 用户代码开始 0 */
#include
/* 用户代码结束 0 */

  

  

   增加uart.h中添加两个函数的声明

/* 用户代码开始原型 */
字符 rt_hw_console_getchar(void);
void rt_hw_console_output(const char *str);
/* 用户代码结束原型 */

  

  

   增加uart.h中增加了两个函数的实现在uart.c中


/* 用户代码开始 1 */
字符 rt_hw_console_getchar(void)
{
    int ch = -1;

    如果 (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET)
    {
        ch = huart1.Instance->DR & 0xff;
    }
    别的
    {
        if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE) != RESET)
        {
            __HAL_UART_CLEAR_OREFLAG(&huart1);
        }
        rt_thread_mdelay(10);
    }
    返回 ch;
}       
void rt_hw_console_output(const char *str)
{
    rt_size_t i = 0,大小 = 0;
    字符 a = 'r';

    __HAL_UNLOCK(&huart1);

    大小 = rt_strlen(str);
    for (i = 0; i < 大小; i++)
    {
        如果 (*(str + i) == 'n')
        {
            HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1);
        }
        HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);
    }
}       
/* 用户代码结束 1 */


修改main.c,隐藏的:同时循环中必须添加rt_thread_delay(100)函数,否则FISH不会出现,无法显示。

/* 用户代码结束标题 */
/* 包括 ----------------------------------------------- -------------------*/
#include "main.h"
#include "usart.h"
#include "gpio.h"

/* 私有包含---------------------------------------------- ------------*/
/* 用户代码开始包括 */
#include //自己添加的引用
/* 用户代码结束包括 */

/* 私有 typedef ---------------------------------------------- -------------*/
/* 用户代码开始 PTD */

/* 用户代码结束 PTD */

/* 私有定义---------------------------------------------- --------------*/
/* 用户代码开始 PD */
/* 用户代码结束 PD */

/* 私有宏 ------------------------------- ---------------*/
/* 用户代码开始 PM */

/* 用户代码结束 PM */

/* 私有变量---------------------------------------------- -----------*/

/* 用户代码开始 PV */

/* 用户代码结束 PV */

/* 私有函数原型 --------------------------------------------- --*/
void SystemClock_Config(void);
/* 用户代码开始 PFP */

/* 用户代码结束 PFP */

/* 私人用户代码 --------------------------------------------- ------------*/
/* 用户代码开始 0 */

/* 用户代码结束 0 */

/**
  * @brief 应用程序入口点。
  * @retval 整数
  */
int main(void)
{
  /* 用户代码开始 1 */

  /* 用户代码结束 1 */

  /* MCU配置---------------------------------------------- ----------*/

  /* 重置所有外设,初始化 Flash 接口和 Systick。*/

  /* 用户代码开始初始化 */

  /* 用户代码结束初始化 */

  /* 配置系统时钟 */
  SystemClock_Config();

  /* 用户代码开始 SysInit */

  /* 用户代码结束系统初始化 */

  /* 初始化所有配置的外设 */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* 用户代码开始 2 */

  /* 用户代码结束 2 */

  /* 无限循环 */
  /* 用户代码开始时 */
  而 (1)
  {
    /* 用户代码结束时 */

    /* 用户代码开始 3 */
   rt_thread_mdelay(1000);//必须强制否决者FISH不显示
  }
  /* 用户代码结束 3 */
}
使用腻子连接一个,FISH成功  界面后记  :在编译过程中出现如下所示:经在RT-螺纹官方技术交流群1里咨询,得到后来的支持,特别感谢黄洋界和杰克为我指点,最后黄洋界的方法是,  在工程栏上那个文件精美,该文件类型不是具体的 选择语言文件

  
  

  



  
  

  

  


  
  

  

  

  
  

  

  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分