使用该方式,能够去除繁琐的添加库文件与添加头文件路径,大大简化了RT-Thread的移植。

1.在keil安装RT-Thread:在keil快捷面板上点击pack Installer按钮,在弹出的 窗口中找到Pack页面下的RealThread,如下图所示。

2. 使用Project->new uVision Project创建工程,设置工程名字,保存工程路径后选择芯片型号。

3. 接下来在Manage Run-Time Environment界面配置使用的库,配置使用RT-Thread与stm32cubemx,如下图 所示,点击OK后,就会自动添加RT-Thread代码。

4.配置好后,点击ok按钮,会弹出如下选择框,点击Start STM32CubeMX启动软件。

5. 进入Stm32CubeMX可以发现工程已经自动创建好了,我们需要进行必要的配置。
   首先系统正常运行必须需要时钟,使用选择HSE(根据自己的硬件选择)。

6. 再依次配置LED控制引脚与USART1(这里省略)。

             

7.进入Clock configuration页面,配置HCLK为最大的216MHz

8. 进入Project Manager页面,配置工程路径,工程名,堆栈大小,使用的IDE等,尤其是可以在Advanced setting中配置使用HAL库还是使用LL库,如下图所示

9 在Project 页面还有一项非常重要的配置,Toolchain/IDE一定要选择GPDSC,否则keil工程会编译出错,说找不到gpdsc文件

10. 点击“GENERATE CODE”按钮生成代码工程

11. 修改stm32f7xx_it.c文件

该文件主要屏蔽下面四个中断,因为这几个中断需要被RT-Rhread使用。

  • HardFault_Handler
  • MemManage_Handler
  • PendSV_Handler
  • SysTick_Handler

12 修改board.c文件

由于我们使用stm32cubemx对stm32f7进行配置,一些初始化配置都有自动生成。所以该文件中对于时钟的设置部分都可以注释掉,修改后的文件如下:

#include <rthw.h>
#include <rtthread.h>#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
#define RT_HEAP_SIZE 1024
static uint32_t rt_heap[RT_HEAP_SIZE];  // heap default size: 4K(1024 * 4)
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/*** This function will initial your board.*/
void rt_hw_board_init()
{   /* Call components board initial (use INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INITrt_components_board_init();
#endif#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#endif
}void SysTick_Handler(void)
{/* enter interrupt */rt_interrupt_enter();rt_tick_increase();/* leave interrupt */rt_interrupt_leave();
}

13 rtconfig.h文件修改

该文件为配置文件,这里不详细介绍,只讲一些常用的

宏定义 说明
RT_THREAD_PRIORITY_MAX 该宏定义了最多支持多少个优先级,根据需要设置。
RT_TICK_PER_SECOND 定义了每秒有多少个Tick,一般设置为1000。
RT_NAME_MAX 内核对象名字的最大长度,根据需要配置
RT_DEBUG_INIT 调试配置
RT_USING_TIMER_SOFT 是否使用软件定时器,一般需要打开
RT_USING_SEMAPHORE 内部通讯配置,互斥量,时间,邮箱等配置,一般需要打开
RT_USING_HEAP 是否使用堆,使用动态线程时必须打开,一般需打开

14  到了这里已经可以编译通过了,下面新建一个简单的任务

在man.c中适当的位置添加如下代码,就可以运行一个led闪烁任务了

static struct rt_thread led1_thread;/* 定义线程控制块 */
ALIGN(RT_ALIGN_SIZE) static rt_uint8_t rt_led1_thread_stack[1024];/* 定义线程栈 *//** 开发板硬件初始化,RTT 系统初始化已经在 main 函数之前完成,* 即在 component.c 文件中的 rtthread_startup()函数中完成了。* 所以在 main 函数中,只需要创建线程和启动线程即可。*/rt_thread_init(&led1_thread,        /* 线程控制块 */"led1",             /* 线程名字 */led1_thread_entry,  /* 线程入口函数 */RT_NULL,            /* 线程入口函数参数 */&rt_led1_thread_stack[0],     /* 线程栈起始地址 */sizeof(rt_led1_thread_stack), /* 线程栈大小 */3,                  /* 线程的优先级 */20);                /* 线程时间片 */rt_thread_startup(&led1_thread); /* 启动线程,开启调度 *///任务函数
static void led1_thread_entry(void* parameter)
{while (1){HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);rt_thread_delay(500); /* 延时 500 个 tick */}
}

keil+stm32cubemx创建STM32F767芯片的RT-Thread工程相关推荐

  1. RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程

    (1)RT Thread利用STM32CUBEMX来创建模板工程 1.参考文档: 基于 CubeMX 移植 RT-Thread Nano:RT-Thread 文档中心 注意:串口2必须使能异步模式(启 ...

  2. 使用STM32CubeMX创建工程模板

    一 使用STM32CubeMX创建工程模板之目的 依稀记得,曾经使用KEIL创建工程模板,需要各种复制.配置.添加文件,过程确实较为复杂.为节约时间,我们可以使用官方工具STM32CubeMX来创建工 ...

  3. STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现

    通过STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现 本文使用了正点原子的阿波罗开发板,接下来我将粗略的对STM32F767通过STM32cubeMX ...

  4. RT Thread根据开发板制作BSP方法

    之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录.用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thr ...

  5. RT Thread之 Uart2 操作

    官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/uar ...

  6. stm32f407单片机rt thread 片外spi flash OTA升级配置示例

    参考地址https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/ 第一步,生成Boot ...

  7. MDK-Arm Keil uVision5 创建STM32工程

    一.准备工程·芯片/设备包 Step-1  安装"芯片/设备包" "Project -> Manager -> Pack Installer" ,打 ...

  8. 使用RT Thread设备框架封装一个I2C设备——DS3231

    使用RT Thread设备框架封装一个I2C设备--DS3231 前言 ENV配置 I2C测试 将ds3231封装成一个字符设备 结语 前言 学习rt thread的I2C的时候,恰巧手上的板子留了d ...

  9. react中纯函数_如何在纯React中创建电子邮件芯片

    react中纯函数 by Andreas Remdt 由Andreas Remdt 如何在纯React中创建电子邮件芯片 (How to create email chips in pure Reac ...

  10. 使用STM32CubeMX求得CPU芯片温度

    继续完成后台网友询问: 如何使用STM32CubeMX设计代码框架,然后实现CPU内置温度传感器测量CPU芯片温度,然后以串口输出的形式输出芯片的温度值,数据更新周期1000ms. STM32Cube ...

最新文章

  1. vue.js安装过程(npm安装)
  2. 和功率的计算公式_电机功率计算公式是什么?
  3. 人工智能的突破需要颠覆图灵机吗?
  4. cocos2d-x游戏实例(7)-A星算法(3)
  5. python开发gui实战_python实战GUI界面+mysql
  6. ENVI入门系列教程---一、数据预处理---4.3自定义RPC文件图像正射校正
  7. 深入浅出 Cocoa 之 Core Data(3)- 使用绑定
  8. 【数据结构系列】严蔚敏C语言版算法实现并附带详细注释(逐步更新)
  9. SQL Server 2012基本介绍
  10. C#通过LPT控制打印机——txt文档读取指令打印条码
  11. 怎么在windows文件资源管理器中打开ftp
  12. 【BDTC 2016】网络与通讯大数据论坛:大数据价值及合规性探索
  13. 飞鹅WiFi打印机配置,php调用接口
  14. Debian 下安装中文语言包和中文输入法
  15. 哈工大2019年春算法设计与分析期末复习
  16. Studing Day1 - python基础1
  17. 盛天海电商:拼多多活动怎么去定位?
  18. SpringCloud 微服务与远程调用测试
  19. ipa在线安装搭建_HBuilder如何打包ipa文件?如何获取苹果证书?
  20. 阿piu传-文档批量上传客户端-原创力版使用帮助

热门文章

  1. Swift learning part 18 - 类型转换
  2. 最少承诺原则和单一职责原则_单一责任原则
  3. mysql 归档_MySQL数据归档的几种操作方法介绍
  4. 微信公众号迁移流程和公众号迁移公证书办理步骤
  5. python 解决transform.rescale操作,本应得到彩色图像,然而所得图像为灰色图像问题
  6. 网页上的内容无法复制和下载?一行代码教你解决
  7. centos7+docker+安装mysql5.7
  8. [2019年国庆专题训练] dp专题训练
  9. java 正整数类型_跟我学java编程—认识java的整数类型
  10. 自己写了一个小小的双色球号码随机生成器