stm32入门学习(二)之寄存器点灯

1.明确三个步骤

板子采用的是stm32最小系统板stm32f103c8t6,根据原理图得知C13管脚低电平点亮led

寄存器点灯需要以下3步:

1.查看stm32f103ct86中文手册,可以得知要配置通道APB2上的GPIOC时钟,操作如下:

第一步: 找总线AHB外设使能时钟寄存器的地址,复制起始地址,左边是起始地址,右边是终止地址

第二步:找APB2外设使能时钟寄存器的偏移地址,复制偏移地址,加上面AHB的寄存器时钟地址,得到0x40021018,这个地址就是

 第三步:配置gpioC时钟使能,先把刚才的地址置“1”后进行位操作(移动4位),就可以得到时钟C的地址

    通过强制转换为指针类型(unsigned int*),再取地址*。如下:

 接下来还是一样,大概都是2步:第一步找GPIOC端口的寄存器地址,

第二步配置端口高寄存器(GPIOx_CRH) (x=A..E)

这里GPIO13是高位的,高位即GPIOX的x是(8~15)的,所以要选择对选择GPIOP以10MHz推免输出,即0x0010,再位操作20位,配置 如下:

*(unsigned int *)0x40011004|=0x01<<20

 

 

 3.配置端口输出数据寄存器(GPIOx_ODR) (x=A..E)    同样的就是先找GPIO端口的起始地址(如上面的0x4001 1004),再找端口输出寄存器偏移地址(如上面的0x18),结合逻辑“与”“或”加上十六进制数(如上面的0x01),再结合寄存器地址进行位操作(如上面的<<20)配置

类比后参考手册

这里地址0ch的h是表示十六进制,这里gpioc的起始地址是一样的,只是偏移地址是0ch,即端口输出数据寄存器地址为 0x4001 1000+0ch=0x4001 100c

下面配置低电平有点逆反思维,可能是方便或者防止数据干扰,逻辑还是可以接受的:

首先13口置0低电平,加0x01,左移13位,然后置反,然后再与上面寄存器地址与运算,

这样,这些就配置完了,一开始可能有点复杂,但熟悉了怎么看手册就不难了。

此篇是看了哞哞哥的stm32点灯的一个视频课,咬牙把寄存器这些东西弄懂了一下,接下来再看看江科大自动协的点灯课,可能比较细,有点累~~呜呜

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半重积分

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

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

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

打赏作者

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

抵扣说明:

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

余额充值