stm32f4通过配置寄存器和位操作实现跑马灯

stm32f4通过配置寄存器和位操作实现跑马灯

寄存器实现

如下图所示为LED和stm32f4的硬件连接图,在此通过配置GPIOF_9输出高低电平以实现LED0的闪烁:
在这里插入图片描述
在配置GPIOF_9之前需要先使能GPIO的外设时钟,可以通过配置RCC AHB1寄存器实现,RCC AHB1寄存器如下图所示
在这里插入图片描述
从图中可以看出,要使能GPIOF只需要对该寄存器的第5为置位即可,对于置位操作,只需要将该位与1相或即可,即:

RCC->AHB1ENR |= 1<<5;

接下来就该初始化GPIOF_9了,上一篇文章说到,stm32f4单片机拥有7组GPIO,每一组GPIO都含有16个IO口,且每一组GPIO都拥有10个寄存器,其中有4个寄存器用于对GPIO的模式进行配置,这四个GPIO寄存器分别是分:GPIOx_MODER,GPIOx_OTYPER
GPIOx_OSPEEDR,GPIOx_PUPDR
,分别对应模式控制寄存器,输出类型寄存器,输出速度寄存器和上下拉寄存器,下面分别对4个GPIO寄存器进行配置:

  • GPIOx_MODER
    在这里插入图片描述
    要实现LED0的闪烁,需要GPIOF_9在一定时间内循环输出高低电平,为此需要设置GPIOF_9为通用输出模式,从上图可以看出,我们需要配置该寄存器第19和18位为:0和1
GPIOF->MODER &= ~(3 << (2*9));	//先将19和18位清零
GPIOF->MODER |= 1 << (2*9);	//对18位置1

这样便实现了配置GPIOF_9位通用输出模式了

  • GPIOx_OSPEEDR
    在这里插入图片描述
    在这里配置GPIOF_9的输出速度为25MHz,从图中可以看出,和GPIOx_MODER寄存器的配置是一样的
GPIOF->OSPEEDR &= ~(3 << (2*9));	//先将19和18位清零
GPIOF->OSPEEDR |
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值