- 博客(39)
- 收藏
- 关注
原创 Altium Disigner(16.1)学习-原理图绘制以及必要操作
点击ctrl+s保存,同样要改名字,方便查找。之后就可以点击放置啦注意:最好是自己存在一个自己的文件夹里面,然后直接添加库文件(同上面的添加方法一样)这样原理图绘画就基本没有什么问题了。
2025-06-01 14:43:56
1001
原创 STM32 RTC实时时钟\BKP备份寄存器\时间戳
基本结构:橙色部分为后备区,由VBAT供电,主电源有电时由主电源供电。BKP有四个寄存器,如上图。首先配置RTCCLK时钟来源,从绿色部选一个。之后通过预分频器对时钟进行分频。余数寄存器是一个自减计数器,存储当前的计数值;从中寄存器时技术目标,决定分频值。之后配置32位计数器,可以进行日期时间的读写。一些操作注意事项:开启PWR和BKP的时钟、实验PWR使能BKP和RTC的访问调用等待同步函数调用一个等待的函数六、代码部分//恢复缺损配置,手动清零。
2025-05-26 19:12:06
652
1
原创 STM32 SPI通信(硬件)
STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担可配置8位/16位数据帧、高位先行/低位先行时钟频率: fPCLK / (2, 4, 8, 16, 32, 64, 128, 256)支持多主机模型、主或从操作可精简为半双工/单工通信支持DMA兼容I2S协议STM32F103C8T6 硬件SPI资源:SPI1、SPI2。
2025-05-23 17:27:19
605
原创 STM32 SPI通信(软件)
注:上面有横线的都是低电平有效(1)和(2)描述的是存储器规划示意图,(2)被划分为若干个块“Block”,其中每一块再划分为若干个扇区(1)“Sector”。对于每个扇区又可以分为很多页 “Page”。在(2)里面,以64KB为一个基本单元,分了128块(因为一共8MB)。在(1)里面,是对于块的更细的划分,以4KB为一份,分了16份。在写入数据时,还会有个更细的划分Page,256字节为一份。(7)为SPI控制逻辑,接收指令和数据等。
2025-05-23 14:21:16
1481
原创 C语言—再学习(结构体)
一种线性数据结构,它由一系列节点(Node)组成,这些节点通过指针(或引用)连接成一个链条。与数组不同,链表的节点在内存中不需要连续存储,数据的逻辑顺序通过节点之间的指针来维持。链表有一个”头指针“变量,图中是head表示,它存放着一个地址,该地址指向一个元素。链表中每个元素称为”节点“。可以看到head指向第一个元素,第一个元素有指向第二个元素......直到最后一个元素,该元素不在指向其它元素,它称为”表尾“,它的地址部分放一个“NULL”,表示空地址,链表到此结束。节点至少包含两部分:数据域。
2025-05-17 20:21:29
1041
原创 C语言—再学习(指针)
若先后把它们分配在2000开始的存储单元中,&a和&b的信息完全相同吗?通过指针,程序可以直接访问和操作内存中的特定位置,这使得程序员能够更灵活地管理内存,实现对数据的高效访问和修改。首先通过变量名找到对应的地址,从该4个字节中按照整型数据的存储方式读出整型变量 i 的值,然后按十进制整数格式输出。并建立了对应的变量名和地址的对应表。数据的分配是分类型的,对不同类型的数据,在内存中分配的存储单元大小,和存储方式是不同的。执行时,把键盘输入的值送到地址为2000开始的整型存储单元中。之外,还需要有改数据的。
2025-05-14 13:21:49
214
原创 C语言—再学习(数据的存储类别)
extern 也可以用于声明外部函数,当一个函数在一个源文件中定义,而在另一个源文件中调用时,可以使用 extern 声明函数,虽然在实际应用中,函数声明时 extern 关键字。:当一个变量在一个源文件中定义,而在另一个源文件中使用时,可以使用 extern 关键字来声明该变量。C的存储类别包括4种:自动挡(auto)、静态的(static)、寄存器的(register)、外部的(extern)。自动变量的作用域仅限于定义它的函数或代码块,当函数执行结束时,自动变量的生存期结束,其。
2025-05-13 20:16:01
444
原创 STM32 USART串口
/恢复缺损配置//初始化//结构体初始化//结构体,用来配置同步时钟输出的,包括时钟是不是要输出,时钟的极性相位等参数//使能//中断输出使能//开启USART到DMA的触发通道//发送数据//接收数据//获取标志位状态//清除标志位//获取中断状态//清除中断挂起位/*** 函 数:串口初始化* 参 数:无* 返 回 值:无*//*开启时钟*///开启USART1的时钟//开启GPIOA的时钟/*GPIO初始化*/
2025-05-05 09:45:21
622
原创 STM32 TIM编码器接口
Encoder Interface 编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和通道2使用场景:使用定时器的编码器接口,再配合编码器,就可以测量旋转速度和旋转方向。一般应用于电机控制的项目上,使用PWM驱动电机,再使用编码器测量电机的速度,再用PID算法进行闭环控制。
2025-04-24 21:12:26
448
原创 STM32 TIM输出比较(控制舵机和直流电机)
【1】PWM(Pulse Width Modulation)脉冲宽度调制【2】在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域【3】PWM参数: 频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距。
2025-04-22 15:06:17
517
原创 51单片机DS1302
DALLAS公司推出的。采用SPI三线接口与MCU进行同步通信,并可采用突发方式一次传送多个字节的时钟参数和RAM数据。附加31字节的静态RAM。简单来说,DS1302可以理解为一个电子手表,里面带有一个31字节的RAM内存。在DS1302中有两块存储器:日历时钟寄存器和静态RAM存储器。前者用于记录实时时间,后者用于记录其他数据。
2025-03-15 14:04:24
275
原创 C语言 数组、指针
例:char ch [5] = {'a','b','c','d','e'};//定义了一个数组名为score的一维数组,由40个元素构成,每个元素的类型都是int。<类型标识符> *<标识符> //表明<标识符>是存放<类型标识符>类型变量的地址变量。其中元素的取用:对于第一个元素的取只有,score[0]和score[1],其中两个分别是。//ptr是被说明的对象,*表示ptr的类型是指针类型。格式:<类型说明符> <数组名> <常量表达式>数组的访问:<数组名> <下标表达式>
2025-03-13 20:14:57
507
原创 C语言运算符
(加)、-(减)、*(乘)、/(除)、%(取余)、++(加一)、--(减一): #若除数和被除数都是整数,则只取整数部分。如6 / 4 = 1#若除数和被除数中只要有一个是实数,则结果是double型,如6 / 4.0 =1.5:求出%两侧的整型数据整除后的余数,如6 % 4 = 2,因为6除以4的余数是2既可以做前缀,也可以做后缀#++i,先使 i 加一,再取 i 的值#i++,先取 i 的值,再使 i 加一注: #要求%的操作数必须是整型。# /和%的操作数不能为0。
2025-03-12 13:23:39
330
原创 STM32TIM定时中断
.TIM(Timer)定时器<.定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断<.16位计数器预分频器自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时<.不仅具备基本的定时中断功能,而且还包含等多种功能<.根据复杂度和应用场景分为了高级定时器(TIM1/TIM8)、通用定时器(TIM2/TIM3/TIM4/TIM5)、基本定时器(TIM6/TIM7)三种类型。
2025-03-05 20:43:31
341
原创 STM32 EXTI外部中断
EXTI(Extern Interrupt)外部中断EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序支持的触发方式:上升沿/下降沿/双边沿/软件触发支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断(用pinA0,就不可以用pinB0)16个GPIO Pin,外加PVD输出、RTC闹钟、IUSB唤醒、以太网唤醒触发响应方式:中断响应/事件响应。
2025-03-04 20:06:38
652
原创 51单片机串口通信
并行:数据的各位同时发送或接收,每个数据为使用一条导线。串行:数据一位接以为地顺序发送或接收串行通信有SPI、IC、UART等多种,最常见最通用的是指UART,大多数情况下,串口通信指的就是三种。RS485总线是半双工的通信制式。:需要使用同一个时钟,以数据块为单位传送数据。:每个设备都有自己的时钟信号,通信中双方的波特率要保持一致,以字符为单位进行数据帧传送,一次传送一个帧。
2025-02-28 08:10:52
289
原创 STM32 GPIO输出
GPIO(General Purpose Input Output)通用输入输出口*可配置为8种输入输出模式*引脚电平:0V~3.3V,部分引脚可容忍5V*输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器模拟通信协议输出时序等*输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
2025-02-25 08:39:16
308
原创 51单片机定时器与计数器
(1)有两个16位可编程定时/计数器——T0和T1(2)既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能(3)定时器计数器有很多种工作方式,T0有4种工作方式,T1有3种工作方式。(4)定时计数时间到时溢出,使相应的溢出位置位,可以通过查询或者中断方式来处理。
2025-02-23 19:09:52
770
原创 STM32简析
注意:供电电压是2.0-3.6V,51单片机使用的是5V ,USB输出电压也是5V,不可以直接给它供电,需要加上稳压芯片。2.片上资源/外设NVIC:管理中断优先级SYsTick:定时,任务切换,delay函数RCC:其他的外设在上电的情况下默认是没有时钟的,所以需要RCC时钟,先使能RCC,外设才会工作。GPIO:通用IO口,可以用来点灯,读取按键等红色:电源相关引脚蓝色:最小系统相关引脚绿色:IO口、功能口相关引脚S:代表电源I:代表输入O:代表输出IO:代表输入输出。
2025-02-21 14:57:33
260
原创 中断系统与外部中断
内核与外设之间的主要交互方式有两种:轮询和中断。轮询的方式貌似公平,但实际工作效率很低,且不能及时响应紧急事件;中断系统使得内核具备了应对突发事件的能力。在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转而去执行另外一段特殊程序来处理出现的紧急事务,处理结束后,CPU自动返回到原来暂停的程序中去继续执行。这种程序在执行过程中由于外界的原因而被中间打断的情况,称为中断。中断服务函数:内核响应中断后执行的相应处理程序。
2025-02-20 18:28:11
280
原创 矩阵键盘的基本操作
1.首先将其他所有行和列全部置1,第一行置0,然后依次检测各列,是否为0。有则为第一行,和那一列。没有就再检测下一行,然后依次各列。2.定义一个number,哪一行,哪一列,number就是对应的数字。注意:上图第一列和第二列,是P4。头文件没有关于P4的地址,所以要先定义P4地址。
2025-02-20 17:25:57
203
原创 独立按键的基本操作
按键S5和S4为控制键,按键该键点亮指定的LED指示灯,松开后熄灭。按下S7点亮L1指示灯,L1点亮后,S6不响应操作,S5控制L3,S4控制L4,再次按下S7,L1指示灯熄灭,S6可可响应操作。按下S6点亮L2指示灯,L2点亮后,S7不响应操作,S5控制L5,S4控制L6,再次按下S6,L2指示灯熄灭,S7可可响应操作。2.需要定义一个状态,状态初始为0,当我们给L1点亮之后,给状态赋值为1。S7和S6未按下时,即L1或L2未点亮时S5和S4不响应操作也就是未作LED灯区域选择时,控制键不能操作。
2025-02-18 18:53:23
321
原创 数码管动态显示
想要显示“2025--月份”就要不断循环显示每一位。所以要先定义每一位显示的东西,和单个数码管自由显示函数。<月份不断显示的话,十位就用month/10,个位就用month%10。动态显示实质上就是轮流点亮单个数码管实现多位数码管整体显示的效果。<首先还是给出段码,然后选择138译码器通用代码。<再来一个消除开始噪音的,也就是初始化。
2025-02-18 15:00:34
221
原创 led蜂鸣器与继电器控制
在CT107D单片机综合训练平台上实现蜂鸣器与继电器的基本控制,首先让8路LED指示灯闪烁3遍后熄灭,接着依次点亮LED指示灯,继电器吸合一会后断开,然后依次熄灭LED指示灯,蜂鸣器鸣叫一会后关闭,程序循环实现上述功能。N UBZZ 蜂鸣器管脚给低电平就叫,高电平就不叫。
2025-01-23 21:57:18
235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人