两年前开始接触嵌入式物联网,从最开始的51到后面的STM8再到STM32,从WiFi到ZigBee再到NB-IoT,学的东西越来越杂,但是现在回过头来又发现自己好像什么都不会,刚好趁着这次疫情好好总结下自己这两年来的点点滴滴。最早开始学习 STM32 是用的正点原子的一块开发板,后面也陆续买过几块别家的板子,但是相比较之下还是感觉正点原子的稍微好一些,资料更全面,视频讲解也很到。,如果有同学刚开始学习STM32的话,可以去B站看下原子哥的视频,当然最好还是买一块开发板来动手操作,我一直认为实践才是最高效的学习方法。
嵌入式系统概述
- 嵌入式系统定义:以应用为中心,以计算机技术为基础,软硬件可按需求进行定制,从而满足各种设计指标。与通用计算机系统不同在于它是为某些特定任务而设计的。
- 体系结构:嵌入式硬件(处理器、外围设备)+嵌入式软件(操作系统、应用软件)
- 微控制器与微处理器
- 微处理器更多的指处理器的部分,即CPU
- 微控制器除了处理器之外,还集成了内存,定时器,存储单元(Flash),DMA和其他外设接口,是一个片上计算机。
- 系统芯片:也是在单个芯片上集成一个完整的系统,由一个中央控制单元通过总线控制其他子系统模块,一般采用多个处理器核心。
- 常见外设接口和总线:
- 串行通信接口:RS-232、I2C、SPI等
- USB接口
- 多媒体卡接口:SD卡、CF卡等
- 网络接口:有线和无线网络等
- GPIO、模数/数模转换(ADC/DAC)接口
- 嵌入式操作系统:抢占式调度机制、响应时间短、内核可裁剪、可移植性强
- 在线调试:通过嵌入式处理器内部的硬件控制模块和调试状态来实现,需要利用在线仿真器(ICE)、JTAG或SWD等实现。
- 嵌入式系统特点:
- 是面向应用,及有很强的专用性,需要根据应用需求进行软硬件裁剪和配置。
- 有实时性的要求,并且要求能够和外部环境进行数据采集、交互和实时响应
- 软硬件资源受到严格限制,通常都有小型化、轻量化、低功耗和低成本的要求
STM32初探
- 什么是STM32
- 基于ARM内核的32位MCU系列,内核为ARM公司的Cortex-M内核(为要求高性能、低成本、低功耗的嵌入式应用专门设计)
- Cortex-M4采用ARMv7-ME架构,Cortex-M0采用ARMv6-M架构,Cortex-A5/A8采用ARMv7-A架构,传统ARM7采用ARMv4T架构
- ARMv7架构(2007年后)定义了三大分工明确的系列
- “A”系列:面向尖端的基于虚拟内存的操作系统和用户应用
- “R”系列:针对实时系统
- “M”系列:针对微控制器
- STM32F4XX:
- Cortex-M4内核:浮点运算能力、增强的DSP处理指令
- 更多的存储空间:高达1M字节的片上内存、高达196K字节的内嵌SRAM、FSMC灵活的外部存储接口
- 极致的运行速度:以168MHz高速运行时可达到210DMIPS的处理能力
- 更高级的外设:照相机接口、加密处理器、USB高速OTG接口、FIFO DMA控制器
- 运行模式:程序和代码在Flash或RAM中,开启ARM加速
- STM32命名规则:
- STM32优势:
- 极高的性能
- 丰富合理的外设,合理的功耗,合理的价格
- 强大的软件支持:丰富的软件包
- 全面丰富的技术文档
- 芯片型号种类多,覆盖面广
- 强大的用户基础
如有错误,请批评指正!