请教:关于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条回答
jyrpxj
1楼-- · 2019-12-10 11:48
io口操作直接寄存器操作试试。
dbwu8280
2楼-- · 2019-12-10 14:31
jyrpxj 发表于 2019-10-28 09:55
io口操作直接寄存器操作试试。

已经试过了,改变不明显。如果已经到中断执行程序,也就耽搁1-2个机器周期,影响没这么大。
JasonGao
3楼-- · 2019-12-10 17:33
没戏了,就这么的了!
hailing
4楼-- · 2019-12-10 19:21
 精彩回答 2  元偷偷看……
dbwu8280
5楼-- · 2019-12-11 00:10
谢谢!hailing
dbwu8280
6楼-- · 2019-12-11 04:14
等一下,用的是什么编译环境?

一周热门 更多>