由于程序设计开发具有的不确定性,我们常常需要初始化某些特定的引脚,并读取引脚电平状态或向引脚输出高低电平。
快速找到端口的初始化语句:
首先,找到board.c文件,在下图的位置,我们可以看到关于LED灯的端口的初始化语句。
通过 Go Definition功能或者直接找到gpio.c文件,可以看到具体的实现方法:
- /*
- / _____) _ | |
- ( (____ _____ ____ _| |_ _____ ____| |__
- \____ \| ___ | (_ _) ___ |/ ___) _ \
- _____) ) ____| | | || |_| ____( (___| | | |
- (______/|_____)_|_|_| \__)_____)\____)_| |_|
- (C)2013 Semtech
- Description: Generic GPIO driver implementation
- Comment: Relies on the specific board GPIO implementation as well as on
- IO expander driver implementation if one is available on the target
- board.
- License: Revised BSD License, see LICENSE.TXT file include in the project
- Maintainer: Miguel Luis and Gregory Cristian
- */
- #include "board.h"
-
- #include "gpio-board.h"
-
-
- void GpioInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value )
- {
- GpioMcuInit( obj, pin, mode, config, type, value );
- }
-
- void GpioSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler )
- {
- GpioMcuSetInterrupt( obj, irqMode, irqPriority, irqHandler );
- }
-
- void GpioRemoveInterrupt( Gpio_t *obj )
- {
- GpioMcuRemoveInterrupt( obj );
- }
-
- void GpioWrite( Gpio_t *obj, uint32_t value )
- {
- GpioMcuWrite( obj, value );
- }
-
- void GpioToggle( Gpio_t *obj )
- {
- GpioMcuToggle( obj );
- }
-
- uint32_t GpioRead( Gpio_t *obj )
- {
- return GpioMcuRead( obj );
- }
本次,我们主要使用的方法为:GpioInit()
该方法有五个参数,我们依次展开来看。
参数一:Gpio_t *obj :我们在使用时需要先创建一个Gpio_t类型的变量,并在初始化时传入,方便我们后面去对其操作。
参数二:PinNames pin:此处我们填写需要操作的端口,例如PB_2。
参数三:PinModes mode:此处我们可以填常见的两种,即PIN_INPUT(输入模式),PIN_OUTPUT(输出模式),而PIN_ALTERNATE_FCT与PIN_ANALOGIC暂时不需要我们关注。
参数四:PinConfigs config:此处我们一般写PIN_PUSH_PULL(推挽)即可。
参数五:PinTypes type:此处我们根据需要选择PIN_NO_PULL,PIN_PULL_UP,PIN_PULL_DOWN即可。
参数六:填0即可。
下面展示读取PB_2电平,低电平点亮LED1的操作:
- Gpio_t Device;
- int main( void )
- {
- Init();
- GpioInit(&Device,PB_2,PIN_INPUT,PIN_PUSH_PULL,PIN_PULL_UP,0);
- while( 1 )
- {
- if(GpioRead(&Device)==0)
- GpioWrite(&Led1,0);
- else
- GpioWrite(&Led1,1);
- }
- }