请问STM32 EXTI外部中断 能检测的速度是多少?
我这边要测试一个周期为1us的脉冲次数,芯片是STM32F103VCT6用PA6去测试,
输入33个只能检测到19个,而且每次都是19个,
请问是外部中断的速度问题呢还是什么原因呢?
void ex_pa6_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟
/*初始化PA6*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//浮空
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//将中断线0 与GPIOA映射起来,那么GPIOA.0与EXTI 1中断线连接了
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource6);
//EXTI_DeInit();
/*初始化外部中断1为上升沿触发*/
EXTI_InitStruct.EXTI_Line = EXTI_Line6;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;//外部中断打开
EXTI_Init(&EXTI_InitStruct);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
NVIC_InitStruct.NVIC_IRQChannel = EXTI9_5_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
}
void EXTI9_5_IRQHandler(void)
{
//确保是否产生了EXTI Line中断
if(EXTI_GetITStatus(EXTI_Line6) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line6); //清除中断标志位
freq_cnt++;
}
}
而且我将
freq_cnt++;
放在
EXTI_ClearITPendingBit(EXTI_Line6);
这句之前的话,只能检测到14个,看来提前清除中断标志位很有必要啊
你还不如用计数器的脉冲捕获 regbbs 发表于 2024-1-19 06:24
你还不如用计数器的脉冲捕获
脉冲捕获速率能多少啊?我先试的脉冲捕获,没有捕获到,才改的外部中断 以G0为例,GPIO达到80MHz的速度,剩下得看软件性能了。 103应该可以跑72MHz, 1us脉以现在的代码,应该是足够时间处理的
查看一下主时钟是否72MHz, 另外是否还有其它中断同时打开了 Edmund1964 发表于 2024-1-19 19:47
103应该可以跑72MHz, 1us脉以现在的代码,应该是足够时间处理的
查看一下主时钟是否72MHz, 另外是否还有其 ...
主时钟是72MHz,有其他中断,我把目前这个的中断优先级提的比较高了 如果只是用于计数,使用timer的计数模式,1us这个中断频率太高了,在实际产品用,不实用,并且进出中断都需要时间 yinghan666 发表于 2024-1-20 10:00
主时钟是72MHz,有其他中断,我把目前这个的中断优先级提的比较高了
靠中断优先级是解决不了此问题的,你现在的问题在于CPU执行时间够不
进中断啥也不做要12周期, 退出又是另外12周期, 你现在的中断处理大慨10来个周期, 那已经用去了 ~0.5us, 如果说再打开另一中断, 根本就不够速度保证响应每一个中断。
用CAPTURE+DMA吧
为啥不用捕获啊:lol 中断函数用寄存器写一下,再优化写法,如果只有这个中断,不要判断了,优化等级提高一下,会有效果。最好是捕获模式
页:
[1]