自定义博客皮肤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】SPI回顾

一、定义SPI是Motorola首先提出的全双工四线同步串行外围接口,采用主从模式(Master-Slave)架构。

2024-09-27 14:07:41 1226

原创 【STM32】串口回顾

在目前工业控制,流行使用的串口通讯中,一般只使用。

2024-09-26 14:02:54 1179

原创 【stm32】中断回顾

概念:中断一般来自硬件(如片上外设、外部 I/O 输入等)发生的事件,当这些硬件产生中断信号时,CPU会暂停当前运行的程序,转而去处理相关硬件的中断服务程序。补充知识:异常主要是指来自CPU内部的意外事件,比如执行了未定义指令、算术溢出、除零运算等发生在 CPU内部的意外事件,这些异常的发生,会引起CPU运行相应的异常处理程序;有些场合如果没有明确指出是异常还是中断,就统称为中断。中断优先级:当有多个中断源同时申请中断时, CPU 会根据中断源的轻重缓急进行裁决,优先响应更 加紧急的中断源。

2024-09-25 21:10:06 1046

原创 【STM32】时钟回顾

晶振的全称叫做晶体振荡器,是晶体(石英)和电子元件组成,晶振有一个非常重要的特性:机电效应(压电效应),一般晶振会提供高度稳定的频率(振荡频率是固定的),一般晶振的频率有8MHZ、12MHZ、25MHZ、11.0592MHZ… 晶振的单位是HZ 频率(单位时间振荡的次数)

2024-09-25 20:39:54 798

原创 【STM32】GPIO回顾

输入模式没有推挽或开漏和速度设置。:GPIO_Mode_AN 外界模拟量,不加干涉(GPIO无效即使配置上下拉也无效),采集信息(电平信号1,0连续变化),模数转换(引脚直接接入内部ADC)。:GPIO_PuPd_UP 悬空无输入信号时,默认为高电平。有输入信号时,输入高为高电平,输入低为低电平。:GPIO_PuPd_DOWN 悬空无输入信号时,默认为低电平。有输入信号时,输入高为高电平,输入低为低电平。

2024-09-25 20:13:27 1218

原创 【STM32】PWM

定义PWM(Pulse Width Modulation), 脉冲宽度调制。脉冲: 方波, 频率(freq)宽度: 高电平的宽度, 占空比(duty)​ 详细波形如下图。用途控制灯光的亮度(手机/平板/显示器背光灯)电机的转速灯光的控制细节频率要大于 25Hz, 灯光的亮度的变化是跟着占空比而变化, 占空比越大, 灯光越暗;占空比越小, 灯光越亮。STM32工作过程​ CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。

2024-09-23 10:12:33 4408

原创 【STM32】定时器

定义​ 设置等待时间, 到达后则执行指定操作的硬件。STM32F407 的定时器有以下特征​ 具有基本的定时功能, 也有 PWM 输出(灯光亮度控制、 电机的转速)、 脉冲捕获功能(红外捕捉)。2 个高级控制定时器、 10 个通用定时器和 2 个基本定时器​ 高级控制定时器(TIM1 和 TIM8)​ 具有 16 位定时器功能, 也具有 PWM 输出高级控制功能, 一个定时器支持多路的 PWM 输出。​ 通用定时器(TIM2 到 TIM5)

2024-09-23 10:04:08 1482

原创 【STM32】定时器

一、 系统定时器SysTick 叫做系统滴答时钟、 系统定时器, 属于 Cortex-M4 内核中的一个外设(外围设备), 它 24bit 向下递减的计数 器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。Systick中断的优先级也可以设置。二、 系统定时器的中断使用方法1.代码的初始化。

2024-09-23 09:13:40 1585

原创 初识RTOS

​ 嵌入式操作系统(Embedded Operating System,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核设备驱动接口、通信协议图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。嵌入式实时操作系统µC/OS-II、嵌入式LinuxVxWorks。

2024-09-14 09:31:26 1574

原创 【STM32】中断

Cortex M3与M4权威指南》章节4.5 P104。

2024-08-27 11:21:56 1650

原创 【STM32】位带操作

1.意义回想以前写51代码//将P0端口设置为0x10 P1_0=1;//将P1端口0号引脚设置为高电平 a = P2_2;//获取P2端口2号引脚的电平根据上述的方法,我们可以发现快速定位修改某个引脚的电平还有获取引脚的状态2.原因GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit操作IO口的没有达到极致,因为这些函数都需要进行现场保护和现场恢复的动作,,没有进行一步到位,使用位带操作则没有上述的烦恼,

2024-08-27 11:08:23 2729

原创 【STM32】时钟体系

PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL基于振荡器中的反馈技术,许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,由相应的器件VCO,实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时钟信号。

2024-08-27 10:58:40 1207

原创 【STM32】GPIO

一、概述GPIO,即通用I/O(输入/输出)端口,是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。STM32F407有8组IO。分别为GPIOA~GPIOH,除了GPIOH只有两个IO,其余每组IO有16根引脚。GPIO的复用:STM32F4 有很多的内置外设,这些外设的外部引脚都是与 GPIO 共用的。也就是说,一个引脚可以有很多作用,但是默认为IO口,如果想使用一个 GPIO内置外设的功能引脚,就需要GPIO的复用,那么

2024-08-27 10:43:08 1706

原创 【STM32】MDK安装

Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司制造和销售种类广泛的开发工具,包括ANSI C编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-time kernel)。有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。

2024-08-27 10:22:29 3996

原创 【STM32】STM介绍

1978年,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn公司。1985年,Roger Wilson和Steve Furber设计了他们自己的第一代32位、6MHz的处理器,用它做出了一台RISC指令集的计算机,简称ARM(Acorn RISC Machine)。这就是ARM这个名字的由来。经典指令集CISC。

2024-08-27 09:59:08 1271

原创 最详细 <双向链表> 航班管理系统 + Makefile项目管理

本项目是一个航班管理系统,使用C语言编写,支持添加、显示、修改、删除航班信息,用户身份验证,航班排序,以及从文件中保存和加载数据。

2024-08-07 21:46:35 1012

原创 最全个人笔记【Makefile】

当一个项目中要编译的文件很多时,手工使用编译器一个个进行编译,很明显不具有可操作性,此时必须借助某些软件,协助我们有序地、正确地自动编译整个工程的所有该编译的文件。这样的软件被称为 **工程管理器**,`make` 就是一款工程管理器软件。### **1.2 Makefile是什么**`make` 正常工作时,会读取一个称为 `Makefile` 的配置文件,该配置文件可以为 `make` 指明细致的工作规则,比如所使用的工具链、要编译的目标文件名称、要递归编译的子文件夹路径等等。对工程管理器软

2024-08-01 20:57:11 615

原创 最全数据结构个人笔记【哈希表】

哈希表是一种为了提高查找效率的数据存储方式,其核心思想就是将节点的存储位置与节点本身对应起来,让我们在查找数据时无需通过比对就能直接计算得到它的位置。

2024-07-31 20:38:17 1374 1

原创 最全数据结构个人笔记【平衡二叉树】

​ 平衡二叉树又称AVL树,它或者是一棵空树,或者是具有以下特性的二叉排序树(BST)(1) 它的排布方式遵循小-中-大规律(2) 左子树和右子树的深度之差的绝对值不超过1(1,-0,-1)若将二叉树上的节点的平衡因子定义为该节点的左子树的深度减去它右子树的深度,所以平衡二叉树所有节点的平衡因子只可能是-1,0,1只有二叉树上有一个节点的平衡因子的绝对值大于1,则该二叉树不平衡。

2024-07-31 20:32:01 754

原创 最全数据结构个人笔记【树-BST】

​ 对于BST而言,插入一个节点主要是要保持其"小-中-大"的逻辑不变,因此插入的的逻辑可以从根节点开始,一步一步寻找新节点的"最终归宿",比如在如下BST中,要插入新节点16,最终应该插入到节点17的左孩子处。由于树中所有的节点均满足,“小-中-大”的规律因此当从根开始查找某个节点时速度比顺序查找要快的多,比如要找节点38,当发现38大于根节点13后,就可以确定13的左子树一定没有38,这就去掉了半边子树的节点。b. 否则,若有右子树,则用右子树中最小的节点min替换根节点,并在右子树中递归删除min。

2024-07-30 20:40:46 537

原创 最全数据结构个人笔记【树】

​ 树是一种非线性结构,其严格的数学定义是:如果一组数据中除了第一个节点(第一个节点称为根节点,没有直接前驱节点)之外,其余任意节点有且仅有一个直接前驱,有零个或多个直接后继,这样的一组数据形成一棵树。​ 节点拥有的子树的数量,称为该节点的度,度为0的节点称为叶子节点或者终端节点,度不为0的节点,称为非终端节点或者分支节点,比如上图节点B的度为2。​ 日常生活中,很多树的例子,比如一个公司的职员层级关系,学校中院系层级关系,族谱关系等,由于树状结构表现出来都是具有层次的,因此也称为层次结构。

2024-07-30 20:31:06 1231

原创 手撕Leetcode个人笔记【第二周-数组-链表】

[19. 删除链表的倒数第 N 个结点][24. 两两交换链表中的节点][141. 环形链表][206. 反转链表}[21. 合并两个有序链表][! 707. 设计链表][203. 移除链表元素][189. 轮转数组][234. 回文链表][390. 消除游戏][12. 整数转罗马数字][2. 两数相加]

2024-07-29 01:39:16 1216

原创 最全数据结构个人笔记【循环队列-链式队列】

​ 队列是最常见的概念,日常生活经常需要排队,仔细观察队列会发现,队列是一种逻辑结构,是一种特殊的线性表。只要满足上述条件,那么这种特殊的线性表就会呈现一种“先进先出”的逻辑,这种逻辑就被称为队列。由于这种固定两端操作的简单约定,队列获得了“先进先出”的基本特性,如下图所示:​。

2024-07-26 18:54:25 952

原创 最全数据结构个人笔记【栈-链栈】

顺序存储意味着开辟一块连续的内存用于存储数据节点,一般而言,管理栈数据除了需要一块连续的内存之外,还需要记录栈的总容量、当前栈的元素个数、当前栈顶元素位置,如果有多线程还需要配合互斥锁和信号量等信息,为了方便管理,通常将这些信息统一于一个管理结构体中;只要满足上述条件,那么这种特殊的线性表就会呈现出一种"后进先出"的逻辑,这种逻辑就被称为栈,栈在生活中到处可见,比如堆叠的盘子、电梯中的人等等。​ 不管是顺序栈,链式栈,栈的操作逻辑都是一样的,但由于存储形式不同,代码的实现是不同的。输入数字时,依次入栈。

2024-07-25 22:08:16 950

原创 最全数据结构个人笔记【双向链表-双向循环链表】

​ 对链表而言,双向遍历数据节点相较于单向而言方便许多,因此双向链表在实际运用中是最常见的链式形态。附加题:合并两个链表,按从小到大排序(拆链表,比较节点,插入节点到新链表)1.实现循环链表删除节点。2.判断链表是否有环。

2024-07-24 17:18:52 1214

原创 最全数据结构个人笔记【单向链表】

另外注意到,整条链表用一个所谓的头指针 head 来指向,由 head 开始可以找到链表中的任意一个节点。​ 新节点接在原来链表的首节点前面,即新的节点指向原来的首节点,然后首节点被新节点替代。​ **1. 从无到有:**第一个节点的诞生,此时的首节点和尾节点都是它本身。​ 新节点接在尾节点后面,即尾节点指向新节点,原来的尾节点被新节点替代。​ 特点 : 新接入的节点在前面,后接入的节点在后面。​ 特点:后接入的节点在前面,先接入的节点在后面。​ 2.实现链表的修改节点和删除节点。

2024-07-24 16:57:53 962

原创 2048小游戏【C语言版】单文件编写

### 设计思路1. **游戏地图和初始设置**: - 使用一个 4x4 的二维数组 `map` 来表示游戏地图。 - 初始时,所有位置的值均为 0。 - `score` 记录玩家得分,`move_num` 记录移动次数。2. **随机生成数字**: - 在地图上随机选择一个空位置生成 2 或 4。 - 只有在地图发生变化时才会生成新数字。3. **游戏菜单**: - 使用 `menu()` 函数显示当前的游戏状态,包括地图、得分和移动次数。 - 提示玩家使

2024-07-22 21:55:12 593

原创 最全数据结构个人笔记【时间复杂度-顺序表】

​ 数据是指对事物的进行的记录并可以鉴别的符号,可以是文字,图片,字母,特殊字符,视频,音频…,对我们有用的信息都可以称为数据。​ 结构体是指元素(数据)的相互关联和相互作用的关系,比如学生,图书,交通干线等等​ 数据结构体 = 数据+数据与数据之间的关系​ 算法是为了实现计算的目的而制定一系列的计算步骤程序 = 数据结构体 + 算法​ 顺序存储中,由于逻辑关系是用物理位置来表达的,因此从上述示例代码可以很清楚看到,增删数据都是比较繁琐的,需要成片的移动数据。顺序表对数据节点的增删操作是很不友好。

2024-07-22 18:42:45 1240

原创 航班管理系统【C语言版】单文件编写

本项目的目标是设计并实现一个简易的航班管理系统。该系统应具备以下功能:- 添加航班信息- 查询航班信息- 显示所有航班信息- 修改航班信息- 删除航班信息- 对航班信息进行排序- 保存和加载航班信息- 用户管理,包括管理员和普通用户两种类型- 登录功能系统功能包括以下几点:- **用户管理**:管理员可以添加新用户,并进行用户权限的设置(管理员或普通用户)。- **航班管理**:管理员可以添加、修改、删除航班信息,普通用户可以查看和查询航班信息。- **数据存储**:系统支持将

2024-07-19 14:15:07 1052

原创 最全C语言个人笔记【第五章节-头文件-预处理-宏定义-条件编译】

第五章节-头文件-预处理-宏定义-条件编译 ifndef 宏名...#else...endif#ifndef B#define B#endif1. 预定义日期和时间 __DATE__ __TIME__ 2. 函数名和当前行号__FUNCTION__ ___LINE__ 3. 文件名 __FILE__printf("日期:%s 时间:%s 当前文件:%s 当前行数:%d 函数名:%s\n",__DATE__,__TIME__,__FILE__,__LINE__,__FUNCTION__);// 打印行号。

2024-07-16 17:23:59 1231

原创 最全C语言个人笔记【第五章节-联合体与枚举】

/ 联合体声明union nodechar c;double a;int b;// 联合体声明并创建数据段空间unionchar c;double a;int b;}node1;// 计算联合体大小// 联合体不能使用普通成员初始化// 联合体指定成员初始化// 指定成员初始化的覆盖方式为从下往上覆盖,比如b会覆盖a// 和联合体的声明无关.c = 'k',.a = 3.14,.b = 97,// 联合体成员引用。

2024-07-16 13:54:02 397

原创 最全C语言个人笔记【第五章节-结构体】

结构体 . 成员n.a = 200;n.b = 'y';n.c = 2.22;// 声明结构体类型// 100char sex;// 4// strcpy(stu.name, "小明");strcpy(stu1->name, "小明");// 定义结构体--栈空间// 除了初始化以外,不能直接赋值// 数组要进行字符串拷贝// 定义堆空间free(pst);pst = NULL。

2024-07-16 10:54:04 784

原创 最爽手撕算法个人笔记【第一周-数组】

手撕力扣算法题977、704、209、59、27

2024-07-15 21:31:58 376

原创 最全C语言个人笔记【第二章节-数据类型-运算符-位运算】

*以睁眼(1)闭眼(0)形式描述,整数,那英文呢?**

2024-07-15 21:11:50 993

原创 最全C语言个人笔记【第一章节-环境搭建-C语言入门】

vsCode 全称 Visual Studio Code,是微软出的一款轻量级代码编辑器, 免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、版本管理GIT等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及 Linux。

2024-07-15 20:33:21 1136

原创 最全C语言个人笔记【第三章节-数组】

数组的概念逻辑:一次性定义多个相同的变量,并存储到一片连续的内存中格式​ 数组的真实存储存储模式:一片连续的内存,按数据类型分割成若干相同大小的格子元素下标:数组开头位置的偏移量​​ 元素下标偏移量demo2。

2024-07-15 20:15:50 717

原创 最全C语言个人笔记【第三章节-指针】

void 一般运用在指针或者,函数的返回值,或者函数的参数传递,不能用在非指针的定义,比如 void a = 10;错误const 型指针const型指针有两种形式:①常指针 ②常目标指针常指针:const修饰指针本身,表示指针变量本身无法修改。常目标指针:const修饰指针的目标,表示无法通过该指针修改其目标。常指针在实际应用中不常见。常目标指针在实际应用中广泛可见,用来限制指针的读写权限示例:// 第1中形式,const修饰p1本身,导致p1本身无法修改。

2024-07-15 20:01:07 957

原创 最全C语言个人笔记【第四章节-函数】

在C语言中,函数意味着功能模块。一个典型的C语言程序,就是由一个个的功能模块拼接而成的整体。也因为如此,C语言被称为模块化语言。对于函数的使用者,可以简单的将函数理解为黑箱子,使用者只管按照规定给黑箱一些输入,就会得到一些输出,而不必要理会黑箱子里面的运行细节。​ 黑箱的输入和输出。

2024-07-12 14:26:40 1639

原创 (超详细版) 自己编写Mystrcat Mystrlen Mystrcpy Mystrncpy函数接口

【代码作业】自己实现Mystrcat Mystrlen Mystrcpy Mystrncpy等函数接口。

2024-07-08 20:09:49 772

原创 轻松理解 left + ((right -left) >> 1)

二分查找中的位运算left + ((right -left) >> 1) == (left + right) /2

2024-07-07 21:51:00 569

空空如也

空空如也

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

TA关注的人

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