自定义博客皮肤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

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

  • 博客(158)
  • 资源 (7)
  • 收藏
  • 关注

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

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

2024-05-15 18:33:29 461

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

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

2024-05-15 18:32:06 414

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

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

2024-05-15 09:35:39 5943

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

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

2024-05-07 17:57:50 234

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

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

2024-04-24 16:55:27 450

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

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

2024-04-23 18:32:04 358

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

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

2024-04-23 18:24:37 686

转载 简单几句讲明白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 166

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

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

2023-10-12 17:14:13 299

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

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

2023-09-27 16:21:00 864

转载 C语言编译过程详解

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

2023-09-27 09:25:49 236

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

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

2023-09-26 17:13:56 461

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

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

2023-09-07 17:14:39 11216

转载 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 232

转载 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 827

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

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

2023-09-06 14:08:03 1310

转载 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 1239

转载 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 1172

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

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

2023-08-31 15:07:23 10594

转载 PID控制算法原理

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

2023-08-28 16:43:11 215

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

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

2023-08-28 15:49:03 2948

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

MOS管符号箭头指向问题?

2023-08-28 14:03:20 394

原创 QT QButtonGroup 按钮多选

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

2023-08-25 13:40:25 631

转载 STM32-定时器详解

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

2023-08-08 14:29:41 2583

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

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

2023-08-07 17:25:20 12566

原创 HAL_TIM_PeriodElapsedCallback()是什么?

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

2023-08-07 16:22:00 15663

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

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

2023-08-07 16:01:18 21540

原创 什么是回调函数

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

2023-07-31 15:25:31 10209

转载 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 966

原创 单片机轮询任务

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

2023-07-28 16:55:56 404

转载 C语言中#if的使用

#if和#endif是一组同时使用的,叫做条件编译指令。#if与#define、#include等指令一样是由预处理器这个强大的工具处理的,预处理器可以在编译前处理c程序。

2023-07-21 17:00:52 673

转载 基于单片机内部的ADC知识系统总结

在仪器检测系统中,常常需要将检测到的连续变化的模拟量如:温度、压力、流量、速度等转换为离散的数字量,才能进行计算处理。这些模拟量通过传感器转换为电信号后,就需要通过一定的处理变成数字量,实现模拟量到数字量转换的设备,我们通常称为ADC,也叫做A/D。

2023-07-20 13:51:10 3041

转载 KEIL5中Debug调试

其实我经常用的调试方法是在指定行加Printf();通过串口查看打印的信息,就知道执行到哪一步。但是这是很麻烦的。程序由上而下的执行顺序不会变的。debug调试也是从主函数开始这样调试的。一步一步的运行调试程序检查错误,或者直接运行到某处,二话不多说,开整!1 . 复位按钮:(类似于用复位按键复位),复位之后程序回到最开始处,即复位中断处理函数处;其实我感觉没用,不如从新调试呢!2 .全速运行(F5):这个按钮将使程序一直处于运行状态,或者直接运行到设置的断点处。

2023-07-19 09:54:59 3579

转载 KEIL-MDK将源代码编码转换为UTF-8

使用 keil(MDK) 的代码编辑器编辑时,如今 UTF-8 的编码格式已经成为主流,特别是 MDK 使用 AC6 的时候值支持 UTF-8 的编码,所以之前很多一些非 UTF-8 的文件我们就主要转换成 UTF-8 的编码格式,转换文件编码格式的方法有很多,这里我们介绍一下直接在 keil IDE 中将文件的编码修改为 UTF -8 。————————————————版权声明:本文为CSDN博主「荻夜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:ht

2023-07-18 16:40:09 12341

转载 三极管的“非教科书式”解析

三极管有三个工作状态;截止、放大、饱和;放大状态很有学问也很复杂,多用于集成芯片,比如运放,现在不讨论;其实对信号的放大我们通常用运放处理。三极管更多的是当做一个开关管来使用,且只有截止、饱和两个状态。

2023-07-18 11:08:33 494

转载 深入浅出:理解三极管截止、放大和饱和状态!

扩散运动形成发射极电流IE,复合运动形成基极电流IB,漂移运动形成集电极电流IC,IE=IC+IB.

2023-07-18 10:59:33 1615

转载 稳压二极管

稳压二极管(又叫齐纳二极管,英文名称Zener diode)是一种硅材料制成的面接触型晶体二极管,简称稳压管。利用PN结反向击穿状态,其电流可在很大范围内变化而电压基本不变的现象。

2023-07-14 13:39:28 976

原创 单片机数码管

LED数码管(LED Segment Displays)是由8个发光二极管构成,并按照一定的图形及排列封转在一起的显示器件。其中7个LED构成7笔字形,1个LED构成小数点(固有时成为八段数码管)。

2023-07-13 16:09:39 1379

转载 按键为什么要进行消抖

例如,要实现按下灯亮,再次按下灯灭,如果不消抖,就可能导致一次按下,多次处理,灯的开关状态就有可能没有变化。根据原理图,当按键没有按下的时候,单片机引脚BTN1通过10K的电阻接VCC,为高电平;当按键按下的时候,BTN1通过10K的电阻接地,为低电平,此时这个10K的电阻起限流作用,一般程序限流电阻。那么理想情况下,按键没有按下的时候为高电平。一个简单的消抖办法是检测到按键按下,则等待10ms之后,再次检测是否在按下状态,如果是按下的状态,那么才确定是在按下状态。信号由于机械的抖动,导致在。

2023-07-04 17:18:32 650

转载 MAX232和PL2303、CH340的区别

电脑USB接口>>>电脑输出USB电平信号>>>USB转串口线>>>232电平信号>>>MAX232芯片>>>TTL电平。(2)USB转串口线原理:USB接口>>>PL2303或CH340>>>MAX232>>>9针接口。电脑USB接口>>>电脑输出USB电平信号>>>PL2303或CH340芯片>>>TTL电平。(2)电脑USB接口>>>USB转串口线>>>MAX232芯片>>>MCU(单片机)(1)电脑USB接口>>>USB转串口线>>>MAX232芯片>>>MCU(单片机)

2023-06-30 10:14:30 1590

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关注的人

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