嵌入式技术是整个物联网系统的关键核心技术之一。它相当于感知层大脑的,将感知层的传感器部分统一起来,实现具体的功能,是整个物联网的底层基础部分。

嵌入式的开发,最核心部分是芯片的开发。目前嵌入式开发主要有单片机、嵌入式linux等。其中单片机以其功能强大、性价比高,在物联网这一行业中占据了大半江山。

4.1 初识STM32F407芯片

本节介绍单片机和STM32F407芯片。

4.1.1 单片机介绍

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

4.1.2 STM32F407芯片

本书选用ST(意法半导体)推出的STM32F407系列芯片。它是ST(意法半导体)推出了以基于ARM Cortex™-M4为内核的高性能微控制器,其采用了90 纳米的NVM 工艺和ART(自适应实时存储器加速器,Adaptive Real-Time MemoryAccelerator™)。

根据市场相关统计,2017年STM32系列芯片出货为10亿颗。作为全球最大的半导体公司之一,ST拥有广泛的产品线,传感器、功率器件、汽车产品和嵌入式处理器解决方案,在物联网生态中起到重要作用。而其中MCU 是最重要的业务之一,官方数据显示,2017年,ST在通用微控制器市场份额约占据19%,公司拥有超过800款的STM32产品,超过50000个客户。

图4.1 STM32F407芯片

使用STM32F407作为开发主要是基于以下几点理由:

1)性价比高。

STM32F407VET6型号单颗采购价为13元左右,批量价格会更低一点。

2)市场大,开发资料多。

作为全球最受欢迎的芯片,目前市场上绝大部分公司都是基于STM32系列的芯片做开发,企业招聘也基本都要求会STM32。同时网上有很多成熟方案,相关论坛。

3)性能强大。

STM32F407提供了工作频率为168 MHz的Cortex™-M4内核(具有浮点单元)的性能。从Flash存储器执行时,STM32F407/417能够提供210 DMIPS/566 CoreMark性能,并且利用意法半导体的ART加速器实现了FLASH零等待状态。DSP指令和浮点单元扩大了产品的应用范围。

4)外设资源。丰富

2个USB OTG(其中一个支持HS)

音频:专用音频PLL和2个全双工I²S

通信接口多达15个(包括6个速度高达11.25 Mb/s的USART、3个速度高达45 Mb/s的SPI、3个I²C、2个CAN和1个SDIO)

模拟:2个12位DAC、3个速度为2.4 MSPS或7.2 MSPS(交错模式)的12位ADC

定时器多达17个:频率高达168 MHz的16和32位定时器

可以利用支持Compact Flash、SRAM、PSRAM、NOR和NAND存储器的灵活静态存储器控制器轻松扩展存储容量

基于模拟电子技术的真随机数发生器

4.3 GPIO口操作

在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。对设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种“通用可编程I/O端口”,也就是GPIO。

4.3.1 LED硬件原理图

本章节将通过操作LED亮灭的方式,来实现对STM32F407的GPIO口操作。翻看开发板LED相关的硬件原理图,如图4.17所示。

图4.17 LED原理图

根据原理图以及LED灯的特性,我们可知:当LED0、LED1、LED2引脚输出低电平的时候,三个LED灯将会发光。反之输出高电平的时候,三个LED灯将熄灭。

而LED0、LED1、LED2三个引脚又分别对应到STM32F407芯片上的GPIOE_3、GPIOE_4、GPIOG_9。故而,LED的亮灭操作可以转化成STM32F407的引脚输出操作。

4.3.2 STM32F407的GPIO口介绍

1)分组

STM32F407有7组IO。分别为GPIOA~GPIOG,每组IO有16个IO口,共有112个IO口  通常称为 PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。

2GPIO的复用

STM32F4 有很多的内置外设,这些外设的外部引脚都是与 GPIO 共用的。也就是说,一个引脚可以有很多作用,但是默认为IO口,如果想使用一个 GPIO内置外设的功能引脚,就需要GPIO的复用,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。    比如说串口  就是GPIO复用为串口

3GPIO的输入模式

GPIO_Mode_IN_FLOATING 浮空输入

GPIO_Mode_IPU 上拉输入

GPIO_Mode_IPD 下拉输入

GPIO_Mode_AIN 模拟输入

4GPIO的输出模式

GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉)

GPIO_Mode_AF_OD 复用开漏输出(带上拉或者下拉)

GPIO_Mode_Out_PP 推挽输出(带上拉或者下拉)

GPIO_Mode_AF_PP 复用推挽输出(带上拉或者下拉)

4GPIO的最大输出速度

2MHZ  (低速)

25MHZ  (中速)

50MHZ  (快速)

100MHZ  (高速)

4.3.3 STM32标准外设库

STM32标准外设库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。

因此,使用固态函数库可以大大减少开发者开发使用片内外设的时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。同时,STM32官方还给出了大量的示例代码以供学习。

STM32标准外设库可以到ST官网下载,也可以直接使用本书附录部分提供的下载好的STM32标准外设库。

使用keil MDK编写代码时,我们需要将STM32标准外设库添加到工程中去。这里推荐读者直接使用附录已经添加好的工程文件。

(转载)初识STM32F407芯片相关推荐

  1. (转载)初识小波变换——傅里叶变换的局限性

    原文链接:https://www.cnblogs.com/jfdwd/p/9249850.html      https://blog.csdn.net/m0_37269455/article/det ...

  2. [转载]初识Windows 脚本文件(*.wsf)

    初识Windows 脚本文件(*.wsf) Windows 脚本文件(*.wsf) 是含有可扩展标记语言 (XML) 代码的文本文档,它综合了几个可增强脚本灵活性的功能.由于 Windows 脚本文件 ...

  3. STM32F407 芯片的学习 day07 iic通信方式 主芯片 与 at24c02之间的通讯

    IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行线,用于连接微控制器及其外围设备.它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发 ...

  4. 初识flash芯片----写之前为什么要先擦除

    虽然一开始工作就接触过flash芯片,但都是应用层次的接触,并没有直接接触到flash驱动. 直到最近要基于驱动接口直接操作flash芯片,才发现自己对它的使用特定一点都不了解. 先说一下自己的问题, ...

  5. STM32芯片烧录的三种方式介绍,串口、STM32 ST-LINK Utility以及STM32CubeProgrammer

    STM32芯片烧录的三种方式介绍,串口.STM32 ST-LINK Utility以及STM32CubeProgrammer 1 概述 1.1资源概述 1.2 STM32串口烧录方式 2.KEIL软件 ...

  6. 微信小程序把view居中_初识微信小程序

    "晓程序" 小程序连载笔记,通俗易懂,欢迎各位转发关注学习.未经作者授权,禁止转载 初识小程序 什么是微信小程序 微信小程序,小程序的一种,英文名Wechat Mini Progr ...

  7. 基于stm32f407的智能风扇系统

    内容及过程 的主要内容是设计并制作一个基于stm32f407的智能风扇系统,这个智能风扇系统能够实现测量是否有人出现,是否温度过高,是否有火灾险情出现,这个系统完美解决了电力资源浪费以及在危险环境下处 ...

  8. c语言设计模拟闹钟主函数,基于STM32F407的四重感觉人体自然唤醒仪器设计

    葛听雨 薛文彬 吴兴强 谢逸 摘要:现代生活不可避免的需要在清晨用闹钟来唤醒忙碌的工作者,而睡眠质量是关于人的身体健康的重要问题.传统的唤醒仪器,如普通闹钟,在闹铃工作的时候难以恰巧遇到被唤醒者的浅睡 ...

  9. 登堂入室之soc初识

    初识soc芯片 基础 关于QG2101A? 自带mac与phy DDR? 扩展 什么是soc? 什么又是GPU? GPU与CPU的不同? GPU应用场景? 什么又是NPU? 什么是xboot? 搞了低 ...

最新文章

  1. SAP项目各模块简明调研提纲(一本通)
  2. poj 2677 tour
  3. springboot controller调用service_绝了!Dataway让SpringBoot不在需要Controller、Service、DAO......
  4. 机场精细化管理_精细化管理 | 西安咸阳国际机场关于深入推进精细化管理工作的指导意见(九)...
  5. mysql 当前记录集不支持书签_关于使用视图进行分页时出现当前记录集不支持书签的错误解决方法及原因(asp)...
  6. Tennis Game CodeForces - 496D(唯一分解定理,费马大定理)
  7. EasyUI的databox取值
  8. 如何知道是哪个进程造成死锁?如何把这个进程杀掉?
  9. 极客大学架构师训练营 框架开发 第三次作业
  10. CSS半透明边框效果
  11. 2022-2028全球放射性废物管理系统行业调研及趋势分析报告
  12. 磁盘压缩卷只能压缩一半
  13. 蓬莱与威海的几尊塑像
  14. 计算机学报是期刊论文吗,《计算机学报》北大核心电子期刊发表技巧
  15. 解决:Jackson反序列化Java内部类失败(序列化后的识别码为LinkedHashMap,而非内部类本身)
  16. 小程序导航图标_商场寻店不迷路 业内首个小程序AR导航上线
  17. CTFshow刷题日记-WEB-JAVA(web279-300)Struts2全漏洞复现,Java漏洞复现
  18. 我的2022和2023(技术总结、开发工具简介和未来展望)
  19. 交换机和服务器维护,【实用】PacketTracer 5.2之交换机和路由器的维护实验
  20. 要坚固也要柔韧,小鹏汽车超高质量,让车身硬碰撞、软着陆

热门文章

  1. oracle更新所有数据,ORACLE数据库升级详细步骤
  2. mac做电影特效用什么软件?NUKE 11 for mac版11.3v4激活版最火的特效软件
  3. HDU 6264 Super-palindrome(思维)
  4. 24小时精通网上开店与赚钱 pdf电子书
  5. 开源项目之八分钟启动开源微同小程序商城
  6. 【连载】【FPGA黑金开发板】NIOS II那些事儿--串口实验(六)
  7. TMS570学习3-内部Flash编程
  8. 利用bastille配置安全的linux系统
  9. 清华数据结构任务调度AC100
  10. 【翻译】使用Modernizr探测HTML5/CSS3新特性