零-STM32与嵌入式

目录

一、嵌入式概述

二、微控制器的关系

三、STM32的学习原因

四、STM32的应用领域

五、STM32的就业前景

六、STM32开发方式

[(1) 寄存器开发(自己做饭,自己吃)](#(1) 寄存器开发(自己做饭,自己吃))

[(2) 函数库开发(别人做饭,自己吃)](#(2) 函数库开发(别人做饭,自己吃))

[(3) 图形库开发(别人做饭,喂你吃)](#(3) 图形库开发(别人做饭,喂你吃))

七、STM32开发平台

[(1) STM32开发平台的芯片](#(1) STM32开发平台的芯片)

[(2) STM32开发平台的资源](#(2) STM32开发平台的资源)

八、程序下载

1、固件库工程

2、STM32程序下载


一、嵌入式概述

国内定义:嵌入式就是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于对于体积、可靠性、功耗、性能等方面有严格要求的专用计算机系统,要求嵌入式开发人员对嵌入式知识体系有清晰的认知。

二、微控制器的关系

C51属于传统的8位单片机,诞生于上世纪70年代,是由Intel公司在1980年开发的MCS-51系列单片机发展出来,也被称为8051。一般现在在大学中教学,满足不了现在的市场需求(成本低、性能高、功耗低、多任务、易用界面),一般用在小家电、消费类电子产品。

基于这样的市场需求,ARM公司推出了一款基于ARMv7架构的Cortex M3/M4的32位的内核,一般用在工控场景,ST(意法半导体)公司就基于这个内核推出了一款新的MCU(微处理器),就叫做STM32。 GD32(国产芯片,兼容STM32)

三、STM32的学习原因

STM32系列芯片介于低端和高端芯片之间。相对于低端芯片而言,STM32拥有强大的内核架构、更多的片上外设、可以运行uCOS、FreeRTOS等实时操作系统,相对于高端芯片而言STM32成本更低、实时性较强。所以学习STM32是大多数嵌入式开发人员的必经之路。

需要注意:学习STM32不是仅仅对相关外设(串口、定时器....)进行学习,而是要掌握软件的设计流程,这样在设计一款产品的时候才知道如何进行(器件选型、协议选择、数据格式.....),并且大多数复杂的产品都会搭载实时操作系统,所以也要掌握实时操作系统的设计架构和使用方法。

四、STM32的应用领域

STM32属于微控制器MCU,自带了各种常用通信接口,比如 USART、 I2C、 SPI 等,可接非常多的传感器,可以控制很多的设备。一般STM32都是主要用在低功耗的产品上,如智能手环,智能门锁、微型四轴飞行器,二轴平衡车、移动POS机,智能电饭锅,3D 打印机等等。

五、STM32的就业前景

大家都清楚目前国内已经处于物联网时代,而物联网也就是指万物互联,2014年也被称为智能家居的元年,华为和很多国内的大型公司都在打造智能家居的生态链,但是目前而言还没有达到普及智能家居的程度,而国内的人口基数大,并且开放了三胎政策,所以智能家居的市场前景是非常广阔的,而华为推出了鸿蒙操作系统,鸿蒙操作系统的理念就是"一生万物,万物归一",也就是把手机当做控制终端,再结合其他的智能硬件,最终达到万物互联的程度。

六、STM32开发方式

目前主流的STM32的开发方式大体分为三种:函数库开发 + 寄存器开发 + 图形界面开发(STM32CubeMaax)!

(1) 寄存器开发(自己做饭,自己吃)

STM32的资源外设比较丰富,所以导致寄存器的数量增多并且复杂度增大,要求开发人员需要掌握底层开发的相关知识才行。

一般情况下,只有涉及对实时性要求比较高,如频繁调用的中断服务函数等才会直接使用寄存器开发,其余大部分情况下,都是使用函数库开发。

注意:必须会,面试笔试:

  • 置位: a &=~(1
  • 清除:a | =(1

(2) 函数库开发(别人做饭,自己吃)

对于函数库开发来说,ST公司一共开发了两套库(标准外设库+HAL库),对于目前的市场趋势而言,ST公司主推HAL库,已经对标准外设库停止维护,但是对于实际的开发过程而言,目前绝大多数公司都采用标准外设库进行项目的开发(更稳定,资料更多,容易维护)

STM32标准外设库是ST公司专门针对STM32提供的一系列API(函数接口),用户可以调用这些函数来配置STM32底层的寄存器,所以开发人员不需要特别关注底层寄存器操作,有利于快速开发和维护。

库是架设在寄存器和用户代码之间的代码,向下与寄存器相关,向上提供给用户相关接口。

(3) 图形库开发(别人做饭,喂你吃)

指的是利用ST公司专门设计的一款图形界面软件(STM32CubeMX)来自动生成代码,所以这款软件也被称为代码生成器,基于HAL库,用户只需要根据实际需求进行参数选择,就可以自动生成初始化代码,极大的提高了开发效率,所以也是ST公司这几年主推的一种方式。该软件内部集成的HAL库,所以生成的初始化代码也是基于HAL库的。注意:适合有经验的工程师。运行效率低。

七、STM32开发平台

(1) STM32开发平台的芯片

本次阶段的开发平台为GECM4开发板,M4开发板搭载的芯片是ST公司设计的芯片,型号为STM32F407ZET6,芯片采用的内核为ARM公司设计的Cortex M4内核(主频高达168MHZ,带DSP和FPU 浮点运算单元),对于芯片型号的说明可以参考ST公司提供的芯片选型手册。

(2) STM32开发平台的资源

  • 光敏电阻:光照越强、阻值越小(电压下降),转换出来的数字量越小
  • CH340芯片:USB转串口,将信息打印在电脑屏幕上(AA口线(两头都是USB的线))
  • 摄像头:两排排针的摄像头
  • 红外接收头:遥控器
  • mpu6050:陀螺仪
  • at24c02,i2c:存储芯片256字节
  • SPI FLASH:16M
  • 触摸屏:480*320 640*180

八、程序下载

1、固件库工程

想要开发的前提就是创建好一个工程模板,为了可以尽快的入门,所以搭建的工程是以标准外设库为例,如果想要采用标准外设库,则需要从官网下载标准外设库的源码包,并完成移植。

2、STM32程序下载

STM32想要下载程序的方法有两种:串口下载 + 下载器下载(JTAG、JLINK、STLINK...),这里就涉及到STM32启动方式(自举模式)。这里可以参考STM32F4中文参考手册的2.4章节。

STM32启动方式(自举模式)有三种:从用户闪存启动(Flash)、从系统存储器启动、从内部SRAM启动。

l 主Flash启动

指的是从用户闪存空间启动(FLash空间 512K),也是最常用的工作模式,一般用JTAG接口和SW接口下载程序的时候意味着程序要下载到Flash中,在复位之后也是从Flash运行程序。一般用户闪存(Flash)可以反复擦除10万次左右,所以不用担心芯片锁死或者被擦爆。

(1) 把开发板的BOOT引脚进行设置(BOOT0 =0,BOOT1= x),然后把JLINK下载器和开发板链接

(2) 安装JLINK下载器的驱动程序,并检查JLINK驱动安装成功,设备管理器--->通用串行总线

(3) 打开KEIL5软件,对工程进行下载配置,选择JLINK作为下载器,并设置JLINK的一些参数

(4) JLINK和Flash的配置完成后,需要对程序进行编译,编译通过后点击Download下载程序

相关推荐
智者知已应修善业36 分钟前
【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
智商偏低7 小时前
单片机之helloworld
单片机·嵌入式硬件
青牛科技-Allen8 小时前
GC3910S:一款高性能双通道直流电机驱动芯片
stm32·单片机·嵌入式硬件·机器人·医疗器械·水泵、
森焱森10 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
白鱼不小白10 小时前
stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
stm32·单片机·嵌入式硬件
S,D11 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程
芯岭技术14 小时前
PY32F002A单片机 低成本控制器解决方案,提供多种封装
单片机·嵌入式硬件
youmdt14 小时前
Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间
单片机·嵌入式硬件
嘿·嘘14 小时前
第七章 STM32内部FLASH读写
stm32·单片机·嵌入式硬件
Meraki.Zhang14 小时前
【STM32实践篇】:I2C驱动编写
stm32·单片机·iic·驱动·i2c