STM32学习总结——SMT32基本知识

发布者:shmilyde最新更新时间:2018-09-02 来源: eefocus关键字:STM32  基本知识 手机看文章 扫描二维码
随时随地手机看文章
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****1

找了好久,才找到问题的原因, 是因为芯片型号的错误,导致无法读取。 
这里写图片描述 这里写图片描述 
debug页面中圈起来的地方,和前面的device选择芯片的型号要完全保持一致才行!


关键字:STM32  基本知识 引用地址:STM32学习总结——SMT32基本知识

上一篇:STM32之CAN---TTCAN模式浅析
下一篇: STM32之CAN控制器

推荐阅读最新更新时间:2024-03-16 16:12

stm32软件模拟I2C
一 概述 很多人都知道stm32的硬件I2C存在BUG,现在我们通过软件模拟时序的办法来实现I2C。 使用软件模拟I2C主要是方便程序的移植,只需要更改一下相应的IO端口即可。 二 软件模拟实现 1 起始信号 void i2c_Start(void) { macI2C_SDA_1(); //首先确保SDA和SCL都是高电平 macI2C_SCL_1(); i2c_Delay(); macI2C_SDA_0(); //先拉低SDA i2c_Delay(); macI2C_SCL_0(); //在拉低SCL i2c_Delay(); } 2 总
[单片机]
基于SI4432的高性能无线收发应用平台设计
1 STM32F103和SI4432芯片简介 STM32系列是采用ARM CortexTM-M3 内核的闪存微控制器,所有功能都具有业界最优的功耗水平。在结合了高性能(最高72 MHz频率)、低功耗(睡眠、停机和待机模式)和低电压(可2.0 V~3.6 V供电)特性 的同时保持了高度的集成性能和简易的开发特性,为用户提供最大程度的灵活性。 SI4432是Silicon Labs公司的ISM频段收发一体芯片,最大输出功率达到了+20 dBm(100 mW),具有“距离之王”的美誉(空旷距离可达2 000 m)。SI4432具有特有的连续频率覆盖范围(240 MHz~960 MHz)、宽工作电压(+1.8 V~+3.6 V)、高灵
[单片机]
基于SI4432的高性能无线收发应用平台设计
STM32之SPI串行线与HC595使用
/* 名称:STM32之SPI串行线与HC595使用 说明: SPI:串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU 间,要求通讯速率较高的场合。对于SPI来说,其使用主要有四根线:分别是CS、MOSI、MISO、CLK;其中片选线CS,一般用普通的GPIO口来代替。 其次,SPI是全双工通信线路,其发送的时候同时也在接收着。因此要注意发送的时候接收的数据是否是垃圾数据。 就我理解,SPI一般用于外围的部件中,如FLASH、ADC、LCD和MCU。这些部件一般都包含了SPI接口,方便和主机进行通信。但是也有用于普通的串行线,用于一般的串行传输中。如此处的和HC59
[单片机]
stm32 PVD 可编程电压监测器
PVD (Programmable Votage Detector) ,即可编程电压监测器 。stm32库函数手册中没有细讲这个模块,只是在 PWM一章中列出了两个相关函数。但是这个功能在实际项目中会有较大的作用, 当电压过低时,对系统的一些数据使用掉电不丢失的 EEPROM 或 Flash 保存起来,同时对外设进行相应的保护操作。 PVD的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。供电下降的阀值与供电上升的PVD阀值有一个固定的差值,引入这个差值的目的是为了防止电压在阀值上下小幅抖动,而频繁地产生中断
[单片机]
<font color='red'>stm32</font> PVD 可编程电压监测器
STM32之bootloader
项目需要编写了STM32的bootloader,其实编写bootloader主要事项有以下: 1、为你的bootloader程序选择存储器地址,因为STM32的存储器FLASH存储程序代码空间为512K,需要进行划分。 2、如果需要使用JTAG在线调试,则需要配置区域: 3、为您的用户程序选择合适的存储空间: 同时配置在线调试区域: 4、bootloader程序编写基本流程如下: 1)检测有无需要更新的标志,用户可自定义。比如说读取flash某位置存储的字节作为标志位。 2)如需更新,则调用STM32的FLASH程序擦鞋用户代码部分。 3)将新的bin文件(即2进制文件直接烧写进去,需要将keil生成的he
[单片机]
STM32 PWM波驱动模拟舵机(库函数版)
数字舵机 vs 模拟舵机 “数字舵机区别于传统的模拟舵机,模拟舵机需要给它不停的发送PWM信号,才能让它保持在规定的位置或者让它按照某个速度转动,数字舵机则只需要发送一次PWM信号就能保持在规定的某个位置。” 到底模拟舵机与数码舵机在实际使用中有什么区别呢?我自己总结大致有以下几点: 1 数码舵机在位置准确度方面要高于模拟舵机。 2 在同样标称1.6公斤的舵机面前数码舵机在实际表现中会感觉更加“力气大”而模拟舵机就会“肉”点。 3 模拟舵机由于控制芯片是模拟电路,所以即便是相同型号的舵机会存在小小的性能差异,而数码舵机在一致性方面就非常好。 4 数码舵机一般均采用PID优化算法,所以,线性要好过模拟舵机。 5 对于高灵敏度
[单片机]
<font color='red'>STM32</font> PWM波驱动模拟舵机(库函数版)
STM32 NVIC 中断优先级管理
CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。但 STM32 并没有使用 CM3 内核的全部东西,而是只用了它的一部分。STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。而我们常用的就是这 68 个可屏蔽中断,但是 STM32 的 68 个可屏蔽中断,在 STM32F103 系列上面,又只有 60 个(在 107 系列才有 68 个)。 在 MDK 内,与 NVIC 相关的寄存器,MDK 为其定义了如下的结构体:   typedef struct   {   vu32 ISER ;  
[单片机]
<font color='red'>STM32</font> NVIC 中断优先级管理
stm32的DMA串口应用(以串口1为例)
stm32的DMA串口应用(以串口1为例) 1.定义宏常量 #define BuffSize 12 #define DATA_HEAD 0xAA #define DATA_END 0x55 #define USART1_DR_Address (u32)0x40013804 2.声明DMA初始化函数 void DMA_Configuration(void); 3.打开DMA1时钟 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); 4.调用初始化函数 DMA_Configuration(); 5.DMA初始化函数 void DMA_C
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved