stm32-基础知识
- Date:2023-05-22
- Time:22:55
- Subject: none
- Tags: #stm32
[[2023-05]]
存储器映射
- 存储器指可以存储数据的设备,本身没有地址信息,对存储器分配地址的过程称为存储器映射
- 19根地址线:A0-A18 16根数据线:D0-D15
- 地址范围:0 - 512K
- 映射1:0 - 512K
- 映射2:1 – 512K + 1
- 映射3:100K – 612K
- 映射4:512K – 1024K
- F1为例子
- ST将4GB(2^32)地址空间分成8个块
- Block0(FLASH)功能划分
- Block1(SRAM)功能划分
- Block2(外设)功能划分
- ST将4GB(2^32)地址空间分成8个块
寄存器映射
- 寄存器是单片机内部一种特殊的内存,可以实现对单片机各个功能的控制
- 简单来说:寄存器就是单片机内部的控制机构
- STM32寄存器分类
F1为例
- 寄存器是特殊的存储器,给寄存器地址命名的过程,就叫寄存器映射
- 寄存器描述解读
-
- ① 寄存器名字
- ② 偏移量及复位值
- ③ 寄存器位表
- ④ 位功能描述
- 直接操作寄存器地址:
-
1 | *(unsigned int *)(0x4001 080C) = 0XFFFF; |
1 | //定义一个名字后再操作: |
- 寄存器地址计算
- 为了方便编写代码及使用,我们将寄存器地址分为三个部分:
- 总线基地址(BUS_BASE_ADDR)(对应总线表格中最下面的那个地址)
- APB1总线的基地址,也叫外设基地址(PERIPH_BASE)
- 此表的偏移量:是相对外设基地址(PERIPH_BASE)来说的
- 外设基于总线基地址的偏移量(PERIPH_OFFSET)
- apb2为例子
- 此表的偏移量:是相对APB2外设基地址(APB2PERIPH_BASE)来说的
- 这是外设的基地址,上面是总线的基地址
- 寄存器相对外设基地址的偏移量(REG_OFFSET)(对应8.24图的地址偏移0Ch)
- 以GPIOA外设为例子
- 此表的偏移量:是相对GPIOA外设基地址(GPIOA_BASE(上图))来说的
- 总线基地址(BUS_BASE_ADDR)(对应总线表格中最下面的那个地址)
- 例子计算过程(GPIOA_ODR寄存器地址计算过程)
- 获取外设挂在哪个总线上面?查:系统结构图(同时得知道是哪个外设USART1_xx,那就是usart1)
- 获取总线基地址,APB2总线基地址:0X4001 0000
- 获取外设地址偏移量,GPIOA相对APB2总线偏移量是:0X800(一般可以直接找到外设地址)
- 获取寄存器地址偏移量,ODR相对GPIOA外设基地址的偏移量是:0X0C
- 在手册中找
- 寄存器地址 = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET
- GPIOA_ODR = 0X4001 0000 + 0X800 + 0X0C = 0X4001 080C
- 为了方便编写代码及使用,我们将寄存器地址分为三个部分:
- 寄存器映射实现
1 | typedef struct |
1. 使用结构体,可以很方便的完成对寄存器的映射:
2. 一次性把7个寄存器映射完毕,可对比上面的对一个寄存器映射
3. 由于刚好结构体每个地址差4个字节,每个寄存器基地址之间差4个字节
1 |
|
- stm32f103xe.h主要组成部分
- Date:2023-05-25
- Time:09:48
- Subject: none
- Tags: #stm32
[[2023-05]]
英文缩写部分
A:
ADC--------Analog-to-Digital Converter—模/数转换器,模数转换器
AFIO-------alternate function IO—复用 IO 端口
AHB--------先进高性能总线
AHB-AP----AHB访问端口
Arg---------argument—自变量
APB--------先进外设总线
API---------Application Programming Interface—应用程序编程接口
B:
BKP------后备寄存器
BSP------Board Support Package—板级支持包
BYP------Bypass—旁路
BYP------backup—备份
C:
CAN-----Controller area network—控制器局域网
Calc-----Calculate—计算
CM------CMSIS标准—Cortex Microcontroller Software Interface Standard—Cortex微控制器软件接口标准
Cmd-----command—[kəˈmɑ:nd]—命令、使能
CLK------Clock—时钟
Conf-----Config—配置
CPI-------每条指令的周期数
CRC------Cyclic Redundancy Check—循环冗余校验
CSR------clock control/status register—时钟控制/状态寄存器
Ctrl— —control—控制
D:
DAC-----Digital to analog converter—数/模转换器,数字模拟转换器
DAP-----调试访问端口
DBG-----debug—调试
def ------Define—定义
DMA----Direct Memory Access—存储器直接访问
doc------Document—文件
DSP-----数字信号处理器/数字信号处理
DWT----数据观察点及跟踪
E:
ETM------嵌入式跟踪宏单元
Eval-------Evaluate—评估
EXTI-------External Interrupts—外部中断
F:
FLITF-----The Flash memory interface—闪存存储器接口
FPB-------闪存地址重载及断点
FPGA-----Field-Programmable Gate Array—现场可编程门阵列
FSMC-----Flexible static memory controller—可变静态存储控制器
FSR--------Fault状态寄存器
FwLib-----Firmware Library—固件库
G:
GPIO------general purpose input/output—通用 IO 端口
H:
HSE-----------High Speed External oscillator—高速外部时钟
HSI------------High Speed Internal oscillator—高速内部时钟
HTM----------CoreSight AHB跟踪宏单元
I:
ICE--------in circuit emulator—在线仿真器
IDE--------integrated development environment—集成开发环境
inc--------Include—包括
INT -------it—Interrupt—中断
Init -------Initialize—[ɪˈnɪʃəlaɪz]—初始化
I2C--------IIC—Inter-integrated circuit—微集成电路
I2S--------IIS—integrate interface of sound—集成音频接口
IRQ-------中断请求(通常是指外部中断的请求)
IRQn-----中断级
ISA-------指令系统架构
ISR--------Interrupt Service Routines—中断服务程序
ITM-------指令跟踪宏单元
IWDG----independent watchdog—独立看门狗
J:
JTAG---------连结点测试行动组(一个关于测试和调试接口的标准)
JTAG-DP----JTAG调试端口
L:
Lib------lib—Library—库
LP------Low Power—低功耗
LR------link register—链接寄存器
LSB-----最低有效位
LSE-----Low Speed External oscillator—低速外部时钟
LSI------Low Speed Internal oscillator—低速内部时钟
LSU-----加载/存储单元
M:
MCU—微控制器单元(俗称单片机)
MIPS—million instructions per second—每秒能执行的百万条指令的条数
MPU—Memory Protection Unit—存储器保护单元
MSB----最高有效位
MSP----main stack pointer—主堆栈指针
N:
NVIC— Nested Vectored Interrupt Controller—嵌套向量中断控制器
NMI----不可屏蔽中断
O:
OS------------操作系统
OTG----------On The Go—数据交换
P:
PC--------------program counter—程序计数器
Periph---------Peripherals—[pəˈrɪfərəlz]—外设
PLL--------------Phase Locked Loop—锁相环\倍频器
PSP------------process stack pointer—进程堆栈指针
POR/PDR—上电/掉电复位
PPB-----------私有外设总线
PWR----------电源控制
R:
RCC--------------------Reset and clock control—复位和时钟控制
Retval----------------Return value—返回值
RTC-------------------Real-Time Clock—实时时钟
S:
SCB-------System control block
SDIO-----SD I/O—Secure Digital Input and Output—安全数字输入输出卡
SRAM----Static Random-Access Memory—静态随机存取存储器
SP---------stack pointer—堆栈指针
SPI--------Serial Peripheral Interface—串行外围设备接口
src--------Source—源码
std--------Standard—[ˈstændəd]—标准
STK-------SysTick timer
SW----- --Software—软件
T:
Tab-----table—表
TIM-----timer—定时器
U:
UART------Universal Asynch. Receiver Transmitter—通用异步接收/发送装置
USART-----Universal Synchronou/Asynchronous Receiver/Transmitter—通用同步/异步串行接收/发送器
USB--------Universal Serial Bus—通用串行总线
USBPRE—USB prescaler----USB预分频
W:
WWDG—Window watchdog—窗口看门狗
词汇部分
A:
Acceleration—[əkˌseləˈreɪʃn]—加速度
Access—[ˈækses]—访问、进入
Accordingly—相应地
Activate—[ˈæktɪveɪt]—激活
add-on—附加物
address offset—地址偏移量
Alias—[ˈeɪliəs]—别名
Align—[əˈlaɪn]—校准,使一致
Alternate—[ˈɔ:ltərnət]—替代、备用
Arbitration—[ˌɑ:bɪˈtreɪʃn]—仲裁
Argument—[ˈɑ:ɡjumənt]—自变量
Array—[əˈreɪ]—数组
Assembler—[əˈsemblə®]—汇编器
Assert—[əˈsɜ:t]—断言
B:
Backslash—[ˈbækslæʃ]—(计算机符号)反斜线
Backup—备份
Brief—[bri:f]—任务简介
Buffer—[ˈbʌfə®]—缓存器,缓冲存储区
C:
Calibration—[ˌkælɪˈbreɪʃn]—校准
Call—调用
Capture—[ˈkæptʃə®]—捕获
Code—代码
Comments—注释
Compute—计算
Configure—[kənˈfɪɡə®]—配置
Constant—[ˈkɒnstənt]—常数
Counter—[ˈkaʊntə®]—计数器
Channel—[ˈtʃænl]—通道、源
Crystal—[ˈkrɪstl]—晶体
D:
Decode—[ˌdi:ˈkəʊd]—译码、解码
Decrement—[ˈdɛkrɪmənt]—减量,消耗
Default value—默认值
Depend on—根据
dependent variable–[dɪˌpendənt ˈveəriəbl]-因变量
Determine—[dɪˈtɜ:mɪn]—测定,查明
Differential—[ˌdɪfəˈrenʃl]—微分
Disassembly—反汇编
E:
Emulator—[ˈemjuleɪtə®]—仿真器
Enable—使能、启用
Entry—[ˈentri]—进入
Enumeration—[ɪˌnju:məˈreɪʃn]—枚举
Even—偶
Exceed—超过
Exception—[ɪkˈsepʃn]—异常
Execute—[ˈeksɪkju:t]—执行
Expanse—[ɪkˈspæns]—扩展
Export—[ɪkˈspɔ:t , ˈekspɔ:t]—输出、导出
F:
Falling edge—下降沿
Force—[fɔ:s]—强制
Frequency—[ˈfri:kwənsi]—频率
G:
Global variable—全局变量
Gyroscope—[ˈdʒaɪrəskəʊp]—陀螺仪
H:
Halt—[hɔ:lt]—(使)停止
Handler—[ˈhændlə®]—处理程序
Hard Fault—硬件故障,硬故障
Hardware—硬件
Heap—[hi:p]—堆
Hint—[hɪnt]—提示
I:
Implement—[ˈɪmplɪments]—执行、工具
Indicate—[ˈɪndɪkeɪt]—表明
Infinite—[ˈɪnfɪnət]—无限的
Initial—[ɪˈnɪʃl]—最初的
Instructions—[ɪnˈstrʌkʃənz]—指令
Integral—[ˈɪntɪɡrəl]—积分
Interface—[ˈɪntəfeɪs]—接口
L:
Legacy—[ˈleɡəsi]—遗留
Local variable—局部变量
Loop—[lu:p]—循环
M:
Macro—宏,宏指令
Mapping—映射
Mask—屏蔽
Memory—[ˈmeməri]—存储器
Memory Manage—内存管理
Modify—[ˈmɒdɪfaɪɪŋ]—修改
Module—[ˈmɒdju:l]—模块
Mount on—安装
N:
Numeric—[nju(:)ˈmɛrɪk]—数(字,值)
Newline—换行符、新的一行
O:
Odd—奇
Offset—[ˈɒfset]—补偿
Operation—[ˌɒpəˈreɪʃn]—操作、运行
Oscillator—[ˈɒsɪleɪtə®]—振荡器
P:
Parallel—[ˈpærəlel]—并行
Parameter—[pəˈræmɪtə®]—参数
Parity—奇偶性
Perform—[pəˈfɔ:m]—执行
Permissions—[pəˈmɪʃənz]—权限
Preemption—[ˌpri:ˈempʃn]—抢占
Presentation—[ˌpreznˈteɪʃn]—显示、出示、演示
Priority Levels—[praɪˈɒrəti ˈlevlz]—优先级
Processor—[ˈprəʊsesə®]—处理器
Proportion—[prəˈpɔ:ʃn]—比例
Prototype—[ˈprəʊtətaɪp]—原型
R:
Recursive—[rɪˈkɜ:sɪv]—递归的、循环的
refer to—参阅
Remap—重新映射
Reset—重置
Rising edge—上升沿
S:
Schmitt Trigger—[ʃmɪt ˈtrɪɡər]—施密特触发器
Section—[ˈsekʃn]—部分,节
Select—[sɪˈlekt]—选择
Serial—[ˈsɪəriəl]—串行
service routine—服务程序
Setup—(软件或硬件的)安装,设置
Simplify—[ˈsɪmplɪfaɪ]—简化
Specified—[ˈspesɪfaɪd]—明确规定
Specifies—[ˈspesɪfaɪz]—指定
Suppression—[səˈpreʃn]—抑制
Stack—[stæk]—堆栈
Startup—启动
Stray—[streɪ]—孤立的、杂散的
Symbolic—[sɪmˈbɒlɪk]—象征性的
T:
Table—表
Tailor—[ˈteɪlə®]—专门制作,定做
Temperature—[ˈtemprətʃə®]—温度
Template—[ˈtempleɪt]—模板
Toggle—[ˈtɒɡl]—切换
Trigger—[ˈtrɪɡə®]—触发
U:
Uncomment—取消批注
Unique—[juˈni:k]—唯一的
Usage—[ˈju:sɪdʒ]—使用
Usart—通用同步异步收发器
Use—用途、使用
V:
Vector—[ˈvektə®]—矢量
Velocity—速度
Voltage—[ˈvəʊltɪdʒ]—电压
- Date:2023-05-22
- Time:22:39
- Subject:
- Tags: #stm32
[[2023-05]]
Cortex M内核 & 芯片
F1系统架构
- 4个主动单元 + 4个被动单元
-
- AHB:高级高性能总线
- APB:高级外围总线