自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决Cubemx生产的 .ioc文件不能外部打开的方法

2.重新安装一次cubemx,在安装的时候选择为我安装,而不是为所有用户安装;1.首先检查java环境是不是装的JAVA8,如果是的话进行第二步操作;但是当图标白色的时候,无法通过直接点击这个文件进入cubemx。正常来说,cubemx生成的文件会有图标。

2025-03-27 23:12:12 347

原创 DMA 之FIFO的作用

1,减少AHB带宽的占用,减少AHB总线的仲裁,让CPU能够在AHB总线上占用更大的带宽而不需要和DMA经常竞争总线。假如没有FIFO,数据进来一次就立刻通过流输出,DMA占用了总线CPU就不能占用总线了,而总线的带宽一般是32为,一个字节进来就打断一次,效率太低了。假如没有FIFO,数据进来一次就立刻通过流输出,DMA占用了总线CPU就不能占用总线了,而总线的带宽一般是32为,一个字节进来就打断一次,效率太低了。但是有了FIFO,可以先存够相应字节再一起发出去,提高了资源的利用率;

2025-03-27 23:04:03 436

原创 通过TIM+DMA Burst 实现STM32输出变频且不同脉冲数量的PWM波形

ARR (Auto-Reload Register):决定PWM频率。频率公式:PWM频率 = 定时器时钟 / (ARR + 1)示例:pulse1[0] = 1000 → 频率 = 100MHz / 1001 ≈ 99.9 kHzpulse2[0] = 5000 → 频率 = 100MHz / 5001 ≈ 20 kHzRCR (Repetition Counter Register):控制脉冲个数。脉冲个数公式:脉冲数 = RCR + 1示例:

2025-03-27 22:58:47 1391

原创 (万字图文解析!!!)单片机组成(内核+架构+外设),代码下载及运行原理总结

架构的定义:在计算机领域,“架构”指的是 计算机系统的设计蓝图,它定义了硬件和软件之间的交互规则。类比:就像一座房子的设计图,规定了房间布局、门窗位置、水电管道等。计算机架构决定了CPU如何执行指令、如何访问内存、如何处理数据等核心功能。指令集架构(ISA) 是架构的核心部分,可以理解为 CPU的“语言”:ISA本身是规范,既需要硬件实现,也需要软件遵循。硬件角度:ISA定义了CPU能理解和执行的所有指令(如加法、跳转、数据加载等)。

2025-03-15 19:11:18 1334

原创 一文理解电阻,电容,电感

QFN” Quad Flat No-lead “四方扁平无引脚封装”

2025-03-15 10:06:41 888

原创 算法的时间复杂度和空间复杂度

一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数,那么这里我们使用大O的渐进表示法(估算)。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数。在实际中一般情况关注的是算法的最坏运行情况,所以数组中搜索数据时间复杂度为O(N)

2024-11-03 09:27:10 1064

原创 C语言文件操作

磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。

2024-11-01 16:53:27 994

原创 (C语言)结构体,联合体,枚举

位段的声明和结构是类似的,有两个不同:1.位段的成员必须是int、unsigned int 或signed int。2.位段的成员名后边有一个冒号和一个数字。int _b : 4;int _c : 8;A就是一个位段类型联合也是一种特殊的自定义类型这种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间(所以联合也叫共用体)。//4个字节char b;//1个字节int main()union Un u;

2024-11-01 16:43:46 1755

原创 (C语言)动态内存管理,柔性数组

size是要申请的字节数,这个函数最后回返回开辟这个空间的起始地址内存开辟失败返回空指针理解内存泄漏的概念:如果开辟一块空间,用完之后没有释放,即没有还给操作系统,其他的变量也用不了这块空间,就相当于这块空间丢了,这种情况就叫做内存泄漏int main()return 1;//返回1说明是异常返回i < 10;i++)i < 10;//free释放这块空间存放的东西,但是p指向的地址没有被释放p = NULL;//让p为空指针return 0;

2024-11-01 16:27:16 1691

原创 通讯录(C语言练手小项目)1

首先,新建项目,创3个源文件,分别为test.c , contact.c , contact.h。contact. c 通讯录相关的实现。contact. h 通讯录相关的声明。这是静态版本,后面会有动态版本。test. c 测试功能。

2024-10-28 10:52:37 255

原创 指针(进阶)

parr3存放的是类型为int (*)[ 5 ]的数组指针的数组,存放的数组指针指向的数组有5个int 类型的元素。strlen(&p)是随机值,是从p的地址开始往下找,和字符串的内存空间是两回事,p只是存放字符串的首元素地址。sizeof(int)是直接给类型,sizeof(a)函数会分析a的类型,其实是一样的。3.指针是有类型,指针的类型决定了指针的+-整数的步长,指针解引用操作的时候的权限。1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。能够指向浮点型数据的指针。

2024-10-27 10:58:19 760

原创 数据存储(整型,浮点型在在内存中的存储和获取方式)

小数点可以左右移动,所以float被称为浮点型在不同系统中,long所占字节不同。32位系统是4字节,64位是8字节平时我们写的int a=0;相当于signed int a=0;即有符号整型(signed int)unsigned int 是无符号整型,没有符号位。第二个void只是说明不要传参,但是像图片中的test(1)硬是传也没办法,只是不用而已,编译器会报警告。hehe还是可以正常打印。我们之前讲过一个变量的创建是要在内存中开辟空间的。空间的大小是根据不同的类型而决定的。

2024-10-15 23:05:06 1794 1

原创 C语言指针(初阶)

p可以找到0x0012ff40的空间,但是不能使用这个空间,局部变量空间出了函数会销毁(空间又还给了系统)字节->kb->MB->GB 他们之间的进制是1024 8个bit(比特)=1个byte(字节)指针变量只是存地址,它可以访问多少个字节的权限取决于特点类型。32位系统 :指针占4个字节,64位系统:指针占8个字节。int* p1,*p2,*p3 这样才是初始三个指针变量。指针+指针(相当于地址+地址)没有意义。pa的大小取决于它所存地址的大小。第一个字节的地址就是a的地址。这是32位电脑的内存。

2024-10-12 23:39:54 451

原创 调试技巧(vs2022 C语言)

启动调试,经常用来直接跳到下一个断点处(F5通常和F9配合使用,打了断点按F5程序可以直接运行到断点处,这样提高了调试效率)F10和F11有区别,F11可以进到Add函数内部(但是现在的编译器一般不支持调试库函数),F10不会,所以F11更加细致。创建断点和取消断点(可以在程序的任意位置设置断点,这样可以让程序在随意的位置停止执行,继而一步步执行下去)逐语句,即每次执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数的内部(这是最常用的)调试可以看函数堆栈,反汇编,寄存器等。

2024-10-11 21:27:30 594 2

空空如也

空空如也

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

TA关注的人

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