STM32F103实现点灯(寄存器方式)

参考:STM32F103系列最简易版点灯程序
作者:一只青木呀
发布时间:2020-10-21 11:40:38
网址:https://blog.csdn.net/weixin_45309916/article/details/109196950

硬件

STM32103最小系统开发板

注:江江视频使用的开发板是STM32103 C8T6

在这里插入图片描述

软件

keil软件

点灯流程

1、使能GPIO端口B和E对应的时钟
2、找到LED灯对应的GPIO端口E和B寄存器的基地址
3、设置其端口PE5、PB5为输出模式(端口配置寄存器)
4、设置其为低电平(输出数据寄存器)

使能GPIO端口E和B对应的时钟

找到GPIO对应的时钟

在STM32F1XX中文参考手册第二章存储器和总线构架
2.1 系统构架里找到
在这里插入图片描述
在这里插入图片描述
GPIOB、GPIOE对应的时钟为APB2,APB2和APB1都挂载在AHB系统总线上。

找到时钟对应的基地址(起始地址)

在这里插入图片描述

其基地址为:0x40021000

打开GPIO端口B和端口E对应的时钟(偏移地址——>寄存器)

找到了初始地址,下面就要找他的偏移地址,也就是找相对应的寄存器

在这里插入图片描述
由上图可知,这个寄存器有32位,我们将寄存器相应位数置为0或者1,可以打开其相应的功能。
在这里插入图片描述

代码实现:

复位和时钟控制器得基地址为:0x40021000
偏移值为:0x18
得到APB2外设寄存器地址为:0x40021018

使能IO端口B和IO端口E(即设置寄存器的第6位和第3位为1):

	*(unsigned int *)0x40021018 |= 0x01 << 6;//强转成指针再取内容
	*(unsigned int *)0x40021018 |= 0x01 << 3;

找到LED灯对应的GPIO端口E和B寄存器的基地址

打开底板原理图找到LED灯的引脚

在这里插入图片描述

找到LED0和LED1对应的引脚

LED1对应的引脚为GPIO端口E的PE5
在这里插入图片描述

LED0对应的引脚为GPIO端口B的PB5
在这里插入图片描述

打开数据手册找到其基地址

在这里插入图片描述
在这里插入图片描述
可看到GPIO端口E的基地址为:0x4001 1800
可看到GPIO端口B的基地址为:0X4001 0C00

设置其端口为输出模式

配置PE5为输出模式

注:0-7为低 8-15为高 PE5 这个5就为低
在这里插入图片描述

代码实现:
上面得到了PE5的基地址为:0x40011800
偏移地址为:0x00
得GPIOE_CRL寄存器地址为:0x40011800

*(unsigned int *)0x40011800 |= (0x0001) <<20;//或操作不会改变其他位

配置PB5为输出模式

在这里插入图片描述
代码实现:
上面得到了PB5的基地址为:0X40010C00
偏移地址为:0x00
得GPIOB_CRL寄存器地址为:0X40010C00

*(unsigned int *)0x40010C00 |= (0x01) <<20;

设置其为低电平(LED灯亮低电平触发)

设置PE5为低电平

在这里插入图片描述
配置GPIOE_ODR(输出数据寄存器out date register)寄存器得第5位为0.

代码实现:
上面得到了PB5的基地址为:0x40011800
偏移地址为:0x0C
得GPIOE_ODR寄存器地址为:0x4001180C

*(unsigned int *)0x4001180C &= ~(0x01 <<5);

设置PB5为低电平

在这里插入图片描述
代码实现:
上面得到了PB5的基地址为:0X40010C00
偏移地址为:0x0C
得GPIOE_CRL寄存器地址为:0X40010C0C

*(unsigned int *)0x40010C00 &= ~(0x01 <<5);

烧写程序

程序代码:
在这里插入图片描述
下载安装烧写软件FlyMcu,USB转TTL也要安装好,接线,找到串口的IO口对应好。需要拔插一下boot按钮(boot0置1,上一篇讲过串口下载方式的原理讲解)。

按下复位键开始烧写,如下图所示:

这个是江江使用的烧写软件进行烧写过程显示:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

boot0重新拔插置0,按压一下复位键

结果:两个灯都亮了!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

行稳方能走远

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

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

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

打赏作者

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

抵扣说明:

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

余额充值