stm32学习1之GPIO口

ps:使用的32型号是.stm32f407zgt
原本我是不打算继续更32的,但是最近的做的一些东西需要用到arm。所以想想就复习一下32吧!毕竟当初学的也确实不咋地。
32系列我不会用很官方的话来讲,我会用自己的理解最粗暴直白的表达出来。有什么错误欢迎指正,企鹅:918619587
首先我们解释一下什么是GPIO,GPIO就是通用输入输出。这莫理解可能有点抽象,直接上例子吧!最简单的点亮LED灯实验。
首先我们来看一下32开发板的部分原理图:
在这里插入图片描述
现在我们要点亮LED4这个灯,通过上面这个配套的原理图可以看到LED4对应的引脚为PC0。这个LED4是上面呢,它属于片上外设。我们要使用这个灯,是不是首先要唤醒它啊,就像你使用电磁炉一样,是不是要先插电,然后按下开机才能使用啊。所以片上外设也一样我们在使用它之前要先给他唤醒我们接着看一下设备概述
在这里插入图片描述
从这个图中标注部分可以看到,引脚PC0对应的是GPIOC,而GPIOC挂在AHB1这个时间线上,所以你要唤醒这个串口,那么就唤醒这个时间线(AHB1).我们来看一下AHB1
在这里插入图片描述
在上图中GPIOC对应的寄存器是2,所以我们要开AHB1这条线上的编号为2的寄存器。
这样我们就给io口唤醒了,然后我们要使用io口就要进行配置,就像螺丝刀一样,手柄是不变的,但是不同型号的螺丝要用不同的刀头,所以我们要配置自己需要的刀头。
我们来看一下GPIO的配置:
在这里插入图片描述
我们看一下第一个输出模式,这里我们选择通用,注意到这里是两位控制一个端口模式,足以到GPIOC对应的是PC0,所以0x2=0,我们选择0,1这两个(假设是PC10,那就是10x2=20,使用的是19,20这两个)
然后我们看下一个:
在这里插入图片描述
在这里插入图片描述
我们选择输出推挽,看寄存器根据PC0,则是第0号寄存器控制,只需要给第0号寄存器置0即可
在这里插入图片描述
输出速度当然选择最快的了,因为是PC0引脚所以是0这个寄存器,因为是两位控制所以是01这两个寄存器,选择快速,将01这两个寄存器分别置为1,0即可
在这里插入图片描述
在这里插入图片描述
上下拉我们选择无上下拉即可
接下来我们看一下代码:

//开时钟
	RCC->AHB1ENR |=  (1<<2);  
//输出模式
	GPIOC->MODER &= ~(0x3<<0);
	GPIOC->MODER |= (0x1<<0);
//输出类型
	GPIOC->OTYPER &= ~(0x1<<0);
//输出速度
	GPIOC->OSPEEDR &= ~(0x3<<0);
	GPIOC->OSPEEDR |= (0x2<<0);
//无上下拉
	GPIOC->PUPDR &= ~(0x3<<0);
将代码放到main函数里面这就是第一个最简单的程序,LED4亮灯。
其中可能有很多不明白,不明白就先记住,后面就慢慢的理解了。
你学会了吗?根据我提供的图片你可以配置LED1,2,3吗?做一个流水灯?
-END-
欢迎大家交流指正。谢谢
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值