1、在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。
, C" T" u% @) `* L. ~, r/ K9 c 5 v* a- Q# X g ~2 q' |
内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。 8 m0 K% d N1 W/ M6 j
2、FSMC中的DATASET和ADDSET的设置需要参看外部存储器的时序图来确定。
6 g* c0 `8 S/ {% r1 O# m! Y一般而言,DATASET指的是数据建立时间,也就是读/写信号开始到读/写信号停止(上升沿存储数据)的持续时间。(一般来说写比读快!)。 + h ~0 V: @3 [) D: n, ]
而ADDSET指的是地址建立时间,指的是片选之后到读/写操作之前的时间,这是针对SRAM来说的,如果操纵的是TFT,不存在地址线,所以此时的ADDSET就是读/写信号结束到RS电平的转换时间。
6 C! j4 w4 c5 ~: L' ^1 A$ l! c5 i0 O/ b7 L( Z
3、 * U+ r- c6 y H
+ n& y: V& m2 B' L* P2 q$ t7 d$ [4、 7 r, @9 u) ?1 @
# b+ z0 [9 z( J4 v
5、FSMC的三个配置寄存器:FSMC_BCRx(片选控制配置)、FSMC_BTRx(片选时序)、FSMC_BWTRx(片选写时序)。 & O* B1 L8 ]8 P) B
6、RTC时钟配置必须要用到BKP寄存器,BKP寄存器在单片机复位、电源复位、待机唤醒模式下是不会更改值的,他的供电由VDD供电,VDD被切断后自动切换至外部的VBAT供电。 - ~5 a- C( `7 D4 C2 G( e
7、要修改BKP寄存器的值,必须取消其写保护的标志。BKP寄存器在上电时自动写保护。 , U# y6 G% J# D. @" f
8、Stm32有三种省电模式: 2 S0 ~$ P5 b$ L
& q: U7 M" L1 r1 C$ h4 @0 K. ^
三种省电模式中,耗电量从上到下依次降低,待机模式的电流仅为2uA。 2 d7 T- ~2 c2 o2 n$ ^
9、从待机模式中唤醒单片机等效于让单片机复位,但是电源寄存器的值会有一个标志位指示单片机是被唤醒的,不是被复位的。 U. X2 _1 _' a, I/ c& s& r
10、ADC的时钟不要超过14MHz,否则转换精度会下降。最大转换速率为1MHz,即转换周期为1us(14MHz,采样周期为1.5个ADC时钟) 2 j7 r" F( K0 b& I
11、Tcovn=采样时间+12.5个周期。采样时间尽量选长一点,这样精度高一些,但是转换速率下降,这也是有利必有弊。 ) V3 [. N! i& V' C& e
12、
2 i* G) D8 u) {9 }: V
7 `" i% u9 J8 {* R! A13、拿ARM7TDMI来说,T代表Thumb指令集,D是说支持JTAG调试(Debugging),M意指快速乘法器,I则对应一个嵌入式ICE模块。
7 J8 i4 a" V" d( w8 c& C14、MMU作为嵌入式处理器与应用处理器的分水岭标志à具有内存管理单元的嵌入式处理器可以定位为应用处理器。
# ` B& b7 r9 W- P9 i; }这么说M系列和A系列的处理器的区别在于A系列的处理器具有MMU单元可以进行内存模块的管理。
& T8 ]: z* Z7 H5 ^0 j6 R. M15、ARM处理器有两种状态:ARM状态和Thumb状态。
0 I3 M: K% j1 _. a* M" o7 W
, q, e0 N8 }/ w16、这张图说明了一切:Thumb2指令集做了一件很伟大的事情:将16位和32位的指令集融为一体,兼容性非常强!(这么说CM3不支持某些32位ARM指令集??) " t" t# ^) H* }0 |1 w& S
17、 0 ~' l y, w: \* y. @# u) \
9 F7 {4 j( q) V. D7 k+ v18、MSP是系统复位后使用的堆栈指针,PSP由用户的代码使用。两个堆栈指针为4字节对齐!! . A- _# L0 }: n# k9 e
19、在ARM编程领域中,凡是打断程序运行的事件,统称为异常(exception)。 0 [ Y# z$ t. n3 C
20、因为存在LR(链接寄存器),所以可支持1级的子程序调用而不用压栈到内存,大大提高了运行速度。---à这就是说,我们在编程的时候,一级调用是不会耗费太多时间的,除非是二级调用!
# G' o1 X" g+ L* [1 t4 i) O: F' B8 m# M# G
|