stm32从小白到小黑

1啥也别说,先上来就是gpio

什么叫做gpio?这个东西就是那个开发板上的io口,

就是那个一排一排的排针

她有好多的功能

他是单片机与外部设备的最重要的沟通媒介

用来把信息传进来,用哪个函数?

用这个GPIO_ReadInputDataBit

怎么用?

定义一个变量a

a =GPIO_ReadInputDataBit (GPIOB, GPIO_Pin_7);

随便找个gpio,比如GPIOB,之后使用他的7引脚,

如果外部给这个7引脚的是高电平,一般是3.3左右,那么a的值就是1

为啥是1,不是别的?是因为之前还要对GPIO进行初始化,这个跟默认电平有关系

也就是说,要对GPIO这个寄存器在使用前,进行一些配置,

接下来我们看她最开始应该怎么配置

GPIO是stm32的一个外设,在这个单片机中,无论你使用哪个外设,用哪个硬件,都要开启对应的时钟,时钟相当于每一个外设的动力源,这个配置时钟的过程,在对于寄存器方面的编程上,就是对对应的寄存器一个特定的位置写1(或者其他什么值),用库函数或者是hal库的话,就方便很多。

时钟通过APB2外设总线连到GPIO

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

那么,在哪里去找这个APB2总线所连接到其他外设呢?

看看在函数名前那三个字

RCC

 

这个就是时钟跟相关的几乎所有东西都在rcc.h和rcc.c里面,以后要用到什么外设,就去那里找就可以了。

她的位置就在xx_rcc.h的文件的最下端,很多个外设都跟这几个总线连起来,也就是所谓的挂载,所以,当你想要初始化任何外设的时候,都要首先找时钟和总线,就去rcc.h这个文件里面即可。

那么这个函数RCC_APB2PeriphClockCmd()怎么使用呢,在keil里面,双击这个函数名之后右键,选择Go to definition

 

之后就会进入到一个界面

 

这个就是函数的定义的地方,在他的上面,能看到好多的解释和参数,这里你能够看到被逗号分隔的许多参数,这些参数直接可以复制之后粘贴到函数的参数位置,也能够看到对应总线挂载的各种外设,如果APB1没有,那不妨就去APB2外设看看。

有的时候,右键的时候,会出现“报错”,其中一个原因就是没有编译,点一下这个按钮

 

就可以了,但是有的时候还是不行,那么就可以去看看

 

在这里,把对勾打上,估计就可以了,

然而有的时候还是不行,有一次我的文件夹好像设置了管理员权限,这个时候我试着复制一个工程,把他放在一个其他的地方,就欧克了。可以正常运行。

我们接下来把参数配置好

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)

第二个参数就是使能这个外设,当然,DISABLE就是失能,就是停止使用这个外设。

接下来就使用结构体配置GPIO的一些初始值

GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;

GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;

这里面的第一行,是结构体,对于这个问题,我目前不做具体的说明(1),为了让初学者比较容易理解,这里做一个比喻:

GPIO_InitTypeDef这个东西跟“类型名”差不多,

GPIO_InitStruct这个东西,跟变量“差不多”,

为了方便配置参数,可以是我们又定义了一个新的变量,这个变量里面还有变量,之后就是对这些具体的变量进行配置

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;这个是推挽输出,是有驱动能力的模式

这个点“  .”非常像micropython的语法,这里有一点面向对象编程的味道,但我认为,毕竟C语言是个面向过程的语言,这种感觉,也仅仅就是一直”味道“罢了,不得不说,面向对象编程,适合快速开发大规模的软件或者工程,简洁性和易用性是非常强的。这又引起了我的一个新的想法,如何让stm32的编程更简单快捷一点呢,这个问题我们放在后面说。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值