stm32f103c8t6外部中断PA12初始化示例代码
时间: 2024-06-23 12:01:30 浏览: 106
STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,其PA12引脚可以作为外部中断输入。在C语言中,使用HAL库进行初始化的步骤如下:
```c
#include "stm32f1xx_hal.h"
void EXTI_PA12_IRQHandler(void)
{
// 处理中断事件
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
}
int main(void)
{
// 初始化 HAL 库
HAL_Init();
// 配置系统时钟
SystemClock_Config();
// 配置 GPIO
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_12; // PA12
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; // 引脚模式为下降沿触发
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不用上拉/下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; // 高速
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// 配置 EXTI
EXTI_InitTypeDef EXTI_InitStruct;
EXTI_InitStruct.Pin = GPIO_PIN_12;
EXTI_InitStruct.Line = EXTI_LINE_12; // 对应EXTI线号
EXTI_InitStruct.Mode = EXTI_MODE_IT_FALLING; // 异步边沿触发
EXTI_InitStruct.ActiveState = EXTI活性状态低电平有效
EXTI_InitStruct.Interrupt = ENABLE; // 开中断
HAL_GPIO_EXTI_Init(&EXTI_InitStruct);
// 映射中断到处理器
HAL_NVIC_SetPriority(EXTI0_15_IRQn, 0, 0); // EXTI0_15是EXTI PA12中断对应的中断线
HAL_NVIC_EnableIRQ(EXTI0_15_IRQn);
while (1)
{
// 主循环
}
}
阅读全文