提示:文章

文章目录

  • 前言
  • 一、背景
    • 第6章节
  • 二、
    • 2.1
    • 2.2
  • 三、
    • 3.1
  • 总结

前言

前期疑问:
本文目标:


一、背景

在家里先使用野火网盘资料里的freeRTOS源码,网盘里是v9.0.0。

J:\野火\STM32F103ZET6_霸道开发板\A盘(资料盘)\1-程序源码_教程文档\3-[野火]《FreeRTOS内核实现与应用开发实战指南》\2-FreeRTOS源码及官方参考资料\ebf_freertos_data_20211225\FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS在这里插入图片描述
新建工程在这里插入图片描述
1、在这里插入图片描述本地创建文件夹
2、在这里插入图片描述创建工程后选择芯片
3、在这里插入图片描述点击OK,关闭Manage Run-Time Environment 选项框之后,刚刚我们选择的CORE 和Startup 这两个文件就会添加到我们的工程组里面
4、在这里插入图片描述新建组并重命名并且在user文件夹和Doc文件夹中添加文件
5、在这里插入图片描述按照教程main文件中新建demo代码,编译成功
6、在这里插入图片描述根据system文件中的时钟频率更改工程的频率,改成25M。还联想到protues仿真时频率设置成72M会乱码,是不是这个原因呢?看了USART代码,syste文件中设置的宏也不是36M,而是24M或者72M

第6章节

看野火freeRTOS的资料,看到第7章 任务的定义与任务切换的实现——7.6 main 函数章节,教程写了初版最简单的多线程demo,然后想自己也照着实现工程,然后回到第3章 初识FreeRTOS——3.3 FreeRTOS 资料获取,准备通过链接(https://sourceforge.net/projects/freertos/files/FreeRTOS/)下载freeRTOS源码,但是不确定下载哪个版本,本来想下载最新版本,想了下下载BDM同版本的吧。
看BDM100的代码源码,查看下述文件:
[图片]

确定是V10.2.1,所以下载对应版本。

第6 章节
这个章节在前面新建的本地工程基础上,在freertos文件夹下新建一个include文件夹,里面放list.h文件,同时freertos文件夹新建一个list.c文件。将两个文件添加到freeRTOS/Source组中,其中list.h文件还需要在头文件中设置。
我直接从野火现有工程中拷贝文件。进入freertos文件夹下,看到除了list文件还有其他很多文件,主要是include文件夹中有不少其他文件。
[图片]

处理方法是只拷贝list文件,下面设置头文件路径。
[图片]

添加后编译正常。
下面将野火工程中main文件代码拷贝到keil,中文会乱码,设置keil以下两个项目:
[图片]

设置好后重新拷贝,中文不乱码。
重新编译后报错
[图片]

拷贝FreeRTOS.h文件到include文件夹下,编译,报错如下
[图片]

按照错误再继续添加文件,
FreeRTOSConfig.h
portable.h
添加文件后报错
[图片]

继续添加这个文件portmacro.h,编译通过
keil警告:
[图片]

查了下是因为版本授权过期。
报这个警告
[图片]

遇到“no previous extern declaration for non-static variable”错误通常意味着在代码中使用了某个变量,但是在使用它之前没有正确地声明或者定义该变量。
尝试将头文件全部添加到freertos组中,该告警继续存在。忽略,仿真调试,在for语句处打断点,将List_Item、List_Item1、List_Item2、List_Item3添加到watch窗口,全速运行查看实验结果:
[图片]

可以看到四个变量中存储的前后节点情况。
所以这个章节应该就是尝试写了个关于freertos常用的链表的demo程序,为什么freertos常用链表呢。据我了解,任务有四个状态:就绪态,运行态,阻塞态,()。其中就绪态,任务处于就绪态的时候,就是将任务放在就绪列表中。就绪列表就是一个链表,里面存了很多任务。
继续往下看。

第7章
按照第7章教程,将第7章工程main文件代码拷贝到自己的工程main文件中,编译报错,
[图片]

拷贝task.h和task.c文件。
第7章用到了程序块,按照教程在FreeRTOS.h文件中增加skTCB结构体定义。
FreeRTOS.h文件差异如下
[图片]

拷贝后configMAX_TASK_NAME_LEN宏定义报错,查看FreeRTOSConfig.h文件差异如下
[图片]

编译报错缺少文件,拷贝文件
[图片]

该文件中内容如下:
[图片]

拷贝文件后编译。
编译报错,根据错误搜索,发现portable.h文件也有差异如下
[图片]

最终指向涉及到这个文件,这个文件是第7章新增的文件,路径如下图所示
[图片]

添加文件后编译,port.c文件报错很多错误。如下图所示
[图片]

这个问题比较奇怪,之前没有遇到过,最后查了资料,看到下面这篇文章得到答案:Keil5.37版本下,使用ARMcomplier6编译__asm 函数报错的问题,解决办法如下图
[图片]

切换成下面的版本。编译之前的报错消失了,仅剩下面的一个错误。
在这里插入图片描述

根据这个错误定位到portmacro.h文件有差异。修改后编译通过。
尝试虚拟调试,将flag1和flag2加入analysis,运行出现预期效果
在这里插入图片描述

二、

2.1

2.2

三、

3.1


总结

未完待续

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

食品加工温控场景:PROFIBUS转MODBUS的温控表连接规范

在现代的工业自动化领域里,实现不同通信协议设备间无缝对接的技术日益受到重视。这不仅关乎系统整合性和效率的提升,更是实现复杂工业过程自动化的必经之路。特别是在众多的通信协议中,MODBUS和PROFIBUS这两种广泛使用的协议因其各自的优势而…

【动态规划】回文串(二)

📝前言说明: 本专栏主要记录本人的动态规划算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;&…

Ubuntu22.04.5 桌面版然后安装 VMware 17

安装 VMware 需要 GCC 12版本 标题通过 PPA 安装 这是最简单的方法,适用于大多数 Ubuntu 版本。 步骤 1:添加 PPA 仓库 sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt…

深入解析 MySQL 架构:从基础到高级

MySQL 是一款广泛使用的开源关系型数据库管理系统,以其高性能、可靠性和灵活性而闻名。无论是小型创业公司还是大型企业,MySQL 都是许多应用程序的首选数据库解决方案。本文将深入探讨 MySQL 的架构设计,帮助读者更好地理解其内部工作机制&am…

BACnet协议移植适配实现BACnet/IP和BACnet MSTP相关功能

1、从GitHub或者其他网站下载最新的协议栈源码 源码结构如图所示: 其中src是协议栈源码,可直接拿来使用,apps里面是一些功能的应用示例,有BACnet IP,BACnet MSTP,BACnet Router等功能。 2、协议栈移植完成…

Ubuntu 22.04.1 LTS 离线安装Docker(最快方法,仅需一个压缩文件和两个脚本)

作者亲测:亲测有效无bug。 利用ubuntu22.04下载完docker-27.4.1.tgz,然后按照下面方法安装。选择sudo方法。 tips:这个ubuntu22.04是迁移后的服务器的版本,不是迁移前的版本。 下载 下载地址 : https://download.docker.com/linux/static/stable/x86_…

Tkinter --按钮点击事件应用场景

第二章 事件处理 目录 第二章 事件处理 四、事件处理 4.1 按钮点击事件 4.1.1信息展示类场景 1. 静态文本说明 ​编辑 2. 动态状态显示 4.1.2.界面美化与装饰 1. 图像 / 图标展示 ​编辑 2. 分隔与布局辅助 4.1.3 交互反馈与提示 1. 操作结果提示 2. 帮助与说明文本…

计算机网络学习笔记:TCP流控、拥塞控制

文章目录 前言一、TCP流量控制1.1、案例:三次流量控制1.2、持续计时器 二、TCP拥塞控制2.1、拥塞控制的指标2.2、慢开始算法和拥塞避免算法2.3、快重传算法和快恢复算法2.4、练习 三、TCP拥塞控制与网际层拥塞控制总结 前言 TCP协议中的流量和拥塞,是两个…

【Linux】Tomcat搭建

前言 Tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 JSP JSP是一种跨平台的动态网页技术标准,可以…

Ajax 核心知识点全面总结

文章目录 Ajax 核心知识点全面总结一、Ajax 基础概念1、定义2、核心特点 二、Ajax 工作原理与核心组件1、工作流程2、XMLHttpRequest(XHR)对象 三、Ajax 请求方法与参数1、常见请求方法2、请求参数处理 四、Ajax 异步与错误处理1、异步处理2、错误处理 五…

SpinFlowSim:用于癌症组织学信息驱动的扩散MRI微血管映射的血流模拟框架|文献速递-深度学习医疗AI最新文献

Title 题目 SpinFlowSim: A blood flow simulation framework for histology-informeddiffusion MRI microvasculature mapping in cancer SpinFlowSim:用于癌症组织学信息驱动的扩散MRI微血管映射的血流模拟框架 01 文献速递介绍 在扩散磁共振成像&#xff08…

量化面试绿皮书:21. 抛硬币游戏

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。 21. 抛硬币游戏 两个赌徒正在玩一个抛硬币游戏。 赌徒A有(n1)枚均匀硬币,赌徒B有n枚均匀硬币。 Q: 如果两人同时抛掷所有硬币&a…

OpenLayers 框架体系

注:当前使用的是 ol 9.2.4 版本,天地图使用的key请到天地图官网申请,并替换为自己的key OpenLayers框架组织结构庞大,只通过官网API进行查看,对框架结构缺少一个整体、全面的看法。借助树形结构图或思维导图&#xff0…

缓存系统-基本概述

目录 一、系统概述 二、名词解释 三、淘汰策略 1、LRU 2、LFU 3、FIFO 4、TTL 5、Random 四、读写模式 1、Cache Aside(旁路缓存) 2、Write Through(直写) 3、Write Back(回写) 五、问题方案 …

基于GNU Radio Companion搭建的BPSK收发通信实验

目录 一、实验目的和要求 二、实验内容 1.Lab5 仿真设计一个BPSK的数字收发射系统 Lab6 实际使用RTLSDR解调BPSK信号 一、实验目的和要求 1.了解软FM的工作方式和原理,数字通信的码间串扰及星座图 2.掌握并正确使用RTL-SDL硬件和Gnuradio软件 3.正确使用Gnraduo软件,建…

华为OD机试-返回矩阵中非1的元素、个数/数值同化-BFS(JAVA 2025B卷)

import java.util.*;/*** author 308413* version Ver 1.0* date 2025/6/18* description 返回矩阵中非1的元素*/ public class Non1ElementInMatrix {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int N scanner.nextInt();int M scan…

Redis学习笔记——黑马点评 消息队列25-30

前言: 学习收获: Redis消息队列: 消息队列(Message Queue),字面意思就是存放消息的队列。最简单的消息队列包括3个角色: 消息队列:存储和管理消息,也被称为消息代理生…

基于Django+Vue3的草莓病害检测系统设计与实现,Web前后端分离,YOLOv8 Web目标检测系统

这里写自定义目录标题 基于DjangoVue3的草莓病害检测系统 基于DjangoVue3的草莓病害检测系统 本项目结合 YOLOv8 与 Django Vue3 ,构建了一个通用的 Web 前后端系统,便于用户进行目标检测的操作和展示,实现对图片、视频实时目标检测和摄像头…

【MFC】树控件的使用详解

目录 添加线条链接 添加折叠小按钮 设置树控件的节点和对应的图标 设置默认选中项 设置选中项切换响应函数 涉及接口介绍: 首先我们通过资源视图可以添加一个树形控件,如下: 添加线条链接 在树形控件中,有一个属性“Has…

跨境卖家警报。抽绳背包版权案立案,TRO在即速排查

近日Shenzhenshi Jingyida Trading Co., LTD委托律所Dewitty And Associates, Chtd.对其热销的抽绳设计多功能运动背包发起跨境版权维权,保护范围涵盖产品外观设计。 案件基本情况: 起诉时间:2025-6-12 案件号:25-cv-06509 原…