自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构——顺序表基本操作的实现(初始化、取值、查找、插入)

数据结构——顺序表基本操作的实现(初始化、取值、查找、插入)

2024-05-21 22:35:44 239

原创 (HAL)STM32F103C8T6——内部flash模拟EEPROM

内部flash模拟EEPROM

2024-05-05 15:11:00 181

原创 (HAL)STM32F103C8T6——基于STM32的RFID智能门锁系统

本文针对RFID技术,着重研究了基于单片机的智能门锁系统设计。首先,通过4*4按键矩阵与主控STM32,实现了多种模式,包括刷卡开锁、卡号权限管理、密码开锁、修改密码、显示实时时间等功能。其次,采用RC522模块与主控STM32微控制器进行数据传输,当检测到MF1卡时,通过SPI通信总线与STM32进行通信,主控对数据进行分析与处理,输出相应的PWM波控制信号到连接舵机的引脚上,从而控制舵机模拟门锁开关动作。

2024-05-05 14:59:16 1221

原创 C语言——typedef、enum、typedef enum

笔者理解,将HAL_GPIO_ReadPin定义为GPIO_PinState类型,即枚举类型,说明该函数的返回值为GPIO_PIN_RESET和GPIO_PIN_SET(0和1)。而HAL_GPIO_WritePin第三个输入形参PinState也只能传入GPIO_PIN_RESET和GPIO_PIN_SET(0和1)。在stm32f1xx_hal_gpio.h有这么一段定义,GPIO_PIN_SET = 1,而GPIO_PinState可取GPIO_PIN_RESET和GPIO_PIN_SET。

2024-04-22 16:47:55 276

原创 C语音——不要解引用未初始化的指针

创建一个指针时,系统只分配了储存指针本身的内存,并未分配储存数据的内存。若直接用5赋值*pt,由于pt未初始化地址,其地址是随机值,可能会直接擦写掉数据或代码,或者导致程序崩溃。因此,在使用指针时,必须利用已分配的地址初始化它。比如用一个已经初始化的现有变量地址初始化该指针(使用带指针形参的函数时,就属于这样)。或者,也可以用malloc()函数先分配内存。解引用:*pt得到指针指向地址上储存的值。

2024-04-22 08:00:00 173

原创 C语言——const

const并非要求原始数组要是常量,而是让该函数将传进来的原始数组当成常量不做任何修改。当函数中对原始数组进行修改时,就会报错。若是希望通过该函数对原始数组进行修改,就不需要加const。此外,int sum(int ar[], int n)与void sum(int ar[], int n)区别在于,是否有采用return机制,即是否有返回值。

2024-04-21 22:12:54 194

原创 C语言复习——一个有意思的使用指针形参的函数

因为因为++与*运算优先级是同等的,但结合律是从右往左的,故会先进行start++,再进行*start。简单讲,指针先指向后递增,等同于*(start++)。另外采用*start++意味着会先把指针指向位置的值加到total上,再递增指针。若采用*++start,则反过来,先递增指针的,在使用指针指向位置上的值加到total上。(*start)++则表示指针指向的值进行递增。注意,只有当start为指针变量时,才有start++这样的表达式。另外,数组与指针是相互联系的,可以相互替换的。

2024-04-21 22:04:13 115

原创 [keil]L6200E: Symbol XXX multiply defined ....O.以及Not enough information to list image symbols.解决方案

提示信息会写是某几个.o文件,查看文件内以及文件件是否有同名函数,或者是否有同名变量。

2024-04-09 17:37:29 264

原创 简述TCP的三次握手与四次挥手

为了防止“已失效的连接请求报文段”突然又传给B,比如A向B发送连接请求的报文段时,在某些网络结点滞留了,导致没有按照正常时间发送给B。等到连接释放后的某一个时间点,前面没有正常传输的“已失效的连接请求报文段”到达了B,B收到后向A发送了确认。:A向B发送释放连接(通信双方都可以发,即B也可以发送释放连接报文段),并停止发送数据;B向A发送确认,进入半关闭状态,B可以继续向A发送未发送完的数据,A仍可以接收;B释放的时间比A要稍微早。总流程可以简化为:A向B发送连接请求,B向A确认,A再跟B确认。

2024-03-24 16:22:57 882

原创 严平稳随机过程、广义平稳随机过程、各态历经性

严平稳随机过程、广义平稳随机过程、各态历经性

2024-03-23 12:22:17 400

原创 复用与多址的联系与区别

复用针对资源,多址针对用户。

2024-03-21 16:03:38 644

原创 dB、dBm、dBw是什么

dB、dBw、dBm

2024-03-20 16:22:23 478

原创 移动无线信道衰落原因、分类及补偿技术

无线电波在传播路径上受到周围环境中地形地物的作用而产生的反射、绕射和散射,使其到达接收机时是从多条路径传来的多个信号的叠加,这种多径传播所引起的信号在接收端幅度、相位和到达时间的随机变化将导致严重的衰落,即所谓的。反之,当信号的相关时间远远大于发送信号的周期,且基带信号的带宽Bs远远小于多普勒扩展BD时,冲击响应在符号周期内的变化很慢,从而引起信号失真,产生衰落,此衰落为。,信号的波形不失真;当信号的带宽大于信道相关带宽时,信号通过信道传输后各频率分量发生的变化是不一致的,此时的衰落为。

2024-03-19 16:56:18 697

原创 香农公式的理解

通俗地说,AWGN信道意味着不存在干扰,也就是假设网络中只有一个基站,基站下只有一个终端,这种理想化的条件将为我们的后续分析带来很多的便利。但是实际应用中仅有实验室或者基站等特殊场所才有香农公式成立的信道条件,不过我们可以将香农公式推广。香农公式有其成立条件,基于AWGN信道,即加性白高斯噪声信道。所谓加性白高斯噪声,是指信道的噪声在频谱上均匀分布,幅度上呈正态分布。符号速率,根据奈奎斯特定理,就等于信道的带宽B。因此,将香农公式中的B,理解成符号速率更好。代表信道也就是传输通道的带宽;

2024-03-18 15:44:09 532

原创 奈奎斯特带宽、第一零点带宽、最小带宽、信道带宽辨析

信道带宽通常是由信道本身的特性决定的,表示信道能够传输的频率范围。B=fN=Rs/2,奈奎斯特速率为2fN=Rs,Rs码率的基带信号最少需要占用Rs/2带宽,W宽的信道每秒最多传输2W个信号。即奈奎斯特带宽,二元基带信号的最小带宽为B=Rs/2,一般算调制信号的理论最小带宽BT就是在这个B的基础上去算的,如2ASK的理论最小带宽B(2ASK)=2B=Rs。本文主要是对于通信原理几个常见的带宽进行梳理与总结,如标题所示,涉及奈奎斯特带宽、第一零点带宽、最小带宽、信道带宽,发表一些自己的拙见,欢迎与各位讨论~

2024-03-17 13:05:13 2048

原创 浅析存储空间、码流、数据率(比特率)、采样率

(Data Rate)是指在1秒钟内,通信端口在传输数据时高低电平变化的次数,也叫码率,单位时间内传送的数据越多,所包含的信息量也越多,是视频编码中画面质量控制中最重要的部分。(M),此时需要算出一个点所带的比特数*fs,才能得到Rb(即是单位时间内采了多少点,一个点有多少比特。上面是笔者理解的做法。

2024-03-07 17:25:29 409

原创 毕业论文正文如何进行文献引用

1、先将文献引用标号,自定义标号为[x]成功标志:按crtl键单击可以访问链接。4、再按crtl+shift+【+】3、ait+J调出窗口引用。

2024-02-28 12:04:39 480

原创 (HAL)STM32F103C8T6——RC522与主机进行SPI通信(RFID门禁系统入门必备)

RC522门禁系统入门必备。

2024-02-24 09:00:00 3345 40

原创 烧录错误***JLink Error: Debugger tries to select target interface JTAG.

ERROR: Debugger tries to select target interface JTAG.This interface is not supported by the connected emulator. Selection will be ignored by the DLL.Unknown Error.Error:Target DLL has been cancelled. Debugger aborted!

2024-02-23 11:15:27 432

原创 (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕

电路接法参照江科大视频。

2024-02-22 12:11:39 806

原创 (HAL)STM32F407ZGT6——24-1 IIC实验

I2C为同步、串行、半双工的通信总线协议。

2024-02-22 09:00:00 766

原创 USMART是什么?

一般开发者正常情况下,对单片机功能进行调试的过程大致为:下载——调试——修改——下载——调试——......过程十分繁琐,且对单片机有所损耗。USMART即为利用串口助手,通过串口发送指令给单片机,单片机通过接收的指令进行相应的操作,通过修改指令或其中的参数,观察不同的现象以达到调试的作用。是一个串口调试组件,可以大大提高代码调试效率,为正点原子为STM32开发的类似linux中shell的调试工具。具体移植及使用过程请移步正点原子的视频教程及例程源码。二、USMART的移植。三、USMART的使用。

2024-02-09 09:00:00 559

原创 NOR FLASH与NAND FLASH的详细区别

使用寿命体现在:读写上是 FLASH 的擦除次数都是有限的(NOR Flash 普遍是 10 万次左右),当它的使用接近寿命的时候,可能会出现写操作失败。FLASH 芯片有很多种芯片型号,在我们的 norflash.h 头文件中有定义芯片 ID 的宏定义,对应的就是不同型号的 NOR FLASH 芯片,比如有:W25Q128、BY25Q128、NM25Q128,它们是来自不同的厂商的同种规格的NOR FLASH 芯片,内存空间都是 128M 字,即 16M 字节。所以在功能上可以认为。的数据和地址线共用,

2024-02-08 09:00:00 430

原创 (HAL)STM32F407ZGT6——25-1 通信协议SPI软件读写W25Q128实验

本次实验使用的板为正点原子STM32F4探索版V2,SPI配置为全双工通信。

2024-02-07 20:18:10 933 1

原创 内存对齐的规则

简单来说,就是方便计算机去读写数据。对齐的地址一般都是 n(n = 2、4、8)的倍数。(1). 1 个字节的变量,例如 char 类型的变量,放在任意地址的位置上;(2). 2 个字节的变量,例如 short 类型的变量,放在 2 的整数倍的地址上;(3). 4 个字节的变量,例如 float、int 类型的变量,放在 4 的整数倍地址上;(4). 8 个字节的变量,例如 long long、double 类型的变量,放在 8 的整数倍地址上;

2024-02-05 20:13:02 524 1

原创 (HAL)STM32F407ZGT6——10-4 高级定时器 PWM 输入模式实验

高级定时器的框图和通用定时器框图很类似,只是添加了其它的一些功能,如:重复计数器、带死区控制的互补输出通道、断路输入等。高级定时器的时钟来自APB2, 而PCLK2 = 168Mhz, 我们设置PPRE2不分频, 因此高级定时器时钟 = 168Mhz。

2024-01-30 11:12:40 1613 1

原创 STM32F407ZGT6——10-1高级定时器输出指定个数 PWM 实验

高级定时器的框图和通用定时器框图很类似,只是添加了其它的一些功能,如:重复计数器、带死区控制的互补输出通道、断路输入等。高级定时器的时钟来自APB2, 而PCLK2 = 168Mhz, 我们设置PPRE2不分频, 因此高级定时器时钟 = 168Mhz。

2024-01-29 12:24:54 1446

原创 STM32F407ZGT6——实验9-4 通用定时器脉冲计数实验

代码如下:void gtim_timx_cnt_chy_init(uint16_t psc, uint16_t arr)配置方面的代码以及寄存器的理解已经有一定的程度,但是在main.c编写代码逻辑时还是不够清晰,经常犯一些错误。配置的时候误以为需要先把【输入捕获配置】了再去配置【从模式】,后面验证了这样配置没办法产生预期的效果。

2024-01-28 01:36:17 495

原创 STM32F407ZGT6——实验9-3 通用定时器输入捕获实验(测量按键按下脉冲宽度)

输入捕获初始化时,理解错误timx_chy_ic_handle.ICSelection = TIM_ICSELECTION_DIRECTTI;/* 理解错误,映射到TI1上 */__HAL_TIM_CLEAR_IT(&g_timx_npwm_chy_handle, TIM_IT_UPDATE);/* 清除定时器溢出中断标志位 *//* 复用为捕获TIM5的通道1 *//* 以下代码没有使用定时器HAL库共用处理函数来处理,而是直接通过判断中断标志位的方式 */F4引脚复用时,经常忘记加上这个复用语句。

2024-01-26 22:08:48 404 1

原创 keil5中stm32f103c8t6(stm32f1系列均适用)波形仿真设置全过程

GPIOX_IDR eg:GPIOB_IDR(后续在下框标选好引脚号即可)第三项 TARMSTM.DLL -pSTM32F103C8。第二项 DARMSTM.DLL -pSTM32F103C8。第一项 SARMCM3.DLL -REMAP。

2024-01-26 15:39:27 915 1

原创 stm32f407zgtx 烧录出现问题no target

当你尝试了网上的各种各样的方法还是不行的时候,这时候可以尝试一下这个笨办法,就是。

2024-01-25 22:28:36 371

原创 stm32f4没办法正常波形仿真调试

了解了之后发现还必须使用SWD接口方式的逻辑分析仪功能,必须接上SWO引脚。MDK逻辑分析仪使用注意事项总结,含MDK4.XX和MDK5.XX。(出处: 硬汉嵌入式论坛)

2024-01-25 22:19:27 351

原创 stm32f103c8t6外设——高级定时器(输出比较)输出指定pwm个数

本次实验为基于stm32f103c8t6开发板,利用高级定时器的TIM1_CH1(输出比较)输出指定pwm个数(占空比为50%)。

2024-01-25 00:24:07 683 1

原创 keil5很多选项和按键是灰色的解决方案

原因是keil版本问题,也许是keil5文件用keil4打开,也可能是arm工程文件用C51打开。把工程用后者打开即可。

2024-01-24 20:01:18 2946 2

原创 提高keil5编译速度,瞬间快十几倍

三、browse information不打勾,提的速度最快,缺点就是调试时候会有影响,右键无法直接跳转。一、精简①中.h文件内容。二、不要生成hex文件。

2024-01-23 22:46:31 1031 1

原创 Keil : Error-Flash Download failed Cortex-M4错误

开发板:STM32F407ZET6。

2024-01-23 22:42:07 404 1

原创 stmf103c6t8外设——通用定时器输入捕获获取脉冲宽度时间

同前面输出捕获配置基本一致, 区别仅有IO口是否为复用,本文不再赘述。回调函数会在HAL_TIM_IRQHandler中断函数中被调用。1MHz计数频率的倒数即为测量时间的精度,为us级精度。(TRC自从模式控制器较少用到,本次按黄色线进行配置)

2024-01-22 11:59:30 575

原创 stm32f103c8t6外设——通用定时器PWM模式及IO复用实现呼吸灯

原因是,PWM波形是具有一定占空比的矩形波,呈现高低电平交替的状态,频率较高,即波形周期较小。在高速变化过程中,led灯会呈现出一个平均亮度(人眼看出来的状态),通过不断改变PWM波的占空比,高低电平交替的速度会发生变化,此时这个平均亮度也会发生变化,故就可以通过改变PWM波的占空比以改变led灯的亮度,实现呼吸灯的效果。/* 部分复用使能 */通用计数器可以实现输入捕获、输出捕获、定时器级联(一个定时器作为另一个定时器的预分频器。

2024-01-20 12:28:23 1138

原创 stm32f103c8T6外设——基本定时器

定时器本质上就是计数器。对比软件定时,delay函数定时不精准且让CPU完全不工作只执行等待指令。

2024-01-19 17:50:15 752 1

原创 stm32f103c8t6外设——WWDG窗口看门狗

注意:需要在窗口期内进行“喂狗”操作,才不会复位。

2024-01-18 13:53:38 495

空空如也

空空如也

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

TA关注的人

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