自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Buck电源总结

在SW接口端,肖特基二极管(续流二极管)摆放尽量靠近芯片,然后输出电容也用二极管并联而成,小电容靠近输出端,例如0.1uF;Ci采用大电容并小电容,小为0.1uf,大电容选型首位MLCC电容,第二固态电容,第三高频低阻电解电容,其次为普通的电解电容,不选钽电容.Co也是大电容并小电容(除了COT),按上图选,其中MLCC耐压大于1.5Vo,钽电容耐压大于2~3Vo,不推荐普通电解电容。如上图所示,C1小电容靠近芯片,C2,C3可以选择电解电容或者?电容用小容量的和大容量的电容替代,小容量的更靠近芯片。

2024-04-20 12:22:55 288

原创 嵌入式蓝桥杯做题总结

—自认为比较巧妙,定时器3被设置为10ms进入一次中断,代替了HAL_Delay(10)的方法消抖;运用状态机机思想实现检测多个按键检测——且分为两个状态,其中一个状态PB1和PB2的按键不可使用。

2024-02-29 19:00:09 495 2

原创 GD32接收不定长数据包

Cubemx生成代码过程忽略首先在main函数中创建接收缓存区并在main.h中定义接下来就是重写串口的中断函数中的内容,把原有内容注释掉main中创建一个记录接收数据长度的变量和标志位然后再在主函数中添加一个验证代码,这样MCU收到数据后会发送到电脑上现在开始正式改写中断函数,改为如下代码即可然后再在主函数中添加即可做到发送接收不定长数据。

2024-01-22 00:26:31 520

原创 1137春秋

2023.11.11——刘皇叔成功安装soliworks,但是闪退。

2023-11-11 22:27:08 82

原创 11-5学习笔记

2023-11-05 13:30:19 116

原创 智能升降压模块

铝电解电容——用较小的成本获得更大的容值,但是等效电阻也大,内部有电解液的固态电容——聚合物组成,即使失效也不会出现漏液着火等情况选取时需要考虑精度容值,额定电压大小一般额定电压要留有1.5倍~2倍的余量,比如我们的目标是12V,可以选取24V左右即可的我们需要220uf和25V的电容。

2023-11-01 22:48:14 202

原创 自用——平衡小车代码

encoder.h。

2023-10-24 22:36:00 174

原创 SPI通信

Dual SPI: 双重SPI模式,在一个SCK电平变化下,一次性交换两个数据Quad SPI:四重SPI模式,同双重SPI模式。

2023-10-24 14:57:18 71

原创 I2C的硬件实现

因为I2C是同步的,所以相对来说I2C更好用软件来实现,硬件却相对来说没这么好,但是硬件I2C通信也是有其优点的我们是通过软件写入控制寄存器CR和数据寄存器DR,读取状态寄存器SR来了解外设电路当前处于什么状态,来实现I2C通信的,而我们通过STM32的库函数来实现配置这些寄存器,这些操作就变得更简单了;有了I2C硬件外设的存在,硬件自动实现时序,就可以减轻CPU的负担,节省软件资源,由硬件来做这件事,可以更加专注,时序生成的性能、效率也会更高,这就是I2C外设存在的意义。多主机模型:1、固定多主机:固定多

2023-10-19 09:42:23 862

原创 C语言之共用体、枚举类型、typedef

尽量不要同时初始化多个共用体的成员共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉——用处:节省空间,有两个很长的数据结构,不会同时使用,用共用体的话,只占用最长的那个数据结构所占用的空间。

2023-10-07 23:07:15 228

原创 I2C通信协议

•MPU6050是一个6轴姿态传感器,可以测量芯片自身XYZ轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景•3轴加速度计():测量XYZ轴的加速度•3轴陀螺仪传感器(Gyroscope):测量XYZ轴的角速度。

2023-10-05 12:38:13 483

原创 串口数据包收发

把属于同一批的数据进行打包和分割,方便接收方进行识别。

2023-10-03 10:48:41 925

原创 USART串口协议

•USART)通用同步异步收发器•USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里•自带波特率发生器,最高达4.5Mbits/s•可配置数据位长度(8/9)、停止位长度(•可选校验位(无校验奇校验偶校验)•支持同步模式、硬件流控制、DMA、智能卡、IrDALIN••USART资源:USART1。

2023-10-01 22:56:26 307

原创 STM32之DMA

•DMA)直接存储器存取(可以直接访问STM32内部存储器,如SRAM、程序存储器Flash和寄存器等)DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源(外设指的是外设的寄存器)•12个独立可配置的通道:DMA17个通道),DMA25个通道)•每个通道都支持软件触发和硬件触发(特定的:每个DMA通道的硬件触发源不一样)(软件触发:会一股脑的把这批数据以最快的速度全部转运完成)(硬件触发:硬件触发一次,转运一次)

2023-09-26 23:33:00 581

原创 ADC数模转化器

用于配置ADCCLK分频器的,可以对APB2的72MHz时钟选择2,、4、6、8分频,输入到ADCCLK。

2023-09-26 01:17:07 680

原创 定时器的编码器接口

•编码器接口•编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度•每个高级定时器和通用定时器都拥有1个编码器接口(定时器使用为编码器后,就不能做其他事情了,我们的STM32只有4个定时器,资源紧张的情况下,可以使用外部中断来接编码器,使用软件资源和硬件资源互补)•两个输入引脚借用了输入捕获的通道1和通道2使用编码器接口计次旋转编码器的速度实质上就是上一节所说的测频法的思路。

2023-09-23 18:31:32 226

原创 定时器之输入捕获

从CH1等通道输入频率信号,(异或门是给三相电路使用的,暂时不介绍)然后经过输入滤波器中,过滤毛刺信号,边沿检测器即选择上升沿触发或者是下降沿触发,这里的输入滤波器和边沿检测器有两套,如果我们从CH1中输入信号,接下来可以选择输入TI1FP1到IC1或者输出TI1FP2到IC2中,这样设计的目的主要有两个:①可以灵活切换后续捕获电路的输入,可以通过CH1输入IC1,也可以通过CH2输入IC1;

2023-09-23 12:35:14 868 5

原创 TIM输出比较

•OC)输出比较•输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形•每个高级定时器和通用定时器都拥有4个输出比较通道•高级定时器的前3个通道额外拥有死区生成和互补输出的功能如果想做一些有电机的项目,比如智能车,机器人等项目,就就要学好这一项功能•PWM)脉冲宽度调制•在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域。

2023-09-21 12:14:23 596

原创 TIM定时器

•TIMTimer)定时器•定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断•16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时•不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能•根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。

2023-09-17 10:53:29 502

原创 EXTI外部中断

•EXTI)外部中断•EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序•支持的触发方式:上升沿下降沿双边沿软件触发•支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断(即PA1和PB1)•通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB。

2023-09-17 00:52:10 603

原创 OLED模块

•OLED):有机发光二极管•OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点•0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块•供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64。

2023-09-16 10:19:31 339

原创 STM32——GPIO输入

•传感器模块:传感器元件(光敏电阻热敏电阻红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出。

2023-09-15 09:25:50 1560

原创 STM32-GPIO

•GPIO)通用输入输出口•可配置为8种输入输出模式•引脚电平:0V~3.3V,部分引脚可容忍5V•输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等•输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。

2023-09-14 00:10:43 71

原创 单片机-蜂鸣器

•蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号•蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器•有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定•无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。

2023-09-10 23:45:19 35

原创 DS1302可调时钟

KeyNum用于接收按键键码Mode用来判断当前模式在主函数中写出按下按键1切换模式LCD_Init();while(1)

2023-09-09 15:44:05 388

原创 DS1302

大封装(上图) 小封装(贴片,下图)表一:DS1302中读取和写入时间的寄存器表二:解释(字母上加一横线代表低电平有效)第7位默认为1,第6位是选择RAM或者CK(低电平有效,即第六位写入0为选择CK),5~1位为操作对象的地址(如操作秒,地址为0,则写入00000),第0位是选择读或写(写入0为写)。那么假如要写入秒,则得段码为:1000 0000 = 0x80;在表一中有写明,假如要写入秒,则写入寄存器80h;这就完成了我们的在哪里读和在哪里写的任务上是读出,下是写入;

2023-09-09 00:41:51 81

原创 LED点阵屏

•LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等•LED点阵屏分类按颜色:单色、双色、全彩按像素:8*816*16等(8的倍数,因为一个字节是8位)(大规模的LED点阵通常由很多个小点阵拼接而成)

2023-09-05 23:25:02 129

原创 c语言单链表

【代码】c语言单链表。

2023-09-05 11:49:20 26

原创 C++第一个程序

cin.getline(buf, 10)是只获取buf的前10个字符,因为字符串是以0(不显示)结尾,所以也会算占去一个字符,则真正储存到的只有9个。当我们输入3.14时,它会一位一位接收,先接收到3,然后是.,但是因为i是整形,接收到.时会发生错误,导致.变为false,中断接收,只接受到3。cin.ignore(7)是忽略前7个字符。

2023-09-05 10:20:40 38

原创 单片机串口通讯

RTS、CTS,DRS--->流控制。

2023-09-04 00:21:05 793

原创 单片机定时器

•定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机 内部完成•定时器作用:1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作2)替代长时间的Delay,提高CPU的运行效率和处理速度。

2023-09-03 00:54:05 299

原创 单片机之矩阵键盘

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态数码管扫描(输出扫描)原理:显示第1位→显示第2位→显示第3位→……,然后快速循环这个过程,最终实现所有数码管同时显示的效果矩阵键盘扫描(输入扫描)原理:读取第1行(列)→读取第2行(列) →读取第3行(列) → ……,然后快速循环这个过程,最终实现所有按键同时检测的效果以上两种扫描方式的共性:节省I/O口。

2023-09-02 17:04:52 1340

原创 c语言结构体

作为局部变量(在main函数里)return 0;作为全局变量} book;return 0;

2023-09-01 11:07:08 26

原创 内联函数的技巧

在之前的学习中,我们了解到用宏定义来实现一些简单的功能可能会比函数来得更简便一些,因为函数在每次调用中都会申请并占用栈空间。但是在宏定义中藏有很多陷阱,相比来说,函数可能才是我们正确的选择,下面用例子来证明:实现求1-100的平方:结果很正常:结果却不正常了其实其中的等价于(入栈的顺序是从右到左,即i++先计算,再计算i-1)在这i被加了两次,导致结果出现错误。那我们应该如何在要反复调用函数的情况下,提高使用函数来解决问题时的效率呢?(即如何让函数的调用不用反复申请栈空间,占用栈空间)

2023-09-01 09:40:35 18

原创 高级宏定义

printf("请输入两个整数:");printf("更大的数字是:%d", MAX(x, y));return 0;注意:MAX和(形参)之间不可以有任何空格。在进行这一步时要注意括号的使用,尽量把每个形参用括号括住,因为这仅仅是把形参简单替换成实参。int x;printf("请输入一个整数:");printf("%d的平方是%d\n",x, SQUARE(x));

2023-08-31 22:27:42 14

原创 C语言的内存管理布局规律

栈里存放着局部变量,函数的参数,函数的返回值。

2023-08-31 16:51:50 12

原创 LCD1602调试工具

•使用LCD1602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示。•本视频提供的LCD1602代码属于模块化的代码,使用者只需要知道所提供函数的作用和使用方法就可以很容易的使用LCD1602。

2023-08-30 01:30:05 125

原创 模块化编程

•传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路•模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#includeXXX.h文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等。

2023-08-30 00:21:46 40

原创 单片机——数码管显示

LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件A,B,C:输入端,高位到低位依次是是C-B-AY0 ~Y7:输出端VCC:电源正极GND:电源负极G1,G2A,G2B:使能端,当G1接高电平,G2A,G2B接低电平时,才能正常工作。

2023-08-29 20:25:23 6237 1

原创 动态内存管理2

当我们申请的内存过少,需要再多申请内存时,可以用memcpy函数。malloc不会吧所有内存空间清零,需要自己做。realloc可以简化该过程。

2023-08-28 02:13:35 34 1

空空如也

空空如也

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

TA关注的人

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