自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MCU开启浮点计算FPU

FPU 即浮点运算单元(Float Point Unit)。浮点运算,对于定点 CPU(没有 FPU 的 CPU)来说必须要按照 IEEE-754 标准的算法来完成运算,是相当耗费时间的。而对于有 FPU 的 CPU 来说,浮点运算则只是几条指令的事情,速度相当快(数十倍甚至上百倍的运算性能)。

2025-05-12 23:19:32 419

原创 USART串口通讯

DMA(直接存储区访问)为实现数据高速在外设寄存器与存储器之间或者存储器与存储器之间传输提供了高效的方法。之所以称之为高效,是因为 DMA 传输实现高速数据移动过程无需任何 CPU 操作控制,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高。从硬件层次上来说,DMA 控制器是独立于 Cortex-M4 内核的,有点类似 GPIO、USART 外设一般,只是 DMA 的功能是可以快速移动内存数据。DMA 支持。

2025-04-26 15:56:24 839

原创 IO 口作为外部中断输入

抢占式优先级和响应优先级相同时,则遵循自然优先级,看中断向量表的中断排序,数值越小,优先级越高。系统调度:在实时操作系统中,通过软件中断实现任务切换(例如触发PendSV中断)抢占优先级相同,响应优先级高的中断不能打断响应优先级低的中断。抢占优先级高的中断可以打断正在执行的抢占优先级低的中断。调试与测试:模拟硬件中断事件,验证中断处理逻辑的正确性;

2025-04-16 23:34:38 1128

原创 FreeRTOS内存管理

静态方法创建任务、队列、信号量等对象的 API 函数一般是以“Static”结尾的,例如静态创建任务的 API 函数xTaskCreateStatic()。使用静态方式创建各种对象时,需要用户提供各种内存空间,例如任务的栈空间、任务控制块所用内存空间等等,并且使用静态方式占用的内存空间一般固定下来了,即使任务、队列等被删除后,这些被占用的内存空间也没有其他用途。

2025-04-02 09:18:59 830

原创 MDK5插件:代码格式整理、文件注释、函数注释

MDK5插件:代码格式整理、文件注释、函数注释

2025-03-20 23:06:25 227

原创 系统定时器SysTick

系统定时器SysTick。

2025-02-26 00:07:41 302

原创 STM32 中断应用

具体使用了多少可参考《ARM Cortex™-M4F 技术参考手册》-4.3.11:NVIC 寄存器映射。

2025-02-25 22:31:48 1049

原创 STM32 缺一不可的最基础的初始化部分

系统时钟(RCC)​。SysTick定时器。

2025-02-25 11:27:00 380

原创 STM32 最小系统

【代码】STM32 最小系统。

2025-02-25 10:43:56 459

原创 STM32编译过程

编译MDK 软件使用的编译器是 armcc 和 armasm,它们根据每个 c/c++ 和汇编源文件编译成对应的以“.o”为后缀名的对象文件 (Object Code,也称目标文件),其内容主要是从源文件编译得到的机器码,包含了代码、数据以及调试使用的信息链接链接器 armlink 把各个.o 文件及库文件链接成一个映像文件“.axf”或“.elf”格式转换。

2025-02-25 10:29:15 1947

原创 MDK 工程的文件类型介绍

uvprojx、uvoptx 及 uvguix 都是使用 XML 格式记录的文件,若使用记事本打开可以看到 XML 代码。当使用 MDK 软件打开时,它根据这些文件的 XML 记录加载工程的各种参数,使得我们每次重新打开工程时,都能恢复上一次的工作环境。

2025-02-25 09:31:52 1078

原创 查看 *.o、*.axf 及*.elf 文件信息

使用 fromelf 文件可以查看 *.o、.axf 及.lib 文件的 ELF 信息

2025-02-21 11:38:16 116

原创 STM32创建静态库lib

编译会报错,将文件 stm32f4xx_ll_fmc.c、stm32f4xx_ll_fsmc.c、stm32f4xx_ll_sdmmc.c、stm32f4xx_ll_usb.c。将创建lib库所需的下列所有头文件存放到 C:\Keil_v5\ARM\hal_inc。将创建lib库所需的下列所有头文件存放到 C:\Keil_v5\ARM\ll_inc。下存放用户开发的相应驱动文件,如LED、Beep等。下存放用户开发的相应驱动文件,如LED、Beep等。下存放用户开发的相应驱动文件,如LED、Beep等。

2025-02-17 23:05:30 903 1

原创 计算程序Flash和SRAM是使用情况

堆 + 栈 + ZI-data + RW-data(一定是解压缩后的):Code + RO-data + RW-data(可能是压缩的)可以计算出项目程序所需的。工具或编译编译后产生的。

2025-02-07 11:05:40 268

原创 STM32系统架构介绍

【详情见 <CM3/CM4时钟系统>】

2025-02-07 10:59:38 1500

原创 STM32 简介

超低的价格。8 位机的价格,32 位机的性能,是 STM32 最大的优势。

2025-02-07 09:40:52 1316

原创 STM32新建不同工程的方式

由于寄存器资源非常宝贵,一般都是一个位或者几个位控制一个功能,对于 STM32 来说,其寄存器是 32 位的,一个 32 位的寄存器,可能会有 32 个控制功能,相当于 32 个开关,由于STM32 的复杂性,它内部有几百个寄存器,所以整体来说 STM32 的寄存器还是比较复杂的。(Low Layer)目前与 HAL 库捆绑发布,它设计为比 HAL 库更接近于硬件底层的操作,代码更轻量级,代码执行效率更高的库函数组件,可以完全独立于 HAL 库来使用,但 LL库不匹配复杂的外设,如 USB 等。

2025-01-24 16:34:31 1441 1

原创 STM32 GPIO工作模式

GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO 被分成很多组,每组最多 16 个 IO 口,组数视芯片而定。

2025-01-22 11:23:05 1264

原创 CM3/4 map文件分析

MDK 编译工程,会生成一些中间文件(如.o、.axf、.map 等),最终生成 hex 文件,以便下载到 MCU 上面执行,编译过程产生的所有文件,都存放在 OBJ 文件夹下,如下图所示:这里总共生成了 66 个文件,共 11 个类型,分别是:.axf、.crf、.d、.dep、.hex、.lnp、.lst、.o、.htm、bulild_log.htm 和.map。

2025-01-17 16:55:40 1089

原创 CM3/4启动流程

例如:我们将 0x0800 0000 映射到 0x0000 0000,即从内部 FLASH 启动,那么内核会从地址 0x0800 0000 处取出堆栈指针 MSP 的初始值,从地址 0x0800 0004 处取出程序计数器指针PC 的初始值。因此,内核离开复位状态后,读取内部 FLASH的 0x08000000 地址空间存储的内容,赋值给栈指针 MSP,作为栈顶地址,再读取内部 FLASH的 0x08000004 地址空间存储的内容,赋值给程序指针 PC,作为将要执行的第一条指令所在的地址。

2025-01-07 13:35:00 1051

原创 CM3/4启动文件分析

AREA汇编一个新的数据段[DATA],段名为RESET,只读[READONLY]。EXPORT表示声明一个标号具有全局属性,可被外部的文件使用。EXPORT表示声明一个标号具有全局属性,可被外部的文件使用。EXPORT表示声明一个标号具有全局属性DCD分配一个或者多个以字为单位的内存,以四字节对齐,并要求初始化这些内存。__Vectors为向量表起始地址。为向量表结束地址。EQU给数字常量取一个符号名__Vectors_Size [向量表大小]。汇编一个段名为RESET的数据段。

2025-01-06 16:30:34 966

原创 CM3/CM4时钟系统

数字电路的知识告诉我们:任意复杂的电路控制系统都可以经由门电路组成的组合电路实现。STM32 内部也是由多种多样的电路模块组合在一起实现的。当一个电路越复杂,在达到正确的输出结果前,它可能因为延时会有一些短暂的中间状态,而这些中间状态有时会导致输出结果会有一个短暂的错误,这叫做电路中的“毛刺现象”,如果电路需要运行得足够快,那么这些错误状态会被其它电路作为输入采样,最终形成一系列的系统错误。

2025-01-02 14:52:38 1047

原创 CM3/CM4存储器映射

向量表。

2025-01-01 21:18:57 981

原创 创建$(u-boot-dirs)目标集分析

文章目录1. tools (回显 54-136)2. arch/arm/cpu (回显 137-138)3. arch/arm/cpu/armv7 (回显 139-147)4. arch/arm/lib (回显 148-178)5. arch/arm/mach-bcm283x (回显 179-185)6. board/raspberrypi/rpi (回显 186-189)7. cmd (回显 190-235)8. common (回显 236-272)1.

2024-08-09 09:30:25 586

原创 make -f ./scripts/Makefile.build obj=dir 分析2

【代码】make -f ./scripts/Makefile.build obj=dir 分析2。

2024-08-02 09:29:41 386

原创 make V=1 输出信息

make -f ./Makefile syncconfigmake -f ./scripts/Makefile.build obj=scripts/basicrm -f .tmp_quiet_recordmcountmake -f ./scripts/Makefile.build obj=scripts/kconfig syncconfigscripts/kconfig/conf --syncconfig Kconfigmake -f ./scripts/Makefile.autoconf ||

2024-07-15 16:13:36 210

原创 make -f ./scripts/Makefile.build obj=dir 分析1

由上可知,目标只有创建命令没有依赖,接下来执行目标的创建命令即可。6. 由步骤1中的定义可知, 在。2. 由步骤1中的定义可知,在。3. 由步骤1中的定义可知,在。4. 由步骤1中的定义可知,在。5. 由步骤1中的定义可知,在。

2024-07-10 19:32:32 446

原创 ./Kbuild 分析

由上可知,创建目标前要先创建其依赖,在。

2024-07-05 11:02:12 356

原创 ./scripts/Makefile.autoconf 分析

由于执行的命令未带目标参数,所以默认执行第一个目标(即目标。由上可知,目标有很多,第一个目标为。这些变量的定义都是在配置文件。这些变量的定义都是在配置文件。

2024-06-21 16:11:19 1024

原创 make syncconfig V=1分析

命令【即生成 scripts/basic/fixdep 工具】,将实现目标。的所有依赖都已生成,接下来执行目标的生成语句即可。的所有依赖都已生成,接下来执行目标的生成语句即可。所用的命令、源码、头文件等信息全部写入到。,所以第493行条件不成立,这里什么都不做。输入命令自动匹配 563 行,由于目标。在顶层 Makefile 中定义为。时,94行条件成立,,101行条件成立,由上面三步可知,目标。

2024-06-19 19:28:23 489

原创 make V=1 分析

文章目录make V=1make V=11 Makefile:2321: "####### _all all scripts_basic outputmakefile scripts inputs dtbs cmd common disk drivers drivers/dma drivers/gpio drivers/i2c drivers/net drivers/net/phy drivers/power drivers/power/battery drivers/power/domain dr

2024-06-18 17:21:29 537

原创 make menuconfig V=1分析

(当在命令行中输入:时,94行条件成立,,101行条件成立,,则输出整个命令。输入命令自动匹配顶层 Makefile 的第563 行并执行,由于目标%config依赖和FORCE, 则执行顺序如下:执行依赖481-483行执行依赖492-497行执行依赖FORCE,什么都不做,2318行这三个依赖的生成见《》中的步骤1和步骤2:打印和执行命令【即生成 scripts/basic/fixdep 工具】,将实现目标所用的命令、源码、头文件等信息全部写入到文件中。

2024-06-11 18:55:41 567

原创 fixdep & conf & pkg-config & mconf 工具介绍

将配置文件和Kconfig文件中的相应信息写入到。查找实现目标所用的命令、源码、头文件等全部信息。实现目标所用的命令、源码、头文件等全部信息。系统的文件,较为复杂,也比较枯燥。,完成具体的词法和语法分析任务。编译产生的依赖文件*.d。编译时,编译器会根据选项。,是整个应用的主程序;主程序的文件,通过分析。文件生成新的依赖文件。

2024-06-06 19:40:42 675

原创 make xxxx_defconfig 分析【生成fixdep、conf工具】

(当在命令行中输入:时,94行条件成立,,101行条件成立,,则输出整个命令。输入命令自动匹配顶层 Makefile 的第563 行并执行,由于目标%config依赖和FORCE, 则执行顺序如下:执行依赖481-483行执行依赖492-497行执行依赖FORCE,什么都不做,2318行。

2024-05-31 16:49:12 590

原创 ./scripts/Makefile.build 分析

($($($($($($(if$($(if$($($($($($($($($($($($(if$($($($($(" = \$(目标PHONY在第17、417、424行中定义,最终目标PHONY依赖__build和FORCE。

2024-05-30 15:40:56 1177

原创 scripts/Makefile.host 分析【fixdep、conf】

所以第75行条件成立,执行第76行,第76行中的 $(_hostc_flags) 在第70行中定义,其中的。第92行:$(HOSTCC) 在顶层 Makefile 的282行定义。,在 scripts/basic/Makefile 中定义。,又在 Makefile.build 中第57行引用。第83行:$(__hostc_flags),当输入。,其目录下存在此类文件【fixdep.c】,经过。第24行:由于顶层 Makefile 中执行。分析,第95行实际是打印并执行。函数,并将相应内容输入到。

2024-05-30 13:45:40 952

原创 make disclean V=1 分析

编译后执行。

2024-05-27 19:46:30 867

原创 ./scripts/Makefile.clean 文件分析

从上到下依次执行,伪目标PHONY在第8行和第91行可知,,目标__clean在74行定义了依赖和语句,在92行定义了依赖和语句,所以从这两个目标的依赖和语句可知,优先执行目标再执行目标__clean。

2024-05-23 22:33:42 1106 1

原创 Makefile中的函数介绍

返回与模式相匹配的所有文件名列表,如果没有任何匹配,那么返回空字符串。在Makefile中用于获取匹配指定模式的所有文件名列表。

2024-05-20 16:00:40 558 1

原创 ./scripts/Makefile.buid 的分析

用于实现对用户自己定义函数引用。在执行时,将它的参数“ PARAM”依次赋值给临时变量“ $(1)”、“ $(2)”(这些临时变量定义在“ VARIABLE”的值中)……第 8 行就是在“scripts/basic”或“scripts/kconfig ”中查找符合“tpl/%”的部分,然后将“tpl/”取消掉,但是“scripts/basic”或“scripts/kconfig ”没有“tpl/”,所以 src= “scripts/basic”或“scripts/kconfig ”即src=$(obj)。

2024-05-16 13:51:50 962

MDK5插件:代码格式整理、文件注释、函数注释

MDK5插件:代码格式整理、文件注释、函数注释

2025-03-20

虚拟机环境和树莓派调试环境自动配置脚本

虚拟机环境设置包括ssh、ftp、nfs、交叉编译工具链、必要库; 树莓派环境设置包括串口登录、静态IP、软件源更换、时区、ssh、tftp等

2024-01-29

空空如也

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

TA关注的人

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