xiaofei558008 发表于 2023-1-10 11:23

STM32L4 为啥EXTI_SWIER1 寄存器置位不能软触发中断


在官方论坛上也有在问的:
https://community.st.com/s/question/0D50X00009XkfHrSAJ/software-interrupt-on-stm32l4

大概意思是需要先使能才能触发,我确认已经使能EXTI;
是因为NIVC 函数有bug?

我想软触发 EXTI22 也就是比较器2的中断:



不知道有没有大神遇到;


未说出口的像你 发表于 2023-3-16 19:41

这是外部中断吧,是不是需要硬件触发才行?

在曼谷的春 发表于 2023-3-16 20:14

说实话,直接操作寄存器可太难了,还得对手册

我吃小朋友 发表于 2023-3-16 21:37

楼主的软触发是指的什么?定时器触发吗?

Henryko 发表于 2023-3-16 21:58

是用定时器触发中断吗?

月亮一键变蓝 发表于 2023-3-16 22:13

属实需要使能,还需要IO配置才行

她已醉 发表于 2023-3-16 23:57

比较器的话好像官方有例程的吧,楼主可以看看

春日负喧 发表于 2023-3-17 01:54

用cubemx配置一下试试呢?我觉得cubemx的功能很是强大的

温室雏菊 发表于 2023-3-17 04:21

这个没遇到过,但是我知道配置一般可以用cubemx来实现,能好点

故意相遇 发表于 2023-3-17 09:12

正常来说nivc应该是没有bug的吧

西洲 发表于 2023-3-17 11:21

你可以仿真看看,是否使能EXTI成功了呗

一只眠羊 发表于 2023-3-17 15:03

比较器也需要外部中断触发吧?

xiaofei558008 发表于 2023-3-17 15:54

后面又可以了,我忘记怎么解决了

gongche 发表于 2023-3-29 20:50

外部中断吧

香水城 发表于 2023-3-29 21:05

就是通过软件方式操作触发外部中断事件 进而产生中断,应该是可以的。

明天我验证后贴代码过来。

wenfen 发表于 2023-3-29 21:12

比较器也需要外部中断触发吧?

xiaofei558008 发表于 2023-3-30 09:41

后面又可以了。

香水城 发表于 2023-3-30 15:01

我用的EXIT2,



    __HAL_RCC_SYSCFG_CLK_ENABLE();
   
    EXTI->IMR1 |=0x0004;

HAL_NVIC_SetPriority(EXTI2_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI2_IRQn);


void EXTI2_IRQHandler(void)
{

   __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_2);
   
HAL_GPIO_WritePin( GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
HAL_Delay(300);
HAL_GPIO_WritePin( GPIOA,GPIO_PIN_5, GPIO_PIN_RESET );

}

我在定时器中断里软件触发EXTI2,
void TIM1_UP_TIM16_IRQHandler(void)
{
/* USER CODE BEGIN TIM1_UP_TIM16_IRQn 0 */

/* USER CODE END TIM1_UP_TIM16_IRQn 0 */
HAL_TIM_IRQHandler(&htim1);
/* USER CODE BEGIN TIM1_UP_TIM16_IRQn 1 */
EXTI->SWIER1 |=0x0004;
/* USER CODE END TIM1_UP_TIM16_IRQn 1 */
}

测试OK. 供参考。

SantaBunny 发表于 2023-4-5 14:16

用cubemx配置一下试试

MessageRing 发表于 2023-4-5 22:40

要使能的吧
页: [1] 2 3
查看完整版本: STM32L4 为啥EXTI_SWIER1 寄存器置位不能软触发中断