自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言 UTC时间转化为北京时间

前言:程序获取的代码有时候为UTC英国伦敦格林尼治时间,我们并不能拿到手直接用,所以要经过特殊的代码转化才可以使用,以下为代码的处理:utc转化为北京时间(+8h)。太阳东升西落,所以北京的时间比UTC的时间相比是(+8H),东半球是11号8:00,西半球还是10号24:00。类型的 UTC 时间戳(从 1970-01-01 00:00:00 UTC 到当前的秒数)转换为。是编程中用于处理时间的核心函数,不同编程语言(C/C++、Python 等)都有实现,核心作用是。(包含年、月、日、时、分、秒等字段)

2025-12-25 14:40:22 463

原创 C语言 string库函数

头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。<string.h>是 C 标准库中的一个头文件,提供了一组用于处理字符串和内存块的函数。这些函数涵盖了字符串复制、连接、比较、搜索和内存操作等。

2025-12-25 10:54:49 447

原创 C语言 strcpy和memcpy 异同/区别

strcpy以\0为终止符,会从src开始逐字节拷贝,直到遇到\0(包括\0也会拷贝到dest),不检查目标缓冲区长度。(实际内存是a b c \0),strcpy会拷贝a、b、c、\0共 4 个字节。memcpy以指定长度n为终止条件,不管内存中是否有\0,都会严格拷贝n个字节,是 “无脑” 的内存块拷贝。只会拷贝 3 个字节,哪怕src中间有\0或末尾无\0。

2025-12-21 16:19:29 297

原创 32 RTC实时时钟-独立定时器

RTC简介RTC(Real Time Clock,实时时钟),是一个掉电后仍然可以继续运行的独立定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期。RTC还包含用于管理低功耗模式的自动唤醒单元。RTC和TIM对比应用场景时间戳记录:记录传感器采集数据的时间(如温湿度采集、故障报警时间);定时唤醒:低功耗设备周期性唤醒(如每 10 分钟采集一次数据,其余时间休眠);闹钟提醒:工业设备的定时任务(如定时开关机、定时上报数据)

2025-12-18 17:20:41 729

原创 32 备份寄存器(BKP)

1.1寄存器介绍BKP(backup register,备份寄存器)。备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。此外,BKP控制寄存器用来管理侵入检测和RTC校准功能。初始化相关复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。

2025-12-18 13:51:29 243

原创 32 低功耗模式(睡眠 停机 待机 )

在实际嵌入式开发过程中,我们会去考虑我们设计出来的产品的实际工作时间,例如桥梁探测系统,智能穿戴设备,我们希望在满足用户前提下尽可能地减少用户充电次数,所以引出今日沟通的主题:低功耗模式。比如桥梁探测设备,在冬季不下雨的时候,设备就可以进入休眠模式,实时探测数据的时间间隔可以适当拉长。接下来我们一起来了解下三种模式。1 睡眠模式/*** 需求 : 测试STM32芯片进入低功耗 - 睡眠模式*//*** 睡眠模式*/// 立即进入睡眠// 所有中断程序处理完后再进入睡眠__wfi();

2025-12-15 21:20:27 999

原创 32 LCD显示(FSMC应用)-寄存器

RGB : 三原色(Red Green Blue) 在计算机中用16位进行表示 (5+ 6 +5)控制主体的区别RGB 模式:也叫 RGB 接口模式,这种模式下,LCD 屏幕的显示时序(比如像素时钟、行同步、场同步等)是由外部的控制器来提供的,在 STM32 开发里,这个外部控制器一般就是 STM32 的 FMC(灵活存储控制器)或者专门的 LCD 控制器外设,屏幕只负责按照接收到的时序和数据来完成显示,自身不产生时序信号。MCU 模式。

2025-12-12 22:38:22 916

原创 常见问题整理总结

答:答:SPII²CUSARTSPII²CUSART

2025-12-11 16:42:04 694

原创 32 FSMC

如图,这是一张系统架构图,数据传输过程中,会从存储器到存储器,外设到存储器,但是实际过程中芯片内部的RAM容量无法满足需求,所以会使用外设的RAM。并且如游戏有分辨率要求(正常流畅的分辨率30-60hz 高清电影达到144HZ)若分辨率高,则数据传输的速度也会快,所以此时引进了,FSMC(Flexible Static Memory Controller,灵活的静态存储器控制器),STM32可以通过。

2025-12-10 21:17:10 1226

原创 32 DMA实现ROM与RAM通信

一般数据较多的时候可以使用DMA进行高速传输,数据较少的时候可以使用CPU,因此处要学习DMA,所以代码均和DMA相关。2、具体函数分析:此次函数进行了优化,防止数据尚未传输完就开始了读数据操作。* DMA中存储到存储的功能是后加,最开始是没有,只有外设到存储。// 将ROM当成外设(P),将RAM当成存储(M)* 再存储到存储场合下,可以将任何一个存储作为外设使用。// 3. 配置外设(DMA:寄存器)

2025-12-09 21:17:44 749

原创 32 SPI之硬件电路读写FLASH

STM32 的 SPI 外设可用作通讯的主机及从机,支持最高的 SCK 时钟频率为 fpclk/2 (STM32F103 型号的芯片默认fpclk1为36MHz,fpclk2为72MHz。),完全支持 SPI 协议的 4 种模式,数据帧长度可设置为 8 位或 16 位,可设置数据 MSB 先行或 LSB 先行。STM32F103系列提供了3个SPI,SPI1挂在APB2总线,SPI2/3挂在APB1总线。引脚的配置模式也需要进行调整。相关FLASH文件直接粘贴过来,相应的函数换成HAL库有的函数,

2025-12-09 20:46:16 251

原创 32 软件模拟实现SPI通讯

中文简称 串行外围设备接口:高速,全双工,同步,串行,主从模式USART是点对点模式(一个usart模块) 3个USART 2个UARTSTM32(如 STM32F103/STM32F407)通常集成多个 USART/UART 模块(比如 USART1、USART2、USART3 + UART4、UART5),

2025-12-09 19:52:54 988

原创 32 案例独立多通道DMA传输-测量可变电阻的电压

2 配置Analog(模拟) 涉及两个通道:通道10(PC0)、通道12(PC2),对应的连续、扫描,通道按照需求进行配置。,原因:14*(1/12)us=1.2us,平均1us触发一次中断,转换速度太快,一直执行中断,没有办法执行主函数。PC2对应的是12通道,使用杜邦线连接到电源或地,测试他们的电压。printf("通道10的电压值:%.2lf V, 通道12的电压值:%.2lf V",当多个通道同时采集时,一般就需要使用DMA来传输数据,否则数据如果来不及取出,则会导致数据被覆盖。

2025-12-08 21:20:58 1371

原创 32 知识点 ADC(模数转换)

STM32的ADC(属于外设)ADC= Analog-to-Digital Converter 模拟数字转换器STM32F103系列提供了3个ADC,精度为12位,每个ADC最多有16个通道和2个内部信号源。STM32F103的ADC是一种逐次逼近型模拟数字转换器。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz。

2025-12-08 21:05:58 1035

原创 51温度传感器测试温度

1-Wire规定,每次通信主设备都要先发送一个复位脉冲,从设备接收到该脉冲后,会进行复位(例如:从低功耗状态恢复到正常通信状态),然后回复一个存在脉冲,主设备可根据该存在脉冲获知从设备的健康状态。接收到该命令后,18B20会读取其内部的温度传感元件,将测量到的温度值转换为数字信号,并存储在内部的暂存器中,以便后续读取。该命令会返回暂存器中的全部数据,共9个字节,温度值保存在前两个字节,所以一般情况下,只需接收前两个字节即可。// 从设备会等待15-60us,确保DQ恢复到高电平,然后将DQ拉低回应主设备。

2025-12-05 16:00:47 903

原创 32 DMA初步学习

1 DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道)2 直接存储器存取(Direct Memory Access,DMA),用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输(最早只有外设和存储器)3 DMA控制器和Cortex™-M3核心共享系统数据总线,执行直接存储器数据传输。DMA优先级更高,DMA可以比喻为高速,CPU可以类比为国道。4 DMA2只存在于大容量产品和互联型产品中。

2025-12-05 15:59:54 1163

原创 32 高级定时器实现有限个PWM方波

得出结论:灭了说明停止发送PWM方波,没灭证明一直发,查相关寄存器发现有个影子寄存器,IDLE State 默认是0 亮 reset 空闲状态,那么给他置位成set 1,则亮五下后灯一直亮问题解决。以下为定时器框图,相比于通用定时器讲,增加了重复次数计数器(分频),极性信号(刹车输入信号),互补输出(一共7个引脚,不算刹车信号的引脚)左图为通用定时器,右图为高级定时器明显能看出区别为计数器溢出时是直接触发中断(通用),还是没触发一次中断重复寄存器的值减一(高级)。// 输出模式:PWM (110)

2025-12-04 09:31:02 636

原创 32通过基本定时器及系统定时器实现LED灯亮灭-reg方式

分析:通过初始化函数可以实现LED的同频亮灭(系统定时器通过重装载计时器,基本定时器通过psc预分频寄存器和重装载寄存器),但是无法实现同时亮灭,由此引出重装载寄存器有影子寄存器相关知识。!问题:效果为交叉闪烁,而不是同时闪烁。

2025-12-04 09:30:20 1281

原创 32 通用定时器之LCD_BG实现呼吸灯-拓展

已经通过TIM5-LED(PA1)-通道1实现了呼吸灯的效果,我们借用其他通道(引脚)同样也能实现呼吸灯的效果。利用PB0引脚和通道TIM3_CH3和通用定时器TIM3实现呼吸灯的效果。(基于硬件设计)

2025-12-03 11:06:05 438

原创 32 通用定时器测量PWM方波信号的周期和频率及占空比

需求分析:计算占空比需要有上升沿和下降沿,实际情况中,频繁切换寄存器的状态比较麻烦,根据硬件设计,我们打算使用另一个通道计算下降沿,两个通道的对应值相减可以得出高电平所占的事件。通过捕获寄存器,捕获两次上升沿/下降沿之间的时间差,就可以求出周期以及频率。2. 测量频率和周期的范围,为了计算方便,测量时,计数单位为1us,所以此时能测量的频率不能低于15.25Hz(约等于16Hz)1. 计算信号频率和周期时,会出现寄存器的值超出范围,获取时间差值会为负数,为了解决这个问题,可以转换数据后再做差值。

2025-12-03 08:34:57 667

原创 32 通用定时器-PWM信号实现呼吸灯

(1)TIM_CCMR 捕获/比较模式寄存器1:13.2配置工作模式3.3配置CCR2 CCR2包含了装入当前捕获/比较2寄存器的值(3) TIM_CCER 捕获/比较使能寄存器:3.4开启通道。

2025-12-02 14:39:49 856

原创 32 定时器总结1

plaintext指令周期 ≥ 机器周期 ≥ 时钟周期时钟周期是基础,决定了 CPU 的最小时间粒度;机器周期是 CPU 完成单次基本操作的时间,由多个时钟周期组成;指令周期是执行一条指令的总耗时,由多个机器周期组成。举例:若某 CPU 的时钟周期为 1ns,1 个机器周期 = 4 个时钟周期(4ns),执行一条加法指令需要 3 个机器周期,则这条指令的指令周期 = 3×4ns=12ns。

2025-12-02 10:02:30 862

原创 32基本定时器实现LED灯闪烁-hal库模式

1 配置SYS2 配置RCC3 配置GPIO(LED_BLUE对应PA1,所以配置PA1为输出引脚)4 配置TIM6:配置具体的PSC、重装载值、是否需要进行缓冲。

2025-11-28 19:38:28 170

原创 32体系结构学习总结

在主程序运行过程中,出现了特定事件,使得CPU暂停当前正在运行的程序,转而去处理这个事件,等这个事件处理完成之后,CPU再回到刚才被打断的位置继续处理,这就是。NVIC用4个位来控制优先级,值小的优先级高。NVIC对优先级分了5组,在程序中先对中断进行分组,而且分组。中断源可以是外部的,也可以是内部的。,若多次分,只有最后一次生效。4位 取值范围:0-15。3位 取值范围:0-7。1位 取值范围:0-1。2位 取值范围:0-3。2位 取值范围:0-3。1位 取值范围:0-1。3位 取值范围:0-7。

2025-11-28 19:26:45 249

原创 32 系统嘀嗒计时器通过中断实现LED灯亮灭-HAL方式

(1)查看HAL库根据配置自动生成的函数(嘀嗒定时器作为当前HAL库的时间基础,所以配置已经由HAL自动完成)本文旨在通过HAL库方式,快捷简便的实现led灯效果的亮灭,并且增加了对HAL库的理解和使用。1 首先我们先进行HAL库的配置:通过界面化处理的方式更加的便捷。(4)配置下GPIO引脚,目前是靠中断点亮PA1(蓝色引脚)(5)配置下存储位置以及存储格式(以前文章中有详细介绍)(1)选择好对应的芯片,配置好时基和通讯方式。(3)查看下NVIC系统嘀嗒定时器默认为已勾选。(2)写中断处理函数代码。

2025-11-27 11:17:07 361

原创 32 基本定时器TIM6/7-reg寄存器实现

1 和系统嘀嗒计时器相比,基本计时器多了一个PSC分频功能(两个16bit的寄存器),一个16位bit无法满足分频效果,2^16范围是0~65535,若时钟源默认是72MHz,输出信号频率为2Hz,那么中间重装载*预分频 = 36 000 000,仅仅只有一个16bit寄存器或者是系统嘀嗒寄存器24bit,无法实现效果。(2)自动重装载寄存器,ADD(Auto Reload Register),设置好每次重装载的数值是多少,当计数器倒计时到0的时候,从重装载寄存器中直接获得好重装载的值。

2025-11-27 10:10:26 734

原创 32系统嘀嗒定时器-中断模式-reg模式

时间长度通常由单位和数值进行判断,周期=1/频率,32芯片中最大位72MHZ。计时器结束后有可能由两种方式进行触发,第一种是手动触发中断(需要手动进行复位),第二种是由事件进行触发(寄存器内部进行实现)。需求:1s内实现LED灯的亮灭:500ms亮/灭 也就是1s内实现了2次灯的状态切换:2HZ,根据如下图AHB最大是72MHz,最终输出结果是2Hz,中间的过程是36Hz,由于寄存器为重装载寄存器位24bit放不下,所以我们决定重装载值为72000,在循环500次。// 3.1配置重装载寄存器。

2025-11-26 21:12:23 611

原创 32 IIC使用(软件模拟)

/ 如果发送的是ACK,主设备会将SDA拉低进行发送,发送完成后,接下来从设备需要控制SDA发送下个的字节的数据 ack发1从设备可以继续发数据,需要释放设备,nack就是0 再也不需要从设备发数据了。发ack或nack 1)SDA、 SCL拉低 2)发ack或nack 3)SCL拉高 4)SCL拉低 5)释放SDA。收ack或nack 1)SDA拉高 2)SCL拉低 3)SCL拉高 4)读取SDA 5)拉低SCL。结束信号 1)SDA拉低 SCL拉高 2)SDA拉高。

2025-11-24 19:42:32 656

原创 32 HAL库方式实现按键切换灯的状态

先引用led.h库,然后根据引脚的状态去判断时那个中断,根据上升沿还是下降沿(不同灯寄存器实现的原理不同),抬起/按下对应的按键,对应的灯切换状态。2.配置Keil中的代码,将已经建好的Hardware\LED代码,整体粘贴到上述生成代码的文件夹中,然后在keil中进行管理。__weak 函数弱实现 , 去掉__weak,函数就是强实现,未来调用函数的时候, 会调用强实现的函数。(1)LED中的代码需要实现切换灯效果的作用,HAL库为我们提供了现成的函数可以进行使用。// 延迟,跳过抖动。

2025-11-22 17:27:37 264

原创 32学习利用中断函数实现灯亮灭效果-stm32f10x

需求分析:如上图,若想通过开关实现led灯的亮灭,通过外界输入改变灯的引脚状态,那么我们可以推出工作模式为输入模式。(3)// AFIO 16根线 PF10属于AFIO_EXTICR3 使用前先打开时钟 0101是PF引脚。// 判断按键是否被按下 与上一个按下是1的操作 //上升沿直接判断 下降沿要判断是否等于0。(4)// EXTI // 检测上升沿寄存器 pf10。(5) // 请求挂起寄存器 暂不处理 在中断中处理。(7)// 启用中断。(8)// 中断函数。

2025-11-19 21:00:42 361

原创 32中 SysTick 嘀嗒函数的应用

需要了解下嘀嗒函数的寄存器,此次应用LOAD以及CTRL寄存器,以下为寄存器图。本次实现LED闪烁以及LED往返灯、流水灯的效果。首先是SysTick嘀嗒函数的代码。以下为LED中实现led效果的函数。如此main函数中调用即可实现效果。此次函数实现了嘀嗒函数的延时功能。

2025-11-19 17:19:46 130

原创 HAL使用

9 现在开始调整Keil,我们的需求是外设的led灯通过HAL软件实现亮灯操作,流水灯操作,往返灯操作。10 对Keil软件中管理文件,将该新添加文件调整下,保证可以让其他文件可以访问到,以及调整好,保证文件可以正常编译。1 先将HAL相关软件下载好(需要有JAVA8以上jdk,若不清楚可以去cmd中输入Java -version)6将对应程序中要进行操作的GPIO引脚各参数进行调整,在右侧的引脚调整成输出引脚。11 这样 前期的导入工作就导入完成了,可以去vscode中完成代码操作了。

2025-11-18 21:16:35 198

原创 STM32 每日学习总结

输入:浮空输入(外部电路提供电平状态)、上拉输入(1变0产生下降沿可以用到)、下拉输入(0变1产生上升沿可以用到)、模拟输入(I/O输入原封不动给到片上外设)GPIO 一共144个引脚,STM32F103ZET6共有7组GPIO端口,GPIOx(x从A-G),例:PA引脚作为ODR使用时,作为通用模式。通用模式和复用模式的区别是通用的数据来自于寄存器,复用模式来自于片上外设。开漏输入:引脚只能实现0,1是需要上拉电阻实现的,芯片内部无法实现。输出:通用推免输入、复用推免输入、通用开楼输入、复用开漏输入。

2025-11-18 21:02:09 190

原创 多媒体基础参数

媒体感觉媒体,表示媒体(图像编码),表现媒体(信息的输入输出媒体),存储媒体,传输媒体我们说的媒体为表示媒体和存储媒体。多媒体的特征:多样性,集成性,交互性,非线性,实时性。多媒体多媒体的概念:多种媒体的综合,一般包括图像,声音和视频等形式或者他们的组合。可以通过基础参数衡量多媒体文件的好坏。多媒体的分类:(1)感觉媒体:直接用于人的感觉器官,使人产生直接感觉的媒体。如:声音、图形、图像、动画等。(2)表示媒体:传输感觉媒体的中介媒体,用于数据交换的编码。如文本编码、图像编码和

2022-02-12 21:22:20 733

原创 数据的校验

数据在传输的过程中,会受到各种干扰的影响,如脉冲干扰,随机噪声干扰和人为干扰等,这会使数据产生差错。为了能够控制传输过程的差错,通信系统必须采用有效的检错方案。因此产生了数据校验。数据校验是为保证数据的完整性进行的一种验证操作。通常用一种指定的算法对原始数据计算出的一个校验值,接收方用同样的算法计算一次校验值,如果两次计算得到的检验值相同,则说明数据是完整的。一、奇偶校验1. 定义根据被传输的一组二进制代码中“1”的个数是奇数或偶数来进行校验。使用:通常专门设置一个奇偶校验位,存放代码中

2021-12-11 16:22:37 2184

原创 计算机基础知识-信息单位

信息存储:在计算机内部,信息都是釆用二进制的形式存储、运算、处理和传输的。信息的存储和 传输是以位(Bit)、字节(Byte)、千字节(Kilo Byte)、兆字节(Mega Byte)等计量标准为单位的。单位定义: 存储单位:存储在计算机硬盘或内存中的信息容量标准,最小计量单位是“位”(Bit, 比特),一个 Bit 位表示一个二进制的 0 或 1 在计算机中所占用的存储空间。 传输单位:计算机网络中称为带宽,宽带传输速率的单位为 bps,bps 表示每秒钟传输多少 Bit 位信息...

2021-12-06 20:03:50 2964

原创 进制转换(二进制,八进制,十进制,十六进制)

进制转换(超详细!!)

2021-11-22 11:51:22 6588

空空如也

空空如也

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

TA关注的人

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