为了进一步明确STM32103系列MCU的内部资源。我们可以从两份资料着手学习。一份是《STM32中文资料》,一份是 《STM32F103中文资料》,您的英文水平如果还可以,那么您就使用原版的英文资料。但是因为中文资料是厂家提供的。那我们基本可以放心使用了。
我们查看《STM32中文资料》的第二节《存储器和总线架构》,也就是资料的第25页。《STM32中文资料》相当详细,总共754页。如果打印出来非常多。因为一般厚一点的书也就500页左右。我们不必一次看完。因为有些功能您可能暂时用不着。比如您如果不做变频,PWM也许就用不着。如果您做调压控制USB也许永远用不着。但是前面几个章节还是有必要了解一下。一般来说半年熟悉一个MCU应用已经很好了。
我们先来看看下图,下图来源于《STM32中文资料》。我们只是初识一下。这是STM32的内部结
构。
Cortex-M3是处理器核,其余是外设。通过总线与外设通讯,形成系统。首先是ICode是指令总线,falsh通过flash接口与 Cortex-M3连接。完成指令的读取。DCode总线通过总线矩阵与其他外设相连。也就是说任意设备包括串口、ADC、DMA等数据可以直接通过DCode总线到达Cortex-M3。在这里我们可以发现 唯独Icode总线不经过总线矩阵。为什么?我以为可能是指令都是存储在flash中。而一个系统中指令数量应该是最多的,所以为了提高效率icode总线不经过总线矩阵。SRAM是数据区。原子使用的是STM32F103RBT6,有20KRAM,128Kflash。8bit的51是永远达不到的。在我见过的51单片最大RAM也就4K,flash64K.当要做一个图形驱动时常常捉襟见肘。 DMA通道合计有12个。可以在座ADC项目时使用DMA。可以提高程序效率。因为不用再从ADC寄存器中读取值。System总线通过总线矩阵完成DMA与外设通讯。AHB总线通过桥接1、与桥接2将低速设备与总线矩阵连接起来。和明显一部分外设是挂接在APB1和APB2上。通过RCC时钟可以控制AHB总线上外设工作和不工作。这样可以节省一部分功率。FSMC总线可以用来连接存储设备或者TFT屏幕。
以上只是STM32的内部基本功能。下面我们看看上节STMF103的内部基本框图
这幅图就更加详细,Cortex-M3处理器可以工作的频率是72M。这当然是通过PLL实现的。同样的外部晶振通过PLL您就有很多选择。比如1倍频、2倍频等。自由度是很大的。NVIC是嵌套中断向量控制器。SW/JTAGE是调试端口。到底选择JTAGE还是SW作为调试方法,其中优缺点原子有介绍。JTAGE占的端口多一些。TPIU与Trace/trig以及pbus、TraceControl我还不了解其用途。欢迎大家和我分享。POWER可以将3.3V转换1.8V,提供给其他设备使用,可以降低能耗。OSC_IN、OSC_OUT接入外部时钟后可以产生各种时钟。当然您如果对时钟精度要求不严,比如您不做串口通讯。可以使用内部时钟,这样可以节省成本。OSC32_IN、OSC_OUT接入32K时钟后可以作为RTC使用。在以前如果需要时钟必须使用DS1302等芯片来实现。
在APB1、APB2总线上挂接了所有的外设,定时器4个、串口3个、SPI 2个、I2C 2个、GPIO 5组、ADC 2个、温度传感器 1个。