自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 git stash

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

2024-07-01 13:26:18 193

原创 git笔记

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

2024-06-24 09:39:54 1060

转载 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 49

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

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

2024-04-01 11:43:53 1767 1

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

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

2024-01-09 17:28:46 119

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

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

2024-01-09 17:25:10 126

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

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

2024-01-09 17:21:26 246

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

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

2024-01-09 17:15:07 251

转载 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 110

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

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

2024-01-09 17:02:25 73

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

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

2024-01-09 16:58:33 75

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

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

2024-01-09 16:43:10 131

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

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

2024-01-06 20:29:29 311

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

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

2024-01-06 19:54:49 207

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

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

2024-01-06 16:03:33 495

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

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

2024-01-06 15:12:54 686

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

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

2024-01-06 13:54:49 613

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

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

2024-01-06 12:23:59 791

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

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

2023-12-27 17:01:55 1546

转载 FreeRTOS 实时操作系统第七讲 - 调度锁,中断锁,任务锁

调度锁就是 RTOS 提供的调度器开关函数,如果某个任务调用了调度锁开关函数,处于调度锁开和调度锁关之间的代码在执行期间是不会被高优先级的任务抢占的,即任务调度被禁止。这一点要跟临界段的作用区分开,调度锁只是禁止了任务调度,并没有关闭任何中断,中断还是正常执行的。而临界段进行了开关中断操作。

2023-12-27 16:33:27 967

转载 FreeRTOS 实时操作系统第六讲 - 任务与中断优先级,临界保护

因为对于 CM 内核的移植文件,用户任务的优先级不是大于等于 32 的话,portmacro.h 文件中的宏定义 configUSE_PORT_OPTIMISED_TASK_SELECTION 会优化优先级列表中要执行的最高优先级任务的获取算法(对于 CM 内核的移植文件,此宏定义默认是使能的,当然,用户也可以在 FreeRTOSConfig.h 文件中进行配置)。另外,由于 FreeRTOS 没有配置 SVC 的中断优先级,默认没有配置的情况下,SVC 中断的优先级就是最高的 0。

2023-12-27 15:37:30 1331

转载 FreeRTOS 实时操作系统第五讲 - 任务调度 (抢占式,时间片与合作式),任务栈大小确定与溢出检测

如下图:Test1-3 使用的栈空间:(128-106)=22 words, 乘以安全系数,分配 33 words 即可。

2023-12-19 15:45:40 1627

转载 FreeRTOS 实时操作系统第四讲 - 任务管理 (创建,删除,挂起,恢复)

从系统的角度看,任务是竞争系统资源的最小运行单元。FreeRTOS 是一个支持多任务的操作系统,在 FreeRTOS 中,任务可以使用或等待 CPU、使用内存空间等系统资源,并独立于其他任务运行。每个任务在自己的环境中运行,在任何时刻,只有一个任务得到运行,FreeRTOS 调度器决定运行哪个任务。调度器会不断的启动、停止每一个任务,宏观上看,所有的任务都在同时进行。在 FreeRTOS 中,每个任务都有自己的栈空间 (一段连续的内存),用于保存任务运行环境。

2023-12-19 14:13:31 1092

转载 实时操作系统第三讲 - 系统配置

实际应用 FreeRTOS 的时候,我们需要根据产品需求配置 FreeRTOS,满足产品需求的同时,发挥 FreeRTOS 的最佳性能。FreeRTOS 的系统配置文件为 FreeRTOSConfig.h,在此配置文件中可完成 FreeRTOS 的裁剪与配置。FreeRTOSConfig.h 根据正在构建的应用程序定制 FreeRTOS 内核。因此,它特定于应用程序,而不是FreeRTOS,并且应该位于应用程序目录中,而不是位于 FreeRTOS 内核源代码目录中。

2023-12-09 15:58:22 828

转载 FreeRTOS 实时操作系统第二讲 - 启动流程、编码风格与调试方法

RTOS 主要有两种比较流行的启动方式,下面会通过伪代码讲解两种启动方式的区别,然后看看 STM32cubeMX 集成的 FreeRTOS 采用哪种启动方式。方法一:在 main 函数中将硬件初始化、RTOS 系统初始化,同时创建所有任务,再启动 RTOS 调度器。方法二:在 main 函数中将硬件初始化、RTOS 系统初始化,只创建一个启动任务,再启动 RTOS 调度器。之后,在启动任务中创建各种应用任务,当所有任务创建完成,启动任务把自己删除。

2023-12-09 14:27:47 1417 1

转载 FreeRTOS实时操作系统第一讲 - 系统简介与移植

嵌入式操作系统是为了区别于通用的计算机操作系统,人们把嵌入到对象体系中,为实现对象体系智能化控制的计算机操作系统,称作嵌入式计算机操作系统,简称嵌入式操作系统。嵌入式操作系统分类:① 按对外部事件的响应能力来分类,嵌入式操作系统分实时操作系统和分时操作系统。如果操作系统能及时的响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能在一个规定的时间内完成对事件的处理,那么这种系统就称为实时操作系统。如果操作系统按时间片轮转完成各个任务,任务没有优先级,这种系统就称为分时操作系统。②。

2023-12-09 13:38:20 1351

原创 【项目1】02_环境搭建及C语言基础

而第二个程序利用结构体进行声明,可以看出,处理相同的数据,CHAR2类型占用了48位空间,如果考虑边界对齐并把要求最严格的int类型最先声明进行优化,那么CHAR2类型则要占据64位的空间。在声明时,位段成员必须是整形或枚举类型(通常是无符号类型),且在成员名的后面是一个冒号和一个整数,整数规定了成员所占用的位数。调用函数:让CPU的PC寄存器等于"一系列机器码"的首地址,就是函数地址## 4. 函数是什么。调用函数:让CPU的PC寄存器等于"一系列机器码"的首地址,就是函数地址。引出全局变量初始化问题?

2023-10-25 19:17:30 43

转载 USB协议详解第5讲(USB描述符-接口描述符)

来自:https://hellocode.blog.csdn.net/article/details/112341036。

2023-08-04 10:25:24 481

原创 STM32Cube的USB_device软件库说明

USB 设备库基于通用 USB 底层驱动开发,可在全速和高速模式中工作。它实现了USB 2.0版本定义的USB设备库状态机。此模块功能由USB设备库固件包中"Core" 目录下的文件提供。USB 类模块为类层,与协议规范兼容。

2023-08-03 14:09:20 1952 1

转载 USB总线电平标准、USB总线状态、USB总线信号详解

来自:https://hellocode.blog.csdn.net/article/details/113639911。

2023-08-01 14:08:12 2539

转载 USB协议详解第30讲(USB枚举过程详解及抓包分析)

来自:https://hellocode.blog.csdn.net/article/details/113530649当USB设备连接到或从USB中移除时,主机使用总线枚举过程来识别和管理接入的设备。

2023-08-01 13:52:50 579

转载 USB协议详解第29讲(USB设备状态及数据交互条件)

来自:https://hellocode.blog.csdn.net/article/details/113485219。

2023-08-01 13:45:08 212

转载 USB协议详解第28讲(USB硬件设计和热拔插原理)

对于四线制的USB,即USB1.0、USB1.1和USB2.0,USB硬件接口有4根接线,如下图。引脚名称电缆颜色描述1VBUSRed+5V,电源2D-WhiteData -,数据线3D+GreenData +,数据线4GNDBlackGround ,接地。

2023-08-01 11:51:05 774

转载 USB协议详解第27讲(USB包-中断传输包详解)

来自:https://hellocode.blog.csdn.net/article/details/113359326。

2023-08-01 11:40:30 454

转载 USB协议详解第26讲(USB包-批量传输包详解)

来自:https://hellocode.blog.csdn.net/article/details/113272041。

2023-08-01 11:19:10 302

转载 USB协议详解第25讲(USB包-同步传输包详解)

来自:https://hellocode.blog.csdn.net/article/details/113194072。

2023-08-01 10:54:21 268

转载 USB协议详解第24讲(USB包-控制传输包详解)

来自:https://hellocode.blog.csdn.net/article/details/113140495。

2023-08-01 10:37:10 659

转载 USB协议详解第23讲(USB包-握手包及其工作方式)

来自:https://hellocode.blog.csdn.net/article/details/113098215。

2023-07-31 22:06:14 378

转载 USB协议详解第22讲(USB包-数据包及重传机制)

来自:https://hellocode.blog.csdn.net/article/details/113063360。

2023-07-31 21:51:39 236

转载 USB协议详解第21讲(USB包-令牌类包)

来自:https://hellocode.blog.csdn.net/article/details/112989997。

2023-07-31 21:23:19 593

第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关注的人

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