单片机内存区域划分 @toc 一、C 语言内存分区C 语言在内存中一共分为如下几个区域,分别是: 下面分别介绍各个区域。 1、栈区栈区介绍: 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。 栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。 栈区按内存地址由高到低方向生长,其最大大小由==编译& 2024-09-01 嵌入式 > STM32 #嵌入式 #STM32
FreeRTOS 列表 List 源码解析 @toc 链表是 FreeRTOS 的核心数据结构,有关任务调度、延时、阻塞、事件等操作都是通过对链表进行操作进而实现的。本节将详细分析源码文件 list.c,list.h 的内容,为后续的任务队列等的实现奠定基础。 一、链表及链表项的定义FreeRTOS 使用的链表结构是环形的双向链表,而关于链表节点的数据结构都在 list.h 中定义。 1、链表节点数据结构 xList_ITEM首先来看链表 2024-08-29 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS
蓝牙BLE协议讲解 [toc] 一、概述蓝牙技术起源于爱立信在 1994 年提出的方案,旨在解决移动电话和其他配件之间进行低功耗、低成本的无线通信连接的方法。 1、发展历史 第一代蓝牙主要是指 90 年代的 V1.0~V1.2 版本,是关于短距离通信的早期探索,此时还存在许多问题,应用不是特别广泛 第二代蓝牙主要是 00 年中 V2.0~V2.1 版本,新增了 EDR(Enhanced Data Rate)技术提高 2024-08-27 通信协议 > BLE #通信协议 #BLE
Linux 下 gdb 的使用 [toc] 一、概述GDB(GNU调试器)是一个功能强大的开源调试工具,可用于调试多种编程语言,包括 C、C ++、Fortran 等。它可以在运行过程中检查程序状态,设置断点以停止程序执行并观察变量值、内存状态等,并提供一系列命令和功能来辅助调试过程。 GDB 的主要功能包括以下几个方面: 设置断点:GDB 允许你在程序的某一行代码上设置断点,当程序执行到这一行时会暂停并等待调试命令。 单步 2024-08-26 Linux > 性能优化/调试 #Linux #Linux 命令 #性能优化/调试
FreeRTOS 快速入门(九)之软件定时器 @toc 一、软件定时器的特性使用定时器跟使用手机闹钟是类似的: 指定时间:启动定时器和运行回调函数,两者的间隔被称为定时器的周期(period)。 指定类型,定时器有两种类型: 一次性(One-shot timers): 这类定时器启动后,它的回调函数只会被调用一次; 可以手工再次启动它,但是不会自动启动它。 自动加载定时器(Auto-reload timers): 这类定时器启动后, 2024-08-26 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS
FreeRTOS 快速入门(八)之任务通知 [toc] 一、任务通知1、基本概念FreeRTOS 从 V8.2.0 版本开始提供任务通知这个功能,每个任务都有 一个 32 位 的通知值,在大多数情况下,任务通知可以 替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32 位整数或指针值)。 相对于以前使用 FreeRTOS 内核通信的资源,必须创建队列、二进制信号量、计数信号量或事件组的情况,使用任务通知显然 2024-08-25 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS
FreeRTOS 快速入门(七)之事件组 @toc 一、事件组的概念事件组可以简单地认为就是一个整数: 每一位表示一个事件 每一位事件的含义由程序员决定,比如:Bit0 表示用来串口是否就绪,Bit1 表示按键是否被按下。这些位,值为 1 表示事件发生了,值为 0 表示事件没发生 一个或多个任务、ISR 都可以去写这些位;一个或多个任务、ISR 都可以去读这些位 可以等待某一位、某些位中的任意一个,也可以等待多位 事件组用一个整数 2024-08-24 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS
ESP32-IDF 在 Ubuntu 下的配置 [toc] 参考资料:官方文档:Linux 和 macOS 平台工具链的标准设置。 一、安装准备参照官方文档,首先下载编译 ESP-IDF 所需要的软件包: 1sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev lib 2024-08-23 嵌入式 > ESP32 #嵌入式 #ESP32
FreeRTOS 快速入门(六)之互斥量 [toc] 一、互斥量1、基本概念互斥量又称互斥信号量(本质是信号量),是==一种特殊的二值信号量==,它和信号量不同的是,它支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源的独占式处理。 任意时刻互斥量的状态只有两种,开锁或闭锁。当互斥量被任务持有时,该互斥量处于闭锁状态,这个任务获得互斥量的所有权。当该任务释放这个互斥量时,该互斥 2024-08-23 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS
FreeRTOS 快速入门(五)之信号量 @toc 一、信号量的特性信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,其实信号量主要的功能就是实现任务之间的同步与互斥,实现的方式主要就是依靠队列(信号量是特殊的队列)的任务阻塞机制。 1、信号量跟队列的对比差异列表如下: 队列 信号量 可以容纳多个数据,创建队列时有两部分内存: 队列结构体、存储数据的空间 只有计数值,无法容纳其 2024-08-22 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS