8、stm32F103入门学习--点亮LED(寄存器操作)(向库函数操作迈进!)
有的型号引脚多,可以多达144!。所以进一步优化程序。思路:把跟引脚操作功能相关的函数专门放到“.h”和“.c”这两个函数里。有点像模块化编程,大家可以参考视频。
所以我们又要新建两个文件,放进文件夹即可。
再添加到keil工程中,这边添加有个小技巧。首先添加“.c”,方式跟添加“.h”一样,然后在“.c”编写如下程序。
编译一下,发现左侧出现了“.h”文件!
现在就是开始要在这两个新添加的文件中写程序。
我们对引脚的操作无非是控制输出、输入,输出的话控制输出高电平还是低电平。以LED为例的话,我们控制输出高低电平。那么可以将函数具体的实现方式在写“.c”文件中。
首先看两个寄存器,第一个BSRR,这个寄存器上节看到过,没用过。我们具体来看下,回顾下之前输出高低电平采用的是ODR寄存器,其实也可以采用BSRR。BSRR可分为高16位和低16位,在低16位中如果某个位设置为1,相当于ODR操作1;如果设置某个位为0,则忽视!在高16位中,如果某个位设置为1,相当于ODR操作0;如果设置某个位为0,则忽视!
对于BRR寄存器操作类似!具体看下图。
先看一个函数:
void GPIO_SetBits(GPIO_typeDef *GPIOx,uint16_t GPIO_Pin)
{GPIOx->BSRR |= GPIO_Pin;
}
这个函数需要填写两个参数,一个是GPIOx,一个是。从名字看出一个是确定引脚所在的组,一个是确定第几个引脚。以点亮我们的led为例PC13,则需要传进去的参数是GPIOC和(1