视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
stm32论文
2025-10-03 14:37:12 责编:小OO
文档
山东交通学院毕业论文

汽车预警系统

院(部)别   信息科学与电气工程学院 

专    业   电气工程及其自动化     

届    别        2015              

学    号        *********         

姓    名        王岩全            

指导教师        杨仁明            

摘 要

   随着我国社会主义市场经济的快速发展和人们生活水平的不断提高,购买车辆的用户越来越多。与此同时,盗窃汽车犯罪每年以惊人的速度不断飙升,车辆防盗产品已经成为必不可少的装备。而传统的汽车报警系统存在很多问题,如作用距离短、报警器产生的噪声污染环境、且误报现象经常发生。而基于GPS全球定位系统的汽车防盗报警器有运营商,有监控中心。车主入网成本高,不适宜中、低档车,不易普及.因此有必要研制一种新的功能强、价格相对便宜的远程遥控和定位汽车报警器,没有运营监控中心,仅依托GSM公众网,利用GSM无线通信业务及短消息服务业务,对车辆进行远程监控和定位来解决上述各种问题。 

本文用华为生产的GTM900C模块,借用无线发送和接收、基带处理等功能,来实现无线数据传输和短信收发任务。课题通过介绍单片机开发的理论和对现代远程通信方式的讨论,提出了利用现有GSM网络的短消息业务实现的远程监控的种种优势,并将这种方式应用于车载防盗系统。系统采用先进的GTM900C通信模块和ATC52单片机实现互连,通过AT指令,完成利用手机对车载防盗系统各项功能的实现。随着我国社会主义市场经济的快速发展和人们生活水平的不断提高,购买车辆的用户越来越多。与此同时,盗窃汽车犯罪每年以惊人的速度不断飙升,车辆防盗产品已经成为必不可少的装备。而传统的汽车报警系统存在很多问题,如作用距离短、报警器产生的噪声污染环境、且误报现象经常发生。而基于GPS全球定位系统的汽车防盗报警器有运营商,有监控中心。车主入网成本高,不适宜中、低档车,不易普及.因此有必要研制一种新的功能强、价格相对便宜的远程遥控和定位汽车报警器,没有运营监控中心,仅依托GSM公众网,利用GSM无线通信业务及短消息服务业务,对车辆进行远程监控和定位来解决上述各种问题。 

本文用华为生产的GTM900C模块,借用无线发送和接收、基带处理等功能,来实现无线数据传输和短信收发任务。课题通过介绍单片机开发的理论和对现代远程通信方式的讨论,提出了利用现有GSM网络的短消息业务实现的远程监控的种种优势,并将这种方式应用于车载防盗系统。系统采用先进的GTM900C通信模块和ATC52单片机实现互连,通过AT指令,完成利用手机对车载防盗系统各项功能的实现。随着我国社会主义市场经济的快速发展和人们生活水平的不断提高,购买车辆的用户越来越多。与此同时,盗窃汽车犯罪每年以惊人的速度不断飙升,车辆防盗产品已经成为必不可少的装备。而传统的汽车报警系统存在很多问题,如作用距离短、报警器产生的噪声污染环境、且误报现象经常发生。而基于GPS全球定位系统的汽车防盗报警器有运营商,有监控中心。车主入网成本高,不适宜中、低档车,不易普及.因此有必要研制一种新的功能强、价格相对便宜的远程遥控和定位汽车报警器,没有运营监控中心,仅依托GSM公众网,利用GSM无线通信业务及短消息服务业务,对车辆进行远程监控和定位来解决上述各种问题。 

本文用华为生产的GTM900C模块,借用无线发送和接收、基带处理等功能,来实现无线数据传输和短信收发任务。课题通过介绍单片机开发的理论和对现代远程通信方式的讨论,提出了利用现有GSM网络的短消息业务实现的远程监控的种种优势,并将这种方式应用于车载防盗系统。系统采用先进的GTM900C通信模块和ATC52单片机实现互连,通过AT指令,完成利用手机对车载防盗系统各项功能的实现。                                          

随着我国社会主义市场经济的快速发展和人们生活水平的不断提高,购买车辆的用户越来越多。与此同时,盗窃汽车犯罪每年以惊人的速度不断飙升,车辆防盗产品已经成为必不可少的装备。而传统的汽车报警系统存在很多问题,如作用距离短、报警器产生的噪声污染环境、且误报现象经常发生。而基于GPS全球定位系统的汽车防盗报警器有运营商,有监控中心。车主入网成本高,不适宜中、低档车,不易普及.因此有必要研制一种新的功能强、价格相对便宜的远程遥控和定位汽车报警器,没有运营监控中心,仅依托GSM公众网,利用GSM无线通信业务及短消息服务业务,对车辆进行远程监控和定位来解决上述各种问题。 

本文用华为生产的SIM900模块,借用无线发送和接收、基带处理等功能,来实现无线数据传输和短信收发任务。课题通过介绍单片机开发的理论和对现代远程通信方式的讨论,提出了利用现有GSM网络的短消息业务实现的远程监控的种种优势,并将这种方式应用于车载防盗系统。系统采用先进的SIM900通信模块和STM32单片机实现互连,通过AT指令,完成利用手机对车载防盗系统各项功能的实现。   

关键词:SIM900模块,单片机,短消息,无线通信,车辆监控 

Abstract

Along  with our country socialist market economy's fast development and the improvement of people's living standard, the purchase of vehicles more and more users.At the same time, crimes of stealing cars each year at an alarming rate soaring, vehicle anti-theft products have become essential equipment.While the traditional car alarm system has many problems, such as role in a short distance, the alarm noise environment, and the false alarm phenomenon often occurs. Based on the global positioning system GPS car anti-theft alarm operator, a monitoring center. Owners of net cost high, not suitable, cheap car, not easy to popularize. Therefore it is necessary to develop a new function is strong, relatively cheap price of remote control and positioning of the car alarm, no operation monitor center, only relying on the GSM public network, the use of GSM wireless communication services and short message services, of remote vehicle monitoring and positioning to solve the various problems. 

In this paper, with Huawei production SIM900 module, borrow the wireless transmission and reception, baseband processing function, to realize wireless data transmission and messaging tasks. The subject through the introduction of MCU development theory and the modern way of remote communication is discussed, the use of existing GSM network short message service to realize remote monitoring of a variety of advantages, and in this way the application in vehicle anti-theft system. The system uses advanced SIM900 communication module and STM32chip interconnection, through the AT instruction, is completed by the use of mobile phone in vehicle anti-theft system functions to achieve.  

Keywords :The SIM900 module,Single chip microcomputer,Short message, 

Wireless communication,Vehicle monitoring 

1 前言…………………………………………………………………………………………………

 1.1课题背景……………………………………………………………………………………

  1.2研究意义…………………………………………………………………………………… 

  1.3课题的主要内容………………………………………………………………………    

2.STM32………………………………………………………………………………………………

    2.1 产品介绍………………………………………………………………………………

    2.2 历史………………………………………………………………………………………

2.3 STM32F10…………………………………………………………………………………

3.STM32之RCC

    3.1 时钟系统框图……………………………………………………………………………

3.2 STM32标准固件库…………………………………………………………………………

4 GPIO与AFIO

   4.1 GPIO功能描述………………………………………………………………………………

   4.2 复用功能(AF) ………………………………………………………………………………

   4.3 GPIO代码分析…………………………………………………………………………………

5 UART

   5.1 UART的配置步骤…………………………………………………………………………

  

结论…………………………………………………………………………………………………

致谢…………………………………………………………………………………………………

参考文献 ………………………………………………………………………………………… 

附录A………………………………………………………………………………………………

前  言

1.1课题背景 

随着车辆安全防范“道高一尺、魔高一丈”的形势变化,车辆防盗产品不断发展,目前,现有的车防盗装置主要包括机械式防盗装置、电子防盗报警装置和GPS汽车防盗系统等三大类.最先出现的是机械防盗装置,机械式防盗装置分为机械式防盗锁和断电断油装置两种。它是利用机械装置将方向盘、制动踏板、挡把锁住,或是切断点火线路、油路而使汽车不能开动。结构简单.应用最为广泛,但每次使用都要拆装,较为麻烦,而且对于偷车高手,往往不能奏效。随后出现的是电子(机电)防盗报警装置,电子防盗报警装置包括电子警报器和无线电跟踪装置,当车辆遭到非正常打开机盖、行李厢、车门,或是被碰撞时,警报器都会发出警报求救。无线电跟踪装置是在车辆安装一种小型无线电发射器,当车子被盗时,警方利用特殊装置探测出车子的下落,但是可控范围很小,并且受环境影响很大,常会出现“虚警”现象。目前市场上多数中高档车辆使用的是出现的联网防盗防劫报警(定位、跟踪)系统,也称为GPS汽车防盗系统。GPS汽车防盗系统是利用GPS全球卫星定位系统、GIS地理信息系统、计算机网络技术对车辆进行主动式实时监控、追踪定位,它能实现防盗、防动、导航等多项功能。很显然,机械防盗装置技术简单实用,通常靠自身的强度和结构实现防护,伴以锁具的某些技术难度体现了以“物防”为主、以“技防”为辅;电子(机电)防盗报警装置增多了功能、增大了技术难度,伴以一定的自身强度和结构防护体现了以“技防”为主、以“物防”为辅,同时以报警功能召唤“人防”;GPS汽车防盗系统车辆上除了防盗报警装置,还有通信装置,有的还有定位(导航)装置,因此车辆和驾驶员被置于网络监控之下,它们综合了“物防”、“技防”、“人防”三个方面,特别是车辆报警直达网络以及对车辆定位功能,使随时随地的监控成为可能,人力救援能及时介入,极大提升了“人防”的作用。当前,已经开通运营的联网防盗防劫报警系统多为报警服务公司的专业网络系统,它们的作用毋庸置疑,不仅本地防护连连得胜,还频频跨省市追捕成功。但是,和所有的网络运营面临同样的问题,即这样的网络必须有足够的入网用户数量的支撑,才能获得价格优势,在发展的初期,报警服务价格必然有个逐渐降低的过程。受到价格的影响,期望提高防范的广大车主有些观望了。能不能避开入网的价格障碍呢? 

我国目前已建成了覆盖全国的GSM数字蜂窝移动通信网,是我国公众陆地移动通信网的主要方式。GSM的短消息业务SMS(ShortMessage Service)与话音传输及传真一样,为GSM数字蜂窝移动通信网络提供的主要电信业务,它通过无线控制信道进行传输,是GSM通信网所特有的。短消息业务不需拨号建立连接,利用短消息业务中心的存储和转发功能,直接把要发的信息加上目的地址发送到短消息中心,由短消息中心再发送给最终的信宿,这种方式非常适合于利用移动电话(手机)组合汽车防盗报警装置的方案,在这种方案里,汽车防盗报警装置内置移动通信电路,与指定的车主手机以短信沟通,通过无所不在的公共通信网络,实现随时随地监控车辆的状况,并且使手机既是日常通

信工具、又是以短信遥控汽车防盗报警装置的远程遥控器,还是接受报警短信信号的接收器。装备了手机控制的汽车防盗报警装置的汽车,可以既得到车主“关注”,也可以由专业报警服务公司接收入网,其费用主要是短信费用和适当的服务费用,当然,加入专业报警服务网络,比车主的“关注”能够得到更及时、更强大的人力救援。在短消息业务快速发展的背景下,短消息在无线监控与数据采集方面的应用作为硕士论文的研究课题就有着极为重要的现实意义和实际价值。 

1.2研究意义 

基于SIM900手机的汽车防盗防盗报警系统运用汽车防盗报警技术与移动通信技术集成,在符合我国的《车辆防盗报警系统》标准的防盗报警系统主机基础上,将其与具有信息产业部进网许可证的GSM移动通讯模块通过标准串口相连,在车上的系统主机感知到发生被盗时,一方面控制发动机防止车辆被未经授权非法启用,一方面发出警情信息,又可以通过GSM移动通信网络及时、准确、有针对性地向车主的用户手机振铃、发送短信报警,向专业报警服务公司的中心电话发出报警;而车主通过用户手机向GSM移动通讯模块发送控制指令,传送给系统主机实现汽车防盗的警戒和解除、报警、开关车门,甚至可以使汽车强制熄火防止汽车被歹人驾驶,制止车辆被盗、被劫;在得到车主的授权时,专业报警服务公司的中心电话也可以发出控制指令实现这些控制。由此,可以归结基于SIM900手机的汽车防盗报警系统的特点如下: 

1)有无专业报警服务中心的中介,都可以突破地域,实现通信网络内的有效监控,覆盖范围广,反应快,而且实施与运行费用低,只需增加终端控制系统,运行时,短消息实行包制或按每条0.10(选用中国移动)元计费,整体费用低。 

2)实现车主对汽车的远距离直接控制和远距离获取车辆安全信息,车主的自主性、安全性都有保障. 

3)由车主用户手机发送控制信息实现在移动通信网范围下对汽车的远距离监控,再加上无线遥控器的近距离遥控,兼有双遥控通道,既增加了车主操作使用的便利,也提高了整个系统的安全、可靠性。 

4)车上的系统主机感知到汽车被盗时,自动向车主的用户手机振铃、发送短信报警,报警信息表达准确,具有针对性,这样的报警也是“无声报警”,避免误报警导致扰民噪音;而车主可以回发短信查询、核实汽车的状况,及时制止误报警;整个系统的报警范围达移动通信网的覆盖区域,并且是一种“环保”型的设计。 

5)车主的用户手机发送短信可以远程指令汽车实现“强制熄火”、发出报警、使车钥匙和遥控器暂时失效等功能,车主也可以授权专业报警服务中心发出这些远程指令,使车辆控制权仅限于车主的用户手机和报警服务中心,有效防止汽车在本地或异地被盗、被劫。 

6)在开通移动定位服务的区域,依托移动通信网,通过与车上的移动通讯模块保持联络,可以对车辆进行定位。  

7)可扩展性强,依托GSM公众网,建立的远程遥控和定位汽车报警器,监控范围广,系统成本低,功能较多。除了我们研制的功能终,以后还可根据市场发展和用户需要,扩展其它功能如:火灾报警、医疗求助、气体安全等。因此,该项目有较好的市场发展前景,将产生较好的经济效益和社会效益。 

总之,提高汽车防护能力的重要途径是发展网络化、信息化的汽车防盗报警系统,使车辆具有强大的防盗、防劫功能,并且能够随时得到人的关注和救援。我们研制的基于GSM手机的汽车防盗报警器正是符合这一发展方向的产品,它充分发挥公共通信网的覆盖优势以及利用在我国已经广为普及的手机,实现了网络化、信息化的汽车防盗报警系统,整个系统无需建立专门的报警网络,用户无需另外的高费用,只用随身携带的手机就获得了车主、汽车之间的远程双向控制,并且能够随时随地召唤报警服务中心的支援,是一种既可以由用户单独使用,又可以被汽车制造厂商和报警服务运营企业成批使用的产品,推动行业性的发展。 

1.3课题的主要内容 

本文围绕“单片机控制SIM900块收发短信”这一热点课题,阐述了如何利用GSM模块结合PC机和单片机系统,将短消息业务与数据传输结合起来,实现了远端单片机数据采集、通讯,主控端数据接收、控制与计算机接口通信等相关技术,在设计中利用ATMEL公司的8位STM32单片机和华为公司的GSM模块SIM900实现了一款具有短信收发功能的汽车防盗报警系统。

1 stm32

1.1 stm32简介

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

在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括KB到256KB闪存和 20KB到KB嵌入式SRAM。新系列采用LQFP、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。 截至2010年7月1日,市面流通的型号有: 基本型:STM32F101R6、STM32F101C8、STM32F101R8、STM32F101V8、STM32F101RB、STM32F101VB 增强型:STM32F103C8、STM32F103R8、STM32F103V8、STM32F103RB、STM32F103VB、 STM32F103VE、STM32F103ZE STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下: 

1 STM32 STM32代表ARM Cortex-M内核的32位微控制器。 

2 F F代表芯片子系列。 

3 103 103代表增强型系列。 

4 R R这一项代表引脚数,其中T代表36脚,C代表48脚,R代表脚,V代表100脚,Z代表144脚,I代表176脚。 

5 B B这一项代表内嵌Flash容量,其中

6代表32K字节Flash,

8代表K字节Flash,

B代表128K字节Flash,

C代表256K字节Flash,

D代表384K字节Flash,

E代表512K字节Flash,

G代表1M字节Flash。 

6 T T这一项代表封装,其中

H代表BGA封装,

T代表LQFP封装,

U代表VFQFPN封装。 

7 6 6这一项代表工作温度范围,其中

6代表-40——85℃,

7代表-40——105℃。

1.2 历史

意法半导体 (STMicroelectronics) 集团于1987年6月成立,是由意大利的SGS 微电子公司和法国Thomson 半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics 将公司名称改为意法半导体有限公司,意法半导体是世界最大的半导体公司之一。从成立之初至今,ST 的增长速度超过了半导体工业的整体增长速度。自1999年起,ST 始终是世界十大半导体公司之一。据最新的工业统计数据,意法半导体 (STMicroelectronics) 是全球第五大半导体厂商,在很多市场居世界领先水平。例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列。 意法半导体 (STMicroelectronics) 整个集团共有员工近 50000 名,拥有16 个先进的研发机构、39 个设计和应用中心、15 主要制造厂,并在 36 个国家设有 78 个销售办事处。公司总部设在瑞士日内瓦,同时也是欧洲区以及新兴市场的总部;公司的美国总部设在德克萨斯州达拉斯市的卡罗顿;亚太区总部设在新加坡;日本的业务则以东京为总部;中国区总部设在上海,负责、和三个地区的业务。 自1994年12月8日首次完成公开发行股票以来,意法半导体已经在纽约证券交易所 (交易代码:STM) 和泛欧巴黎证券交易所挂牌上市,1998年6月,又在意大利米兰证券交易所上市。意法半导体拥有近 9 亿股公开发行股票,其中约 71.1% 的股票是在各证券交易所公开交易的。另外有 27.5% 的股票由意法半导体控股 II B.V. 有限公司持有,其股东为 Finmeccanica 和 CDP 组成的意大利 Finmeccanica 财团和 Areva 及法国电信组成的法国财团;剩余 1.4% 的库藏股由意法半导体公司持有。 ST 超低功耗 ARM Cortex™-M3 微控制器   STM32L 系列产品基于超低功耗的 ARM Cortex-M3 处理器内核,采用意法半导体独有的两大节能技术:130nm 专用低泄漏电流制造工艺和优化的节能架构,提供业界领先的节能性能。该系列属于意法半导体阵容强大的 32 位 STM32 微控制器产品家族,该产品家族共有 180 余款产品,全系列产品共用大部分引脚、软件和外设,优异的兼容性为开发人员带来最大的设计灵活性。 ST 超低功耗 ARM Cortex™-M0 微控制器   STM32F0 系列产品基于超低功耗的 ARM Cortex-M0 处理器内核,整合增强的技术和功能,瞄准超低成本预算的应用。该系列微控制器缩短了采用 8 位和 16 位微控制器的设备与采用 32 位微控制器的设备之间的性能差距,能够在经济型用户终端产品上实现先进且复杂的功能。

1.3 STM32F10

ARM公司的高性能”Cortex-M3”内核

1.25DMips/MHz,而ARM7TDMI只有0.95DMips/MHz

一流的外设

1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻转速度

低功耗

在72MHz时消耗36mA(所有外设处于工作状态),待机时下降到2μA

最大的集成度

复位电路、低电压检测、调压器、精确的RC振荡器等

简单的结构和易用的工具

参数

2V-3.6V供电

容忍5V的I/O管脚

优异的安全时钟模式

带唤醒功能的低功耗模式

内部RC振荡器

内嵌复位电路

工作温度范围:

-40°C至+85°C或105°C

101性能

36MHz CPU 多达16K字节SRAM 1x12位ADC温度传感器

103性能

特点

内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。

存储器:片上集成32-512KB的Flash存储器。6-KB的SRAM存储器。

时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。

低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。

调试模式:串行调试(SWD)和JTAG接口。

DMA:12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和UART。

3个12位的us级的A/D转换器(16通道):A/D测量范围:0-3.6 V。双采样和保持能力。片上集成一个温度传感器。

2通道12位D/A转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。

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

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

最多多达13个通信接口:2个IIC接口(SMBus/PMBus)。5个USART接口(ISO7816接口,LIN,IrDA兼容,调试控制)。3个SPI接口(18 Mbit/s),两个和IIS复用。CAN接口(2.0B)。USB 2.0全速接口。SDIO接口。

ECOPACK封装:STM32F103xx系列微控制器采用ECOPACK封装形式。

系统作用

1、集成嵌入式Flash和SRAM存储器的ARM Cortex-M3内核。和8/16位设备相比,ARM Cortex-M3 32位RISC处理器提供了更高的代码效率。STM32F103xx微控制器带有一个嵌入式的ARM核,所以可以兼容所有的ARM工具和软件。

2、嵌入式Flash存储器和RAM存储器:内置多达512KB的嵌入式Flash,可用于存储程序和数据。多达KB的嵌入式SRAM可以以CPU的时钟速度进行读写(不待等待状态)。

3、可变静态存储器(FSMC):FSMC嵌入在STM32F103xC,STM32F103xD,STM32F103xE中,带有4个片选,支持四种模式:Flash,RAM,PSRAM,NOR和NAND。3个FSMC中断线经过OR后连接到NVIC。没有读/写FIFO,除PCCARD之外,代码都是从外部存储器执行,不支持Boot,目标频率等于SYSCLK/2,所以当系统时钟是72MHz时,外部访问按照36MHz进行。

4、嵌套矢量中断控制器(NVIC):可以处理43个可屏蔽中断通道(不包括Cortex-M3的16根中断线),提供16个中断优先级。紧密耦合的NVIC实现了更低的中断处理延迟,直接向内核传递中断入口向量表地址,紧密耦合的NVIC内核接口,允许中断提前处理,对后到的更高优先级的中断进行处理,支持尾链,自动保存处理器状态,中断入口在中断退出时自动恢复,不需要指令干预。

5、外部中断/事件控制器(EXTI):外部中断/事件控制器由用于19条产生中断/事件请求的边沿探测器线组成。每条线可以被单独配置用于选择触发事件(上升沿,下降沿,或者两者都可以),也可以被单独屏蔽。有一个挂起寄存器来维护中断请求的状态。当外部线上出现长度超过内部APB2时钟周期的脉冲时,EXTI能够探测到。多达112个GPIO连接到16个外部中断线。

6、时钟和启动:在启动的时候还是要进行系统时钟选择,但复位的时候内部8MHz的晶振被选用作CPU时钟。可以选择一个外部的4-16MHz的时钟,并且会被监视来判定是否成功。在这期间,控制器被禁止并且软件中断管理也随后被禁止。同时,如果有需要(例如碰到一个间接使用的晶振失败),PLL时钟的中断管理完全可用。多个预比较器可以用于配置AHB频率,包括高速APB(PB2)和低速APB(APB1),高速APB最高的频率为72MHz,低速APB最高的频率为36MHz。

7、Boot模式:在启动的时候,Boot引脚被用来在3种Boot选项种选择一种:从用户Flash导入,从系统存储器导入,从SRAM导入。Boot导入程序位于系统存储器,用于通过USART1重新对Flash存储器编程。

8、电源供电方案:VDD ,电压范围为2.0V-3.6V,外部电源通过VDD引脚提供,用于I/O和内部调压器。VSSA和VDDA,电压范围为2.0-3.6V,外部模拟电压输入,用于ADC,复位模块,RC和PLL,在VDD范围之内(ADC被在2.4V),VSSA和VDDA必须相应连接到VSS和VDD。VBAT,电压范围为1.8-3.6V,当VDD无效时为RTC,外部32KHz晶振和备份寄存器供电(通过电源切换实现)。

9、电源管理:设备有一个完整的上电复位(POR)和掉电复位(PDR)电路。这条电路一直有效,用于确保从2V启动或者掉到2V的时候进行一些必要的操作。当VDD低于一个特定的下限VPOR/PDR时,不需要外部复位电路,设备也可以保持在复位模式。设备特有一个嵌入的可编程电压探测器(PVD),PVD用于检测VDD,并且和VPVD限值比较,当VDD低于VPVD或者VDD大于VPVD时会产生一个中断。中断服务程序可以产生一个警告信息或者将MCU置为一个安全状态。PVD由软件使能。

10、电压调节:调压器有3种运行模式:主(MR),低功耗(LPR)和掉电。MR用在传统意义上的调节模式(运行模式),LPR用在停止模式,掉电用在待机模式:调压器输出为高阻,核心电路掉电,包括零消耗(寄存器和SRAM的内容不会丢失)。

11、低功耗模式:STM32F103xx支持3种低功耗模式,从而在低功耗,短启动时间和可用唤醒源之间达到一个最好的平衡点。休眠模式:只有CPU停止工作,所有外设继续运行,在中断/事件发生时唤醒CPU;停止模式:允许以最小的功耗来保持SRAM和寄存器的内容。1.8V区域的时钟都停止,PLL,HSI和HSE RC振荡器被禁能,调压器也被置为正常或者低功耗模式。设备可以通过外部中断线从停止模式唤醒。外部中断源可以使16个外部中断线之一,PVD输出或者TRC警告。待机模式:追求最少的功耗,内部调压器被关闭,这样1.8V区域断电。PLL,HSI和HSE RC振荡器也被关闭。在进入待机模式之后,除了备份寄存器和待机电路,SRAM和寄存器的内容也会丢失。当外部复位(NRST引脚),IWDG复位,WKUP引脚出现上升沿或者TRC警告发生时,设备退出待机模式。进入停止模式或者待机模式时,TRC,IWDG和相关的时钟源不会停止。

2 STM32之RCC

2.1 时钟系统框图

STM32 RCC复位与时钟配置,忽略掉复位,首先学习时钟配置,复位以后用到再学习。

STM32有多个时钟源,分别是

HSI:上电默认启动,因精度不高所以先不采用,以后如果需要再使用

HSE:外部高速时钟,系统时钟一般采用它,经过PLL倍频作为系统时钟

LSE:外部低速时钟,一般专门用于RTC,等到RTC模块时再使用

LSI:内部低速时钟,精度不高,一般用于IWDGCLK

    时钟系统框图如下:

STM32中各个模块都有自己的时钟,当使用相应的模块时首先记得把此模块时钟开启

2.2  STM32标准固件库

void RCC_Configuration(void)

{

 ErrorStatus HSEStartUpStatus;

 //SystemInit();                                                    //完全可以使用此函数配置,但是为了学习先不用

RCC_DeInit();                                                      //复位RCC模块的寄存器,复位成缺省值

        RCC_HSEConfig(RCC_HSE_ON);                    //开启HSE时钟,用HSE的时钟作为PLL的时钟源

HSEStartUpStatus = RCC_WaitForHSEStartUp(); //获取HSE启动状态

if(HSEStartUpStatus == SUCCESS)                      //如果HSE启动成功

        {

                  FLASH_PrefetchBufferCmd(ENABLE);          //开启FLASH的预取功能

                  FLASH_SetLatency(FLASH_Latency_2);      //FLASH延迟2个周期   

                 RCC_HCLKConfig(RCC_SYSCLK_Div1);        //配置HCLK,PCLK2,PCLK1,PLL

RCC_PCLK2Config(RCC_HCLK_Div1);

                  RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

      RCC_PLLCmd(ENABLE);                              //启动PLL

      while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)

{

}                                                              //等待PLL启动完成

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  //配置系统时钟

                 while(RCC_GetSYSCLKSource() !=0x80)          

           {

}                                        

 //检查是否将HSE 9倍频后作为系统时钟

           }

}

设置时钟流程:

1.将RCC寄存器重新设置为默认值        RCC_DeInit

2.打开外部高速时钟晶振HSE              RCC_HSEConfig(RCC_HSE_ON);

3.等待外部高速时钟晶振工作              HSEStartUpStatus = RCC_WaitForHSEStartUp();

4.设置AHB时钟                                RCC_HCLKConfig;

5.设置高速APB2时钟                         RCC_PCLK2Config;

6.设置低速速APB1时钟                      RCC_PCLK1Config

7.设置PLL                                       RCC_PLLConfig

8.打开PLL                                       RCC_PLLCmd(ENABLE);

9.等待PLL工作                      while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) 

10.设置系统时钟                              RCC_SYSCLKConfig

11.判断是否PLL是系统时钟               while(RCC_GetSYSCLKSource() != 0x08)

12.打开要使用的外设时钟                  

RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

至此我们就将STM32的系统时钟配置好了,系统时钟72MHz,APH 72MHz,APB2 72MHz,APB1 32MHz,USB 48MHz

其他至于ADC什么的先用不管,用到时再设置,本次只是大体先熟悉下STM32的时钟配置流程,便于以后程序的编写

 2.3 RCC库函数

3 GPIO与AFIO

 3.1 GPIO功能描述

每个GPI/O 端口有两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR 和GPIOx_ODR),一个32位置位/ 复位寄存器(GPIOx_BSRR) ,一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR) 。 

根据数据手册中列出的每个I/O 端口的特定硬件特征, GPIO 端口的每个位可以由软件分别配置成多种模式。 

─   输入浮空 

─   输入上拉 

─   输入下拉 

─   模拟输入 

─   开漏输出 

─   推挽式输出 

─   推挽式复用功能 

─   开漏复用功能 

每个I/O 端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问( 不允许半字或字节访问) 。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/ 更改的访问;这样,在读和更改访问之间产生IRQ 时不会发生危险。

推挽与开漏

推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.

开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).

单独的位设置或位清除 

当对GPIOx_ODR 的个别位编程时,软件不需要禁止中断:在单次APB2写操作里,可以只更改一个或多个位。 

这是通过对“置位/ 复位寄存器”(GPIOx_BSRR ,复位是 GPIOx_BRR) 中想要更改的位写’1’ 来实现的。没被选择的位将不被更改。

外部中断/唤醒线 

所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。

3.2 复用功能(AF) 

使用默认复用功能前必须对端口位配置寄存器编程。 

●  对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部驱动 

注意:  也可以通过软件来模拟复用功能输入引脚,这种模拟可以通过对GPIO控制器编程来实现。此时,端口应当被设置为复用功能输出模式。显然,这时相应的引脚不再由外部驱动,而是通过GPIO控制器由软件来驱动。 

●  对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。 

●  对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被配置成浮空输入模式。 

如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。 

如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。

输入配置

当I/O 端口配置为输入时: 

●  输出缓冲器被禁止 

●  施密特触发输入被激活 

●  根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接 

●  出现在I/O 脚上的数据在每个APB2时钟被采样到输入数据寄存器 

●  对输入数据寄存器的读访问可得到I/O 状态

输出配置

当I/O 端口被配置为输出时: 

●  输出缓冲器被激活 

─   开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(P-MOS从不被激活)。 

─   推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。 

●  施密特触发输入被激活 

●  弱上拉和下拉电阻被禁止 

●  出现在I/O 脚上的数据在每个APB2时钟被采样到输入数据寄存器 

●  在开漏模式时,对输入数据寄存器的读访问可得到I/O 状态 

●  在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。

复用功能配置 

当I/O 端口被配置为复用功能时: 

●  在开漏或推挽式配置中,输出缓冲器被打开 

●  内置外设的信号驱动输出缓冲器(复用功能输出) 

●  施密特触发输入被激活 

●  弱上拉和下拉电阻被禁止 

●  在每个APB2时钟周期,出现在I/O 脚上的数据被采样到输入数据寄存器 

●  开漏模式时,读输入数据寄存器时可得到I/O 口状态 

●  在推挽模式时,读输出数据寄存器时可得到最后一次写的值。

一组复用功能I/O 寄存器允许用户把一些复用功能重新映象到不同的引脚。

模拟输入配置 

当I/O 端口被配置为模拟输入配置时: 

●  输出缓冲器被禁止; 

●  禁止施密特触发输入,实现了每个模拟I/O 引脚上的零消耗。施密特触发输出值被强置为’0’ ; 

●  弱上拉和下拉电阻被禁止; 

●  读取输入数据寄存器时数值为’0’ 。

复用功能I/O 和调试配置(AFIO) 

为了优化脚或100 脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O 配置寄存器(AFIO_MAPR) 实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。

复用表参看手册

3.3 GPIO代码分析

void LED_Config(void){

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB

RCC_APB2Periph_GPIOD , ENABLE);    

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;  //设置pin5         

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //设置推挽输出

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //口线翻转速度为50MHz

  GPIO_Init(GPIOB, &GPIO_InitStructure);        PB的5引脚进行设置

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_3;    //LED2, LED3     V7 V8

  GPIO_Init(GPIOD, &GPIO_InitStructure);       PD的6,3引脚也设置为50MHZ与推挽输出

}

例: 

/* I2C1_SCL on PB.08, I2C1_SDA on PB.09 */ 

GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);   这样就可以启用I2C1的引脚定义为PB8,PB9

库函数

函数名描述
GPIO_DeInit寄存器重设为缺省值
GPIO_AFIODeInit将复用功能(重映射事件控制和EXTI设置)重设为缺省值

GPIO_Init根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器

GPIO_StructInit把GPIO_InitStruct中的每一个参数按缺省值填入

GPIO_ReadInputDataBit读取指定端口管脚的输入
GPIO_ReadInputData读取指定的GPIO端口输入

GPIO_ReadOutputDataBit读取指定端口管脚的输出
GPIO_ReadOutputData读取指定的GPIO端口输出

GPIO_SetBits设置指定的数据端口位
GPIO_ResetBits

清除指定的数据端口位
GPIO_WriteBit设置或者清除指定的数据端口位
GPIO_Write向指定GPIO数据端口写入数据

GPIO_PinLockConfig锁定GPIO管脚设置寄存器

GPIO_EventOutputConfig选择GPIO管脚用作事件输出

GPIO_EventOutputCmd使能或者失能事件输出
GPIO_PinRemapConfig改变指定管脚的映射
GPIO_EXTILineConfig选择GPIO管脚用作外部中断线路

4 USART配置步骤

USART作为一种标准接口在应用中十分常见。本文着重分析其作为UART的配置和应用方法。

    STM32固件库使用外围设备的主要思路在STM32中,外围设备的配置思路比较固定。首先是使能相关的时钟,一方面是设备本身的时钟,另一方面如果设备通过IO口输出还需要使能IO口的时钟;最后如果对应的IO口是复用功能的IO口,则还必须使能AFIO的时钟。其次是配置GPIO,GPIO的各种属性由硬件手册的AFIO一章详细规定,较为简单。接着相关设备需要如果需要使用中断功能,必须先配置中断优先级,后文详述。然后是配置外围设备的相关属性,视具体设备而定,如果设备需要使用中断方式,必须使能相应设备的中断,之后需要使能相关设备。最后如果设备使用了中断功能,则还需要填写相应的中断服务程序,在服务程序中进行相应操作。

4.1打开时钟

由于UART的TX和RX和AFIO都挂在APB2桥上,因此采用固件库函数RCC_APB2PeriphClockCmd()进行初始化。UARTx需要分情况讨论,如果是UART1,则挂在APB2桥上,因此采用RCC_APB2PeriphClockCmd()进行初始化,其余的UART2~5均挂在APB1上。

4.2 GPIO初始化

GPIO的属性包含在结构体GPIO_InitTypeDef,其中对于TX引脚,GPIO_Mode字段设置为GPIO_Mode_AF_PP(复用推挽输出),GPIO_Speed切换速率设置为GPIO_Speed_50MHz;对于RX引脚,GPIO_Mode字段设置为GPIO_Mode_IN_FLOATING(浮空输入),不需要设置切换速率。最后通过GPIO_Init()使能IO口。

以下是TX引脚设置的实例代码:

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Pin = UART_TX_PIN[COM];

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(UART_TX_PORT[COM], &GPIO_InitStructure);

4.3 中断优先级的配置

这是STM32比较奇怪的地方,在只有一个中断的情况下,仍然需要配置优先级,其作用是使能某条中断的触发通道。STM32的中断有至多两个层次,分别是先占优先级和从优先级,而整个优先级设置参数的长度为4位,因此需要首先划分先占优先级位数和从优先级位数,通过NVIC_PriorityGroupConfig()实现;特定设备的中断优先级NVIC的属性包含在结构体NVIC_InitTypeDef中,其中字段NVIC_IRQChannel包含了设备的中断向量,保存在启动代码中;字段NVIC_IRQChannelPreemptionPriority为主优先级,NVIC_IRQChannelSubPriority为从优先级,取值的范围应根据位数划分的情况而定;最后NVIC_IRQChannelCmd字段是是否使能,一般定位ENABLE。最后通过NVIC_Init()来使能这一中断向量。实例代码如下:

/* Configure theNVIC Preemption Priority Bits */ 

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

/* Enable the USARTy Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

4.4 配置UART相关属性

通过结构体USART_InitTypeDef来确定。UART模式下的字段如下

USART_BaudRate:波特率,视具体设备而定

USART_WordLength:字长

USART_StopBits:停止位

USART_Parity:校验方式

USART_HardwareFlowControl:硬件流控制

USART_Mode:单/双工

最后通过USART_Init()来设置。实例代码为:

USART_InitStructure.USART_BaudRate= 9600;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_InitStructure.USART_Parity = USART_Parity_No;

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

USART_Init(USART1, &USART_InitStructure);

最后还要使用USART_Cmd()来启动设备UART。 

结 论

书写格式说明:

标题设置为:小三号,黑体,居中,段后0.5行,段前为0。

结论正文设置为:小四号,宋体,多倍行距 1.25,间距:前段、后段均为0行,每段落首行缩进2字。

 致 谢

书写格式说明:

标题“致谢”设置为:小三,黑体,居中,段后0.5行,段前为0。

致谢正文设置为:小四,宋体,多倍行距 1.25,每段落首行缩进2字。

参考文献

参考文献标题设置为:小三号,黑体,居中,段后0.5行,段前为0。

参考文献内容设置成字体:五号,宋体,多倍行距1.25,段前、段后均为0。

参考文献的著录,按论文中引用顺序排列。

一般做毕业设计(论文)的参考文献不宜过多,可列入10篇左右主要文献,其中外文文献在2篇以上。

示例如下:

[1] 薛华成.管理信息系统.北京:清华大学出版社,1993.

[2] 霍斯尼 R K著.李庆龙译.谷物科学与工艺学原理.北京:中国食品出版社,19.

[3] 徐滨士,欧忠文,马世宁等.纳米表面工程.中国机械工程,2000,11(6):707-712.

[4] Kuehnlw M R, Peeken H, Troeder C et al. The Toroidal Drive. Mechanical Engineering, 1981, 103 (2):32-39.

[5] 惠梦君,吴德海,柳葆凯等.奥氏体—贝氏体球铁的发展.全国铸造学会奥氏体—贝氏体球铁专业学术会议,武汉,1986.

[6] 张楠.专利题名.中国,专利文献种类,专利号.2002.下载本文

显示全文
专题