列出hc32l130各个引脚的gpio中断
时间: 2023-06-23 12:00:36 浏览: 145
好的,以下是hc32l130芯片各个引脚的GPIO中断:
PA0 - GPIO_PA_IRQn
PA1 - GPIO_PA_IRQn
PA2 - GPIO_PA_IRQn
PA3 - GPIO_PA_IRQn
PA4 - GPIO_PA_IRQn
PA5 - GPIO_PA_IRQn
PA6 - GPIO_PA_IRQn
PA7 - GPIO_PA_IRQn
PB0 - GPIO_PB_IRQn
PB1 - GPIO_PB_IRQn
PB2 - GPIO_PB_IRQn
PB3 - GPIO_PB_IRQn
PB4 - GPIO_PB_IRQn
PB5 - GPIO_PB_IRQn
PB6 - GPIO_PB_IRQn
PB7 - GPIO_PB_IRQn
PC0 - GPIO_PC_IRQn
PC1 - GPIO_PC_IRQn
PC2 - GPIO_PC_IRQn
PC3 - GPIO_PC_IRQn
PC4 - GPIO_PC_IRQn
PC5 - GPIO_PC_IRQn
PC6 - GPIO_PC_IRQn
PC7 - GPIO_PC_IRQn
PD0 - GPIO_PD_IRQn
PD1 - GPIO_PD_IRQn
PD2 - GPIO_PD_IRQn
PD3 - GPIO_PD_IRQn
PD4 - GPIO_PD_IRQn
PD5 - GPIO_PD_IRQn
PD6 - GPIO_PD_IRQn
PD7 - GPIO_PD_IRQn
相关问题
HC32L130单片机的外部中断怎么配置
HC32L130单片机的外部中断可以通过以下步骤进行配置:
1. 配置外部中断引脚,确定所需的中断引脚及其所属的GPIO口。
2. 配置中断触发方式,包括上升沿触发、下降沿触发、边沿触发等。
3. 使能中断,开启外部中断的总开关。
下面是一个简单的外部中断配置例程:
```c
#include "hc32l130.h"
void ExtIntInit(void)
{
// 配置中断引脚所属的GPIO口
M0P_GPIO->PAADS &= ~(1 << 0); // PA0不使用模拟功能
M0P_GPIO->PAOE &= ~(1 << 0); // PA0不使用开漏输出
M0P_GPIO->PAPU &= ~(1 << 0); // PA0不使用上拉
M0P_GPIO->PADIR &= ~(1 << 0); // PA0设置为输入
M0P_GPIO->PASTP |= (1 << 0); // PA0不作为休眠唤醒引脚
M0P_GPIO->PAINEN |= (1 << 0); // PA0使能输入
// 配置中断触发方式为上升沿触发
M0P_EXTINT->ENIR_f.EN0 = 1; // 使能中断0
M0P_EXTINT->EINT0_f.ELVL = 1; // 上升沿触发
// 使能外部中断
NVIC_ClearPendingIRQ(EXTI0_IRQn); // 清除中断标志
NVIC_SetPriority(EXTI0_IRQn, 3); // 设置中断优先级
NVIC_EnableIRQ(EXTI0_IRQn); // 使能中断
}
void EXTI0_IRQHandler(void)
{
// 处理中断事件
// ...
// 清除中断标志
M0P_EXTINT->EIFR_f.EIF0 = 1;
}
int main(void)
{
// 系统初始化
// ...
// 初始化外部中断
ExtIntInit();
while (1)
{
// 主循环
// ...
}
return 0;
}
```
在上面的例程中,我们首先配置了PA0口作为中断引脚,并设置了中断触发方式为上升沿触发。然后通过使能中断,开启了外部中断的总开关。在中断处理函数中,我们可以处理中断事件,并清除中断标志以便下一次中断触发。
hc32l130 4x5矩阵键盘实现逻辑,gpio中断方式代码实现
以下是基于HC32L130芯片的4x5矩阵键盘的GPIO中断方式的代码实现,仅供参考:
```c
#include "hc32l130.h"
#define COL_NUM 5
#define ROW_NUM 4
uint8_t key_table[ROW_NUM][COL_NUM] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20}
};
void GPIO_PA_IRQHandler(void)
{
uint8_t row, col, key_value;
for (row = 0; row < ROW_NUM; row++) {
GPIO_SetPinsAsOutput(GPIO_PORT_1, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
GPIO_SetPinValue(GPIO_PORT_1, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, GPIO_PIN_RESET);
GPIO_SetPinValue(GPIO_PORT_1, GPIO_PIN_0 + row, GPIO_PIN_SET);
for (col = 0; col < COL_NUM; col++) {
if (GPIO_GetPinValue(GPIO_PORT_1, GPIO_PIN_4 + col) == GPIO_PIN_RESET) {
key_value = key_table[row][col];
// 处理按键按下的操作
break;
}
}
}
GPIO_ClearPinsInterrupt(GPIO_PORT_1, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
}
void init_keypad(void)
{
// 配置行为普通输出
GPIO_SetPinsAsOutput(GPIO_PORT_1, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
// 配置列为中断输入
GPIO_SetPinsAsInput(GPIO_PORT_1, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
GPIO_SetPinInterrupt(GPIO_PORT_1, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7, GPIO_INT_RISING_EDGE);
// 初始化GPIO中断
NVIC_ClearPendingIRQ(GPIO_PA_IRQn);
NVIC_SetPriority(GPIO_PA_IRQn, 3);
NVIC_EnableIRQ(GPIO_PA_IRQn);
}
int main(void)
{
init_keypad();
while (1) {
// 不需要轮询读取列的电平,GPIO中断会自动检测
}
}
```
上述代码中,我们通过GPIO口的输入和输出功能,配合GPIO中断方式,实现了4x5矩阵键盘的按键检测和处理功能。其中,中断服务函数用于检测列的变化,不需要轮询函数。GPIO中断方式相比外部中断方式,代码更加简洁,但需要注意GPIO口的配置和中断触发条件的设置。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)