📄 gpio.c
字号:
#include "gpio.h"
/*
输入输出信号与A/D,D/A通道对应关系表:
输出信号:
T0 -- HD8/GPO[8]
U(R)s -- HD9/GPO[9]
U(R)g -- HD10/GPO[10]
输入信号:
T(R)j -- EXT_INT7/GP0[7] 高电平有效
T(IR)j -- EXT_INT6/GP0[6] 高电平有效
*/
void initialgpio()
{
/*
Description:初始化通用IO寄存器:GPIO_ENABLE,GPIO_DIRECTION,GPIO_VALUE
*/
*(unsigned volatile int *)GPIO_ENABLE = 0x87c0; //enable GPIO6,GPIO7,GPIO8,GPIO9,GPIO10
// Rsvd GP15EN GP14EN GP13EN GP12EN GP11EN GP10EN GP9EN GP8EN GP7EN GP6EN GP5EN GP4EN GP3EN GP2EN GP1EN GP0EN
// 31 - 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 - 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
//GPXEN = 1 GPX pin is enabled as general-purpose input/output pin
//GPXEN =0 GPX pin is disable as general-purpose input/output pin
*(unsigned volatile int *)GPIO_DIRECTION = 0x8700; // Set the GPIO direction
// Rsvd GP15DIR GP14DIR GP13DIR GP12DIR GP11DIR GP10DIR GP9DIR GP8DIR GP7DIR GP6DIR GP5DIR GP4DIR GP3DIR GP2DIR GP1DIR GP0DIR
// 31 - 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 - 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0
//GPXDIR = 0 GPx pin is an input
//GPXDIR = 1 GPx pin is an output
//GPIO_VALUE寄存器的值在当前应用的条件下暂时可以不用设置
//GPIO_VALUE寄存器的值如下:当对应的IO脚是输入的时候,GPIO_VALUE寄存器的值表示当前的输入值;
// 当对应的IO脚是输出的时候,GPIO_VALUE寄存器的值表示当前的输出值.
//GPIO_DELTAH寄存器的值在当前应用的条件下暂时可以不用设置
//GPIO_DELTAL寄存器的值在当前应用的条件下暂时可以不用设置
*(unsigned volatile int *)GPIO_HMASK = 0x0c0; // Set the mask bit
// Rsvd GP15HM GP14HM GP13HM GP12HM GP11HM GP10HM GP9HM GP8HM GP7HM GP6HM GP5HM GP4HM GP3HM GP2HM GP1HM GP0HM
// 31 - 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 - 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0
//GPXHM = 0 Interrupt/event genetation disable for GPx
//GPXHM = 1 Interrupt/event genetation enable for GPx
*(unsigned volatile int *)GPIO_LMASK = 0x000; // Set the mast bit
// Rsvd GP15LM GP14LM GP13LM GP12LM GP11LM GP10LM GP9LM GP8LM GP7LM GP6LM GP5LM GP4LM GP3LM GP2LM GP1LM GP0LM
// 31 - 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
//GPXLM = 0 Interrupt/event genetation disable for GPx
//GPXLM = 1 Interrupt/event genetation enable for GPx
*(unsigned volatile int *)GPIO_GCONTROL = 0x0; //
// Rsvd GP0M GPINT0M Rsv GPINTPOL LOGIC GPINTDV
// 31 - 6 5 4 3 2 1 0
// 0 - 0 0 0 0 0 0 0
*(unsigned volatile int *)GPIO_INTERRUPTP = 0x0; //
// Rsvd GPINT7POL GPINT6POL GPINT5POL GPINT4POL Rsv GPINT0POL
// 31 - 8 7 6 5 4 2 0
// 0 - 0 0 0 0 0 0 0
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -