- 博客(32)
- 收藏
- 关注
原创 【数据结构初阶】:堆和二叉树
【数据结构初阶】:堆和二叉树文章目录【数据结构初阶】:堆和二叉树1. 树概念及结构1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用(表示文件系统的目录树结构)2. 二叉树概念及结构2.1 概念2.2现实中的二叉树:2.3 特殊的二叉树:2.4 二叉树的性质2.5 二叉树的存储结构3. 二叉树的顺序结构及实现3.1 二叉树的顺序结构3.2 堆的概念及结构3.3 堆的实现3.3.1 堆的创建和初始化3.3.2 堆的销毁3.3.3 堆的插入3.3.4 堆的删除3.3.5 堆实现测试
2021-12-05 23:52:59
1394
原创 11/30-Heap实现、TopK问题、堆排序
Heap.h#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <stdbool.h>typedef int HPDataType;typedef struct Heap{ HPDataType* a; int size; int capacity;}HP;void HeapInit(HP* hp);voi
2021-11-30 15:45:36
202
原创 STM32实现DS18B20测温,串口和LCD1602显示(HAL库代码)
DS18B20测温硬件资料DS18B20特性内部存储器表温度读取及计算配置寄存器(分辨率)读写时序工程创建MX配置KEIL工程内添加"DS18B20"驱动程序编写DS18B20驱动复位检测// 复位检测uint8_t DS18B20_Reset(){ uint8_t flag; DS18B20_DQ(0);// 对照复位时序图: Delay_us(480); DS18B20_DQ(1);// OD门写1即释放管理权,与外部电平无关 Delay_u
2021-11-25 23:02:47
8323
2
原创 UART+蓝牙
1. uart(1)串口简介USART1,2,3:同步、异步UART4,5:异步异步通信波特率也可以理解:传输每一位需要的时间波特率9600:1s传输9600bit或者传输1bit的时间是19600\frac{1}{9600}96001s串口发送/接收函数串口发送函数此处常用阻塞方式发送函数串口接收函数重点学习采用中断方式的接收函数需要配合***接收中断回调函数***的使用MX串口配置USART1——异步模式——波特率中断使能设置NVIC优先级配置其余Sy
2021-11-21 23:36:42
3232
1
原创 C语言进阶1-数据在内存中的存储
数据在内存中的存储文章目录数据在内存中的存储本章重点1. 数据类型介绍1.1 类型的基本归类:整形家族:浮点数家族:构造类型:指针类型空类型:2. 整形在内存中的存储2.2 大小端介绍2.2 练习3. 浮点型在内存中的存储3.1 浮点数存储的例子:3.2 浮点数存储规则本章重点数据类型详细介绍整形在内存中的存储:原码、反码、补码大小端字节序介绍及判断浮点型在内存中的存储解析1. 数据类型介绍我们已经学习了基本的内置类型:char //字符数据类型 - 字符在底层存储的是
2021-09-11 15:34:12
572
1
原创 7.结构体
结构体文章目录结构体本章重点1. 结构体的声明1.1 结构的基础知识1.2 结构的声明1.3 结构成员的类型1.4 结构体变量的定义和初始化2. 结构体成员的访问3. 结构体传参本章重点结构体类型的声明结构体初始化结构体成员访问结构体传参1. 结构体的声明1.1 结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。1.2 结构的声明typedef struct Stu{ char name[20];//名字 int age;//
2021-09-09 22:09:50
129
原创 6.初阶指针
指针文章目录指针本章重点1. 指针是什么2. 指针和指针类型2.1 指针类型的意义2.2 不同类型指针的解引用3. 野指针3.1 野指针成因3.2 如何规避野指针4. 指针运算4.1 指针+-整数4.2 指针-指针4.3 指针的关系运算5. 指针和数组6. 二级指针7. 指针数组本章重点指针是什么指针和指针类型野指针指针运算指针和数组二级指针指针数组1. 指针是什么在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电
2021-09-09 19:58:59
112
原创 5.操作符和表达式
操作符和表达式文章目录操作符和表达式1. 操作符分类2. 算术操作符3. 移位操作符3.1 左移操作符3.2 右移操作符4. 位操作符5. 赋值操作符5.1 复合赋值符6. 单目操作符7. 关系操作符8. 逻辑操作符9. 条件操作符10. 逗号表达式11. 下标引用、函数调用和结构成员11.1 [ ] 下标引用操作符11.2 ( ) 函数调用操作符11.3 访问一个结构的成员12. 表达式求值12.1 隐式类型转换12.2 算术转换12.3 操作符的属性1. 操作符分类算术操作符移位操作符位操作
2021-09-08 16:56:26
114
原创 4.C语言数组
数组本章重点一维数组的创建和初始化一维数组的使用一维数组在内存中的存储二维数组的创建和初始化二维数组的使用二维数组在内存中的存储数组越界数组作为函数参数数组的应用实例1:三子棋数组的应用实例2:扫雷游戏文章目录数组本章重点1. 一维数组的创建和初始化1.1 数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储2. 二维数组的创建和初始化2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储3. 数组越界4
2021-09-05 20:12:52
86
原创 3. 函数
函数文章目录函数1. 函数是什么?2. 函数的分类:库函数自定义函数3. 函数的参数4. 函数的调用:传值调用传址调用练习5. 函数的嵌套调用和链式访问嵌套调用链式访问6. 函数的声明和定义函数声明:函数定义:模块化设计7. 函数递归递归的两个必要条件练习递归与迭代本章主要掌握函数的基本使用和递归函数是什么库函数自定义函数函数参数函数调用函数的嵌套调用和链式访问函数的声明和定义函数递归1. 函数是什么?函数的定义:子程序负责完成某项特定任务,具备相对的独立性。一般
2021-09-04 20:26:17
125
原创 2. 分支语句和循环语句
分支语句和循环语句文章目录分支语句和循环语句1. 什么是语句?2. 分支语句(选择结构)if语句悬空elseif书写形式的对比练习Switch语句3. 循环语句while循环while语句中的break和continue练习for循环**语法**break和continue在for循环中的作用for语句的循环控制变量一些for循环的变种一道笔试题:do...while()循环do语句的语法:do...while循环的执行流程图:do while循环中的break和continuedo语句的特点练习goto
2021-09-04 20:22:42
130
原创 14-超声波测量距离与定时器T1的编程
超声波测距文章目录超声波测距1. 测量原理2. 软件编程2.1 框架式编程结构搭建2.2 初始化函数2.2.1 初始化函数框架2.2.2 定时器参数设置2.3 定时器1中断服务函数2.3.1 测试1:产生中断,P30翻转2.4 超声波服务函数1. 测量原理中断计数即检测距离检测高电平用P3.3脚P3.3也是外部输入中断INT1脚,但本次实验与外部输入中断无关,仅利用P3.3引脚启停定时器8位定时器不分频的满值是:256 * 0.033 = 8.5333us > 5.78us因此满足测
2021-08-29 20:36:16
1225
原创 13-定时器T4制作方波驱动蜂鸣器
定时器T4制作方波驱动蜂鸣器文章目录定时器T4制作方波驱动蜂鸣器1. 硬件原理2. 软件编程2.1 框架式编程结构搭建2.2 蜂鸣器初始化2.3 定时器初始化2.3.1 定时器部分2.3.2 申请中断部分2.4 定时器4中断服务函数2.5 附加测试1. 硬件原理重要原理:2. 软件编程任务1:2.1 框架式编程结构搭建新建,保存,添加all.h—>xxx.hxxx.c—>all.h打标签2.2 蜂鸣器初始化创建函数.c创建声明main.c调用设置
2021-08-29 14:31:20
968
原创 12- 定时器介绍和定时器0定时1ms
定时器介绍和定时器0定时1ms文章目录定时器介绍和定时器0定时1ms1. 定时/计数器的概念2. 定时/计数器的模式3. 任务:定时1ms3.1 细谈原理3.2 代码实现过程:3.2.1 定时器0设置并申请中断3.2.2 CPU处理中断1. 定时/计数器的概念.2. 定时/计数器的模式16位手动重装模式1即定时时间到,重新为TL0,TH0赋值3. 任务:定时1ms3.1 细谈原理由下方定时器工作图,可总结出涉及的寄存器控制位:AUXR.7:分频系数设置,不同分频值使产生单个脉冲的
2021-08-29 14:30:21
6935
原创 11-中断的概念及外部IO口输入中断INT0的测试
中断的概念及外部IO口输入中断INT0的测试文章目录中断的概念及外部IO口输入中断INT0的测试1. 中断基础概念2. 中断的执行过程3. 中断作用及中断类型4. 中断嵌套5. 中断学习的材料6. 与STC15中断相关的概念中断结构图CPU处理中断中断相关的寄存器7. 外部IO口输入中断INT0的测试具体步骤:1. 中断基础概念2. 中断的执行过程3. 中断作用及中断类型4. 中断嵌套5. 中断学习的材料6. 与STC15中断相关的概念中断结构图闭合EX0,EA,既可以向CP
2021-08-28 15:54:31
1011
原创 10-矩阵键盘扫描
矩阵键盘扫描1. 原理抓住重点:列扫描、行扫描行X,列Y两个变量,循环嵌套列+1,行扫描一遍2. 框架式编程结构搭建新建KEY4x4_Drive.c和.h,保存,添加.h打标签all.h包含KEY4x4_Drive.h.c包含all.h3.按键扫描P0的8个口设为标准IO口模式按键扫码底层驱动,循环嵌套,并外部声明新开数组储存列扫描状态行扫描分别判断P0.7,0.6,0.5,0.4这几个脚是否为0定义一个新变量,用以和按键判断是否按下
2021-08-28 14:25:08
513
原创 09-独立按键的长按和短按
独立按键的长按和短按文章目录独立按键的长按和短按1. 硬件部分1.1 按键简介1.2 按键抖动1.3 按键识别1.4 按键选择2. 软件编程2.1 框架式编程结构搭建2.2 初始化2.3 按键扫描数据分配2.4 按键检测消抖,延时划分两种状态短按长按使用场景测试1. 硬件部分1.1 按键简介1.2 按键抖动1.3 按键识别按键长按与短按判别流程图1.4 按键选择2. 软件编程2.1 框架式编程结构搭建新建ROTARY_Drive.c,ROTARY_Drive.h保存
2021-08-28 10:13:47
1196
原创 08-LCD1602显示字符
LCD1602显示字符文章目录LCD1602显示字符1. 硬件参数1.1 技术参数1.2 引脚功能1.3 写入时序1.4 地址范围、显示内容1.5 ASCII码表、CGROM出厂光刻图像2. 软件编程2.1 框架式编程结构搭建2.2 初始化GPIO输出模式写入时序初始化硬件操作指令2.4 单字符显示测试2.3 内容显示显示测试显示自定义图案光标显示设置1. 硬件参数1.1 技术参数1.2 引脚功能1.3 写入时序1.4 地址范围、显示内容DDRAM即是我们在LCD 1602液晶屏幕上
2021-08-27 22:18:17
5942
1
原创 07-数码管显示
数码管显示文章目录数码管显示1. 硬件基础共阳4位数码管工作原理2. 软件编程框架式编程结构搭建数码管显示1. 硬件基础共阳4位数码管工作原理举例:第一位显示3将第1位位选端接高电平,其余位选端接低电平;第1位数码管需要显示的段选端接低电平,不需要显示的段选端接高电平所有数码管的相同段选端都接在一起,但因为二极管单向导电性,阳极流向阴极,故不需要显示的数码管不会显示。2. 软件编程框架式编程结构搭建创建数码管服务.c并添加all.h包含打标签.c包含all.h数码管显示
2021-08-27 11:16:04
1425
原创 06-移位寄存器74HC595芯片编程
移位寄存器74HC595芯片编程1. 硬件介绍原理图:2块595芯片用以拓展IO口0#595芯片控制数码管段选和LCD1602数据传输脚1#595芯片控制数码管位选74HC595性能简介:74HC595是典型的移位串转并三态输出驱动器。8 位并行三态输出,并且可以级联输出。74HC595引脚功能:74HC595时序图 :74HC595传输2字节过程:2. 软件编程定义595的控制管脚,并在初始化函数配置标准IO口模式,即2.2,2.3,2.4配置成低电平注
2021-08-25 22:54:46
2695
原创 05-框架式编程基础概念、任务调度和数据分配
框架式编程基础概念、任务调度和数据分配文章目录框架式编程基础概念、任务调度和数据分配1. 案例引入:2.代码实现3. 框架式编程的概念4. 搭建框架式编程文件任务工程建立步骤代码编程1. 案例引入:代码如下:遇到要求简单的可以采用上述代码实现,但遇到接下来的呢?2.代码实现因此,采用另一种代码实现方式,while主循环里面套if分支判断clude <STC15.H> //头文件包含,STC15W系列单片机使用(注意:使用STC15.H,需要删除下面的sfr行)sbit
2021-08-25 19:29:19
685
原创 04-流水灯实现
流水灯实现文章目录流水灯实现1. 分步赋值法(数组赋值)2. 变量的左移和右移利用左移语句,实现P3口LED挨个点亮利用右移语句,实现P3口LED挨个灭掉3. 变量的循环左移和右移1. 分步赋值法(数组赋值)原理:分步点亮P3口点亮一个LED后,延迟一段时间,再点亮下一个LED,延迟,以此类推,循环显示8个LED创建数组,保存点亮LED0~7的8种状态unsigned char code Buffer[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0
2021-08-25 17:10:58
708
原创 02-单片机最小系统、IO口模式介绍、点亮1个LED
单片机最小系统、IO口模式介绍、点亮1个LED文章目录单片机最小系统、IO口模式介绍、点亮1个LED1. 性能对比2. 内部结构框图3. 单片机最小系统4. 单片机的复位5. 外部RST脚复位的过程6. 点亮第一个LED的电流电压条件7. IO口结构和工作过程标准IO口模式强推挽模式开漏模式高阻输入模式8. 编程,STC15W核心板上点亮P3口的一个灯1. 性能对比2. 内部结构框图51内核单片机3. 单片机最小系统电源供电:5V正极接VCC,5V负极接GND时钟电路:提供时钟信号,
2021-08-25 17:06:01
1616
原创 01-C语言基础
C语言基础文章目录C语言基础1. C语言基本标点符号2. 函数书写格式与函数调用3. 单片机五大语句与32个C语言关键字4. 单片机存储空间5. 关键字6. 单片机的常量7. 单片机的变量8. 数组9. 结构体10. 指针1. C语言基本标点符号强调2个:2. 函数书写格式与函数调用最简单C51程序带参数返回的函数调用3. 单片机五大语句与32个C语言关键字C语言主要是由判断、循环、条件循环、选择、跳转五大语句构成if语句判断if…else…#include <STC
2021-08-25 17:02:17
149
原创 C语言实现猜数字游戏
C语言实现猜数字游戏猜数字的游戏生成一个随机数猜数字(反馈:大、小、对了)可以反复玩整体框架菜单实现游戏逻辑的函数主函数#include <stdio.h>void menu(){ printf("***************************\n"); printf("******* 1. play ******\n"); printf("******* 0. exit ******\n"); printf
2021-08-18 22:55:06
134
1
原创 1. 初识C语言
初识C语言什么是C语言第一个C语言程序数据类型变量、常量字符串+转义字符+注释选择语句循环语句函数数组操作符常见关键字define 定义常量和宏指针结构体什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。编译器:MSVC(VS2019
2021-08-15 22:41:12
241
原创 浅析C语言的多组输入输出
浅析C语言的多组输入输出源引一道编程题:大小写转换参考代码#include <stdio.h>int main(){ int ch = 0; //循环数据输入 while((ch=getchar()) != EOF) { printf("%c\n", (ch+32)); getchar();//处理多余的\n字符 } return 0;}函数:getchar() - 获取一个字符putchar() -
2021-08-12 17:16:40
2112
原创 我的第一篇博客
自我介绍学习编程的目标学习编程的一些打算自我介绍Hello,优快云的朋友们,今天我注册了账号,终于也成为了这个大家庭的一员。我来自南京工业大学,对计算机编程充满了兴趣,希望未来可以分享一些学习道路上的收获。学习编程的目标编程顾名思义就是编写程序用来解决问题,我的最原始目标就是通过学习来敲击代码实现一些功能。功能可大可小,但最重要的是在此过程中提升自己的能力。学习编程的一些打算1、更勤奋,多挤出一些时间来学习2、在学习编程的期间可以认识更多厉害的人,多与他们交流探讨3、不畏难,有始有终
2021-06-03 20:21:02
66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人