- 博客(36)
- 收藏
- 关注
原创 STM32——RTC实时时钟
备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。此外,BKP控制寄存器用来管理侵入检测和RTC校准功能。复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问。
2025-04-09 19:35:13
1379
1
原创 STM32——DAC转换
DAC,全称:Digital-to-Analog Converter,扑指数字/模拟转换器ADC和DAC是模拟电路与数字电路之间的桥梁。
2025-04-07 16:24:52
684
原创 STM32——ADC模数转换器
ADC,全称:Analog-to-Digita丨Converter,指模拟/数字转换器ADC将模拟信号转换为数字信号。基本原理将连续时间的模拟信号转换为离散时间的数字信号。具体来说,ADC将模拟信号在时间上进行采样,然后通过量化操作将每个采样值转换为数字编码。这些数字编码可以用二进制代码表示。ADC在转换过程中需要通过采样频率和量化精度来决定转换质量,采样频率和量化精度越高,转换质量越好,但同时也会增加转换的成本和复杂度。
2025-04-07 15:12:58
1179
1
原创 STM32——DMA
DMA, 全称Direct Memory Access,即直接存储器访问DMA传输,将数据从一个地址空间复制到另一个地址空间DMA传输无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高作用:为CPU减负内部框图优先级管理也分软件阶段和硬件阶段注意:DMA2仅存在大容量产品和互联型产品。
2025-04-07 10:20:35
489
原创 STM32——时钟系统
(2)HSE振荡器时钟(High SpeedExternal(Oscillator/Clock),高速外部时钟)(1)HSI振荡器时钟(High Speed Internaloscillator,高速内部时钟)(5)LSE时钟(Low Speed Extermaloscillator,低速外部时钟)。(3)PLL时钟(PhaseLockedLoop 锁相环/倍频器)(4)LSI时钟(LowSpeedInternal,低速内部时钟)OSC_OUT和OSC_IN(外部高速晶振)
2025-04-07 09:52:37
292
原创 STM32——I2C通讯(软件模拟)
I2C:Inter-Integrated Circuit(内部集成电路)Philps公司80年代初期开发的,引脚少,硬件实现简单,可扩展性广泛地使用在系统内多个集成电路(IC)间的低速通讯简单的双向两线制总线协议标准,支持同步串行半双工通讯。标准模式传输速率为100kbit/s,快速模式为400kbit/s,高速模式下可达3.4Mbit/s,目前大多I2C设备尚不支持高速模式。
2025-04-07 09:52:15
1191
原创 STM32——基本定时器
STM32F103有两个基本定时器TIM6和TIM7,功能相同,资源是完全独立的 ,可以同时使用。主要特性16位自动重载计数器,16位可编程分频器,预分频系数1-65536,可触发DAC的同步电路、以及生成中断/DMA请求。①时钟源基本定时器的时钟挂载在APB1总线上,但不并不由APB1总线直接提供,而是先经过一个倍频器。当APB1的预分频器系数为1时,这个倍频器系数为1,定时器的时钟频率等于APB1 总线时钟频率;当APB1的预分频系数>=2时,倍频器系数为2,
2025-03-18 20:37:18
765
原创 STM32——WWDG(窗口看门狗)
Window watchdog,即窗口看门狗本质:能产生系统复位信号和提前唤醒中断的计时器特性:递减的计器 当递减计数器值从0x40减到0x3F时复位(即T6位跳变到0)
2025-03-18 15:16:58
349
原创 STM32——独立看门狗(IWDG)
独立看门狗本质上是一个定时器,这个定时器有一个输出端,可以输出复位信号。该定时器是一个12 位的递减计数器,当计数器的值减到0的时候,就会产生一个复位信号。如果 在计 数没减到 0之前,重置计数器的值的话,那么就不会产生复位信号,这个动作我们称为喂狗。看门狗功能VDD电压域供电,在停止模式和待机模式下仍然可以工作。
2025-03-17 20:24:24
456
原创 USART——串口通信
串行按位传输,一次传输一位并行一般是多位同时传输,8位16位32位并行通信通常比串行通信快,但受距离限制更大。并行通信需要更多的数据线,布线更复杂;串行通信简化了布线和接口串行通信更适合远距离传输,而并行通信适合短距离传输。串行接口通常成本较低,因为需要的硬件较少。串行优于并行。随着技术的发展,串行通信越来越受欢迎。原因在于其较低的复杂性和成本,以及适应长距离传输的能力。
2025-03-17 11:28:20
820
原创 STM32 ——系统架构
通过外部的ICode总线连接Flash,实现指令的读取。用来扩展外部SRAM,Flash,连接LCD屏幕等。通过外部的DCode总线连接到总线矩阵然后与闪。CPU负担,不通过CPU实现内存和外设之间的数。通过DMA总线,连接到总线矩阵。存存储器的数据接口相连接,实现从Flash。AHB到APB的桥(AHBtoAPBx)通过APB2总线连接到APB2上的外设。通过外部的System总线连接到总线矩阵。通过APB1总线连接APB1上的外设。存储程序运行时用到的变量。程序执行时用到的常量。
2025-03-10 19:29:30
585
原创 数据结构 (C语言) 链表
逻辑结构 顺序结构存储结构 链式存储优点:不要求大片连续空间,改变容量方便。可以动态的添加和删除节点缺点:不方便随机存取,要耗费一定空间存放指针。
2025-01-18 09:19:04
636
原创 数据结构概述+顺序表(C语言)
数据结构是计算机存储,管理数据的方式。数据必须依据某种逻辑联系组织在一起存储在计算机内,数据结构研究的就是这种数据的存储结构和数据的逻辑结构。
2025-01-15 19:02:05
696
原创 51单片机 DS18B20温度储传感器
64-BITROM:作为器件地址,用于总线通信的寻址,是唯一的,不可更改SCRATCHPAD(暂存器):用于总线的数据交互EEPROM:用于保存温度触发阈值和配置参数单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线一根通信线:DQ异步、半双工单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线单总线线路规范设备的DQ均要配置成开漏输出模式。
2025-01-13 14:22:57
753
原创 51单片机 AT24C02(I2C总线)
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。开始——>发送从机地址 + read——>接收应答——>接收一个字节——>发送应答——>……在发送完一个字节之后,主机在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)开始——>发送从机地址 + write——>接收应答——>发送一个字节——>接受应答——>……发送字节——>接受应答——>结束。
2025-01-11 09:20:25
1159
原创 51单片机串口通信
总线:连接各个设备的书传输线路(类似一条马路,把路边各住户连接起来,使住户可以互相交流)电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的管理。RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)RS232电平:-3~-15V表示 1,+3~15V表示 0。SBUF:串口数据缓存寄存器,物理上是两个独立的寄存器,但占用。半双工:通信双方可以互相传输数据,但必须分时复用一根数据线。写操作时,写入的是发送寄存器,读操作时,读出的。模式3:9位UART,波特率可变。
2025-01-09 08:53:19
401
原创 c语言动态分配内存
malloc申请空间(连续)(重要)calloc申请空间(连续)+数据初始化realloc修改空间大小free释放空间 (重要)
2024-12-25 10:43:28
182
原创 c语言字符串
/细节一:在底层,实际存储的时候,c语言会将字符串“abc”转换成字符数组进行保存,且末尾加上‘\0’.//细节二:数组长度要么不写,如果写的话要将结束符‘\0’也计算在内//细节三:这种方式定义字符串,是可以修改的//细节一:在底层,实际存储的时候,c语言会将字符串“abc”转换成字符数组进行保存,且末尾加上‘\0’.//细节二:这种方式定义的字符串,会把底层的字符数组放在只读常量区内容不可修改定义的字符串可以复用。
2024-12-23 19:52:58
598
原创 一维数组笔记
类型 数组名[元素个数];// 数组 arr ,里面包含10个成员,每个成员都是int 类型或者#define NUM 10 //宏定义或者。
2024-12-18 14:42:15
1363
原创 c语言函数笔记·
1.函数不调用就不执行 2.函数名不能重复3.函数与函数之间是平级关系,不能嵌套定义4.自定义函数写在main的下面,需要在上方声明5.return 下面不能编写代码,永远执行不到,属于无效的代码6.函数的返回值类型为void,表示没有返回值,return可以省略不写,如果写了return,后面不能跟具体的数据,仅表示结束函数
2024-12-17 09:03:10
1173
原创 位运算符。
运算符术语示例结果按位与运算011 & 1012个都为1才为1,结果为001按位或运算011 | 101有1个为1就为1,结果为111按位异或运算011 ^ 101不同的为1,结果为110取反运算~011100左移运算101010100>>右移运算1010 >> 10101。
2024-12-12 14:08:01
1194
原创 算术和逻辑运算符
8>5||1||'a' 第一个操作数的结果 是真的话,直接返回真(1),后面不再执行 ,否则由后面决定结果。8>5&&1&&'a' 第一个操作数的结果 是假的话,直接返回假(0),后面不再执行 ,否则由后面决定结果。两数相除,如果想得到小数的结果,分子分母必须有一个为小数,否则结果只能是整数。|| 逻辑或 两个操作数都是假,才是假,一个为真即为真。&& 逻辑与 两个操作数都是真,才是真,一个为假即为假。&& 逻辑与 ||逻辑或!
2024-12-11 19:16:59
314
原创 输入和输出语句
这个错误信息提示你的代码中使用了 scanf 函数,这个函数可能存在安全问题,你可以考虑使用 scanf_s 函数来代替,以确保代码的安全性。2、在代码的最上行加入:#define _CRT_SECURE_NO_WARNINGS(%zu:用于输出 sizeof() 返回值是 size_t类型。1、将scanf改为scanf_s即可。size_t 是一个无符号整数类型。size_t 类型的无符号整数。
2024-12-11 14:08:13
363
原创 原码,反码和补码
不表示为负零,用来表示什么呢?计算机其实默认把8位有符号二进制 1000 0000 表示为。补码在正负数加减法运算时没问题,也不会出现正负零占两个二进制。的反码是按位取反(但符号位不变)。
2024-12-11 13:55:23
190
原创 声明与定义
对于函数声明,只提供函数的返回类型、名称和参数列表,不包含函数体。对于函数,定义包括函数体,即具体的实现代码。为变量分配存储空间,并可能为其指定初始值。向编译器告知变量或函数的存在,但不分配存储空间。
2024-12-11 10:09:25
162
原创 c程序代码规范:
1、一个说明或一个语句独占一行,例如:包含头文件、一个可执行语句都要换行。2、函数体内要有明显缩进,按一下tab键为一个缩进。3、括号要成对写,如果要删除,也要成对删除。4、一句可执行语句的末尾一定要加分号。
2024-12-11 10:02:15
513
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅