自定义博客皮肤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)
  • 收藏
  • 关注

原创 模拟电路入门--绪论

这是我模电学习的学习笔记,首先对我来说我采用这种记笔记的方法来帮助我快速的定位到某个锚点,所以每一节都有非常精确的名字,其次,希望我的这份学习的合集能够帮助到有需要的同好。后面打算按照每一章节来书写笔记,而不是写一个超级大的版本。

2025-01-22 12:09:33 155

原创 Keil5的技巧

使用 ctrl + F 可以唤出一下界面,可以进行替换,在本文件查找,所有文件的查找,而且可以选择匹配大小写,精确匹配,正则表达式等方式。可以设置是否提示结构体成员,函数,并可以设置几个字符出现提示。也可以在上图红框处选择左右移和注释。

2024-09-28 17:11:37 549

原创 TIM--定时器

当下降沿到来的时候,发生第二次捕获,计数器 CNT 的值会再次被锁存到捕获寄存器CCR 中,并再次进入捕获中断,在捕获中断中,把捕获寄存器的值读取到 value3 中,并清除捕获记录标志。和上面一样,我们选用上升沿为周期采样的开始,当接收到上升沿信号时,会把 CNT 的值锁入到 CCR1 当中,然后从模式触发使 CNT 计数归为0,然后等到下降沿来临时,会把 CNT 的值锁入到CCR2当中,然后等待下一次上升沿到达,此时把 CNT 的值锁入CCR1中,同时从模式触发,使 CNT 归为0。

2024-09-28 16:22:40 1351

原创 C8T6--SPI读FLASH和双通信

本实验板中的 FLASH 芯片 (型号:W25Q64) 是一种使用 SPI 通讯协议的 NOR FLASH 存储器,它的 CS/CLK/DIO/DO 引脚分别连接到了 STM32 对应的 SPI 引脚 NSS/SCK/MOSI/MISO 上,其中STM32 的 NSS 引脚是一个普通的 GPIO,不是 SPI 的专用 NSS 引脚,所以程序中我们要使用软件控制的方式FLASH 芯片中还有 WP 和 HOLD 引脚。WP 引脚可控制写保护功能,当该引脚为低电平时,禁止写入数据。

2024-09-19 22:12:19 761

原创 SPI--原理

若对 SPI 通讯协议不了解,可先阅读《SPI 总线协议介绍》文档的内容学习。关于 FLASH 存储器,请参考“常用存储器介绍”章节,实验中 FLASH 芯片的具体参数,请参考其规格书《W25Q64》来了解。

2024-09-17 12:42:32 776

原创 C8T6超绝模块--DMA

对于DMA我们有三种模式:外设到寄存器寄存器到寄存器寄存器到外设。

2024-09-16 14:21:56 755

原创 C8T6超绝模块--USART串口通信

注意USART的引脚请自行查阅相应的数据手册本模块主要实现功能实现开发板与电脑通信,在开发板上电时通过 USART 发送一串字符串给电脑,然后开发板进入中断接收等待状态,如果电脑有发送数据过来,开发板就会产生中断,我们在中断服务函数接收数据,并马上把数据返回发送给电脑。

2024-09-09 22:35:43 654

原创 USART—串口通讯

串口通讯的物理层有很多标准及变种,我们主要讲解 RS-232 标准,RS-232 标准主要规定了信号的用途通讯接口以及信号的电平标准使用 RS-232 标准的串口设备间常见的通讯结构见下图在上面的通讯方式中,两个通讯设备的“DB9 接口”之间通过串口信号线建立起连接,串口信号线中使用“RS-232 标准”传输数据信号。由于 RS-232 电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个“电平转换芯片”转换成控制器能识别的“TTL 标准”的电平信号,才能实现通讯。

2024-09-08 16:22:38 1454

原创 C8T6超绝模块--EXTI

我们在前面使用读取按键的电压,根据返回值来执行小灯的系列操作,详情可见C8T6按键实现点亮小灯,而在这里,我们通过给按键配置一个EXTI中断,当产生中断时,就去中断服务函数里执行(注意:中断服务函数带有weak标签,可以直接进行重写,名字一定要写对,因为必须在中断服务列表当中)LED初始化在本专栏前面细讲过,这里就不过多赘述,请见C8T6超绝模块-点亮LED。

2024-09-08 10:44:00 625

原创 C8T6超绝模块--按键检测点亮LED

这里要注意的一点,有些板子在这里外接了一个电容器,当我们按下键位时,可以通过电容的充放电来实现硬件消抖,而如果没有外接电容器,当我们按下按键时,就会产生波纹抖动(高低电压变化不是一蹴而就的),导致按键没有达到我们预期的效果,我们要使用软件消抖(通过延时来判断电压,保证我们按下按键时,电压是处于稳定状态的)(这里针对的是我的板子的原理图,具体的查看自己的板子)注意看,这里按键一端接到的是地,当我们没按下按键时,其默认是低电压,当我们按下按键时,电路连通时,这是高电平。里面有具体的阐述,这里就不一一介绍了。

2024-09-04 11:00:10 717

原创 C8T6超绝模块--LED

注意:具体打开哪个时钟还是要通过查阅数据手册,看我们需要初始化的外设具体在哪个线程上,我们这里端口GPIOC在APB2的线程上,所以调用的是APB2时钟的打开函数。如图一边接入的是3.3V的外接电压,而我们需要电流流过需要PC13是低电压,这样有电势差才会使产生电流让小灯亮,初始化时我们一般控制默认接入高电压,使其不亮。首先不同的芯片的接法不一样,需要自己查看自己的芯片的原理图,我使用的是C8T6,使用的PC13接入的LED。下面是LED灯的GPIO的初始化函数。其实,灯的亮灭是通过高低电压来控制的。

2024-09-04 10:10:15 671

原创 WWDG—窗口看门狗

窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0X40时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。这个是跟独立看门狗类似的地方,不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置。窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗,这就是窗口看门狗中窗口两个字的含义(只是在递减的过程中分了一块窗口区,只有在窗口的范围里才能进行喂狗操作)

2024-09-02 13:20:30 786

原创 IWDG—独立看门狗

独立看门狗用通俗一点的话来解释就是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即 IWDG_RESET。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作。

2024-09-01 14:43:58 391

原创 嵌入式--通信的基本概念

而并行通讯一般是指使用 8、16、32 及 64 根或更多的数据线进行传输的通讯方式,,并行通讯就像多个车道的公路,可以同时传输多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一时刻只能传输一个数据位的数据。在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。

2024-08-02 11:44:06 349

原创 SysTick—系统定时器

在使用 SysTick 产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。

2024-08-02 10:25:28 390

原创 GPIO--位带操作

在 STM32 中,有两个地方实现了位带,一个是 SRAM 区的最低 1MB 空间,另一个是外设区最低 1MB 空间。这两个 1MB 的空间除了可以像正常的 RAM 一样操作外,他们还有自己的位带别名区,位带别名区把这 1MB 的空间的每一个位膨胀成一个 32 位的字,当访问位带别名区的这些字时,就可以达到访问位带区某个比特位的目的。

2024-08-01 10:01:09 1036

原创 DMA简介--配置

外设的数据宽度由 DMA_CCRx 的 PSIZE[1:0] 配置,可以是 8/16/32 位,存储器的数据宽度由 DMA_CCRx 的MSIZE[1:0] 配置,可以是 8/16/32 位。在 DMA 控制器的控制下,数据要想有条不紊的从一个地方搬到另外一个地方,还必须正确设置两边数据指针的增量模式。外设的地址指针由 DMA_CCRx 的 PINC 配置,存储器的地址指针由MINC 配置。

2024-08-01 09:59:12 1941

原创 GPIO--按键检测实战

在编写按键驱动时,也要考虑更改硬件环境的情况。我们把按键检测引脚相关的宏定义到“bsp_key.h”文件中// 引脚定义当然这是根据不同的硬件设施来写操作的端口和引脚,具体哪个端口和引脚请自行查阅手册。

2024-07-20 20:27:19 941

原创 断言和注释规范和编译技巧

当这个头文件被同一个文件第二次“#include”包含的时候,由于有了第一次包含中的“#define __LED_H”定义,这时再判断“#ifndef__LED_H”,判断的结果就是假了,从“#ifndef”至“#endif”之间的内容都无效,从而防止了同一个头文件被包含多次,编译时就不会出现“redefine。“bsp_led.h”文件中使用了“#include“stm32f10x.h””语句,按习惯,可能我们写主程序的时候会在 main 文件写“#include“bsp_led.h”

2024-07-20 11:52:48 592

原创 使用库函数新建工程

如图在 F1 标准库工程组织中的 CMSIS 部分的 core_cm3.c 实际是不需要的,是否留在工程里面没有任何影响,所有例程中都没有使用到它,此文件为官方库保留,已被其他代替。在新建的工程中添加 5 个组文件夹,用来存放各种不同的文件,文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可。注意这个配置很重要,后续出现仿真器检测不到,出现编译,下载的问题的原因基本都在这里。在新建的工程中添加这些文件,双击组文件夹就会出现添加文件的路径,然后选择文件即可。

2024-07-20 11:09:22 962

原创 新建工程时的文件及常见错误

_main 其实不是我们定义的 (不要与 C 语言中的 main 函数混淆),这是一个 C 库函数,当编译器编译时,只要遇到这个标号就会定义这个函数,该函数的主要功能是:负责初始化栈、堆,配置系统环境,并在函数的最后调用用户编写的 main 函数,从此来到 C 的世界。名为“startup_stm32f10x_hd.s”的文件,它里边使用汇编语言写好了基本程序,当 STM32 芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起 C 语言的运行环境,所以我们把这个文。”,相当于 C 语言的。

2024-07-19 19:52:28 532

原创 GPIO简介

GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO被分成很多组,每组有 16 个引脚。

2024-07-19 18:25:26 1110

原创 修改寄存器的位操作

在对寄存器进行位的操作时,我们需要对某一位进行置为和清零操作,需要掌握一些常用的位运算技巧。

2024-07-19 16:32:24 284

原创 什么是寄存器

说明中的 ODRx 是另一个寄存器的寄存器位,我们只需要知道ODRx 位为 1 的时候,对应的引脚 x 输出高电平,为 0 的时候对应的引脚输出低电平即可 (感兴趣的读者可以查询该寄存器 GPIOx_ODR 的说明了解)。首先这个芯片上一块连续的内存,其中又分为了几个区间进行不同的操作功能,对于其中的某一个区间如block2,是来操作外设的,而外设又根据速度不同划分APB1,APB2,AHB几个部分,而在这块block区,内存也是连续的,不同的功能对应的内存不同,所以可以通过想对偏移,来找到绝对地址。

2024-07-19 16:12:08 1188

原创 认识STM32

认识STM32大纲认识STM32具体案例认识STM32STN32有什么STM32的分类和命名方法STM32的选择引脚的定义,分类和查询制作PCB

2024-07-16 21:20:46 233

原创 驱动文件讲解

驱动文件对于后续的学习非常重要,所以请各位友友耐心对完本章,保证能够加深理解。

2024-07-13 12:15:35 170

原创 数据结构习题--移除链表元素

数据结构习题–移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回新的头节点注意:被删除掉的结点可能是头结点,所以要实现对头结点的判断和更新方法:单指针遍历分析这其实就是在常见的删除操作上,增加了一个判断值是否相等于目标值,当然这里还要考虑到头结点的情况代码package LinkList;public class deleteNodeByValue { /** * Definition

2024-07-09 09:45:21 286

原创 数据结构学习--线性表

定义:具有相同特性的数据元素的一个有限序列Java语法int val;用一组物理位置任意的存储单元来存放线性表的数据元素这组存储单元位置是任意的,可以相邻,也可以不相邻(即逻辑次序和物理次序不同),访问元素是从第一个元素依次访问。顺序存取结点:数据元素的存储映像.由数据域和指针域两部分组成n个结点由指针链组成一个链表,它是线性表的链式存储映像,称为线性表的链式存储结构空表:有头节点,则头结点的指针域为空无头节点,则头指针指向空头结点的好处:便于首元结点的处理。

2024-07-09 09:44:49 352

原创 Tomcat

该资源是完全免费的,可以去官网进行下载,或者在博客里面搜索资源,Windows操作系统下载zip版本。可以使用netstat -anb(使用管理员权限在操作界面输入)查询已经在监听的端口。当hosts文件里面没有所访问的域名,就会去DNS。这里是hello.html文件,在src下面。

2024-07-08 10:06:09 303

原创 Http协议

请求头响应头。

2024-07-07 09:24:13 272

原创 servlet

可以干什么?代码实例:// 1.获取到ServletContext对象 ServletContext servletContext = getServletContext();// 2.获取信息 String author = servletContext . getInitParameter("author");

2024-07-07 09:23:49 766

原创 常用快捷键

常用快捷键目录Ctrl + Alt + b:查找子类或接口Ctrl + Alt + i : 在浏览器进入开发者模式

2024-06-01 09:22:47 143 1

原创 DOM学习

DOM全称是Document Object Model 文档对象模型,就是把文档中的标签,属性,文本,转换为对象来管理。

2024-05-27 14:46:48 865

原创 JS入门学习

首先,在JavaScript里面的数组的元素可以不是同一个类型< script > // 方式一:直接创建 var array1 = [ 100 , "第二个" , '第三个' ];// 方式二:先声明,再赋值 var array2 = [ ];array2 [ 1 ] = "第二个";array2 [ 2 ] = '第三个';// 方式三: var array3 = new Array(100 , "第二个" , '第三个');

2024-05-27 14:46:33 1052

原创 CSS学习

对于前端开发来说,把内容和样式分离,提高开发效率。

2024-05-15 23:52:16 958

原创 HTML学习

HTML是超文本标签语言,而HTML文本是由HTML标签组成的文本,可以包括文字,图形,动画 ,声音,表格,链接等HTML的结构包括头部(Head),主体(Body)两大部分一个html文件的大致组成如下。

2024-05-15 20:11:52 809

原创 Java Web开篇

这是前端和后端组成的系统的框架结构。

2024-05-13 14:21:29 246

原创 双向BFS算法学习

推荐练习题力扣“127”题:单词接龙“752”题:打开轮盘锁这里推荐一篇力扣题解这里使用打开轮盘锁的题干进行举例:你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。

2024-05-08 22:39:06 477

原创 数据结构习题--赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true;否则返回 false。magazine 中的每个字符只能在 ransomNote 中使用一次。

2024-05-05 22:15:21 352

原创 数据结构习题--返回链表中点

使用快慢指针,快指针fast,一次遍历两个位置,慢指针slow,一次遍历一个位置,当快指针为null,或者下一个为null,最后返回slow。

2024-05-04 22:16:22 266

启动文件详解-逐行批注版

启动文件详解,包含逐行注释,和基础语法讲解

2024-08-01

对STM32驱动文件的详细讲解

对STM32驱动文件的详细讲解

2024-07-13

GET和POST的选择

GET和POST的选择

2024-06-05

Http协议-记录常见的状态码

可以通过状态码来知道浏览器服务的状态

2024-06-01

数据结构学习-队列/栈

简单的介绍了队列的实现原理,和一些开发中的考量

2024-04-28

数据结构-KMP算法原理

对KMP算法进行具体的分析,生动图解,保证能够一看就懂

2024-04-10

数据结构的KMP算法原理

详细的分析了对于KMP算法的Next[ ]数组的求解原理

2024-04-10

数据结构的逻辑结构图,描述逻辑结构关系

数据结构的逻辑结构图,描述逻辑结构关系

2024-03-26

Java的常用的正则表达式

收录了常见的文本正则表达式的模板,便于开发

2024-03-25

Java语法学习 正则表达式

Java语法学习 正则表达式

2024-03-25

MySQL安装指南,免费版本

MySQL安装指南,免费版本

2024-02-17

空空如也

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

TA关注的人

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