STM32F4学习

F4系统架构

8个主控总线+7个被控总线

主控总线

  • Cortex-M4内核 I总线
  • Cortex-M4内核 D总线
  • Cortex-M4内核 S总线
  • DMA1存储器总线
  • DMA2存储器总线
  • DMA2外设总线
  • 以太网DMA总线
  • USB OTG HS DMA总线

被控总线

  • 内部FLASH ICode总线
  • 内部FLASH DCode总线
  • 主要内部SRAM1(112KB)
  • 辅助内部SRAM2(16KB)
  • 辅助内部SRAM3(64KB)(适用于F42xxx和F43xxx)
  • AHB1外设(包括AHB-APB总线桥和APB外设)
  • AHB2外设
  • FSMC

在这里插入图片描述

  1. 主控总线
  2. 被控总线

CCM RAM:只能存数据,优点访问速度快,缺点不支持DMA

总线时钟频率:

  • AHB1/2:168/180MHz(Max)
  • APB1:42/45MHz(Max)
  • APB2:84/90MHz(Max)

FSMC主要用于扩展外部存储器

STM32的寻址范围

32位的单片机有32根地址线(每根地址线有两种状态:导通或不导通)
单片机内存地址访问的存储单元是按字节编址的(而不是bit)
STM32寻址大小:232=4G(字节)
寻址范围:0x00000000~0xFFFFFFFF

存储器映射

存储器指可以存储数据的设备,本身没有地址信息,对存储器分配地址的过程称为存储器映射。

存储器功能划分(F1为例),ST将4G(232)地址空间分成8个块

  • Block0:Code(FLASH)—— 0x0000 0000 ~ 0x1FFF FFFF(512MB)
  • Block1:SRAM —— 0x2000 0000 ~ 0x3FFF FFFF(512MB)
  • Block2:片上外设 —— 0x4000 0000 ~ 0x5FFF FFFF(512MB)
    在这里插入图片描述
  • Block7:Cortex M3内部外设 —— 0xE000 0000 ~ 0xFFFF FFFF(512MB)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

寄存器映射

寄存器是单片机内部一种特殊的内存,可以实现对单片机各个功能的控制。

寄存器就是单片机内部的控制机构
在这里插入图片描述

STM32寄存器分类

在这里插入图片描述
寄存器是特殊的存储器,给寄存器地址命名的过程,就叫寄存器映射。
在这里插入图片描述

在这里插入图片描述

寄存器地址计算

为了方便编写代码及使用,我们将寄存器地址分为三个部分:

  1. 总线基地址
  2. 外设基于总线基地址的偏移量
  3. 寄存器相对于外设基地址的偏移量

在这里插入图片描述

在这里插入图片描述
APB1总线的基地址,也叫外设基地址

在这里插入图片描述
在这里插入图片描述
GPIOA_ODR寄存器地址计算过程:

  1. 获取外设挂在哪个总线上面?查系统结构图
  2. 获取总线基地址,APB2总线基地址:0x4001 0000
  3. 获取外设地址偏移量,GPIOA相对APB2总线偏移量是:0x800
  4. 获取寄存器地址偏移量,ODR相对GPIOA外设基地址的偏移量是:0x0C
typedef struct
{
	__IO uint32_t CRL;
	__IO uint32_t CRH;
	...
}GPIO_TypeDef;

GPIOA_BASE:0x4001 0800
#define GPIOA (GPIO_TypeDef *)GPIOA_BASE

GPIOA->ODR = 0XFFFF;

STM32F103xe.h主要组成部分

  • 中断编号定义:定义IRQn_Type枚举类型,包含STM32F103内部所有中断编号(中断号),方便后续编写代码。
  • 外设寄存器结构体类型定义:以外设为单位,使用结构体类型定义每个外设所有寄存器,方便寄存器映射。
  • 寄存器映射:1、定义总线地址和外设基地址。2、使用外设结构体类型定义将外设基地址强制转换成结构体指针,完成寄存器映射。
  • 寄存器位定义:定义外设寄存器每个功能位的位置及掩码。
  • 外设判定:判断某个外设是否合法(即是否存在该外设)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二分查找------蓝桥杯

题目描述&#xff1a; 请实现无重复数字的升序数组的二分查找 给定一个元素升序的、无重复数字的整型数组 nums 和一个目标值 target&#xff0c;写一个函数搜索 nums 中的target&#xff0c;如果目标值存在返回下标 (下标从0 开始)&#xff0c;否则返回-1 数据范围: 0 < l…

中继DHCP配置实验

实验大纲 1.构建网络拓扑结构图 2.对路由器进行配置 3.对DHCP服务器进行配置 4.对交换机S1进行配置&#xff08;创建vlan&#xff09; 5.配置路由器&#xff0c;并分配逻辑接口 1.构建网络拓扑结构图 2.对路由器进行配置 Router>en Router#conf t Enter configuratio…

R语言学习case11:ggplot 置信区间(包含多子图)

ggplot Geometric objects How are these two plots similar? 两个图都包含相同的x变量、相同的y变量&#xff0c;并且描述相同的数据。但是这两个图并不相同。每个图使用不同的可视化对象来表示数据。在ggplot2语法中&#xff0c;我们说它们使用不同的geoms。 geom是绘图…

[经验] 月字旁一个卢念什么 #职场发展#媒体#微信

月字旁一个卢念什么 1、月卢念什么 “月卢念什么”是一个广为传颂的故事。传说中&#xff0c;月卢是唐婉的丈夫&#xff0c;也是唐婉的伴读&#xff0c;两人情深意重。有一天&#xff0c;唐婉嫁给了别人&#xff0c;月卢离开了她。从此以后&#xff0c;月卢每晚都背着月亮念唐…

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(二)

三、简配版集群&#xff0c;适用于demo环境 1.集群架构设计 主机名角色配置(核数&#xff0c;内存&#xff0c;磁盘)MasterRKE,controlplane,etcd,worker,rancher-master2C 8G 40GSlaver1controlplane,worker,rancher-master2C 8G 40GSlaver2controlplane,worker,rancher-mas…

代码随想录算法训练营DAY13 | 栈与队列 (3)

一、LeetCode 239 滑动窗口最大值 题目链接&#xff1a;239.滑动窗口最大值https://leetcode.cn/problems/sliding-window-maximum/ 思路&#xff1a;使用单调队列&#xff0c;只保存窗口中可能存在的最大值&#xff0c;从而降低时间复杂度。 public class MyQueue{Deque<I…

深入剖析 Cortex-M4 微控制器在嵌入式系统中的特性和优势

Cortex-M4 微控制器是 ARM Cortex-M 架构中的一种类型&#xff0c;它具有许多功能和特性&#xff0c;使其在嵌入式系统中具有显著的优势。本文将深入剖析 Cortex-M4 微控制器的特性和优势&#xff0c;并提供示例代码来演示其用法。 ✅作者简介&#xff1a;热爱科研的嵌入式开发…

【LeetCode: 292. Nim 游戏+ 博弈问题】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

LlamaIndex 入门实战

文章目录 LlamaIndex 入门实战1. 基本概念2. 优劣势分析3. 简单代码示例4. Index持久化5. 使用场景6. 总结 LlamaIndex 入门实战 LlamaIndex是一个连接大型语言模型&#xff08;LLMs&#xff09;与外部数据的工具&#xff0c;它通过构建索引和提供查询接口&#xff0c;使得大模…

echarts使用之柱状图(一)

1 基本使用 核心配置主要是xAxis/yAxis/series <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equi…

【VUE】UniAPP之uview组件库,自定义tag封装,支持添加u-icon图标

组件代码 <template><view class"tag" :class"[props.mode, props.shape]"><slot name"left"><!-- icon图标 没有传入图标时不显示 --><u-icon v-if"props.icon ! " :name"props.icon" :color&…

新产品!可视化试卷搭建平台

hi, 大家好, 我是徐小夕. 之前和大家分享了很多可视化低代码和零代码的技术实现和产品设计思路, 也和大家分享了 H5-Dooring 零代码搭建平台的技术实现和未来规划, 今天继续和大家分享一下我们的新产品——橙子试卷. 橙子试卷 是一款可视化试卷/问卷搭建平台, 我们可以通过拖拽…

【算法分析与设计】无重复的最长子串

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s "abcabcbb" 输…

qt5入门-状态栏+几种标准对话框

参考&#xff1a; Qt 标准对话框之 QFileDialog_w3cschool https://www.w3cschool.cn/learnroadqt/vsd51j42.html 本地环境&#xff1a; win10专业版&#xff0c;64位 状态栏 QMainWindow类里有一个statusBar()&#xff0c;如果不存在状态栏&#xff0c;这个函数会自动创建一…

Linux系统安全①iptables防火墙

目录 一.iptables防火墙概述 1.netfilter与iptables &#xff08;1&#xff09;netfilter &#xff08;2&#xff09;iptables 2.iptables防火墙默认规则表、链结构 二.iptables四表五链 1.四表 2.五链 3.总结 三.iptables的配置 1.安装 2.配置方法 &#xff08;1…

MoonBit月兔新增多行字符串支持

MoonBit 更新 1. 新增多行字符串支持 每行需要以#|开头。多行字符串每行之间允许断开、插入注释&#xff0c;字符串内不支持转义和字符串插值。 2. 新增函数式的loop循环 其中continue 只允许出现在尾递归调用的位置&#xff0c;loop内允许使用break提前返回一个值。 3. …

1-3年的职业规划—张明的软件工程师之路

张明是一名即将毕业的计算机专业的大学生&#xff0c;他希望在未来的1-3年内成为一名软件工程师。为了实现这个目标&#xff0c;他决定使用进度猫来帮助自己规划和管理职业发展。 首先&#xff0c;张明在进度猫中创建了一个名为“软件工程师之路”的项目&#xff0c;并设定了…

springboot果蔬配送商城

技术架构&#xff1a; java mysql bootstrap jquery mybatis springboot 有需要该项目的小伙伴可以私信我你的Q。 功能介绍&#xff1a; 系统基于Java技术进行开发&#xff0c;后台数据库使用MySQL&#xff0c;在Windows环境下使用idea开发工具进行开发&#xff0c;主…

自学Java的第十九天

一&#xff0c;每日收获 1.排序 2.冒泡排序法 3.查找 4.多维数组-二维数组 二&#xff0c;新名词与小技巧 三&#xff0c;今天学习中所遇到的困难 一&#xff0c;每日收获 1.排序 ① 排序的介绍 排序是将多个数据&#xff0c;依指定的顺序进行排列的过程。 ② 排序的…

【ArcGIS微课1000例】0102:面状要素空洞填充

文章目录 一、实验描述二、实验数据三、实验步骤1. 手动补全空洞2. 批量补全空洞四、注意事项一、实验描述 在对地理数据进行编辑时,时常会遇到面数据中存在个别或大量的空洞,考虑实际情况中空洞的数量多少、分布情况,填充空洞区域可以采用逐个填充的方式,也可以采用快速大…