嵌入式概述
什么是嵌入式?嵌入式是以应用为中心,以计算机技术为基础 硬件可裁剪 适用于对体积 可靠性 功耗 性能等方面有着严格的专用计算机系统
简单来说 除了处理桌面PC和服务器之外所有的控制类设备都是嵌入式.
通用计算机和专用计算机的区别 两者的区别在于技术的发展和要求 通用计算机则是要求处理大量高效的数据而技术的要求则是总线速度的提升以及储存的拓展. 专用计算机要求可控制化 技术发展则是对可靠性进行提升
嵌入式的特点
硬件特点:
体积小 集成效率高
低功耗抗干扰能力强
面向特定的应用
软件特点:
一般采用C语言进行开发(接近底层 可以直接操作地址)
程序一般存储在 ROM和Falsh里面(好处掉电不丢失)
软件和硬件密切相关
51和STM32区别
C51属于传统的8位单片机 一般现在在大学中教学,满足不了现在的市场需求(成本低、性能高、功耗低、多任务、易用界面),一般用在小家电、消费类电子产品。
基于这样的市场需求,ARM公司推出了一款基于ARMv7架构的Cortex M3/M4的32位的内核,一般用在工控场景,ST公司就基于这个内核推出了一款新的MCU(微处理器),就叫做STM32。
芯片架构
市面上一般有 A系列 R系列 M系列
A系列:一般用于高端的智能产品
R系列:一般面向高性能实时应用
M系列:一般面向成本敏感型的产品(智能穿戴 智能家居等);
STM32应用领域
STM32属于微处理器 本身自带了通信接口(IIC UART SPI)可以控制多个设备 , STM32一般用于低功耗产品 如智能手环 扫地机器人等
STM32开发方式
STM32开发方式三种:函数库开发 寄存器开发 图形界面开发
函数库开发的优点
程序容易维护
代码可读性高
提高开发效率
缺点
相比于寄存器开发使用函数库开发的程序他的运行效率稍微低一些 大概低于10%-15%左右如不用于实时性高的产品可以忽略不记
寄存器开发
STM32属于32位的MCU,STM32内部的资源十分丰富,就导致寄存器的数量和复杂度都增大了,就要求开发人员对底层的知识掌握的非常扎实。
优点
运行效率高
节约存储空间
缺点
开发效率低
程序不容易维护
程序可读性差
一般来说在开发过程中基本不使用寄存器开发 如频繁使用中断服务函数则需要使用寄存器开发
图形界面开发
为了开发人员考虑,ST公司近几年推出了一款图形界面软件(STM32CubeMx),也被称为初始化代码生成器,用户只需要根据实际情况来选择对应的按钮和功能就可以自动生成代码,可以极大程度的提高开发效率,但是一旦程序出现问题,就不容易维护,所以适合有经验的工程师使用,图形界面软件自动生成的代码也是基于HAL库。
优点
不用写代码
开发效率高
缺点
不易维护
运行效率低
STM32开发平台
芯片本次使用的芯片则是属于STM32F407ZGT6 芯片采用ARM公司设计的CortexM4内核
主频高达168MHZ
STM32 32位MCU
32是什么?32是一次性能够处理的数据有多少位
F 基础型
407 高性能
Z 引脚数目 144
G 闪存容量1024
T 封装QFP(硬件工程师负责的)
6 温度范围 -40~+85
GPIO外设
GPIO指的是通用的输入输出端口可以由用户通过软件进行配置来进行控制 GPIO引脚需要和外设进行连接从而实现通信的采集以及实现功能
引脚说明
电源引脚 VCC VDD VSS VDDA VSSA VREF 等都属于电源引脚
晶振引脚 PC14 PC15 PH0 PH1 属于晶振引脚 当然也可以作为其他引脚进行使用
复位引脚 NRST属于复位引脚
BOOT引脚 BOOT0 是专用引脚 BOOT1属于功能引脚
GPIO引脚 芯片共有144个引脚 但GPIO引脚有114个
外设的使用
引脚的标号和芯片的编号是一一对应
代码如何编写
可以采用寄存器 函数库 HAL库三种方式编写
下面我以函数库进行编写
在GPIO.c里面会有介绍如何编写程序如我们不想自己写则直接可以使用 ST公司给的帮助手册
把main函数所需要的复制一下