FreeRTOS理论(创建FreeRTOS工程和第一个多任务程序)
上节我们简单了解了FreeRTOS相关理论现在我们开始正式的实操我们先介绍如何在CubeMX里面创建FreeRTOS工程1.、在 SYS 选项里将 Debug 设为 Serial Wire 并且将 Timebase Source 设为 TIM4 其它定时器也行。Timebase Source 为什么不能设置为 SysTick ? 裸机的时钟源默认是 SysTick但是开启 FreeRTOS 后FreeRTOS会占用 SysTick 用来生成1ms 定时用于任务调度所以需要为其他总线提供另外的时钟源。2、将RCC里的HSE设置为Crystal/Ceramic Resonator 晶振源3.、选择 FREERTOS 选项并将 Interface 改为 CMSIS_V2 。FreeRTOS 各配置选项卡的解释Events事件相关的创建Task and Queues 任务与队列的创建Timers and Semaphores 定时器和信号量的创建Mutexes 互斥量的创建FreeRTOS Heap Usage 用于查看堆使用情况Config parameters 内核参数设置用户根据自己的实际应用来裁剪定制FreeRTOS 内核Include parameters FreeRTOS 部分函数的使能User Constants 相关宏的定义可以自建一些常量在工程中使用Advanced settings高级设置接着我们就可以开始创建第一个多任务程序在上节我们了解到了任务其实就是在内存里分配一块堆然后在堆里面分配栈即创建任务任务通常都含有while1死循环在FreeRTOS里面任务的原型如下voidStartDefaultTask(void*argument){while1{//代码逻辑}}下面示例如何创建任务voidMyTask(void*argument){while(1){Led_Test();}}xTaskCreate(MyTask,MyFirstTask,128,NULL,osPriorityNormal,NULL);上面的我们从理论那节都已经有很清晰的了解了吧ARM架构从上图我们可以看到CPU在对内存进行一些程序操作那那些操作的变量保存在CPU哪里呢我们深入CPU内部看看可以看到CPU在对内存进行读写操作时会涉及到四条汇编指令就是我们的程序这些汇编指令保存在Flash上CPU从Flash得到指令然后去对内存执行可以看到CPU上有16个寄存器这些寄存器就是暂时保留对内存读写操作过程的值那这些寄存器只有暂存数据的作用吗往下看可以看到R13保存栈地址,R14,R15写入到要跳转的地址跳转后执行程序还有其它的作用而R14我们之前介绍过汇编指令下面是通过程序来了解汇编指令在程序的运行机器码就是就是对应的汇编指令如下图MOV 是指将右边值赋给左边注意这里PUSH是指将1rr1r0寄存器该栈的值内存写入到寄存器中CPU所以1r寄存器的值是返回地址。这里的LDRD是指从栈的sp开始的第4个字节和第8个字节的位置内存值分别写入到r0和r1寄存器中CPUFreeRTOS源码可以看到我们选择配置FreeRTOS并生成文件时会有上图中关于FreeRTOS的源代码这是入口函数其中MX_FREERTOS_Init函数里面就包含了我们在Task.c里面的任务函数数据类型内存管理这是堆相关的配置第一个是选择动态分配/静态分配第二个是配置堆的大小第三个是选择堆的配置文件这四种配置文件区别如下平时我们用到的配置文件都是4和5下面我来说说它们的区别如上图文件1只从内存中分配堆却不能释放也没有相关的头部来存储堆的信息文件2能从内存中分配堆和头部不过假设这块内存已经满了而且我把buf1和buf2都释放了然后我要重新分配一块120字节大小的堆会发现分配不了因为buf为100字节大小buf为50字节大小所以这120字节大小都分配不进去所以这就是文件2的缺点不能解决碎片问题即不能将这两块堆合并文件4就是在文件二的基础上解决了碎片问题文件5可以看到除了能在RAM剩余内存中可以分配堆在EXT_RAM中也能分配堆所以文件5就能管理这两块堆通过链表空闲链表头指向第一个堆再指向第二个堆我们需要告诉链表头有多少块离散的堆函数如下不过在程序中我们主要使用这两个函数就行了//分配一块内存void*pvPortMaalloc(size_txWantedSize)//释放一块内存voidvPortFree(void*pv)

相关新闻

Flutter开发OpenHarmony二维码扫描App实战指南

Flutter开发OpenHarmony二维码扫描App实战指南

1. 为什么选择Flutter开发OpenHarmony二维码扫描App? OpenHarmony作为新一代分布式操作系统,其生态建设正处于关键时期。而Flutter作为Google推出的跨平台UI框架,近年来在移动开发领域展现出强大的生命力。将两者结合开发二维码扫描应用&…

2026/8/13 23:45:13 阅读更多 →
2024年广州网站建设q.479185700強避坑指南与实战心得

2024年广州网站建设q.479185700強避坑指南与实战心得

在现在的互联网时代,做一个企业官网或者个人品牌网站,已经不再是那种“有就就行”的点缀品了,它更像是你在数字世界里的脸面和名片。尤其是对于咱们广州这座商贸之都的企业来说,流量就是生命线,而网站往往就是承接流量的那个容器。今天我不讲那些高大上的理论,也不堆砌晦…

2026/8/13 23:45:13 阅读更多 →
2026 GEO系统选购科普:四大差异化平台落地选型指南

2026 GEO系统选购科普:四大差异化平台落地选型指南

前言2026年,生成式AI营销已进入常态化落地阶段,GEO(生成式引擎优化)成为企业搭建AI品牌资产、获取全域自然流量的核心手段。当前国内GEO平台品类繁杂,在技术能力、适配场景、计费模式、落地效果上差异显著。不少企业因…

2026/8/13 23:45:13 阅读更多 →

最新新闻

Kimi K3模型本地私有化部署:从环境搭建到API集成的完整指南

Kimi K3模型本地私有化部署:从环境搭建到API集成的完整指南

这次我们来看一个本地部署 Kimi K3 模型的项目。Kimi 作为国内知名的长文本 AI 助手,其云端服务已经非常成熟,但很多开发者和企业用户一直关心一个问题:能否将 Kimi 的核心能力,特别是其最新的 K3 模型,部署到自己的硬…

2026/8/14 3:01:33 阅读更多 →
信号与系统考研真题深度解析:从解题到解构的方法论

信号与系统考研真题深度解析:从解题到解构的方法论

如果你正在备考西安邮电大学824信号与系统的研究生入学考试,面对动辄十几页的历年真题,是否感到无从下手?是应该逐题死磕,还是应该寻找规律?真题的价值究竟在哪里?是检验知识盲点,还是预测命题趋…

2026/8/14 3:01:33 阅读更多 →
百度网盘加速失败/被限速?2026亲测 PanDownload 网页解析与提速新思路

百度网盘加速失败/被限速?2026亲测 PanDownload 网页解析与提速新思路

在日常使用网络存储服务下载文件时,不少人会遇到传输速度不够理想的情况。即使家里的宽带网速很快,文件的获取过程依然显得十分漫长。造成这种现象的原因通常是多方面的,既与本地设备、网络环境有关,也受限于服务端的资源调度。了…

2026/8/14 3:01:33 阅读更多 →
自托管Kimi K3大模型:20%硬件成本提升换取20%任务解析优化实战

自托管Kimi K3大模型:20%硬件成本提升换取20%任务解析优化实战

最近在尝试将大模型能力集成到本地业务系统时,发现直接调用云端API虽然方便,但在数据安全、成本控制和响应延迟方面存在诸多限制。特别是对于需要处理大量内部文档、代码或敏感信息的场景,一个能够私有化部署、自主可控的AI助手变得尤为重要。…

2026/8/14 3:01:33 阅读更多 →
网站建设注意要求:避开这些隐形坑,打造真正能赚钱的企业官网

网站建设注意要求:避开这些隐形坑,打造真正能赚钱的企业官网

很多人有个误区,觉得找个外包公司或者自己套用个模板,花几千块钱就能搞定一个网站,上线了万事大吉,坐等客户上门。如果你真有这种想法,那我劝你尽早收手,这钱扔进去连个响声都听不见。今天咱们不聊那些虚头巴脑的技术名词,什么前端后端、服务器带宽,咱们就聊聊最接地气…

2026/8/14 3:01:33 阅读更多 →
峰火智能一键紧急报警柱解决方案,打造公共区域快速响应安全防护体系

峰火智能一键紧急报警柱解决方案,打造公共区域快速响应安全防护体系

随着智慧城市建设不断深入,公共区域的安全管理模式正在发生变化。过去,安全管理更多依靠人工巡查、监控查看以及电话报警等方式。当突发事件发生时,人员往往需要寻找工作人员帮助,或者通过手机联系管理中心,整个过程存…

2026/8/14 3:00:33 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →