当前位置: 首页 > news >正文

嵌入式学习笔记——基于Cortex-M的单片机介绍

基于Cortex-M的单片机介绍

  • 前言
  • 1生产厂商及其产品线
    • 1.1ARM单片机的产品线
    • 1.2命名规则
      • 作业1
  • 2习单片机的资料准备
    • 2.1STM32开发所需手册
      • 2.1.1芯片的数据手册
        • 芯片基本信息
        • 内部结构
        • 挂接结构
          • 作业2
      • 引脚数以及片内外设数量
      • 2.1.2对应系列的编程手册
      • 2.1.3开发板对应的手册
      • 2.1.4片外外设芯片手册

前言

本文继续接着上一篇中关于Cortex-M的介绍,来记录一些关于ARM系单片机的知识。

1生产厂商及其产品线

芯片厂商在拿到ARM的授权后,会在之前的内核基础上添加自己的片内外设形成自家的单片机产品,ST(意法半导体)、GD(国产兆易创新)、NXP(恩智浦)、CW(武汉鑫源半导体)等等都是此类单片机生产厂商。还有厂家为了进一步简化电路结构还会在单片机内部添加部分运算放大器、栅极驱动以及电源管理等电路,MM(灵动微电子)Infineon(英飞凌)等等厂商都有类似的产品,例如MM32SPIN27。想要详细了解的同学可以去他们的官网查询芯片手册和产品介绍。这里着重介绍ST与GD的32为单片机。

1.1ARM单片机的产品线

在上一篇中我们知道了ARM的Cortex-M架构又细分了八个种类,在工作中最常用的是M3、M4系列,下面我们就来看看ST与GD两家厂商关于这两类内核单片机的具体产品。
首先是ST的,查询单片机以及相关资料的最好方式就是找对应公司的官网,官网上能找到绝大部分我们所需要的开发资料。
ST的中文官网链接——https://www.st.com/content/st_com/zh.html
进入官网后按照如下步骤即可进入到ST的32位单片机的产品页面。
在这里插入图片描述
在该界面我们可以查看我们想要看的单片机的参数
在这里插入图片描述
当然也可以直接在搜索框搜索例如搜索STM32F103C8T6就可以查看到关于这个单片机的数据手册等相关文件。
在这里插入图片描述
以此类推关于GD32的资料获取以及产品预览也可以在其官网进行搜索或者查询,兆易创新官网——https://www.gigadevice.com.cn/
在这里插入图片描述
通过两家的官网信息我们可以发现,两家的F1xx系列都是通用性单片机,主打一个性价比,F4xx是一个相对高端的单片机,而xxxLxx是主打低功耗的单片机、xxHxx是主打高性能可以做图像处理等复杂操作的单片机。
稍稍一对比就不难发现这两家的产品都大同小异,我们拿两家的F103C8T6来做个简单的对比
STM32F103C8T6:
在这里插入图片描述

GD32F103C8T6:
在这里插入图片描述
大致预览一下它们各自数据手册的内部结构图,可以发现,二者除了CPU主频不一样以外,其他几乎一致,截图不太清晰,为了方便大家对比,上面贴了二者数据手册的地址,可以下载下来用PDF阅读器查看。
浏览了两家产品线后,不难看出,M3系列的内核主要用在F1系列的通用性单片机上,M4系类的内核就相对高端一些,主要应用在F4系列,带有一些更高级的功能。

1.2命名规则

看完这么多产品后,是不是感觉他们的命名有些太长了,搞工科的一般都是求简,怎么简单怎么来,那么为什么关于单片机的命名要弄得如此复杂呢,答案在芯片手册中已经给出了,单片机这么长的命名,每一个字符都有其意义。
在这里插入图片描述
如上图关于STM32F103C8T6的命名规则介绍
首先STM代表生产厂家
STM----意法半导体
GD----兆易创新
F代表General-purpose也就是通用型单片机
103代表该芯片的具体型号
C代表引脚数(48PIN)
8代表64K的Flash(存代码的)决定代码量
T代表封装类型,是LQFP四面表贴型
6代表使用温度为-40度到85度
看明白了命名规则我们就能根据芯片命名去了解到他的一些具体参数了,这对于项目选型有很大的益处。

作业1

这里还放一个命名,大家可以根据一下提示写出对应的信息,评论区见

STM32F407VET6
在这里插入图片描述

2习单片机的资料准备

在弄明白主流芯片的命名规则后,对于一个项目,选型已经搞定了,接下来就是如何操作芯片实现对应功能了,也就是开发了,开发一款单片机的时候,我们需要尽可能的找到他的手册。

2.1STM32开发所需手册

2.1.1芯片的数据手册

这个是重中之重,我们以STM32F103ZET6为例,首先在上面给出的ST官网下载他的数据手册
在这里插入图片描述

芯片基本信息

打开数据手册,第一页告知了此芯片的内核Arm® 32-bit Cortex®-M3 CPU,主频72MHZ,内存:256 to 512 Kbytes of Flash memory
在这里插入图片描述

内部结构

然后是其内部结构,一般在数据手册第二章,或者在该芯片的介绍页,下图就是介绍页的内部结构示意图,其中深蓝色的部分是ARM公司提供的内核或者叫他微处理器(FPU、CPU),而浅蓝色的部分则是由ST公司自己设计的片内外设。
在这里插入图片描述
在这里插入图片描述

挂接结构

而在其数据手册还有更为详细的结构图,它描述了片内外设与微处理器的连接方式,如下图所示:
在这里插入图片描述
其中红色框代表的是ARM提供的内核,主频为48/72MHZ,
绿色框代表的是AHB总线,主频为48/72MHZ,它连接了APB1、APB2以及内核
橙色框代表的是APB2总线主频为48/72MHZ,它主要是挂接了GPIO模块以及TIM1等等片内外设
蓝色框代表的是APB1总线,主频为24/36MHZ,它连接了TIM2、TIM3、USART2、UART4、SPI2等等片内外设
以上这些对于我们编程具有很好地辅助作用,是本文的一个重点,希望大家看了有所收获
既然这么重要,那就再留一个作业,大家有兴趣的可以写在评论区。

作业2

STM32F407VE的结构图
在这里插入图片描述
在这里插入图片描述

引脚数以及片内外设数量

在芯片手册第二章就可以查阅到对应型号的GPIO数量、外设数量等等,这里有一点需要注意,
12-bitADC的通道有16个,而不是片内ADC模块有16个,片内ADC模块只有两个。
在这里插入图片描述
有关数据手册更多的信息,放到后面再进行补充,此处主要是需要掌握内部结构图,片内外设信息这些。

2.1.2对应系列的编程手册

数据手册可以使我们直观了解这款芯片的资源,片内外设的连接方式,以及其工作的必要条件;编程手册则可以让我们知道该怎么去控制这款芯片实现我们想要的功能。

2.1.3开发板对应的手册

2.1.4片外外设芯片手册

相关文章:

  • 把数组里面数值排成最小的数
  • CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)
  • Java并发简介(什么是并发)
  • 【uniapp】getOpenerEventChannel().once 接收参数无效的解决方案
  • 【蓝桥杯集训·每日一题】Acwing 3729. 改变数组元素
  • 集成电路相关书籍
  • 【项目】Vue3+TS CMS 基本搭建相关配置
  • KDHX-8700无线高压核相相序表
  • AMD发布23.2.1 新驱动 支持开年新作《魔咒之地》
  • JVM类加载机制
  • ACM第一周---周训---题目合集.
  • Java网络编程之UDP和TCP套接字
  • 最最普通程序员,如何利用工资攒够彩礼,成为人生赢家
  • 从事架构师岗位快2年了,聊一聊我对架构的一些感受和看法
  • Windows11去掉不满足系统要求的提示水印
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • DataBase in Android
  • E-HPC支持多队列管理和自动伸缩
  • JavaScript 一些 DOM 的知识点
  • JavaScript类型识别
  • React系列之 Redux 架构模式
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • WebSocket使用
  • 给github项目添加CI badge
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 最近的计划
  • #{}和${}的区别?
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (LeetCode 49)Anagrams
  • (二)学习JVM —— 垃圾回收机制
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (十六)串口UART
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)fock函数详解
  • .net core 6 redis操作类
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net 设置默认首页
  • .net 无限分类
  • .NET框架
  • /boot 内存空间不够
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • :如何用SQL脚本保存存储过程返回的结果集
  • [ C++ ] STL---string类的模拟实现
  • [@Controller]4 详解@ModelAttribute
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Android 13]Input系列--获取触摸窗口
  • [Android Pro] Notification的使用
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [BJDCTF2020]The mystery of ip1
  • [C# 基础知识系列]专题十六:Linq介绍