系统应用举例.docx

上传人:b****5 文档编号:14454671 上传时间:2023-06-23 格式:DOCX 页数:27 大小:1.14MB
下载 相关 举报
系统应用举例.docx_第1页
第1页 / 共27页
系统应用举例.docx_第2页
第2页 / 共27页
系统应用举例.docx_第3页
第3页 / 共27页
系统应用举例.docx_第4页
第4页 / 共27页
系统应用举例.docx_第5页
第5页 / 共27页
系统应用举例.docx_第6页
第6页 / 共27页
系统应用举例.docx_第7页
第7页 / 共27页
系统应用举例.docx_第8页
第8页 / 共27页
系统应用举例.docx_第9页
第9页 / 共27页
系统应用举例.docx_第10页
第10页 / 共27页
系统应用举例.docx_第11页
第11页 / 共27页
系统应用举例.docx_第12页
第12页 / 共27页
系统应用举例.docx_第13页
第13页 / 共27页
系统应用举例.docx_第14页
第14页 / 共27页
系统应用举例.docx_第15页
第15页 / 共27页
系统应用举例.docx_第16页
第16页 / 共27页
系统应用举例.docx_第17页
第17页 / 共27页
系统应用举例.docx_第18页
第18页 / 共27页
系统应用举例.docx_第19页
第19页 / 共27页
系统应用举例.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

系统应用举例.docx

《系统应用举例.docx》由会员分享,可在线阅读,更多相关《系统应用举例.docx(27页珍藏版)》请在冰点文库上搜索。

系统应用举例.docx

系统应用举例

STM32中GPIO口与串口发送实例

--按键控制led灯闪烁频率,串口发送信息

1、单片机系统开发流程

1、需求分析

(1)确定单片机应用系统所要完成的任务和具备的功能

(2)撰写设计任务书

(3)任务书应包括定性实现的功能及系统所达到的技术指标(性能、功耗等)

(4)良好的沟通和实地调研

2、系统总体设计

(1)方案描述

(2)设计目标(实现什么功能)

(3)约束条件(体积、温度等)

(4)可行性分析

3.系统硬件设计

(原理图设计)

(1)元器件选择

(2)单片机选型(性能和封装形式)

(3)外部器件的选择

Ø依据电路、低成本

Ø集成器件

Ø单电源供电

Ø性能匹配

(PCB设计,对单元电路测试)

4、系统软件设计

(1)建立数学模型

(2)功能定义,明确软件的任务

(3)结构设计,一般采用自主运行结构

(4)绘制程序流程图

(5)程序设计

5、单片机系统仿真

(1)软件调试

采用一定的开发调试软件以及集成开发环境对已经编辑好的软件程序进行各种方式的运行,以检测软件的功能是否正常。

(2)软件仿真

(3)硬件仿真

6、单片机程序下载

二、STM32系统应用举例

1、系统总体设计

该系统实现基于ARMCortex-M3内核的STM32F103VCT6单片机循环点亮LED灯,通过按键调整LED灯的循环闪烁频率,并从串口输出闪烁频率信息。

2、硬件设计

2.1、构造STM32最小系统

2.1.1、电源电路(5V转3.3V)

芯片AMS1117-3.3

芯片AMS1117-3.3英文

图2.1

 

2.1.2、电容稳压电路

滤波作用,减少电路的振荡。

图2.2

2.1.3、外部晶振及RTC晶振电路

STM32上电复位后默认使用内部[精度8MHz左右]晶振,如果外部接了8MHz的晶振,可以切换使用外部的8MHz晶振,并最终PLL倍频到72MHz。

图2.3

 

2.1.4、系统复位

上电复位,按键复位。

图2.4

2.1.5JTAG调试接口

TCK——测试时钟输入;  

TDI——测试数据输入,数据通过TDI输入JTAG口;  

TDO——测试数据输出,数据通过TDO从JTAG口输出;  

TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。

  

可选引脚TRST——测试复位,输入引脚,低电平有效。

图2.5

2.1.6串口usart(字母缩写用大写)

芯片MAX232(实现的功能主要是电平转换CMOS电平-TTL电平,主要看内部结构和典型应用P17)

图2.6

2.1.7、BOOT0和BOOT1

STM32三种启动模式对应的存储介质均是芯片内置的,它们是:

1)用户闪存=芯片内置的Flash。

2)SRAM=芯片内置的RAM区,就是内存。

3)系统存储器=芯片内部一块特定的区域,芯片出厂时在这个区预置了一段Bootloader,就是通常说的ISP程序。

这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。

在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:

BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。

BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。

BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。

要注意的是,一般不使用内置SRAM启动(BOOT1=1BOOT0=1),因为SRAM掉电后数据就丢失。

多数情况下SRAM只是在调试时使用,也可以做其他一些用途。

如做故障的局部诊断,写一段小程序加载到SRAM中诊断板上的其他电路,或用此方法读写板上的Flash或EEPROM等。

还可以通过这种方法解除内部Flash的读写保护,当然解除读写保护的同时Flash的内容也被自动清除,以防止恶意的软件拷贝。

图2.7

一般BOOT0和BOOT1跳线都跳到0(地)。

只是在ISP下载的情况下,BOOT0=1,BOOT1=0 ,下载完成后,把BOOT0的跳线接回0,也即BOOT0=0,BOOT1=0 。

2.1.8STM32最小系统整体布局

图2.8STM32最小系统(注意BOOT引脚)

2.2、构造外部硬件电路(具体芯片使用查datasheet5)

2.2.1、串口电路

使用串口中第2,3,5脚分别为发送,接收,接地

图2.9串口电路

2.2.2、LED电路

GPIOD8,9,10,11脚控制led灯(设置IO口为推挽输出增大驱动能力)

在驱动能力较小的电路中,一般使用灌电流的方式点亮LED。

图2.10LED电路

2.2.3、按键电路

按键通过GPIOD0,1,2,3,4脚输入(设置为上拉输入,无键按下为1,有键按下为0)。

图2.11按键输入电路

3、软件设计(以MDK为例)

(1)新建工程;

(2)配置工程选项;

(3)分析系统需求,确定所使用的外设(GPIO,USART1);

(4)初始化各外设(包括所使用的时钟,外设使能等);

(5)编写Main函数;

(6)调试程序。

STM32程序开发可以有两种方式:

直接对内部寄存器编写;利用固件库中的函数编写。

3.1、新建工程

参照以下步骤新建工程(可以自己建立一个工程模板,以后使用时直接拷贝文件修改文件名即可)

 

第1步:

拷贝需要的文件到工程目录文件夹(工程模板)下

在该文件夹下建立四个文件夹

图3.1

User---用于存放自己编写的main函数,中断stm32f10x_it函数,conf配置函数

图3.2

Lib---存放库文件inc(.h头文件)和src(.c库文件)

图3.3

 

Sys---存放3内核定义文件,启动文件(汇编文件),系统文件

图3.4

Output文件用于后续生成文件的存放

第2步:

新建一个工程文件:

图3.5

 

选择CPU型号:

图3.6

询问是否复制自带的启动文件,选择否即可,我们使用ST固件库中的.

图3.7

 

第3步:

对源文件分组管理

图3.8

 

新建三个组:

userlib(ST固件库)sys(CM系列通用库)

图3.9

分组管理源文件可以使程序结构变的清晰

 

开始添加源文件

User目录添加工程文件夹下user目录中的main.cit.c(包含最基本的中断处理函数)

图3.10

 

Libraries目录添加ST固件库的所有文件(可以只添加需要的,这样编译时间较短可以增加开发效率。

但一起添加比较省事,且链接时并不会链接不使用的函数,所以并不会使目标变大)

图3.11

 

sys添加STM32需要的部分sys/core_cm3.c,sys/system_stm32f10x.c

Sys/sysstartup_stm32f10x_hd.s

(启动文件,但STM32各系列兼容性较好,如果不用特殊功能,各启动文件区别不大)

图3.12

图3.13改变文件类型

 

第4步:

设置项目选项

图3.14

(1)设置系统时钟晶振等

8MHz,ROM,RAM地址(一般默认即可)

图3.15

 

(2)设置目标输出目录

这步可以省掉,但编译一次就发现.本目录中出现了N个文件,所以有必要让输出到指定目录

图3.16

选择output文件夹

图3.17

 

(3)设置列表存储目录

图3.18

图3.19

 

(4)设置全局定义(重要):

USE_STDPERIPH_DRIVER用来定义使用ST固件库

STM32F10X_HD设置目标芯片的类型

同时勾上oneelfsectionperfunction,即相同的段只链接一次。

然后开始设置头文件搜寻目录.

图3.20

 

图3.21

注意:

添加的目录为最底层的目录,程序只搜索该目录下的文件,不会继续搜索该文件夹的下一级目录。

(5)设置项目debug(模拟/仿真器)

图3.22

 

(6)调试工具(选择芯片Flash,点Settings)

图3.23

图3.24

以上步骤完成了工程的建立与配置

3.2具体程序代码分析

(1)程序开头说明

图3.25

(2)添加头文件(右键打开查看)

主要包含一些宏定义,结构体定义,基本函数声明等

全局变量定义

图3.26

 

(3)开启外设时钟

图3.27

图3.28

 

(4)引脚配置

当你不清楚某一个函数的作用时,右键gotodefinitionof“”

图3.29

 

(5)中断配置

图3.30

 

(6)定时器配置

图3.31

 

(7)LED1~LED4跑马灯

图3.32

 

(8)按键检测

图3.33

(9)串口初始化

图3.34

(10)usart发送字节、字符串

图3.35

(11)main函数

 

图3.36

 

(12)中断函数

图3.37

 

此程序中还有不足地方,例如按键检测部分(可以用外部中断等),请自行修改。

 

开发流程的关键点总结

1.硬件设计时模拟部分与数字部分电源的隔离(例如用于AD转换的参考电压)。

注意:

此处我们使用的是已经做好的开发板,当我们自己做PCB板时,电源模块为首先调试的模块。

2.对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于滤波,并且该电容应尽量靠近MCU。

3.在电路设计上可能Boot引脚不会使用,但要求一定要外部连接电阻到地或电源,切不可悬空,其仅是用于MCU启动后,判断执行代码的起始地址。

注意:

51单片机中PSEN控制内部或外部程序访问。

4.GPIO口推动LED时,建议尽量考虑使用灌电流的方式。

5.在编程时注意格式要清晰,包括:

主函数说明,宏定义,函数定义,main函数。

6.Main函数中尽量简洁明了。

7.当含有中断函数时,尽量减少中断与main函数中自定义函数的来回调用,会因为堆栈溢出造成一些未知错误。

8.注意数据类型的匹配。

例int型送char型时容易引发错误。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2