8845|14

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用TIM1产生定时中断,中断响应时间多长? [复制链接]

                                 请教香帮主,用TIM1产生中断,使能DMA进行SPI发送,中断响应时间多长?
此帖出自stm32/stm8论坛

最新回复

                                     详情 回复 发表于 2008-2-20 19:04
点赞 关注
 

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

使用的是STM32F103

                                  
此帖出自stm32/stm8论坛
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

“中断响应时间多长?”,有许多因素影响它

当前是否有其他中断,该中断的优先级,当前是否有DMA操作等。
此帖出自stm32/stm8论坛
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 

俺感觉是用TIM1触发SPI的DMA操作,DMA完后中断取结果

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(初级)

5
 

噢,只使能TIM1中断,并且当前没有其它DMA传送条件下.

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 

不太理解LZ的意图,为什么单单谈TIM1中断?

                                 所有中断源,在没有其它因素影响的情况下,从产生中断到执行中断处理程序第一条语句的间隔是12个CPU时钟周期,即如果CPU时钟频率为72MHz时,中断响应时间为167ns。
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

7
 

香水城,谢谢了! 但12个CPU周期只是中断响应时间

                                 好象12个CPU周期只是中断响应时间,不能说明响应中断后DMA发送数据到SPI TXTD的时间啊!
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 

始终不理解LZ的意图,难道你不是问“中断响应时间”吗?

楼主: 用TIM1产生定时中断,中断响应时间多长? 

请教香帮主,用TIM1产生中断,使能DMA进行SPI发送,中断响应时间多长?



如果要用TIM1定时启动DMA进行SPI发送,根本不用产生中断,定时器产生的定时事件可以直接启动DMA的数据传送,软件只需在定时条件成立之前设置并使能DMA通道即可。
 
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 

谢谢了,那从定时器产生事件启动DMA到数据送入SPI需要多长时

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 

没有这方面的具体数据,但不会很长时间,应在10个CPU周期之

                                 定时器事件启动DMA不需经过总线仲裁,应该在几个CPU周期内即可完成,但我没有这方面的具体数据。
此帖出自stm32/stm8论坛
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(初级)

11
 

谢谢指点!请教定时器产生的定时事件是怎样设置的

请教定时器产生的定时事件是怎样设置的,STM32给出的资料中好像事件是由外部EXIT引起的,TIMx可产生中断、TIMx的DMA(DMA源只能是)
Table 483.     TIM_DMABase values      
TIM_DMABase     Description      
TIM_DMABase_CR1     TIM CR1 register used as DMA Base      
TIM_DMABase_CR2     TIM CR2 register used as DMA Base      
TIM_DMABase_SMCR     TIM SMCR register used as DMA Base      
TIM_DMABase_DIER     TIM DIER register used as DMA Base      
TIM_DMABase_SR     TIM SR register used as DMA Base      
TIM_DMABase_EGR     TIM EGR register used as DMA Base      
TIM_DMABase_CCMR1     TIM CCMR1 register used as DMA Base      
TIM_DMABase_CCMR2     TIM CCMR2 register used as DMA Base      
TIM_DMABase_CCER     TIM CCER register used as DMA Base      
TIM_DMABase_CNT     TIM CNT register used as DMA Base      
TIM_DMABase_PSC     TIM PSC register used as DMA Base      
TIM_DMABase_ARR     TIM ARR register used as DMA Base      
TIM_DMABase_CCR1     TIM CCR1 register used as DMA Base      
TIM_DMABase_CCR2     TIM CCR2 register used as DMA Base      
TIM_DMABase_CCR3     TIM CCR3 register used as DMA Base      
TIM_DMABase_CCR4     TIM CCR4 register used as DMA Base      
TIM_DMABase_DCR     TIM DCR register used as DMA Base      

请教定时器产生的事件是用什么函数设置的,我没有找到。
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 

使用TIMx定时事件是为了定时地从内存向SPI传送3个16位数据。

                                 设有数据Data_SPI[3],根据要求的时间间隔,定时地向SPI发送区传送Data_SPI[](接收方的SPI总线接口芯片),而这时间间隔是可变的。
此帖出自stm32/stm8论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

13
 

香帮主,用二个DMA通道进行SPI定时传送的程序设置行吗?

目的:定时发送3个16位数据到SPI接口芯片中
思路:开始时禁止SPI的TXE产生DMA请求
   定时到后TIMx发生溢出产生DMA请求,由DMA传送新设置值,使将SPI发送缓冲区空后产生DMA请求。然后由SPI的TXE_DMA进行3个16位数传送。
定时器产生溢出的时间间隔tc(20us<=tc<=100ms)由用户设置

具体如下:
3.1 TIM3设置
  /* TIM3CLK = 72 MHz, Prescaler = 0, TIM3 counter clock = 72 MHz */
  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 256;          
  TIM_TimeBaseStructure.TIM_Prescaler = 0;       
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;    
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  /* Enable TIM3 DMA */
  TIM_DMACmd(TIM3, TIM_DMA_Update, ENABLE);

  /* Enable TIM3 counter */
  TIM_Cmd(TIM3, ENABLE);
 
  3.2 TIM3对应的DMA通道设置
  TIM3的计数溢出DMA通道是通道3,设置如下:
  DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)& SPI2 -> CR2;
  DMA_InitStructure.DMA_MemoryBaseAddr = (u32) Parallel_Data_Buffer;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
  DMA_InitStructure.DMA_BufferSize = 1;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_ Disable;
  DMA_InitStructure.DMA_PeripheralDataSize =   DMA_PeripheralDataSize_HalfWord;

  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
  DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  DMA_Init(DMA_Channel3, &DMA_InitStructure);

  /* Enable DMA Channel6 */
  DMA_Cmd(DMA_Channel3, ENABLE);

  3.3 SPI2对应的DMA通道设置
    SPI2的发送缓冲器空(TXE)DMA通道为通道5,设置如下:
  DMA_DeInit(DMA_Channel5);
  DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SPI2_DR_Address;
  DMA_InitStructure.DMA_MemoryBaseAddr = (u32)SPI1_Buffer_Tx;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
  DMA_InitStructure.DMA_Priority = DMA_Priority_Low;
  DMA_Init(DMA_Channel5, &DMA_InitStructure);

  担心程序太长,TIMx、SPI2的初始化设置程序没有贴上。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 

有人已经作了例子放到版面上,你可以参考


STM32定时器触发AD采样+DMA传输问题 
 
把AD采样改成SPI传送即可。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 

香帮主,应该是不一样的吧! 请看仔细噢!

                                  
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
立即报名 | 2025 瑞萨电子工业以太网技术日即将开启!
3月-4月 深圳、广州、北京、苏州、西安、上海 走进全国6城
2025瑞萨电子工业以太网技术巡回沙龙聚焦工业4.0核心需求,为工程师与企业决策者提供实时通信技术最佳解决方案。
预报从速,好礼等您拿~

查看 »

 
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
快速回复 返回顶部 返回列表