版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CKS32F103微控制器教学课件03存储器映射第3章存储器映射核心内容存储器分类及CKS32F103的存储器芯片内部有哪些类型的存储器?它们各自的容量和用途是什么?存储器映射存储器在芯片的地址空间中是如何分布的?CPU如何找到它们?访问SRAM的方法在程序运行过程中,如何高效地对SRAM进行读写操作,处理实时数据?访问FLASH的方法如何利用FLASH实现程序代码的固化和重要数据的掉电非易失性存储?01存储器分类存储器是用于存放程序和各种数据的电子器件,通常分为随机存储器RAM和只读存储器ROMRAM:分为静态随机存储器SRAM和动态随机存储器DRAM。SRAM通电即可保持数据,不需刷新,速度快但集成度低,常用于高速缓存。DRAM需要周期性刷新才能保持数据,集成度高,常用于内存条等大容量存储。01存储器分类RAM请上网查找一款SRAM和DRAM,给出型号和存储容量易失性存储器VolatileMemoryROM属于非易失性存储器,主要用于存储固定信息或程序。常见类型包括可编程可擦除只读存储器EPROM、电可擦除可编程只读存储器EEPROM、一次性可编程存储器OTP和快闪存储器Flash,其共同特点是擦写次数有限。01存储器分类ROMFlash主要有NORFLASH和NANDFLASH两种架构CKS32F103的存储器:SRAM+FLASHCKS32F103系列MCU内置NORFlash程序存储器和SRAM数据存储器。CKS32F103x8和xB系列的Flash分别为64K和128K字节,SRAM容量为20K字节。应用中如需更大容量,可扩展外部Flash或RAM以满足需求。SRAM标准配置容量:20KBytesFLASH标准配置容量:64KBytesCKS32F103的存储器:SRAM易失性存储器
主要用途•存储全局变量和静态变量,作为程序运行的基础数据区。
•充当堆栈(Stack),保存函数调用上下文及局部变量,支持程序流跳转
•用作数据缓冲区,如UART串口的接收与发送缓冲。关键特性•掉电易失:电源切断后存储数据即刻消失,无法长期保存。
•高速读写:支持CPU零等待周期快速访问,性能显著优于Flash/ROM。
•直接寻址:支持CPU通过指针直接对物理地址进行读写操作。SRAM:FLASH:NORFlash非易失性存储器▍主要用途•用户程序代码:CPU从Flash中取指并执行,是程序运行的载体。•常量数据:程序中使用const关键字定义的数据。•关键参数:掉电后需要保存的系统配置、校准系数等。▍关键特性•掉电不丢数据:区别于SRAM最根本的特性。•操作限制:需要特定电压和流程,擦写速度相对较慢,需先擦除为全1才能写入,典型擦写寿命约10,000次。CKS32F103的存储器:FLASH请上网查找一款EPROM、EEPROM、OTP和Flash,给出型号和存储容量02存储器映射MEMORYMAPPING了解了存储器类型后,接下来学习存储器在芯片的地址空间中是如何布局的,简单来说,就是如何给每个存储资源分配一个独一无二的地址,以便CPU通过访问这些地址来操作存储器CKS32F103的内核为Cortex-M3,其地址分配需要遵循ARM的存储器分配框架。内核中,存储器是一个广义概念,不仅包括的FLASH程序存储器和SRAM数据存储器,还涵盖所有需要被内核直接访问的硬件资源,如外设寄存器和系统控制部件等Cortex-M
地址分配ARM为Cortex-M系列制定了标准的存储器分配图,规定了逻辑地址空间的范围及各功能区的划分02存储器映射-Cortex-M的地址分配和数据存储格式
02存储器映射-Cortex-M的地址分配和数据存储格式
数据存储格式Cortex-M内核配备32位数据线,数据存储器或寄存器中的数据以32位为单位存储,但由于内存中数据是按字节存放在每个地址中,所以需要指定高位或者低位数据的存放位置。大端模式:高位字节存放在低地址端,低位字节存放在高地址端;小端模式:低位字节存放在低地址端,高位字节存放在高地址端。02存储器映射-Cortex-M的地址分配和数据存储格式
低地址>高地址大端模式0x120x340x560x78小端模式0x780x560x340x12Cortex-M内核默认使用小端模式,因此CKS32F103的存储器也采用小端存储方式。注意:如SPI、USART等部分外设在与片外设备通信时,为适应外部数据格式要求,需要在软件层面进行大小端转换。若外设为大端存储模式。02存储器映射-存储器映射存储器映射:将内核的逻辑地址空间与物理存储器或外设建立对应关系的过程。存储器映射用于合理分配和访问不同类型的资源,例如Flash、SRAM,以及各种外设如GPIO、USART、定时器等。ARMCortex-M3系列MCU存储器与外设统一在4GB地址空间内顺序排列,互不冲突。存储器映射的优点:通过将外设寄存器映射到Cortex-M内核的外设区,使内核访问外设寄存器的操作与访问SRAM一样,既可简化编程,又能保证访问速度。02存储器映射-存储器重映射Cortex-M内核复位后优先访问0x00000000起始的地址空间,而实际的物理存储器如FLASH、SRAM、外部NORFlash等被分配到非零的物理地址区域。为支持从不同存储器启动,需将目标物理存储器的起始地址映射到内核复位后优先访问的0x00000000地址。存储器重映射:实现物理地址与内核默认访问地址关联的过程。02存储器映射-存储器重映射以Flash启动为例,若需从物理地址0x08000000的片上Flash启动,需通过硬件或软件配置,让内核访问0x00000000时,实际指向0x08000000的Flash空间,从而正确读取复位向量表与程序代码。存储器重映射的本质:实现物理地址与内核默认逻辑访问地址的动态关联,不改变物理存储器的实际地址。而是通过硬件电路或寄存器配置,让内核对逻辑地址如0x00000000的访问,被路由到其它目标物理地址。CKS32F103的物理地址映射03CKS32F103采用Cortex-M3内核,其地址设计既遵循Cortex-M3的预定义地址框架,又可结合自身硬件资源进行扩展与裁剪Block0:Code代码区0x00000000-0x07FFFFFF大小:128MB主要用于存放程序代码,可灵活映射到内部
Flash、系统存储器或
SRAM,是系统启动和程序运行的基础。Block1:内部SRAM0x20000000-0x20004FFF大小:20KB处理器的高速读写存储器,用于存储程序运行时的变量、堆栈和临时数据,确保系统的快速响应能力。Block3:片上外设0x40000000-0x4000FFFF大小:1MB片上外设寄存器的集中映射区,包含GPIO、UART、定时器等外设的控制与状态寄存器,实现对硬件的直接操作。Block3:核心外设0xE0000000-0xE00FFFFF大小:1MB包含Cortex-M3内核自带的
NVIC、SysTick、调试组件等关键资源,负责中断管理、系统时钟和调试支持。代码区(CodeArea)0x00000000•CPU启动后首先访问的区域,存放中断向量表和程序代码。•通过BOOT引脚配置,可映射到内部Flash、系统存储器或内部SRAM。内部SRAM区(InternalArea)0x20000000•20KB高速SRAM的起始地址,全局变量、静态变量和堆栈均位于此。•支持位带操作,能方便快捷地对寄存器中的单个比特位进行控制。外设区(PeripheralArea)0x40000000•所有片上外设(GPIO,UART,SPI,I2C等)的控制与数据寄存器均映射到该区域。•通过读写特定地址,即可直接配置外设参数并实现数据交换。CKS32F103的物理地址映射:核心区域重点关注三个核心区域。代码区是程序的入口。内部SRAM区是程序运行的舞台,所有动态数据都在SRAM区。外设区则是控制芯片外部世界的窗口,通过操作外设区的寄存器,就能控制GPIO、串口等外设。CKS32F103的物理地址映射:外设地址外设地址:指的是外设寄存器的地址。片上外设包括CRC、USART1、Flash接口等,每个外设都分配了独立的地址空间。如EXTI的地址范围0x40010400~0x400103FF,USART1的地址范围0x40003800~0x40013BFF等外设的基地址:每个外设的起始地址。如EXTI的中断屏蔽寄存器EXTI_IMR的地址为0x40010400,与EXTI的基地址相同,EXTI的其它寄存器地址是基于基地址的偏移。访问外设操作与访问存储器相同,对外设的访问也是对寄存器的读写操作。CKS32F103的物理地址映射:SRAM的别名区别名:通过多个不同地址映射到同一物理存储器或资源的技术,以满足特定的访问需求。不同的地址指向同一个物理位置,每个地址都可以看作该物理区域的别名。在CKS32F103中,SRAM别名区是将片上SRAM的地址映射到不同的地址范围,使得内核或外设可通过不同的路径访问同一片物理SRAM。优点:提供对内存的额外控制、提高访问性能,或支持特定硬件设计需求片上SRAM默认映射在0x20000000~0x3FFFFFFF范围内。SRAM的低1MB空间定义为位带区,支持位带操作,位带区对应片上SRAM的物理地址范围为0x20000000~0x200FFFFF。CKS32F103的物理地址映射:SRAM的别名区SRAM的别名区地址范围为0x22000000~0x23FFFFFF,共32MB。别名区的每个地址对应位带区中某一位的操作,从而可实现对单个位的读写,而不影响其他位。这种位带映射和别名机制使得对SRAM的位操作变得简单、高效,同时保持原子性,避免了读-改-写操作中的潜在冲突。访问SRAM让变量被编译器分配到SRAM的地址//假设变量已经被编译器分配到SRAM(如0x20000010地址)uint32_tsram_var=0;//写操作:向SRAM写入数据sram_var=0x5A5A5A5A;//读操作:从SRAM读取数据uint32_tread_val=sram_var;04理论知识了解清楚后,进入实践环节。首先,我们来看看如何访问SRAM。访问SRAM是嵌入式编程中最常见的操作,CKS32F103C8提供了多种灵活高效的方式直接指针访问
是最基础、最直接的方法,利用C语言的指针特性,直接对SRAM地址进行读写。这种方式底层高效,也常用于底层驱动开发中对硬件寄存器或特定内存区域的操作。volatile避免编译器优化volatileuint32_t*sram_ptr=(volatileuint32_t*)0x20000000;//指向SRAM起始地址的指针//写操作:向0x20000000地址写入32位数据*sram_ptr=0x12345678;//读操作:从0x20000000地址读取数据uint32_tdata=*sram_ptr;访问SRAM04访问FLASH05Flash的“先擦除后写入”特性,操作要比SRAM复杂一些,并且有严格的流程和保护机制名称功能Flash接口寄存器用来下发读/擦写指令、配置参数、查询操作结果等,是内核/程序唯一能直接操作Flash的入口。
FPEC模块只负责Flash的擦除和编程操作,接收接口寄存器的指令,内部生成高电压,按规则完成扇区擦除/字节编程。FLITF模块只负责Flash的读操作,接收内核的读请求,通过硬件通道从Flash阵列中读取数据,返回给内核或通过接口寄存器反馈读状态。访问FLASH-Flash接口相关模块05访问FLASH-Flash阵列与接口寄存器05片上Flash存储阵列:由主存储块和信息块组成。主存储块存储用户程序和常量数据,芯片启动时从主存储块加载和执行程序代码。
模块名称地址大小(字节)主存储块页00x08000000–0x080003FF1K页10x08000400–0x080007FF1K页20x08000800–0x08000BFF1K页30x08000C00–0x08000FFF1K页40x08001000–0x080013FF1K……
页1270x0801FC00–0x0801FFFF1K信息块系统存储器0x1FFFF000–0x1FFFF7FF2K选项字节0x1FFFF800–0x1FFFF80F16Flash阵列结构Flash接口寄存器:控制Flash存储阵列的读写操作,由FLITF与FPEC模块对外提供、且可由内核直接访问的硬件寄存器集合寄存器名称偏移地址读写功能访问控制寄存器:FLASH_ACR0x00R/W设置Flash访问延时、预取缓冲、加速模式等主存储区解锁密钥寄存器:FLASH_KEYR0x04W写入两组密钥以解锁FLASH_CR寄存器选项字节解锁密钥寄存器:FLASH_OPTKEYR0x08W写入两组密钥以解锁FLASH_OPTCR寄存器状态寄存器:FLASH_SR0x0CR/W反映Flash操作状态,忙BSY、编程错误PGERR、写保护错误WRPRTERR、操作完成EOP等控制寄存器:FLASH_CR0x10R/W控制Flash操作,包括页擦除PER、整片擦除MER、编程PG、选项字节编程OPTPG、锁定LOCK等地址寄存器:FLASH_AR0x14W存放要擦除的页地址(必须为页起始地址)选项字节寄存器:FLASH_OBR0x1CR读取选项字节内容,包括读保护、IWDG/SW、复位模式等,出厂时未保护状态写保护寄存器:FLASH_WRPR0x20R反映各页写保护状态,为1表示该页写保护,出厂时未保护状态访问FLASH-Flash控制模块05Flash接口FLITF:内核与Flash存储器之间的接口层,负责协调数据传输与访问时序。由于Flash的固有访问速度通常低于CPU主频,直接访问易导致数据错误。为此,FLITF通过配置等待状态,在CPU访问Flash时自动插入必要的延迟周期,如当CPU主频高于Flash最大访问频率时,需设置1~3个等待状态,确保数据读取的准确性。FLITF集成时序匹配、地址译码、数据缓冲与传输功能。根据CPU主频与Flash速度自动调节访问延迟,将CPU提供的地址转换为Flash可识别的地址信号,并在两者间进行数据缓存与交互以提升访问效率。借助这些机制,CPU能够高效、稳定地从Flash中读取指令和数据,是CPU与Flash间的桥梁访问FLASH-FPEC控制模块05FPEC:负责Flash编程与擦除操作的控制模块。FPEC采用独立的固定8kHz内部时钟,通常由LSI分频获得,与系统主频完全无关。这一设计的优势在于能确保编程和擦除时序始终保持一致,从而在系统主频变化时仍能稳定可靠地完成写操作。由于FLASH具有先擦后写的特性,其操作需严格的时序控制与保护机制,而FPEC正是负责实现这些底层时序控制与安全保护逻辑的核心模块。访问FLASH-FPEC控制模块05FPEC具有解锁与写保护、编程管理、擦除管理和状态监控功能。解锁与写保护功能旨在防止误操作,保障写入和擦除的安全性。编程管理将CPU发出的写命令转换为FLASH阵列可执行的操作序列。擦除管理执行整片或扇区擦除操作,严格遵循FLASH先擦后写的特性。状态监控指通过FLASH_SR等寄存器向内核反馈操作完成情况或错误状态。访问FLASH-读取指令和数据流程内核读取Flash指令或数据的流程与SRAM类似。发起访问请求内核通过程序计数器PC或数据访问指令生成目标地址。若该地址处于Flash映射空间,总线矩阵会将访问请求转发至Flash接口FLITF。预取缓冲区判断若请求数据已在预取缓冲区(命中),则直接返回内核,响应速度接近SRAM。若未命中,Flash接口会从Flash阵列中一次性读取8字节数据块,写入预取缓冲区后,再将所需数据返回内核。判断等待状态插入若CPU主频高于Flash的最大访问速度,数据返回过程中会自动插入等待周期,确保数据传输正确。05数据交付与处理若是取指操作,返回数据被送入Cortex-M3的指令流水线。读取数据的话,返回数据直接写入目标寄存器或内存单元,供后续指令使用。设置2等待状态,启用预取缓冲区和半周期模式的代码#defineFLASH_ACR(*(volatileuint32_t*)0x40022000)voidFlash_Config(void){//2WS+HalfCycleAccess+PrefetchBufferEnableFLASH_ACR=((0x2<<0)//LATENCY=2WS|(1<<3)//HLFCYA=1|(1<<4)//PRFTBE=1);}访问FLASH-读取指令和数据流程0501解锁(Unlock)复位后Flash处于锁定状态,防止误操作。须先解锁才能进行擦除和编程,解除硬件层面的写保护限制。02擦除(Erase)在写入新数据前,必须将目标区域擦除。擦除的最小单位是“页(Page)”,CKS32F103C8的Flash页大小为1KB,不可对更小的单位单独操作。03编程(Program)将数据写入擦除后的Flash区域。写入的最小单位通常是半字(16-bit),且只能从“1”改写为“0”,这也是写入前必须擦除的原因。04锁定(Lock)操作完成后,必须重新锁定Flash,恢复写保护机制。这一步至关重要,能有效防止因意外操作导致的数据损坏或丢失。Flash的写操作必须遵循解锁、擦除、编程、锁定四步流程。首先要解锁Flash,解除写保护。然后擦除要写入的区域,注意擦除的最小单位是页。擦除完成后,才能进行编程,也就是写入数据。最后,一定要记得重新锁定Flash,以防止意外的写入操作。访问FLASH-
写操作流程05访问FLASH-
代码示例05基于标准库的代码#include"cs32f103.h"//CKS32MCU的头文件//FLASH控制寄存器FLASH_CR的“锁定位(LOCK)”和“忙位(BSY)”的位掩码定义#defineFLASH_CR_LOCK((uint16_t)0x0080)/*!<Lock*/#defineFLASH_SR_BSY((uint8_t)0x01)/*!<Busy*/#defineFLASH_BASE_ADDRESS0x08000000//Flash起始地址#defineFLASH_KEY10x45670123//Flash解锁密钥1#defineFLASH_KEY20xCDEF89AB//Flash解锁密钥2//解锁voidFlash_Unlock(void){//程序先设置FLASH_CR_LOCK=0x80,
位掩码位与操作,检查FLASH->CR中的LOCK位状态if(FLASH->CR&FLASH_CR_LOCK){//写入解锁密钥FLASH->KEYR=FLASH_KEY1;FLASH->KEYR=FLASH_KEY2;}}//上锁voidFlash_Lock(void){FLASH->CR|=FLASH_CR_LOCK;//锁定Flash}访问FLASH-
写操作流程05代码示例:基于标准库的代码//页/扇区擦除voidFlash_Erase_Sector(uint32_tsectorAddress){//解锁FlashFlash_Unlock();//设置页/扇区擦除位FLASH->CR|=FLASH_CR_PER;//设置待擦除页/扇区的地址FLASH->AR=sectorAddress;//启动擦除FLASH->CR|=FLASH_CR_STRT;//等待擦除完成(通过检查BSY标志)while(FLASH->SR&FLASH_SR_BSY);//清除擦除位,使用位掩码按位与和或操作将某位清0,将PER位设置为0FLASH->CR&=~FLASH_CR_PER;//锁定FlashFlash_Lock();}访问FLASH-
写操作流程05代码示例:基于标准库的代码//编程voidFlash_Write_Word(uint32_taddress,uint32_tdata){//解锁FlashFlash_Unlock();//设置编程位,使用位掩码按位或操作将某位置1,将PG位设置为1FLASH->CR|=FLASH_CR_PG;////写入数据*(uint32_t*)address=data;//等待写入完成while(FLASH->SR&FLASH_SR_BSY);//检查写入是否成功if(FLASH->SR&FLASH_SR_EOP){//清除完成标志FLASH->SR|=FLASH_SR_EOP;}//禁用编程位FLASH->CR&=~FLASH_CR_PG;//锁定FlashFlash_Lock();}访问FLASH-
写操作流程05代码示例:基于标准库的代码//主程序intmain(void){uint32_tdata=0x12345678;//要写入的数据uint32_taddress=FLASH_BASE_ADDRESS+0x1000;//要写入的地址//擦除页/扇区
Flash_Erase_Sector(address);//写入数据
Flash_Write_Word(address,data);while(1){//主循环}}访问FLASH-
写操作流程05代码示例:基于标准库的代码位掩码:是一个用于操作特定位的二进制值,其中1的位置对应需要操作的目标位,0的位置对应需要保留的位。可通过按位与、或、非及异或来检查、设置、清除或翻转数据中的特定位。代码中FLASH_CR_LOCK和FLASH_SR_BSY都是位掩码,通常用于嵌入式系统中的寄存器操作和标志位管理。检查、设置和清除某位状态如上述程序中的说明。位掩码按位异或操作可翻转某位的状态,如切换PG位状态的程序如下。FLASH->CR^=FLASH_CR_PG;ST提供的HAL库已经封装了底层复杂的寄存器操作逻辑,让开发者仅需简单几步API调用,即可实现安全、规范的Flash读写控制。只需要调用HAL_FLASH_Unlock、HAL_FLASHEx_Erase、HAL_FLASH_Program和HAL_FLASH_Lock等函数,就可以安全、方便地完成Flash的读写代码示例:写入一个32位数据到指定地址HAL_StatusTypeDef
Flash_Write(uint32_taddr,uint32_tdata){
HAL_StatusTypeDefstatus;//定义返回状态变量
FLASH_EraseInitTypeDef
EraseInit;//擦除配置结构体
status=HAL_FLASH_Unlock();//1.解锁Flash
EraseInit.TypeErase=FLASH_TYPEERASE_PAGES;//2.擦除目标页
EraseInit.PageAddress=addr;EraseInit.NbPages=1;
status=HAL_FLASHEx_Erase(&EraseInit,NULL);
status=HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,addr,data);//3.写入数据
HAL_FLASH_Lock();//4.操作完成,锁定Flash
returnstatus;
}访问FLASH-
使用HAL库进行Flash读写05裸机编程(寄存器直接操作):不使用任何官方库,直接读写芯片硬件寄存器控制单片机。标准库(StdPeriph_Lib,老式库):ST官方早期推出的固件库,针对STM32F103等老系列优化,面向过程封装。HAL库(HardwareAbstractionLayer,现代主流库):ST官方新一代主推库,硬件抽象层,跨全系列STM32芯片统一API。CKS32F103可直接采用或用CKS的库和HAL库程序开发最主流的方式维度裸机编程(寄存器)标准库(StdLib)HAL库抽象层级最低(硬件直接操作)中等(轻量封装)最高(硬件抽象层)开发效率极低中等极高(+CubeMX)执行效率最高高一般(够用)代码体积最小小较大移植性极差一般(同系列)极好(全系列)学习难度最难中等最简单官方支持无停止更新全力维护、主推主流度小众(学习用)经典(老项目)主流(现代开发)程序开发最主流的方式CKS32F103C8存储器系统的核心参数:内核ARM®Cortex®-M3最高主频72MHzFlash容量64KBSRAM容量20KBFlash地址范围0x08000000~0x0800FFFFSRAM地址范围0x20000000~0x20004FFFFlash页大小1KBFlash擦写寿命约10,000次内核、主频、Flash和SRAM的容量与地址范围,以及Flash的页大小和擦写寿命。第3章作业请说明存储器分类和特点。Cortex-M3内核的数据线、地址线和寻址空间都是多少?请说明CKS32F103x8和CKS32F103xB片上FLASH和SRAM的容量大小。请说明存储器映射的定义以及目的。了解读写SRAM的过程。请说明FPEC和FLITF的名称及功能。请编写读FLASH地址空间0x08000100的程序,设置1个等待状态,启用预取缓冲区和半周期模式。请说明编程FLASH的步骤,并理解3.4.4节的代码。查找资料确定寄存器FLASH_CR的位MER的位置,用位掩码定义MER位,请编写程序实现检查、设置、清除或翻转该MER位的功能。说明CKS32F103x8的SPI1和I²C1接口的物理地址区间。请编写程序在Flash的0x08000000地址开始连续写入100个数据。THANKYOU感谢观看CKS32F103C8存储器系统技术分享|2026CKS32F103微控制器教学课件04电源和时钟控制CKS32F103基于高性能ARM®Cortex®-M332位RISC内核,最高工作频率可达72MHz。其高度集成的片上系统架构由六大核心模块协同构建:内核(Core)、存储器(Memory)、总线矩阵(BusMatrix)、电源管理(PMU)、时钟与复位(RCC)、外设(Peripherals)01电源控制与管理(PWR)稳定可靠的电源是MCU正常工作的基础,同时,高效的电源管理也是实现低功耗设计的关键。保持电源电压在规定范围内,否则逻辑电路可能出错,如电压过低可能导致数据损坏或系统死机等。其次要进行功耗管理,不同应用场景下的功耗需求不同,MCU需要根据应用情况调整功耗节省能源。详细了解CKS32F103的电源控制与管理模块;深入解析电源系统、电压监控机制及相关关键寄存器的配置与应用场景。01电源控制与管理(PWR)CKS32F103配有专门的电源管理模块,用于监控电源并管理设备的运行模式,确保系统正常运行的同时尽量降低功耗。电源管理模块的功能类别功能描述工作模式运行模式Run正常全速运行,所有外设和内核都工作睡眠模式Sleep内核停止工作,部分外设暂停工作,低功耗,电流约1.2~3mA停止模式Stop主时钟和PLL停止,SRAM/寄存器数据保持,超低功耗,电流约20~50μA待机模式Standby时钟和外设关闭,仅保留唤醒逻辑和备份域,最低功耗,电流约2~5μA电压监控可编程电压监测器PVD检测VDD电压是否低于设定阈值,可触发中断或复位,防止欠压运行低功耗唤醒WKUP引脚唤醒待机模式下可通过专用唤醒引脚WKUP唤醒系统RTC唤醒通过实时时钟中断唤醒低功耗模式外设事件唤醒某些外设事件如USART、EXTI等,可唤醒MCU备份域控制备份寄存器保持停止/待机模式下保持关键数据如系统参数、时间戳等RTC供电切换RTC可在主电源掉电后继续由VBAT供电功耗优化电压调节器控制停止模式可选择是否保持电压调节器工作,以平衡功耗和唤醒速度关闭未使用外设通过RCC寄存器关掉外设时钟,减少动态功耗01电源控制与管理(PWR)VDD供电区域主电源,为GPIO电路、外设、待机电路和电压调节器提供电源。VDD和VSS为主电源引脚,与外部供电电源或电池相连,VDD的电压范围为2.0V~3.6V。VDD电源的稳定性对芯片整体的工作状态至关重要,供电不稳定或超出推荐范围时,可能导致数字电路运行异常,甚至影响整个芯片的可靠性。应用中在VDD和VSS之间连接适当的去耦电容以减少电源噪声和电压波动,如0.1µF和10µF的电容。VDD为USART、I²C、SPI、Timer、GPIO等片上外设提供电平驱动电路的电源,因此,VDD电压决定了这些外设引脚的逻辑高低电平标准。01电源控制与管理(PWR)VDD供电、VDDA供电、1.5V供电和后备供电四个区域。VDDA供电区域VDDA供电区域为模拟电路部分提供稳定的供电电压和参考电压,包括ADC转换器、内部温度传感器、复位模块以及锁相环PLL等。VDDA供电区域与数字电源VDD区域独立,以减少数字电路开关噪声对模拟电路的干扰,确保更高精度的模拟信号处理。VDDA、VSSA、VREF+和VREF-四个对外连接的电源引脚。VDDA和VSSA是模拟电源正和地,VDDA须大于等于2.4V。为确保模拟电路区域电源稳定,VDDA一般通过一个LC滤波网络与VDD连接,常用10µH电感和0.1µF/1µF电容,以隔离数字电源的高频噪声。
VSSA和VSS在模拟地与数字地交汇处单点连接,避免数字地噪声流入模拟地。VDDA和VSSA必须在芯片外面通过LC滤波网络或者直接与VDD和VSS连接,以避免电源电压不一致导致电路不稳定01电源控制与管理(PWR)VDDA供电区域VREF+和VREF-是ADC的参考电压引脚。应用中一般将VREF+和VREF-分别与VDDA和VSSA连接,但这样连接时VDDA的纹波、噪声、温漂会直接影响ADC精度。为提高ADC的转换精度并获得较高的转换分辨率,可使用独立的模拟电源为VREF+和VREF-供电,并通过滤波与屏蔽措施减少来自PCB印刷电路板上的毛刺干扰。VREF+的允许电压范围为2.4V~VDDA。稳定的外部参考电压可显著降低转换误差和噪声,提高低输入模拟信号下的转换精度。01电源控制与管理(PWR)1.5V供电区域MCU的核心逻辑电路区域。VDD供电区域中的电压调节器将VDD转换为1.5V,为内核Cortex-M3、SRAM、Flash及片上数字外设的高速逻辑电路提供低电压工作环境。根据功耗需求电压调节器可工作在运行、停止和待机3种模式。电压调节器的工作模式可通过电源控制寄存器PWR_CR的位LPDS设置。芯片复位后电压调节器默认为运行模式。01电源控制与管理(PWR)电压调节器3种工作模式:运行模式:可工作在电源的运行和睡眠模式。电压调节器以正常功耗模式提供1.5V电源给内核、SRAM和数字逻辑电路等。停止模式:可工作在电源低功耗的停止模式。调节器进入低功耗状态,降低输出驱动能力,减少电流消耗,以低功耗模式提供1.5V电源,以保存寄存器和SRAM的内容。待机模式:工作在低功耗的待机模式,电压调节器停止供电。除了由VBAT引脚的备用电源供电的备用电路和备份域外,寄存器和SRAM的内容全部丢失。01电源控制与管理(PWR)后备供电区域工作电压:1.8V~3.6V。为LSE低速外部时钟、实时时钟RTC、备份寄存器BKP及备份SRAM等供电该区域可通过VBAT引脚或VDD获取供电电源。VBAT引脚可外接后备电源,VDD掉电时后备供电区域能持续运行,以便保留关键数据。VDD供电正常时,后备供电区域的控制开关与VDD接通,由VDD提供电源正常工作01电源控制与管理(PWR)后备供电区域当VDD掉电后,低电压监测器监测到掉电状态后将控制开关切换至VBAT引脚,如果VBAT引脚外接了备份电源,则为后备供电区域提供电源,以保证及时备份数据,保存备份寄存器的内容和维持RTC的功能。备份电源一般使用钮扣电池、超级电容或可充电电池等,将备份电源的正和负与VBAT和VSS引脚相连。VDD掉电时硬件自动切换到备份电源供电。若应用中没有使用外部备份电源,建议将VBAT连接到VDD引脚。01电源控制与管理(PWR)02复位与时钟控制器(RCC)时钟:由时钟源提供的固定频率的周期性电信号,通常为方波,如8MHz、72MHz等。MCU的运行需要依赖时钟,时钟是MCU内部所有操作的节拍器,时钟为系统提供以下关键功能:
同步控制:通过周期性的高低电平脉冲,确保CPU、外设、总线等模块按统一节拍有序、协同工作。如CPU在时钟上升沿执行指令,外设在下降沿读取数据等。
速度基准:时钟频率直接决定指令执行速度和系统响应时间。如执行时间≈指令周期数×时钟周期。
时序精度:稳定的时钟源能保证定时器、通信接口等外设的时序精度。02复位与时钟控制器RCC:是CKS32F103中的核心外设模块,承担着MCU的时钟系统管理与复位控制功能,通过RCC不仅能够灵活选择时钟源、配置系统主频,还能精确分配外设时钟,并对各类复位事件进行集中管理。RCC是时钟管理的硬件入口,而寄存器则是时钟管理的软件入口。所有的时钟选择、分频和开关,最终都需要通过RCC寄存器来实现。掌握RCC寄存器的配置,不仅是进行MCU底层开发的必备前提,也是实现系统优化与性能调优的关键环节。复位与时钟控制器(RCC)时钟是MCU的脉搏。CKS32F103提供了丰富的时钟源选项,以满足不同性能和功耗需求。时钟源:由RC电路或晶体振荡器与逻辑门组成正反馈振荡电路,负责提供频率稳定且电平匹配的脉冲信号。有源晶振和无源晶振03时钟管理——时钟源02复位与时钟控制器(RCC)-
时钟管理高速外部时钟源HSE:频率范围为4MHz~16MHz,部分型号可支持至25MHz,需参考具体芯片数据手册。为CKS32F103MCU提供高精度、高稳定性的时钟信号,可选择直接作为系统时钟使用,也可经2分频后作为PLL锁相环的输入时钟。HSE时钟源来自外部晶振或外部时钟信号,因此需要通过时钟输入引脚OSC_IN和时钟输出引脚OSC_OUT外接相应器件,可连接无源晶体或陶瓷谐振器和有源时钟源03时钟管理——时钟源高速外部时钟源HSE:无源晶体或陶瓷谐振器时需连接在OSC_IN和OSC_OUT引脚,晶振频率需在4~16MHz范围内,且需搭配典型值为18~22pF的负载电容有源时钟源可以是有源振荡器或外部时钟信号。连接有源时钟源时硬件上将其信号直接接入OSC_IN引脚,OSC_OUT引脚悬空03时钟管理——时钟源高速外部时钟源HSE:无源晶体或陶瓷谐振器时需连接在OSC_IN和OSC_OUT引脚,晶振频率需在4~16MHz范围内,且需搭配典型值为18~22pF的负载电容03时钟管理——时钟源高速外部时钟源HSE:有源时钟源可以是有源振荡器或外部时钟信号。连接有源时钟源时硬件上将有源时钟的输出信号直接接入OSC_IN引脚,OSC_OUT引脚悬空03时钟管理——时钟源高速外部时钟源HSE:为减少时钟信号失真、缩短启动稳定时间,PCB板设计时晶振与负载电容需尽可能靠近OSC_IN和OSC_OUT引脚,布线应短且直,避免与高速信号线、电源噪声源并行,以降低干扰对时钟源的影响。03时钟管理——时钟源高速外部时钟源HSE:HSE时钟源的启动和关闭由RCC_CR的HSEON位控制,当HSE做为系统时钟时不能不能关闭外部时钟。当HSE启动后,硬件会自动检测其是否稳定。若稳定输出,RCC_CR的HSERDY位会被硬件置1,若未稳定如晶振未起振、外部时钟异常等,该位保持为0。应用中必须等待HSERDY=1即HSE时钟稳定后,才能基于此时钟进行后续操作,如配置PLL、切换系统时钟等。若程序启用了时钟安全系统CSS,即置位了RCC_CR的使能位CSSON时,当HSE时钟失效或停止振荡时,系统会自动切换到备用时钟源HSI,保证MCU持续运行。时钟安全系统只监测HSE,等同于HSE的安全看门狗。03时钟管理——时钟源HSI高速内部时钟源:HSI时钟源为芯片内部8MHzRC振荡器,可选择直接作为系统时钟使用,也可经2分频后作为PLL的输入时钟。HSI相较于HSE无需外接任何器件,且启动时间显著缩短,但是频率稳定性较差,即便经过校准,其时钟频率精度仍无法达到HSE的水平。LSE低速外部时钟源LSE时钟源来自外部晶振或外部时钟信号,为实时时钟或者其它定时功能提供一个低功耗且精确的时钟源。LSE时钟源通过时钟输入引脚OSC32_IN和OSC32_OUT连接外接相应器件,可外接频率为32.768kHz的石英晶体振荡器或外部产生32.768kHz的时钟源03时钟管理——时钟源LSI低速内部时钟源LSI由内部低速RC振荡器产生,担当一个低功耗时钟源的角色,LSI时钟频率典型值为40kHz,一般在30kHz和60kHz之间,可在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。PLL锁相环倍频输出PLLCLKPLL将已有的低频时钟HSI或HSE倍频生成高频、稳定的系统时钟。PLL支持不同时钟需求,内核、总线、外设都可以基于PLL再通过RCC分频获取合适的时钟频率。PLL的时钟输入源可为HSI/2、HSE或者HSE/2,再通过2~16倍倍频得到,PLLCLK的最大输出频率为72MHz。与其它时钟源一样必须等PLLCLK稳定后才可以使用,在启动过程中,当硬件设置PLLRDY位为1后表示PLLCLK已经稳定03时钟管理——时钟源时钟源频率和用途表名称频率精度主要用途HSE4~16MHz取决于晶体/外部源系统主时钟、PLL输入、USB时钟源
HSI8MHz,内部RC振荡器±1%(典型)系统主时钟、PLL输入、启动默认时钟LSE32.768kHz高精度高精度RTC时钟、低功耗运行
LSI40kHz,内部RC振荡器±5%(典型)独立看门狗IWDG、低精度RTC时钟、低功耗模式唤醒PLL最高72MHz与输入源相同系统高速运行主频SYSCLK、USB48MHz时钟03时钟管理——时钟源时钟树:描述了从时钟源到各个外设的时钟分配路径,是MCU性能与功耗平衡的核心基石。03时钟管理——时钟树时钟源用于产生系统时钟SYSCLK。SYSCLK经过AHB预分频器后,再通过APB1和APB2两个预分频器分配给不同的外设。APB1是低速总线,最高36MHz,APB2是高速总线,最高72MHz。通过配置RCC_CFGR寄存器,可以灵活地设置整个系统的时钟频率,在性能和功耗之间取得最佳平衡。03时钟管理——时钟树系统时钟SYSCLK)系统的主时钟源,决定整体运算速度。最大频率:72MHz•来源:内部高速时钟(HSI)、外部高速时钟(HSE)或锁相环(PLL)倍频输出。AHB预分频器(HPRE)连接CPU内核与系统总线的桥梁,向下级总线分配时钟。•最大频率:72MHz•挂载:CPU内核、系统存储器(SRAM/Flash)、DMA控制器。APB预分频器(PPRE1/2)APB1(低速总线):Max36MHz|TIM2-7,USART2-5,I2C1-2,CANAPB2(高速总线):Max72MHz|GPIO,ADC1-3,TIM1,USART1,SPI1关键寄存器:RCC_CR时钟控制寄存器。主要用于控制和指示HSI、HSE和PLL等时钟源的开启、关闭及就绪状态。关键寄存器:RCC_CFGR时钟配置寄存器。决定系统时钟的流向:选择系统时钟源、配置PLL倍频系数及AHB/APB总线的分频系数。03时钟管理——时钟树SYSCLK:是MCU运行的主时钟信号和时间基准,必须始终开启。SYSCLK决定内核、外设、存储器等各个模块的工作频率、系统的运算速度和外设的工作节奏03时钟管理——系统时钟SYSCLK的时钟源配置例程
__IOuint32_tStartUpCounter=0,HSEStatus=0;#defineHSE_STARTUP_TIMEOUT((uint16_t)0x0500);//根据稳定性的要求,可适当增大该数值//使能HSE,并等待HSE稳定RCC->CR|=((uint32_t)RCC_CR_HSEON);//等待HSE启动稳定,并做超时处理do{HSEStatus=RCC->CR&RCC_CR_HSERDY;StartUpCounter++;}while((HSEStatus==0)&&(StartUpCounter!=HSE_STARTUP_TIMEOUT));
if((RCC->CR&RCC_CR_HSERDY)!=RESET){HSEStatus=(uint32_t)0x01;}else{HSEStatus=(uint32_t)0x00;}//HSE启动成功,则继续往下处理03时钟管理——系统时钟时钟管理:时钟树派生时钟图03时钟管理——系统时钟SYSCLK的派生时钟:从SYSCLK派生出来的子时钟信号,用来驱动不同的总线和外设。SYSCLK经过AHB预分频器后主要生成了HCLK、PCLK1、PCLK2、USBCLK和RTC等内核和外设所需要的各种时钟
RTC时钟(RTCCLK)🔸来源:可从LSE、LSI或HSE的128分频中灵活选择。🔸配置:通过RCC_BDCR寄存器中的RTCSEL[1:0]两位进行时钟源切换配置。🔸用途:专门用于驱动实时时钟(RTC)模块,为系统提供高精度、低功耗的时间戳与日历基准。03时钟管理——系统时钟的派生时钟窗口看门狗(WWDG)•时钟源:来自APB1总线时钟的4096分频,与系统运行紧密相关•特点:具备“喂狗”窗口限制,主要用于监控软件执行流程,防止程序死循环或跑飞。看门狗时钟(Watchdog)独立看门狗(IWDG)•时钟源:固定为LSI(约40kHz),独立于主系统时钟。•特点:在主时钟故障时仍能正常运行,提供系统最高级别的复位安全保障。看门狗时钟(Watchdog)03时钟管理——系统时钟的派生时钟主时钟输出MCO引脚:输出指定的时钟信号,以便给外围芯片提供时钟信号,或者在调试过程中通过示波器或逻辑分析仪监控MCU的时钟状态。MCO做为时钟输出时需要将引脚配置为复用推挽输出模式。SYSCLK、HSI、HSE和PLL/2都可被选作MCO时钟,可通过RCC_CFGR寄存器的位MCO[2:0]选择在MCO引脚输出的时钟源CKS32F103内置一个全速USB模块,其时钟必须是48MHzUSBCLK来源:PLLCLK。当PLLCLK为72MHZ时,需要对其进行1.5倍分频得到USBCLK,可通过RCC_CFGR的位USBPRE设置分频系数为1.5或1。由于USB对时钟精度要求极高,必须精确为48MHz,须使用HSE和PLL作为时钟源,且进入USB预分频器的频率只能为48MHz或72MHz。USB时钟03时钟管理——系统时钟的派生时钟复位控制03复位是系统恢复正常运行的重要手当MCU的电源电压稳定、时钟系统正常工作后,复位是其执行的第一个核心动作。复位标志着CKS32F103芯片从无电停工状态正式切换至有序运行的启动阶段。复位的本质:通过硬件触发或软件指令,将CKS32F103的内部所有资源恢复到已知且固定的初始状态,目的是确保芯片每次启动时,都能在统一的硬件环境下,从预设的程序入口地址开始执行,避免因前次异常状态残留导致启动失败或功能紊乱复位控制-复位源03复位的触发依赖于复位源复位源:导致系统进入复位状态的各种触发因素或事件。复位源的设计直接决定了硬件系统的稳定性与可靠性。无论是上电时的自动初始化、用户主动发起的重启操作,还是系统故障后的自动恢复,均需依赖复位源的正常工作。复位源划分为系统复位与备份域复位两大类。多种复位方式的设计,确保芯片在电压波动、程序跑飞、外设故障等复杂场景下,仍能可靠恢复到初始状态,为系统的稳定性与安全性提供基础保障,开发者可根据实际应用场景灵活选择适配的复位方案。复位控制-复位源03类型复位源触发条件复位范围RCC_CSR标志系统复位外部复位NRST引脚NRST引脚被外部电路拉低并持续≥2个时钟周期整个芯片,除备份域的RTC、LSE、备份寄存器等EXTRSTF,位D1电源复位上电复位POR主电源VDD从低于VPOR上升至稳定值PORRSTF,位D0掉电复位PDR主电源VDD从高于VPDR下降至低于阈值与POR共用看门狗复位独立看门狗IWDG复位IWDG计数器溢出,未及时喂狗IWDGRSTF,位D2窗口看门狗WWDG复位WWDG计数器在窗口外溢出,或未在有效窗口内喂狗WWDGRSTF,位D3软件复位向NVIC_AIRCR寄存器的VECTKEY写入0x05FA并置位D2位SYSRESETREQSFTRSTF,位D4低功耗管理复位低功耗模式下,配置复位唤醒且触发唤醒事件无专用标志时钟安全系统CSS复位HSE时钟失效且CSS使能,未及时处理中断CSSF,位D7备份域复位备份域复位(BDRST)使能备份域访问后,设置RCC_BDCR的BDRST=1仅备份域无专用标志,需通过软件记录复位控制-复位源03复位过程:任一复位源输出的触发信号为高电平,该触发信号首先进入或门整形后的信号通过脉冲发生器和场效应管后作用于NRST引脚,使NRST引脚产生低电平,低电平信号再经过施密特触发器的抗干扰和滤波器的消除毛刺处理后,生成至少2个系统时钟周期的低电平复位信号,确保芯片内部所有模块均能同步检测到复位信号,避免局部模块未复位导致的异常。复位控制-复位源03复位释放:指当复位触发条件消失后,低电平持续满2个时钟周期即停止,之后NRST引脚恢复为高电平,MCU正式退出复位状态,进入程序启动流程。产生复位的复位源判断:读RCC控制器的控制状态寄存器RCC_CSR,可判断触发复位的复位源,从而诊断复位原因。RCC_CSR的
D26~D31位为复位源标志位,当系统发生复位时,与触发源对应的标志位会被硬件自动置1,其余未触发的标志位保持0,这些标志位会记录系统最后一次复位的具体来源。复位控制-系统复位03NRST引脚上的外部低电平信号电源复位窗口看门狗计数终止复位独立看门狗计数终止复位软件SW复位低功耗管理复位时钟安全系统复位可触发系统复位的7种条件:复位控制-系统复位03NRST引脚上的外部低电平信号NRST引脚被外部电路拉低时,触发芯片内部复位逻辑并实现MCU的复位操作,广泛用于手动控制复位或外部电路自动监控复位场景复位控制-系统复位03电源复位在MCU供电电压低于正常工作范围时触发的一种复位机制,由内部的可编程电压监测器PVD负责执行电源复位确保MCU在电压达到稳定之前不会启动,并在系统启动时维持电压的稳定,避免因电压不足或不稳定导致的错误启动,以保证芯片的正常和安全运行。包括POR上电复位和PDR掉电复位。POR上电复位是在芯片电源电压VDD上电过程自动进行的复位。PDR掉电复位指在系统运行过程中VDD下降到一定阈值时自动触发的复位。复位控制-系统复位03电源复位电源上电复位和掉电复位波形图复位控制-系统复位03窗口看门狗计数终止复位独立看门狗计数终止复位软件SW复位SW软件复位:是程序主动触发的复位。固件升级后的自动重启、软件异常后的自恢复和系统参数更新后的重新初始化等采用SW复位方式。操作Cortex-M3的中断应用和复位控制寄存器NVIC_AIRCR可实现软件复位。向NVIC_AIRCR[31:16]位的VECTKEY写入密钥0x05FA,然后置位D2位SYSRESETREQ后,内核会触发MCU系统复位。复位控制-系统复位03低功耗管理复位在低功耗的停止或待机模式下,MCU可能因特定事件或异常情况触发复位。当复位发生时,即使已执行进入低功耗模式的指令,也不会实际进入低功耗模式,而是立即转入复位流程,以避免MCU从低功耗状态恢复时因状态异常导致系统不稳定。使能低功耗管理复位:配置Flash选项寄存器FLASH_OBR中D3位nRST_STOP
和D4位nRST_STDBY。nRST_STOP=1表示允许停止模式下触发复位,nRST_STDBY=1表示允许待机模式下触发复位低功耗复位功能在实际中较少使用,通常仅在低功耗场景需要异常唤醒保护时才会启用时钟安全系统复位复位控制-系统复位03时钟安全系统复位CSS复位:是一种针对HSE故障的硬件保护机制,用于监控HSE时钟的稳定性,防止因HSE时钟异常导致系统程序运行出错。HSE时钟异常情况如停振、频率偏移过大等。当HSE时钟发生失效,且时钟安全系统的使能位CSSON已被配置激活时,MCU内部硬件会自动触发系统复位,强制系统重新初始化,避免因时钟故障引发程序跑飞、数据错误等问题。若同时使能了HSE失效中断功能,当HSE出现故障时,CSS会先触发中断以便给予软件处理故障的机会,例如切换至备用时钟源HSI。若中断未被及时处理,如软件未响应或处理失败,则会进一步触发复位,确保系统在极端情况下仍能进入安全状态。复位控制-备份域复位03备份域复位是针对特定区域的复位,仅作用于由LSE、RTC、后备SRAM、备份寄存器BKP等组成的备份域,不会影响内核及其他外设。备份域复位的主要用途包括重置RTC时钟源、清除BKP和RTC的配置错误等,可在电池供电失败或系统异常时,将备份域恢复至初始状态。当主电源VDD和备份电源VBAT两者同时掉电后,若其中任一电源重新上电都会自动触发备份域复位。程序控制:先置位电源控制寄存器PWR_CR的位DBP关闭备份域写保护,再设置RCC_BDCR中的位BDRST=1,保持至少2个LSI/LSE周期后清零BDRST,即可触发备份域复位。复位控制-备份域复位03备份域复位例程:RCC->APB1ENR|=RCC_APB1ENR_PWREN;//使能PWR时钟PWR->CR|=PWR_CR_DBP;//解除备份域写保护PWR->CR|=PWR_CR_DBP;//确保写保护已解锁PWR->CR|=PWR_CR_BDRST;//置1,复位备份域PWR->CR&=~PWR_CR_BDRST;//清0,复位备份域后可继续执行RTC的配置等初始化操作。MCU启动04当复位动作完成且时钟系统稳定后,CKS32F103MCU会进入启动流程。MCU的启动是从硬件上电到内核接管系统控制权的过程,分为电源/复位、启动模式选择、Cortex-M3内核启动三个阶段。复位后默认时钟源为8MHz的HSI、PC指向启动模式决定的启动地址。启动模式决定上电或复位后开始执行程序的存储区域。内核启动是内核从读取异常向量表开始,到完成资源初始化、跳转到main()的过程,内核启动完成后,用户程序开始运行。MCU启动-启动模式04启动模式:通过硬件配置引脚BOOT0和BOOT1的电平组合,决定CKS32F103MCU复位后从哪个存储器获取启动代码从用户闪存启动(常用)BOOT0=0,BOOT1=x程序直接从芯片内部Flash中执行,这是产品正常运行的默认模式。从系统存储器启动BOOT0=1&BOOT1=0启动内置的引导加载程序(Bootloader),支持通过UART等接口进行IAP编程(烧录固件)。从嵌入式SRAM启动
BOOT0=1&BOOT1=1程序直接从内部SRAM启动运行,常用于调试程序或在特定应用场景下绕过Flash运行代码。启动流程逻辑复位→采样BOOT引脚状态→设定PC初始值→CPU取指执行复位后,芯片会自动采样BOOT0和BOOT1引脚的电平,以此决定程序从哪个存储区域加载运行。MCU启动-启动模式04MCU启动模式选择BOOT0BOOT1启动模式说明0x主FLASH启动默认启动方式,用户正常使用的模式10系统存储器该模式启动的程序功能由芯片厂家设置。芯片在出厂时预置了一段Bootloader,即ISP程序,对于CKS32F103系列产品而言,可以通过USART1接口进行程序下载。该区域是ROM,出厂后无法修改。11内置SRAM启动因SRAM掉电后,程序和数据会丢失,多数情况下SRAM启动只在调试时使用。可用该方式解除Flash的读写保护,但注意在解除读写保护的同时,Flash里的内容也会被自动清除,以防止恶意的软件拷贝。48脚封装BOOT0:第44脚(专用引脚)
BOOT1:第20脚,复用为
PB2
64脚封装BOOT0:第44脚(专用启动引脚)
BOOT1:第28脚,复用为
PB2
低功耗模式05便携式电子设备PED在日常生活中具有极其重要的作用,如笔记本电脑、手机、自动体外除颤器AED、全站仪等。这类设备通常依靠电池供电,因此在相同性能指标下,功耗越低的产品工作时间越长,所以低功耗设计对于PED产品尤为关键。CKS32F103支持睡眠、停机和待机三种低功耗模式。低功耗模式为PED产品开发提供了灵活的节能方案。除了利用这三种模式外,还可以通过降低系统时钟频率以及关闭AHB、APB总线上未使用的外设时钟,进一步降低系统功耗,全面提升PED产品的续航性能。低功耗模式05模式进入条件内核状态时钟状态SRAM/寄存器唤醒源典型用途运行模式(Run)上电复位后默认进入正常运行正常全部保持任意中断/事件正常工作睡眠模式(Sleep)SLEEP-NOWSLEEPONEXIT=0且SCR的SLEEPDEEP=0,执行WFI/WFE内核停止,外设继续HCLK关闭,外设时钟可用SRAM、寄存器保持任意中断事件等待中断,快速恢复SLEEP-ON-EXIT)SLEEPONEXIT=1且SLEEPDEEP=1执行WFI唤醒事件停止模式(Stop)配置PWR_CR的PDDS=0和LPDS位,且SLEEPDEEP=1,执行WFI/WFE内核停止PL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖北省孝感市农业专业技术职务水平能力测试(农学)复习题及答案
- 2026年湖北省咸宁市中(初)级职称水平能力测试(纺织)自测试题及答案解析
- 2026年湖北省随州市农业专业技术职务水平能力测试(农学)练习题及答案
- 2026年湖北公开遴选公务员考试(综合文秘类)考前冲刺试题及答案
- 2026年法律职业资格考试《民法》冲刺押题试卷(含答案)
- 2026年从(五方面人员)中选拔乡镇领导班子成员考试(基本素质和能力)试题及答案(广西钦州)
- 广东省江门市2024-2025学年高二上学期1月期末考试物理试题(解析版)
- 2025年云南公开遴选公务员考试(法律工作)模拟试题及答案
- 2025年上半年国家教师资格考试《综合素质》(中学)真题解析与深度
- 2025年湖北公开遴选公务员考试(综合文秘类)经典试题及答案
- 2026高考数学新高考I卷真题
- 2026云南黄金矿业集团股份有限公司第一次招聘工作人员13人笔试参考题库及答案详解
- 2026广东广州市海珠区凤阳街道第二批招聘雇员3人笔试模拟试题及答案详解
- 2026福建厦漳泉城际铁路有限责任公司社会招聘34人考试备考试题及答案解析
- (2026年)如何做好艾滋病患者的全程管理课件
- AI在生物质能源与材料中的应用
- 眉山市东坡区招聘社区网格员真题附答案详解
- 前列腺问题常见表现阐释及护理建议
- 2026春小学美术冀美版(2024)三年级下册教案(附目录)
- 2026年小学生科学实验技能竞赛试题试卷考试及答案
- 2026年生物制药研发技术职称考试题库
评论
0/150
提交评论