自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【机器学习】吴恩达机器学习笔记

计算机在没有明确编程的情况下,学习能力的研究领域例:编写一个程序,让计算机可能与自己对弈数万局,通过观察哪些棋盘位置倾向于导致胜利,哪些位置倾向于导致失败,跳棋程序随着时间的推移学会了什么是好的或坏的棋盘位置,通过尝试达到好的位置并避免坏的位置,这个程序越来越擅长玩跳棋。

2025-09-08 18:08:49 1091

原创 【stm32】定时器中断与定时器外部时钟

6.运行控制,模块配置完成后,还需要使能计数器。定时器使能后,计数器开始计数,当计数器更新时,触发中断,最后写一个定时器的中断函数。TIM_PSCReloadMode:模式(听从安排,在更新时间后生效;Mode 2:一个每点火一次(边沿)就转动一下的发动机,无论油门踏板是否踩着。5.配置NVIC,在NVIC中打开定时器中断的通道,并分配优先级。2.选择时基单元的时钟源,定时中断选择内部时钟源。4.配置输出中断控制,允许更新中断输出到NVIC。NewState,新状态,使能/失能。

2025-09-03 18:59:26 446

原创 【stm32】定时器(超详细)

预分频器写1,为2分频,此时输出频率 = 输入频率/2 = 36MHz;,可以把定时器的更新事件,映射到触发输出TRGO的位置,然后TRGO直接接到DAC的触发转换引脚上,这样,定时器的更新就不需要通过中断来触发DAC转换了,仅需把更新事件通过主模式映射到TRGO,然后TRGO就会直接触发DAC,实现了硬件的自动化。图中,刚开始,计数器未使能,计数器时钟不运行,使能后,前半段预分频器系数为1,计数器的时钟等于预分频器前的时钟,后半段,预分频器的系数变为2,计数器时钟就变为预分频器前时钟的一半了。

2025-09-01 20:08:49 2417

原创 【stm32】对射式红外传感器计次以及旋转编码器计次

最好不要在中断函数和主函数调用相同的函数或者操作同一个硬件,尤其是硬件相关的函数,在实现功能的时候,可以在中断里操作变量或者标志位,当中断返回时,再对这个变量进行显示和操作,这样既能保证中断函数的简短快速,又能保证不产生冲突的硬件操作。.中断函数里,最好不要执行耗时过长的代码,中断函数要简短快速,不要刚进中断就执行Delay,因为中断是处理突发的事情,如果为了一个突发的事情待在中断里不出来了,主程序就会收到严重阻塞。用来进行引脚重映射,第一个参数可以选择重映射的方式,第二个参数是新的状态。

2025-08-31 21:13:37 995

原创 【stm32】EXTI外部中断

在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。

2025-08-11 16:06:05 802

原创 【stm32】OLED

有机发光二极管OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64OLED.C 函数的主体代码OLED.h 外部可调用函数说明OLED_Font.h OLED的字库数据,因为该OLED显示屏不带字库,想要显示字符图形,得先定义字符的点阵数据需要更改的代码:1.引脚配置/*引脚配置*/

2025-08-07 18:55:30 403

原创 【stm32】按键控制LED以及光敏传感器控制蜂鸣器

包含完成LED和按键的驱动代码,但若将这两部分代码都放在主函数中,会使代码较乱,不易管理,也不易移植,故将这种驱动代码封装起来,单独放在另外的.c文件和.h文件里。若觉得函数太多,也可以定义LED_Set函数,定义两个参数,一个参数选择操作哪个灯,另一个参数选择开还是关。.在Hardware中添加新文件LED.c,LED.h来封装LED驱动程序,并在.c中写出开头。.回到keil,点击三个箱子按钮,打开工程管理,新建组Hardware。若想实现按下按键1,LED1亮,按下按键2,LED2亮,代码见附件。

2025-08-03 16:00:16 551

原创 【stm32】GPIO输入

传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻串联分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出C2滤波电容,给中间的电压输出进行滤波,滤除一些干扰,保证输出电压波形平滑在电路里遇到一端接在电路中,另一端接地的电容,考虑是否为滤波电容,若是,则不是电路主要框架,在分析电路的时候,可以先将其抹掉,使分析更加简单去掉滤波电容之后,构成了基本的分压电路。

2025-08-03 13:27:44 623

原创 【stm32】点灯及蜂鸣器

1.使用RCC开启GPIO的时钟2.使用GPIO_Init函数初始化GPIO3.使用输入或输出函数控制GPIO口用结构体的参数来初始化GPIO口需要先定义一个结构体变量,再给结构体变量赋值,最后调用这个函数,这个函数就会自动读取结构体的值,自动把外设的各个参数配置好这个函数可以把结构体变量赋一个默认值结构体变量赋值点灯用推挽输出故,调用函数GPIO输出函数可以把指定端口设置成高电平可以把指定端口设置成低电平根据第三个参数的值来设置指定端口BitVal:Bit_SET:输出

2025-08-02 15:12:30 980

原创 【stm32】GPIO

1.可配置8种输入输出模式的电路基本结构一样,都可以读取端口的高电平,区别为上拉电阻和下拉电阻的连接。引脚悬空时,上拉输入默认高电平,下拉输入默认低电平,浮空输入不确定,要在端口处接一个连续的驱动源,不能悬空。在输入模式下,输出驱动器断开,只能输入不能输出当输入为5V时,上面的保护二极管要进行处理,否则接VDD 3.3V时,外部接入5V电压会导致上面二极管开启并产生比较大的电流只剩下引脚接入片上外设一条线,会关闭数字的输入功能当使用ADC时,将引脚配置为模拟输入。

2025-08-01 14:43:47 955

原创 【stm32】新建工程

芯片型号为stm32f103c8t6,故选择stm32f103c8,点击ok。

2025-07-15 20:31:31 618

原创 【数据结构】栈与队列

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,出栈:栈的删除操作叫做出栈。

2025-02-05 00:08:15 966

原创 【数据结构】双向链表

List.hList.cTest.c例1方法:拷贝节点链接在原节点的后面拷贝原节点的random,原节点的random->next拷贝链表解下来,链接成一个新链表,原链表恢复顺序表,链表储存在堆上对顺序表/链表每个位置数据遍历访问/修改 cpucpu不能直接访问内存->cpu高速缓存cpu->缓存,命中,直接访问;不命中,把内存中的数据加载到缓存中再进行访问,但不能把所有数据都加载过去,会将一些数据挤出去,会使用一些算法为什么顺序表缓存利用高而链表缓存利用低:当内存中的数据向缓存中

2025-02-03 12:48:20 622

原创 【数据结构】链表OJ

方法1:方法2:不是val的值,尾插到新链表。

2025-01-31 21:37:34 543

原创 【数据结构】顺序表和链表

线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

2025-01-20 21:36:18 486

原创 【数据结构】复杂度

算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏,一般是从两个维度来衡量的,即时间复杂度和空间复杂度。主要衡量一个算法的运行快慢,而主要衡量一个算法运行所需要的额外空间。在计算 机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。

2025-01-17 12:46:37 806

原创 【重生之我要苦学C语言】文件操作

磁盘(硬盘)上的文件是文件但是在程序设计中,我们一般谈的文件有两种(从文件功能程序文件数据文件。

2024-12-15 00:00:10 1177

原创 【重生之我要苦学C语言】动态内存管理

1.栈区 (stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。2.堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS(操作系统)回收。分配方式类似于链表。3.数据段(静态区):(static)存放全局变量、静态数据。程序结束后由系统释放。

2024-11-23 16:50:24 1068

原创 【重生之我要苦学C语言】自定义类型——联合和枚举

像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型,但是编译器只为最大的成员分配足够的内存空间。联合体的特点是结构体和联合体内存对比。

2024-11-21 18:37:00 640

原创 【重生之我要苦学C语言】自定义类型——结构体

1.位段的成员必须是int、unsigned int或signed int,在C99中位段成员的类型也可以选择其他类型。2.位段的成员名后边有一个冒号和一个数字。struct S{位段中的位为二进制位struct A{int a;//32个比特位int b;//32个比特位int c;//32个比特位int d;//32个比特位//数字不能超过32struct A{int a : 2;//2个比特位int b : 5;//5个比特位int c : 10;

2024-11-21 15:26:09 993

原创 【重生之我要苦学C语言】 数据在内存中的存储

1.整数在内存中的存储整数的2进制表示方法有三种,即原码、反码和补码有符号的整数,三种表示方法均有和两部分,符号位都是用,最高位的一位是被当做符号位,剩余的都是数值位。正整数的原、反、补码都相同。负整数的三种表示方法各不相同。:直接将数值按照正负数的形式翻译成二进制得到的就是原码。:将原码的符号位不变,其他位依次按位取反就可以得到反码。:反码+1就得到补码。

2024-11-21 00:33:18 772

原创 【重生之我要苦学C语言】C语言内存函数

只关注要拷贝的数据在哪里,要存放到哪里,拷贝几个字节至于内存中存放什么数据,什么类型数据,不重要strcpy,strncpy只适用于字符串memcpy函数不保证重叠内存的拷贝,通常使用memcpy函数拷贝不重叠内存的数据,那么重叠的情况怎么处理?——memmove。

2024-11-19 20:30:04 520

原创 【重生之我要苦学C语言】字符函数和字符串函数

C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的这些函数的使用都需要包含一个头文件是。

2024-11-18 22:43:06 989

原创 【重生之我要苦学C语言】深入理解指针6

sizeof是操作符strlen是库函数,使用时需要包含string.hsizeof计算操作数所占内存大小,单位是字节strlen是求字符串长度的,统计的是\0之前字符的个数sizeof不关注内存中存放什么数据sizeof关注内存中是否有\0,如果没有\0,就会持续往后找,可能会越界。

2024-11-15 17:40:37 664

原创 【重生之我要苦学C语言】深入理解指针5

回调函数就是一个如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应fun为回调函数。

2024-11-13 12:24:30 405

原创 【重生之我要苦学C语言】深入理解指针4

指针指向指针指向结果是一样的字符数组可以存放字符串,常量字符串和数组是非常相似的,也是在一个连续的空间中存放了多个字符,但是问:打印结果答案为:2 3str3和str4完全相同,为了节省内存,str4并不会被创建str1,str2为数组名,是数组首元素的地址,两个数组创建的是不同的空间,首元素地址不同,故str1!=str2str3,str4比较的是两个指针变量中存放的地址,所以str3==str4。

2024-11-04 01:30:00 1220

原创 【重生之我要苦学C语言】深入理解指针3

数组名是,但有两个&arr+1比&arr大了40,即跳过了整个arr数组。

2024-11-03 00:01:52 586

原创 【重生之我要苦学C语言】深入理解指针2

当const修饰变量时,是无法更该该变量的值的报错:a变成了常变量,a的本质还是变量,但是因为被comst修饰,所以不能改变报错:n是变量,语法限制了n只是不能被修改在c++中,const int n里的n就是常量但这是违反规则的,因为用const修饰的a是不期望被改变的则仍无法进行变量值的修改。

2024-11-02 18:35:49 1364

原创 【重生之我要苦学C语言】深入理解指针(1)

计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中将内存划为一个个的内存单元,每个内存单元的大小取一个字节一个比特位可以存储一个2进制的位1或者0每个内存单元(相当于一个宿舍)一个字节里面能放八个比特位(相当于每间宿舍住八个学生,每个学生为一个比特位),每个内存单元都有一个编号(相当于宿舍的门牌号),有了这个编号,CPU就可以快速地找到一个内存空间。

2024-10-31 16:12:38 1289

原创 【重生之我要苦学C语言】操作符详解、结构体与表达式求值过程

struct:关键字tag:名字member-list:成员列表(1个/多个成员)variable-list:变量列表(可有可无)例:描述一个学生:名字——char name[20];年龄——int age;性别——char sex[6];//男/女/保密 一个汉字占两个字符学号——char id[12];//声明一个结构体类型int age;}s4;//s4是一个全局结构体变量//s3是一个全局结构体变量。

2024-10-30 20:17:05 1279

原创 【重生之我要苦学C语言】 函数递归

递归就是递归一定是基于函数的在任何一次函数调用中,都会申请资源,申请的是内存中的资源栈区的资源是的,因此函数。

2024-10-27 12:31:56 796

原创 【VS2022】重生之今天苦学VS调试( ง `ω´ )۶

bug一般指在电脑系统或程序中,隐藏着一些未被发现的缺陷或问题。

2024-10-26 21:37:52 1609

原创 【重生之我要苦学C语言】扫雷游戏的初步实现与详细解析

学完了数组与函数,实现一个简单的扫雷游戏。

2024-10-25 00:07:59 1187

原创 【重生之我要苦学C语言】函数2---函数的声明与使用/认识static与extern

例:判断闰年先进行定义函数的定义也是一种特殊的声明//是闰年返回1,不是返回0//函数的定义// }// else// 或者//}//判断if (is_leap_year(year)) //函数的调用printf("%d 是闰年\n", year);elseprintf("%d 不是闰年\n", year);return 0;或者先声明后使用//函数的声明只需交代类型和个数即可//判断if (is_leap_year(year)) //函数的调用。

2024-10-24 20:37:02 1461

原创 【重生之我要苦学C语言】猜数字游戏和关机程序的整合

学习新的知识的确不可或缺,但是复习与知识的整合与思考也很重要。“我们终其一生,就是要摆脱别人的期待,找到真正的自己。今天来把学过的猜数字游戏和关机程序来整合一下。如果有不明白的可以看往期的博客。

2024-10-21 15:04:27 733

原创 【重生之我要苦学C语言】二分查找与函数1

二分查找和函数1

2024-10-20 16:01:25 1051

原创 【重生之我要苦学C语言】数组(array)

数组(array)

2024-10-19 18:32:18 1704

原创 【重生之我要苦学C语言】分支和循环--猜数字游戏

分支和循环---猜数字游戏

2024-10-19 12:11:41 531

原创 【重生之我要苦学C语言】关机程序以及oj中多组数据的输入~

【C】关机程序以及oj中多组数据输入

2024-10-16 06:00:00 834

原创 【重生之我要苦学C语言】分支与循环2--while/for/do-while/goto以及break和continue在不同循环中的辨析~

分支与循环2--while/for/do-while/goto以及break和continue在不同循环中的辨析~

2024-10-15 22:45:07 2422

stm32OLED//

stm32OLED//

2025-08-07

空空如也

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

TA关注的人

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