STM32外部中断边沿触发存在延时问题

STM32外部中断边沿触发存在延时问题
概括
   通过软件调试,示波器观察的方式,来分析外部中断边沿触发存在时延的原因。
问题
   在调试模拟SPI接收的时候,想用外部中断检测上升沿的方式来捕捉SCK的上升沿却发现了外部中断存在时延的情况。
直接上图
在这里插入图片描述
●黄色线信号:为SPI的SCK线
●紫色线信号:捕捉的上升沿信号
观察紫色信号在一定时间之后才捕捉到了黄色信号的上升沿。

调试:(MCU-STM32F103 时钟-72M)
中断函数:

/*外部中断0中断*/
/*SCK信号线触发外部中断*/
void EXTI1_IRQHandler(void)//中断服务函数
{
	if(EXTI_GetITStatus(EXTI_Line1) != RESET )
	{
		Flag_H;//对应紫色信号线
		EXTI_ClearITPendingBit(EXTI_Line1);
		Flag_L;//对应紫色信号线
	}
}

主函数(主循环不做任何指令):

int main()
{
	SysTick_init();
	SPI_GPIO_Config();
	EXTI_PB1_Config();
	while(1)
	{

	}
}

测试波形:
在这里插入图片描述
观察被测波形,在上升沿与检测到上升沿之间有近1.2us的时延,于是怀疑问题出在了中断函数里。

●●●更改中断函数●●●

/*SCK信号线触发外部中断*/
void EXTI1_IRQHandler(void)//中断服务函数
{
	if(1)
	{
		Flag_H;//对应紫色信号线
		EXTI_ClearITPendingBit(EXTI_Line1);
		Flag_L;//对应紫色信号线
	}
}

测试波形:
在这里插入图片描述
观察波形发现去掉一句中断检测时延就减少了近700ns。

EXTI_GetITStatus(EXTI_Line1) != RESET

所以说要想了解MCU底层尽量就去了解寄存器操作,库函数方便但也有些弊端。

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字硬鉴

你的鼓励就是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值