打印
[STM8]

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

[复制链接]
1584|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 (1.17 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 | 只看该作者

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

使用特权

评论回复
5
dbwu8280|  楼主 | 2019-10-28 08:09 | 只看该作者
置顶一下。

使用特权

评论回复
6
caoenq| | 2019-10-28 09:12 | 只看该作者
9us还不够用么?

使用特权

评论回复
7
dbwu8280|  楼主 | 2019-10-28 09:55 | 只看该作者
caoenq 发表于 2019-10-28 09:12
9us还不够用么?

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

使用特权

评论回复
8
condition| | 2019-10-28 10:54 | 只看该作者
16M的时钟,中断响应正常肯定要不了这么久,软件结构优化一下吧

使用特权

评论回复
9
dbwu8280|  楼主 | 2019-10-28 16:13 | 只看该作者
基本搞定了,编译环境设置成速度最快,延时为3us,谢谢大家!

使用特权

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

使用特权

评论回复
11
观海| | 2019-11-18 13:38 | 只看该作者
这个速度慢?

使用特权

评论回复
12
guanjiaer| | 2019-11-18 13:40 | 只看该作者
测试手段很好

使用特权

评论回复
13
heimaojingzhang| | 2019-11-18 13:45 | 只看该作者
没坐过这么细致的研究

使用特权

评论回复
14
keaibukelian| | 2019-11-18 13:58 | 只看该作者
如何才能加快呢

使用特权

评论回复
15
labasi| | 2019-11-18 14:15 | 只看该作者
如果要求这么高 干脆跑系统吧

使用特权

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

本版积分规则

1

主题

12

帖子

1

粉丝