- 博客(28)
- 收藏
- 关注
原创 中断向量表地址偏移的对齐要求
“中断向量表的二次幂对齐”指的是 中断向量表对 偏移量大小 的要求 ,在进行中断向量表偏移时,需要向上圆整,否则会出错。
2025-03-26 00:23:52
328
原创 ARM异常处理流程与中断机制总结,与常见丢中断情况
本文系统梳理了ARM Cortex-M系列处理器的异常与中断机制,从基本概念、处理流程到实际应用中的关键问题逐一解析。重点探讨了异常(同步)与中断(异步)的核心差异、NVIC控制器的特权访问机制、中断处理中的悬起状态与咬尾优化,以及因标志位清除不当导致的丢中断场景。
2025-03-26 00:14:41
1260
原创 嵌入式项目代码架构与分层
BSP:板级支持驱动程MCU和板上外设器件(比如MPU6050)的通信与交互过程。有时候分两种:1.在裸机(有限状态机)情况下,写的驱动程序;2.在操作系统下,写驱动程序。Core:MCU驱动程序面向MCU进行编程,初始化MCU内部的外设(时钟,IIC,SPI等外设)。包含main.c文件。Drivers:厂商SDK程序MCU厂商和MCU内的CPU厂商提供的,用来对CPU和偏上外设编程时用的驱动库,一般由厂家提供。Middlewares:中间件。
2025-03-17 23:10:19
494
原创 FreeRTOS&Bug解析:一个任务printf打印一半突然跳转另一个任务,导致另一个任务无法打印
FreeRTOS&Bug解析:一个任务printf打印一半突然跳转另一个任务,导致另一个任务无法打印。同时对文中读者可能不了解的的知识点提供一站式解析。
2025-03-17 23:02:42
954
原创 ARM体系结构解析:PC寄存器机制、三级流水线与C/汇编交互全揭秘
文章详解ARM与Thumb双态差异,揭秘三级流水线如何导致PC寄存器"当前地址+8"现象,解析ATPCS规则下汇编与C函数的参数传递奥秘。通过反汇编实例展现编译器优化策略,结合STM32启动流程图解Flash内容布局,并探讨volatile关键字对内存访问的关键影响。最后通过Keil实战演示反汇编码阅读技巧,为理解ARM架构、编写高效底层代码提供知识框架。
2025-03-15 12:14:01
870
原创 ARM:什么是满减栈?为何选择满减栈?
ARM通过硬件指令的寻址模式(如STMDB/LDMIA或STMFD/LDMFD)强制SP在压栈时先减后存、弹栈时先取后增,从而实现了“满减”栈。这种机制由架构直接支持,确保了栈操作的原子性和高效性,同时符合ARM标准调用约定(AAPCS)。
2025-03-14 21:21:53
1008
原创 MCU+RTOS学习笔记1
JTAG是一种国际标准测试协议,主要用于芯片内部测试,标准的JTAG接口为4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出。PC13通过LED接3V3,当PC13输入低电平时LED点亮,配置为推挽输出模式,无上下拉。SWDIO:串行数据输入信号,作为仿真信号的双向数据信号线,建议上拉。3.边界扫描,可以访问芯片内部信号逻辑状态,还有芯片引脚状态等等。SWCLK:串行时钟输入,作为时钟线,建议下拉。Vref:参考电压信号,不向外提供输出电压。2.JTAG主要功能。
2025-02-25 17:00:42
425
原创 【数据结构】栈和队列
栈,栈的概念及结构,实现数组栈,接口总览,相关实现,初始化:,栈顶数据的增删:,返回栈顶数据:,返回栈内数据个数:,栈的销毁:,来一道简单的栈的OJ题,队列,队列的概念及结构,队列的实现,接口函数总览,队列初始化和销毁,检测队列是否为空,队尾放入数据,队头删除数据,取队列头尾数据,队列内数据个数,用队列实现栈,使用栈实现队列,设计循环队列
2024-11-27 23:09:33
1261
原创 【数据结构OJ】相交链表问题,求相交链表的相交第一个交点
运用双指针,第一次遍历先一起走,当一个走到尾时开始计数,等另一个指针也走到尾时记录下两个指针的路程差,同时比对两个指针指向的地址是否相同,以此判断两个链表是否相交。 如果相交,则让两个指针回到两个单链表开头,让链表长的那个先走完两指针的路程差,然后再将两个指针同时启动,每走一步都比对两个指针指向地址,当两指针指向地址相同时,就是两个单链表相交的第一个相交节点。
2024-11-23 21:37:44
442
原创 【数据结构】链表解析与实战运用(1.8w字超详细解析)
链表:双向带头循环链表1、任意位置插入删除效率高。O(1)2、按需申请释放空间。1、不支持随机访问。(用下标访问)意味着:一些排序,二分查找等在这种结构上不适用。2、链表存储一个值,同时要存储链接指针,也有一定消耗(一般不用在意)3、cpu高速缓存命中率更低(详情见下文额外拓展)优点:(用下标访问)1、支持随机访问。需要随机访问结构支持算法可以很好的适用。2、cpu高速缓存命中率更高(详情见下文额外拓展)1、头部中部插入删除时间效率低。O(N)2、连续的物理空间,空间不够了以后需要增容。
2024-11-16 19:17:26
1290
原创 51单片机学习心得1(基于STC89C52):数码管、矩阵键盘、定时器、中断系统
基于STC89C52的51单片机学习心得:数码管、矩阵键盘、定时器、中断系统
2024-11-01 21:32:38
752
原创 【C语言】C语言预处理/预编译&宏定义与使用
C语言预处理/预编译详解&宏定义与宏使用详解,宏定义,#define,#include,条件编译指令,宏与函数的区别
2024-10-29 22:39:25
1045
原创 【C语言】C语言文件操作与文件操作函数的使用和剖析
C语言文件操作解析,C语言文件操作函数的使用和剖析,fgetc,fputc,fgets,fputs,fprintf,fscanf,fwrite,fread,fseek,ftell,rewind,feof
2024-10-29 00:16:24
1126
原创 数据的存储学习笔记
最简单的机器数表示法,最高位表示符号位,0表示正数,1表示负数,其余位表示数值的绝对值。原码表示直观易懂,但存在+0和-0两种表示形式,且在进行加减运算时规则复杂。正数的反码与原码相同,负数的反码是对其原码逐位取反,但符号位除外。反码解决了原码中+0和-0的问题,但仍然存在两个负数相加结果错误的情况。正数的补码与其原码相同,负数的补码是在其反码的末位加1。补码的出现解决了负数计算的问题,使得加法和减法可以统一为加法运算,简化了计算机的硬件设计。
2024-10-12 15:12:40
404
原创 【C语言】字符串函数的使用和剖析
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。字符串常量 适用于那些对它不做修改的字符串函数。
2024-10-12 14:55:41
818
原创 【C语言】指针详解
1.字符指针2.数组指针3. 指针数组4.数组传参和指针传参5. 函数指针6.函数指针数组7.指向函数指针数组的指针8.回调函数9.指针和数组面试题的解析(注:以下部分截图来源b站鹏哥C语言教学视频)
2024-10-10 10:23:25
1239
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人