zoukankan      html  css  js  c++  java
  • 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中,可以单独访问,也可以组合访问,比如:

     

     

     

     

     

  • 相关阅读:
    C语言不定参数
    C和C++中的不定参数
    C/C++ 中头文件相互包含引发的问题
    Makefile经典教程(掌握这些足够)
    C语言中volatile关键字的作用
    C++中字符数组与string的相互转换
    C++中 使用数组作为map容器VAlue值的解决方法
    sql 内连接、外连接、自然连接等各种连接
    网站小图标
    Eclipse:快捷
  • 原文地址:https://www.cnblogs.com/qiyuexin/p/12622460.html
Copyright © 2011-2022 走看看