×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-08-21 发布时间:
|

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)。


关键字:STM32  存储器  CRC  电源 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单