HAL库移植RT-Thread Nano
一、移植RT-Thread Nano准备
- keil软件
- CubeMx软件
STM32 CubeMx使用教程:https://www.cnblogs.com/jzcn/p/16313803.html - 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>
静态线程测试
创建线程函数
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);
}
}
如下图所示:

在面函数中调用线程
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)延时,防止主线程被杀死
动态线程测试
需要在rtconfig.h文件中取消RT_USING_HEAP宏的屏蔽

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


编译后下载测试即可,如果led能正常闪烁说明移植RT-Thread成功
HAL库移植RT-Thread Nano的更多相关文章
- STM32 之 HAL库(固件库) _
1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...
- STM32 之 HAL库(固件库)
1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...
- 【HAL库每天一例】freemodbus移植
例程下载:资料包括程序.相关说明资料以及软件使用截图 百度云盘:https://pan.baidu.com/s/1slN8rIt 密码:u6m1 360云盘:https://yunpan.cn/OcP ...
- STM32 HAL库详解 及 手动移植
源: STM32 HAL库详解 及 手动移植
- STM32标准外设库、 HAL库、LL库
工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常用的库,后面的LL库是ST最近才添加,目前支持的 ...
- STM32F407 使用HAL库延时微妙实现方法(附CubeMX配置过程)
STM32F407 使用HAL库延时微妙实现方法(STM32CubeMX配置) 作者 : 李剀出处 : https://www.cnblogs.com/kevin-nancy/p/10696681.h ...
- 【书籍连载】《STM32 HAL 库开发实战指南—基于F7》-第一章
从今天起,每天开始连载一章<STM32 HAL 库开发实战指南—基于F7>.欢迎各位阅读.点评.学习. 第1章 如何使用本书 1.1 本书的参考资料 本书参考资料为:<STM32 ...
- 【安富莱】V6,V5开发板用户手册,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔(2019-11-04)
说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.本次工程延续以往的代码风格,从底层BSP驱动包到应用代码,变量命名,文件 ...
- 【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至63章(2019-07-21)
说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.由于是基于HAL库的文档,所以不限制H7系列,其它F1,F2,F3,F4 ...
- 新建基于STM32F103ZET6的工程-HAL库版本
1.STM32F103ZET6简介 STM32F103ZET6的FLASH容量为512K,64K的SRAM.按照STM32芯片的容量产品划分,STM32F103ZET6属于大容量的芯片. 2.下载HA ...
随机推荐
- Python机器学习笔记:CART算法实战
完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 前言 在python机 ...
- Finereport11 类Excel筛选
微信公众号:次世代数据技术 关注可了解更多的教程.问题或建议,请公众号留言或联系本人; 微信号:weibw162 本教程视频讲解可以关注本人B站账号进行观看:weibw162 一.需求描述 在使用FI ...
- C语言线程安全问题
线程安全问题 #include <stdio.h> #include <tinycthread.h> #include <io_utils.h> int count ...
- Emmet Documentation ( Abbreviations+CSS Abbreviations )
Emmet Documentation Emmet - the essential toolkit for web-developers Abbreviations Abbreviations Syn ...
- #树状数组,线段树,离散#JZOJ 3854 分组
题目 Bsny所在的精灵社区有\(n\)个居民,每个居民有一定的地位和年龄,\(r_i\)表示第\(i\)个人的地位,\(a_i\)表示第\(i\)个人的年龄. 最近社区里要举行活动,要求几个人分成一 ...
- #2-SAT,Tarjan,前缀优化建边#洛谷 6378 [PA2010]Riddle
题目 \(n\) 个点 \(m\) 条边的无向图被分成 \(k\) 个部分.每个部分包含一些点. 请选择一些关键点,使得每个部分恰有一个关键点,且每条边至少有一个端点是关键点. 分析 每条边至少有一个 ...
- Jetty的工作参数
Jetty加载参数的优先级: 命令行. $JETTY_BASE下的文件. 使用--include-jetty-dir指定的目录下的文件. $JETTY_HOME下的文件. 查看当前的配置参数,执行如下 ...
- web.xml最新配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmln ...
- 【直播预告】HarmonyOS极客松赋能直播第二期:数据库与网络连接开发
- CentOS GNOME桌面下安装截图工具gnome-screenshot
CentOS GNOME桌面下安装截图工具gnome-screenshot 1.光盘安装 (1).把镜像光盘放进电脑 (2).切换到 Packages (3).[root@localhost Pack ...