1、在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。 内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。 2、FSMC中的DATASET和ADDSET的设置需要参看外部存储器的时序图来确定。 一般而言,DATASET指的是数据建立时间,也就是读/写信号开始到读/写信号停止(上升沿存储数据)的持续时间。(一般来说写比读快!)。 而ADDSET指的是地址建立时间,指的是片选之后到读/写操作之前的时间,这是针对SRAM来说的,如果操纵的是TFT,不存在地址线,所以此时的ADDSET就是读/写信号结束到RS电平的转换时间。 # M5 j( N, P u' \! \3 w( R1 P' V8 F) t+ T8 \ * Y8 U0 V. v7 i& i. x, E7 s 3、 & m$ {# X3 z% _+ O, o4 @0 A , }4 L$ U& x h+ D3 [& \+ T" A 4、 5、FSMC的三个配置寄存器:FSMC_BCRx(片选控制配置)、FSMC_BTRx(片选时序)、FSMC_BWTRx(片选写时序)。 6、RTC时钟配置必须要用到BKP寄存器,BKP寄存器在单片机复位、电源复位、待机唤醒模式下是不会更改值的,他的供电由VDD供电,VDD被切断后自动切换至外部的VBAT供电。 $ E! G$ J z; M! h z 7、要修改BKP寄存器的值,必须取消其写保护的标志。BKP寄存器在上电时自动写保护。 / u2 `1 x0 @! `- w2 ?# [1 ` 8、Stm32有三种省电模式: + z* ]- \5 b' L - a# o2 b1 r- u* S, q7 | 三种省电模式中,耗电量从上到下依次降低,待机模式的电流仅为2uA。 9、从待机模式中唤醒单片机等效于让单片机复位,但是电源寄存器的值会有一个标志位指示单片机是被唤醒的,不是被复位的。 10、ADC的时钟不要超过14MHz,否则转换精度会下降。最大转换速率为1MHz,即转换周期为1us(14MHz,采样周期为1.5个ADC时钟) - t: p& U' o# F* t; z- h- H3 M) H 11、Tcovn=采样时间+12.5个周期。采样时间尽量选长一点,这样精度高一些,但是转换速率下降,这也是有利必有弊。 ' P- G7 w' y6 h 12、 J! B& d# t) T5 z ]% V$ U3 v" L. ?% W. ^* l) _ 13、拿ARM7TDMI来说,T代表Thumb指令集,D是说支持JTAG调试(Debugging),M意指快速乘法器,I则对应一个嵌入式ICE模块。 : s5 p5 C& c' e/ H4 C 14、MMU作为嵌入式处理器与应用处理器的分水岭标志à具有内存管理单元的嵌入式处理器可以定位为应用处理器。 这么说M系列和A系列的处理器的区别在于A系列的处理器具有MMU单元可以进行内存模块的管理。 + d4 ^6 l x, _1 l9 d; a 15、ARM处理器有两种状态:ARM状态和Thumb状态。 ! W! B8 t) m5 Y! z# @% V * O' F0 T! Y4 p9 U2 F 16、这张图说明了一切:Thumb2指令集做了一件很伟大的事情:将16位和32位的指令集融为一体,兼容性非常强!(这么说CM3不支持某些32位ARM指令集??) 17、 18、MSP是系统复位后使用的堆栈指针,PSP由用户的代码使用。两个堆栈指针为4字节对齐!! T+ |; F+ b0 a1 z/ o 19、在ARM编程领域中,凡是打断程序运行的事件,统称为异常(exception)。 20、因为存在LR(链接寄存器),所以可支持1级的子程序调用而不用压栈到内存,大大提高了运行速度。---à这就是说,我们在编程的时候,一级调用是不会耗费太多时间的,除非是二级调用! . z. i3 t, {$ }- a$ g* N |