打印
[应用相关]

关于stm32定时器中中断

[复制链接]
1033|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lwsn|  楼主 | 2017-6-30 10:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在stm32定时器中主程序中并没有进入中断的语句,,请问是从哪儿进入中断的?谢啦!!
沙发
Thor9| | 2017-6-30 10:36 | 只看该作者
中断函数写在stm32f10x_it.c中了,这个文件中包含了各种中断

使用特权

评论回复
板凳
Mattheww| | 2017-6-30 10:54 | 只看该作者
系统发生中断的时候,程序调到中断向量表中对应的位置,中断向量表在starup_stm32f10x.hd.s这个启动文件中有定义。

使用特权

评论回复
地板
Erichk| | 2017-6-30 11:06 | 只看该作者
Systick系统时钟中断,他找到向量表中Systick中断,这里面就是一个字节的地址,中断就跳到这个地址执行。这个地址就是对应中断函数的入口。而中断函数在stm32f10x_it.c中。

使用特权

评论回复
5
mmuuss586| | 2017-6-30 12:16 | 只看该作者
.S文件里有汇编的跳转

使用特权

评论回复
6
Thorald| | 2017-6-30 14:31 | 只看该作者
把中断要处理的程序添加到SysTickHandler(void)这个函数里面就行了。本来这个函数是空的。

使用特权

评论回复
7
Bjorn| | 2017-6-30 14:49 | 只看该作者
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */

  SysTick->LOAD  = ticks - 1;                                  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}
  请问,这个是从哪一句开始进入中断的呢?
是NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
还是
SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */呢???

使用特权

评论回复
8
Rollo| | 2017-6-30 16:16 | 只看该作者
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
这个是滴答时钟定时器中SysTick_IRQn。starup_stm32f10x.hd.s文件中会有对应的定时器服务中断函数入口,就是SysTick_Handler这个。

使用特权

评论回复
9
Rangar| | 2017-6-30 16:25 | 只看该作者
这个是滴答时钟定时器中SysTick_IRQn...
怎么在定时器中断中做自己人想的事情呢?

使用特权

评论回复
10
Stannis| | 2017-6-30 16:49 | 只看该作者

中断向量表里

使用特权

评论回复
11
Brand2| | 2017-6-30 17:02 | 只看该作者
main.c和中断是同时进行的两条线,若检测到中断,即暂停主程序,进入中断服务函数,若能执行完中断服务函数,就跳回到主函数,继续执行main.c

使用特权

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

本版积分规则

122

主题

824

帖子

1

粉丝