自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32 Hal库版—NVIC、外部中断(EXTI)、AFIO

STM32中的中断是指在程序正常运行时,外部事件或内部异常强行打断当前执行流程,转而执行相应处理程序,完成后再返回原流程的机制。在STM32中,中断是指当外设或处理器内部发生某些事件时,处理器暂停当前执行的程序,转而执行预定义的中断服务程序,处理完毕后再返回原程序继续执行的机制。

2025-06-30 00:31:23 959

原创 STM32 Hal库版—GPIO

GPIO的全称是General Purpose Input Output,即通用输入输出端口,它和51单片机里的IO口一样,只是一个输入输出的端口,负责采集外部器件的信息或者控制外部期间工作。CRL、CRHIDRODRBSRRLCK配置工作模式,输出速度输入数据输出数据设置ODR寄存器的值配置锁定。

2025-06-27 16:28:37 1221

原创 STM32 Hal库版—STM32CubeMX软件和创建一个工程

STM32CubeMX是ST开发的一款图形配置工具,可通过配置自动生成初始化代码,不会生成逻辑代码,因此该软件只是一个辅助工具,想要配置一个外设的初始化,看手册也难以理解的时候,这个软件是个不错的选择。一个图形配置工具,搭配不同系列的STM32Cube固件包,即可支持不同系列的STM32芯片。

2025-06-26 23:48:03 895

原创 STM32 Hal库版—介绍STM32和新建Hal库工程

STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器,常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等。STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器。

2025-06-26 16:51:20 287

原创 51单片机—红外遥控器和NEC协议

人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为 0.62~0.76μm;紫光的波长范围为 0.38~0.46μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。红外线遥 控就是利用波长为 0.76~1.5μm 之间的近红外线来传送控制信号的。红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出。通信方式:单工,异步红外LED波长:940nm通信协议标准:NEC标准。

2025-06-26 15:48:58 702

原创 51单片机—AD和DA的转换

运算放大器(简称“运放”)是具有很高放大倍数的放大电路单元。内部集成了差分放大器、电压放大器、功率放大器三级放大电路,是一个性能完备、功能强大的通用放大电路单元,由于其应用十分广泛,现已作为基本的电路元件出现在电路图中。ADC(analog to digital converter)也称为模数转换器,是指一个将模拟信号转变为数字信号。单片机在采集模拟信号时,通常都需要在前端加上 A/D 芯片。DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信。

2025-06-26 11:08:50 1040

原创 51单片机—脉冲宽度调制(PWM)实现直流电机的调速和呼吸灯

PWM 是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域。频率 = 1 / T(S)占空比 = T(ON) / T(S)精度 = 占空比变化步距直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。

2025-06-25 16:02:24 547

原创 51单片机—单总线和DS18B20

单总线是美国DALLAS公司推出的外围串行扩展总线技术。与SPI、IIC串行数据通信方式不同.它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线一根通信线:DQ异步、半双工单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线。

2025-06-25 11:32:31 1387

原创 链表的插入、删除、修改与创建

每来一次新的数据,就放在链表的头里,先到后出,类似栈,也类似弹匣压子弹的方式。尾插法讲究先来后出,按顺序输入,按顺序输出。在查找的基础上只是添加了这一行代码即可实现。尾插法指在链表中特定节点的。把原来的链表首地址传过来,函数有三个参数,分别是。插入这一个新的节点。

2025-06-22 17:28:12 843

原创 链表节点个数和链表查找

编写一个返回int类型的函数,在函数里面,定义一个count计数进入循环的次数,也就是指针没有指向NULL之前。

2025-06-21 23:40:25 209

原创 链表的引入

链表是一种数据结构,用于存放数据的数据结构思想。链表通过将数据串联起来,使得节点更加灵活高效,适用于需要频繁修改数据结构的场景。与数组相比,链表可以更高效地处理动态数据结构,因为其大小可以在运行时动态调整。此外,链表还具有更好的空间利用率,因为每个节点只包含必要的数据和指针,而数组则需要为所有元素分配内存,即使某些元素未被使用。

2025-06-21 21:18:37 146

原创 Linux简介

Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。

2025-06-21 11:12:04 1004

原创 51单片机—IIC总线和AT24C02

AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息。存储介质:E2PROM(电可擦除可编程ROM)通讯接口:I2C总线容量:256字节。

2025-06-18 23:46:39 971

原创 51单片机—DS1302实时时钟

S1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和 31 字节静态 RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过 AM/PM 指示决定采用 24 或 12 小时格式。RES复位I/O数据线SCLK串行时钟S1302 由 DS1202 改进而来增加了以下的特性:双电源管脚用于主电源和备份电源供应,Vcc1 为可编程涓流充电电源,附加七个字节存储器。

2025-06-18 22:04:30 500

原创 51单片机—定时器和中断系统

如果CPU能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为。定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔“一秒”,计数单元的数值就增加一,当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行。微型机的中断系统一般允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在CPU 优先响应哪一个中断源请求的问题。

2025-06-18 17:15:22 658

原创 51单片机—按键

按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开。我们开发板上使用的按键及内部简易图如下图所示:按键管脚两端距离长的(1和3)表示默认是导通状态,距离短的(1和2)默认是断开状态, 如果按键按下,初始导通状态变为断开,初始断开状态变为导通。

2025-06-18 16:03:36 195

原创 51单片机—LED流水灯

LED 即发光二极管。它具有单向导电性,通过 5mA 左右电流即可发光,电流越大,其亮度越强,但若电流过大, 会烧毁二极管,一般我们控制在 3mA-20mA之间,通常我们会在 LED 管脚上串联一个电阻,目的就是为了限制通过发光二极管的电流不要太大,因此这些电阻又可以称为“限流电阻”。当发光二极管发光时,测量它两端电压约为 1.7V,这个电压又叫做发光二极管的“导通压降”。下图左右分别为直插式发光二极管和贴片式发光二极管实物图。发光二极管正极又称阳极,负极又称阴极,电流只能从阳极流向阴极。

2025-06-18 15:28:11 174

原创 51单片机—软件、创建工程及模块化编程

Keil uVision5(编程软件)stc-isp-15xx-v6.75(烧录软件)

2025-06-18 15:11:02 310

原创 联合体(共用体)的引入

联合体也叫共用体,它是C语言中与结构体类似的数据结构,不同之处在于,联合体共享同一块内存空间,存放不同类型的变量。,而结构体每个元素拥有独立空间。

2025-06-18 11:32:41 126

原创 结构体指针数组函数或结构体二级指针的综合应用,选票系统

提示有多少人参选,并输入各自的名字,有5次投票机会,输出每一位的票数和当选人一多少票当选,多少人弃票。

2025-06-15 16:30:10 108

原创 结构体数组,结构体指针

定义一个结构体数组和定义一个普通的数组差不多,表示有括号里面这么多个相同的结构体,只不过里面的成员各不相同。遍历结构体数组的方式也是使用变量i和for。

2025-06-15 16:15:04 372

原创 几个常用的API

malloc是在堆上面动态开辟内存,它的函数原型,意思是分配所需的内存空间,并返回一个指向它的指针。使用malloc前,需要在程序开始包含它的头文件。

2025-06-14 16:15:46 509

原创 字符串的引入

中括号里的数,当等于号后面有具体字符串的时候可以不填,这个数是用来说明需要多少空间内存。当使用指针来定义字符串的时候,指针里面的字符串不允许改动,而使用数组的可以改动。遍历一个字符串也和遍历整型数组一样,定义一个变量。字符串和整型数组一样,先定义一个字符串。循环来遍历整个字符串,也可以通过。

2025-06-14 12:41:56 255

原创 二级指针的概念,二级指针和二维数组容易犯的错误,为什么要用到二级指针

一级指针变量存放别的变量的地址,一级指针也有自己的地址,接下来的二级指针就是用来存放一级指针的地址,然而二级指针也有自己的地址,可以用三级指针来存放二级指针的地址,这样的方式像套娃。

2025-06-14 10:32:17 317

原创 函数指针,指针函数

函数指针就是存一个函数的地址,同样也讲究函数指针的类型和函数的类型相同,函数的地址又是函数名和数组的地址是数组名一样。如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。

2025-06-10 15:33:58 321 1

原创 sizeof和strlen

在 C 语言中,是一个编译时运算符,用于计算数据类型或变量所占用的字节数。在 C 语言中,是一个用于计算字符串实际(有效)长度的标准库函数。用一个例子来说明:如果把 [ ] 里面写上数字,那么sizeof就会按照 [ ] 里的数组输出。

2025-06-10 11:14:13 121

原创 printf和puts/putchar

在 C 语言中,printf和put(通常指putchar或puts。

2025-06-10 10:32:11 157

原创 数组指针,指针数组

在 C 语言中,数组指针是一种指向整个数组的,其类型与普通指针不同。

2025-06-10 10:11:39 253

原创 二维数组的地址认知,二维数组与指针的关系

这是一个int类型的二维数组,它的数组名array是整个二维数组的首地址,array[0]和也是首地址。

2025-06-10 09:16:45 162

原创 二维数组的概念及遍历

在 C 语言中,二维数组是一种特殊的数组结构,可视为 “数组的数组”,用于表示表格或矩阵形式的数据,它们的地址也是在一块区域内有顺序的存放。它们的首地址有多种表达方式,例如a[2][3]表示为2行3列的数组。二维数组名a是整个二维数组的首地址,也是第一个元素a[0][0]=1的首地址;第一行的首地址为a[0],也是第一个元素的地址;&a[0][0]也是整个二维数组的首地址。​​。

2025-06-10 09:14:44 183

原创 指针和指针变量

访问变量的两种方式,一种是直接访问变量名的叫做“直接访问”;通过指针来访问的方式叫做“间接访问”。

2025-06-09 22:37:44 281

原创 函数的形式参数和实际参数

在主函数调用函数传上去的a只是a地址的数值,改变的只是Change函数里的局部变量,并不能影响主函数的a,相当于复制了一份a地址的值给Change函数,因此改变前和改变后都是一样。形式参数的传递。

2025-06-09 21:25:16 144

原创 递归函数的认识

举例:第一名学生年龄为10岁,下一名加2岁,下一名又加2岁,直到第五名同学多少岁?图中age1函数里,当前学生的年龄为他的前一名学生的年龄加2。

2025-06-08 21:05:46 135

原创 函数的学习

在C语言中,有时候需要用多种功能来实现程序的执行,往往有着大量的代码来支撑。函数的出现就是为了避免代码的冗长,对不同功能有不同的函数,形成模块化程序思路,并按功能命名,函数的名字要提示函数的功能含义,这样程序不仅美观,各个功能还一目了然,极大的提升了工作效率。

2025-06-08 14:05:50 116

原创 冒泡算法和选择排序算法

冒泡算法,是一个比较简单的算法,通过前一个数据和后一个数据进行比较,将所需要的值慢慢比较上去,下面先由小到大进行举例,一个数组里面有四个排序不规则的元素为[4,0,6,2],第一次比较,4和0,4往后走,变为[0,4,6,2];第三次比较6和2,6往后走,变为[0,4,2,6],比出第一轮最大值为6;第二次比较4和2,4往后走,变为[0,2,4],比出第二轮最大值4;将剩下最后两个进行比较,第一次比较0和2,不变,还是[0,2],比出第三轮最大值2,因此整个数组变成了[0,2,4,6]。

2025-06-08 11:18:09 165

原创 关键字sizeof

关键字sizeof常应用在数组,当数组长度过长的时候,用 sizeof ( array ) / sizeof ( array[0] )来得出数组里的元素个数。图1 sizeof的用法。

2025-06-08 00:42:00 194

原创 数组的概念,赋值及数组的遍历

在 C 语言中,数组是由相同数据类型的元素构成的有序集合,存储在连续的内存区域。注意越界行为,如:array[10]是非法的。

2025-06-08 00:27:26 208

原创 提前跳出循环的语句,break和continue的概念及用法

在 C 语言中,break和continue是用于控制循环流程的关键字。break语句用于立即终止当前所在的整个循环(for、while或do while)或switch语句,程序将跳转到循环或swtich后的下一条语句继续执行。例如,在while(1)无限循环中,当满足某个条件时使用break可强制退出。continue语句则用于跳过当前循环体中剩余的代码,直接进入下一次循环迭代。对于for循环,执行continue后会先更新循环变量,再判断条件;对于while和do while,则直接跳转至条件判断。

2025-06-07 23:56:17 237

原创 循环语句,for的概念及用法

在 C 语言中,for是一种前测试循环语句,用于实现明确次数或条件的迭代。其核心语法为:for。执行流程为:1.先执行初始化表达式(仅一次);2.判断条件表达式,若为真则执行循环体;3.循环体执行完毕后,执行更新表达式;4.重复步骤 2-3 直至条件为假。三个表达式均可省略,但分号必须保留(如for;表示无限循环)。初始化表达式常声明或赋值循环变量(如int i=0),条件表达式控制循环终止条件(如i<10),更新表达式修改循环变量(如i++

2025-06-07 23:21:58 313

原创 循环语句,do while的概念及用法

在 C 语言中,do while是一种后测试循环语句,确保循环体至少执行一次。其核心语法为:do{ 循环体 }while(条件表达式);。程序先执行do后的循环体,再判断while后的条件表达式,若为真(非零)则继续循环,否则退出。与while循环的关键区别在于,dowhile的条件判断发生在循环体执行之后,因此无论条件初始是否成立,循环体至少会执行一次。

2025-06-07 23:09:31 155

空空如也

空空如也

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

TA关注的人

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