[STM8]

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

[复制链接]
1400|15
手机看帖
扫描二维码
随时随地手机跟帖
dbwu8280|  楼主 | 2019-10-26 20:44 | 显示全部楼层 |阅读模式
本帖最后由 dbwu8280 于 2019-10-26 20:52 编辑

大家好!
关于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);
  
}

程序如下: 第三讲_库函数移植_GPIO外部中断.rar (2.69 MB)
20191026-中断响应时间,9us.bmp

使用特权

评论回复
huahuagg| | 2019-10-26 22:25 | 显示全部楼层
修改软件结构。

使用特权

评论回复
评论
dbwu8280 2019-10-27 07:28 回复TA
要用汇编吗? 
huahuagg| | 2019-10-26 22:25 | 显示全部楼层
用库函数,层层嵌套,肯定慢。

使用特权

评论回复
dbwu8280|  楼主 | 2019-10-27 07:28 | 显示全部楼层

修改软件结构,能否具体一点。

使用特权

评论回复
dbwu8280|  楼主 | 2019-10-28 08:09 | 显示全部楼层
置顶一下。

使用特权

评论回复
caoenq| | 2019-10-28 09:12 | 显示全部楼层
9us还不够用么?

使用特权

评论回复
dbwu8280|  楼主 | 2019-10-28 09:55 | 显示全部楼层
caoenq 发表于 2019-10-28 09:12
9us还不够用么?

是的,9US还不够用,这个应用对中断响应时间要求比较高。7us才行。

使用特权

评论回复
condition| | 2019-10-28 10:54 | 显示全部楼层
16M的时钟,中断响应正常肯定要不了这么久,软件结构优化一下吧

使用特权

评论回复
dbwu8280|  楼主 | 2019-10-28 16:13 | 显示全部楼层
基本搞定了,编译环境设置成速度最快,延时为3us,谢谢大家!

使用特权

评论回复
shipeng1989| | 2019-10-29 08:19 | 显示全部楼层
既然对实时性要求高为什么在中断处理函数中还要用库函数操作IO,直接操作寄存器不是要快很多?有没有试过查询方式,如果不开中断的话查询方式会不会比外部中断方式更快一点?

使用特权

评论回复
观海| | 2019-11-18 13:38 | 显示全部楼层
这个速度慢?

使用特权

评论回复
guanjiaer| | 2019-11-18 13:40 | 显示全部楼层
测试手段很好

使用特权

评论回复
heimaojingzhang| | 2019-11-18 13:45 | 显示全部楼层
没坐过这么细致的研究

使用特权

评论回复
keaibukelian| | 2019-11-18 13:58 | 显示全部楼层
如何才能加快呢

使用特权

评论回复
labasi| | 2019-11-18 14:15 | 显示全部楼层
如果要求这么高 干脆跑系统吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

1

粉丝