改成问答式,便于我的云词跟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)。