RT_Thread_内核包版本与芯片包版本不一致的编译报错排查

按时间线写的,建议看完,因为中间有的步骤不必重蹈覆辙。

1、安装RT_Thread Studio、STM32F4的SDK,新建工程编译报错error: 'struct serial_configure' has no member named 'flowcontrol'

1.1、报错含义

结构体struct serial_configure没有flowcontrol成员。

1.2、报错分析

报错代码所属的文件是STM43F4芯片SDK,但是类型定义struct serial_configure属于内核代码,内核的版本太低了。

1.3、解决方案

1.3.1、修改代码

不需要串口流控,注释掉报错的这段。(可以但不想这么做)

 1.3.2、更新内核版本

打开SDK管理器,找到“RT-Thread_Source_Code”,可以看到默认安装的是4.0.3和4.0.2版本,然后下载最新版5.0.2.

2、使用最新内核5.0.2,报错error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'

2.1、报错含义

void前有错误,缺少=,;asm __attribute__

2.2、报错分析

void前是RT_WEAK,编译器不认识,所以报错。

对比刚才的工程却没报这个错,现在内核是5.0.2,说明啥,内核又太新了,这个RT_WEAK在5.0.2中有改动。

2.3、解决方案

2.3.1、修改代码1——去掉RT_WEAK

RT_WEAK代表的是弱定义的函数,如果用户在别的地方重写就不调用RT_WEAK的这个函数,如果没有重写,因为有弱定义的函数也不会报错;

去掉RT_WEAK,需要自定义函数的时候就注释掉原来的,重新写,不冲突就行。

2.3.2、修改代码2——找到现在内核的弱定义

Ctrl+H,在工程中直接搜索“RT_WEAK”试试看,这个操作不一定成功,因为不知道改动成什么了,如果“RT_WEAK”搜不到我可能会尝试搜索“weak”。

可以看到内核中使用的是小写的rt_weak,但是芯片SDK使用的是大写的RT_WEAK,这就是错误的原因。

不想去修改内核的代码,那么可以:

  • 直接将报错的RT_WEAK改为小写的rt_weak;
  • 或者再加一个宏定义,#define RT_WEAK rt_weak,可以放在头文件board.h里;

2.3.3、找到匹配的内核包

其实在芯片SDK的“描述”里有写,只是没看英文,使用STM32F4_0.2.3需要更新内核为4.1.0;

3、扩展

更新是有规范的,官网能找到更新的记录,顺便也可以看看别的地方的更新内容,为下次报错做准备。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

导致Facebook广告投放不成功的原因

Facebook是全球最大的社交媒体平台之一,也是众多跨境卖家选择广告投放的首选平台,但也还是会有很多跨境卖家在Facebook上推广效果不佳。那么本文小编讲一下导致Facebook广告投放不成功的原因以及相应解决方法。 1、受众群体太少 Facebook有个要求就是广告…

C++:C++11新特性---右值引用

文章目录 初始化方式显示查看类型initializer_listdecltype左值引用和右值引用move左右值引用的场景 万能引用和完美转发 本篇总结C11新特性 初始化方式 C11对参数列表的初始化有了更明确的定义,可以这样进行定义 // 列表初始化 void test1() {// 旧版本int x 0…

VBA高级应用30例:Ribbon(功能区)的介绍

《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以…

基于SSM的零食物语购物商城的设计与实现

基于SSM的零食物语购物商城的设计与实现 摘要:“日常网购”作为一种比传统购物更便捷的方式,越来越受到大众的欢迎和认可。因此,系统的设计和应用技术对零食购物商城网站的要求越来越高,于是本系统应运而生。基于SSM[1]的零食购物…

linux CentOS MobaXterm 通过X11 Forwarding 在本地开启图形可视化窗口

第一步 操作系统安装图形界面 X11 Forwarding dnf install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock第二步 修改参数,启用X11 Forwarding vim /etc/ssh/sshd_config修改参数X11Forwarding yes和X11UseLocalhost no #Al…

苹果mac屏幕投屏镜像工具AirServer2024

airserver 是什么软件?AirServer 是一款 Airplay Mac屏幕镜像应用,AirServer可以通过 mac 实时接收iPhone、iPad以及Android设备的实时屏幕画面。AirServer 可以将一个简单的大屏幕或投影仪变成一个通用的屏幕镜像接收器。在您的大屏幕上启用 AirServer …

Vue快速实践总结 · 下篇

文章目录 组件间通信方式父 --> 子通信props插槽 子 --> 父通信(自定义事件)任意组件通信全局事件总线消息订阅与发布 Vuex工作原理运行环境简单使用GettersmapState与mapGettersmapActions与mapMutations模块化 命名空间 VueRouter路由的作用与分…

什么是软件成分分析(SCA)?

来源:艾特保IT 虹科干货 | 什么是软件成分分析(SCA)? 欢迎关注虹科,为您提供最新资讯! 大家或许都发现了,开发人员愈发依赖开源代码来快速为其专有软件添加功能。据估计,开源代码占…

NX二次开发UF_MTX3_x_vec 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_MTX3_x_vec Defined in: uf_mtx.h void UF_MTX3_x_vec(const double mtx [ 9 ] , double x_vec [ 3 ] ) overview 概述 Returns the X-direction vector of a matrix. 返回矩阵…

flutter 文本不随系统设置而改变大小[最全的整理]

文本不随系统设置而改变大小[三] 前言方案十三:使用Flexible方案十四:使用MediaQueryData的textScaleFactor属性方案十五:使用FractionallySizedBox方案十六:使用自定义文本样式方案十七:使用自定义绘制(Cu…

直播场景视频和特效解决方案

直播已经成为企业与消费者互动的重要方式,如何提供优质的直播内容,提升直播效果,以及实现直播内容的商业化转化,一直是企业面临的重要挑战。为此,美摄科技提供了一套全面的直播场景解决方案,帮助企业解决这…

业务流程图用什么软件绘制?

在企业的日常工作中,对于业务流程的把控和优化显得非常重要。为了更好地理解和管理业务流程,业务流程图便应运而生。 业务流程图是企业管理的图形化工具,它描述了企业在生产和服务提供过程中,在各个环节中所涉及的各种操作、任务…

NX二次开发UF_MTX3_rotate_about_axis 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_MTX3_rotate_about_axis Defined in: uf_mtx.h void UF_MTX3_rotate_about_axis(const double rotation_axis [ 3 ] , double rotation_angle, double mtx [ 9 ] ) overview 概述…

Kanna库代码示例

编写一个使用Kanna库的网络爬虫程序。以下是代码的详细解释: swift import Kanna // 创建一个对象 let proxy Proxy(host: ") // 创建一个Kanna对象 let kanna Kanna(proxy: proxy) // 创建一个请求对象 let request Request(url: "") // 使用…

更快更稳的剃须伙伴,DOCO黑刃电动剃须刀体验

现在的电动剃须刀选择很多,我觉得三刀头的旋转式剃须刀很好用,比如我目前用的这款DOCO黑刃剃须刀,在剃须效率、舒适度和易用性等方面都表现不错,很适合日常使用。 这款剃须刀采用磁吸式刀头,这一设计非常方便清洁与更换…

软件测试面试时问你的项目经验,你知道该怎么说吗?

很简单,我来给你们一个公式 0 自我介绍,名字 学历 荣誉。 1 简述项目背景,你身处这个项目是做什么的。 不要太细,试着引导一下面试官让他提问。这样,请问您对此有什么疑问吗? 2 简述 你在项目中的角色&…

vue3中的Fragment、Teleport、Suspense新组件

Fragment组件 在Vue2中: 组件必须有一个根标签 在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中 好处: 减少标签层级, 减小内存占用 <template><div style"font-size: 14px;"><p> 组件可以没有根标签</p&g…

C语言——输入 10 个数,分别统计其中正数、负数、零的个数

#include <stdio.h> int main() {int numbers[10]; // 存储输入的10个数int positive_count 0; // 正数计数器int negative_count 0; // 负数计数器int zero_count 0; // 零计数器// 输入10个数printf("请输入10个数&#xff1a;\n");for (int i 0; i …

【计算机网络笔记】ARP协议

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

神经网络可视化——基于torchviz绘制模型的计算图

神经网络可视化——基于torchviz绘制模型的计算图 第一步、安装 graphviz 和 torchviz 库 第二步、编写代码生成计算图 第三步、安装graphviz软件 在深入理解深度学习模型时&#xff0c;可视化网络结构是一个非常有用的手段。今天介绍如何使用 torchviz 和 graphviz 来生成网…