- 博客(35)
- 收藏
- 关注
原创 【STM32】最后一刷-江科大Flash闪存-学习笔记
最详细的FLASH闪存使用方法。其实就是,在主函数对SRAM数组Store_Data进行修改,然后在放到闪存,防止SRAM掉电丢失,然后在上电初始化的时候在把闪存的数据再读取到SRAMStore_Data数组,实现SRAM掉电不丢失
2025-03-31 17:50:23
954
原创 【STM32】WDG看门狗(学习笔记)
WDG(Watchdog)看门狗看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号STM32内置两个看门狗独立看门狗(IWDG):独立工作,对时间精度要求较低窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用。
2025-03-29 20:36:47
1190
原创 【江协科技STM32】PWR电源控制(学习笔记)
第三点注意: 我们的程序默认在SystemInit函数里的配置的是使用HSE外部高速时钟,通过PLL倍频得到72MHz的主频,但是进入停止模式之后,PLL和HSE都停止了,而且在退出停止模式时,他并不会再自动帮我们开启PLL和HSE,而是默认用HSI的8MHz,直接作为主频。这是一个问题,所以我们一般再停止模式唤醒后,第一时间就是重新开启HSE,配置为72MHz的主频。停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。
2025-03-28 11:14:47
1309
原创 【江协科技STM32】读写备份寄存器&RTC实时时钟(学习笔记)
接下来还要写两个函数,一个是设置时间,一个是读取时间。void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data)//将用户数据写入指定的数据备份寄存器。void RTC_WaitForSynchro(void)//等待RTC寄存器(RTC_CNT, RTC_ALR和RTC_PRL),设置RSF标志1。uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR)//从指定的数据备份寄存器读取数据。
2025-03-26 21:38:55
1434
原创 【江协科技STM32】BKP备寄存器&RTC实时时钟(学习笔记)
BKP(Backup Registers)备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。但是如果VDD电源断开,VBAT也没有电,那就数据清零。因为BKP本质上时RAM存储器,没有掉电不丢失的能力。TAMPER引脚产生的侵入事件将所有备份寄存器内容清除RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲存储RTC时钟校准寄存器。
2025-03-25 17:07:13
1111
原创 【STM32】SPI通信外设&硬件SPI读写W25Q64
STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担可配置8位/16位数据帧、高位先行/低位先行(标黑常用)时钟频率: fPCLK / (2, 4, 8, 16, 32, 64, 128, 256),就是SCK,一般体现的是传输速度,单位为Hz或者bit/s,最大进行2分频,72M/2=36MHz,I2C最大400kHz,SPI最大频率比I2C大90倍,SPI1时钟频率比SPI2大一倍支持多主机模型、主或从操作可精简为半双工/单工通信。
2025-03-23 23:54:03
1061
原创 【STM32】I²CC通信外设&硬件I²CC读写MPU6050(学习笔记)
用通俗语言做笔记,让我们都理解I2C的时序流程,库函数用法。简单明了说的就是这里。
2025-03-20 19:37:06
1365
原创 【STM32】I2C通信协议&MPU6050芯片-学习笔记
MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景测量X、Y、Z轴的加速度测量X、Y、Z轴的角速度加速度计具有静态稳定性,不具有动态稳定性。陀螺仪具有动态稳定性,不具有静态稳定性。两种传感器特性刚好互补,取长补短,进行互补滤波,就能融合得到静态和动态都稳定的姿态角了辅助理解辅助理解。
2025-03-17 21:42:09
1096
原创 【STM32】USART串口收发HEX数据包&收发文本数据包
如果连续发送数据包,程序处理不及时,可能导致数据包错位,所以要修改一下程序,等每次处理完成之后再接收下一个数据包。和extern uint8_t Serial_RxFlag;①修改中断函数,在中断这里只有Serial_RxFlag ==0了,才会继续接收下一个数据包,这样写数据和读数据完全严格分开,不会同时进行。程序只写接收部分,因为发送的话,不方便像HEX数组一样一个个更改, 所以发送直接在主函数调用Send_String函数或者printf。有关数据包的收发,其实还是有着非常多的问题需要考虑的。
2025-03-15 21:09:20
1487
原创 【江协科技STM32】串口发送&串口发送+接收(学习笔记)
1、本章记录串口发送和接收数据的核心代码、函数解释、模块函数封装、printf函数移植(较难)等等2、使用查询法和中断对串口数据进行发送和接收
2025-03-14 21:44:50
871
原创 【STM32】USART串口协议&串口外设-学习笔记
本文详细接收串口协议与串口外设的各部分重点知识,包括串口通信的类型及区别等等,以及串口框图和基本结构的解释、数据帧数据采样及波特率发生器基本计算等等
2025-03-14 11:57:52
2587
原创 【STM32F103C8T6】DMA数据转运&ADC多通道
DMA转运三个条件: ①传输计数器大于0②触发源有触发信号③DMA使能 三个条件缺一不可
2025-03-11 21:58:46
1528
原创 【江协科技STM32】DMA直接存储器存储-学习笔记
DMA(Direct Memory Access)直接存储器存取(直接访问STM32内部存储器,包括运行内存SRAM、程序存储器Flash、寄存器等等DMA可以提供外设(一般外设寄存器DR、Data register)和存储器(运行内存SRAM、程序存储器Flash,是存储变量数组和程序代码的地方)或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道)每个通道都支持软件触发(存储器到存储器用。
2025-03-10 17:58:23
1299
原创 【STM32】ADC功能-单通道&多通道(学习笔记)
①RCC开启时钟,包括ADC和GPIO的时钟,另外ADCCLK的分频器也要配置②配置GPIO,,把需要用的GPIO配置成模拟输入模式(GPIO_Mode_AIN模式下GPIO无效,即断开GPIO,防止GPIO输入输出对我模拟电压造成干扰),所以AIN模式就是ADC专属模式 ③配置多路开关,把左边通道接入到右边的规则组列表里④配置ADC转换器(初始化ADC),一个结构体可以配置完ADC转换器和AD数据寄存器⑤开关控制,调用ADC_Cmd()函数,开启ADC
2025-03-09 17:21:05
1454
原创 【江协科技STM32】ADC数模转换器-学习笔记
拓展知识: 对应看图按序号理解 来源RCC时钟树 对应ADC1、ADC2,10个外部输入通道引脚定义表 单次转换,非扫描模式 连续转换,非扫描模式 单次转换,扫描模式 连续转换,扫描模式 触发控制:对应ADC框图EXTXEL开始触发(规则组)位置这里的ADC是12位的,它的转换结果就是一位12位的数据,但是这个数据寄存器是16位的,所以就存在一个数据对齐的问题。这里一般使用数据右对齐方式,这样读取16位寄存器直接就是转换结构。如果选择数据左对齐,直接读取得到的数据会比实际数据大。因为数据左对齐实际就是把数
2025-03-08 19:52:44
2190
原创 【江协科技STM32】TIM编码器接口测速(学习笔记)
Encoder Interface 编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和通道2旋转编码器简介可参考下面这篇文章旋转编码器部分,里面也涉及到正交波形介绍[STM32] 江科大-EXTI外部中断(学习笔记-上)_江科大stm32中断笔记-优快云博客。
2025-03-07 20:03:26
1337
原创 【江科大STM32】TIM输入捕获模式&PWMI模式测频率
然后在这个PWM模块代码进行改进,目前这个代码逻辑是,初始化TIM2的通道1,产生一个PWM的波形,输出引脚是PA0,然后通过Set_Compare函数,可以调节CCR1的寄存器的值,从而控制PWM的占空比,但是目前这个PWM频率是在初始化已经写好的了,是固定的,操作起来不太方便。虽然两个都是计次的东西,但是滤波器计次,并不会改变信号的原有频率,一般滤波器的采样频率都会远高于信号频率,所以它只会滤除高频噪声,使信号更加平滑,1KHz滤波之后仍然是1KHz,信号频率不会发生变化。
2025-03-06 19:43:53
1217
原创 【STM32】TIM输入捕获-学习笔记
IC(Input Capture)输入捕获输入捕获模式下,当通道输入引脚出现指定电平跳变时(高低电平变化),当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模式,同时测量频率和占空比可配合主从触发模式,实现硬件全自动测量输入捕获和输出比较的4通道:4个输入捕获和输出比较通道共用4个CCR寄存器,它们的CH1~CH4四个通道引脚也是共用的。
2025-03-04 17:14:18
1233
原创 【江科大STM32】TIM输出比较-PWM功能(学习笔记)
①RCC开启时钟(把要用的TIM外设和GPIO外设时钟都打开)② 配置时基单元,包括前面的时钟源选择③配置输出比较单元,里面包括CCR的值,输出比较模式,极性选择,输出使能这些参数④配置GPIO,把PWM对应的GPIO口,初始化为复用推挽输出模式⑤ 运行控制,启动计数器TIM函数之前有部分介绍过了,具体参考这篇文章 [江科大STM32]TIM定时器中断(学习笔记)下-优快云博客 重要函数需要掌握: 不常用了解即可: 使用方法:需要初始化哪个通道,就调用哪个函数,不同的通道对应的G
2025-02-28 21:43:20
1281
1
原创 【江科大STM32】TIM输出比较(学习笔记)
PWM(Pulse Width Modulation)脉冲宽度调制,也是数字输出信号,高低电平组成在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域PWM参数:频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距PWM的频率越快,它的等效模拟信号就越平稳。不过同时性能开销就越大,一般来说,PWM的频率在几k到几十KHz,这个频率就足够快了。
2025-02-25 20:31:34
1331
1
原创 [江科大STM32]TIM定时器中断(学习笔记)下
①RCC开启时钟(打开后定时器的基准时钟和外设的工作时钟都会打开) ②选择时基单元的时钟源(对于定时中断就选择内部时钟源) ③配置时基单元 ④配置输出中断控制,允许更新中断输出NVIC⑤配置NVIC,在NVIC打开定时器中断通道,并分配一个优先级 配置NVIC可参考{STM32} 江科大学习笔记-EXTI外部中断(下)_江科大stm32笔记exti-优快云博客⑥使能运行控制,打开计数器
2025-02-21 18:04:34
1341
原创 [江科大STM32]-TIM定时器中断(学习笔记)上
TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位,在72MHz计数时钟下可以实现最大59.65s的定时预分频器:可以对计数器的时钟进行分频,让计数更加灵活不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能根据复杂度和应用场景分为了高级定时器、、基本定时器三种类型。
2025-02-18 17:59:44
1571
原创 {STM32} 江科大学习笔记-EXTI外部中断(下)
参数说明EXTI_Line指定要启用或禁用的EXTI行EXTI_Mode指定EXTI行的模式。指定EXTI线的触发信号活动边。指定所选EXTI行的新状态。可设置为“ENABLE”或“DISABLE”EXTI_Line配置EXTI_Mode配置EXTI_Trigger配置具体配置//将EXTI的第十五个线路配置成中断模式,下降沿触发,开启中断//开启中断//中断模式//下降沿触发配置优先级分组:抢占优先级和子优先级。参数说明优先级分组位长度。
2025-02-15 17:23:29
1067
原创 [STM32] 江科大-EXTI外部中断(学习笔记-上)
EXTI(Extern Interrupt)外部中断EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序支持的触发方式:上升沿/下降沿/双边沿/软件触发支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断。
2025-02-14 21:54:05
1321
原创 STM32F103-按键控制LED&光敏传感器控制蜂鸣器(笔记)
名称区别宏定义(范围更宽)①新名字在左边②后面不需要分号③任何名字都可以换typedef(更安全)①新名字在右边②后面必须加分号③只能专门给变量类型换名字。
2025-02-12 00:51:28
851
原创 江科大STM32-GPIO输出 点亮LED,LED闪烁,LED流水灯,蜂鸣器(学习笔记)
操作STM32的GPIO需要三个步骤,总共涉及了RCC和GPIO两个外设 ,下图圈出来的函数为最常用的函数。
2025-02-09 23:34:32
1147
1
原创 【“Old ST - LINK firmware detected. Do you want to upgrade it?】是否需要升级旧版ST-LINK固件
如果遇到诸如“Old ST-LINK firmware version”或“command not supported”的错误提示,则表明当前使用的ST-Link固件版本较旧,存在不兼容的情况。为了确保ST-Link能够被Keil等开发环境正确识别并正常使用其全部功能,建议及时更新至最新版本的固件,比如V4.6.0版本,这有助于提高工具性能和稳定性,同时修复已知问题。
2025-01-22 11:54:18
674
原创 打开Keil5出现Loading PDSC Debug Description failed 错误
这是因为在使用 Keil 软件进行与 STM32F103C8 芯片相关的开发时,加载 PDSC(可能是某种用于调试描述的文件格式)调试描述失败的问题。并且提示中提到 “Disabling usage of PDSC Debug Description. See Build Output for details.”,即已禁用 PDSC 调试描述的使用,可查看构建输出获取详细信息。
2025-01-22 11:22:49
1775
原创 Kile5报错—>Target ‘Target 1‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available
出现这个报错'Target l' uses ARM-Compiler 'Default Compiler Version 5' which is not available.是因为使用的 ARM 编译器“ Use Default Compiler Version 5”不可用,这是因为最新版本Keil5不再自动提供编译器(旧版本是自动安装编译器的),这时需直接手动安装v5.06编译器。
2025-01-21 23:22:58
2640
2
原创 STM32新建工程模板(超详细版教程)
首先,先创建一个存放工程文件的文件夹,在D,E,F盘或者桌面都可以,看个人方便打开Keil5软件选择Project—>NewuVisionProject然后选择刚刚我们新建的文件夹,在新建文件夹里面再建一个文件夹用来存放本次工程。建好点进去,为工程起一个通用名。(可按个人喜好命名)点击保存工程,接下来就是选择芯片型号,我们的芯片型号是STM32F103C8T6。点击OK,弹出来的是新建工程小助手,这个可以帮助我们快速新建工程,我们暂时用不到这个,直接选择叉掉。
2025-01-20 11:27:11
1498
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人