STM32笔记7--位操作h.

通过位操作实现对IO口的控制,

7.1、位操作的基本原理;

7.2、跑马灯的硬件连接;

7.3、编写跑马灯的程序(位操作);

位操作作为第三种控制GPIO口的方法(前两种是库函数和寄存器),不需要掌握地很透彻,但仍需要具备通过位操作读取GPIO口状态的能力。

IO口位操作具体参考文献:

7.1、位带操作基本原理

首先,之前的寄存器或者是库函数操作,本质上都是操作寄存器来控制GPIO口的状态(输出高或低电平)。而位带操作的意思是,将寄存器的32位映射到不同的地址,通过访问(读、写、改)这些地址就可以达到控制寄存器,以改变GPIO口的目的。

那么,有哪些区域支持位带操作呢?

(1)、一个是SRAM区的最低1MB范围;

(2)、第二个是片内外设区的最低1MB范围。

PS:在库函数的工程中,已经封装了位带操作,如下所示:

其中,位带操作就被封装在 sys.c 中;如下所示为表示映射的代码:

 同时,根据位带操作的机制,需要的是通过 PAout 和 PAin 寄存器,PAout控制输出寄存器ODR,PAin控制输入寄存器IDR。完成对映射地址的控制,

那么,相较于  直接控制寄存器的方式,位带操作的方式优势在于:对于一些不常用的引脚,如果要改变这些不常用引脚的状态,需要翻阅技术手册来查看引脚连接的总线,而位带操作则直接把对寄存器的控制封装在函数段中,方便实际的操作。

<---->另需要注意的是:位带操作中,我们操作的最终结果都是寄存器所对应的地址位,而不是寄存器本身。

 

7.2、跑马灯硬件连接  

略,可以参考之前《跑马灯实验--库函数版本》

7.3、编写跑马灯实验--位带操作的代码

主要步骤

              (1)、使能IO口时钟 调用函数 RCC_APB2PeriphClockCmd();

              (2)、初始化IO口模式  调用函数 GPIO_Init();

              (3)、操作IO口,输出高低电平。使用 位带操作 

思考

修改延时函数后,为什么小灯的亮灭不发生变化

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值