自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于STM32CubeMX和keil采用SPI通信实现轮询方式读写W25Q128获取设备ID

最近使用通信比较多,包含UART,I2C,SPI,DMA等。这篇博客主要是对近期项目使用的SPI进行讲解,并结合普中STM32F407ZET6芯片以及W25Q128芯片和所对应模块电路进行阐述。主要是对SPI通信的基本原理和流程,W325Q128的原理图以及芯片手册的阅读进行阐述。本篇博客从SPI通信原理到W25Q128芯片手册阅读,时序图阅读,再到STM32CubeMX配置和代码编写,整个项目工程非常完善,形成闭环。写的也非常详细,通俗不通俗我不知道,我觉得还是挺好懂的。

2023-08-20 17:12:39 1213

原创 基于STM32CubeMX和keil采用通用定时器中断实现固定PWM&可调PWM波输出分别实现LED闪烁与呼吸灯

上一篇博客里面写了基本定时器实现LED闪烁,主要就是一个预分频以及计数的使用,再加上一个电平翻转,原理以及具体操作比较简单。这篇博客选择通用定时器进行稍微难一点的效果演示,用到输出PWM波的功能。这篇博客写输出固定PWM以及可变PWM,进一步实现LED0闪烁以及LED0呼吸灯效果。PF9输出PWM波控制LED0闪烁,1s周期,0.5s改变一次状态。PF9输出PWM波控制LED0实现呼吸灯,一个时钟周期20ms。

2023-08-01 22:55:03 1602 1

原创 基于STM32CubeMX和keil采用STM32F407的基本定时器中断实现LED闪烁

定时器有三种,基本定时器,通用定时器,以及高级定时器。这篇博客以最简单的基本定时器为例,实现LED的闪烁。后面两种定时器的用法后面再写。TIM6控制LED每隔0.5s变一次状态。TIM7控制LED1常量2s后熄灭。这篇博客详细记录了定时器的简单使用,从目标出发到原理阐释再到配置与代码编写,一步一步实现功能。难度不是很大,中断处理部分与上一篇有很多共性的地方,学习起来也比较快。就是记录的时候比较费时间。写这篇博客的部分内容用了下chatGPT工具,效果也挺好,确实提高了部分效率。

2023-07-23 11:56:26 2162

原创 Latex系列3---页面设置+字体字号+颜色符号

上一节中阐述的是简易的文本,本节在此基础上进行完善加工。页面设置页边距在平时写文章的时候,其实对于页边距的要求不高,但是论文这种就比较的严格。调整页边距需要使用\usepackage{geometry}在这里我们平常使用此包进行调整页边距的常见用法如下:\usepackage{geometry [left=2.50cm, right=2.50cm, top=2cm, bottom=2cm]{geometry}这里在{}前添加了[],在[]里添加了相关参数:left、right、top、

2022-05-10 21:30:59 8585 3

原创 在Gtiee搭建仓库传代码/多人开发/个人代码备份---git同步---TortoiseGit+TortoiseSVN

正常企业的大型项目都会使用SVN和云端的代码仓库(或者局域网自建的云仓库)进行开发。极少数的小公司,尤其是对代码不负责的小公司,让员工自己在公司电脑上备份,多人协同开发的时候还是直接拷贝代码的那种。不幸,这样的小公司我待过一年。这篇博客的目的如标题所示,记录一下自己从头到尾搭建仓库,同时方便后续自己学习研究写代码。这篇博客主要记录一下工作中常用的一个TortoiseGit+TortoiseSVN的工作方式,一直都是摸索着使用。这篇博客就系统的整理一下如何搭建这么一个仓库,平时怎么使用。

2024-04-21 15:38:13 730

原创 C/C++ BM28 二叉树的最大深度

这个最大深度就是DFS搜索的概念了,每个路径都搜索,看一下那条路径最长。最长的路径就是最大深度了。树的遍历加上递归的使用,将问题进行拆分,是二叉树的一种精髓了。

2024-04-20 17:22:44 552

原创 QT中对于QPushButton样式的调整

前段时间在调软件的样式,学到了些新的东西,也碰到了些问题,这里做一下记录。这篇博客主要实现的目标就如标题所示。这样我们想要的基本元素就有了,文字和按钮图标。这篇博客主要对QPushButton的样式调整以及自己对一些样式概念的理解,其他的按钮控件也可以参考这个。对于样式真的没什么统一的说法,不同需求,不同人的调法都不一样,需要自己去琢磨。这个比较费时间,但是确实好看啊。

2024-04-20 13:29:08 925 1

原创 C/C++ BM21 旋转数组的最小数字

查找算法的适用条件以及找到题目最核心的诉求是解决问题的关键。遇到有序数列的一种查找,如果对时间复杂度有要求,要考虑二分查找。

2024-04-14 14:01:34 843

原创 C/C++ BM25二叉树的后序遍历

和前序遍历中序遍历一致,换个顺序就行。详情参考C/C++ BM23 二叉树的前序遍历详情参考C/C++ BM24 二叉树的中序遍历明白了前序和中序遍历,这个后序遍历也非常简单。

2024-04-14 14:01:05 1108

原创 C/C++ BM24二叉树的中序遍历

中序遍历和前序遍历的不同地方简单改过就是根的位置不同罢了。具体参考C/C++ BM23 二叉树的前序遍历明白了前序遍历,这个中序遍历无非就是换个顺序的问题。

2024-04-14 13:59:59 740

原创 C/C++ BM23 二叉树的前序遍历

自己在草稿纸上模拟这个遍历的过程比较简单,但是转移到代码上就突然会懵逼。这个在我之前学数据结构,做到这个实验的时候觉得很难理解。最近虽然已经入职了,但是刷刷题巩固一下基础的时候,还是会受益良多。数据结构的东西有时候比较抽象,算法思想到代码的转换需要自己好好琢磨。之前做算法题的时候,觉得很奇怪,为什么讲算法原理,明白了,但是具体上手题目的时候,就是一脸懵逼,告诉你怎么写了,还是不会写。究其本质就是写到少,想的少;事必躬亲可能才是唯一解吧。

2024-04-14 13:59:37 819

原创 C/C++ BM20 数组中的逆序对

除了最常规的暴力破解,还要根据题意考虑更优质解答。最近整理了一下各种排序的算法,暂时还没整理到归并排序,所以这里第一优化的反应是考虑用二分查找的方式,但是二分查找一般涉及到有序的数列。这里还是不符合。这里我们想要的是一种分治的思想,所以归并排序会更好。

2024-03-10 14:40:31 796

原创 C/C++ BM19 寻找峰值

这道题第一遍做的时候题目条件没有好好的审阅,导致在判断边界问题的时候出了不少岔子。我的方法是时间复杂度为O(N)的,官方的logN可能更好一些。我的就是简单的遍历判断求解,官方用的是二分查找的方式。多画一画图,注意边界。同时要看清题目意思,看懂每个条件。

2024-03-10 14:40:01 1016

原创 C/C++ BM18 二维数组中的查找

这道题主要是题目要求的时间复杂度和空间复杂度怎么处理,最简单的暴力那就是全部遍历一遍,虽然也能过,但是不符合题意。查找题要看清题目给的,除了常见的二分,用暴力有时候也可以,更多的还要考虑题目的特殊性。

2024-02-24 11:27:13 963

原创 C/C++ BM17 二分查找-I

一篇简单的二分查找的运用简单回顾一下二分查找,注意二分查找的对象,一般是有序数列。

2024-02-24 11:26:53 844

原创 C/C++ BM16 删除有序链表中重复的元素-II

这道题和BM15稍有些差别,一开始做的时候还是按照BM15的方法来做,结果想了半天发现自己路走窄了。这道题也是删除节点的方式,不过可能出现删除或者说跳过节点数不固定的情况,这种情况在处理的时候,我一开始用一个变量来保存要处理的节点个数,最后发现,这样做很麻烦,要考虑多种情况。BM15与BM16属于同类型问题,BM16是进阶。这类问题主要在于删除节点的操作,链表中删除节点涉及到当前节点的删除和下一个节点的删除大致这两种情况。

2024-02-23 09:44:53 1158

原创 C/C++ BM15 删除有序链表中重复的元素-I

这题比较简单,就是一个链表中的删除节点操作以及节点值比较的过程。主要是对链表的删除操作的复习回顾。

2024-02-23 09:44:41 876

原创 C/C++ BM14 链表的奇偶重排

这道题算是链表思路的一种常规题,看透题目本质做起来还是不难。链表做题两种方式,双指针,开辟辅助数组或链表。

2024-02-21 09:16:40 1055

原创 C/C++ BM13 判断一个链表是否为回文结构

回文结构这种之前在做C++入门题的时候,判断回文数的时候遇到过。之前的做法是采用取数,求余等方法来把每一个数取出来再组合进行判断。在链表中,链表倒置后再相互判断值,比原本取数的方法好像更方便。官方给的理解还是用了双指针法,我这里也会贴。这题比较简单,方法也有很多,个人觉得在链表题中,链表翻转和双指针法的用途还是比较广的。

2024-02-21 09:16:27 859

原创 C/C++ BM12 单链表的排序

链表排序处理起来比较麻烦,因为它不支持下标操作。这里写一下链表排序的常用方法。链表排序除了用辅助数组,还可以用归并的思想。关于归并排序在链表中的运用还是有点陌生,需要多实践。

2024-02-20 12:12:15 972

原创 C/C++ BM11 链表相加(二)

这道题使用链表来实现加法运算,主要是涉及到数据对位以及加法进位的处理。这道题回顾了一下链表翻转。对于链表的四则运算涉及到对位情况,考虑使用翻转链表会更好。不能按照常规的四则运算从左到右的顺序来做,要结合链表本身的特性来做。

2024-02-20 12:11:54 857

原创 C/C++ BM10 两个链表的第一个公共结点

这道题用到的思想和前几道题一样,涉及到了双指针这种,整体难度不大。链表题常用算法,双指针。两个链表之间的关系比较,考虑STL容器。

2024-02-19 16:59:12 865

原创 C/C++ BM9 删除链表的倒数第n个节点

这道题对于BM8来讲,其实是一个新的解题思路。主要用到了双指针以及哨兵节点。BM8,9综合了前面做到的题的思路。链表题几个思路:双链表,栈,遍历。

2024-02-19 16:58:57 852

原创 C/C++ BM8 链表中倒数最后k个结点

这道题和BM1中的思路有些许类似,整体不难。这题比较简单,主要就是链表遍历,同时也复习了一下栈的使用。

2024-02-18 15:58:41 827

原创 C/C++ BM7 链表中环的入口结点

BM6里面使用了双指针法和哈希的方式来查找环,BM7相对于BM6只多了一个查找第一个重复地址的过程。个人认为是用哈希是最简单,C++11标准的set或者map。这道题让我对STL中的set特性有了更深的理解;结合BM6和BM7,两道题让我第一次接触双指针解法,收获颇丰。

2024-02-18 15:58:27 910

原创 C/C++ BM6判断链表中是否有环

做了一堆单链表单指针的题目,这次是个双指针题,这里双指针的作用非常明显。如何判断链表有环的情况,之前没遇到过。所以第一次做的时候有点懵逼,同时对双指针的使用上并不是特别熟悉,这道题在初期思考的时候都是想着怎么用单链表加标志位的情况来判断。还是有点草率了。

2024-01-18 21:11:05 1054

原创 C/C++ BM5 合并K个已排序的链表

在接触了BM4的两个链表合并的情况,对于k个已排序列表,其实可以用合并的方法来看待问题。这道题是BM4的延伸,主要是多了一个两两合并的思想;对于解法二,就是有点取巧的意思了,就题论题这种。

2024-01-18 21:10:44 917

原创 C/C++ BM4 合并两个排序的链表

这道题采用两种方式,一种是直接插入法,还有一种就是递归调用。合并链表的过程就是插入节点的过程,不过是双链表遍历。首先判断两个链表的最小节点谁的最小,那么链表首节点小的作为基链表,另一个链表进行比较与插入。一般链表题都要添加一个头结点,作为哨兵节点,这样的好处是确保每一个节点都有一个前置节点。对于题目中的特殊情况,空链表这种,我们得单独拎出来判断。如果一个链表是空链表,则直接返回另一个非空链表;如果两个链表都为空,则直接返回空链表。

2023-12-30 20:30:23 946

原创 C/C++ BM3 链表中的节点每k个一组翻转

这道题的关键是理解链表指针的位置;在BM2的区间翻转基础上,多了个指针偏移,博客里面我贴图阐述一下。BM3应该是链表翻转的最终题了。从BM1的翻转链表,到BM2的区间翻转,再到BM3的分段区间翻转。确实让我对链表有了更深刻的理解。链表中的断链和接链的操作要注意顺序,在插入节点的时候比较重要。插入节点的时候要先把节点指向新链表,再断链表相连。链表确定数据长度需要使用while循环来依次遍历,并使用一个int类型的变量进行计数。

2023-12-30 20:29:55 1069

原创 QT TCP通信:用QT制作一个TCPServer与TCPClient的通信

之前项目上用到了TCP通信,作为TCP的服务端上位机与下位机进行控制信号传输。这篇博客就对QT中使用TCP通信理一个简单的demo,做一个简单的TCP服务端和客户端的通信。因为时间有限,这里就阐述一下基本原理和代码实现,具体的demo参考的是《QT5.9C++开发指南》具体效果图如下这篇博客主要阐述了一下QT中TCP的服务端和客户端的连接与通信,以及简单收发数据。我这里把核心的逻辑提出来阐述了一下,具体的源码见绑定的资源。或者自己去异步社区下载一下书籍配套的源码。

2023-12-25 23:12:29 1117

原创 C/C++ BM2链表内指定区间反转

这题是BM1的升级版,不过是把完整的链表翻转变成了指定区间。这道题是结合了BM1的链表翻转,并增添了遍历指定位置节点、链表断表、插入、组合等操作。难度比上一题BM1加大,核心思想不变,依旧是倒置链表。

2023-12-25 23:12:14 1036

原创 C/C++ STL学习[2]顺序容器的常用操作函数

上一篇章写了常用的顺序容器以及不同顺序容器之间的区别。这篇博客主要是写顺序容器的一些基本操作和一些常用函数,以通用的操作为基准。这篇博客归纳了一下容器的一些常用操作,这里的操作都是泛型的,具体的容器还要具体对待。

2023-12-20 22:18:01 807

原创 C/C++ BM1反转链表

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。数据范围: 0≤n≤10000≤n≤1000。如当输入链表{1,2,3}时,

2023-12-20 22:17:47 1434

原创 C/C++ 谓词 lambda表达式

最近看lambda相关知识点,发现这个概念比较难以理解,看了几遍。可能是第一次正式接触STL的原因,对标准库的泛型编程理解不够深刻。这篇博客就写一下lambda的相关。总结一下就是,谓词,作为标准库中的一个比较准则。这个比较准则是自定义的,是可调用的。我个人觉得有点像函数重载,只不过在STL中叫做谓词。当然后面lambda表达式对谓词的运用更进一步,后面再写。

2023-12-03 12:24:27 107 1

原创 C/C++STL学习[1]---顺序容器阐述、对比、选择vector,deque,list,forward_list,array,string

STL系列博客开篇,记录一下自己学C++STL相关的心得。这篇博客主要是写顺序容器的类型以及各个容器之间的异同还有平时对容器使用的选择。顺序容器表示这个容器提供了快速顺序访问元素的能力。容器名称简述vector可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢deque双端队列。支持快速随机访问。在头尾位置插入/删除速度很快list双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快单向链表。只支持单向顺序访问。

2023-12-03 12:23:26 282

原创 C/C++关于main函数参数问题

每次写C/C++程序,基本上就是一个int main(){return 0;但是后来在linux里面涉及到很多带参数的main函数,我一直不太理解,这里就写篇博客记录一下。这篇博客主要是针对自己遇到的main带参数情况的讨论以及理解,最后找AI汇总了一下带参数的main的用途。

2023-11-19 15:22:13 205

原创 基于STM32CubeMX和keil采用RTC时钟周期唤醒和闹钟实现LED与BEEP周期开关

RTC的功能有很多,这里主要介绍RTC的周期唤醒和闹钟功能。本篇博客先阐述RTC的概念以及周期唤醒和闹钟的原理,并对STM32CubeMX的配置参数进行阐述,最后结合LED与BEEP进行效果演示。最终效果:每分钟的第5秒翻转LED0状态.每分钟的第30秒翻转BEEP的状态。每秒翻转LED1状态。这里WakeUp的输出到RTF_AF1的电平是高电平,可以用示波器抓一下看看。我这通过杜邦线引出来看LED,只能看到微弱的闪烁。

2023-11-19 15:21:34 1369

原创 基于STM32CubeMX和keil采用USART/UART实现非中断以及中断方式数据回环测试借助CH340以及XCOM

这篇博客从串口通信的接口讲起,阐述原理,介绍通信方式,最后上机测试。串口分为很多种,我们STM32学习过程中常见的就是UART/USART,前者是同步模式,后者是异步模式。还有RS485,RS232这种也是串口。我们平常使用的串口模块,大多都是类似于USB转TTL模块,为什么叫USB转TTL而不是USB转串口,因为MCU上的串口是逻辑电平(TTL或者CMOS电平),MCU和模块的通信通过逻辑电平的串口信号线直接连接。所以两种叫法,后者包含前者。前者更为常用。

2023-11-04 16:53:00 378

原创 C/C++数据结构-链表-链表合并排序输出

这个小例题涵盖的知识点还是非常多的。包括链表的定义,链表的尾插法,链表的遍历,冒泡排序用链表实现。链表可以使用带头结点和不带头结点的形式,各有千秋。本文完整版使用带头结点的链表。

2023-11-02 17:53:00 140

原创 C/C++选择排序算法

写了下选择排序的算法原理和时间复杂度分析,配上个例题阐述了一下

2023-10-30 23:17:30 176

在Gtiee搭建仓库传代码/多人开发/个人代码备份-git同步-TortoiseGit+TortoiseSVN

在Gtiee搭建仓库传代码/多人开发/个人代码备份---git同步---TortoiseGit+TortoiseSVN软件安装包

2024-04-22

用QT制作一个TCPServer的上位机与TCPClient的下位机通信

用QT制作一个TCPServer的上位机与TCPClient的下位机通信的配套资源

2023-12-21

基于STM32CubeMX和keil采用RTC时钟周期唤醒和闹钟实现LED与BEEP周期开关

基于STM32CubeMX和keil采用RTC时钟周期唤醒和闹钟实现LED与BEEP周期开关配套资源

2023-11-19

基于STM32CubeMX和keil采用USART/UART实现非中断以及中断方式数据回环测试借助CH340以及XCOM

基于STM32CubeMX和keil采用USART/UART实现非中断以及中断方式数据回环测试借助CH340以及XCOM配套代码

2023-11-04

基于STM32CubeMX和keil采用SPI通信实现轮询方式读写W25Q128获取设备ID

基于STM32CubeMX和keil采用SPI通信实现轮询方式读写W25Q128获取设备ID完整代码

2023-08-20

基于STM32CubeMX和keil采用STM32F407的基本定时器中断实现LED闪烁

源码与工程

2023-08-01

基于STM32CubeMX与keil采用按键外部中断方式控制LED与蜂鸣器

源码以及工程

2023-08-01

基于STM32CubeMX和keil采用通用定时器中断实现固定PWM&可调PWM波输出分别实现LED闪烁与呼吸灯

源码以及工程文件

2023-08-01

linux安装eclipseCDT对应的jdk和eclipseCDT安装包

这个资源是我博客里面涉及到的eclipseCDT和jdk对应的安装包,是2023年最新的一版。 结合我的博客:linux下安装EclipseCDT:离线安装与在线安装配套学习更好。

2023-05-28

空空如也

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

TA关注的人

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