自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Never say never

路漫漫其修远兮,吾将上下而求索

  • 博客(159)
  • 资源 (13)
  • 收藏
  • 关注

转载 一文总结嵌入式【七大通信总线协议】

本文深入而全面地概述了嵌入式领域内七种经典串行通信协议:UART、RS232、RS485、I2C、SPI、CAN和I2S。这些协议能够适应不同的应用需求,包括通信速度、传输距离、系统复杂度和成本等多个方面。通过了解每种协议的核心特性和差异,可以为电子系统设计中选择最适宜的通信方式提供重要参考哦。

2024-07-31 14:39:37 2732

原创 HAL库使用SPI协议修改MCP41010数字电位器阻值

MCP41010-I/SN是采用8引脚SOIC封装的8位分辨率单通道易失数字电位器。抽头的位置呈线性变化,并通过行业标准SPI接口进行控制。MCP41010的电阻值为10Kohm,具有出色的交流和直流特性,在静态工作期间的功耗小于1?提供了软件关闭功能,该功能可将“A”端子与电阻器堆栈断开,同时将抽头连接到“B”端子。

2024-07-02 14:25:23 3853

原创 K型热电偶工作原理

用两种不同颜色表示两种不同的金属材料,A、B 端在常温环境中用于测温端口,称为冷端。在 C 端进行加热。由于热电效应,在 A端和C端 以及 B端和C端 之间温度不同,所以会产生电势差。而因为两种金属材料的不同,会导致这两个电势差不一样,最终导致了 A端 和 B端 也有了电势差,通过测量这两个端的电势差,根据热电效应的线性关系就可以得出 A(B)端 和 C端 的温差。再通过 一个已知温度的校准值 和 两种金属的线性系数,就可以计算出任意输出电势差对应的温度值了。

2024-07-02 14:11:27 3846

原创 热敏电阻阻值和ADC采集值的转换(附10K(3950)案例)

resistance = (float)(10000 * adc_value) / (4096 - adc_value);是根据电压分压原理和ADC的转换公式来的。假设温度传感器和一个10k欧姆的电阻串联,两端接5V电源,那么温度传感器的电阻值和输出电压之间有如下关系:

2024-06-25 11:18:49 3087

转载 什么是Hbase

只有光头才能变强。文本已收录至我的GitHub精选文章,欢迎Starhttps://3y/3y在我还不了解分布式和大数据的时候已经听说过HBase了,但对它一直都半知不解,这篇文章来讲讲吧。在真实生活中,最开始听到这个词是我的一场面试,当年我还是个『小垃圾』,现在已经是个『大垃圾』了。面试官当时给了一个场景题问我,具体的题目我忘得差不多了,大概就是考试与试题的一个场景,问我数据库要如何设计。

2024-05-30 16:14:07 1494

原创 常用的USB转串口驱动合集整理免积分下载

整理的开发中常用的驱动,自己备份,也分享给大家,不要积分USB转串口驱动FT232芯片版:点击下载CP210x芯片版:点击下载CH340芯片版:点击下载PL2303芯片版:点击下载下载器驱动ST-LINK:点击下载J-LINK:点击下载

2024-05-30 15:57:56 83994

原创 TIM1_CH1N和TIM1_CH1的区别

TIM1_CH1和TIM1_CH1N都是指TIM1定时器的通道1,但是它们之间有一些区别: 1. TIM1_CH1是指定时器的通道1的正常输出,TIM1_CH1N是指定时器的通道1的反相输出。 2. TIM1_CH1可以输出PWM信号,而TIM1_CH1N可以输出互补的PWM信号。 3. 在某些特殊的情况下,TIM1_CH1N可以用作输入捕获通道,而TIM1_CH1不能。 4. TIM1_CH1和TIM1_CH1N的输出极性可以通过TIM1_CCER寄存器配置。

2024-05-30 14:52:02 2482

原创 STM32CUBEMX 定时器的 Parameter Settings 具体参数配置解释

STM32CUBEMX 定时器的 Parameter Settings 具体参数配置解释

2024-05-30 13:55:45 83402

转载 STM32入门:TIM定时器PWM1模式与PWM2模式的比较

PWM1 模式:向上计数,当 TIMx_CNT < TIMx_CCRn 时,定时器 TIMx 的通道 n 为有效电平,否则为无效电平;向下计数,当 TIMx_CNT > TIMx_CCRn 时,定时器 TIMx 的通道 n 为无效电平,否则为有效电平 有效电平,否则为无效电平。PWM2 模式:向上计数,当 TIMx_CNT < TIMx_CCRn 时,定时器 TIMx 的通道 n 为无效电平;向下计数,当 TIMx_CNT > TIMx_CCRn 时,定时器 TIMx 的通道 n 为有效电平。

2024-05-30 13:23:45 952

原创 STM32总线外设及挂载外设

1、AHB总线:(1)Flash 存储器;(2)DMA;(3)复位和时钟控制;(4)CRC;(5)以太网;(6)SDIO;2、APB2总线:(1)USART1;(2)高级控制定时器TIM1和TIM8;(3)模数转换器ADC1、ADC2、ADC3;(4)SPI1;(5)外部中断EXTI;(6)复用IO,AFIO;(7)通用IO:GPIOA~G;3、APB1总线:(1)定时器TIM2到TIM7;(2)RTC;(3)WDT看门狗;(4)SPI2 、SPI3;(5)USART

2024-05-29 14:44:09 494

原创 Keil问题解决:结构体数组初始化,初始化后的值不是目标值

省流:使用的编译器为compiler version 6,切换为compiler version 5。结构体数组的值并不是初始化的值,好像是默认值。

2024-05-15 18:33:29 991

原创 Keil手动安装编译器V5版本

新版的keil不会自动帮你安装V5版本的编译器,但是很多教程很多比赛所用单片机都是V5的编译器,所以用来开以前的或者开源的很多东西编译直接一大堆报错。

2024-05-15 18:32:06 1579

原创 单片机裸机开发轮询任务

在网上看到高手理解的轮询任务。

2024-05-15 09:35:39 92668

转载 【FPGA】04_关于“复位“的理解与总结

1.什么是“复位”,为什么需要复位?”2.低电平复位3.高电平复位4.关于 锁相环PLL IP 核中“复位”的说明5.总结

2024-05-07 17:57:50 429

转载 STM32CubeMX生成代码时防止UTF-8乱码

所以解决的方法有三种:1、不要使用UTF-8编码。如果开发环境是多元的,要支持Windows、Linux、Mac OS X,那只能使用UTF-8编码。2、不要在STM32CubeMX生成的文件中写中文注释3、添加环境变量

2024-04-24 16:55:27 1578

原创 关于stm32cubemx时钟设置中css enable的作用

STM32已提供了一个时钟失常恢复机制(CSS),当系统选择HSE作系工作时钟,并打开了CSS功能后,当HSE由于外部原因而停震时,系统将自动切换到内部HSI运行,并产生NMI中断,于是可以在NMI中断中进行安全处理。

2024-04-23 18:32:04 656

转载 【STM32】系统时钟RCC详解(超详细,超全面)

STM32本身十分复杂,外设非常多 但我们实际使用的时候只会用到有限的几个外设,使用任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,为了兼容不同速度的设备,有些高速,有些低速,如果都用高速时钟,势必造成浪费 并且,同一个电路,时钟越快功耗越快,同时抗电磁干扰能力也就越弱,所以较为复杂的MCU都是采用多时钟源的方法来解决这些问题。所以便有了STM32的时钟系统和时钟树

2024-04-23 18:24:37 7970 2

转载 简单几句讲明白UART、COM、485、RS232、I2C、SPI区分

UART、COM、I2C、SPI都属于硬件接口都是串行口。但是有同步串行口和异步串行口之分,其中UART是单片机串口的俗称,COM口是电脑串口的俗称,它们都是异步串行口;而I2C、SPI都属于同步串行口,再者TTL、RS-232、RS-485区别于硬件接口,它们是指的电平标准(电信号)。

2024-04-01 12:30:24 3286 1

转载 聊聊内存那些事(基于单片机系统)

单片机的RAM和ROM单片机的ROM,叫只读程序存储器,是FLASH存储器构成的,如U盘就是FLASH存器。所以,FLASH和ROM是同义的。单片机的程序,就是写到FLASH中了。而RAM是随机读/写存储器,用作数据存储器,是在运行程序时,存放数据的。内存区内存主要分为:代码区、常量区、静态区(全局区)、堆区、栈区这几个区域。

2023-10-12 17:14:13 492

转载 51与STM32单片机架构(内核和片上外设)的区别汇总

单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已(一个集成封装样式的芯片就是一台pc,不要把那个开发板电路板也算进去)。

2023-09-27 16:21:00 1426

转载 C语言编译过程详解

上述gcc命令其实依次执行了四步操作:1.预处理(Preprocessing), 2.编译(Compilation), 3.汇编(Assemble), 4.链接(Linking)。

2023-09-27 09:25:49 339

原创 C/C++的四大内存分区和常量的存储位置

在理解C/C++内存分区时,常会碰到如下术语:数据区,堆,栈,静态存储区,静态区,常量区,常变量区,全局区,字符串常量区,静态常量区,静态变量区,文字常量区,代码区等等,初学者被搞得云里雾里。在这里,尝试捋清楚以上分区的关系。数据区包括:堆,栈,静态存储区。静态存储区包括:常量区(静态常量区),全局区(全局变量区)和静态变量区(静态区)。常量区包括:字符串常量区和常变量区。代码区:存放程序编译后的二进制代码,不可寻址区。

2023-09-26 17:13:56 728

原创 C语言数组清零----使用memset函数

看着介绍其实函数作用非常简单,就是用于初始化,但是需要注意的是memset赋值的时候是按字节赋值,是将参数化成二进制之后填入一个字节。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。,根本不是你想要赋的值100,这也就解释了为什么数组中的元素的值都为1684300900。:是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。给int类型的数组赋值,你给第一个字节的是一百,转成二进制就是。,而int有四个字节,也就是说,一个int被赋值为。

2023-09-07 17:14:39 100859

原创 C语言extern关键字用法和理解

一个c文件需要调用另一个c文件里的变量或者函数,而不能从.h文件中调用变量。详见下文1extern int a = 5与int a = 5意义是一样的,都是定义。而extern int a;是声明。但会产生一条警告。详见下文2对于函数而言,和引用变量是一样的,如果需要调用其他.c文件中的函数,在文件中的函数声明前加extern即可,不加extern而直接声明函数也可以,因为声明全局函数默认前面带有extern。详见下文3如果不想让其他.c文件引用本文件中的变量,加上static即可。详见下文4———

2023-09-07 16:50:06 318

原创 incomplete type is not allowed

在b.c文件中需要引入一个a.c中的结构体变量,,我在b.c中直接extern 这个结构体,,结果编译时报错error: #70: incomplete type is not allowed最后上网查找才知道结构体不能这样引入。当ertern一个数组时如果不定义数组大小是也会出现error: #70: incomplete type is not allowed这个错误。2.在a.c中定义这个结构体类型的变量。(也可以在a.h中定义结构体变量)1.在a.h中声明这个结构体,,(结构体实体要在.h文件中)

2023-09-07 16:44:33 1217

转载 【STM32】 DMA原理,步骤超细详解,一文看懂DMA

DMA,全称Direct Memory Access,即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。我们知道CPU有转移数据、计算、控制程序转移等很多功能,系统运作的核心就是CPU,CPU无时不刻的在处理着大量的事务,但有些事情却没有那么重要,比方说数据的复制和存储数据,如果我们把这部分的CPU资源拿出来,让CPU去处理其他的复杂计算事务,是不是能够更好的利用CPU的资源呢?

2023-09-06 14:08:03 1875

原创 STM32 HAL库函数——HAL_UART_RxCpltCallback()详解

HAL_UART_RxCpltCallback 是一个回调函数,用于在使用 HAL 库进行串口接收时处理接收完成事件。当使用 HAL_UART_Receive_IT 函数启动串口接收并且接收到指定数量的数据后,HAL 库会自动调用 HAL_UART_RxCpltCallback 函数。回调函数是一种特殊的函数,它在特定事件发生时由系统或库调用,而不是由程序显式调用。在这种情况下,当串口接收完成时,HAL 库会自动调用 HAL_UART_RxCpltCallback 函数。

2023-08-31 17:23:33 3330

原创 STM32CubeMX重新生成代码时,自己添加文件如何处理

用户自己添加的xxx.c文件,在CubeMX重新Generate文件时,不会被删掉。猜测CubeMX只是重新生成了例如eth.c,好了,现在芯片配置的代码已经同步过来了,工程文件还是用原来的,添加的文件就还在了,重新编译,ok。3. 进行你的配置,重新生成mdk工程(生成的之前mdk工程要打开)2. 打开cubemx工程,也就是ioc后缀文件。.c之类的文件,不会把用户自己添加的文件删掉。4. 点击最小化的mdk,然后可以看到提示框。更新xxx.c文件,选择是。更新xxx.h文件,选择是。

2023-08-31 15:26:21 1664

原创 STM32CubeMX 软件删除用户代码的问题解决

今天研究了一下stm32cubeMx 这个软件,若是stm32 的项目比较紧急,可以使用这个软件来生成驱动代码。至于在这个软件中的模块代码的选择,配置,我这里不会多说。满足软件配置后,在USER CODE BEGIN X ~ USER CODE END X 之间写自己代码就好了。自己的代码不会被删除的软件格式及配置方法。注意:这种自动化软件难免会出错,一定将自己代码与工程代码分开,以防不测。若是上面的没有配置,即使你把代码写在了USER CODE BEGINE 中也会被覆盖。

2023-08-31 15:07:23 14791

转载 PID控制算法原理

PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。这里我们从原理上来理解PID控制。PID(proportion integration differentiation)其实就是指比例,积分,微分控制。先把图片和公式摆出来,看不懂没关系。

2023-08-28 16:43:11 303

转载 三极管特性——截止区、放大区、饱和区

饱和区的理解较为难,简单的讲有两种情况下会出现饱和区,一是集电极供电电压低,另外一种情况是随着基极电流Ib的不断增大,集电极电流不可能一直线性倍数增大,当基极电流增大到一定数值后,集电极的电流就不变了,此时会出现一个临界值,会导致集电结正偏,进而出现饱和区。的截止区和饱和区配合实现“开关”的原理,当三极管处于截止区时,“开关”打开,Uce≈VCC,当三极管处于饱和区时,“开关”关闭,Uce≈0V.驱动三极管在截止区和饱和区之间进行切换,需要CPU输出脉冲信号,只有高低电平,而不是模拟信号。

2023-08-28 15:49:03 4052

转载 MOS管符号箭头指向问题

MOS管符号箭头指向问题?

2023-08-28 14:03:20 564

原创 QT QButtonGroup 按钮多选

创建`QButtonGroup`,使用`setExclusive(false)`将按钮组设为多选。

2023-08-25 13:40:25 905

转载 STM32-定时器详解

定时器作为微控制器不可缺少的外设,在STM32中也是如此。相信不少初学者学到定时器的时候对STM32的学习热情就大打折扣甚至想要放弃了,因为这一部分知识确实比较复杂。但是,如果你在之前对GPIO、串口通信、外部中断的学习中把这些外设掌握了的话,学习这个新知识并不难。例本章共计1万余字,从STM32定时器的原理、寄存器介绍、定时器配置以及定时器的几个常用的功能(如定时器中断、定时器输出比较PWM波形、定时器输入捕获测电平长度、定时器编码器模式应用等)的使用方法来教大家掌握定时器这一外设。

2023-08-08 14:29:41 3346

原创 单片机的外设指的是什么?

单片机的外设是指与单片机核心处理部分相连的附加硬件模块,它们能够扩展单片机的功能和能力。这些外设包括各种模块和接口,用于处理特定的任务或实现特定的功能。

2023-08-07 17:25:20 17389

原创 HAL_TIM_PeriodElapsedCallback()是什么?

HAL_TIM_PeriodElapsedCallback() 是一个回调函数,它是由 STM32 的 HAL(Hardware Abstraction Layer)库提供的,用于处理定时器的定时周期性中断事件。

2023-08-07 16:22:00 108703

原创 定时器中断是什么,和定时器溢出有什么关系?

当定时器的计数值溢出时,它会从零重新开始计数。通常,定时器会自动在每次溢出时发出中断信号,以便你可以在中断处理程序中执行一些操作。在中断服务函数中,你可以控制LED灯的状态,从亮到灭或从灭到亮,从而实现每隔1秒闪烁一次LED灯。你可以将定时器看作一个倒计时器,当计时器的计数值达到你设定的特定值时,它会发出一个中断信号,这个信号会暂停当前的程序执行,转而执行预先设置的中断处理程序,也就是中断服务函数。所以,定时器中断和溢出之间的关系在于,溢出是定时器触发中断的一种机制,可以用来实现周期性的定时任务。

2023-08-07 16:01:18 192952

原创 什么是回调函数

通俗地说,回调函数是一种特殊的函数,它不是我们直接调用的,而是由系统或其他代码在特定事件发生时自动调用的函数。我们可以把回调函数看作是一种“委托”,我们将某个任务的具体实现交给系统或其他代码来完成,当需要执行这个任务时,系统或其他代码会自动调用我们提供的回调函数。

2023-07-31 15:25:31 98836

转载 stm 社区 关于HAL库中stm32f1xx_hal_msp.c文件的认知(新手贴)

用户使用的时候,只用包含hal.h而不用去管是hal_f1还是hal_f2或是什么其他系列的头文件,所有系列的代码打包在一起,通过条件编译来实现真正的跨平台,而如果需要使用某款mcu的特色功能时,就再包含一个hal_f1extend.h。就是说MSP的作用是把某个外设的接口资源给具体化了,比如对于串口外设,就是指定串口具体的接口引脚状态(包含引脚的位置、电气属性等等)以及外设与CPU的接口(外设与CPU的接口就是特殊功能寄存器的映射地址,也就是告诉CPU要操作哪个外设只要操作相应地址的寄存器就可以了)。

2023-07-31 15:15:18 1379

原创 单片机轮询任务

【代码】单片机轮询任务。

2023-07-28 16:55:56 2231

J-LINK+OB驱动及资料

J-LINK+OB驱动及资料

2024-05-30

ST-LINK官方驱动下载

ST-LINK官方驱动下载

2024-05-30

USB转串口 CP210x驱动

USB转串口 CP210x驱动

2024-05-30

USB转串口 FT232驱动

USB转串口 FT232驱动

2024-05-30

USB转串口 CH340驱动

USB转串口 CH340驱动

2024-05-30

USB转串口 PL2302驱动

USB转串口 PL2302驱动

2024-05-30

Keil的V5编译器安装包

Keil的V5编译器安装包

2024-05-15

Keil5中UTF-8转换脚本

Keil5中UTF-8转换脚本

2024-04-24

Java面试手册PDF

压缩包内只有一个文件,Java面试手册.pdf 目录: Java基础题 Java集合 异常&反射 IO&NIO 多线程 JVM Linux MySQL Spring Mybatis Nginx Redis Dubbo SpringBoot Kafka SpringCloud 简历

2020-10-29

153分钟学会R的中文版

153分钟学会R的中文版 这篇文档内容的来源多样,既有来自于 R 官方文档(包括 R_intro,R_data,R_admin), 也有来自于互联网的 contributed documents;还有若干来自于 Capital Of Statistics 论坛的讨论 问题。 本文档的目的是为具有一定统计(数学)背景的 R 软件初学者提供一个快速认识 R 软件的 平台,如果你无此背景,可能会对其中的若干表达存在疑问。这篇文档重点不在统计方法上,因 此所列问题不可能详尽到统计学的每个知识点。

2020-10-28

吴恩达老师机器学习课程笔记pdf

作者黄海广,GitHub地址:https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

2020-10-28

计算机网络思维导图

计算机网络思维导图; 可以用作期末复习时使用!!!!!!

2019-01-11

飞机大战游戏

Java写的飞机大战的游戏,跟着尚学堂高琪老师写的,侵删

2018-12-05

空空如也

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

TA关注的人

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