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 ...
随机推荐
- 无人不识又无人不迷糊的this
本文分享自华为云社区<3月阅读周·你不知道的JavaScript | 无人不识又无人不迷糊的this>,作者: 叶一一. 关于this this关键字是JavaScript中最复杂的机制之 ...
- 一行代码 python 证件照换底色
安装所需模块 pip install OpenCV-python pip install cvzone pip install mediapipe 代码 import cv2 import cvzon ...
- SSH和SFTP是否相同
SSH和SFTP是否相同?SSH和SFTP是经典的对.在确保通信安全方面,它们交织在一起,尽管它们具有类似的功能,但它们并不是一回事.那么,它们之间有什么区别?请仔细阅读,找出答案. 什么是SSH? ...
- KingbaseES V8R6运维案例之---数据库resetwal后启动失败
KingbaseES V8R6运维案例之---数据库resetwal后启动失败 案例说明: KingbaseES V8R6集群触发failover切换后,原主库自动recovery失败,现在需要将原主 ...
- KingbaseES变更表结构表重写问题
在实际项目使用数据库的过程中修改字段类型这类需求比较常见. 一.修改表字段类型需要知道: 1.修改表结构可能会导致表进行重写(表OID发生变化). 2.修改表结构带有索引或者字段类型长度或者精度操作时 ...
- KingbaseES V8R3数据库运维案例之---不完整的启动包(incomplete startup packet)复现
案例说明: 在KingbaseES V8R3数据库的sys_log日志中,出现以下故障信息"不完整的启动包(incomplete startup packet)"日志信息.本案例复 ...
- 面试题,关于int类型转byte类型结果溢出
1 package com.atguigu.chapter03 2 /* 3 byte:-128~127 4 128 : Int类型,占4个字节,32位 5 计算机中的整型数据都以补码的形式存储,正数 ...
- Jetty的模块
查看模块的列表,执行如下命令: java -jar $JETTY_HOME/start.jar --list-modules 启用模块,比如http模块,执行如下命令: java -jar $JETT ...
- 大咖齐聚!OpenHarmony技术峰会豪华嘉宾阵容揭晓
第一届开放原子开源基金会OpenHarmony技术峰会即将来袭 重量级嘉宾和行业大咖高能集结 展示OpenHarmony操作系统技术革新 1场主论坛.6场分论坛干货拉满 2月25日,一起解锁更多精 ...
- openGauss/MOGDB时间消耗相关视图
openGauss/MOGDB 时间消耗相关视图 本文出处:https://www.modb.pro/db/388212 数据库版本 openGauss/MOGDB-2.1.1 一.显示当前用户在各个 ...