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. 用navigation的大致图

  2. 西门子 S7-300 以太网模块连接 WINCC方案

    北京华科远创科技有限研发的远创智控ETH-YC模块,型号有MPI-ETH-YC01和PPI-ETH-YC01,适用于西门子S7-200/S7-300/S7-400.SMART S7-200.西门子数控 ...

  3. grasshopper | 通过图层引用线条 报错:“ Data conversion failed from Guid to Curve ”的避免方法

    需求:通过 LunchBox - > layer reference 电池 可以快速选中图层所在的线条,但是选择的数据流错误 直接选择会报错--"Data conversion fai ...

  4. 用NumPy genfromtxt导入数据

    用NumPy genfromtxt导入数据 NumPy provides several functions to create arrays from tabular data. We focus ...

  5. AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(六) 1. Tiny Darknet 听过很多人谈论SqueezeNet. SqueezeNet很酷,但它只是优化参数计数.当大多数高 ...

  6. C/C++语言编程的隐患!

    C/C++语言编程的隐患! 本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内.内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决 ...

  7. MLIR多级中间表示概述

    MLIR多级中间表示概述 MLIR项目是构建可重用和可扩展的编译器基础设施的一种新方法.MLIR旨在解决软件碎片化问题,改进异构硬件的编译,显著降低构建特定领域编译器的成本,并帮助将现有编译器连接在一 ...

  8. runtime系统的Cello

    runtime系统的Cello 通过充当一个现代的.功能强大的runtime系统,Cello使许多以前在C中不切实际或笨拙的事情变得简单,例如: 通用数据结构 多态函数 接口/类型类 构造函数/析构函 ...

  9. 单核性能强悍,Core i3 这次又要“默秒全”?

    单核性能强悍,Core i3 这次又要"默秒全"? 在 Intel 历代酷睿处理器中,定位主流级的 Core i3 一直以超高性价比.低功耗.低发热的特点受到广大用户的青睐,在市场 ...

  10. Redis 性能问题分析

    在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题.比如微博,把热点微博[1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不 ...