当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]新一代嵌入式微处理器STM32F103开发与应用

     摘要: 基于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 文件生成器等。该软件提供了两种工作模式: 编译和调试模式。在编译模式中, 开发者可以创建工程、选择目标器件、新建文件、输入源代码、生成可执行文件; 调试模式中, 开发者可以利用其强大的集成调试器对应用程序进行调试, 如设置断点、单步执行等, 方便了程序错误的查找和修改。

[!--empirenews.page--]

  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 选项的配置[!--empirenews.page--]


 

图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资源的开发使用方法, 给读者提供了一个直观的印象, 为开发者更好的使用该款微处理器提供借鉴。


 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

5月8日,中星联华技术支持总监苏水金给带来《精密测试关键技术大揭秘!》,详解中星联华超低相噪微波信号源的6大核心特色,助您快速精准测试,解决尖端测试的苛刻要求。

关键字: ADC 自动编程 相噪

Arm CPU正在从根本上推动AI变革,并造福地球。Arm架构是未来AI计算的基石。​

关键字: ARM AI

ADC(Analog to Digital Converter, 模数转换器), 用于实现模拟信号向数字信号的转换。A/D转换的作用是将时间连续、幅值也连续的模拟信号(电信号)转换为时间离散、幅值也离散的数字信号(二进制...

关键字: ADC 转换原理 模拟信号

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

一直以来,ADC模数转换器都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来模数转换器的相关介绍,详细内容请看下文。

关键字: ADC 模数转换器

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片

随着通用人工智能的发展,数据中心的计算需求逐步提高。针对多模态数据、大模型的推理和训练需要更高的算力支持,而随着算力提升与之而来的还需更关注在功耗方面的优化。对于头部云计算和服务厂商而言,针对专门用例提高每瓦性能变得至关...

关键字: ARM 服务器 AI Neoverse CSS
关闭
关闭