MCU存储器映射

一.存储器映射

物理存储器和外设本身不具备地址,我们应该如何访问他呢。存储器映射是将逻辑地址空间映射到物理地址空间,以实现对物理存储器和外设的访问。这个映射过程是通过软件和硬件的协作来完成的。

以下是STM32F407ZGT6的存储器映射表:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZLgMle94-1690972512711)(img/image-20230802172203248.png)]

二.配置

这里我们用正点原子战舰开发板STM32F407ZGT6来实验,LED灯为F9

新建完工程后,这里我们添加上启动程序,和CORE文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iY4loHc1-1690972512712)(img/image-20230802174313846.png)]

我们使用HSI(内部高速时钟),默认已经在system_stm32f4xx.c中配置好了

第一步,进行GPIOF的时钟使能

查看手册,GPIOF是挂载在AHB1总线上

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZKjrVjH-1690972512713)(img/image-20230802180042562.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CDOjqC8o-1690972512714)(img/image-20230802180438830.png)]

所以如下配置

#define RCC_BASE   0x40023800
#define AHB1_OFFSET 0x30

第二步配置GPIOF的寄存器

GPIO的基地址如下:

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zF25xRMF-1690972512715)(img/image-20230802180625784.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CiWovcgm-1690972512716)(img/image-20230802182029248.png)]

#define GPIOF_BASE 0x40021400
#define GPIOF_MODER_OFFSET 0x00
#define GPIOF_ODR_OFFSET 0x14

三.实践

全部代码如下

#define RCC_BASE 0x40023800
#define AHB1_OFFSET 0x30

#define GPIOF_BASE 0x40021400
#define GPIOF_MODER_OFFSET 0x00
#define GPIOF_ODR_OFFSET 0x14

#define DELATY 2000000 // 时间

int main()
{
	// 配置时钟GPIOF
	*((volatile int *)(RCC_BASE + AHB1_OFFSET)) |= 0x00000020;
	// 配置模式
	*((volatile int *)(GPIOF_BASE + GPIOF_MODER_OFFSET)) |= 0x00040000;

	*((volatile int *)(GPIOF_BASE + GPIOF_ODR_OFFSET)) |= 0x00000200;

	while (1)
	{
		*((volatile int *)(GPIOF_BASE + GPIOF_ODR_OFFSET)) &= ~(0x00000200);
		for (int i = 0; i < DELATY; i++)
			;
		*((volatile int *)(GPIOF_BASE + GPIOF_ODR_OFFSET)) |= 0x00000200;

		for (int i = 0; i < DELATY; i++)
			;
	}
}

四.现象

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HongCode嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值