数据结构常见算法
1 常见算法1.1 排序算法1.1.1 冒泡算法1234567891011121314151617181920212223/** * @brief 冒泡排序算法 * @param arr 待排序数组 * @param length 待排序数组长度 */void maopao(int arr[], int length){ int temp; // i:表示比较轮数 for(int i=0; i<length; i++) { // j:两两数字进行比较,大数向后移 for(int j=0; j<length-i-1; j++) { if(arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } ...
STM32基础学习_Part4
1 STM32中printf使用1.1 选择use MicroLIB 1234567891011121314151617/** *@brief 使用microLib的方法 */int fputc(int ch, FILE *f){ USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {} return ch;}int GetKey (void) { while (!(USART1->SR & USART_FLAG_RXNE)); return ((int)(USART1->DR & 0x1FF));} 1.2 不选择use MicroLIB1234567891011121314151617181920212223242526/** *@brief 加入以下代码, 支持printf函数, 而不需要选择use...
STM32基础学习_Part3
12 SPI通信协议12.1 SPI的基本概念12.1.1...
STM32基础学习_Part2
7 模数转换ADC7.1...
STM32基础学习_Part1
1 STM32简介1.1 STM和ARM介绍STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器(MCP)。ARM Cortex-M内核是STM32内部的核心部分,相当于整个芯片的CPU,这个内核是ARM公司设计的,其他外设部分是STM公司设计的。 STM32系列介绍 补充,ARM介绍 ARM既指ARM公司,也指ARM处理器内核 ARM公司是全球领先的半导体知识产权(IP)提供商,全球超95%的智能手机和平板电脑都采用ARM架构 ARM公司设计ARM内核,半导体厂商(ST公司)完善内核周边电路并生产芯片,结构如下图所示 1.2 本课程使用芯片介绍1.2.1 芯片的命名规则 1.2.2 芯片基本信息 STM32F103C8T6芯片 实物图 • 系列:主流系列STM32F1• 内核:ARM Cortex-M3• 主频:72MHz• RAM:20K(SRAM)• ROM:64K(Flash)• 供电:2.0~3.6V(标准3.3V) • 封装:LQFP48(48个引脚) 1.2.3...
FreeRTOS基础学习_Part3
12 任务通知(Task Notifications)所谓”任务通知”,你可以反过来读”通知任务”。 使用队列、信号量、事件组等方法时,并不知道对方是谁。使用任务通知时,可明确指定:通知哪个任务。 使用队列、信号量、事件组时,我们都要事先创建对应的结构体,双方通过中间的结构体通信: 使用任务通知时,任务结构体TCB中就包含了内部对象,可以直接接收别人发过来的”通知”,如下图所示,也就是说任务A或者ISR可以直接修改任务B内部结构体TCB: 12.1 任务通知的特性12.1.1 优势及限制 任务通知的优势: 效率更高:用任务通知来发送事件、数据给某个任务时,比队列、信号量、事件组等效率都更高。 更节省内存:使用其他方法时都要先创建对应的结构体,使用任务通知时无需额外创建结构体。 任务通知的限制: 不能发送数据给 ISR: ISR并没有任务结构体,所以无法使用任务通知的功能给ISR发送数据。 但是ISR可以使用任务通知的功能,发数据给任务。...
无标题
...
FreeRTOS基础学习_Part2
7 同步互斥与通信7.1 同步与互斥的概念一句话理解同步与互斥:我等你用完厕所,我再用厕所。 123- 什么叫同步?就是:哎哎哎,我正在用厕所,你等会。 - 什么叫互斥?就是:哎哎哎,我正在用厕所,你不能进来,也即同一时间只有一个人能使用 同步与互斥经常放在一起讲,是因为它们之的关系很大,“互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是用“同步”来实现“互斥”吗? 相当于大丙老师多线程教学中的“线程同步”和“互斥锁”的概念吗? 7.2 有缺陷的同步与互斥示例通过下面两个任务示例,就可以比较容易地看出同步和互斥想要解决的问题。 同步主要聚焦于两/多个任务有依赖关系,其中一个任务B需要另一个任务A的处理结果,所以任务B就需要等待任务A处理结束才能继续运行,所以任务/线程同步聚焦于解决如何让等待的线程B在等待期间尽量少地占用CPU资源。 互斥主要聚焦于两/多个任务共同访问同一个共享资源,这些任务不一定有依赖关系,可能是完全独立的任务,但是有些任务会写入共享资源,有些任务会读取共享资源,如果不加以处理,写入和读取就会乱套,导致程序Bug。 7.2.1...
FreeRTOS基础学习_Part1
1 单片机程序设计模式1.1 裸机程序设计模式裸机程序的设计模式可以分为:轮询、前后台(中断)、定时器驱动、基于状态机。前面3种方法都无法解决一个问题:假设有 A、B 两个都很耗时的函数,无法降低它们相互之间的影响。 第4种方法可以解决这个问题,但是实践起来有难度。比如这样一个场景:一位职场妈妈需要同时解决 2 个问题:给小孩喂饭、回复工作信息。 1.1.1 轮询模式示例代码如下: 123456789/* 经典单片机程序: 轮询 */void main() { while (1) { 喂一口饭(); 回一个信息(); } } 轮询模式在main函数中是一个while循环,里面依次调用2个函数,这两个函数相互之间有影响:如果“喂一口饭”太花时间,就会导致迟迟无法“回一个信息”;如果“回一个信息” 太花时间,就会导致迟迟无法“喂下一口饭”。 1.1.2...
FreeRTOS基础学习_Part1
1 单片机程序设计模式1.1 裸机程序设计模式裸机程序的设计模式可以分为:轮询、前后台(中断)、定时器驱动、基于状态机。前面3种方法都无法解决一个问题:假设有 A、B 两个都很耗时的函数,无法降低它们相互之间的影响。 第4种方法可以解决这个问题,但是实践起来有难度。比如这样一个场景:一位职场妈妈需要同时解决 2 个问题:给小孩喂饭、回复工作信息。 1.1.1 轮询模式示例代码如下: 123456789/* 经典单片机程序: 轮询 */void main() { while (1) { 喂一口饭(); 回一个信息(); } } 轮询模式在main函数中是一个while循环,里面依次调用2个函数,这两个函数相互之间有影响:如果“喂一口饭”太花时间,就会导致迟迟无法“回一个信息”;如果“回一个信息” 太花时间,就会导致迟迟无法“喂下一口饭”。 1.1.2...
编程中的概念解析
1 同步、异步1.1 同步与异步编程的区别 同步(Synchronous): 任务按代码顺序阻塞执行,必须等待当前操作完成后才能执行下一操作。程序执行流在时间上严格耦合,逻辑简单但效率较低。 类比1:排队买奶茶,必须等前一人完成才能轮到自己。 类比2:想象你在厨房做饭,严格按照步骤执行:洗菜 → 切菜 → 炒菜,每一步都必须等前一步完成,整个过程是顺序且阻塞的。 异步(Asynchronous): 任务触发后无需等待完成,程序继续执行后续代码。结果通过回调函数、事件循环或 Promise 等机制处理,效率高但逻辑复杂,适用于耗时长的操作(如网络请求、文件读写、硬件交互)。 类比1:餐厅点餐后继续聊天,厨师后台备餐,完成后通知取餐。 类比2:下单外卖(异步操作)→ 打扫房间(无需等待外卖)→ 外卖送达时收到通知,外卖的准备过程与打扫房间并行进行,外卖完成时通过通知(回调)告知你。 关键选择:任务是否依赖前序结果?是 → 同步;否 → 异步 1.2...
Github的学习
1 Github介绍1.1 Git和GithubGit是一个版本控制系统。版本控制系统,是设计用于跟踪文件随时间变化的状态的一款软件。Git是一个分布式的版本控制系统。在Git中参与项目的每个程序员不仅能够拥有文件的当前状态,还能拥有项目完整的历史记录。 GitHub是一个网站,可以像该网站上传一个Git数据库副本。使用GitHub可以使你与他人合作一个项目变的更加容易。GitHub提供了如下机制: 共享库的位置 分叉(forking:A复制一个B的项目到自己的账户下,修改后再提交,B能看到A修改的内容,但是B原本的项目是不会有变动的) 拉取请求(pull request) 提出问题(issue) 版本控制系统(version control system)像个数据库,它会记录所有对项目文件的更改(比如一个文件,前天加了三段文字,昨天删了一句话,今天改了几个词,这三个版本历史都能保存下来)。...
常用数学公式
0 前言Latex符号与公式集合 - CSDN:相对较全的latex数学符号,包括基本运算、高级运算、集合运算、三角运算、占位宽度、关系运算符、箭头、矩阵、希腊字符、函数、其他杂七杂八。 1 高数部分1.1 三角函数1.1.1 三角函数的基本定义1.1.2 三角恒等式(一) 两角和与差 \begin{gathered} \cos (\alpha+\beta)=\cos \alpha \cos \beta-\sin \alpha \sin \beta \\ \cos (\alpha-\beta)=\cos \alpha \cos \beta+\sin \alpha \sin \beta \\ \sin (\alpha+\beta)=\sin \alpha \cos \beta+\cos \alpha \sin \beta \\ \sin (\alpha-\beta)=\sin \alpha \cos \beta-\cos \alpha \sin \beta \\ \tan (\alpha+\beta)=\frac{\tan \alpha+\tan \beta}{1-\tan...
常见用电设备功率(未完结)
0 前言本文主要是记录一下电功率的基础知识以及常见的用电设备功率。 1 功率的概念1.1 功率介绍功率是指物体在单位时间内所做的功,即功率是描述做功快慢的物理量。具体来说,功率是单位时间内传递或转换的能量,用来衡量体系做功的快慢。功率是一个标量,只用来衡量做功的快慢,其正负号常用来表示体系是接受外界做功还是对外做功。 功率的定义和计算公式 功率的定义为:单位时间内所做的功称为功率,用$P$表示。其计算公式为: P = \dfrac{W}{t}其中,$P$表示功率,$W$表示功,$t$表示时间。这个公式适用于各种形式的能量转化过程,无论是力学中的动能转化为势能,还是电学中的电能转化为热能或光能等 此外,功率也可以通过其他公式计算,例如: $P=Fv \cos \theta$,其中,$F$表示作用力,$v$表示速度,$\theta$表示力与速度间的夹角。...
Hexo+Github个人博客搭建
1 博客参考教程本博客的制作重点参考了两个视频教程,地址如下: 【零基础搭建个人博客!手把手教你用Hexo+GitHub+Zeabur打造属于你的网站!】- 哔哩哔哩 【第3期:Butterfly主题的基础配置】- 哔哩哔哩 2 一些插件和问题2.1 官方的主题Themes | Hexo 2.2 博客加密与隐藏请参考1:Hexo:建立自己的日记本并隐藏(加密) | 阳小楊 请参考2:【Hexo】文章加密 - 時光心向阳 - CSDN 请参考3:同时支持置顶和隐藏文章的 hexo 生成器插件 - 0o酱 - CSDN 请参考4:无需更改源码!让你的Hexo的文章在首页隐藏 | InsectMk的个人空间 请参考5:Hexo博客 | 加密!给你的文章添加密码 | Justlovesmile’s BLOG 请参考6:Hexo 博客加密插件 hexo-blog-encrypt 教程 - 吴毓佳 -CSDN博客 2.3 博客文章封面的设置请参考1:Hexo butterfly 自定义文章封面 && 主页顶部图片更改 - Moqiqiuzi -...
深度学习中的显卡介绍
1 用于深度学习的GPU介绍1.1 目前常用于深度学习的GPU型号和性能参数 补充说明: 1.2 显卡选购建议1.2.1 入门级 - 初学者或轻度用户如果你刚开始接触深度学习,或者只是做一些简单的实验和小规模模型训练,那么以下显卡可能就足够了: 1.2.2 中级 - 研究员或开发者对于那些需要更强大的计算能力来进行更复杂的模型训练或研究工作的人群来说,可以考虑以下显卡: 1.2.3 高级/专业级 - 高端研究机构或企业当涉及到非常大的数据集、极其复杂的模型架构以及需要快速迭代和高吞吐量时,应该选择最顶级的专业级显卡: 2 CUDA概念介绍 00:07:26 13-大模型是如何在GPU中运行的 ...
计算机主要硬件介绍
作为专栏的第一篇文章,我想从计算机硬件的概念开始,后面再介绍各种计算机技术、软件的学习。注意:我这里只是简单介绍硬件概念,可能会涉及一点基本的原理,但不会太过深入各个硬件的内部原理。 05:51:42 计算机硬件基础 29.2万 3668 视频 ...
汇编语言概要学习
1 绪论1.1 这门课学什么 定位:理解硬件结构,掌握指令集,理解程序的运行过程。 内容:选取8088、8086指令集进行汇编语言程序设计的学习。 1.2 机器语言与汇编语言机器语言是机器指令的集合。机器指令是一台机器可以正确执行的命令。机器指令由一串二进制数表示,例 01010000。 汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上:① 汇编指令是机器指令便于记忆的书写格式; ② 汇编指令是机器指令的助记符。 机器指令 汇编指令 操作 1000100111011000 MOV AX, BX 将寄存器BX的内容送到AX中 用汇编语言编写程序的工作过程:程序员编写汇编指令→编译器编译为二进制机器码→计算机执行程序。 1.3...
计算机科学速成课
1 计算机早期历史1.1 计算机的重要性计算机是当今世界的命脉,如果突然关掉所有计算机,那么世界将会直接乱套。我们生活中很多产品也都是依靠计算机生产出来的。所以说,计算机改变了我们生活几乎所有方面,计算机对我们社会的重要性不言而喻。 1.2 计算机的发展略。。。 2 电子计算机上节提到,用于特定场景的计算设备,如制表机,大大提高了企业和政府的工作效率。但是随着社会的发展,交通运输、科学研究甚至航空航天等发展,人民需要计算能力更强的机器。这种计算能力更强的机器,往往体积巨大,耗电量巨大,这为后面的创新埋下伏笔。 2.1...
经济学速成课
1 经济学简介1.1 什么是经济学经济学不是研究金钱和致富的科学,尽管理解经济学可以帮助你,经济学研究的不是股票市场,经济学是研究人与决策的科学,著名的经济学家阿尔弗雷德·马歌尔把经济学定义为:在日常生活中,研究人,关注他如何获得收入,如何花钱,因此,经济学一方面是研究财富的科学,另一方面是研究人。 【合集】10分钟速成课:经济学【预告+全35集+花絮】 2 基金2.1 基金的基本概念和分类2.1.1 股票与债券基金最常见的2种投资品类:“股票”和“债券”。 (一)什么是债券 债券是发行方为筹集资金发行的,在约定时间支付一定比例的利息,并在到期时偿还本金的一种有价证券。 小贴士:欠条属于证券吗? - 知乎、三分钟金融小知识:债券 -...
基础乐理
1 音名与钢琴键盘1.1 钢琴键盘的基本布局 钢琴有88个键,去掉左侧3个键(2白1黑),去掉最右边1个白键。剩下84个键,分为7组,每组12个键 —— 7个白键和5个黑键。 注意看,每组的黑键有规律,都是两个、三个紧挨着。 1.2 音名音名简单来说就是音高(频率高低)的名称。 白键音名:C D E F G A B (不要记什么1 2 3 4 5 6 7) 半音 全音 概念 两个相邻音之间的关系,就叫半音关系 两个相隔音之间的关系,就叫全音关系 例子 E/F、B/C之间是半音,它们中间没有黑键 如C/D,或者”黑白黑”的这两个黑键的音 黑键音名:黑键没有自己的音名,它借相邻的音名来指示。 ...
我的密码
...
我的阅读记录
.tg { border-collapse: collapse; border-spacing: 0; width: 100%; /* 表格宽度为100% */ table-layout: auto; /* 允许表格根据内容自动调整列宽 */ } .tg td { border-color: black; border-style: solid; border-width: 1px; font-family: Arial, sans-serif; font-size: 14px; overflow: hidden; padding: 10px 5px; word-break: break-all; /* 允许单词内换行 */ white-space: normal; /* 允许文本换行 */ } .tg th { border-color: black; border-style: solid; border-width: 1px; font-family: Arial, sans-serif; ...
我的观影记录
1 观影记录 .tg { border-collapse: collapse; border-spacing: 0; width: 100%; /* 表格宽度为100% */ table-layout: auto; /* 允许表格根据内容自动调整列宽 */ } .tg td { border-color: black; border-style: solid; border-width: 1px; font-family: Arial, sans-serif; font-size: 14px; overflow: hidden; padding: 10px 5px; word-break: break-all; /* 允许单词内换行 */ white-space: normal; /* 允许文本换行 */ } .tg th { border-color: black; border-style: solid; border-width: 1px; font-family: Arial, sans-serif; ...
我的音乐
1 中文歌曲1.1...



















