自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Z小旋

让自己变得优秀,才能遇见更优秀的人

  • 博客(126)
  • 资源 (3)
  • 收藏
  • 关注

原创 【STM32】HAL库 STM32CubeMX系列学习教程

STM32CubeMX 简介1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具...

2020-02-07 09:15:30 314357 123

原创 位置式PID与增量式PID区别浅析

1PID控制算法什么是PIDPID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备、气动设备 和电子设备.在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法PID 实指“比例 proportional”、“积分 integral”、“微分 derivative”,这三项构 成 PID 基本要素。每一项完成不同任务,对系统功能产生不同的影响。它的结构...

2019-04-26 08:55:12 160327 44

原创 【ZYNQ】AXI4总线接口协议学习

本文带你详细的了解AXI总线协议,并且基于官方手册,能够提高你的手册阅读能力。AXI 的英文全称是 Advanced eXtensible Interface,即高级可扩展接口,它是 ARM 公司所提出的 AMBA(Advanced Microcontroller Bus Architecture)协议的一部分

2023-12-11 11:08:15 2465

原创 【FPGA】zynq 单端口RAM 双端口RAM 读写冲突 写写冲突

伪双端口模式下我们需要避免读写冲突;在真双端口模式下我们需要避免读写冲突和写写冲突。

2023-11-15 11:40:32 3615 2

原创 【STM32存储器映射-寄存器基地址-偏移】

可以看到各个部分详细的分类,映射其实就是对应的意思。事实上存储器本身不具备地址,所以把芯片内核所预先设定好的地址分配给寄存器,就是存储器映射。因为stm32把这个4G的虚拟存储空间和芯片内部外设进行一一对应,每个外设和其对应的寄存器都有一个确定的地址,也就是给存储器分配地址,即存储器映射。

2023-03-08 15:25:01 8628 13

原创 IP分片--为什么单次最大传输1472个字节

在使用UDP传输的时候,每次接收的最大字节数为1472个字节,然后数据就会被分包,重新进行发送,在进行数据接收的时候,经常会遇到本次数据还没有接收完,数据就被分包的情况,那么为什么是1472个字节对数据进行分片呢,我们下面做一个详细的介绍。

2022-10-13 20:40:07 7862 5

原创 【QSPI】 什么是QSPI SPI和QSPI异同

SPI 协议是摩托罗拉公司开发的协议,SPI 的英文全称为 serial Perripheral Interface,翻译过来 就是“串行外围设备接口”,属于一种高速全双工的通信,广泛的用于 MCU 与 ADC、flash 等外 部设备(外围设备)的通信。实际上,Standard SPI(标准SPI)、Dual SPI(双线 SPI)和Quad SPI(四线 SPI)等只不过我们平时最常用的是Standard SPI标准SPI

2022-09-21 15:59:12 20715 6

原创 STM32状态机编程----什么是状态机?

万事万物都有其状态什么是状态状态是人或事物表现出来的形态。是指现实(或虚拟)事物处于生成、生存、发展、消亡时期或各转化临界点时的形态或事物态势。通过上面那句话,我们知道了状态就是一个对象在不同情况下对应的各种形态做产品的时候,如果我们如果要对这个对象所有的形态进行描述,在一些对象复杂的逻辑状态下,比较复杂的逻辑问题,普通的流程图,或时序图对于对象和状态的解读缺乏直观的描述。这个时候就需要状态机来对对象的各个形态进行描述,将对象的全部工作方式,分成几个场景,这些场景的工作方式不同,然后将这些场.

2022-08-25 16:14:51 17326 9

原创 单片机测量代码运行时间方法-STM32

在实际程序的编写中,我们经常会对程序进行一个整体的复盘、优化,或者对算法的运行时间进行测量等等,那么怎么精确的测量我们程序的运行时间呢?下面我们给出几种方法:1 使用Keil Debug功能2 使用逻辑分析仪或示波器等设备测量3 使用STM32自带定时器进行测量1 使用Keil Debug功能我们可以使用J-LINK或者ST-link 等仿真器,实现对代码运行时间的测量,首先要设置仿真器仿真的实际频率首先点击Settings设置然后点击Trace 设置我们芯片的系统频率,点击Teac

2022-03-31 21:24:48 21995 11

原创 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)

前言:本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们来说下SDRAM的初始化流程跟HAL库的SDRAM函数使用所用工具:1、芯片: STM32H743II2、STM32CubeMx软件V6.4.03、IDE: MDK-Keil5软件4、STM3H7xxHAL库5、W9825G6KH知识概括:通过本篇博客您将学到:SDRAM+FMC的基本

2022-03-29 21:42:42 8747 8

原创 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)

并行总线接口FMCFMC(Flexible memory controller,灵活动态存储器)FMC可连接SRAM(异步或同步)、SDRAM、NORFLASH、PC卡、NANDFLASH.支持突发模式,可编程时钟,8位、16位、32位宽的数据总线。FMC有6个存储区域,每个区域支持256MB的寻址空间。...

2022-03-28 11:41:53 12675 9

原创 STM32 FMC原理详解

中讨论了FSMC的基本用法,今天来说说FMC。虽然跟FSMC相比,FMC只是少了一个S,但应用难度可是大大增加了。对于连接片外RAM而言,FSMC接的是静态RAM,FMC接的是动态RAM,而控制动态RAM要复杂得多。举个例子:动态RAM需要不停地(周期性的)刷新,否则RAM中的数据就会丢失,这就产生了“管理”问题,如果用一个MCU来连接DRAM,二者之间交换的就不只是数据(SRAM就是如此)那么简单了,还包含有控制信息。这样,DRAM中除了存储数据的单元,还需要有寄存器(模式寄存器,后面将详述)、还得有个

2022-03-28 11:30:55 20802 2

原创 STM32CubeMx配置H7时钟: Frequency searched for is out of range for this vos range

配置时钟树的时候主频想设置到400Mhz,点击快速设置,按下回车,出现了Frequency searched for is out of range for this VOS range但是这个问题在CubeMx 6.1.1中就没有出现,刚装的6.4.0就报错

2022-03-28 11:25:00 5674

原创 STM32 FSMC/FMC原理保姆级讲解(二)

每个模式的时序略有不同,我们这里以常用的模式A为例进行说明:先来认识如下几个关键参数:1.FSMC信号引脚STM32的管脚排列很没有规律,而且分布在多个不同端口上,初始化要十分小心.需要用到的引脚都要先初始化成”复用功能推挽输出”模式.(GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP )并且开启时钟 (RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE); ) 像STM32F103Z(144脚)芯片有独

2022-03-26 17:20:44 19880 3

原创 STM32 FSMC/FMC原理保姆级讲解(一)

FSMC全称“静态存储器控制器”,STM32可以通过FSMC与SRAM、ROM、PSRAM、Nor Flash和NandFlash存储器的引脚相连,从而进行数据的交换。FSMC的特点:1、 FSMC的一大特点是支持不同位宽的异步读写操作。2、 FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当FSMC同时使用多个外部存储器时,FSMC会通过总线悬空延时时间参数,来防止访问冲突发生。3、 支持代码从FSMC扩展的外部存储器中直接运行。不需要首先调入内部SRAM。...

2022-03-26 17:19:35 68238 21

原创 ILI9341液晶LCD彩色显示原理

本篇文章带你了解下IL9341的基本原理及工作模式,让你对液晶屏有一个更直观的认识首先我们要知道什么是LCD屏:LCD ( Liquid Crystal Display 的简称)液晶显示器。经常会听到液晶电视,液晶显示屏,那么到底什么是液晶呢?LCD发光原理首先要知道:液晶:液晶是液态晶体,是一种几乎透明的物质,是不能发光的光源:LCD屏幕的光来自于屏幕最下面的背光板发出的光源偏光片:一种镜片,只有特定方向的光线(垂直偏振光)才能通过,而其它方向的光线不能通过两块偏光片的

2022-03-25 15:25:07 10010 2

原创 STM32--MPU内存保护单元(二)

上一篇我们说了MPU内存保护单元的基本原理跟寄存器,这一篇我们来说下HAL库的函数及基本配置本章说的一些HAL库参数,请参照上篇寄存器说明部分:STM32–MPU内存保护单元(一)首先我们来看一下在stm32h7xx_hal_cortex.h中的MPU_Region_InitTypeDef MPU初始化结构体该结构体参数如下:typedef struct{ uint8_t Enable; //区域使能/禁止 uint8_t Number; //区域编号 uint32_t BaseAd.

2022-03-23 20:02:55 4995 3

原创 STM32--MPU内存保护单元(一)

先说明一下MPU,MPU有很多含义,我们常见的有:MPU:Memory Protection Unit,内存保护单元(本文描述的内容);MPU:Microprocessor Unit,微处理器;MPU-6050 陀螺仪 跟这个就更是差了十万八千里了所以请不要搞混MPUMPU,即内存保护单元,可以设置不同存储区域的存储器访问特性(如只支持特权访问或全访问)和存储器属性(如可缓存、可缓冲、可共享),对存储器(主要是内存和外设)提供保护,从而提高系统可靠性通过这些规则可以实现如下功能◆ 防止不受信

2022-03-23 17:00:34 12499 2

原创 STM32H7---高速缓存Cache(二)

上一讲我们说了cache的一些基本原理,这一讲我们来说说H7的cache配置首先来看下H7的默认内存地址映射范围:其中,WT 表示 Write-through(透写),WB 表示 Write-back(回写),WA 表示 Write-allocate(写分配),没有明确标注 WA 的就是 RA(读分配)。XN 的意思是 Execute-Never, 其含义为如果相应的地址空间是 XN,是绝不允许执行代码的。存储器类型为 Normal 的才能使用 cache,并且 TCM 接口是 not cachea

2022-03-23 10:15:56 10065 11

原创 STM32H7---高速缓存Cache(一)

引言:在使用STM32H7 跟F7系列芯片的时候经常看到第一句初始化就是Cache_Enable(); //打开L1-Cache//使能CPU的L1-Cachevoid Cache_Enable(void){ SCB_EnableICache();//使能I-Cache SCB_EnableDCache();//使能D-Cache SCB->CACR|=1<<2; //强制D-Cache透写,如不开启,实际使用中可能遇到

2022-03-22 21:27:08 11998 5

原创 STM32H7时钟树RCC分析--- CubeMx配置(三)

前言:之前我们说了H7的时钟原理,还有HAL库的时钟配置代码,下面我们来看下CubeMx怎么配置STM32H7时钟树RCC分析—原理讲解(一)STM32H7时钟树RCC分析— HAL库配置(二)所用工具:1、芯片: STM32H743II2、STM32CubeMx软件V6.1.03、IDE: MDK-Keil5软件4、STM3H7xxHAL库1设置RCC时钟2时钟源设置cubemx的时钟设置有很多,最简单的就是我们直接选择好时钟源HSE 然后设置系统时钟频率直接按回车,软件会自动配

2022-03-21 19:45:20 11939 7

原创 STM32H7时钟树RCC分析---原理讲解(一)

STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、M3、M4和 M7 这几种,每个内核又大概分为主流、高性能和低功耗。F1 代表了基础型,基于Cortex-M3 内核,主频为 72MHZ,F4 代表了高性能,基于 Cortex-M4 内核,主频 180M,F7 代表了高性能,基于 Cortex-M7 内核,主频 216M。H7 代表了超高性能,基于 Cortex-M7 内核,主频400M除了内核的不同之外H7与F4区别在于1、H7允许更大的外部时钟输入,可以达到.

2022-03-21 11:46:42 18867 5

原创 STM32H7时钟树RCC分析--- HAL库配置(二)

上一讲我们说了H7时钟树的一些基本概念,现在的话我们来用HAL库和CubeMx配置一下

2022-03-21 11:44:41 8764

原创 SI,PI,EMC/EMI和RF-电路设计名词讲解

在高速PCB设计和硬件面试中,经常能听到这几个词,那么他们具体是什么意思呢?SI指Signal Integrity 即信号完整性。PI指Power Integrity 即电源完整性。EMC指Electromagnetic Compatibility 即电磁兼容。EMI指Electromagnetic interference 即电磁干扰RF指Radio Frequency 即射频。信号完整性信号完整性是指在高速电路设计中由互连线所引起的所有问题。信号具备信号完整性是.

2022-03-17 09:00:00 15282

原创 高,低电平复位电路原理及加电容的作用

什么是复位为什么要加复位?高电平上电复位低电平上电复位高电平按键复位低电平按键复位什么是复位单片机复位电路的作用是:使单片机恢复到起始状态,让单片机的程序从头开始执行,运行时钟处于稳定状态、各种寄存器、端口处于初始化状态等等。目的是让单片机能够稳定、正确的从头开始执行程序。为什么要加复位?数字电路中寄存器和 RAM 在上电之后默认的状态和数据是不确定的,如果有复位,我们可以把寄存器复位到初始状态,RAM 的数据可以通过复位来触发 RAM 初始化程序逻辑如果进入了错误的状态,通过复位可以把所有的.

2022-03-16 19:03:50 27288 2

原创 数组名不等于指针---sizeof()函数求数组大小错误问题

前言: 今天在项目中需要求采样点的数量并且遍历,采样点用数组存储,自定义了一个函数想要用sizeof求其长度,然后遍历,结果失败了,查阅之后发现以下问题:在main函数中,sizeof是可以正常工作的#include <stdio.h>int Number[10]; int main(){ int size = sizeof(Number); printf("数组大小为:%d\n",size); int len = sizeof(Number)/sizeof(int).

2022-03-15 22:42:01 2466 2

原创 SDRAM、DRAM及DDR FLASH ROM概念详解

存储器1、RAM:2、ROM:SRAMDRAMSDRAMFLASHNOR FLASHNAND FLASHDDR在了解其他概念之前,我们要首先知道,什么是存储器存储器存储器是用来存储程序和各种数据信息的记忆部件许多存储单元的集合,按单元号顺序排列。每个单元由若干二进制位(8位 16位 32位)构成,以表示存储单元中存放的数值,这种结构和数组的结构非常相似存储器的单元地址只有一个,固定不变,而存储在其中的信息是可以更换的那么就简单明了了,存储器就是按照二进制来存储数据的器件,存储空间叫.

2022-03-13 16:08:00 13971

原创 Modbus调试软件--ModbusPoll、ModbusSlave使用详解

是Modbus学习必备的三大神器分别是ModbusPoll、ModbusSlave及VSPD,ModbusPoll软件主要用于仿真Modbus主站或Modbus客户端,ModbusSlave软件主要用于仿真Modbus从站或Modbus服务器,而VSPD全称Configure Virtual Serial Port Driver,是用来给电脑创建虚拟串口使用的。...

2022-03-02 11:50:37 72266 33

原创 详解Modbus通信协议---清晰易懂

什么是协议在了解什么是Modbus之前,我们先来看下什么是协议协议是一个汉语词汇,读音为xié yì,意思是共同计议,协商;经过谈判、协商而制定的共同承认、共同遵守的文件。简单地说,在我们的单片机之间互相通信,以及单片机和上位机通信中,规定了不同的内容规范,这个规范是通信的双方都需要遵守的,这样就可以实现两者的通信。而这个协议规范可以有很多种,来适应不同的设备以及通信要求等,我们常见的就有IIC SPI UART串口通信协议等等。而Modbus也是一个串行通信协议。什么是RS-485 RS-2

2022-03-01 23:46:12 183909 59

原创 【Shell教程】四----输入输出,条件判断,循环

Shell输出 echo命令在shell中,echo 指令用于字符串的输出命令格式:echo string可以使用 (反斜号)‘’(单引号)""(双引号)包含字符串,具体功能在第二节讲过。echo "Hello World"输出:Hello Worldecho `date`输出:Shell输入 read读取控制台输入read(选项)(参数)选项:-p:指定读取值时的提示符;-t:指定读取值时等待的时间(秒)。参数:变量:指定读取值的变量名测试:read

2021-12-24 09:31:22 3956 2

原创 【Shell教程】三----运算符,条件判断

加减运算符Shell支持多种运算符基本语法:可以用“$((运算式))”或“$[运算式]”来进行加减乘除计算echo "$[2+2]"echo "$((2+2))"输出:来进行运算式计算或者使用expr命令ecpr 2 + 2注意:表达式和运算符之间要有空格, 2+2 是不对的,必须写成 2 + 2,完整的表达式要被 ` `反引号 括住例: 计算(2+3)X4的值expr `expr 2 + 3` \* 4输出:例: 计算2+2的值#!/bin/

2021-12-18 12:31:29 1072

原创 【Shell教程】二----Shell变量,通配符,转义符

Shell变量Shell中有三种变量 用户变量,系统变量和特殊变量其中系统变量和用户变量在第一节已经简单介绍,这里再说一下用户变量命名时(反斜号)``(单引号) ‘’(双引号) ""的区别

2021-12-17 20:28:29 3610

原创 【Shell教程】一----什么是Shell

1.1 什么是脚本语言脚本语言是像剧本一样教计算机办某个事情的语言,通过脚本指令,让计算机自动化完成一系列工作的程序,脚本程序通常可以用文本编辑器修改,不需要编译,通常是解释运行的。比如你想让计算机执行复制某个文件的操作,如:cp ~/Desktop/*.txt ~/text你可以在文本编辑器写入上边的代码并且保存此文件,然后你通过执行这个文本文件来执行上面的代码,并不需要重复手动输入上边的代码。脚本解释器: 脚本解释器是把脚本代码翻译成计算机看的懂得二进制语言 ,就好像1.2 什么是Sell

2021-12-11 11:38:49 2526

原创 【C/C++】值传递和址传递区别解析

、值传递当函数被调用的时候,形参被创建,调用时带的参数被拷贝到刚创建好的形参,函数结束时,形参被摧毁。由于是参数的一个副本被传递到被调用的函数。所以,原始的参数不会被函数修改。值传递的优点: 通过值来传递的参数可以是数字,变量,表达式。参数的值不会被“被调用的函数”修改。值传递的缺点: 当函数被多次调用,值传递结构体和类会带来性能上的损害(耗时),给调用者返回值只能通过被调用函数的返回值。...

2021-10-22 22:39:11 2605 1

原创 【C/C++】C语言复制字符串及复制函数汇总(strcpy()/memcpy()/strncpy()/memmove())

头文件:#include <string.h>定义函数:char *strcpy(char *dest, const char *src);函数说明:strcpy()会将参数src 字符串拷贝至参数dest 所指的地址。返回值:返回参数dest 的字符串起始地址。

2021-10-20 22:14:50 51999 9

原创 【简单滤波算法】常见的滤波算法讲解及例程

限幅滤波法算法:优点:缺点代码:中位值滤波法算法:优点:缺点:代码:算术平均值滤波算法:优点:缺点:代码:滑动算术平均值滤波算法:优点:缺点:中位值平均滤波法算法:优点:缺点:代码一阶低通滤波方法:优点:缺点:代码:限幅滤波法算法:确定两次采样允许的最大偏差值(设为 A)每次检测到新的采样值时判断:如果本次值与上次值之差<=A,则本次采样值有效如果本次值与上次值之差>A,则本次采样值无效。如果本次采样值无效,对本次采样可以做不同的处理。比方说:放弃本次采样值,使用上次采样值.

2021-10-19 20:42:16 10461 8

原创 【C/C++】 常量指针,指针常量、指向常量的常指针详解

什么是指针指针就是指向变量的地址在这里插入代码片指针常量int * const p =&a;特点:指针的指向不可以修改,指针指向的内存的值可以修改举例:*p = 20;p=&b;常量指针int a = 10;int b = 10;const int *p=&a;特点: 指针的指向可以修改,但是指针指向的值不可以修改。...

2021-10-17 11:23:53 23463 29

原创 详解-OTUS(大津法-最大类间方差)原理及C语言代码实现

灰度图二值化:我们在对灰度图像进行处理的时候,为了便于观察和分析,经常需要将图像中的目标主体和背景分割开来,变成二值化图像(只有黑和白,黑白图像) 加菲猫--灰度图——二值化 而我们知道灰度图像是有256个灰度级 255代表全白,0表示全黑,那么在进行二值化的时候,是设定一个阈值,根据灰度值大于或小于阈值进行黑白显示,我们假设背景用白色0表示,目标物体用黑色1表示,不同阈值的选取,对于图像二值化的效果影响是非常大的上图可以看出,阈值的选取对于灰度图二值化有着至关重要的作用,那么怎么

2021-10-09 09:40:34 21083 25

原创 Dev-C++/Cpp使用入门详解

Dev-C++是一个可视化集成开发环境,使用Dev可以完成C语言,C++程序的编辑、预处理/编译/链接、运行和调试。因其体积小巧,编译简单,对初学者十分友好,所以我们来简单的讲解下如何安装以及使用。安装1.双击安装包,就可以开始安装,这里语言先选择English,安装完成之后会有简体中文选项。2.否同意软件的许可协议,I Agree同意就行3.选择需要安装的组件,直接默认就行,点击Next4. 选择安装路径,点击Next5.安装完成,点击Finish第一次打开之后会让你选择语言,

2021-09-27 20:27:06 27210 12

原创 W25Q128 闪存芯片SPI详解

W25Q128V芯片是串行闪存,可以通过标准/两线/四线SPI控制,W25Q128fv管脚如上,作为标准SPI控制时,DO管脚为MISO,D1管脚为MOSI,/CS为片选NSS,CLK为时钟信号线。/WP为写保护管脚,/HOLD or /RESET为保持或复位引脚(通过寄存器配置)。原理图连接W25Q128(W25Q64)将16M(8M)的容量分为256(128)个块(Block),每个...

2021-08-15 21:41:08 16878 3

STM32CubeMx6.4.0版本+JRE安装包

STM32CubeMx6.4.0版本+JRE安装包

2022-03-18

STM32CubeMx 6.1.1版本+JRE安装包

STM32CubeMx 6.1.1版本+JRE安装包

2022-03-16

STM32 LCD12864 -Z小旋.zip

STM32 LCD12864 串行程序完整代码,可移植性非常高,直接修改GPIO引脚即可。有详细注解,欢迎下载。

2019-07-30

空空如也

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

TA关注的人

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