STM32F3, STM32F4编程手册

1. Cortex-M4的内核设备

  • NVIC, Nested vectored interrupt controller
  • SCB, System control block
  • SysTick, The system timer
  • MPU, Memory protection unit
  • FPU, Floating-point unit

2. 程序员模型

2.1 处理器模式

  • Thread mode, 用于执行软件程序(可由CONTROL寄存器控制是否享有特权),复位后自动进入。
  • Handler mode: 用于处理异常,此处的程序总是享有特权,处理完成后返回Thread 模式。

2.2 软件执行的特权等级

  • Unprivileged,没有特权的:

    • 限制访问MSR、MRS指令,不能使用CPS指令
    • 不能访问SysTick, NVIC, SCB
    • 可能访问内存、外设受限
    • 必须使用SVC指令来调用管理程序将控制权转移到特权软件
  • Privileged

2.3 堆栈

处理器使用一个完全递减的堆栈,并装配两个:main stack 和 process stack, 具有main stack指针的独立副本。

在Thread 模式下,由CONTROL控制使用哪一个堆栈;在Handler模式下,一直使用main堆栈。

2.4 内核寄存器

  • R0~R12, 32位通用寄存器,用于数据操作
  • R13, SP, 堆栈指针,由CONTROL[1]控制: 0为MSP, 1为PSP
  • R14, LR,Link Register: 它保存着副程序、函数及异常的返回信息
  • R15, PC, Program Counter: 包含着当前代码的地址,复位时会自动装载在地址0x00000004的复位向量的值。
  • PSR, 程序状态寄存器,包含着应用程序状态寄存器(APSR)、中断程序状态寄存器(IPSR)、执行程序状态寄存器(EPSR)

APSR, IPSR, EPSR这3个寄存器接合在PSR中,可以单独访问,也可以组合访问,比如:

原文地址:https://www.cnblogs.com/qiyuexin/p/12622460.html

时间: 2024-10-17 17:59:40

STM32F3, STM32F4编程手册的相关文章

《Linux多线程编程手册》读书笔记

第二章 基本线程编程 1.(P25)如果多个线程等待同一个线程终止,则所有等待线程将一直等到目标线程终止.然后,一个等待线程成功返回,其余的等待线程将失败并返回ESRCH错误. 2.(P26)将新线程的pbe参数作为栈参数进行传递.这个线程参数之所以能够作为栈参数传递,是因为主线程会等待辅助线程终止.不过,首选方法是使用malloc从堆分配存储,而不是传递指向线程栈存储的地址.如果将该参数作为地址传递到线程栈存储,则该地址可能无效或者在线程终止时会被重新分配. 3.(P28)pthread_de

《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)

<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h>文件中的常量. 通过cat 命令查看: [email protected]:~/Code/tlpi$ cat /usr/include/limits.h /* Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005 Free Software

《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

<Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候都会发生缓冲.通过缓冲可以在一定程度上将用户空间与实际的物理设备分离,还可以减少内核访问磁盘的次数. 先来看看关于内核缓冲区高速缓冲:read和write调用在对磁盘文件进行操作的时候不会直接访问磁盘,如下图所示. 例如:write(fd, "abc", 3) write调用会将"

《Linux/Unix系统编程手册》读书笔记9(文件属性)

<Linux/Unix系统编程手册>读书笔记 目录 在Linux里,万物皆文件.所以文件系统在Linux系统占有重要的地位.本文主要介绍的是文件的属性,只是稍微提及一下文件系统,日后如果有更深入的研究一定会写出来. 下图为磁盘分区与文件系统的关系 文件系统中的文件(目录)在i-node表上都有唯一的记录(i-node).i-node通过数据块指针指向数据块,这些数据块就是该i-node对应的文件的数据. i-node与数据块的关系如下: 因为Linux支持很多类型的文件系统,但是每种文件系统的

Linux/Unix系统编程手册--SOCKET章节读书笔记

SOCKET章节读书笔记 强烈推荐Linux/Unix系统编程手册,号称超越APUE的神书. backlog含义 #include <sys/socket.h> int listen(int socketfd, int backlog) backlog参数限制未决连接(未accept)的数量,在这个数量之内,connect会立刻成功. Linux上上限为128,定义在 udp已连接socket udp socket也是可以调用connect()的,这种叫已连接socket,内核会记录这个soc

Linux/UNIX系统编程手册 PDF下载

网盘下载地址:Linux/UNIX系统编程手册 PDF下载 – 易分享电子书PDF资源网 作者: Michael Kerrisk 出版社: 人民邮电出版社 原作名: The Linux Programming Interface: A Linux and UNIX System Programming Handbook 译者: 孙剑 许从年 董健 / 孙余强 郭光伟 陈舸 出版年: 2014-1 页数: 1176 定价: 158 装帧: 平装 内容简介 · · · · · · <linux/un

LibCurl编程手册以及代码实例

1. LibCurl编程流程 在基于LibCurl的程序里,主要采用callback function (回调函数)的形式完成传输任务,用户在启动传输前设置好各类参数和回调函数,当满足条件时libcurl将调用用户的回调函数实现特定功能.下面是利用libcurl完成传输任务的流程: 1.       调用curl_global_init()初始化libcurl 2.       调用 curl_easy_init()函数得到 easy interface型指针 3.       调用curl_e

Linux C/C++编程手册查阅方法

Linux Programmer's Manual & User Commands https://www.kernel.org/doc/man-pages/ 搜索框输入epoll调用搜索引擎查找 在线搜索查看man手册(比如查epoll),可以直接收藏,方便下次点击搜索: http://global.bing.com/search?q=site:man7.org epoll The Linux Kernel API https://www.kernel.org/doc/htmldocs/ker

c++高质量编程手册

怡化主管强烈要求我读这本书.... 笔记尚未完成,持续更新呗.. 第1章 高质量软件开发之道 1.1 软件质量基本概念 1.1.1 如何理解软件的质量:功能性和非公能性 1.1.2 提高软件质量的基本方法: 一次性编出高质量的程序 1.1.3 "零缺陷"理念 1.2 细说软件质量属性 1.2.1 正确性: 需求范围内的需求 1.2.2 健壮性  需求外的扩展需求 1容错  2恢复 1.2.3 可靠性  你平均无故障时间衡量 1.2.4 性能  时间-空间效率 优化数据结构,算法,代码来