<返回更多

STM32软中断的使用

2022-02-25    聪颖的狗子你变了
加入收藏

最近做项目,软件工程师,让我提供一个软中断程序给他使用,看了下相关介绍博客,情况都不太一样,自己用的是STM32H7系列的芯片,HAL库下开发。只能自己去HAL库扒相关的函数看下如何使用,思路有了,下面介绍使用过程。

1、初始化软中断,定义相关结构体

EXTI_HandleTypeDef EXTI0_HandleStruct;

EXTI_ConfigTypeDef EXTI0_ConfigStructure;

void bsp_soft_interrupt_init()

{

EXTI0_HandleStruct.PendingCallback = NULL;

EXTI0_HandleStruct.Line = EXTI_LINE_0;

EXTI0_ConfigStructure.GPIOSel = EXTI_GPIOA;

EXTI0_ConfigStructure.Line = EXTI_LINE_0;

EXTI0_ConfigStructure.Mode = EXTI_MODE_INTERRUPT;

EXTI0_ConfigStructure.PendClearSource = EXTI_D3_PENDCLR_SRC_NONE;

EXTI0_ConfigStructure.Trigger = EXTI_TRIGGER_FALLING;

HAL_EXTI_SetConfigLine(&EXTI0_HandleStruct, &EXTI0_ConfigStructure);

HAL_NVIC_SetPriority(EXTI0_IRQn, 2, 2);

HAL_NVIC_EnableIRQ(EXTI0_IRQn);

}

2、包装了一个软中断产生函数,当然直接用HAL_EXTI_GenerateSWI函数也可以

使用时,直接调用该函数,产生软中断

void produce_soft_interrupt()

{

HAL_EXTI_GenerateSWI(&EXTI0_HandleStruct);

}

3、在stm32h7xx_it.c文件中设置中断

extern EXTI_HandleTypeDef EXTI0_HandleStruct;

void EXTI0_IRQHandler()

{

HAL_EXTI_ClearPending(&EXTI0_HandleStruct, 0);

user_soft_interrupt();//用户定义的执行函数

}

4、编写软中断内的用户程序

user_soft_interrupt()

{

//

}

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>