STM32----HAL库函数

1.STM32系统框架

1.1 Cortex-M内核&芯片

 1.2 F1系统框架

4个主动单元+4个被动单元

AHB:高级高性能总线                                                           APH:高级外围总线

其中 1 为 主动单元 , 2为被动单元

总线时钟频率:AHBB:72Mhz               APB1:36Mhz                         APB2:72Mhz

2. STM32的寻址范围

(1)可以有32位地址线 (每根地址线有两种状态:导通或不导通)

(2)单片机内存地址访问的存储单元是按字节编址的(不是bit)----一个字节是8个bit

3. 存储器映射

存储器可以存储数据设备,本身没有地址信息,对存储器分配地址的过程叫做映射,有19根地址线(2的19次方 512k),每个按照两个字节来编写,有16根数据线

将4G的内存分为8块

4,寄存器映射

可以实现对2各个功能的实现 

寄存器是特殊的储存器,给他命名的过程,就是寄存器映射

直接对操作寄存器地址举例:

*(unsined int)(0x4001 080C) = 0xffff

(1)地址怎么找?                   (2)映射方法?

寄存器地址计算:

为了方便计算,我们会把寄存器地址分为3部分

1.总线基地址(AHB APB    -------- BUS_BASE_ADDR)

2.外设基于总线地址的偏移量

3.寄存器相对外设地址的偏移量

所以寄存器地址 = 1+2+3

在数据手册寄存器映射的最后一行,也就是我们的总线基地址

APB1也叫做外设基地址----因为其为block2的基地址开始,所以被称为外设基地址,而上面的偏移量,也是基于APB1来进行偏移的

这个表则是基于APB2来偏移的

举例 GPIOA_ODR寄存器地址计算:

1. 获取外设所挂在的总线 

2.获取总线基地址  0x40010000

3. GPIOA相对APB2的总线偏移量:0X800

4.获取寄存器地址偏移: 0x0C(寄存器描述里)

最后得到 0x4001080C

因此,使用结构体可以简单的完成对寄存器的配置一次性到位

                                         

每个寄存器都多偏移4个字节,所以就可以一次性映射

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286029.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab智能优化算法学习笔记(一)——粒子群算法、模拟退火算法、遗传算法、蚁群算法

文章目录 粒子群算法△ matlab工具箱粒子群函数○ 代码○○ 手搓代码实现粒子群优化 2个变量(xy)的粒子群优化尝试 定义函数 绘制网格图(用来可视化过程) 参数初始化,绘制粒子初始位置 开始迭代过程并绘图 获取结果并绘…

分享一个好看的vs主题

最近发现了一个很好看的vs主题(个人认为挺好看的),想要分享给大家。 主题的名字叫NightOwl,和vscode的主题颜色挺像的。操作方法也十分简单,首先我们先在最上面哪一行找到扩展。 然后点击管理扩展,再搜索栏…

JMM的内存可见性保证

Java程序的 内存可见性保证 可以分为下列3类 1)单线程程序 单线程程序不会出现内存可见性问题。 编译器、runtime、处理器会共同确保单线程程序的执行结果与该程序在顺序一致性模型中的执行结果相同。 2)正确同步的多线程程序 正确同步的多线程程序的…

linux 多路径multipath的安装

1. 什么是多路径 在计算机系统中,多路径是指在存储系统中使用多个物理路径来连接主机和存储设备,以增加系统的可用性和容错性。多路径技术的目标是提供冗余路径,以确保在某个路径发生故障时,数据仍然可以通过其他路径进行传输具体…

从今天起,你就是CAN专家了。

一. CAN协议概念 1.1 CAN 协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。差异点如下&…

git命令查看提交代码行数和次数

右键点击Git Bash Here 查看代码提交次数 git log --since2022-7-1 --before2022-8-1 --author"XXXX" --pretty%aN |sort |uniq -c | sort -k1 -n -r查看代码提交行数 git log --since2022-8-1 --before2022-9-1 --authorXXXX --prettytformat: --numstat |awk {add…

Ubuntu 常用命令之 sed 命令用法介绍

sed是一个在Linux和其他Unix-like系统中常用的流编辑器,用于对输入流(文件或管道)进行基本的文本转换。它可以非常方便地进行文本替换、插入、删除等操作。 sed命令的基本格式为 sed [options] command file(s)其中,常用的参数有…

文件操作(下)

标题的顺序是接着之前写的,希望这篇博客对你有帮助 七. 随机读写函数 实际上,无论是读还是写,在一次调用顺序读写函数,文件指针会移到已经读过或者写过的下一个位置,从那个位置开始下一次读和写(在文件没有…

Relocations for this machine are not implemented,IDA版本过低导致生成汇编代码失败

目录 1、问题描述 2、安卓app发生崩溃,需要查看汇编代码上下文去辅助分析 3、使用IDA打开.so动态库文件,提示Relocations for this machine are not implemented 4、IDA版本较老,不支持ARM64的指令集,使用7.0版本就可以了 5、…

WEB渗透—PHP反序列化(四)

Web渗透—PHP反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩…

每日一题:LeetCode-LCR 016. 无重复字符的最长子串

每日一题系列(day 15) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

【EI会议征稿】第四届计算机网络安全与软件工程国际学术会议(CNSSE 2024)

第四届计算机网络安全与软件工程国际学术会议(CNSSE 2024) 2024 4th International Conference on Computer Network Security and Software Engineering 第四届计算机网络安全与软件工程国际学术会议(CNSSE 2024)将于2024年2月…