STM32学习基本 存储器、CRC、电源

2019-07-13 22:55发布

改成问答式,便于我的云词跟supermeno记忆 1、STM32命名规则? 例子:STM32 F 103 C 8 T 6 A xxx 其中: (1) 产品系列 STM32:基于ARM核心的32位微控制器; (2)产品类型: F:通用型 (3)产品子系列: 101:基本型;102:USB基本型,USB2.0全速设备;103:增强型;105/107:互联型。 (4)引脚数目: T:36脚;C:48脚;R:64脚;V:100脚;z:144脚。 (5)闪存存储器容量: 4:16k;6:32k;8:64k;B:128k;C:256k;D:384k;E:512K。 (6)封装: H:BGA;T:LQFP;U:VFQFPN;Y:WLCSP64; (7)温度范围: 6:工业级:-4:0-85;7:工业级:-40-105. (8)内部编码:A或空 (9)选项:TR编带包装;xxx:三个数字,已编程的器件代号。 2、stm32中寄存器描述表中rw缩写什么意思? read/write 读写 3、stm32中寄存器描述表中r缩写什么意思? read only只读 4、stm32中寄存器描述表中w缩写什么意思? write only只写 5、stm32中寄存器描述表中rc_w1缩写什么意思? raed/clear 可读,可以通过写1清除此位,写0无影响; 6、stm32中寄存器描述表中rc_w0缩写什么意思? raed/clear 可读,可以通过写0清除此位,写1无影响; 7、stm32中寄存器描述表中rc_r缩写什么意思? read/clear by read 可读,在读时自动将此位清除为0,写0无影响。 8、stm32中寄存器描述表中rs缩写什么意思? read/set 可读也可以设置该位 9、stm32中寄存器描述表中rt_w缩写什么意思? read-only write trigger 可读此位,写0或1会触发一个事件,但是对该位状态无影响。 10、stm32中寄存器描述表中t缩写什么意思? toggle 软件只能通过写1来翻转此位,写0无影响。 11、stm32中寄存器描述表中Res.缩写什么意思? reserved 保留位。 12、stm32的小容量产品,总容量产品,大容量产品分别指什么? 指的是闪存器容量:小容量:16k-32k,中容量:64k-128k;大容量:256k-512k。 13、stm32的四个驱动单元包括? (1)cortex-M3内核D-Code总线(D-BUS); (2)系统总线(S-BUS); (3)通用DMA1; (4)通用DMA2. 14、STM32的四个被动单元? (1)内部SRAM; (2)内部闪存存储器; (3)FSMC; (4)AHB到APB的桥(AHB2APBx),他连接所有的APB设备。 15、互联型STM32与基本型STM32的驱动单元和被动单元有何不同? (1)驱动单元多出了以太网DMA; (2)被动单元没有FSMC。 16、什么是ICode总线? 该总线将Cortex™-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。 17、什么是D-Code总线? 该总线将Cortex™-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访 问)。 18、什么是系统总线Sbus? 此总线连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间 的访问。 19、什么是DMA总线? 此总线将DMA的APB2主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到 SRAM、闪存和外设的访问。 20、什么是总线矩阵? (1)总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。在互联型产品中,总线矩阵包含5个驱动部件(CPU的DCode、系统总线、以太网DMA、DMA1总线和 DMA2总线)和3个从部件(闪存存储器接口(FLITF)、SRAM和 APB2 2APB桥)。在其它产品中总线矩阵包含4个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口(FLITF)、SRAM、FSMC和 AHB2APB桥)。 (2)APB2外设通过总线矩阵与系统总线相连,允许DMA访问。 21、什么是AHB、APB桥? (1)两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。 (2)在每一次复位以后,所有除SRAM和 FLITF以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_ AHBENR来打开该外 设的时钟。 (3)当对APB寄存器进行8位或者16位访问时,该访问会被自动转换成32位的访问:桥会自动将8位或者32位的数据扩展以配合32位的向量。 22、STM32数据字节是小端模式还是大端模式? 数据字节以小端格式存放在存储器中。一个字里的最低地址字节被认为是该字的最低有效字 节,而最高地址字节是最高有效字节。 23、STM32的地址空间多大? 程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。 24、STM32中USB OTG的起始地址是多少?使用总线是哪个? 0x5000 0000~0x5003 ffff;使用AHB总线。 25、 STM32中以太网的起始地址是多少?使用总线是哪个? 0x4002 8000~0x40029fff;使用AHB总线。 26、STM32中CRC的起始地址是多少?使用总线是哪个? 0x4002 3000~0x4002 33ff;使用 AHB 总线。 27、 STM32中闪存存储器接口的起始地址是多少?使用总线是哪个? 0x4002 2000~0x4002 23ff;使用 AHB 总线。 28、STM32中复位和时钟控制(RCC)的起始地址是多少?使用总线是哪个? 0x4002 1000~0x4002 13ff;使用 AHB 总线。 29、 STM32中DMA2的起始地址是多少?使用总线是哪个? 0x4002 0400~0x4002 07ff;使用AHB总线。 30、STM32中DMA1的起始地址是多少?使用总线是哪个? 0x4002 0000~0x4002 03ff;使用AHB总线。 31、 STM32中SDIO的起始地址是多少?使用总线是哪个? 0x4001 8000 - 0x4001 83FF ;使用AHB总线。 32、STM32中ADC3 的起始地址是多少?使用总线是哪个? 0x4001 3C00 - 0x4001 3FFF;使用APB2总线。 33、STM32中 USART1 的起始地址是多少?使用总线是哪个? 0x4001 3800 - 0x4001 3BFF ;使用APB2总线。 34、STM32中TIM8定时器的起始地址是多少?使用总线是哪个? 0x4001 3400 - 0x4001 37FF;使用 APB2 总线。 35、STM32中 SPI1 的起始地址是多少?使用总线是哪个? 0x4001 3000 - 0x4001 33FF ;使用 APB2 总线。 36、STM32中TIM1定时器的起始地址是多少?使用总线是哪个? 0x4001 2C00 - 0x4001 2FFF;使用 APB2 总线。 37、STM32中 ADC2 的起始地址是多少?使用总线是哪个? 0x4001 2800 - 0x4001 2BFF;使用APB2总线。 38、STM32中ADC1的起始地址是多少?使用总线是哪个? 0x4001 2400 - 0x4001 27FF;使用APB2总线。 39、STM32中 GPIO端口G 的起始地址是多少?使用总线是哪个? 0x4001 2000 - 0x4001 23FF ;使用APB2总线。 40、STM32中 GPIO端口F 的起始地址是多少?使用总线是哪个? 0X4001 1C00 - 0x4001 1FFF ;使用APB2总线。 41、STM32中 GPIO端口E 的起始地址是多少?使用总线是哪个? 0x4001 1800 - 0x4001 1BFF ;使用APB2总线。 42、STM32中 GPIO端口D 的起始地址是多少?使用总线是哪个? 0x4001 1400 - 0x4001 17FF ;使用APB2总线。 43、STM32中 GPIO端口C 的起始地址是多少?使用总线是哪个? 0x4001 1000 - 0x4001 13FF ;使用APB2总线。 44、STM32中 GPIO端口B 的起始地址是多少?使用总线是哪个? 0X4001 0C00 - 0x4001 0FFF;使用APB2总线。 45、STM32中 GPIO端口A 的起始地址是多少?使用总线是哪个? 0x4001 0800 - 0x4001 0BFF ;使用APB2总线。 46、STM32中 EXTI 的起始地址是多少?使用总线是哪个? 0x4001 0400 - 0x4001 07FF ;使用APB2总线。 47、STM32中 AFIO 的起始地址是多少?使用总线是哪个? 0x4001 0000 - 0x4001 03FF;使用APB2总线。 //////////////////////////////////////////////////////////////////////////////////////// 48、STM32中DAC 的起始地址是多少?使用总线是哪个? 0x4000 7400 - 0x4000 77FF;使用APB1总线。 49、STM32中电源控制(PWR) 的起始地址是多少?使用总线是哪个? 0x4000 7000 - 0x4000 73FF ;使用APB1总线。 50、STM32中后备寄存器(BKP) 的起始地址是多少?使用总线是哪个? 0x4000 6C00 - 0x4000 6FFF;使用 APB1 总线。 51、STM32中bxCAN2 的起始地址是多少?使用总线是哪个? 0x4000 6800 - 0x4000 6BFF;使用 APB1 总线。 52、STM32中bxCAN1的起始地址是多少?使用总线是哪个? 0x4000 6400 - 0x4000 67FF;使用 APB1 总线。 53、STM32中USB/CAN共享的512字节SRAM 的起始地址是多少?使用总线是哪个? 0x4000 6000 - 0x4000 63FF ;使用APB1总线。 54、STM32中USB全速设备寄存器的起始地址是多少?使用总线是哪个? 0x4000 5C00 - 0x4000 5FFF;使用APB1总线。 55、STM32中I2C2 的起始地址是多少?使用总线是哪个? 0x4000 5800 - 0x4000 5BFF ;使用APB1总线。 56、STM32中I2C1 的起始地址是多少?使用总线是哪个? 0x4000 5400 - 0x4000 57FF;使用APB1总线。 57、STM32中UART5 的起始地址是多少?使用总线是哪个? 0x4000 5000 - 0x4000 53FF ;使用APB1总线。 58、STM32中UART4的起始地址是多少?使用总线是哪个? 0x4000 4C00 - 0x4000 4FFF;使用APB1总线。 59、STM32中USART3 的起始地址是多少?使用总线是哪个? 0x4000 4800 - 0x4000 4BFF;使用APB1总线。 60、STM32中USART2 的起始地址是多少?使用总线是哪个? 0x4000 4400 - 0x4000 47FF;使用APB1总线。 61、STM32中 SPI3/I2S3 的起始地址是多少?使用总线是哪个? 0x4000 3C00 - 0x4000 3FFF;使用APB1总线。 62、STM32中SPI2/I2S3 的起始地址是多少?使用总线是哪个? 0x4000 3800 - 0x4000 3BFF ;使用APB1总线。 63、STM32中独立看门狗(IWDG) 的起始地址是多少?使用总线是哪个? 0x4000 3000 - 0x4000 33FF ;使用APB1总线。 64、STM32中窗口看门狗(WWDG) 的起始地址是多少?使用总线是哪个? 0x4000 2C00 - 0x4000 2FFF ;使用APB1总线。 65、STM32中RTC 的起始地址是多少?使用总线是哪个? 0x4000 2800 - 0x4000 2BFF;使用APB1总线。 66、STM32中TIM7定时器 的起始地址是多少?使用总线是哪个? 0x4000 1400 - 0x4000 17FF;使用APB1总线。 67、STM32中TIM6定时器 的起始地址是多少?使用总线是哪个? 0x4000 1000 - 0x4000 13FF ;使用APB1总线。 68、STM32中TIM5定时器的起始地址是多少?使用总线是哪个? 0x4000 0C00 - 0x4000 0FFF;使用APB1总线。 69、STM32中 TIM4定时器的起始地址是多少?使用总线是哪个? 0x4000 0800 - 0x4000 0BFF ;使用APB1总线。 70、STM32中TIM3定时器的起始地址是多少?使用总线是哪个? 0x4000 0400 - 0x4000 07FF ;使用APB1总线。 71、STM32中TIM2定时器 的起始地址是多少?使用总线是哪个? 0x4000 0000 - 0x4000 03FF;使用APB1总线。 72、STM32F10xxx内置SRAM的容量,访问方式,起始地址分别是多少?   (1)STM32F10xxx内置64K字节的静态SRAM。   (2)它可以以字节、半字(16位)或全字(32位)访问。   (3)SRAM的起始地址是0x2000 0000。 73、STM32别名区中的每个字是如何对应位带区的相应位的?   bit_word_addr = bit_band_base + (byte_offset×32) + (bit_number×4) 其中: bit_word_addr是别名存储器区中字的地址,它映射到某个目标位。 bit_band_base是别名区的起始地址。 byte_offset是包含目标位的字节在位段里的序号 bit_number是目标位所在位置(0-31)   最后一位乘4的原因是一个word占四个字节,32位。 比如: 0x22006008 = 0x22000000 + (0x300×32) + (2×4). 对0x22006008地址的写操作与对SRAM中地址0x20000300字节的位2执行读-改-写操作有着相 同的效果。 74、STM32闪存存储器接口的特性?   ●  带预取缓冲器的读接口(每字为2×64位) ●  选择字节加载器 ●  闪存编程/擦除操作 ●  访问/写保护 75、闪存存储器分为哪两部分?   闪存存储器有主存储块和信息块组成:   (1)主存储块:   小容量产品主存储块最大为4K×64位,每个存储块划分为32个1K字节的页; 中容量产品主存储块最大为16K×64位,每个存储块划分为128个1K字节的页; 大容量产品主存储块最大为64K×64位,每个存储块划分为256个2K字节的页; 互联型产品主存储块最大为32K×64位,每个存储块划分为128个2K字节的页。   (2)信息块:   互联型产品有2360×64位,其它产品有258×64位。 76、STM32闪存的读取是怎样进行的?   (1)闪存的指令和数据访问是通过AHB总线完成的。   (2)预取模块是用于通过ICode总线读取指令的。   (3)裁是作用在闪存接口,并且DCode总线上的数据访问优先。 77、STM32读访问有哪些配置选项?   (1)等待时间;   (2)预取缓冲区(2个64位);   (3)半周期。 78、如何理解STM32读闪存中的等待周期的配置;   (1) 等待周期体现了系统时钟(SYSCLK)频率与闪存访问时间的关系: 0等待周期,当0 < SYSCLK < 24MHz 1等待周期,当24MHz < SYSCLK ≤48MHz 2等待周期,当48MHz < SYSCLK ≤72MHz 。   (2)可以随时更改的用于读取操作的等待状态的数量。 79、如何理解STM32读闪存中的半周期的配置?   (1)半周期配置用于功耗优化。   (2)半周期配置不能与使用了预分频器的AHB一起使用,时钟系统应该等于HCLK时钟。该特性只能用在时钟频率为8MHz或低于8MHz时,可以直接使用的内部RC振荡器(HSI),或者是主振荡器(HSE),但不能用PLL。 80、STM32的预取缓存区的好处?   (1) 在每一次复位以后被自动打开,由于每个缓冲区的大小(64位)与闪存的带宽相同,因此只通过需一次读闪存的操作即可更新整个缓冲区的内容。   (2)由于预取缓冲区的存在,CPU可以工作在更高的主频。   (3)CPU每次取指最多为32位的字,取一条指令时,下一条指令已经在缓冲区中等待。 81、开启预取缓存区需要注意的关于时钟的问题有哪些?   (1)当AHB预分频系数不为1时,必须置预取缓冲区处于开启状态。   (2)只有在系统时钟(SYSCLK)小于24MHz并且没有打开AHB的预分频器(即HCLK必须等于SYSHCLK)时,才能执行预取缓冲器的打开和关闭操作。一般而言,在初始化过程中执行预取缓冲器的打开和关闭操作,这时微控制器的时钟由8MHz的内部RC振荡器(HSI)提供。 82、如何使用DMA访问闪存存储器?有何优势?   DMA在DCode总线上访问闪存存储器,它的优先级比ICode上的取指高。DMA在每次传送完成后具有一个空余的周期。有些指令可以和DMA传输一起执行。 83、如何理解STM32闪存的编程与擦除?   (1)闪存编程一次可以写入16位(半字)。   (2)闪存擦除操作可以按页面擦除或完全擦除(全擦除)。全擦除不影响信息块。   (3)为了确保不发生过度编程,闪存编程和擦除控制器块是由一个固定的时钟控制的。   (4)写操作(编程或擦除)结束时可以触发中断。仅当闪存控制器接口时钟开启时,此中断可以用来从WFI模式退出。 84、如何配置STM32的三种启动模式?   (1)在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。   (2)boot0=0,启动模式为主闪存存储器,主闪存存储器被选为启动区域   (3)boot[1:0]=0x01,启动模式为系统存储器系统存储器被选为启动区域;   (4)boot[1:0]=0x03,启动模式为内置SRAM内置SRAM被选为启动区域; 85、STM32进入启动模式的两种情况?   (1)在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。   (2)在从待机模式退出时,BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持为需要的启动配置。在启动延迟之后,CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。 86、主闪存存储器、系统存储器或SRAM三种启动模式访问方式的不同?   (1)从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000 0000或0x0800 0000。 (2)  从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。 (3)从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。   备注:当从内置SRAM启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,重新映射向量表至SRAM中。 87、如何启用STM32的自举程序?   (1)内嵌的自举程序存放在系统存储区,由ST在生产线上写入,用于通过可用的串行接口对闪存存储器进行重新编程:   (2)对于小容量、中容量和大容量的产品而言,可以通过USART1接口启用自举程序。   (3)对于互联型产品而言,可以通过以下某个接口启用自举程序:USART1、USART2(重映像的)、CAN2(重映像的)或USB OTG全速接口的设备模式(通过设备固件更新DFU协议)。USART接口依靠内部8MHz振荡器(HSI)运行。只有在外部使用8MHz、14.7456MHz或25MHz时钟(HSE)时,才能使用CAN或USB OTG接口。 88、什么是CRC?   (1)循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32位全字的CRC计算结果。   (2)EN/IEC 60335-1即提供了一种核实闪存存储器完整性的方法。CRC计算单元可以在程序运行时计算出软件的标识,之后与在连接时生成的参考标识比较,然后存放在指定的存储器空间。 89、STM32的CRC的主要特点是?   ( 1) 使用CRC-32(以太网)多项式:0x4C11DB7 (X32+ X26+ X23+ X22+ X16+ X12+ X11+ X10+ X8+ X7+ X4+ X2+ X +1 )   (2) 一个32位数据寄存器用于输入/ 输出   (3)CRC计算时间:4个AHB时钟周期(HCLK)   (3)通用8位寄存器(可用于存放临时数据) 90、CRC一般起什么作用? CRC技术主要应用于核实数据传输或者数据存储的正确性和完整性。比如通讯校验。 91、STM32的CRC操作主要使用哪些寄存器?   (1)CRC计算单元包括2个数据寄存器和1个控制寄存器。   (2)数据寄存器(CRC_DR): 地址偏移:0x00 ,复位值:0xFFFF FFFF   (3)独立数据寄存器(CRC_IDR) :地址偏移:0x04 ,复位值:0x0000 0000   (4)控制寄存器(CRC_CR):地址偏移:0x08 ,复位值:0x0000 0000 92、如何理解CRC_DR寄存器?   32位使用,数据寄存器位,写入CRC计算器的新数据时,作为输入寄存器;读取时返回CRC计算的结果。 92、 如何理解CRC_IDR寄存器?   (1)通用8位数据寄存器位,可用于临时存放1字节的数据。   (2)此寄存器不参与CRC计算,可以存放任何数据。   (3)寄存器CRC_CR的RESET位产生的CRC复位对本寄存器没有影响。 93、如何理解CRC_CR寄存器?   (1)位0为RESET位。   (2)复位CRC计算单元,设置数据寄存器为0xFFFF FFFF。   (3)只能对该位写’1’,它由硬件自动清’0’。 94、STM32的工作电压VDD是多少? STM32的工作电压(VDD)为2.0~3.6V,通过内置的电压调节器提供所需的1.8V电源(内核供电电压为1.8V)。 95、STM32的Vbat引脚的作用?‘ 当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源。 96、如何对stm32的AD转换器供电?   (1)为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。   (2)ADC的电源引脚为VDDA, 独立的电源地VSSA,如果有VREF-引脚(根据封装而定),它必须连接到VSSA   (3)100脚和144脚封装:为了确保输入为低压时获得更好精度,用户可以连接一个独立的外部参考电压ADC到VREF+和VREF-脚上。在VREF+的电压范围为2.4V~VDDA。   (4)64脚或更少封装:没有VREF+和VREF-引脚,他们在芯片内部与ADC的电源(VDDA)和地(VSSA)相联。 97、Vbat的供电区域(电池备份区域)包括哪些些? VBAT脚为RTC、LSE振荡器和PC13至PC15端口供电,可以保证当主电源被切断时RTC能继续工作。切换到VBAT供电的开关,由复位模块中的掉电复位功能控制。 98、描述一下Vbat是怎样工作的?   (1) 在VDD上升阶段(tRSTTEMPO)或者探测到PDR(掉电复位)之后,VBAT和VDD之间的电源开关仍会保持连接在VBAT。   (2)在VDD上升阶段,如果VDD在小于tRSTTEMPO的时间内达到稳定状态(关于tRSTTEMPO数值可参考数据手册中的相关部分),且VDD > VBAT + 0.6V时,电流可能通过VDD和VBAT之间的内部二极管注入到VBAT。   (3)如果与VBAT连接的电源或者电池不能承受这样的注入电流,强烈建议在外部VBAT和电源之间连接一个低压降二极管。   (4)如果在应用中没有外部电池,建议VBAT在外部连接到VDD并连接一个100nF的陶瓷滤波电容。 99、备份区域在Vbat供电时与Vdd供电时有何不同?   (1)VDD供电时: a、PC14和PC15可以用于GPIO或LSE引脚5 ;     b、PC13可以作为通用I/O口、TAMPER引脚、RTC校准时钟、RTC闹钟或秒输出   (2)Vbat供电时:     a、PC14和PC15只能用于LSE引脚;       b、PC13可以作为TAMPER引脚、RTC闹钟或秒输出; 100、备份区域在VDD供电作为GPIO时有何限制? 因为模拟开关只能通过少量的电流(3mA),在输出模式下使用PC13至PC15的I/O口功能是有限制的:速度必须限制在2MHz以下,最大负载为30pF,而且这些I/O口绝对不能当作电流源(如驱动LED)。