AC7802x GPIO通用输入输出( General-Purpose Input/Output, GPIO) 模块通过 AHB 访问, 以实现最高的引脚性能。GPIO 引脚支持如下模式:
最多支持 27 个 I/O
输出状态: 推挽或开漏 (与 I2C 有关)
输出数据来自输出寄存器 GPIO_ODR 或 外设 (可选功能输出)
每个 I/O 的驱动能力选择
输入状态: 浮空, 上拉/下拉, 模拟(和 ADC/ACMP 有关)
输入数据至输入数据寄存器 GPIO_IDR 或外设(可选功能输入)
位置位和复位寄存器 GPIO_BSRR 用于按位写入访问 GPIO_ODR
高灵活度的引脚复用, 允许将 I/O 引脚用作 GPIO 或作为多种外设功能之一
可配置上升沿/下降沿/双边沿中断
低功耗模式唤醒中断 [size=13.3333px]
GPIO 结构框图:
中断
GPIO 以组的形式划分, 每 16 个 IO 构成一组。 以图中 GPIO[y+x*16]为例, ‘ y’ 表示某一组 IO 中的第 y 个 PIN 脚, x*16 表示第 x 组 GPIO。 如 GPIO[1+0*16]表示 GPIOA_PIN_1, GPIO[1+1*16]表示 GPIOB_PIN_1。外部中断线与中断向量的对应关系:
1) 当 m≤2 时, EXTI_In[m]对应着中断向量 EXTIm_IRQn
2) 当 3≤m≤8 时, EXTI_In[m]对应着中断向量 EXTI3_8_IRQn
30 当 9≤m≤15 时, EXTI_in[m]对应着中断向量 EXTI9_15_IRQn
用户按键,与LED原理图
GPIO初始化:根STM32变成思路是一样的。
void GPIO_LedInit(void)
{
/*初始化引脚功能,如果引脚上电后默认为GPIO,可省略掉初始化步骤.
有部分引脚上电默认为非GPIO,则必须选择其功能为GPIO才能作为GPIO使用.*/
GPIO_SetFunc(LED1_PORT, LED1_PIN, GPIO_FUN0);/*功能复用选择.*/
GPIO_SetFunc(LED2_PORT, LED2_PIN, GPIO_FUN0);
/*设置LED引脚为GPIO输出.*/
GPIO_SetDir(LED1_PORT, LED1_PIN, GPIO_OUT);
GPIO_SetDir(LED2_PORT, LED2_PIN, GPIO_OUT);
LED1_ON;
LED2_OFF;
}
/*!
* [url=home.php?mod=space&uid=247401]@brief[/url] key initialization
*
* @param none
* [url=home.php?mod=space&uid=266161]@return[/url] none
*/
void GPIO_KeyInit(void)
{
/*初始化引脚功能,如果引脚上电后默认为GPIO,可省略掉初始化步骤.
有部分引脚上电默认为非GPIO,则必须选择其功能为GPIO才能作为GPIO使用.*/
GPIO_SetFunc(KEY_PORT, KEY_PIN, GPIO_FUN0); /*功能复用选择.*/
/*设置按键引脚为输入,检测按键动作.*/
GPIO_SetDir(KEY_PORT, KEY_PIN, GPIO_IN); /*设置为输入模式.*/
/*使能KEY1的外部中断,设置为下降沿产生中断,当按下按键时产生中断.*/
GPIO_EnableExtInterrupt(KEY_PORT, KEY_PIN, EXTI_TRIGGER_FALLING);
/*设置外部中断,中断回调函数.*/
GPIO_SetCallback(KEY_PIN, EXTI_Key_Callback);
}
|