Nucleo-F411RE (STM32F411)LL库体验 9 - RT-Thread nano的移植

news2024/11/15 8:13:35

Nucleo-F411RE (STM32F411)LL库体验 9 - RT-Thread nano的移植

1、RT-Thread下载

这一节基于rt-thread nano版本,进行内核的移植,不包含任何组件。移植成功后,可创建任务,串口输出RT-Thread版本信息。
在这里插入图片描述

2、RT-Thread移植(基于GCC)

首先找一个模版工程

我是用的这第二节课程RCC的那个源码,因为这个工程最简单,只初始化了一个led,系统时钟,以及滴答定时器。这样移植后出现问题,也好方便排查。
RT-Thread源码解压后,我们只需要将下面几个目录copy到我们的工程中。
在这里插入图片描述
componments目录这一节没有用到,后面会用。
src 内核源码
includ 头文件
libcpu 因为stm32F411是m4内核,所以我们只需要arm/cortex-m4那个文件夹即可。

在RCC目录下新建device/rt-thread目录,将上面四个文件夹进去。
如下:
在这里插入图片描述

修改Makefile,将rh-thread源码编译进去。

在这里插入图片描述
在这里插入图片描述
注意这里.S要改成.s

在这里插入图片描述

编译问题修改

在这里插入图片描述
我们从源码bsp下copy一个rtconfig.h放到RCC/User目录下。

在这里插入图片描述
在这里插入图片描述
CFLAG += -Wa,-mimplicit-it=thumb
在这里插入图片描述
在这里插入图片描述
屏蔽掉stm32f4xx_it.c中这两个回调函数。

在这里插入图片描述
在这里插入图片描述
关于systick定时器我放到了board.c里面,所以这里就不用写了。

这样应该就可以编译过了,如果有问题,请留言吧。

创建board.c文件

完善rt_hw_board_init函数。这个函数开机是这样调用的。
startup_stm32f411xe.s中 bl main我们需要改成bl entry。
在这里插入图片描述
entry的定义在component.c中
在这里插入图片描述
在这里插入图片描述
rt_hw_board_init函数我们初始化我们之前那些硬件就好,比如时钟,串口,systick,led等。
在这里插入图片描述
我这里就写了Board_Init();另外我在rtconfig.h中打开了RT_USING_HEAP这个宏,这是动态创建任务的宏定义,系统默认创建任务用的是静态创建方式。
所以要初始化heap。

初始化systick,一定要开启中断。在中断函数里调用rt-thread的节拍函数。
在这里插入图片描述
滴答定时器初始化。
在这里插入图片描述
在这里插入图片描述

使用rt_kprintf打印

要重写rt_hw_console_output函数,换成自己的串口发送函数。
在这里插入图片描述
这样开机就会有rt-thread version的log。
在这里插入图片描述

创建任务

在这里插入图片描述
另外
注意main函数要返回,不能跟freertos那样,写个while循环。开始我写成while死循环,任务一直创建不成功,查了好久才找到原因。
在这里插入图片描述

代码

代码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/659252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Nginx】Nginx操作命令

Nginx操作命令 1.Nginx原生命令1.1 官方文档1.2 找到命令执行文件1.3 介绍基本操作命令1.3.1 命令帮助1.3.2 启动Nginx1.3.3 Nginx停止、重新加载配置文件:-s signal1.3.4 Nginx查看版本、测试配置文件正确性:-s signal 2.使用系统控制命令 systemctl3.补…

【Unity3D】激光雷达特效

1 由深度纹理重构世界坐标 屏幕深度和法线纹理简介中对深度和法线纹理的来源、使用及推导过程进行了讲解,本文将介绍使用深度纹理重构世界坐标的方法,并使用重构后的世界坐标模拟激光雷达特效。 本文完整资源见→Unity3D激光雷达特效。 1)重构…

C++linux高并发服务器项目实践 day12

Clinux高并发服务器项目实践 day12 socket介绍字节序字节序转换函数 socket地址IP地址转换(字符串ip-整数,主机、网络字节序的转换)TCP通信流程套接字函数TCP三次握手TCP滑动窗口TCP四次挥手 socket介绍 socket是网络环境中进程间通信的API,也是可以被命…

CAPL如何仿真ARP报文

文章目录 前言一、环境搭建二、IG生成器仿真ARP报文三、CAPL仿真ARP报文前言 随着智能电动汽车的普及,车载以太网的应用逐渐广泛,所以在汽车电子台架测试过程中,免不了仿真模拟发送以太网报文,本文就介绍两种方法模拟仿真发送以太网ARP报文。 一、环境搭建 CANoe安装 VN5…

FPGA时序约束--实战篇(Vivado添加时序约束)

前面几篇文章已经详细介绍了FPGA时序约束基础知识以及常用的时序约束命令,相信大家已经基本掌握了时序约束的方法。 今天介绍一下,如何在Vivado中添加时序约束,Vivado添加约束的方法有3种:xdc文件、时序约束向导(Cons…

vue基础-全选,使用计算属性 和 every遍历数组的返回值 true or false

购物车--计算购物车价格 1、计算属性--只要被依赖的数据 发生变化,结果就会变化 2、全选实现 根据选项,动态计算出布尔值,通过计算属性 得到布尔值: 通过every遍历数组list,只要所有 都满足 item > item.goods_s…

递推算法介绍

递推算法 给定一个数的序列H0,H1,…,Hn,…若存在整数n0&#xff0c;使当n>n0时,可以用等号(或大于号、小于号)将Hn与其前面的某些项Hi(0<i<n)联系起来&#xff0c;这样的式子就叫做递推关系。 递推算法是一种简单的算法&#xff0c;即通过已知条件&#xff0c;利用特…

CVPR 2023|EfficientViT:让ViT更高效部署实现实时推理(附源码)

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/pdf/2305.07027.pdf 项目代码&#xff1a;https://github.com/microsoft/Cream/tree/main…

打通B端企业私域运营体系:海康威视企业公众号矩阵一探究竟

B端企业私域运营体系的打造需要全新的思路和流程重构&#xff0c;要紧紧围绕B端客户的需求和特性来构建矩阵号&#xff0c;而且要时刻意识到与C端私域运营的巨大差异。 B端企业的获客是一个大部分企业都十分关注但难以提升的部分&#xff0c;传统B端企业的营销以百度等在线渠道…

candence:常见表贴焊盘绘制举例

常见表贴焊盘绘制举例 一、先来看看X7R电容的相关信息 以贴装瓷片电容X7R系列为例 1、误差范围&#xff1a; 2、尺寸大小 3、推荐焊盘尺寸 二、绘制 0603 (inch) 电容的焊盘 下面开始绘制焊盘&#xff1a; 1、 双击打开Pad Designer 2、设置单位等。 3、 点击"LAYER&…

GeSciLiVis | 想知道你感兴趣的基因有多少人在研究吗!?用这个包来解决吧!!!~

1写在前面 天气好热啊&#xff0c;我这里还下着大暴雨&#xff01;~&#x1f625; 不知道各位小伙伴那里的温度怎么样&#xff0c;端午临近&#xff0c;各位有假期吗&#xff01;&#xff1f;&#x1f618; 换组后工作轻松了不少&#xff0c;也有时间做点自己的事情了。&#x…

JDK8-2-流(2.1)- 流操作-distinct

JDK8-2-流&#xff08;2.1&#xff09;- 流操作-distinct 去重操作&#xff0c;如下开头两个菜品一样&#xff0c;对 menu 去重如下&#xff1a; public class DishDistinctTest1 {public static final List<Dish> menu Arrays.asList(new Dish("pork", fal…

如何白嫖一年CSDN会员?618活动!亲测有效!!!

活动详情 CSDN会员免费送一年&#xff0c;仅剩3天&#xff01; 下载权益同样延长一年&#xff01; 一年一次的机会&#xff0c;走过不要错过&#xff01; 博主已经领取到了&#xff01; 会员权益 1、修改专属域名&#xff0c;别人都是https://blog.csdn.net/qq_xxxxxxxx&…

用ipad2022款pro平板和平精英吃鸡120帧是种什么体验

用ipad2022款pro平板和平精英吃鸡120帧是种什么体验&#xff0c;平板玩游戏把把吃鸡的秘密#和平精英 #吃鸡 #我眼中的电子竞技 和平精英 微信游戏 怎么很多小伙伴都准备入手二款的 iPad Pro&#xff0c;绝大多数小伙伴都是冲着这个吃鸡来的&#xff0c;咱们今天就看一下新款平…

AI绘图新玩法「艺术风二维码」保姆级教程分享,注册账号就能玩,一分钟出图,定制自己的二维码!

大家好&#xff0c;我是卷了又没卷&#xff0c;薛定谔的卷的AI算法工程师「陈城南」~ 担任某大厂的算法工程师&#xff0c;带来最新的前沿AI知识和工具&#xff0c;包括AI相关技术、ChatGPT、AI绘图等&#xff0c;欢迎大家交流~。 最近AI绘图界又出了一个现象级的玩法&#xf…

FPGA基础知识-开关级建模

目录 学习目标 学习内容 1.MOS开关 2.CMOS开关 3.双向开关 4.电源和地 5.阻抗开关 6.开关中的延迟说明 学习时间 学习总结 学习目标&#xff1a; 提示&#xff1a;这里可以添加学习目标 1.能够描述基本 MOS开关:nmos.pmos和cmos。 2.理解双向传输开关、电源和地的建…

webpack配置preload和prefetch预加载技术

我们前面已经做了代码分割&#xff0c;同时会使用 import 动态导入语法来进行代码按需加载&#xff08;我们也叫懒加载&#xff0c;比如路由懒加载就是这样实现的&#xff09;。 但是加载速度还不够好&#xff0c;比如&#xff1a;是用户点击按钮时才加载这个资源的&#xff0…

【第二次】21级计科计算机组成原理课外练习

【第二次】21级计科计算机组成原理课外练习 一、单选题二、填空题 一、单选题 2-1 设计算机字长 8位&#xff0c;设x -10, [x]补 为 ( ) A.F0H B.E6H C.FAH D.F6H 2-2 对字长为8位的二进制代码10110110&#xff0c;下列说法错误的是&#xff08;&#xff09;。 A.如果代码为…

主流通信协议详解、二进制协议和文本协议的区别和使用场景

二进制协议和文本协议的特征和使用场景 二进制协议和文本协议具有不同的特征和适用场景&#xff1a; 二进制协议的特征&#xff1a; 数据表示&#xff1a;使用二进制编码来表示数据&#xff0c;以字节为单位进行传输。效率&#xff1a;由于数据以原始二进制形式传输&#xff…

年龄越来越大,技术人究竟该往哪个方向提升?(很多人都有这个困惑)

【1】 有位匿名朋友&#xff0c;在星球中提问&#xff1a; 想咨询一下沟通交流能力应该如何培养。平时遇到问题话到嘴边不会说&#xff0c;或者说出来的和开始想的不一致&#xff0c;请沈总赐教。 分享下自己的实践&#xff1a; 首先&#xff0c;充分准备。 我在和老板&#xf…