当前位置:网站首页>0基础自学stm32(野火)——什么是寄存器?
0基础自学stm32(野火)——什么是寄存器?
2022-06-22 07:59:00 【Fecter11】
重点:
存储器映射
寄存器映射
首先学会分辨器件的1号引脚,注意是逆时针旋转。
##先搞清楚芯片内部结构

“AHB,是Advanced High performance Bus的缩写,高级高性能总线;
APB,是Advanced Peripheral Bus的缩写,高级外设总线。”



驱动单元:


被动单元:




接下来查看官方数据手册(英文版)

ARM的内核是32位,那就是2的32次方,也就是4294967296byte(字节),1kb=1024byte,也就是那么就是4194304kB,1mb =1024kb,也就是4096mb,而1gb=1024mb ,最终就是4gb
所以arm内核可以访问4gb内容,arm则将这4g内存分为八块。
512mb*8=4096mb=4g

flash就在第一块里面
我们能够从芯片的外部封装上看出来野火采用的芯片是stm32f103zet6
其中的e代表了512k的flash
显然只用了一小部分
重点在于block2外设部分

存储器映射(重点)
什么是存储器映射?
存储器本身不具备地址信息,他的地址游戏片厂商或者用户分配,给存储器分配地址的过程就是存储器映射
寄存器映射
以stc51为例
# include <stdio.h>
sbit LED = P0^0;
void main (void)
{
P0 = 0xfe;
LED =0;
}
注意看我们使用的P0,就包含在头文件当中,而头文件使用了sfr关键字让P0与对应的寄存器的地址相互对应。
而在stm32中让GPIOB端口的16个引脚输出高电平,要怎么实现??
通过绝对地址访问内存单元
//GPIOB 端口全部输出 高电平
*(unsigned int*)(0x40010C0C) = 0xFFFF;
我们找到GPIOB的寄存器起始地址

我们查看ODR的地址偏移:0x0C,这里的偏移是相对于刚才找到的寄存器基地址的偏移。因为GPIOB的寄存器不止这一个。
那么GPIOB端口的地址是:GPIOB的基地址+地址偏移
我们就可以对IO进行操作
*(unsigned int*)(0x40010C0C) = 0xFFFF;
其中0x40010C0C就是寄存器的地址
对于以上我们需要抓住几个重点:
1:0x40010C0C作为GPIOB输出数据寄存器ODR的地址是人如何找到的?
2:(unsigned int)的作用是什么?
3:学会使用c语言的“*”号*
*(unsigned int*)(0x40010C0C) = 0xFFFF;
我们先强制转换0x40010C0C作为地址。
如果我们直接写成0x40010C0C = 0xFFFF;编译器并不知道0x40010C0C是地址,所以没法使用。我们就需要强制转换。
显然上面的方法比较麻烦。
通过寄存器别名方式访问内存单元:
//GPIOB端口全部输出高电平
# define GPIOB_ODR (unsigned int*)(0x40010C0C) ;
* GPIOB_ODR = 0xFF;
为了操作方便还可以将“*”也定义到寄存器的别名里
//GPIOB端口全部输出高电平
# define GPIOB_ODR *(unsigned int*)(0x40010C0C) ;
GPIOB_ODR = 0xFF;
边栏推荐
猜你喜欢

模電實驗——實驗二 JFET共源極放大電路

Template code overview

MySQL transactions

ES6 set data type de duplication of array, intersection, union and difference

lr 2022超详细安装教程「最新」

RAID technology

XMIND 2022 mind map active resources?

An example shows the difference between let and VaR

【Oracle 数据库】奶妈式教程 day14 转换函数

Model electricity experiment -- Experiment 2 JFET common source amplifier circuit
随机推荐
ES6 set data type de duplication of array, intersection, union and difference
什么是分布式事务
数据可视化优秀案例
(7) Bidirectional linked list
7、 Picker component
Blob format problems involved in image uploading
Impact of dead chain on websites
KVO summary
Why redis is so fast:
Download addresses of Xcode versions
RAID technology
ConfigManager JsonToObject
8、 Slider assembly
Xmind 2022思维导图激活版资源?
由浅入深拿下OpenFeign
模板代码概述
AutoCAD 2020.3 Chinese Version (old version)
lr 2022超详细安装教程「最新」
[multi thread programming] thread scheduling strategy and priority
How Navicat queries the password information of the connected database