- 博客(256)
- 资源 (132)
- 问答 (1)
- 收藏
- 关注
原创 什么是简单选择排序?
简单选择排序的基本思想是每一趟在后面n-i+1个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到n-1趟做完。
2022-09-26 12:06:43 2543
原创 快速排序(C语言实现)
快速排序的基本思想是基于分治法的,在待排序表中任选一个基准元素,通过一趟排序将待排序划分为独立的两部分,前半部分所有元素均比枢轴元素小,后半部分所有元素均比枢轴元素大,此时枢轴元素就放在了最终的位置,然后分别对两个字表递归重复上面的过程,直至每部分内只有一个元素或空为止,即所有元素放在了其最终位置上。
2022-09-22 10:18:39 424
原创 冒泡排序(C语言实现)
冒泡排序的基本思想是:从前往后(或从后往前)两两比较相邻元素的值,若为逆序(即A[I-1]>A[I]),则交换它们,直到序列比较完。我们称它为第一趟冒泡,结果是将最小的元素交换到待排序列的第一个位置(或将最大的元素交换到待排序列的最后一个位置),关键字最小的元素如气泡一样逐渐向上“漂浮”。最终一个一个排好了位置。冒泡排序可以说是所有排序算法中最容易理解的,我们每次都选出一个最大(最小)的元素,选择n-1次就将个元素排成了一个递减(递增)的序列。
2022-09-21 15:32:19 917
原创 嵌入式C/C++常见错误和注意事项
我们在嵌入式开发中,编写完一个新功能,但实现别的效果差强人意,检查后发现逻辑并没有什么错误,此时我们就要注意,是否是C/C++使用技巧的错误。本文就来总结一下,常遇到的错误。
2022-09-01 10:10:28 778
原创 STM32使用PWM控制LED灯的亮灭程度
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。
2022-09-01 10:08:36 9369 2
原创 图的应用(最小生成树,拓扑排序)
应用图解决现实问题是我们使用图这种数据结构的原因所在。最小生成树是图的应用中很常见的一个概念,一个图的最小生成树不是唯一的,但最小生成树的边的权值之和纵使唯一的。最小生成树的算法主要有Prim算法和Kruskal算法。这两种算法都是基于贪心算法策略(只考虑眼前的最佳利益,而不考虑整体的效率)。......
2022-09-01 10:01:50 594
原创 深度优先算法和广度优先算法
在数据结构中,树和图可以说是不可或缺的两种数据结构。其中,对于图来说,最重要的算法可以说就是遍历算法。而搜索算法中,最标志性的就是深度优先算法和广度优先算法。图的定义普遍为两种,一种是邻接表,另一种是邻接矩阵。图的邻接矩阵表示是唯一的,但对于邻接表来说,若边的输入次序不同生成的邻接表也不同。因此,对于同一个表,基于邻接矩阵的遍历所得到的BFS序列和DFS序列是不唯一的,基于邻接表的遍历所得到的BFS和DFS是唯一的。...
2022-08-26 16:07:12 3972
原创 基于STM32和FreeRTOS的二值信号量实现任务同步
信号量(semaphore)是一种用于提供不同进程之间或者一个给定的不同线程间同步手段的原语。信号量多用于任务间的同步与互斥。信号量在FreeRTOS中分为三种:计数型信号量、二值信号量和互斥信号量。同步:处理竞争就是同步,安排进程执行的先后顺序就是同步,每个进程都有一定的个先后执行顺序。互斥:互斥访问不可共享的临界资源,同时会引发两个新的控制问题(互斥可以说是特殊的同步)。竞争:当并发进程竞争使用同一个资源的时候,我们就称为竞争进程。
2022-08-25 12:24:53 1056
原创 使用STM32CubeMX创建FreeRTOS项目
STM32CubeMX是被广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。FreeRTOS 是与世界领先的芯片公司合作开发了 15 年,现在每 170 秒下载一次,是面向微控制器和小型微处理器的市场领先的实时操作系统 (RTOS)。根据 MIT 开源许可免费分发,FreeRTOS 包含一个内核和一组持续增加的库,可广泛应用于各个行业领域。FreeRTOS 的构建重点是可靠性和易用性。...
2022-08-18 17:10:12 1255 1
原创 线索二叉树
建立线索二叉树,或者说对二叉树线索化,实质上就是遍历一棵二叉树。在遍历过程中,访问结点的操作是检查当前的左,右指针域是否为空,将它们改为指向前驱结点或后续结点的线索。为实现这一过程,设指针pre始终指向刚刚访问的结点,即若指针p指向当前结点,则pre指向它的前驱,以便设线索。...
2022-08-17 11:38:49 247
原创 二叉树的遍历
二叉树的遍历可以说是二叉树最重要的一个内容,如果想对树的算法有一定的认识,那么二叉树的遍历是一定要熟练使用的,本文将主要介绍一下二叉树的遍历。
2022-08-16 14:29:32 354
原创 STM32CubeMX介绍及安装
STM32CubeMX是被广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。其中STM32CubeMX和STM32Cubeprogrammer,除了对所有STM32芯片系列,和所有应用的通用支持之外,还有一些对特定应用的支持,比如STM32Cube.AI就是基于STM32CubeMX的插件功能,来把训练好的模型部署到STM32上;.........
2022-08-12 11:13:25 4460 1
原创 基于C/C++的HSV转RGB程序
HSV是根据颜色的直观特性由 A. R. Smith 在 1978 年创建的一种颜色空间, 也称六角锥体模型。其中的H、S、V分别代表色调(H)、饱和度(S)和明度(V)。H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;............
2022-08-08 16:41:19 1156 1
原创 树形查找(二叉查找树)
我们在平时的查找算法中,最多的往往是顺序查找和折半查找,而对树形查找往往一知半解,本文主要介绍二叉排序树的创建,插入和查找。树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。而如果一棵树他的每个节点最多含有两个子树的树称为二叉树。...
2022-08-04 15:23:23 514
原创 STM32(十)------- SPI通信
在万物互联时代,“通信”对物联网尤为重要。在单片机或嵌入式开发领域,几乎很少有一个硬件单独就能实现所有功能的,即使是单片机裸机开发,往往也需要与传感器进行通信。SPI可以说是我们在嵌入式开发中,最常用的通信协议之一,本文将来介绍什么是SPI协议l,SPI协议的特点是什么,怎么用SPI协议。......
2022-07-29 16:39:50 2742
原创 VSCode如何鼠标滚轮放大界面
我相信没有开发者会没有使用过鼠标的滚轮放大界面功能。尤其是现在的人越来越近视,几乎很少有不放大就能看清代码的人。我们无论是写文档还是写程序,大多的编辑器都可以直接使用鼠标滚轮放大界面功能,但我们发现,VSCode初始状态,并不具备鼠标滚轮放大界面功能。而是需要我们手动配置一下,本文将介绍一下如何配置。......
2022-07-22 11:38:39 12438
原创 进制转换-不同位数的数据相互转换(C/C++实现)
32位数据转成2个16位数据16位数据转成2个8位数据2个16位数据转成1个32位数据2个8位数据转成1个16位数据32位数据转成4个8位数据4个8位数据转成1个32位数据
2022-07-08 11:44:41 2478
原创 开环和闭环是什么意思?
在嵌入式开发中,经常会遇到一个控制领域的概念,就是开环和闭环。即使你不是控制专业的,如果你想从事嵌入式,我建议也需要了解一下开环和闭环的概念。开环和闭环都是控制方面经常使用的术语。开环控制是指控制装置与被控对象之间只有顺向作用而没有反向联系的控制过程,按这种方式组成的系统称为开环控制系统。闭环控制是将输出量直接或间接反馈到输入端形成闭环、参与控制的控制方式。开环的英文名是open-loop。开环相对于闭环而言,也叫开环控制系统。意思就是不将控制的结果反馈回来影响当前控制的系统。...
2022-06-30 20:07:20 14338 1
原创 操作系统之进程
进程是大多数系统的工作单元,可以将进程看作执行的程序。虽然在传统操作系统中进程包括线程,但其实在一些RTOS中,线程、任务和进程的概念都很模糊,可以说进程≈线程=任务。但无论是在常规操作系统还是实时操作系统中,进程或者说线程和任务都是最重要的概念之一。进程是现代分时操作系统的工作单元,在讨论操作系统时,如何称呼所有CPU活动是一个非常重要的问题。批处理系统执行作业,而分时系统使用用户程序或任务。即使是单用户系统,用户也能同时运行多个程序,即便用户一次只能执行一个程序,操作系统也需要支持本身的内部活动,所有这
2022-06-26 21:56:50 361
原创 操作系统有哪些结构?
操作系统以服务的形式向用户和程序提供环境执行程序。操作系统的基本服务有:操作系统有一组服务用于提供用户功能:另外操作系统还有一组服务,不是为了帮助用户而是为了确保系统本身运行高效,多用户系统通过共享计算机资源可以提升效率。操作系统的服务形式主要分为三种:现代操作系统庞大而复杂,常用方法是将这种系统分成子系统或模块。如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏和软硬结合专栏。欢迎关注公众号了解更多。编写不易,感谢支持。...
2022-06-24 20:03:12 6404
原创 操作系统的双重模式
操作系统是管理计算机硬件的程序。操作系统的核心目标是运行用户程序,以用户视角来看,操作系统的主要目的是更方便的使用计算机,在系统视角来看,操作系统的目的是更高效的使用计算机。而在OS的执行过程中,为什么要分成内核态和运行态?怎么从运行态转到内核态?这些都是我们需要了解的问题。.........
2022-06-23 20:36:37 2733
原创 嵌入式开发基础之任务管理(线程管理)
RTOS 系统的核心是任务管理,而在实时操作系统中,任务和线程在概念上其实是一样的。所以任务管理也可以叫做线程管理。初步上手 RTOS 系统首先必须掌握的也是任务的创建、删除、挂起和恢复等操作,由此可见任务管理的重要性。在日常生活中,我们要完成一个大任务,一般会将它分解成多个简单、容易解决的小问题,小问题逐个被解决,大问题也就随之解决了。在多线程操作系统中,也同样需要开发人员把一个复杂的应用分解成多个小的、可调度的、序列化的程序单元,当合理地划分任务并正确地执行时,这种设计能够让系统满足实时系统的性能及时间
2022-06-22 18:36:12 490
原创 STM32(九)------- CAN
CAN 是 ISO 国际标准化的串行通信协议。CAN 总线是一种应用广泛的现场总线,是近20年发展起来的新技术。是控制电机最常用的协议之一。
2022-06-21 18:06:34 5503
原创 STM32(八)------- PWM输出
我们在日常的嵌入式开发中,PWM可以说是我们最常用的一个技术。我们在电机驱动、电压控制、从测量、通信到功率控制与变换的许多领域中,PWM有着无比重要的地位。PWM脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在
2022-06-19 20:49:36 5158 1
原创 嵌入式开发基础之中断管理
中断就是系统正在处理某一个正常事件,忽然被另一个需要马上处理的紧急事件打断,系统转而处理这个紧急事件,待处理完毕,再恢复运行刚才被打断的事件。无论在单片机开发还是嵌入式开发中,中断都是一个非常重要的概念。而重要的原因,是中断的概念符合我们普世生活的场景。你正在上班努力编程,却有一通电话打了进来,而不得不停止工作,接通完电话后,发现只是外卖到了楼下,这时候你又恢复到工作的状态,这是短期中断。你本科毕业,因为第一年的工作经验的优先级高于考研所以你去找了份工作,干了一年后,去考研,回到学校继续学习,对你的学
2022-06-18 16:43:04 1385
原创 基于STM32的MD5校验
我们在嵌入式及单片机的产品开发时,往往需要对一些文件进行检验,来保证此文件是在传输的过程没有被修改或者损坏。比如IAP升级程序时,往往就需要对升级固件进行校验。MD5是其中非常常用的一种检验方式。本文通过使用MD5检验程序,对STM32的Flash中的某一段数据进行检验,检验后存放到字符串里,可用来比对或者输出。......
2022-06-17 22:41:31 3652
原创 基于STM32的MD5校验(附带完整程序)
本文中含有全部程序及免费下载工程链接。我们在嵌入式及单片机的产品开发时,往往需要对一些文件进行检验,来保证此文件是在传输的过程没有被修改或者损坏。比如IAP升级程序时,往往就需要对升级固件进行校验。MD5是其中非常常用的一种检验方式。本文通过使用MD5检验程序,对STM32的Flash中的某一段数据进行检验,检验后存放到字符串里,可用来比对或者输出。MD5校验(checksum)是通过对接收的传输数据执行散列运算来检查数据的正确性。......
2022-06-17 22:15:54 1519
原创 嵌入式开发基础之线程间通信
在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取,根据读取到的全局变量值执行相应的动作,达到通信协作的目的。而实时操作系统往往采用邮箱、消息队列、信号用于线程间的通信。邮箱服务是实时操作系统中一种典型的线程间通信方法。邮箱用于线程间通信,特点是开销比较低,效率较高。典型的邮箱也称作交换消息。非阻塞方式的邮件发送过程能够安全的应用于中断服务中,是线程、中断服务、定时器向线程发送消息的有效手段。通常来说,邮件收取过程可能是阻塞的,
2022-06-16 13:16:31 869
原创 STM32移植FreeRTOS出现的问题及解决办法
# 问题:\FreeRTOS\queue.c(2761): error: #268: declaration may not appear after executable statement in block
2022-06-16 12:59:22 2564 1
原创 嵌入式开发常用技巧及编程知识
我们在日常的嵌入式开发中,经常会遇到各种C/C++的使用问题,并且C/C++纯软件的常用开发技巧有些嵌入式并不常用,而嵌入式开发中使用到的C/C++知识与技巧有些也非常特别,这里我们来具体介绍一下嵌入式开发常用技巧及C/C++知识。包括(static 静态变量,‘##’连接符,断言函数,其他).......................................
2022-06-15 18:41:25 2841
原创 嵌入式开发基础之线程间同步
在多线程实时系统中,一项工作的完成往往可以通过多个线程协调的方式共同来完成。不同线程之间存在着不同的相互制约关系,为了协调线程之间的制约关系,引入了线程同步的概念。同步是指按预定的先后次序进行运行,线程同步是指多个线程通过特定的机制(如互斥量,事件对象,临界区)来控制线程之间的执行顺序,也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间将是无序的。............
2022-06-13 14:26:15 1428
原创 STM32(七)------- 独立看门狗(IWDG)
STM32 有两种看门狗,提供了更高的安全性、时间的精确性和使用的灵活性,一个是独立看门狗另外一个是窗口看门狗,独立看门狗号称宠物狗,窗口看门狗号称警犬,两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。本文主要来介绍独立看门狗。...
2022-06-04 22:15:23 3177
原创 基于STM32的Flash读写详解
本文主要介绍STM32多种的内部Flash读写方式和读写长文件的功能函数怎样编写。阅读完本文可以使你能够正常的完成Flash读写操作。介绍STM32 FLASH闪存的编程和擦除Flash读写的标准库函数软件设计FLASH的读取直接读取某一地址的内容读取选定位置的选定大小的内容FLASH的写入直接使用标准库写入写入选定位置的选定大小的内容如何在Keil 5中查看Flash某地址的内容...
2022-06-03 13:27:46 15098
原创 基于STM32和AS608指纹模块的应用开发
基于STM32和AS608指纹模块的应用开发,实现录入指纹,识别指纹、删除指纹等功能,完整源码工程在文末。
2022-06-02 17:11:15 1414
原创 基于STM32的Flash擦除方式
本文主要介绍STM32的内部Flash擦除方式和擦除长文件的功能函数怎样编写。并且介绍一些注意事项,如只想擦除当前地址,却发现上下地址都出现了擦除等问题。阅读完本文可以使你能够正常的完成Flash擦除。并对擦除时会影响的地址大小有一个深入的认识,并在对页擦除时,页的起始地址和大小有所了解。...
2022-05-31 19:50:14 14807 4
电赛资料汇总(包含源码、文档、数据手册和历年参考)
2024-06-21
DevEco Device Tool
2023-12-20
SSC从站协议栈代码工具
2023-06-09
基于STM32的ANopen通信(3个源码,一主两从实现互相通信(SDO和PDO),并都移植了FreeRTOS)
2023-05-17
基于STM32的CANOpen通信
2023-05-12
CANopen对象字典安装环境
2023-05-12
CANopen协议栈源码
2023-05-12
修改Keil开发环境背景(修改为黑色主题)的配置文件
2023-01-06
FreeRTOS源码(最新)
2022-12-30
基于STM32的IAP升级程序
2022-11-10
STM32CUBEMX安装包
2022-08-12
Xshell免费版安装文件
2022-07-29
进制转换-不同位数的数据相互转换(C/C++实现)
2022-07-08
可以用来检测指定文件的MD5校验值,并且也可以MD5解密,MD5转换等功能的软件。
2022-06-17
基于STM32的MD5检验完整工程
2022-06-17
基于STM32的电机转速测试
2022-06-11
618自动刷电商活动手机软件
2022-06-05
指纹模块上位机测试软件
2022-06-01
网络调试软件---可用来局域网控制、IP检测
2022-05-28
ESP8266/32系列资料
2022-05-28
智能咖啡厅系统设计与实现
2022-05-27
基于STM32的IAP升级程序(Bootloader)
2022-05-26
基于STM32的MD5参考程序
2022-05-26
Git(开源的分布式版本控制系统)最新版安装包
2022-05-09
stm32+esp8266实现局域网下小灯控制源码
2022-04-20
ADB 最新版 正版安装包
2022-03-14
CANopen使用SDO时出现错误
2023-05-09
如何解决STM32在擦除Flash某几页后,导致的看门狗卡住的问题
2022-06-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人