STM32 map 文件浅析 [toc] 一、概述 .map 文件是编译器链接时生成的一个文件,它主要包含了交叉链接信息。通过 .map 文件,我们可以知道整个工程的函数调用关系、FLASH 和 RAM 占用情况及其详细汇总信息,能具体到单个源文件(.c/.s)的占用情况,根据这些信息,我们可以对代码进行优化。.map 文件可以分为以下 5 个组成部分: 程序段交叉引用关系(Section Cross Reference 2024-09-24 嵌入式 > STM32 #嵌入式 #STM32
STM32 通过软件模拟 I2C 驱动 24Cxx 系列存储器 [toc] I2C 相关知识可以参考 IIC 通信协议详解 一、AT24CXXX 系列存储器介绍 1、基本信息 下表是 AT24CXXX 的容量: AT24C01,AT24C02,AT24C04,AT24C08,AT24C16,AT24C32,AT24C64,AT24C128,AT24C256… 不同的 xxx 代表不同的容量。 AT24CXXX bit容量 Byte容量 2024-09-23 嵌入式 > STM32 #嵌入式 #STM32 #I2C
STM32 通过 SPI 驱动 W25Q128 [toc] 有关 SPI 的内容在 SPI 通信协议详解,不熟悉的可以参考一下 我使用设备的是 STM32F407 + W25Q128 一、STM32 SPI 框图 1、通讯引脚 这四个引脚想必大家也很熟悉了,就不过多介绍。我是用的是 SPI1,引脚如下: SPI1 是 APB2 总线上的设备,最高通信速率达 42Mbtis/s。 如下是 W25Q128 的引脚图: 所以连接方 2024-09-21 嵌入式 > STM32 #嵌入式 #STM32 #SPI
BLE 协议之链路层 [toc] 一、前言 在 BLE 协议之物理层 一文中,我简单介绍了 BLE 的物理层。接下来就是链路层(Link Layer)了,它主要的功能,就是在这些 Physical Channel 上收发数据,与此同时,不可避免的需要控制 RF 收发相关的参数。除此之外,还要做到以下几个功能: 通道共享 : Physical Layer 仅仅提供了有限的 40 个 Physical Chann 2024-09-20 通信协议 > BLE #通信协议 #BLE
STM32 芯片启动过程 1、栈 Stack 2、堆 Heap 3、中断向量表 Vectors 3.1 中断响应流程 4、复位程序 Reset_Handler 5、中断服务函数 6、用户堆栈初始化 1、初始化 SP、PC 及中断向量表 2、设置系统时钟 3、初始化堆栈并进入 main 一、前言 下面主要讲解从上电复位到 main 函数的过程。主要有以下步骤: 初始化堆栈指针:SP = __initial_ 2024-09-18 嵌入式 > STM32 #嵌入式 #STM32
BLE 协议之物理层 1、物理通道 2、物理通道的细分 1、调制方式 2、GFSK 一、概述 物理层(Physical Layer)是 BLE 协议栈最·底层,它规定了 BLE 通信的基础射频参数,包括信号频率、调制方案等。 BLE 工作频率是 2.4GHz,它使用 GFSK 频率调制,并使用跳频机制来解决频道拥挤问题。 BLE 5 的物理层有三种实现方案,分别是: 1M Sym/s 的无编码物理层 2 2024-09-17 通信协议 > BLE #通信协议 #BLE
结构体内存对齐 [toc] 一、什么是结构体内存对齐 进入讲解前,先看一段 C 代码: 1234567891011struct Node1 { int a; char b; char c;} node1[1024];struct Node2 { char b; int a; char c;} node2[1024]; 思考一下 no 2024-09-16 嵌入式 #嵌入式 #内存对齐
MQTT 协议概述 1、组成部分 2、客户端 3、服务器 1、连接服务器 2、订阅主题 3、发布消息 4、取消订阅 5、断开连接 1、MQTT 固定头 2、MQTT 可变头 3. Payload消息体 一、概述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构 2024-09-12 通信协议 #通信协议 #MQTT
Linux 下 C/C++ 程序编译的过程 [toc] 本文将介绍如何将 C/C++ 语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking)。 在此之前,首先来看一下 GCC 工具链。 一、GCC 工具链 GCC 是 GUN Compiler Collection 的简称,是 Linux 系统上常用的编译工具 2024-09-08 Linux #Linux #编译
FreeRTOS 队列 Queue 源码解析 [toc] 在 FreeRTOS 快速入门(四)之队列 一文中,我简单地叙述了 FreeRTOS 中队列的工作机制和基本使用。这一节我将依据 FreeRTOS V10.4.3 的源码深入地去探究队列是如何实现的。学好队列对我们后续学习信号量等知识的时候有很大的帮助。 一、队列 1、队列结构体 队列结构体定义在目录 queue.c 下: 1234567891011121314151617181 2024-09-06 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS