1.STM32编程通常有两种方法:一种是寄存器编程,另外一种是固件库编程。寄存器编程是基础,而固件库是寄存器编程的基础上升级而来的编程方法,是需要重点掌握的编程方法。

2.STM32F103采用的是Cortex-M3内核,由ARM公司设计。ARM公司并不生成芯片,二十出售其芯片技术授权。芯片生产厂商负责在内核之外设计部件并生产整个芯片。这些内核之外的部件被称为核外外设,如GPIO、USART、IIC、SPI等。

3.存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配。给存储器分配地址的过程称为存储器映射,给存储器再分配一个地址就叫存储器重映射。

4.存储器的地址空间中,平均分成了8块,有3块非常重要,Block0被设计成内部Flash,Block1被设计成内部RAM,Block2被设计成片上的外设。根据外设的总线速度不同,Block2被分成了APB和AHB两部份,APB又被分为APB1和APB2。APB1挂载低速外设,也叫外设基地址,APB2和AHB挂载高速外设。

5.在Block2这块区域,它们以4个字节为一个单元,共32位,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是指寄存器。给已经分配好地址的、有特定功能的内存单元取别名的过程就叫寄存器映射。

6.给存储器分配地址的过程叫存储器映射。给已经分配好地址的特定功能的内存单元取别名的过程叫寄存器映射。对于CPU来说引脚其实也可以看做一种特殊寄存器。备注:这里说的内存单元应该就是存储器。

7.位带操作:STM32的位带操作简单的说就是把一个地址A的8个位,分别单独的重新定义8个地址, 操作一个地址等同于操作一个位,形象的理解即为取别名。 位带操作的最终目的是想对位带区的比特位进行独立的读写操作,但它是通过对位带别名区的操作来实现的。为解决STM32不能直接访问GPIO中的具体位而提出的办法。

8.单片机操作系统:大部分情况下不需要使用操作系统,使用操作系统在于简化编程,同时占用的资源也比较多。单片机使用操作系统有很多资源可以使用:内存管理、线程进程使用、文件系统、图形系统。多任务处理更加简单。

9.STM32标准库和HAL库:ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库 三种,其中标准库与HAL库最常用。

标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库,几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。HAL库与新增的LL库,都是ST公司提供的新标准库,包含在ST为新的标准库注册了一个新商标:STMCube?当中。LL库和HAL库两者相互独立,只不过LL库更底层。而且,部分HAL库会调用LL库(例如:USB驱动)。同样,LL库也会调用HAL库。

可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。现在,ST主推HAL库,目前,HAL库已经支持STM32全线产品。

新芯片现在只推出HAL库,HAL库与标准库比较,所用的API函数不一样,两者也相互独立,优势在于可以用cubeMX生成代码。(ST专门为其开发了配套的桌面软件STMCubeMX,开发者可以直接使用该软件进行可视化配置,大大节省开发时间。)

10.嵌入式系统:指把一个带有操作系统的控制系统放入到其他设备中,不仅仅是为计算,还有控制用途的一个系统。为特定设备服务的软件硬件可裁剪计算机系统,具备体积小、功能专一的特点,例如手机、微波炉、电视机顶盒等。

单片机开发属于嵌入式的一种,但是更多的偏重于硬件驱动开发,需要掌握基本点硬件知识,如模电数电。而嵌入式开发范围更广,现在大多数嵌入式开发指的是带片上系统的软件开发,偏重于上层软件开发。

11.姿态传感器:姿态传感器是基于MEMS技术的高性能三维运动姿态测量系统。它包含三轴陀螺仪、三轴加速度计,三轴电子罗盘等运动传感器,通过内嵌的低功耗ARM处理器得到经 过温度补偿的三维姿态与方位等数据。利用基于四元数的三维算法和特殊数据融合技术,实时输出以四元数、欧拉角表示的零漂移三维姿态方位数据。LPMS系列和iAHRS-M0姿态传感器可广泛嵌入到航模无人机,机器人,机械云台,车辆船舶,地面及水下设备,虚拟现实,人体运动分析等需要自主测量三维姿态与方位的产品设备中。

12.IMU:惯性测量单元是测量物体三轴姿态角(或角速率)以及加速度的装置。一般的,一个IMU包含了三个单轴的加速度计和三个单轴的陀螺,加速度计检测物体在载体坐标系统独立三轴的加速度信号,而陀螺检测载体相对于导航坐标系的角速度信号,测量物体在三维空间中的角速度和加速度,并以此解算出物体的姿态。

13.PCB:印制电路板是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的载体。由于它是采用电子印刷术制作的,故被称为“印刷”电路板。

14.操作系统分为两种:Windows、MacOS、Linux、Android这些操作系统带MMU才能跑;而FreeRTOS、ucOS、等不需要MMU。

ARM公司的Cortex-M3系列不带MMU故不能运行Linux。而Cortex-A系列如ARM9、ARM11带MMU,可以跑Linux。

15.相对于单片机只有树莓派能做的:机器视觉、视频解码、3D游戏。

16.PCB设计软件:

Altium Designer 简称AD :市场定位是一些简单的板子,比如单片机类,简单的工业类,一些相对简单的板子,用这个软件比较多,相对是偏低端产品设计。

PADS:在整个消费类电子产品里面,几乎PADS都占了大头。特别是前几年的市场占有率更是绝对的高。目前在沿海发达城市里面,PADS还是占主流市场。

Cadence allegro:优势是功能强大,缺点是不好学,不容易上手。市场目前主要还是在电脑主板,大型工控板,服务器主板,等这些大型板子上,以及现在一些平板电脑,手机板也会有少量公司用。

STM32笔记二的更多相关文章

  1. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  2. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  3. Mastering Web Application Development with AngularJS 读书笔记(二)

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

  4. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  5. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  6. webpy使用笔记(二) session/sessionid的使用

    webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...

  7. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  8. 《MFC游戏开发》笔记二 建立工程、调整窗口

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...

  9. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

随机推荐

  1. Kubernetes集群搭建 ver1.20.5

    目录 部署方式 1. 基础环境准备 1.1 基础初始化 1.2 安装docker 2. 部署harbor及haproxy高可用反向代理 2.1 镜像加速配置 2.2 高可用master可配置 3. 初 ...

  2. Archlinux zsh终端美化 powerlevel10k配置

    环境 Arch Linux + KDE Plasma 安装zsh yay -S zsh 更改默认终端 chsh -s /bin/zsh 安装oh-my-zsh-git archlinuxcn源有打好的 ...

  3. DDD中实体与值对象是干什么的

    实体值对象的含义 我们前面已经讲过领域的概念, 今天来讲讲实体, 实体是我们进行设计领域模型时的基础单元, 与之有关的是值对象, 接下来先梳理一下实体以及值对象的含义,然后讲讲他们俩的关系, 希望通过 ...

  4. GO语言基础---值传递与引用传递

    package main import ( "fmt" ) /* 值传递 函数的[形式参数]是对[实际参数]的值拷贝 所有对地址中内容的修改都与外界的实际参数无关 所有基本数据类型 ...

  5. 稀疏自编码器及TensorFlow实现

    自动编码机更像是一个识别网络,只是简单重构了输入.而重点应是在像素级重构图像,施加的唯一约束是隐藏层单元的数量. 有趣的是,像素级重构并不能保证网络将从数据集中学习抽象特征,但是可以通过添加更多的约束 ...

  6. 激光雷达数据到云cloud

    激光雷达数据到云cloud 在美国地质调查局的3D提升计划(3DEP)被激发到一个新的方式可用性宣布从3DEP仓库的访问和处理激光雷达点云数据. 3DEP一直在美国使用光检测和测距(激光)技术获取三维 ...

  7. Task04:集合运算

    4.1 表的加减法 4.1.1 什么是集合运算 集合在数学领域表示"各种各样的事物的总和", 在数据库领域表示记录的集合. 具体来说,表.视图和查询的执行结果都是记录的集合, 其中 ...

  8. 如何让vscode C++ 终端不再显示调试启动信息

    按照微软的官方文档(https://go.microsoft.com/fwlink/?LinkID=533484#vscode)配置好C++环境之后. 每次按F5都会在终端输出,但是会附加一串信息.例 ...

  9. Jenkins用户权限管理-Role-based Authorization Strategy插件

    02-Jenkins用户权限管理-Role-based Authorization Strategy插件 在jenkins的使用过程中,需要给用户分配只管理特定项目的权限来保证项目相关人员只能管理对应 ...

  10. R语言读取文件

    1.R语言读取文件,文件类型为.txt 直接使用read.table()即可,若不知道当前的工作目录,可以使用函数getwd()来查看 2.R语言读取文件,文件类型为.xlsx 方法一:可以把excl ...