stm32学习笔记1(通过寄存器控制GPIO口的输出)

1.设置GPIOx的对应时钟。

这个地方需要用到stm32中的RCC寄存器

 我们此处需要用到的GPIO的时钟使能,在RCC_APB2ENR中。我现在需要用到GPIOA所以将他对应的寄存器位赋值为1。

 

2.设置GPIOx的工作模式

 找到GPIOx的配置寄存器,每组GPIO口由16个,为0到15,其中GPIOx_CRL是配置低8位的寄存器,GPIOx_CRH是配置高8位的寄存器。这两个寄存器都是32位的寄存器。其中每4位控制1个IO口。这4位中,高2位形成4种组合,控制IO口的工作方式,低2位4种组合,控制IO口的工作模式。

 这次我主要用到的是GPIOA的中的8号IO口的输出模式,那么,在GPIOA_CRHDE的最低2位设置为输出的工作模式(除00外其他3种都是输出模式,只是工作的最大频率不同。不知道哪个合适就先用最大吧!!!)在输出模式下高2位的4种组合中:00为通用推挽输出模式;01为通用开漏输出模式;10为复用功能推挽输出模式,11为复用功能开漏输出模式。在这次练习中,我主要用到的是通用的推挽输出模式。所以这里的4位应该设置为0011。

 3.设置GPIO的输出值

GPIOx_ODR寄存器就是控制对应组别IO口输出值的寄存器。

其中高16位为0,低16位则分别对应了GPIOx的16个IO口。赋上对应的值就可以实现对应IO口的高低电平输出了。 

 由于我的开发板LED为共阳极的连接方式,所以直接把ODR全部置0,就可以点亮led了。

但是不难看出,通过配置寄存器的方式来控制IO口的输出,是很繁琐,并且不方便对IO口进行独立的位操作。所以后续采用新方法。

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值