STM32 位带操作 [toc] 一、简介如果你学过 51,是否还记得你是如何点亮的 led?很简单,见下: 12sbit LED1 = P2^0; // 控制到 P2.0 脚LED1 = 0; // 输出一个低电平 通过简单的两句话就可以点亮一个 led 了。这就是位带(Bit-banding)操作,支持位带操作后,可以使用普通的加载/存储指令来对==单一的比特== 2024-10-08 嵌入式 > STM32 #嵌入式 #STM32
Cortex-M3/M4/M7 芯片 Fault 分析原理与实战 [toc] 一、简介1、异常类型HardFault(硬件错误)是一类在嵌入式系统开发中较为常见的系统异常,优先级仅低于复位和 NMI(不可屏蔽中断)。当系统运行过程中遇到了某些错误时程序就会跳转至 HardFault_Handler 函数中,引发程序故障进而影响程序的正常运行。 一般而言,我们遇到的错误有如下几种: HardFault(硬件故障):默认异常,由于异常处理过程中的错误或由于任何其 2024-10-07 嵌入式 > STM32 #嵌入式 #STM32
基于 STM32F407 的 SPI Flash下载算法 [toc] 一、概述本文将介绍如何使用 MDK 创建 STM32F407 的 SPI Flash 下载算法。 其中,SPI Flash 芯片使用的是 W25Q128,其相关操作源码可以参考 STM32 通过 SPI 驱动 W25Q128,本文所使用的驱动 SPI Flash 的 API 和里面是一样的。 单片机的 Flash 下载算法是一个 FLM 文件,FLM 通过编译链接得到,其内部包含 2024-10-06 嵌入式 > STM32 #嵌入式 #STM32
分散加载文件 scatter files @toc 本文主要是对 浅析 Keil 中的 sct 文件 一文做进一步的补充和说明。 一、加载域和执行域镜像的各个域在加载时是被放置在系统存储器中的。 在执行镜像之前,可能必须将一些域移动到它们的执行地址,并创建 ZI 输出节。例如,初始化的 RW 数据可能必须从 ROM 中的加载地址复制到 RAM 中的执行地址。为了可以灵活的处理这种情况,ARM 定义了如下两个视图: Load view 2024-10-02 嵌入式 > STM32 #嵌入式 #STM32
ROM、RAM 和 Flash 的区别 [toc] 在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD 等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带 2024-10-02 嵌入式 #嵌入式
基于 STM32F407 的串口 IAP [toc] IAP(In Application Programming,在应用编程)是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写。简单来说,就是开发者代码出 bug 了或者添加新功能了,能够利用预留的通讯接口,对代码进行升级。 UART、SPI、IIC、USB 等等,当然还有 WIFI、4G、Bluetooth 等无线通讯手段,都可以作为 IAP 升级的方式,今天主 2024-10-01 嵌入式 > STM32 #嵌入式 #STM32
hex 文件和 bin 文件剖析 @toc 在单片机开发中,hex 文件和 bin 文件是非常常见的两种烧写文件格式。比如在 Keil 中,编译好程序后,点击 Download 就可以把 hex 文件烧录到板子上。 而有时候在我们实现 IAP 时,有需要生成 bin 文件格式,再将其传输到单片机中,通过 Bootloader 将 bin 接收移到相应地址。 哪这两个文件有什么区别?为什么有时候用 bin,而有时候用 hex?本文 2024-09-30 嵌入式 #嵌入式
浅析 Keil 中的 sct 文件 [toc] 一、程序的存储与运行1、存储程序编译后,应用程序中所有具有同一性质的数据(包括代码)被归到一个域,程序在存储或运行的时候,不同的域会呈现不同的状态,这些域的意义如下: **Code**:即代码域,它指的是编译器生成的机器指令,这些内容被存储到 ROM 区。 **RO-data**:Read Only data,即只读数据域,它指程序中用到的只读数据,这些数据被存储在 ROM 区,因 2024-09-29 嵌入式 > STM32 #嵌入式 #STM32
FreeRTOS 内存管理源码解析 [toc] FreeRTOS 提供了 5 种不同的内存管理策略以应对不同的应用场景,本章将对这 5 种不同的内存管理策略的实现进行分析。 我参考的源码是:FreeRTOS-Kernel-10.4.3-LTS-Patch-3\portable\MemMang,该路径下记录了 heap_1.c、heap_2.c、heap_3.c、heap_4.c、heap_5.c,讲解会从这 5 个文件的源码入手 2024-09-28 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS #内存管理
Git 基本操作 [toc] 一、基本概念Git 是一种分布式版本控制系统,用于跟踪和管理代码的变更。它最初是由 Linus Torvalds 开发的,用于管理 Linux 内核的源代码。 Git 在软件开发中被广泛应用,尤其是在团队协作和开源项目中。通过使用 Git,开发人员可以更好地管理代码、协同工作、追踪问题和版本发布等。 1、工作区域Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区 2024-09-26 工具 > Git #Git