STM32学习笔记————STM32F103(一)使用寄存器控制LED灯

一、使用寄存器控制LED灯

一、LED电路原理

如下图,右侧为3.3V高电平电压,左侧对应PB5等,一共三个端口,对应三种颜色LED灯,要想让灯亮,即让对应端口输出0V电压,这样就产生了由右向左的3.3V压降。
LED电路原理图

二、如何输出端口值

如下图ODR寄存说明,以点亮绿灯为例,该端口为低16位有效,PB0端口需要输出为0,此处给出偏移地址为0Ch,而查阅手册得知GPIO的B端口物理地址为0x40010C00,所以要想点亮绿灯,要控制rw0位为0,其真实地址即为0x40010C0C即代码

*(unsigned int *)0x40010C0C &=~(1<<0);

此处第一个*表示改变0x40010C0C地址的内存
unsigned int *表示强制改变0x40010C0C为指针类型,
&是与运算
~是取反运算
(1<<0)表示1左移0位
所以即为0左移0位,与原来的低16位相与,只有rw0位变为0,其余位不变,这也是常用的清零操作。
各个端口的物理地址

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值