
1.stm32模版:
a.CMSIS 标准——stm32结构及库层次关,系解决不同的芯片厂商生产的Cortex微控制器软件的兼容性问题。(内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由ARM公司提供。设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。)
b.Libraries文件夹下是驱动库的源代码及启动文件。
c.Project 文件夹下是用驱动库写的例子跟一个工程模板。
d.还有一个已经编译好的HTML文件,是库帮助文档。内核与外设的库文件分别存放在CMSIS和STM32F10x_StdPeriph_Driver文件夹中。
e.Libraries\\CMSIS\\CM3文件夹下又分为CoreSupport和DeviceSupport文件夹。在CoreSupport中的是位于CMSIS标准的核内设备函数层 的M3核通用的源文件core_cm3.c 和头文件core_cm3.h。core_cm3.c屏蔽不同编译器的差异。core_cm3.c文件中包含了stdin.h 这个头文件主要作用是提供一些新类型定义,这些新类型定义屏蔽了在不同芯片平台时,出现的诸如int 的大小是16位,还是32 位的差异。
f.在DeviceSupport文件夹下的是启动文件、外设寄存器定义&中断向量定义层 的一些文件,system_stm32f10x.c该文件的功能是设置系统时钟和总线时钟。stm32f10x.h 这个文件非常重要,是一个非常底层的文件。所有处理器厂商都会将对内存的操作封装成一个宏,即我们通常说的寄存器,并且把这些实现封装成一个系统文件,包含在相应的开发环境中。
g.Libraries\\CMSIS\\Core\\CM3\\startup\\arm文件夹下是由汇编编写的系统启动文件,不同的文件对应不同的芯片型号,在使用时要注意。
cl:互联型产品,stm32f105/107系列
vl:超值型产品,stm32f100系列
xl:超高密度(容量)产品,stm32f101/103系列
ld:低密度产品,FLASH小于K
md:中等密度产品,FLASH= or 128
hd:高密度产品,FLASH大于128
h.Libraries\\STM32F10x_StdPeriph_Driver文件夹下有inc(include 的缩写)跟src(source的简写)这两个文件夹,这都属于CMSIS的设备外设函数 部分。src里面是每个设备外设的驱动程序,这些外设是芯片制造商在Cortex-M3核外加进去的。
i.在库目录的\\Project\\STM32F10x_StdPeriph_Template目录下,存放了官方的一个库工程模板,我们在用库建立一个完整的工程时,还需要添加这个目录下的stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h这三个文件。
stm32f10x_it.c,是专门用来编写中断服务函数的;
stm32f10x_conf.h,这个文件被包含进stm32f10x.h 文件。是用来配置使用了什么外设的头文件,用这个头文件我们可以很方便地增加或删除上面driver目录下的外设驱动函数库;
stm32f10x_conf.h这个文件还可配置是否使用“断言”编译选项,在开发时使用断言可由编译器检查库函数传入的参数是否正确,软件编写成功后,去掉“断言”编译选项可使程序全速运行。
j.CMSIS核心层关系:
2.SysTi时钟
Bit0: ENABLE
为SysTick timer 的使能位,此位为1的时候使能SysTick timer,此位为0
的时候关闭SysTick timer。
Bit1:TICKINT
为异常触发使能位,此位为1的时候并且STK_VAL计数至0时会触发
SysTick异常,此位被配置为0的时候不触发异常
Bit2:CLKSOURCE
为SysTick的时钟选择位,此位为1的时候SysTick的时钟为AHB时钟,
此位为0的时候SysTick时钟为AHB/8(AHB的八分频)。
Bit16:COUNTFLAG
为计数为0标志位,若STK_VAL计数至0,此标志位会被置1。
与SysTick控制相关的所有寄存器如图 0-2,其中上面没有介绍的
STK_CALIB寄存器是用于校准的,不常用Bit0: ENABLE
