一、移植RT-Thread Nano准备

  1. keil软件
  2. CubeMx软件

    STM32 CubeMx使用教程:https://www.cnblogs.com/jzcn/p/16313803.html
  3. STM32开发版

    我使用的是STM32F103C8T6。

二、使用CubeMx生成HAL库

这里就以最简单的LED程序作为移植工程,由于使用CubeMx生成HAL库生成比较简单,这里就不详细说明了,有不明白的地方可以参考STM32 CubeMx使用教程

三、添加RT-Thread Nano



如果找不到RT-Thread Nano,可以在Pack Installer中安装

四、屏蔽SystemClock_Config函数的调用

系统时钟已经在RT-Thread中完成了初始化,所以在mian中就不用再次进行系统时钟的初始化,否则RT-Thread无法正常运行,只需在mian函数中屏蔽SystemClock_Config函数的调用即可,如下图所示:

五、 错误处理

编译后会有如下错误提示

解决办法

  • 将stm32f1xx_it.c文件中的void HardFault_Handler(void)、void PendSV_Handler(void)、void SysTick_Handler(void)三个方法屏蔽即可

  • 或者在CubeMX生成代码时将,取消这三个函数模板的生成,如下图所示:



    处理完成后编译即可

六、编写测试程序需

由于需要使用RT-Thread中的函数,所以在需要在使用到的地方加入头文件rtthread.h。

#include <rtthread.h>

静态线程测试

  1. 创建线程函数

    static struct rt_thread led_thread;
    static char led_thread_stack[256]; static void led_thread_entry(void *parameter)
    {
    while (1)
    {
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
    rt_thread_mdelay(500); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);
    rt_thread_mdelay(500);
    }
    }

    如下图所示:

  2. 在面函数中调用线程

    rt_err_t rst;
    rst = rt_thread_init(&led_thread,
    "ledshine",
    led_thread_entry,
    RT_NULL,
    &led_thread_stack[0],
    sizeof(led_thread_stack),
    RT_THREAD_PRIORITY_MAX - 2,
    20); if (rst == RT_EOK)
    {
    rt_thread_startup(&led_thread);
    }

    如下图所示:



    注意: 需要在mian函数中加入rt_thread_startup(&led_thread)延时,防止主线程被杀死

动态线程测试

  1. 需要在rtconfig.h文件中取消RT_USING_HEAP宏的屏蔽

  2. 将静态调用的程序修改一下,不用修改线程函数,如下图所示



编译后下载测试即可,如果led能正常闪烁说明移植RT-Thread成功

HAL库移植RT-Thread Nano的更多相关文章

  1. STM32 之 HAL库(固件库) _

    1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...

  2. STM32 之 HAL库(固件库)

    1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...

  3. 【HAL库每天一例】freemodbus移植

    例程下载:资料包括程序.相关说明资料以及软件使用截图 百度云盘:https://pan.baidu.com/s/1slN8rIt 密码:u6m1 360云盘:https://yunpan.cn/OcP ...

  4. STM32 HAL库详解 及 手动移植

    源: STM32 HAL库详解 及 手动移植

  5. STM32标准外设库、 HAL库、LL库

    工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常用的库,后面的LL库是ST最近才添加,目前支持的 ...

  6. STM32F407 使用HAL库延时微妙实现方法(附CubeMX配置过程)

    STM32F407 使用HAL库延时微妙实现方法(STM32CubeMX配置) 作者 : 李剀出处 : https://www.cnblogs.com/kevin-nancy/p/10696681.h ...

  7. 【书籍连载】《STM32 HAL 库开发实战指南—基于F7》-第一章

    从今天起,每天开始连载一章<STM32 HAL 库开发实战指南—基于F7>.欢迎各位阅读.点评.学习. 第1章  如何使用本书 1.1  本书的参考资料 本书参考资料为:<STM32 ...

  8. 【安富莱】V6,V5开发板用户手册,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔(2019-11-04)

    说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.本次工程延续以往的代码风格,从底层BSP驱动包到应用代码,变量命名,文件 ...

  9. 【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至63章(2019-07-21)

    说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.由于是基于HAL库的文档,所以不限制H7系列,其它F1,F2,F3,F4 ...

  10. 新建基于STM32F103ZET6的工程-HAL库版本

    1.STM32F103ZET6简介 STM32F103ZET6的FLASH容量为512K,64K的SRAM.按照STM32芯片的容量产品划分,STM32F103ZET6属于大容量的芯片. 2.下载HA ...

随机推荐

  1. Python机器学习笔记:CART算法实战

    完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 前言 在python机 ...

  2. Finereport11 类Excel筛选

    微信公众号:次世代数据技术 关注可了解更多的教程.问题或建议,请公众号留言或联系本人; 微信号:weibw162 本教程视频讲解可以关注本人B站账号进行观看:weibw162 一.需求描述 在使用FI ...

  3. C语言线程安全问题

    线程安全问题 #include <stdio.h> #include <tinycthread.h> #include <io_utils.h> int count ...

  4. Emmet Documentation ( Abbreviations+CSS Abbreviations )

    Emmet Documentation Emmet - the essential toolkit for web-developers Abbreviations Abbreviations Syn ...

  5. #树状数组,线段树,离散#JZOJ 3854 分组

    题目 Bsny所在的精灵社区有\(n\)个居民,每个居民有一定的地位和年龄,\(r_i\)表示第\(i\)个人的地位,\(a_i\)表示第\(i\)个人的年龄. 最近社区里要举行活动,要求几个人分成一 ...

  6. #2-SAT,Tarjan,前缀优化建边#洛谷 6378 [PA2010]Riddle

    题目 \(n\) 个点 \(m\) 条边的无向图被分成 \(k\) 个部分.每个部分包含一些点. 请选择一些关键点,使得每个部分恰有一个关键点,且每条边至少有一个端点是关键点. 分析 每条边至少有一个 ...

  7. Jetty的工作参数

    Jetty加载参数的优先级: 命令行. $JETTY_BASE下的文件. 使用--include-jetty-dir指定的目录下的文件. $JETTY_HOME下的文件. 查看当前的配置参数,执行如下 ...

  8. web.xml最新配置文件

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmln ...

  9. 【直播预告】HarmonyOS极客松赋能直播第二期:数据库与网络连接开发

  10. CentOS GNOME桌面下安装截图工具gnome-screenshot

    CentOS GNOME桌面下安装截图工具gnome-screenshot 1.光盘安装 (1).把镜像光盘放进电脑 (2).切换到 Packages (3).[root@localhost Pack ...