STM32笔记二
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笔记二的更多相关文章
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
- Mastering Web Application Development with AngularJS 读书笔记(二)
第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...
- Python 学习笔记二
笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- webpy使用笔记(二) session/sessionid的使用
webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- 《MFC游戏开发》笔记二 建立工程、调整窗口
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
随机推荐
- Jaxb的优点与用法(bean转xml的插件,简化webservice接口的开发工作量)
一.jaxb是什么 JAXB是Java Architecture for XML Binding的缩写.可以将一个Java对象转变成为XML格式,反之亦然. 我们把对象与关系数据库之间的映射称 ...
- android Room数据库仓库模式
- Go语言中的单例模式
Go语言中的单例模式 在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python.PHP.Ruby)转向Go语言的跨语言学习者. Go语言太容易实现并发了,以至于它在很多地方被不正 ...
- Step By Step(Lua环境)
Step By Step(Lua环境) Lua将其所有的全局变量保存在一个常规的table中,这个table被称为"环境".它被保存在全局变量_G中. 1. 全局变量声明: ...
- 5G通讯与芯片
5G通讯与芯片 美国商务部可能接近达成一项新的规则,允许美国公司与华为重启谈判,在共同制定下一代通信技术5G标准方面进行合作. 华为美国首席安全官安迪·珀迪(Andy Purdy)向第一财经记者独家回 ...
- deeplearning模型分析
deeplearning模型分析 FLOPs paddleslim.analysis.flops(program, detail=False) 获得指定网络的浮点运算次数(FLOPs). 参数: pr ...
- 最全JVM知识点思维导图,看这一篇就够了
此处是转发别人的,别人花了二个月, 我花一天时间看完, 觉得很有用 https://www.processon.com/view/link/5eea141cf346fb1ae56a44e7
- 类编程的WAF(上)
一.复杂的需求 WAF (WEB 应用防火墙) 用来保护 WEB 应用免受来自应用层的攻击.作为防护对象的 WEB 应用,其功能和运行环境往往是复杂且千差万别的,这导致即便防御某个特定的攻击方式时,用 ...
- What is maven?
Introduction Maven, a Yiddish word meaning accumulator(累加器) of knowledge, began as an attempt to sim ...
- Java基础面试题(史上最全、持续更新、吐血推荐)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...