新一代嵌入式微处理器STM32F103的开发与应用

2011-04-28 17:25:24来源: 现代电子技术

  摘要: 基于Co rtex- M3内核的STM 32F103系列芯片是新型的32位嵌入式微处理器, 它是不需操作系统的ARM, 其性能远高于51系列单片机, 但开发过程与51系列单片机一样简便, 因而在很多应用场合可替代51系列单片机。本文从STM 32F103系列芯片性能特点和片上资源入手, 重点介绍其开发工具以及开发流程。并以温度测量为例, 具体说明了基于Keil? Vision4软件的工程建立、源程序编辑、编译, 基于J- L ink仿真器的程序下载, 程序在线调试, 片上运行等过程, 最终测量的温度转换为数字量, 通过串口发送至PC 机显示。

  1 引言

  嵌入式微处理器正越来越广泛的应用在生产生活的各个领域, 但是传统的嵌入式微处理器要么是8位的处理器, 性能有限, 要么是32位基于ARM 的微处理器在使用上需要嵌入式操作系统的支持, 比如L inux操作系统, 使得系统不够精炼。这一情况直到ARM 公司推出Cortex- M 内核才得以改善, 它无需操作系统,可以像单片机一样使用Ke il C 语言进行编程, 极大的减少了开发者的工作量。2007年6月, ST 公司及时推出了一款基于Cortex- M 3内核的新型ARM 处理器: STM32系列微处理器。本文以stm32F103处理器为例, 列举了开发需要用到的各种软硬件资源及其作用, 较详细介绍了处理器开发使用方法, 随后具体到以温度传感器检测温度这一实际应用, 给开发者提供一个更加直观的印象, 目的就是让开发者能尽快了解熟悉该处理器的特点, 掌握该系列处理器的开发使用方法。

  2 STM32F103系列微处理器简介

  STM32F103系列微处理器是首款基于ARMv7- M体系结构的32位标准RISC (精简指令集)处理器, 提供很高的代码效率, 在通常8位和16位系统的存储空间上发挥了ARM 内核的高性能。该系列微处理器工作频率为72MHz,内置高达128K 字节的Flash存储器和20K 字节的SRAM,具有丰富的通用I /O 端口。

  作为最新一代的嵌入式ARM 处理器, 它为实现MCU 的需要提供了低成本的平台、缩减的引脚数目、降低的系统功耗, 同时提供了卓越的计算性能和先进的中断响应系统。丰富的片上资源使得STM32F103系列微处理器在多种领域如电机驱动、实时控制、手持设备、PC 游戏外设和空调系统等都显示出了强大的发展潜力。

  STM32F103系列微处理器主要资源和特点如下:

  ( 1)多达51个快速I /O 端口, 所有I/O口均可以映像到16个外部中断, 几乎所有端口都允许5V 信号输入。每个端口都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉) 或其它的外设功能口。

  ( 2) 2个12位模数转换器, 多达16个外部输入通道, 转换速率可达1MH z, 转换范围为0~ 36V; 具有双采样和保持功能; 内部嵌入有温度传感器, 可方便的测量处理器温度值。

  ( 3)灵活的7路通用DMA 可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输, 无须CPU 任何干预。通过DMA可以使数据快速地移动, 这就节?? CPU 的资源来进行其他操作。DMA 控制器支持环形缓冲区的管理, 避免了控制器传输到达缓冲区结尾时所产生的中断。它支持的外设包括: 定时器、ADC、SPI、I2C和USART 等。

  ( 4)调试模式: 支持标准的20脚JTAG 仿真调试以及针对Cortex- M3内核的串行单线调试( SWD )功能。通常默认的调试接口是JTAG 接口。

  ( 5)内部包含多达7个定时器, 具体名称和功能如表1所示。

  ( 6)含有丰富的通信接口: 三个USART异步串行通信接口、两个I2C 接口、两个SPI接口、一个CAN 接口和一个USB接口, 为实现数据通信提供了保证。

  表1 各个定时器名称及其作用


  3 开发工具和流程

  3.1 开发工具

  对STM32F103系列MPU 开发前, 需要准备相应的软硬件。其中硬件主要包括STM32F103开发板(或用户目标板)、J- L ink下载仿真器等; 软件主要包括Ke il V ision4 IDE 开发平台。下面对各自的功能和特点做简要说明。

  ( 1) STM32F103开发板(或用户目标板)是开发目标对象。

  ( 2) J- L ink下载仿真器是程序下载的枢纽, 它带有的标准20芯扁平电缆可将程序通过JTAG 接口下载到处理器内部存储空间; 无需外部供电, 用USB 连接线与PC 机连接好后即可工作; 还具有下载速度快、功耗低的特点。

  ( 3) Ke il V ision4 IDE 是一个基于窗口的软件开发平台, 它集成了强大而且现代化的编辑器、工程管理器和make工具, 几乎集成了嵌入式系统开发所需的全部工具: C /C + + 编译器、宏汇编器、链接/定位器、HEX 文件生成器等。该软件提供了两种工作模式: 编译和调试模式。在编译模式中, 开发者可以创建工程、选择目标器件、新建文件、输入源代码、生成可执行文件; 调试模式中, 开发者可以利用其强大的集成调试器对应用程序进行调试, 如设置断点、单步执行等, 方便了程序错误的查找和修改。

  3.2 开发流程

  ( 1)用J- L ink仿真器将PC 机和STM32F103开发板连接起来。

  ( 2)使用K eil V ision4 IDE开发平台创建新工程, 编写源程序。

  打开Ke il V ision4 软件, 创建新的工程文件, 为该工程选择器件: STM icroe lectron ics 公司的STM32F103R8芯片, 单击确定后会弹出对话框, 提示是否选择将启动代码添加到目标工程。启动代码用来完成系统的初始化工作, 对于嵌入式系统来说是必不可少的。选择??是 将启动代码加入到目标工程, 这样可以大大节省启动代码的编写工作。工程创建完毕后, 即可在该工程下新建C 文件, 编写源程序, 完成后将其添加到工程中。最后将库文件STM32F10xRLIB 和STM32F10xDLIB 也添加到工程中。至此, 程序创建工作结束。所需源文件及功能如表2示。

  表2 完整工程所需文件


  ( 3)程序的编译、下载、仿真和调试等。

  程序编写完成后即可编译文件, 编译无错误后选择Options选项, 在D ebug程序编译链接成功之后, 选择Pro ject /Opt ions for Targe,t 打开对话框后, 选择Debug选项卡, 在U se下拉按钮中选择Cortex- M3 J- L ink, 选择好后点击settings, 在弹出的对话框中点击Add按钮, 选择STM32F10xM ed- density Flash。点击OK 完成配置。通过Load即可将程序下载到目标器件中。如图1所示。

  如果需要对程序进行在线调试, 选择S tart /Stop Debug Session, 这时可以插入断点、设置指针、单步执行、复位等, 还可以观察各个寄存器值的变化, 进行波形仿真。总之可以很方便的在线调试程序。

  4 应用程序开发实例

  下面以温度测量为例, 具体介绍STM32F103处理器的开发使用方法。该处理器带有12位逐次逼近式ADC, 其输入量程为VREF- ~ VREF+ , 在LQFP64引脚或更少的引脚封装形式中, 它们在芯片内部与ADC 的地VSSA和电源VDDA相连。由于STM32处理器在本设计中采用33V 电压供电, 因此其输入量程为0~ 33V。

  处理器内部自带一个温度传感器, 它感知到MPU 周围的温度变化, 将其转化为电压的变化。该传感器的温度适应范围很宽, 可以测量- 40℃~ + 125℃之间变化的温度值, 转换精度为±1.5 ℃ , 能够较好的满足温度测量的任务。

  4.1 AD转换和数据传输

  通常情况下, 内部温度传感器是关闭的, 为了使其正常工作, 首先需要选择ADC _IN16通道, 因为该通道是内部通道, 与温度传感器直接相连, 其次要设置相关功能寄存器ADC _CR2的TSVREFE位, 开启温度传感器和VREFINT通道。

  编写main c文件时, 首先配置系统时钟, 然后进行引脚配置, 主要是为串口数据发送和接收配置引脚,本设计采用通用I /O 口PB10作为串口发送引脚, 配置为推挽式输出, 速度为50MH z; 将通用I /O 口PB11作为串口接收引脚, 浮空输入模式。然后配置串口工作方式及中断, 设置波特率为9600Baud、8位数据位、无校验位、1位停止位、无硬件流控制。然后使能串口的中断、发送、接收。将AD 转换通道设为通道16, 使能温度传感器。检测到ADC 校准寄存器复位完成后, 启动ADC 校准, 校准完成后软件触发启动ADC 转换。

  设置w h ile无限循环, 等待串口中断, 在中断程序stm32 f10x_ it c文件中, 将转换结果数据通过串口发送到PC机。流程图如图2所示。


图1 Dubug 选项的配置


图2 温度测量流程图


图3 C + + Buider显示界面

  4.2 显示界面的设计

  在PC 机上, 使用C+ + Builder软件制作显示界面。编写串口接收程序, 将串口设置与发端一致, 接收数据时以双字节十六进制形式接收。接收到的数据大小介于0~ 0x0FFF之间, 换算为十进制数介于0~4095之间。由于VREF- = 0V, VREF+ = 3.3V, 因此, 根据数值和电压值的关系算得当前电压值。VSENSE = Data /4096* 3.3V。比如, 若当前得到十进制数值为1773, 则根据上述公式算得当前电压为1.428V。得到电压值之后, 由公式:

  TA = { ( V25 - VSEN SE ) /A vg_S lope} + 25可进一步算出当前温度值。其中, V25 为VSENSE 在25℃ 时的大小, 其值为1.43V; Avg_Slope为温度与VSENSE曲线的平均斜率, 大小为4.3mV /℃ 。根据上例得出的当前电压1428V, 可推算得温度值为25.36 ℃ 。得出结果的同时将该温度值在该界面中显示出来。结果显示如图3所示。

  5 结束语:

  基于C ortex- M3内核的STM32F103系列处理器是新型的嵌入式微处理器, 它在各方面指标上都远远优于51系列单片机, 但是其开发使用方法却和51系列单片机一样简便, 而且不需要操作系统的支持, 因此开发工作量比起传统的嵌入式系统大大减少了。这些突出的优势使得STM32系列处理器在生产生活的各个领域都有很大的发展潜力, 得到了越来越广泛的应用。本文从该款处理器的资源、性能和特点入手, 较详细的介绍了其开发工具和开发流程, 特别对K eilV ision4开发平台的使用做了详细的说明。最后以温度测量实验为例, 具体讲解了片上AD资源的开发使用方法, 给读者提供了一个直观的印象, 为开发者更好的使用该款微处理器提供借鉴。

 

关键字:STMF芯片  嵌入式微处理器  温度测量

编辑:鲁迪 引用地址:http://www.eeworld.com.cn/afdz/2011/0428/article_3669.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
STMF芯片
嵌入式微处理器
温度测量

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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