STM32入门学习笔记之STM32F103环境搭建(上)

发布者:Lianai最新更新时间:2024-01-12 来源: elecfans关键字:STM32  入门学习  环境搭建 手机看文章 扫描二维码
随时随地手机看文章

1.1 STM32F103单片机概述

ARM公司在ARM11以后的产品改用Cortex命名,主要分为三种,Cortex-M系列,Cortex-R系列和Cortex-A系列,Cortex系列属于ARMv7架构,这是2010年为止ARM公司最新的指令集架构,其中Cortex-M主要用于低端的嵌入式控制系统中,Cortex-R主要用于实时系统中,Cortex-A系列则是用于操作系统,智能设备和移动电话等领域,比如常见的Cortex-A15(用于Android,Ubuntu等系统中)。


意法半导体(ST公司)开发的STM32就属于Cortex-M架构,该架构细分又可以分为M0,M0+,M3,H7等,以最常见的STM32F103为例,该芯片属于Cortex-M3架构,CPU主频72MHz,内置高精度ADC,USART,CAN,USB,SDIO等模块,极大的便于产品的设计。


以STM32F103ZET6为例,该芯片封装为LQFP-144,内置资源如下所示:

(1)1组17通道高精度ADC,1组15通道ADC,1组13通道ADC,转换速度可达1us;

(2)1组2路DAC输出;

(3)8组高级定时器(可以做电容捕捉,PWM输出,基本定时等功能);

(4)高精度RTC模块,2路时钟可选;

(5)1组CAN,支持任意波特率;

(6)2组硬件IIC;

(7)3组硬件SPI;

(8)5组串口

(9)1组SDIO模块,用于外接SD卡通信;

(10)1组USB模块,可做主机,可做从机;

(11)2组I2S模块,用于I2S通信;

(12)1组CRC模块;

(13)2组看门狗模块;

(14)1组DMA模块;

1.2 STM32F103ZET6最小系统

1.2.1 原理图

图片

STM32F103的最小系统由备用电源,下载接口,滤波电容,启动端子和时钟电路组成,其中滤波电容主要用于稳定CPU电源端口电压,由于CPU电源端口有12组,所以利用12个100nF电容来稳定每个端口的电压,布线的时候,每个电容离着供电端口越近越好。

1.2.2 时钟电路

图片

单片机最小系统有两个晶体振荡器,其中8MHz提供主系统工作时钟脉冲,即CPU内核,系统总线和除RTC时钟外其他外设的工作时钟,32.768KHz时钟专用于CPU内部RTC时钟脉冲。

1.2.3 复位电路

图片

由于STM32F103属于低电平复位,所以设计了如上图所示电路进行复位,初始状态电容两端电压为0,相当于低电平,上电后,电容开始充电,随着充电时间的上升,电容两端电压呈现指数上升(电路分析中专门讲解过这部分内容),随着电容充满电,电容两端理论电压逐渐达到3.3V,此时复位结束,如果想要不断电复位,只需要按一下按键S1,按下按键后,电容对地放电,放完电后达到低电平,此时开始复位,然后重复上电复位的过程。

1.2.4 启动选择端口

图片

图片

STM32有三种启动方式,通过BOOT0和BOOT1的电平选择,具体分配如下表所示。

BOOT0BOOT1启动方式
0×FLASH启动(用户闪存器启动)
10系统存储器启动(主要用于串口下载)
11SRAM启动,主要用于在SRAM中调试代码

一般启动程序都在FLASH中启动,如果出现芯片进入低功耗模式或者禁用了调试端口,那么串口激活是唯一的办法,所以建议设计产品的时候,BOOT0和BOOT1两个引脚用0Ω电阻引出来。

1.2.5 VBAT供电

图片

VBAT供电主要用于RTC和备份区域数据不丢失使用,当外部3.3V断电之后,二极管D1处于截止状态,此时D2负极处于电平,二极管D2正向导通,通过3V纽扣电池给VBAT供电,防止RTC和备份区域的数据丢失。

1.2.6 串口下载与SW仿真

图片

图片

STM32下载程序有两种方式,一种是传统的串口模式,通过BOOT0和BOOT1启动系统存储器,然后将程序烧写进FLASH中,然后断电,设置FLASH启动后就可以启动程序,还有一种特殊的方式,就是SW模式,SW模式一种单线FLASH烧写模式,通过CLK和DATA两根线,将程序直接烧写进FLASH,并且通过这两根线进行在线仿真,可以直接将CPU中所有寄存器的值全部实时读取,用于简化调试过程。这个功能是51单片机不会有的。

1.2.7 电源电路

图片

STM32F103采用3.3V电源进行供电,但是一般USB接口或者充电宝都是输出DC5V,这就需要一个LDO来进行电压变换,将5V电压转换为3.3V电压供STM32使用。

1.3 STM32工程创建

STM32的程序也是可以使用51的IDE编写的,KEIL作为集成开发环境,现在已经可以大多数主流CPU,比如之前的51系列,这次的ST系列,还有NXP公司的iMX系列等,下面来说明如何使用KEIL来创建STM32程序。

STM32的工程不同于51的工程,需要好几个文件来支持,由于这次创建的是空白工程,所以只需要创建主函数的c文件,启动汇编文件,和STM32寄存器文件。

(1)安装ARM版本的KEIL,从KEIL官网或者文中附带的链接下载安装包,安装时记住不能有中文路径,直接安装即可。

(2)安装STM32F1系列固件库,从KEIL官网找到安装包,下载后安装(注:KEIL版本必须是ARM版本的,C51版本安装不上)。

下载固件库之后,双击安装即可。


关键字:STM32  入门学习  环境搭建 引用地址:STM32入门学习笔记之STM32F103环境搭建(上)

上一篇:基于STM32+机智云物联网平台的农作物需水量计算系统
下一篇:stm32的DMA1通道一览表,stm32使用DMA的相关操作

推荐阅读最新更新时间:2024-10-30 01:13

STM32 USB 大容量存储器Mass Storage工程的讲解
程序可以兼容官方推出来的不同系列的评估版,所以程序里经常看见类似于#ifdef STM32L1XX_MD、#ifdef USE_STM3210E_EVAL这样的宏开关语句,甚至随工程附带了两个版本的库文件,这也照成了程序理解和调试的困难。 工程随带了两个库文件:STM32F10x_StdPeriph_Driver和STM32F1xx_StdPeriph_Driver。我们当然只能选一个了,比如手我们选择 STM32F1xx_StdPeriph_Driver,只要点击该组,右键- option for Group....,钩上iinclude in Target 和always build,就可以,另一个库文件组,钩掉这两个选项就可
[单片机]
STM32如何实现可调频率、占空比的PWM波形,且可指定输出脉冲个数?
读者朋友“*imYan*”问: pwm实现频率可调和占空比可调后怎么来实现输出10个脉冲呢?我这边看有门控或者单脉冲加重复计数,黄老师平时用的什么方法? 我的回答: 使用两个TIM定时器:一个输出可调频率、占空比的PWM,一个对输出PWM脉冲计数(计时)。 1.门控方式能实现,但需要复杂的配置和计算,不推荐。 2.脉冲计数是比较实际,也是比较简单的方式; 对输出PWM脉冲计数(计时)方法有多种: 1.IO中断计数,或同步定时中断计数:用另外一个定时器,按照相同频率中断计数(类似IO中断); 2.由PWM频率和脉冲个数,计算输出全部所需的时间,使用定时中断,关闭输出PWM; 3.利用定时器外部脉冲
[单片机]
stm32驱动实例 STM32F10x_StdPeriph_Examples
1.下载 http://download.csdn.net/detail/miseli/9787037 或者 http://pan.baidu.com/s/1miRyneK 2.
[单片机]
<font color='red'>stm32</font>驱动实例 STM32F10x_StdPeriph_Examples
STM32开发 -- 开发环境搭建
一、Keil下载安装 首先需要下载安装软件Keil。 参看:Keil uVision4使用总结 参看:keil专栏 需要注意的是,GD32F105为ARM® Cortex™ -M3 32-bit MCU,所以需要下载Keil MDK。其最新版本为Keil MDK-ARM 5.24 uVision5开发工具。 再有解决:轻松解决keil4跟keil5在同一个系统下不能共存的问题 打开注册表: win+R 进入运行,输入 regedit 点开HKEY_CLASSER_ROOT选项,找到UVPROJFILE(KEIL4工程文件类型)和UVPROJXFILE(KEIL5工程文件类型) keil 4 keil 5 二、安
[单片机]
<font color='red'>STM32</font>开发 -- 开发<font color='red'>环境</font><font color='red'>搭建</font>
STM32的PWM产生主要工作
PWM信号的模式,主要做了如下工作 1.设定TIM信号周期,该周期就是PWM的周期,后期比较输出在占空比上会有变化 2.设定TIM预分频值,分频系数,计数模式 3.根据TIM_TimeBaseInitStrcut这个结构体里面的值初始化TIM 4.设定TIM的OC模式 5.TIM输出使能 6.设定电平跳变值 7.设定PWM信号的极性 8.使能TIM信号通道 9.使能TIM重载寄存器CCRX 10.使能TIM重载寄存器ARR 11.使能TIM计数器
[单片机]
怎样调试STM32硬件错误HardFault
在用 Keil 对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler 函数里的死循环while(1)中。 这说明 STM32 出现了硬件错误。 硬件错误中断 STM32出现硬件错误可能有以下原因: 数组越界操作; 内存溢出,访问越界; 堆栈溢出,程序跑飞; 中断处理错误; 遇到这种情况,可以通过以下2种方式来定位到出错代码段。 方法1: 在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击STOP停止仿真。 示例 在Keil菜单栏点击View——Registers Window,在寄存器查看窗口查找R14(LR)的值。 如果R14(
[单片机]
怎样调试<font color='red'>STM32</font>硬件错误HardFault
我的STM32艰苦入门经验体会与总结
  1.1为什么要把时间花在 犹豫 上?   每当我们在入门之前(ARM是这样,DSP也一样),总会会有很多疑问,会有很多顾虑。我们渴望知道学习STM32前景如何?需要啥基础?难不难?适不适合我?但是什么时候能心潮澎湃地、相当着急地开始学STM32?日子在一天一天过去!你开始行动了吗?没有行动的思索,永远都不可能入门!把这些时间用来看书吧,效果能好一万倍。   大家一般都是从51单片机过来的,回想一下,我们之前学单片机时如何入门呢?实际上都是先看书(理论),再玩板子(实践)。严格地说,应该是模仿实验。熟悉之后才会自己写程序代码实现某个功能。因此,如果你正在咨询STM32;如果你正对STM32心潮澎湃;如果你想入门STM32;那么,
[单片机]
STM32串口 uart
uart初始化步骤 波特率计算公式:波特率=Fpclkx /(16*USARTDIV) 以uart1为例说明uart1使用PA9,PA10 1、计算波特率参数 temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV mantissa=temp; //得到整数部分 fraction=(temp-mantissa)*16; //得到小数部分 mantissa =4; mantissa+=fraction; //波特率数值 2、PA外设时钟使能 RCC- APB2ENR|=1 2; //使能PORTA口时钟 3、UART时钟使能 RCC- APB2ENR|=1 14
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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