自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 AD查看任意角度PCB的3D效果图

AD查看效果

2025-03-14 18:55:00 132

原创 keil MDK 中使用虚拟串口调试串口

在弹出的option菜单中,选择debug菜单,按下图所示,选择2处为使用仿真模式。2  parameter需要改成 -pSTM32F103C8 (这个参数是根据不同的芯片改写的)1  dialog dll 要改成DARMSTM.DLL,

2025-02-13 15:29:01 381

原创 第12章 支持时间片

FreeRTOS与隔壁的RT-Thread和μC/OS一样,都支持时间片的功能。所谓时间片就是同一个优先级下可以有多个任务,每个任务轮流地享有相同的CPU时间,享有CPU的时间我们叫时间片。在RTOS中,最小的时间单位为一个tick,即SysTick的中断周期,RT-Thread和μC/OS可以指定时间片的大小为多个tick,但是FreeRTOS不一样,时间片只能是一个tick。与其说FreeRTOS支持时间片,倒不如说它的时间片就是正常的任务调度。

2025-02-07 11:12:37 569

原创 第11章 任务延时列表的实现

/任务延时列表//任务延时列表//任务延时列表指针//任务延时列表指针是一个在task.c中定义的静态变量,用于表示下一个任务的解锁时刻。的值等于系统时基计数器的值xTickCount加上任务需要延时值。当系统时基计数器xTickCount的值与相等时,就表示有任务延时到期了,需要将该任务就绪。

2025-02-06 16:48:10 742

原创 第10章 支持多优先级

整理 野火 《FreeRTOS 内核实现与应用开发实战指南》—基于野火 STM32 全系列(M3/4/7)开发板。

2025-02-05 16:03:30 736

原创 第9章 空闲任务与阻塞延时的实现--总结

* 定义空闲任务的栈 *//* 定义空闲任务的栈 */ # define configMINIMAL_STACK_SIZE((unsigned short) 128) StackType_t IdleTaskStack [ configMINIMAL_STACK_SIZE ];

2025-01-22 18:21:17 834

原创 第8章 临界段的保护-总结

临界段用一句话概括就是一段在执行的时候不能被中断的代码段。

2025-01-22 16:00:54 924

原创 第7章 任务的定义与任务切换的实现--总结

本章是我们真正从从 0 到 1 写 FreeRTOS 的第一章,属于基础中的基础,必须要学会创建任务,并重点掌握任务是如何切换的。因为任务的切换是由汇编代码来完成的,所以代码看起来比较难懂,但是我会尽力把代码讲得透彻。如果本章内容学不会,后面的内容根本无从下手。在裸机系统中,系统的主体就是 main 函数里面顺序执行的无限循环,这个无限循环里面 CPU 按照顺序完成各种事情。在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务。

2025-01-22 14:13:59 1257

原创 第6章 数据结构—列表与列表项讲解--总结

列表和列表项是直接从 FreeRTOS 源码的注释中的 list 和 list item 翻译过来的,其实就是对应我们 C 语言当中的链表和节点,在后续的讲解中,我们说的链表就是列表,节点就是列表项。链表作为 C 语言中一种基础的数据结构,在平时写程序的时候用的并不多,但在操作系统里面使用的非常多。链表就好比一个圆形的晾衣架,具体见图 6-1,晾衣架上面有很多钩子,钩子首尾相连。链表也是,链表由节点组成,节点与节点之间首尾相连。图 6-1 圆形晾衣架/* 节点结构体定义 */

2025-01-21 16:41:24 1301

原创 使用Mermaid和AI画流程图

使用Mermaid和AI画流程图

2025-01-20 17:37:02 4296

原创 vscode 设置

放大缩小字体;修改vscode控制框字体大小

2025-01-18 13:55:33 701

原创 常用的AT命令,用于查看不同类型的网络信息

在AT命令集中,用于查看网络信息的命令有多种,具体取决于所使用的设备和模块。

2025-01-08 14:16:23 717

转载 RTOS 实时系统 - 信号量如何确保一次只有一个任务可以访问某个资源

  信号量(Semaphore)是一种同步机制,用于控制对共享资源的访问。信号量可以确保一次只有一个任务可以访问某个资源,从而避免多个任务同时访问同一资源导致的竞争条件。下面是信号量如何控制对共享资源的访问的具体步骤和示例:  二值信号量是最简单的信号量形式,其计数值只能是 0 或 1。它类似于互斥锁(Mutex),但有一些细微的区别,如不支持递归锁定和优先级继承等特性。[示例代码]  以下是一个使用 CMSIS-RTOS v2 API 的示例,展示了如何使用信号量来控制对共享资源的访问:三、解释

2025-01-07 09:17:46 78

转载 实时操作系统(RTOS)中 Event、 Semaphore、 Mutex 、 MessageQueue 相关函数汇总及功能介绍

事件:用于简单的状态通知和条件检查。信号量:用于控制对共享资源的访问,确保一次只有一个任务可以访问某个资源。互斥锁:用于保护共享资源,确保同一时间只有一个任务可以访问该资源。消息队列:用于在任务之间传递结构化的数据,实现任务间的通信。选择哪种机制取决于你的具体需求。如果你只需要简单的状态通知,事件可能就足够了;如果你需要控制对共享资源的访问,信号量是一个很好的选择;如果你需要保护共享资源并避免竞争条件,互斥锁会更合适;如果你需要在任务之间传递数据,那么消息队列会更合适。

2025-01-06 18:59:23 138

转载 ML307R 模组软件调试之操作系统 RTOS 解析

事件是一种简单的同步机制,用于通知任务某些条件已经满足或某个操作已经完成。

2025-01-06 18:53:11 103

转载 找不到 MFC100U.dll, 无法继续执行代码

本文由转码, 原文地址。

2025-01-06 18:46:09 25

转载 ML307R 模组软件及硬件调试环境搭建

本文由转码, 原文地址。

2025-01-06 18:15:45 837

原创 常用命令git merge

git merge是 Git 中用于合并两个或多个分支的更改到一个分支的命令。这个操作常用于将特性分支的更改合并到主分支(通常是main或master),或者是合并来自其他开发者的更改。

2024-07-29 19:50:53 437

原创 常用命令git branch

git branch。

2024-07-29 19:42:26 1821

原创 常用git commit 命令详解

提交信息大多数人都是使用一行,有时改动内容会比较多,三言两语很难表示清楚,可以使用换行更好的描述改动内容。将所有已被 git 跟踪的文件提交到版本库 (包含工作区和暂存区),进入 vi 命令页面输入提交信息。最常见的用法如下所示,如果没有 -m 参数,会进入 vi 编辑模式,然后写入提交信息。将某些文件提交到版本库,可以跳过 git add,但必须是已被跟踪的文件。将所有暂存区文件提交到版本库,进入 vi 命令页面输入提交信息。在日常开发中,难免会出现提交时备注信息打错了,想要修改它。

2024-07-29 19:06:52 533

原创 ini文件格式

INI 文件格式是一种简单的文本文件格式,用于存储配置数据。它被广泛用于配置应用程序和存储用户偏好设置。

2024-07-25 14:38:57 1037

原创 git stash

是一个在 Git 中用来临时存储当前工作目录中未提交的更改的命令。当你需要切换到另一个分支或者进行其他操作,但又不想提交当前的更改时,可以使用这个命令。这会将最近的 stash 应用到当前工作目录中。如果有多个 stash,你可以指定 stash 的索引来应用特定的 stash。这不仅会应用最近的 stash,还会将其从 stash 列表中删除。这会保存当前工作目录中的更改,并重置工作目录到上次提交的状态。这会显示所有已保存的 stash 列表。这会删除所有保存的 stash。这会删除最近的 stash。

2024-07-01 13:26:18 822 1

原创 git笔记

查看git 版本git -v优化配置posh -Gitgit版本在v2.23版本新增git switch切换版本。

2024-06-24 09:39:54 1222

转载 simpread-计算机英语 2000 带英标

superimpose [.su:p.rim.p.uz, .sju:-] vt. 重叠,叠加。inexperienced [.iniks.pi.ri.nst] a. 不熟练的,外行的。acknowledgment [.k.n.lid.m.nt] n. 接收 (收妥),承认。reorganization [.ri:.:g.nai.zei…second [.sek.nd, si.k.nd] n. & a. 秒,第二 (的)compatibility [k.m.p.t.'biliti] n. 兼容性,适应性。

2024-04-19 16:12:57 261

原创 Keil MDK 5.37 及之后版本 安装 AC5(ARMCC) 编译器详细步骤

百度网盘下载:https://pan.baidu.com/s/1JExRnPuJsW_GnTQ6G8QJag?—— 我们只需手动安装 AC5 编译器即可!

2024-04-01 11:43:53 4171 2

转载 FreeRTOS 实时操作系统第二十二讲 - 综合应用 3(完结)

1、间隔 1s 获取 SHT30 传感器数据,通过 TFT 屏幕显示2、上位机通过 RS-485 接口与实战板通讯3、USB 串口打印收到的上位机数据4、按键 2 与 3 控制计数信号量,并通过数码管显示5、按键 4 控制继电器,与上位机联动6、开启低功耗 Tickless 模式。

2024-01-09 17:28:46 192

转载 FreeRTOS 实时操作系统第二十一讲 - 综合应用 2

1、间隔 1s 获取 SHT30 传感器数据,通过 TFT 屏幕显示2、上位机通过 RS-485 接口与实战板通讯3、USB 串口打印收到的上位机数据4、按键 2 与 3 控制计数信号量,并通过数码管显示5、按键 4 控制继电器,与上位机联动6、开启低功耗 Tickless 模式。

2024-01-09 17:25:10 186

转载 FreeRTOS 实时操作系统第二十讲 - 低功耗 Tickless 模式

Tickless 低功耗机制是当前小型 RTOS 所采用的通用低功耗方法,比如 FreeRTOS,RTX 和 uCOS-III 等。Tickless 是怎样一种模式呢?仅从字母上看,Tick 是滴答时钟的意思,less 是 Tick 的后缀,表示较少的,整体看就是表示减少滴答时钟节拍运行。在 FreeRTOS 系统中,当用户任务都被挂起或者阻塞时,最低优先级的空闲任务会得到执行。那么 STM32 支持的低功耗模式就可以放在空闲任务里面实现。

2024-01-09 17:21:26 427 1

转载 FreeRTOS 实时操作系统第十九讲 - 独立看门狗监测任务执行

① 监测系统死机② 监测任务执行。

2024-01-09 17:15:07 583

转载 FreeRTOS 实时操作系统第十八讲 - 动态内存管理

  动态内存管理是 FreeRTOS 非常重要的一项功能,前面章节讲解的任务创建、信号量、消息队列、事件标志组、互斥信号量、软件定时器组等需要的 RAM 空间都是通过动态内存管理从 FreeRTOSConfig.h 文件定义的 heap 空间中申请的。  FreeRTOS 支持 5 种动态内存管理方案,分别通过文件 heap_1,heap_2,heap_3,heap_4 和 heap_5 实现。  heap_1 动态内存管理方式是五种动态内存管理方式中最简单的,这种方式的动态内存管理一旦申请了相应内存后,是

2024-01-09 17:11:20 250

转载 FreeRTOS 实时操作系统第十七讲 - 综合应用 1

1、间隔 1s 获取传感器数据,通过数码管显示2、按键 2,3,4 触发蜂鸣器状态改变3、上位机通过 RS-485 接口与实战板通讯4、USB 串口打印收到的上位机数据。

2024-01-09 17:02:25 168

转载 FreeRTOS 实时操作系统第十六讲 - 任务通知

FreeRTOS 从 V8.2.0 版本开始提供任务通知功能,每个任务都有一个 32 位的通知值,在多数情况下,任务通可以替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列 (可以保存一个 32 位整数或指针值)。相对于以前使用 FreeRTOS 内核通信的资源时必须创建队列、二进制信号量、计数信号量或事件组的情况,使用任务通知显然更灵活。

2024-01-09 16:58:33 149

转载 FreeRTOS 实时操作系统第十五讲 - 软件定时器

FreeRTOS 软件定时器的时基是基于系统时钟节拍实现的,之所以叫软件定时器是因为它的实现不需要额外使用硬件定时器,而且可以创建很多个,综合这些因素,这个功能就被称之为软件定时器组。既然是定时器,那么它实现的功能与硬件定时器也是类似的。在硬件定时器中,我们是在定时器中断中实现需要的功能,而使用软件定时器时,我们是在创建软件定时器时指定软件定时器的回调函数,在回调函数中实现相应的功能。

2024-01-09 16:43:10 279

转载 FreeRTOS 实时操作系统第十四讲 - 事件

是实现任务与任务或任务与中断间通信的机制,用于同步,无数据传输。在 FreeRTOS 事件中,获取每个事件时,用户可以选择感兴趣的事件,并且选择读取事件信息标记。它有 3 个属性,分别是逻辑与、逻辑或以及是否清除标记。当任务等待事件同步时,可以通过任务感兴趣的事件位和事件信息标记来判断当前接收的事件是否满足要求,如果满足,则说明任务等到对应的事件,系统将唤醒等待的任务;否则,任务会根据用户指定的阻塞超时时间继续等待下去。

2024-01-06 20:29:29 615

转载 FreeRTOS 实时操作系统第十三讲 - 互斥信号量

前面学过,取值只有 0 与 1 两种状态的信号量称之为二值信号量。而互斥信号量是一种特殊的二值信号量,具有防止优先级翻转的特性。创建互斥信号量时,系统会为创建的互斥信号量分配内存,互斥信号量创建完成后的示意图如下:从上图可以看出,互斥信号量是一种长度为 1,消息大小为 0 的特殊消息队列。因为这个队列只有空或满两种状态,而且消息大小为 0,因此在运用时,只需要知道队列中是否有消息即可,而无需关注消息是什么。

2024-01-06 19:54:49 317

转载 FreeRTOS 实时操作系统第十二讲 - 计数信号量

取值只有 0 与 1 两种状态的信号量称之为二值信号量取值大于 1 的信号量称之为计数信号量Note:计数信号量的取值也可以为 1,但通常大于 1,如果取值为 1,相当于只有 0 与 1 两种状态,用二值信号量即可。创建计数信号量时,系统会为创建的计数信号量分配内存,计数信号量创建完成后的示意图如下:从上图可以看出,计数信号量是一种长度大于 1,消息大小为 0 的特殊消息队列。因为这个队列的消息大小为 0,因此在运用时,只需要知道队列中是否有消息即可,而无需关注消息是什么。

2024-01-06 16:03:33 611

转载 FreeRTOS 实时操作系统第十一讲 - 二值信号量

当信号量被获取了,信号量值变为 0;当信号量被释放了,信号量值变为 1。把这种取值只有 0 与 1 两种状态的信号量称之为二值信号量。创建二值信号量时,系统会为创建的二值信号量分配内存,二值信号量创建完成后的示意图如下:从上图可以看出,二值信号量是一种长度为 1,消息大小为 0 的特殊消息队列。因为这个队列只有空或满两种状态,而且消息大小为 0,因此在运用时,只需要知道队列中是否有消息即可,而无需关注消息是什么。

2024-01-06 15:12:54 1074

转载 FreeRTOS 实时操作系统第十讲 - 消息队列

消息队列简称队列,是一种常用于任务间通信的数据结构。如下图:消息队列可以在任务与任务间、中断与任务间传递消息,实现任务接收来自其它任务或中断的不固定长度的消息。< 队列用于任务与任务间 >< 队列用于任务与中断间 >

2024-01-06 13:54:49 850

转载 FreeRTOS 实时操作系统第九讲 - 链表 (数据结构)

**/用于检测列表数据是否完整辅助值 (比如用于任务的优先级),用于帮助节点进行顺序排列指向下一个节点的指针指向上一个节点的指针指向拥有该节点的内核对象,通常是 TCB(任务控制块 / 任务句柄)指向该节点所在的链表用于检测列表数据是否完整/**/} List_t;用于检测列表数据是否完整链表节点计数器,用于记录该链表下有多少个节点,根节点除外链表节点索引指针,用于遍历节点链表最后一个节点。链表是一个圈,首尾相连的,首就是尾,尾也是首。

2024-01-06 12:23:59 1362

转载 FreeRTOS 实时操作系统第八讲 - 时间管理 (系统节拍,延时函数)

FreeRTOS 实时操作系统需要一个时钟节拍,以供系统处理诸如延时、超时、软件定时器等与时间相关的事件。时钟节拍是周期性定时中断,这个中断可以看做是系统心跳。中断时间间隔取决于不同的应用,一般是 1ms – 100ms。时钟的节拍中断使得内核可以将任务延迟若干个时钟节拍,以及当任务等待事件发生时,提供等待超时等依据。时钟节拍率越快,系统响应越快,系统的额外开销也越大。对于 Cortex-M3 内核的 STM32F103 ,教程配套的例子都是用滴答定时器来实现系统时钟节拍的。

2023-12-27 17:01:55 2341

第20章 通信-硬件 I2C

利用硬件IIC来驱动AP3426光线传感器模块

2023-07-05

第20章 通信-硬件 I2C

利用硬件IIC来驱动AP3426光线传感器模块

2023-07-05

利用GPIO口引脚-模拟I2C通信,驱动EEPROM

利用GPIO引脚模拟I2C时序,驱动EEPROM

2023-07-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除