5150|6

46

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32中断 [复制链接]

最近接触这款芯片,今天在看TIM中断的时候发现通用TIM的对应的中断向量只有一个,它的一个TIM有4个通道啊,在向量表中怎么只有一个中断向量呢?我以前遇到的每个通道都会有对应的中断函数的。如TIM1_channel1,TIM1_channel2....  在计数器计满后还有溢出中断的,这里的是不是没?好象它总是要autoload是不是?
有没有人知道帮我回答一下,先谢了!

此帖出自stm32/stm8论坛

最新回复

                                 谢谢!我再认真看看,争取在在接下来几天将整个STM32有个了解,为下个星期参加ST的会做一下准备。   详情 回复 发表于 2007-11-30 08:40
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

你以前遇到的每个通道都会有对应的中断函数的是哪一款产

首先,不同的产品肯定有不同的处理方式,但都可以完成相同的任务。区别是有可能效率不同。

其次,STM32使用的Cortex-M3核心使用了内置的中断控制器,与以前的ARM7或ARM9的那种外置中断控制器的设计相比,中断处理更快更有效。

第三,STM32的通用定时器中有中断标志寄存器,每个中断源都有对应的标志状态位,可以十分方便地判断中断源并进行处理。


你这段话我没有看懂“在计数器计满后还有溢出中断的,这里的是不是没?好象它总是要autoload是不是?”,请解释一下;或能够说明你想实现什么样的功能,这样讨论起来更容易。注意:不同的芯片因为内部结构的不同,不能简单地在一种芯片上搬用另一种芯片的处理方式。
此帖出自stm32/stm8论坛
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

有一个重要概念要澄清

楼主说:“今天在看TIM中断的时候发现通用TIM的对应的中断向量只有一个,它的一个TIM有4个通道啊,在向量表中怎么只有一个中断向量呢?我以前遇到的每个通道都会有对应的中断函数的。”

“每个通道都会有对应的中断函数”与“向量表中只有一个中断向量”没有必然的联系。每个中断向量可以对应一个中断函数,但这个中断函数不一定只对应一个通道;通常的处理是在这个中断向量直接转入的中断函数中判断中断源,再分别调用对应通道的处理函数,如你所提到的:TIM1_channel1,TIM1_channel2.... 

以前的ARM7或ARM9的那种外置中断控制器的设计中只有IRQ和FIQ两个中断向量,不可能像你说的那样每个通道有一个中断向量,除非你关于中断向量的定义与我说的不一样。
此帖出自stm32/stm8论坛
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

4
 

谢谢解答!

感谢浪淘沙的回复!!!
因为之前我看的是中文版的datasheet,看的比较粗。昨天将中英文认真的对照着看,发现有些是我的理解的错误,也是你说没看懂那个,我就不说了那了。但是“向量表中只有一个中断向量”的那个问题还有点不明白。我就详细说下我的不明白之处。在STM32中,每个通用的TIM有4个channel,如channel1,channel2...。在中断向量表中每个TIM只有一个全局向量,如TIM2对应TIM2_IRQHandler。我查了一下用法,是你说的每个channel的中断都到这个全局向量的函数中,然后在全局向量的函数中找对应的channel。我想知道的是当channel1进入中断还没跳出,channel2也有中断来,如果判断channel2有无中断的语句即if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET) 已经执行,是不是接下来再进一次TIM2_IRQHandler?如果还没执行,是不是就不用再进TIM2_IRQHandler了,直接在本次运行channel2的中断?
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 

另外还个关于抢占与子优先级的处理的问题

    
在Firmware library的介绍中(UM0427 User manual) Page224 有下表
Table 272.     Pre-emption priority and subpriority values(1)(2)      
NVIC_PriorityGroup     NVIC_IRQChann elPreemptionPri ority     NVIC_IRQChan nelSubPriority     Description      
NVIC_PriorityGroup_ 0     0     0-15     0 bits for pre-emption priority 4 bits for subpriority      
NVIC_PriorityGroup_ 1     0-1     0-7     1 bits for pre-emption priority 3 bits for subpriority      
NVIC_PriorityGroup_ 2     0-3     0-3     2 bits for pre-emption priority 2 bits for subpriority      
NVIC_PriorityGroup_ 3     0-7     0-1     3 bits for pre-emption priority 1 bits for subpriority      
NVIC_PriorityGroup_ 4     0-15     0     4 bits for pre-emption priority 0 bits for subpriority     
 

在Cortex-M3 Revision: r1p1 Technical Reference Manual  Page8—22 有下表
Interrupt priority grouping field:      
PRIGROUP     Split of pre-emption priority from subpriority      
0     7.1 indicates seven bits of pre-emption priority, one bit of subpriority      
1     6.2 indicates six bits of pre-emption priority, two bits of subpriority      
2     5.3 indicates five bits of pre-emption priority, three bits of subpriority      
3     4.4 indicates four bits of pre-emption priority, four bits of subpriority      
4     3.5 indicates three bits of pre-emption priority, five bits of subpriority      
5     2.6 indicates two bits of pre-emption priority, six bits of subpriority      
6     1.7 indicates one bit of pre-emption priority, seven bits of subpriority      
7     0.8 indicates no pre-emption priority, eight bits of subpriority. 
     

在Cortex-M3 Revision: r1p1 Technical Reference Manual  Page5—8 有下表
 
    Interrupt priority level field, PRI_N[7:0]              
PRIGROUP[2:0]     Binary point position Pre-emption field Subpriority field     Number of pre-emption priorities     Number of subpriorities      
b000     bxxxxxxx.y     [7:1]     [0]     128     2      
b001     bxxxxxx.yy     [7:2]     [1:0]     64     4      
b010     bxxxxx.yyy     [7:3]     [2:0]     32     8      
b011     bxxxx.yyyy     [7:4]     [3:0]     16     16      
b100     bxxx.yyyyy     [7:5]     [4:0]     8     32      
b101     bxx.yyyyyy     [7:6]     [5:0]     4     64      
b110     bx.yyyyyyy     [7]     [6:0]     2     128      
b111     b.yyyyyyyy     None     [7:0]     0     256


库的用法怎么与定义不一致啊?所以NVIC_Init函数看的不懂!
 
     
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 

回4楼关于进入中断函数的问题

问题:“当channel1进入中断还没跳出,channel2也有中断来,如果判断channel2有无中断的语句即if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET) 已经执行,是不是接下来再进一次TIM2_IRQHandler?如果还没执行,是不是就不用再进TIM2_IRQHandler了,直接在本次运行channel2的中断?”

答:理解正确!

如果在中断处理函数中错过了该中断向量对应的某个中断源的处理,只要对应的中断标志不被清除,中断处理函数退出后还会再次进入。


关于5楼的问题,我还没有研究过Cortex-M3中断优先级的处理,看看有没有其它人可以回答你的问题。
此帖出自stm32/stm8论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

7
 

Thanks!

                                 谢谢!我再认真看看,争取在在接下来几天将整个STM32有个了解,为下个星期参加ST的会做一下准备。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表