STM32学习之旅3 - 点亮一个LED灯(寄存器操作)

1. 简单原理介绍

1. M3内核

STM32 以32位为一位,同时能处理32位。
STM32命名规则
stm32有A-G组引脚,每组最多有16个引脚。
M3内核系列有4GB的地址空间。
在这里插入图片描述
通常使用片上外设内存空间
0x40000000到0x5FFFFFFF
1B=8b; 1KB=1024B 1MB=1024KB

2. GPIO口在片上外设

在这里插入图片描述

GPIO端口C 0x4001 1000~0x4001 13FF

3. 寄存器

常用7个寄存器,在内存中依次排列,每个寄存器占四个字节
偏移地址 0x04
0x4001 1000是GPIO的基地址
在这里插入图片描述

GPIO寄存器描述

端口配置低寄存器(GPIOx_CRL)(x=A…E)

在这里插入图片描述

0 1 2 3确定一个引脚位
在这里插入图片描述

01输出模式 00通用输出模式
低寄存器配置低八位,高寄存器配置高八位

APB2外设时钟使能寄存器(RCC_APB2ENR)

在这里插入图片描述
在RCC寄存器中,0x4002 1000为基地址,偏移地址是0x18
RCC_APB2ENR的地址为0x4002 1018
偏移地址 0x18
复位值 0x0000 0000
位4:IOPCEN :IO宽口C时钟使能(I/Oport C clock enable)
0:IO端口C时钟关闭
1:IO端口C时钟打开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 点亮LED灯

本项目使用STM32RCt6。
在这里插入图片描述
点亮LED0
在这里插入图片描述

1.打开 PA8 对应的时钟

0x4002 1018只是一个值,把其变为单片机可以识别的地址需要用到指针
unsigned int* p;

  • (unsigned int*) 0x4002 1018(指针内的值) |(1<<2)(打开时钟)
    *(unsigned int *)0x4002 1018 |=(1<<2)

2.配置输出,确定输出模式

PA8属于高8位
在这里插入图片描述
== 先将对应控制位清零,再根据需要进行设置==

*(unsigned int*) 0x4001 0804 &=~0x0F
*(unsigned int*) 0x4001 0804 |=1

3.输出低电平

对端口速出寄存器进行操作
在这里插入图片描述

*(unsigned int*) 0x4001  080C &=0<<8;//输出低电平,点亮LED
*(unsigned int*) 0x4001  080C &=~(1<<8)//输出低电平,点亮LED
*(unsigned int*) 0x4001  080C |=(1<<8)  //输出高电平,熄灭LED灯
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值