请教:关于STM8S003的中断响应时间,经测试时9us,能否加快!

2019-12-09 19:58发布

大家好!
关于STM8S003的中断响应时间,经测试时耗时9us,能否加快!
采用网上例程:《第三讲_库函数移植_GPIO外部中断》程序如附件:
系统采用最简系统,取内部16MRC时钟,不分频。
PC5中断信号输入,
PD2电平取反输出。
在PC5口线加上20us的低电平脉冲,
但是PD2上的电平取反输出延时将近9us,
请各位高手指点,为什么中断响应这么久,可否缩短,怎么改进。
谢谢大家!
用自己写的程序也是如此。中断响应时间都是9us左右。



在stm8_it.c中中断处理程序
INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5)
{
   /* In order to detect unexpected events during development,
      it is recommended to set a breakpoint on the following instruction.
   */
   GPIO_WriteReverse(GPIOD , GPIO_PIN_2); //对LED1灯进行异或取反控制
}
在main.c程序如下:
void KEY2_Init()
{
   GPIO_Init(GPIOC , GPIO_PIN_5 ,  GPIO_MODE_IN_PU_IT);   //配置PA3为带上拉电阻并产生中断的输入
  
   EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC , EXTI_SENSITIVITY_FALL_ONLY);  //配置PC端口为下降沿产生中断
}
void LED1_Init()
{
   GPIO_Init(GPIOD , GPIO_PIN_2 , GPIO_MODE_OUT_PP_LOW_FAST);  //配置PD2为输出
}
int main(void)
{
                                                                                                                                             disableInterrupts();    //首先关闭系统的总中断
  CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);     // 配置系统时钟为1分频,即系统时钟为16MHZ
   LED1_Init();
   KEY2_Init();
   enableInterrupts();   //打开系统的总中断
  while(1);
   
}
20191026-中断例程-9us后中断响应.jpg (139.6 KB, 下载次数: 0) 下载附件 2019-10-28 09:03 上传
库函数移植_GPIO外部中断.rar (2.69 MB, 下载次数: 4) 2019-10-28 09:04 上传 点击文件名下载附件
外部中断


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
Maurice
1楼-- · 2019-12-11 06:14
IO的中断会快点,模拟看门狗中断可就没这么快咯
hailing
2楼-- · 2019-12-11 11:41
dbwu8280 发表于 2019-10-28 16:21
等一下,用的是什么编译环境?

iar 1.4版本
rifjft
3楼-- · 2019-12-11 14:09
 精彩回答 2  元偷偷看……
dbwu8280
4楼-- · 2019-12-11 16:28

基本搞定了,编译环境设置成速度最快,延时为3us,谢谢大家!
snoopyzz
5楼-- · 2019-12-11 18:09
iar有所为虚拟寄存器要保护和恢复, 比cosmic的中断要慢不少,

另外中断里调用库函数肯定慢
dbwu8280
6楼-- · 2019-12-11 23:24
谢谢SNOOPYZZ!

一周热门 更多>