写一个stm32f1按键中断的 .c和.h程序,按键引脚为PC8
时间: 2024-04-30 09:24:02 浏览: 118
和PC9,中断优先级为2。以下是代码:
在 .h 文件中:
```c
#ifndef BUTTON_H
#define BUTTON_H
#include "stm32f1xx_hal.h"
void Button_Init(void);
void Button_Int_Enable(void);
void Button_Int_Disable(void);
void Button_IRQ_Handler(void);
#endif /* BUTTON_H */
```
在 .c 文件中:
```c
#include "button.h"
#define BUTTON_IRQn EXTI9_5_IRQn
#define BUTTON_PRIORITY 2
extern GPIO_HandleTypeDef hgpio_c;
static void Button_NVIC_Init(void);
void Button_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOC_CLK_ENABLE();
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 | GPIO_PIN_9, GPIO_PIN_RESET);
GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
Button_NVIC_Init();
}
void Button_Int_Enable(void)
{
HAL_NVIC_EnableIRQ(BUTTON_IRQn);
}
void Button_Int_Disable(void)
{
HAL_NVIC_DisableIRQ(BUTTON_IRQn);
}
void Button_IRQ_Handler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);
}
static void Button_NVIC_Init(void)
{
HAL_NVIC_SetPriority(BUTTON_IRQn, BUTTON_PRIORITY, 0);
HAL_NVIC_EnableIRQ(BUTTON_IRQn);
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == GPIO_PIN_8) {
// Code for button PC8
} else if (GPIO_Pin == GPIO_PIN_9) {
// Code for button PC9
}
}
```
请注意,这只是简单的示例代码,您需要根据您的具体应用程序进行修改和优化。
阅读全文