1.STM32 简介

STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM
Cortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。

2. STM32F103性能特点

1.内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。
2.存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。

3.时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz
RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。
4.低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。
5.调试模式:串行调试(SWD)和JTAG接口。
6.DMA:12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和UART。
7.2个12位的us级的A/D转换器(16通道):A/D测量范围:0-3.6 V。双采样和保持能力。片上集成一个温度传感器。
8.2通道12位D/A转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。

9.最多高达112个的快速I/O端口:根据型号的不同,有26,37,51,80,和112的I/O端口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以内的输入。

10.最多多达11个定时器:4个16位定时器,每个定时器有4个IC/OC/PWM或者脉冲计数器。2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。2个看门狗定时器(独立看门狗和窗口看门狗)。Systick定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。

11.最多多达13个通信接口:2个IIC接口(SMBus/PMBus)。5个USART接口(ISO7816接口,LIN,IrDA兼容,调试控制)。3个SPI接口(18
Mbit/s),两个和IIS复用。CAN接口(2.0B)。USB 2.0全速接口。SDIO接口。
12.ECOPACK封装:STM32F103xx系列微控制器采用ECOPACK封装形式。

3.STM32固件库
31.库简介

STM32库是由ST公司针对STM32提供的函数接口,即API。库是假设在寄存器与用户驱动层之间的代码,向上可为用户提供配置寄存器的接口,向下开发者可以调用函数接口来配置STM32的寄存器,使开发人员得以脱离最底层的寄存器操作,开发快速、易于阅读。
3.2库里面几个重要文件
(1)启动文件

启动文件是负责执行微控制器从“复位”到“开始执行main函数”中间这段时间(称为启动过程)所必须最先运行的一段汇编程序。在编写的C语言代码运行之前,需要有汇编语言为C语言的运行建立一个适合的环境,接下来才能运行相应程序。添加时应根据芯片Flash容量选择相应的文件类型。学习的过程中注意选择的核心板是密度大的还是小的,选择需要对应起来。
(2)inc和src文件。

Inc和src文件里就是ST公司针对每个STM32外设而编写的库函数文件,每个外设对应一个.c和.h后缀的文件。其中的misc.c文件,这个文件提供了外设对内核的中断向量控制器的访问函数,在配置中断时,必须把这个文件添加进工程中。
(3)stm32f10x.h文件

stm32f10x.h文件非常重要,很重,类似于51单片机的#include”reg51.h”它包含了STM32中寄存器地址和结构体类型定义,在使用STM32固件库的地方都要包含这个头文件。
(4)stm32f10x_it.c和stm32f10x_conf.h文件
stm32f10x_it.c是专门用来编写中断服务函数的,在我们编写修改前,这个文件已经定义了一些系统异常的接口,其他普通中断服务函数由我们自己添加。
(5)core_cm3.c和system_stm32f10x.c文件

core_cm3.c的作用是为采用Cortex-M3核设计SoC的芯片商设计的芯片外设提供一个进入CM3内核的接口对于其他公司的CM3系列芯片此文件也是相同的。system_stm32f10x.c文件的功能是设置系统时钟和总线时钟,所有外设都与时钟的频率有关。

4开发环境的搭建

在建立工程模板时,要新建几个文件夹,其中文件夹的名称和含义是:(野火模板)
1.USER 用来存放工程文件和用户代码,包括主函数main.c,和用户自己写的一些.c文件
2.FWlib 用来存放 STM32 库里面的 inc 和 src 这两个文件,这两个文件包含了芯片上的所有驱动。
3.CMSIS 用来存放库为我们自带的启动文件和一些 M3系列通用的文件。
4.Uotput 用来保存软件编译后输出的文件。
5.Listing 用来存放一些编译过程中产生的文件。

5.遇到问题

在进行软件仿真的过程中出现了所建立的工程存在无法仿真的情况,但是用自带的模板可以出现正确的情形。出现错误为:
******* error 65: access violation at 0x0000000C : no 'read' permission****
找了好久,才找到问题的原因, 是因为芯片型号的错误,导致无法读取。

debug页面中圈起来的地方,和前面的device选择芯片的型号要完全保持一致才行!