Notas: (2) controlador de pin GPIO
Autor: La familia tiene una esposa de hadas Xie comerciante
Fecha: 2021/2/26
Los registros principales que controlan los pines GPIO se muestran en la siguiente figura:
El microcontrolador BH66F2652 de Hetai tiene dos paquetes, y el número de pines GPIO correspondientes tampoco se usa. Aquí, el código de función del paquete se escribe con el número máximo de pines.
Los pines del paquete no tienen pines PORTC y PB7.
Los pines del paquete incluyen pines PORTC y PB7.
1. Pin de selección de entrada y salida
/*******************************************************************************
* fuction gpioInput
* brief 设置引脚输入
* param gpioPin
* return 无
*******************************************************************************/
void gpioInput(char gpioPin)
{
switch(gpioPin)
{
//POARTA
case 0: _pac0 = 1; break;
case 1: _pac1 = 1; break;
case 2: _pac2 = 1; break;
case 3: _pac3 = 1; break;
case 4: _pac4 = 1; break;
case 5: _pac5 = 1; break;
case 6: _pac6 = 1; break;
case 7: _pac7 = 1; break;
//POARTB
case 8: _pbc0 = 1; break;
case 9: _pbc1 = 1; break;
case 10: _pbc2 = 1; break;
case 11: _pbc3 = 1; break;
case 12: _pbc4 = 1; break;
case 13: _pbc5 = 1; break;
case 14: _pbc6 = 1; break;
case 15: _pbc7 = 1; break;
//POARTC
case 16: _pcc0 = 1; break;
}
}
/*******************************************************************************
* fuction gpioOutput
* brief 设置引脚输出
* param gpioPin
* return 无
*******************************************************************************/
void gpioOutput(char gpioPin)
{
switch(gpioPin)
{
//POARTA
case 0: _pac0 = 0; break;
case 1: _pac1 = 0; break;
case 2: _pac2 = 0; break;
case 3: _pac3 = 0; break;
case 4: _pac4 = 0; break;
case 5: _pac5 = 0; break;
case 6: _pac6 = 0; break;
case 7: _pac7 = 0; break;
//POARTB
case 8: _pbc0 = 0; break;
case 9: _pbc1 = 0; break;
case 10: _pbc2 = 0; break;
case 11: _pbc3 = 0; break;
case 12: _pbc4 = 0; break;
case 13: _pbc5 = 0; break;
case 14: _pbc6 = 0; break;
case 15: _pbc7 = 0; break;
//POARTC
case 16: _pcc0 = 0; break;
}
}
2. Pin pull-up enable inhabilitar el bit de selección
/*******************************************************************************
* fuction gpioPullUpEnable
* brief 设置引脚上拉使能
* param gpioPin
* return 无
*******************************************************************************/
void gpioPullUpEnable(char gpioPin)
{
switch(gpioPin)
{
//POARTA
case 0: _papu0 = 1; break;
case 1: _papu1 = 1; break;
case 2: _papu2 = 1; break;
case 3: _papu3 = 1; break;
case 4: _papu4 = 1; break;
case 5: _papu5 = 1; break;
case 6: _papu6 = 1; break;
case 7: _papu7 = 1; break;
//POARTB
case 8: _pbpu0 = 1; break;
case 9: _pbpu1 = 1; break;
case 10: _pbpu2 = 1; break;
case 11: _pbpu3 = 1; break;
case 12: _pbpu4 = 1; break;
case 13: _pbpu5 = 1; break;
case 14: _pbpu6 = 1; break;
case 15: _pbpu7 = 1; break;
//POARTC
case 16: _pcpu0 = 1; break;
}
}
/*******************************************************************************
* fuction gpioPullUpDisable
* brief 设置引脚上拉失能
* param gpioPin
* return 无
*******************************************************************************/
void gpioPullUpDisable(char gpioPin)
{
switch(gpioPin)
{
//POARTA
case 0: _papu0 = 0; break;
case 1: _papu1 = 0; break;
case 2: _papu2 = 0; break;
case 3: _papu3 = 0; break;
case 4: _papu4 = 0; break;
case 5: _papu5 = 0; break;
case 6: _papu6 = 0; break;
case 7: _papu7 = 0; break;
//POARTB
case 8: _pbpu0 = 0; break;
case 9: _pbpu1 = 0; break;
case 10: _pbpu2 = 0; break;
case 11: _pbpu3 = 0; break;
case 12: _pbpu4 = 0; break;
case 13: _pbpu5 = 0; break;
case 14: _pbpu6 = 0; break;
case 15: _pbpu7 = 0; break;
//POARTC
case 16: _pcpu0 = 0; break;
}
}
En tercer lugar, el pasador tira hacia arriba y tira de la selección de nivel bajo
/*******************************************************************************
* fuction gpioHigh
* brief 设置引脚高电平
* param gpioPin
* return 无
*******************************************************************************/
void gpioHigh(char gpioPin)
{
switch(gpioPin)
{
//POARTA
case 0: _pa0 = 1; break;
case 1: _pa1 = 1; break;
case 2: _pa2 = 1; break;
case 3: _pa3 = 1; break;
case 4: _pa4 = 1; break;
case 5: _pa5 = 1; break;
case 6: _pa6 = 1; break;
case 7: _pa7 = 1; break;
//POARTB
case 8: _pb0 = 1; break;
case 9: _pb1 = 1; break;
case 10: _pb2 = 1; break;
case 11: _pb3 = 1; break;
case 12: _pb4 = 1; break;
case 13: _pb5 = 1; break;
case 14: _pb6 = 1; break;
case 15: _pb7 = 1; break;
//POARTC
case 16: _pc0 = 1; break;
}
}
/*******************************************************************************
* fuction gpioLow
* brief 设置引脚低电平
* param gpioPin
* return 无
*******************************************************************************/
void gpioLow(char gpioPin)
{
switch(gpioPin)
{
//POARTA
case 0: _pa0 = 0; break;
case 1: _pa1 = 0; break;
case 2: _pa2 = 0; break;
case 3: _pa3 = 0; break;
case 4: _pa4 = 0; break;
case 5: _pa5 = 0; break;
case 6: _pa6 = 0; break;
case 7: _pa7 = 0; break;
//POARTB
case 8: _pb0 = 0; break;
case 9: _pb1 = 0; break;
case 10: _pb2 = 0; break;
case 11: _pb3 = 0; break;
case 12: _pb4 = 0; break;
case 13: _pb5 = 0; break;
case 14: _pb6 = 0; break;
case 15: _pb7 = 0; break;
//POARTC
case 16: _pc0 = 0; break;
}
}
Bit de selección de activación de cuatro pines
/*******************************************************************************
* fuction gpioWakeup
* brief 设置引脚唤醒
* param gpioPin:引脚号 enORdis:使能/除能
* return 无
*******************************************************************************/
void gpioWakeup(char gpioPin,char enORdis)
{
switch(gpioPin)
{
//POARTA
case 0: if(!enORdis) _pawu0 = 0; else _pawu0 = 1; break;
case 1: if(!enORdis) _pawu1 = 0; else _pawu1 = 1; break;
case 2: if(!enORdis) _pawu2 = 0; else _pawu2 = 1; break;
case 3: if(!enORdis) _pawu3 = 0; else _pawu3 = 1; break;
case 4: if(!enORdis) _pawu4 = 0; else _pawu4 = 1; break;
case 5: if(!enORdis) _pawu5 = 0; else _pawu5 = 1; break;
case 6: if(!enORdis) _pawu6 = 0; else _pawu6 = 1; break;
case 7: if(!enORdis) _pawu7 = 0; else _pawu7 = 1; break;
}
}
#ifndef _GPIO_H
#define _GPIO_H
#include "BH66F2652.h"
//POARTA
#define PA0 0
#define PA1 1
#define PA2 2
#define PA3 3
#define PA4 4
#define PA5 5
#define PA6 6
#define PA7 7
//POARTB
#define PB0 8
#define PB1 9
#define PB2 10
#define PB3 11
#define PB4 12
#define PB5 13
#define PB6 14
#define PB7 15
//POARTC
#define PC0 16
extern void gpioInput(char gpioPin);
extern void gpioOutput(char gpioPin);
extern void gpioPullUpEnable(char gpioPin);
extern void gpioPullUpDisable(char gpioPin);
extern void gpioHigh(char gpioPin);
extern void gpioLow(char gpioPin);
extern void gpioWakeup(char gpioPin,char enORdis);
#endif
/*--------------------------------END THE FILE-----------------------------------*/