3605|4

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

大家帮我看看这个定时器定了多长时间 [复制链接]

void RCC_Configuration(void)
{
    RCC_DeInit();
    RCC_HSEConfig(RCC_HSE_ON);
  /* Wait till HSE is ready */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();
  if(HSEStartUpStatus == SUCCESS)
  {
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);

    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
  
    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1);
    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);
    /* PLLCLK = 8MHz * 9 = 72 MHz */
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
    /* Enable PLL */
    RCC_PLLCmd(ENABLE);
    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }
    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
    /* TIM2 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);  
  /* Enable USART1, GPIOA, GPIOA and AFIO clocks */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA  | RCC_APB2Periph_AFIO, ENABLE);
                        
}


void TIM2_config(void)
{
  /* Time base configuration*/
  TIM_TimeBaseStructure.TIM_Period = 0xffff;//周期值  TIM_TimeBaseStructure.TIM_Prescaler = 0;//时钟的预分频数
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;//TIM配置时钟分割  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  /* Prescaler configuration [配置TIM的预分频数]*/
  TIM_PrescalerConfig(TIM2, 36, TIM_PSCReloadMode_Immediate);//TIM2,36分频,预分频数立即载入
  /* Output Compare Timing Mode configuration: Channel1 [配置输出比较模式]*/
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;//TIM输出比较计时模式
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//输出允许
  TIM_OCInitStructure.TIM_Pulse = 1000;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//极性HIGH
  TIM_OC1Init(TIM2, &TIM_OCInitStructure);
  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);//关闭TIM2在CCR1寄存器上的预载入寄存器
  /* TIM IT enable [使能TIM2比较中断]*/
  TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
  /* TIM2 enable counter */
  TIM_Cmd(TIM2, ENABLE);
}


定时器2定了多长时间呢?怎样计算的呢?
此帖出自stm32/stm8论坛

最新回复

                                 看不出来  详情 回复 发表于 2009-11-29 20:45
点赞 关注
 

回复
举报

90

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你的TIM预分频写36,实际预分频系数是36+1
也就是你的TIM2时钟频率是72/37 MHz

定时器周期是65535,也就是65535/(72/37 MHz) = 33677.7 微秒
CCR1寄存器是4096,也就是会在TIM开始计数以后4096/(72/37 MHz) = 2104.9 微秒
的时候产生中断
此帖出自stm32/stm8论坛
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
为什么CCR1寄存器是4096呢?
TIM_OCInitStructure.TIM_Pulse = 1000;
从这句来看不是应该为1000吗?
此帖出自stm32/stm8论坛
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 比较中断周期是1000/(72/37)
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 看不出来
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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