自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Z20K118库中寄存器及其库函数封装-FLASH库

前6个判断FLASH主空间(存储程序或数据)的整体、块、扇区、页、字段、MIRC是否擦除,后4个判断FLASH的IFR空间(存储参数)的扇区、页、字段、MIRC是否擦除,最后几个函数为写入值和擦除。1个设置读后等次数,1个LDO电压低时低速运行请求 ,1个强制产生ECC错误使DFDIF标志位置1产生中断,用于验证该中断功能。中止命令写入序列,1个。2个中断使能(ECC错误中断和命令完成中断),还有一个标志位域,当debug产生全擦除命令时该位置1,该标志位域无封装函数。9个,即9种状态标志位。

2025-08-11 15:53:42 759

原创 Z20K118库中寄存器及其库函数封装-SRMC库

本库主要分为3大模块。1.复位。复位无需使能,因此本章节的复位相关配置主要是引脚滤波和读取复位源、复位前中断。2.主要是电源模式选择。3.主要是唤醒源的配置。MCU的复位通常分为系统复位和子系统复位,安全域复位,双核同步复位。本手册中讨论的复位默认都是系统复位(包含其复位源介绍)和MCU Reset的特殊模块复位,如Chapter 16:Reset and Boot。同时本章也仅讨论系统复位和MCU Reset的特殊模块复位,其他复位参考单独的对应章节(如外设复位单独参考PARCC)。

2025-08-11 11:05:51 999

原创 Z20K118库中寄存器及其库函数封装-REGFILE库

regfile模块没有专门的模块章节,该模块位于CPU内核内部,由通用寄存器(如ARM的R0-R12)和特殊寄存器(如SP、LR、PC等)组成。其具体的参考资料位于处理器架构手册中(如《ARMv7-M Architecture Reference Manual》)。使用时依旧需要按照PARCC使能外设时钟一样使能其时钟(即有专门的PARCC模块)。所有操作其他寄存器的指令都隐含了对regfile的访问。下方的封装函数实际上是通过内存映射寄存器间接操作regfile的技术。

2025-08-10 14:09:24 377

原创 Z20K118库中寄存器及其库函数封装-PMU库

为了快速唤醒和保存各种数据,低功耗模式主要是关闭各个模块的时钟以降低功耗,而主要关闭的是CPU时钟和外设时钟,(FLASH和RAM时钟可能比较重要不能关闭),1.Wait关闭CPU主体时钟,而不包含CPU中断部分(NVIC、WIC、特定中断)。当退出掉电模式时(如待机模式),硬件会自动将该位置1,此时IO引脚会与 ADC/CMP/ATB模块进行隔离,目的是防止引脚唤醒瞬时电压/电流冲击损坏敏感模拟电路,掉电模式退出后需在该位写入1后该位自动置0以清除隔离状态。12个位域,分成3个配置模块和1个状态位模块。

2025-08-10 13:32:41 359

原创 Z20K118库中寄存器及其库函数封装-HWDIV库

启动模式有两种:快速启动或普通启动。启动模式由CSR的DFS位快速启动本寄存器无用,快速启动为默认设置,写完DSOR除数后硬件自动开始计算,若为普通启动则该寄存器的唯一位域STRT置1才能开始计算。配置DZE位,当除数为0时:DZE位配置为0,RES和REM输出0;DZE位配置为1,产生错误中断。判断忙后,再判断结果寄存器里是否为除法结果,再判断除数是否为零错误,结果正常则读取结果寄存器。/有符号模式,然后对应寄存器写入被除数和除数即可。内部仅判断BUSY位,若空闲就说明初始化成功,无操作。

2025-08-08 14:42:34 343

原创 Z20K118库中寄存器及其库函数封装-DMA库

停止位和调试模式都能完成当前通道的转运,区别在于停止位不再产生新的通道,而调试模式可产生新通道但不执行。1个寄存器9个位域,1个通道占3个位域,实现3种功能:1. 设定固定优先级等级。1个停止位,可由软件或硬件配置,置1时DMA会执行完当前通道后停止DMA转运并不再产生新的通道。1个忙碌位,判断DMA是否空闲,其他3个配置位域,参考2-1。2个,1个为1次主循环包含的次循环总个数(一个次循环代表一次需求处理) ,另一个为剩余个数,剩余个数只读。1个配置外设DMA请求和通道的连接,另1个是配置完成后的使能。

2025-08-07 10:26:39 1012

原创 Z20K118库中寄存器及其库函数封装-CRC库

CRC校验逻辑:1:通信双方约定除数Z。2.封装原始的发送数据(A)。根据Z的位数-1得到CRC码位数,以初始值0000加在A的末尾,封装成A0。3.将A0二模除Z,得到的余数C即为CRC校验码。4.将C与A0求和得到AC。5.接收方得到AC后,将AC二模除Z,余数为0则代表数据无误。总结:1.A+0000=A0。3.接收AC%Z得余数0即可。二模运算:二模运算跟普通运算相同,包含加减乘除。但二模运算不考虑进位和借位,因此加法和减法的值相同且与异或值相同。

2025-08-07 09:49:06 786

原创 Z20K118库中寄存器及其库函数封装-CLOCK库

先根据参数1配置引脚的时钟输出源,7种时钟输出源。进行10w次计数,每次计数根据4种时钟源分别读取PMU_LPO_32K_CFG/SCC_FIRCCS/ RTC_CSR/SCC_OSCCS的对应RDY位,若RDY位置1则跳出循环代表时钟就绪,计满则时钟就绪失败。4个位域表示4个参数的状态:1个系统时钟源,1个总线分频系数,1个内核分频系数,1个闪存(SLOW CLOCK)分频系数。4个位域表示4个参数的状态:1个系统时钟源,1个总线分频系数,1个内核分频系数,1个闪存(SLOW CLOCK)分频系数。

2025-08-05 17:54:23 964

原创 Z20K118库中寄存器及其库函数封装-ADC库

CFG1个:1.配置输出和比较器的比较并产生中断或DMA的方式(a.关闭比较器 b.低于CVL触发 c.高于CVL触发 d.等于CVL触发 e.在CVL和CVH之间触发 f.超出CVL和CVH触发) CV2个:CVL和CVH的值配置。FIFO水位状态、溢出状态、ADC完成转换中断、比较器中断、DMA请求中断、FIFO准备就绪、校验准备就绪、ADC空闲、ADC循环状态机返回空闲、ADC触发错误状态。分别为CVL和CVH的值, 即比较电压的低值和高值,输出电压与这些值比较满足配置的条件后产生中断或DMA请求。

2025-08-05 13:12:02 881

原创 Z20K118库中寄存器及其库函数封装-CMP库

再配置R2的2个输入源以及滞回值,3个。最后配置R1的5个位域:1.输出选择(滤波模块后输出/窗口模块后输出)2.停止模式使能 3.使能DMA请求 4.极性 5.输出到引脚。3个寄存器配置CMP的不同功能,R0共4位域,主要负责选择比较器和使能。R1共10个位域,主要负责模式选择以及模块的配置。使能位,参考电压选择位(VDDA/VREFH),最终输出值换算位DAC_SEL,换算情况如下图。2个,分别是上升沿中断/DMA请求使能和下降沿中断/DMA请求使能。输出选择(滤波模块后输出/窗口模块后输出)。

2025-08-05 09:07:34 275

原创 Z20K118库中寄存器及其库函数封装-TDG库

本5个,MOD1个。03.所有通道延迟输出完更新, 5计数清除模式:01.计满清除。特定通道的特定输出点使能和配置。本1个:1.使能对应输出点。包括该通道的中断延时、该通道所有输出点配置和使能(按顺序循环调用7-1)、通道自身使能。03.所有通道延迟延迟输出完更新。6个代表不同通道的延迟输出中断使能。特定通道的延迟输出中断屏蔽,即使能特定通道的延迟输出中断。获取特定通道的特定输出点的偏移值。1个寄存器的1个位域。失能特定通道的延迟输出中断。使能本通道的对应8个输出点。每个通道8个寄存器,各1个位域。

2025-08-04 14:57:28 756

原创 Z20K118库中寄存器及其库函数封装-EWDT库

EWDT_OUT_b功能:当CNT在窗口值内刷新或到溢出值之外未刷新时,或EWDT_IN使能并输入信号时,EWDT_OUT_b会发送信号到特定引脚。不可配置,固定输出。EWDT_IN功能:连接外部引脚,当该引脚输入信号时,控制EWDT_OUT_b输出信号。可配置。

2025-08-04 09:31:09 708

原创 Z20K118库中寄存器及其库函数封装-WDOG库

配置本寄存器6个位域,再配置TMO(单位域)和WIN(单位域)的各1个位域, 本寄存器:1.是否进入测试验证WDOG功能。经典while计数循环等待,每次计数判断本寄存器标志位CFGUF是否置1,置1跳出循环表示配置更新完成。1个位域,用于配置看门狗的窗口值。该位域有多种配置,可单独使能4字节的CNT和TMO的任意字节进行比较,也可以全部使能,用于测试各字节WDOG功能是否正常。参数虽然参数为2值枚举,但在本芯片的WDOG中只有一种中断,所以只有一种中断标志位,所以2个值都只能读取触发复位前中断。

2025-08-02 14:31:02 725

原创 Z20K118库中寄存器及其库函数封装-TMU库

每个输出通道(固定连接外设)独立拥有一个本寄存器。1个选择64种输入源,1个使能,一个锁定本寄存器。锁定寄存器只需1个LOCK位置1,而解锁寄存器需要对整个寄存器写入特定值。返回特定通道的本寄存器锁定状态。获取特定通道的触发源。为特定通道选择触发源。锁定特定通道的本寄存器。特定通道的TMU使能。解锁特定通道的本寄存器。

2025-08-02 11:30:54 214

原创 Z20K118库中寄存器及其库函数封装-SYSCTRL库

不同模块的PARCC位域不同,平均10个位域。通过输入的mod对PARCC的指针进行偏移,指向对应模块的PARCC寄存器, 模块=存储器+外设。即5-3.根据参数2在寄存器5批量判断哪些错误类型发生,在寄存器6中同时读取错误的位置和数据。根据参数2在寄存器5批量判断哪些错误类型发生,在寄存器6中同时读取错误的位置和数据。配置对应PCKMD为1使能模块时钟,再将PRSTB置高电平。配置对应PCKMD为2使能模块时钟,再将PRSTB置高电平。每4个配置运行内存的ECC的写使能、读使能、单位使能、多位使能。

2025-07-31 18:55:13 941

原创 Z20K118库中寄存器及其库函数封装-GPIO库

先读取所有中断标志位(IRQFLG),循环判断每个GPIO的标志位,若置1则执行回调函数中链接的用户编写的功能函数,若未链接功能函数则该GPIO下次无法产生中断标志位(PCRn寄存器的IRQC)也就是无法进入本函数,最后重新赋值所有中断标志位(用户可能在功能函数中修改了中断标志位)。当中断触发时,系统硬件会自动使MCU的执行指针从主函数的地址跳转到中断向量表的地址,本函数的位置通过启动文件链接到中断向量表指针所指向的地址,也就是硬件触发时自动执行本函数。1个位域,可配置端口任意GPIO的输出高或低电平。

2025-07-31 16:01:43 626

原创 FreeRTOS内核:03 裸机系统与多任务系统

轮询基础上加入中断,外部事件响应在中断完成,由于中断空间有限,外部事件处理则在轮询系统中完成。中断为前台,循环为后台。前后台系统的响应和处理分开,中断的即时响应使得事件不会丢失,但。多任务系统中程序主体分成独立任务,不需要精心设计程序执行流,不用考虑干扰,使得编程简单。,实时响应能力则不够。先初始化硬件,然后主程序在死循环里循环,顺序处理事件。多任务系统的事件响应在中断完成,事件处理在任务中完成,而任务具有优先级,只要优先级足够高则事件立即处理,实时性提高。3种系统无优劣,有各自领域,适合即为好。

2025-07-10 13:40:35 197

原创 FreeRTOS内核:02新建FreeRTOS工程-软件仿真

一个工程没有main()函数是无法编译成功的,系统开始执行时先执行启动文件中的复位程序,复位程序里调用C库函数_main,_main作用是初始化系统变量,如全局变量、只读变量、读写变量等。_main调用_rtentry,_rtentry调用main()函数,由此从汇编进入C的世界,如果没有编写main()会报错。创建并选择设备后,在弹出的对话框中,选择CORE和Startup文件添加到工程组CMSIS中。文件组中添加文件,readm.txt添加到doc,main.c添加到user,FreeRTOS暂空。

2025-07-10 11:43:16 326 2

原创 FreeRTOS内核:01初识FreeRTOS

于2018年被亚马逊收购,升级为版本V10,开源协议由GPLv2+修改为MIT,MIT更加开放,等同于完全免费,V10内核基本不变,主要增加物联网组件。变量类型作为前缀,如char为c,short为s,portBASE_TYPE、数据结构、任务句柄、队列句柄等定义的变量名都为x。www.freertos.org官网,包含源码,API参考手册,手把手入门教程文档,或者网页上直接的快速入门教程。无符号型还会有前缀u,指针变量还会有前缀p,如无符号char为uc前缀,char指针为pc前缀。

2025-07-10 11:09:49 460

原创 FreeRTOS:00 准备工作

裸机:无操作系统的单片机。1.相同优先级不考虑中断的情况下只能顺序执行,即执行完A再执行B,总有任务处在未执行状态,即不够实时。2.当产生高优先级任务时,裸机只能通过中断执行高优先级任务,而软件中断需要读取标志位,若此时游戏未完成则无法执行到读取标志位函数,使得高优先级任务无法执行,实时性不够。RTOS(RT:real-time):实时操作系统。1.通过创建优先级2个任务,按照时间片轮流切换执行。由于速度较快从宏观上看为同时执行。

2025-07-08 15:26:56 714

原创 STM32模块:024 FLASH闪存

FLASH闪存为通用名词,即掉电不丢失的存储器,例如SPI部分中的W25Q64芯片。本节闪存专指STM32内部闪存。芯片的闪存容量(例如64k)通常指的是闪存中程序存储器的容量。在编程过程中,任何读写闪存的操作都会使CPU暂停,直至此次闪存编程结束。例如,读写闪存时中断代码无法执行,中断无法及时响应,此时需慎用内部闪存存储数据。STM32 加大容量XL系列有2个闪存,新加闪存为BANK2,其他系列(LD,MD,HD)仅1个闪存,即BANK1。

2025-07-08 10:30:51 982

原创 STM32模块:023 WDG看门狗

独立看门狗,拥有独立的时钟LSI,主时钟故障依旧可以工作。窗口看门狗,使用APB1时钟。两种看门狗都是递减计数器,从特定值(独立看门狗为重装载寄存器的值,窗口看门狗无重装载寄存器,直接在CNT里写入的值)减到0时发送复位信号。看门狗启动后无法关闭,但窗口看门狗发生复位时关闭。看门狗功能处于VDD供电区,其寄存器处于1.8V供电区。PCLK1进入WDGTB分频器之前,会先进行4096分频,结构图中未体现。CFR用于写入窗口值,即最早喂狗时间界限。

2025-07-08 10:26:45 999

原创 STM32模块:022 PWR电源控制

PWR简介将system文件中的该部分中对应主频解除注释,即可配置系统主频。当前主频为36MHZ.处于3种低功耗模式下系统无法烧录程序,可长按复位键时下载。电源框图Vref+和Vref-为AD转换器参考供电,引脚少时与ADDA和ASSA连接。RCC BDCR为RCC的寄存器,即备份域控制寄存器。低电压检测器可选择后备供电区域的电源来源。用于配置系统时钟,即配置RCC时钟树,其中i2s的时钟直接来源于sysclk,USB的时钟直接来源于PLL。

2025-07-08 10:22:59 1084

原创 STM32模块:021 BKP寄存器&RTC实时时钟

STM32引脚中VDD_1-3,VSS_1-3,VDDA(模拟),VSSA(模拟)皆是主电源,VBAT为备用电源。后备区域:3.2KHZ振荡器,BKP和RTC都位于后备区域,后备区域由VDD供电,当系统断电时由VBAT供电。BKP不同于flash,BKP虽使用备用电源VBAT,但掉电丢失,本质上是RAM存储器,flash掉电不丢失。TAMPER侵入监测:先加默认上拉电阻,然后接设备外壳的防拆开关或触电到地,当外壳拆开时开关闭合,引脚产生下降沿,STM32监测到侵入事件,使BKP数据清零并申请中断。

2025-07-08 10:15:56 1191

原创 STM32模块:020 SPI通信part.02实验

16位数据帧和2个8位数据帧相同,通常使用8位数据帧。SPI为高位先行,即S起始信号后的第一位为最高位。在一个波形图中如果x轴为位置,则最右边信号先产生,若x轴为时间,则左边信号先产生。UART为低位先行,阅读波形时要从右边开始读。I2S为数字音频信号传输的专用协议,与I2C都为飞利浦公司提出,功能完全不同。主控存储数字音频数据,传输到音频解码器(DAC)转化为模拟信号再输出到扬声器,主控到音频解码器之间的传输即可用I2S。SPI1为APB2外设,SPI2为APB1外设。

2025-07-08 10:10:17 1015

原创 STM32模块:019 SPI通信

SPI对比I2C:1.传输速度更快,I2C由于是弱上拉,电平上升慢,因此通信速度有上限,而SPI无严格规定的最大传输速度。2.SPI为富家子弟,有钱任性,任务能简单快速完成即可,不考虑性价比;I2C精打细算,思维灵活,考虑成本和性价比。3.SPI的SCK相当于I2C的SCL,MOSI和MISO组合相当于I2C的SDA,同时多了SS线使得通信时不用像I2C写入寻址字节,SPI连接多从机时要增加SS线分别单独连接从机。称呼:SCK:CK,CLK,SCLK;

2025-07-07 01:19:46 719

原创 STM32模块:018 I2C通信Part.02实验

多主机模型:固定多主机和可变多主机,在没有设备加入或退出总线的情况下,固定多主机模式下主从机都不变且主机数量大于1,可变多主机主从机都可以变化且主机数量可以大于1。STM32为可变多主机。冲突时进行总线仲裁。7位地址:1字节,地址+读写位。10位地址:2字节,前5位为11110作为标志位+2位地址+读写位+8位地址。作为同步时序,其通信速度的具体值并不严格,例如快速模式是约为400kHz。SMBus:系统管理总线,由I2C改进而来,主要用于电源管理。

2025-07-06 16:40:18 540

原创 STM32模块:017 I2C通信Part.01介绍

I2C通信优势(对比USART通信):1.单根通信线,适用于基于对话的通信方式,即发送时不需接收,接收时不需发送。2.拥有应答机制,确保数据成功收发。3.单线可收可发,因此支持总线通信结构。4.同步时序对时间要求宽松。异步时序对时间要求严格,当使用软件模拟异步通信时,若刚好CPU进入中断,则会短暂停止通信,而接收方无法获取停止信息,导致传输出错,所以异步通信非常依赖硬件电路支持。研究芯片功能需参考数据手册和寄存器映像手册,前者的内容为芯片原理,参数和硬件电路,后者用于编写程序。

2025-06-24 16:42:57 736

原创 STM32模块:016USART串口通信PART.02

keil生成HEX文件,FlyMcu设置波特率并添加HEX文件,最小系统板移动BOOT跳线帽并复位(STM32只有刚复位时读取BOOT引脚),使单片机进入bootloader模式, 该模式不断接收USART1数据刷新到主闪存,最后FlyMcu开始编程,下载成功。注:为防止主函数读取缓存字符串数据的过程中,缓存字符串接收到了下一个数据包,导致数据主函数读取的字符串错误,可对程序进行如下修改。包头包尾增加数据的安全性,标志位位打包的关键,此时数据的打包完成。3.主函数读取完标志位清零。,但只能在函数内部使用。

2025-06-13 13:16:33 435

原创 STM32模块:015USART串口通信PART.01

USART的同步模式仅多了一个时钟输出,但不支持时钟输入,因此该同步模式主要用于兼容别的协议(如SPI)或其他特殊用途(例如其他设备可通过读取时钟信号判断本设备波特率),并不支持两个USART同步通信。波特率发生器事实上是分配器。硬件流控制:当A发送数据的速度超出B接受速度时,B就会抛弃新数据或覆盖原数据,造成数据丢失。若有硬件流控制,B可通过流控制电路向A发送电平信号表达B能否接受新数据,A根据该信号决定是否发送新数据。

2025-06-13 00:08:13 867

原创 STM32模块:014DMA直接存储器存取

一个地址取内容,放至另一个地址。通常情况下,存储器到存储器之间的转运使用软件触发,此时数据将直接转运直至转运完成;外设到存储器使用硬件触发,因为外设的数据产生通常要有特殊的时机,例如ADC的数据需要等待转换完成才能产生,此时需要硬件电路判断转换完成才能开始转运。

2025-06-12 01:53:55 749

原创 STM32模块:013ADC模数转换器

ADC将使用数字电路的STM32变成电压表,测量输入引脚电压。模拟-数字:ADC。数字-模拟:DAC,PWM。PWM只有断开和导通两种状态,且都没有功率损耗,适合大功率设备,如电机。事实上,PWM占用DAC的大多使用场景,目前DAC主要应用在波形生成领域(信号发生器,音频解码芯片)。16个外部信号源:为系列最高数量,本C8T6仅10个输入通道。2个内部信号源:内部温度传感器和内部参考电压。

2025-06-11 09:24:57 680

原创 STM32模块:012TIM编码器接口

编码器接口相当于带有方向控制的外部时钟,控制CNT的计数时钟和计数方向,默认接正交编码器。通过在确定的时间内对计数器的值进行读取,将值/时间得到频率。

2025-06-10 01:14:48 380

原创 STM32模块:011TIM输入捕获

输入捕获简介可实现测量占空比和频率的硬件全自动执行。输入捕获框图fDTS为滤波器采样时钟来源,CCMR1寄存器的ICF控制滤波器参数。异或门使得3个通道任意一个都可产生输出,用于三相无刷电机,无刷电机的3个霍尔传感器检测转子,此时定时器作为接口定时器驱动换向电路工作。输入滤波器用于滤除毛刺信号,边沿检测器用于选择触发方式,每个通道都各有2个。以通道1为例,分别得到TI1FP1输入到通道1的后续电路和TI1FP2输出到通道2的后续电路。

2025-06-09 22:34:56 952

原创 STM32模块:010TIM定时器part.03输出比较与PWM控制

输出比较简介PWM简介PWM适用于惯性系统,例如电机断点时不会立即停止。

2025-05-29 09:51:33 507

原创 STM32模块:009定时器part.02内部定时中断和外部时钟中断

注:TimeBaseInit函数初始化时,为了让预分频器初始化立即生效(影子寄存器的存在导致预分频器的值要到下一个周期才能更改),手动生成了一个更新事件,生成一个中断标志位,使得系统复位时定时器会直接进入中断,有时会影响功能(如定时器中断计数项目中每次复位时输出的计数值都从1开始),此时可在定时器配置之后和定时器使能之前清除标志位。当使用别的文件的变量时,在本文件中extern +变量名,则系统会自动在其他文件寻找并引用该变量。

2025-05-28 16:33:03 219

原创 STM32模块:008TIM定时器PART.01总体介绍

DTG(Dead Time Generate):死区生成电路,DTG后端输出一对互补PWM波,用于驱动三相无刷电机,三相无刷电机开关切换时,由于开关器件(如IGBT)的硬件性能受限,关闭时间长而导通时间短,造成不同相短暂的直通现象,因此在PWM输出前加上死区生成电路DTG,在开关切换时产生死区,让PWM通道全部关断,防止直通现象。中断输出控制:由于定时器中断过多,计数器更新中断,触发信号TGI,输入捕获到信号,输出比较值匹配时都会申请中断,因此需要中断输出控制电路,作为中断输出允许位。

2025-05-24 02:53:40 625

原创 STM32模块:007外部中断EXTI

NVIC(嵌套中断向量控制器)基本结构1.统一分配中断优先级和管理中断,是内核外设,2.中断源非常多,NVIC能减少CPU引线,NVIC仅一个输出口在STM32中,中断不存在先来后到的排队方式,任何时候都是优先级高的先响应。PVD:当电源电压过低恢复时,需要借助外部中断退出停止模式。RTC:系统为了省电定了RTC闹钟并加入停止模式,闹钟响时借助外部中断唤醒系统。USB唤醒和以太网唤醒同理。中断响应:让cpu执行中断函数事件响应:外部中断信号不通往cpu而通向其他外设。EXTI基本结构。

2025-05-23 11:09:13 1042

原创 STM32模块:006使用OLED调试STM32

图中为电源供电,虽然OLED的电源端与GPIO口相连,但不设置GPIO口的情况下默认为浮空输入,对OLED无影响。可去掉电源供电链接GPIO口,并给GPIO高低电平供电,使GPIO驱动OLED,但由于负载问题,实际工程中最好用电源供电。(2)其他调试方法:1.点灯调试法,在某个位置添加电灯函数,用于判断函数是否执行到这个位置。图中“程序运行控制”右边为各个窗口的显示(例如第三个为所有变量值变化显示),以及逻辑分析仪,串口显示等功能。(4)程序运行顺序:(点击复位,并使用单步运行)

2025-05-22 16:41:39 242

原创 STM32模块:005GPIO控制part.02 C语言与部分片外外设模块化

注:可以在不同函数内部定义同名变量(局部变量),在函数外定义的(全局变量)不会与任何函数内的同名变量冲突,函数调用时首先使用自己内部的局部变量,没有时使用全局变量。与宏定义的区别:宏定义的新名字在左边,typedef的新名字在右边,typedef末尾需加分号,利用typedef重命名结构体,降低结构体定义时的冗长,是开发过程中常见的形式。创建枚举变量时,若成员赋值为顺序赋值,则后续赋值可省略。1.LED驱动(与蜂鸣器模块相同,仅引脚不同,详见后文蜂鸣器)1.按键控制电平翻转:(使用读取输出电平函数)

2025-05-22 15:04:53 186

空空如也

空空如也

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

TA关注的人

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