自定义博客皮肤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)
  • 收藏
  • 关注

原创 stm32HAL库

配置定时器Clock Source(时钟来源):一般选择internal clock(RCC)设置定时器的结构。

2026-07-26 11:21:16 222

原创 stm32入门篇

简介:STM32 引脚触发中断,外部电平 / 边沿变化触发程序跳转AFIO 的核心作用:AFIO 主要用于引脚复用功能的选择和重定义,是 STM32 中配置 GPIO 引脚特殊功能的关键模块。STM32 中 AFIO 的两大核心任务复用功能引脚重映射:调整外设默认引脚映射关系,解决引脚资源冲突,优化硬件设计。中断引脚选择:确定外部中断线与具体 GPIO 引脚的对应关系,配置外部中断输入源。简介:将模拟电压转换为数字变量,可将ADC看成一个电压表,将引脚的电压值测出,放在一个变量里。

2026-06-08 21:26:23 346

原创 C语言进阶篇(程序环境和预处理)

_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义int main()int i=0;for(i=0;i<=9;若打印出来的数为1,则说明遵循ANSI C,否则不遵循。

2026-05-17 09:44:44 397

原创 C语言进阶篇(文件操作)

包括源程序文件(后缀为.c), 目标文件(windows 环境后缀为.obj), 可执行程序(windows 环境后缀为.exe)。

2026-04-26 21:51:29 353

原创 C语言进阶篇(动态内存管理)

后面要加上p=NULL的原因:free(p)后将40个字节的还给操作空间,但p的地址还没发生变化,p还能找到这个内存区域,可是这个内存区域已经还给操作系统,这样访问p的话,p就成了野指针,不安全,所以还要加上p=NULL。这么做是不可取的,所以realloc函数会在堆区找一个空的内存开辟80个字节,然后将原有的40个字节内存拷贝过来,释放旧的空间,然后返回新的地址。在执行free函数之前就已经已经返回,导致开辟的动态内存还没来得及释放,那么给变量p的100个字节大小的空间就再也无法找到了,造成了内存泄漏。

2026-04-23 19:26:39 331

原创 C语言进阶篇(自定义类型)

int x;inty;}p1={1,2};int x;int y;int point;char ch;int main()

2026-04-15 20:02:31 39

原创 C语言进阶篇(内存函数)

return ret;for(i=0;i<sz;会得到:1 2 1 2 1 2 1 7 8 9(内存重叠导致的)拷贝完一个数字后再拷贝的下一个字符。结论:memcpy是不用来处理重叠的内存之间的数据拷贝的。使用memmove函数来实现重叠内存之间的数据拷贝。会得到:1 2 1 2 3 4 5 7 8 9elsereturn ret;

2026-04-11 16:28:39 50

原创 C语言进阶篇(指针进阶(续))

已知函数指针格式如下:(pf是函数指针)则可推出函数指针数组:格式如上:其中Add,Sub,Mul,Div均为函数,arr就是函数指针的数组若函数指针数组的格式如下则下图为指向函数指针数组的指针。

2026-03-25 20:09:34 236

原创 51单片机入门(模块化编程篇)

模块化编程:把各个模块的代码放在不同的.c文件中,这样可使多人同时合作完成一个项目,相比放在同一个.c文件效率更高。

2026-03-21 17:09:35 73

原创 C语言进阶篇(字符串函数和字符函数)

原因:arr1==arr2是比较两个数组首元素地址是否相同,但是两个首元素的地址又不在同一空间,则arr1==arr2是必然不成立的。因为isdigit只能将数字0~9分类出来,所以 isdigit('x')的返回值为0,isdigit('0')的返回值为正数。当设置字符数超出arr2原有字符数时,缺少的部分只会补充一个\0(无论缺少多少个字符只会补一个\0)当设置字符数超出arr2原有字符数时,缺少的部分用\0来补充(缺多少个字符数就补多少个\0)原理:strcpy函数会将/0之前的数据拷贝过去。

2026-03-21 16:03:50 526 2

原创 51单片机入门(LED篇)

原有结构按下时:中间的弹片被压扁,三个接触点就会被连接,四个引脚也全部被连接松手时:中间的弹片不会被压扁原理图:第一个按键用P3_1表示;第二个按键用P3_0表示;第三个按键用P3_2表示;第四个按键用p3_3表示当P3_1用0表示时说明按键按下,用1表示时说明松开;例:if(P3_1==0)Delay(20);Delay(20);其中Delay是一个自己编写的延时函数,用来确定独立按键的状态(按下或松开)

2026-03-10 19:32:29 258

原创 C语言进阶篇(指针进阶)

分析以下两种情况:p1是指针数组,p2是数组指针,指向一个数组,而数组里有十个元素,每个元素都是int类型。注意:[]的优先级要高于*,所以必须要用()来确保p和*结合。对数组的认识:当数组名出现在sizeof()里时,它代表整个数组,此时sizeof(数组名)计算的是整个数组所占的字节大小。当数组名前加(即&数组名)时,它也代表整个数组,所以&数组名获取的是整个数组的地址(虽然和首元素地址的数值相同,但含义和步长不同)整形指针是用来存放整形的地址。字符指针是用来存放字符的地址。

2025-12-28 20:57:31 920

原创 C语言进阶篇(数据储存(浮点储存))

当指数 E 的真实值为 “1-127”=-126(对应 8 位 E 的情况)或 “1-1023”=-1022(对应 11 位 E 的情况)时,有效数字 M 的处理方式会改变 —— 不再补回开头的 “1”,而是直接还原成 “0.xxxxxx” 形式的小数。分析:9以整数存储的方式存,而*pFloat以浮点存储的方式拿出来。这么设计的目的,是为了表示 ±0,以及那些接近 0 的极小数字。结果说明:整型和浮点型在储存和获取值的时候方法是不一样的。1.E不全为0或E不全为1:(最常见)1.1浮点数储存的初步了解。

2025-12-15 20:37:41 287

原创 C语言进阶篇(数据储存(数据类型+整形储存))

Debug版本下符合以上原理的栈区内存使用习惯(先用高,再用低),而Release版本经过优化后内存使用方式与默认方式有所差异。char是unsigned类型还是signed类型由编译器决定,而int以及 其他类型都默认为是signed类型。signed和unsigned的区别:signed表示有符号,unsigned只表示值的大小。再看char的类型:若是char或signed char则要看a截取后的正负性来进行整形提升。说明:(char*)&i是一个地址的值,是无法来比较大小的;

2025-12-13 19:37:17 663 2

空空如也

空空如也

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

TA关注的人

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