GPIO_EXTI_INT_LEVEL
时间: 2024-04-22 07:20:51 浏览: 95
GPIO_EXTI_INT_LEVEL是一个用于配置外部中断触发电平的宏定义。在嵌入式系统中,GPIO(General Purpose Input/Output)用于与外部设备进行通信和控制。外部中断是一种常见的方式,通过它可以实现对外部事件的响应。
GPIO_EXTI_INT_LEVEL用于配置外部中断触发的电平,有两个可选值:
- GPIO_EXTI_TRIG_RISING:表示上升沿触发,即当引脚从低电平变为高电平时触发中断。
- GPIO_EXTI_TRIG_FALLING:表示下降沿触发,即当引脚从高电平变为低电平时触发中断。
通过配置GPIO_EXTI_INT_LEVEL,可以根据具体需求选择触发中断的电平。这样,在外部事件满足条件时,系统可以及时响应并执行相应的处理操作。
相关问题
Configure pins as * Analog * Input * Output * EVENT_OUT * EXTI */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ //__HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); //__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(LEDR_OUT_PD3_GPIO_Port, LEDR_OUT_PD3_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ //HAL_GPIO_WritePin(GPIOB, RS485_RE_OUT_PB8_Pin|RS485_SE_OUT_PB9_Pin, GPIO_PIN_RESET); /*Configure GPIO pin : LEDR_OUT_PD3_Pin */ GPIO_InitStruct.Pin = LEDR_OUT_PD3_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(LEDR_OUT_PD3_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : RS485_RE_OUT_PB8_Pin RS485_SE_OUT_PB9_Pin */ GPIO_InitStruct.Pin = RS485_RE_OUT_PB8_Pin|RS485_SE_OUT_PB9_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } /* USER CODE BEGIN 4 */ /* USER CODE END 4 */ /** * @brief This function is executed in case of error occurrence. * @param file: The file name as string. * @param line: The line in file as a number. * @retval None */ void _Error_Handler(char *file, int line) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ while(1) { } /* USER CODE END Error_Handler_Debug */
这是用于初始化GPIO引脚的函数。在该函数中,首先使能了GPIOC、GPIOD和GPIOB端口的时钟。然后,配置了LEDR_OUT_PD3_Pin引脚为输出模式,初始电平为高电平。接着,配置了RS485_RE_OUT_PB8_Pin和RS485_SE_OUT_PB9_Pin引脚为输出模式,初始电平为高电平。最后,定义了一个错误处理函数_Error_Handler,当发生错误时会进入该函数进行处理。
需要注意的是,该函数中有一段注释掉的代码,可能是之前的配置代码被注释掉了。
用stm32f401的ll库写一个用功能键控制灯亮或者灭的代码
下面是一个使用STM32F401芯片的LL库(Low-Level库)编写的示例代码,通过功能键控制灯的亮灭:
```c
#include "stm32f4xx_ll_bus.h"
#include "stm32f4xx_ll_gpio.h"
#include "stm32f4xx_ll_exti.h"
#include "stm32f4xx_ll_system.h"
#include "stm32f4xx_ll_utils.h"
#define GPIO_PIN_D0 LL_GPIO_PIN_0
#define GPIO_PIN_K0 LL_GPIO_PIN_6
void GPIO_Init(void);
void EXTI_Init(void);
int main(void) {
GPIO_Init();
EXTI_Init();
while (1) {
// 无需执行任何操作
}
}
void GPIO_Init(void) {
// 使能GPIOA时钟
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
// 配置D0引脚为输出模式
LL_GPIO_SetPinMode(GPIOA, GPIO_PIN_D0, LL_GPIO_MODE_OUTPUT);
LL_GPIO_SetPinOutputType(GPIOA, GPIO_PIN_D0, LL_GPIO_OUTPUT_PUSHPULL);
// 配置K0引脚为输入模式
LL_GPIO_SetPinMode(GPIOC, GPIO_PIN_K0, LL_GPIO_MODE_INPUT);
LL_GPIO_SetPinPull(GPIOC, GPIO_PIN_K0, LL_GPIO_PULL_UP);
}
void EXTI_Init(void) {
// 使能SYSCFG时钟
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG);
// 配置K0引脚为中断源
LL_SYSCFG_SetEXTISource(LL_SYSCFG_EXTI_PORTC, LL_SYSCFG_EXTI_LINE6);
// 配置K0引脚为上升沿触发
LL_EXTI_EnableRisingTrig_0_31(LL_EXTI_LINE_6);
// 使能K0引脚的中断
LL_EXTI_EnableIT_0_31(LL_EXTI_LINE_6);
// 设置中断优先级
NVIC_SetPriority(EXTI9_5_IRQn, 0);
// 使能中断
NVIC_EnableIRQ(EXTI9_5_IRQn);
}
void EXTI9_5_IRQHandler(void) {
if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_6)) {
// K0按键触发
if (LL_GPIO_IsOutputPinSet(GPIOA, GPIO_PIN_D0)) {
LL_GPIO_ResetOutputPin(GPIOA, GPIO_PIN_D0); // 熄灭D0引脚
} else {
LL_GPIO_SetOutputPin(GPIOA, GPIO_PIN_D0); // 点亮D0引脚
}
LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_6); // 清除中断标志位
}
}
```
注意,以上代码使用了STM32F4的LL库,相应的库文件需要添加到工程中。在实际应用中,您需要根据您的硬件电路和需求进行适当的配置和修改。还请确保正确设置时钟和中断优先级,并在主循环中等待按键中断触发。
阅读全文
相关推荐
















