当前位置: 首页 > news >正文

Cortex-M3 内核 MCU-STM32F1 开发之路:(二)寄存器地址的计算

上一篇下一篇
MCU 的构成,FLASH 和 SRAM 待写

寄存器地址计算(了解即可)

这个寄存器映射表,手册里都会给出,你只要知道时如何计算的就行了,实际不用真的去计算。

16 进制中,如果前面没有 0x 的话,那么后面有h的就表示是 16 进制。

1)基础

STM32 有 32 根地址线,每根地址线都有两种状态(1通、0不通),所以STM32的寻址大小为 2 32 = 4 G 2^{32}=4G 232=4G 个字节,即 0x00000000~0xFFFFFFFF

STM32 中的寄存器通常都是 4 字节的,也就是 32 位。

存储器映射(片内内存分配):第16讲 基础篇-存储器映射_哔哩哔哩_bilibili

寄存器映射(给寄存器地址命名):第17讲 基础篇-寄存器映射1_哔哩哔哩_bilibili

2)计算方法

分为三个部分:

  1. 总线基地址(BUS_BASE_ADDR)
    • 总线之间也是从某个基地址偏移得来的,比如说 APB2 就是在 APB1 的基地址上偏移得来的
  2. 外设基于总线基地址的偏移量(PERIPH_OFFSET)
  3. 寄存器相对外设基地址的偏移量(REG_OFFSET)

寄存器地址 = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET

以 GPIOA_ODR 寄存器为例:

  1. 获取外设挂在哪个总线上面?查:系统结构图
  2. 获取总线基地址,APB2总线基地址:0X40010000
  3. 获取外设地址偏移量,GPIOA相对APB2总线偏移量是:OX800
  4. 获取寄存器地址偏移量,ODR相对GPIOA外设基地址的偏移量是:OXOC

则:GPIOA_ODR = 0X4001 0000 + 0X800 + 0X0C = 0X4001 080C


http://www.dtcms.com/a/503339.html

相关文章:

  • 完整开发网站需要什么访问域名
  • Photoshop - Photoshop 工具栏(14)抓手工具
  • MySQL 之索引为什么选择B+树
  • seo网站页面f布局如何做企业文化培训
  • C语言-数组
  • 01-(JavaWeb)前端部分(HTML+CSS)
  • Sendable装饰器的使用
  • 产品经理做网站东莞网站搭建
  • vue3中的watch使用
  • SQL Server安全配置全面检查与优化方案
  • 唐山市城乡建设局网站哪个网站做的系统好用吗
  • 包头市建设厅官方网站开网店详细步骤流程
  • 什么是前端、后端与全栈开发,Qt属于什么?
  • Solidity 合约超限问题及优化策略:以 FHEFactory 为例
  • 第一届贵州理工校赛--ez-uploadez-upload-plus
  • 聊聊 Unity(小白专享、C# 小程序 之 联机对战)
  • ava编辑一个小程序操作教程分享一下C++
  • Java Web 程序在 Linux 上的部署
  • HTTP Client/Server 实践:cpp-httplib使用
  • 项目招商网站大全河北智慧团建网站
  • 量化交易的开源框架
  • 【Linux系统编程】4. Linux权限
  • 个人主页网站制作免费融资平台哪家好
  • week6
  • ZigBee中的many-to-one和link status(3)
  • 大型网站多少钱佳源房地产最新消息
  • Linux Bash(一)
  • 【Redis】哨兵与对脑裂的情况分析
  • 49.词向量:把文字变成数字
  • 【pulldown-cmark】创建自定义分支