打印

t3 定时100uS中断,实际测试50uS中断,奇怪

[复制链接]
2850|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lattice1|  楼主 | 2011-9-7 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开t3定时100uS中断, 在中断中改变IO状态,示波器测试50uS中断,奇怪。
放上程序:
/* -----------------------------------------------------------------------
    TIM3CLK = 24 MHz, Prescaler = 23, TIM3 counter clock = 24 MHz / 24 = 1Mhz
    TIM3 ARR Register = 100 => TIM3 Frequency = TIM3 counter clock / (ARR + 1)
    TIM3 Frequency = 10K
    Timer 的计数方式是 0 ---> TIM_Period ----> 0  
     
  ----------------------------------------------------------------------- */
  
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  
  /* TIM3 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
     
  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 100;  
  TIM_TimeBaseStructure.TIM_Prescaler = 23;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  
  TIM_ARRPreloadConfig(TIM3, ENABLE);
  /* TIM3 DISABLE counter */
  
  TIM_Cmd(TIM3, ENABLE); //TIM3 enable counter ,                                TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
沙发
香水城| | 2011-9-7 17:26 | 只看该作者
用的什么芯片?你是怎么计算的?

使用特权

评论回复
板凳
acgean| | 2011-9-8 11:45 | 只看该作者
是不是这个问题呢?
RM0008      Doc ID 13902 Rev 13
Page 91 顶上:

The timer clock frequencies are automatically fixed by hardware. There are two cases:
1. if the APB prescaler is 1, the timer clock frequencies are set to the same frequency as
that of the APB domain to which the timers are connected.
2.  otherwise, they are set to twice (×2) the frequency of the APB domain to which the
timers are connected.

使用特权

评论回复
地板
lattice1|  楼主 | 2011-9-9 08:56 | 只看该作者
8M 的晶荡,PLL × 6 = 48M.
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;  /* PCLK1 = HCLK / 2 */ 到T3是24MHz。
   Prescaler = 23,   TIM3 counter clock = 24 MHz / 24 = 1Mhz
    TIM3 ARR Register = 100
   所以是中断是100uS了。

使用特权

评论回复
5
handlike| | 2011-9-9 09:42 | 只看该作者
本帖最后由 handlike 于 2011-9-9 09:44 编辑

1、        内部时钟。
也就是选择CK_INT做时钟,这个简单,但是有一点要注意,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器, 当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当 APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。

如三楼的说法。

使用特权

评论回复
6
jiab| | 2011-9-9 09:46 | 只看该作者
asdasd

使用特权

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

本版积分规则

99

主题

300

帖子

3

粉丝