你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F0 Timer3 作为定时器输出,中断输出

[复制链接]
STMCU小助手 发布时间:2021-11-24 14:57
设置Timer3 中断
  1. void TIM3_INT_Config(void)
  2. {
  3.    NVIC_InitTypeDef NVIC_InitStructure;

  4.   /* TIM3 clock enable */
  5.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  6.   /*  TIM3 ÖжÏǶÌ×Éè¼Æ*/
  7.   NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  8.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
  9.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  10.   NVIC_Init(&NVIC_InitStructure);
  11. }
复制代码


设置Timer3 模式

  1. void TIM3_OUT_Config(void)
  2. {   
  3.     TIM_TimeBaseInitTypeDef  TIM3_TimeBaseStructure;
  4.     TIM_OCInitTypeDef  TIM3_OCInitStructure;   
  5.   /* ¼ÆËãÔ¤·ÖƵֵ */
  6.   TM3_PrescalerValue = (uint16_t) (SystemCoreClock  / TM3_PRESCALER) - 1;

  7.   /* Time ¶¨Ê±Æ÷»ù´¡ÉèÖà */
  8.   TIM3_TimeBaseStructure.TIM_Period = 65535;
  9.   TIM3_TimeBaseStructure.TIM_Prescaler = 0;
  10.   TIM3_TimeBaseStructure.TIM_ClockDivision = 0;
  11.   TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  12.   TIM_TimeBaseInit(TIM3, &TIM3_TimeBaseStructure);

  13.   /* Ô¤·ÖƵÆ÷ÅäÖà */
  14.   TIM_PrescalerConfig(TIM3, TM3_PrescalerValue, TIM_PSCReloadMode_Immediate);

  15.   /* Êä³ö±È½ÏʱÐòģʽÅäÖÃÉèÖà */
  16.   TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
  17.   TIM3_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  18.   /* Êä³ö±È½ÏʱÐòģʽÅäÖÃ: ƵµÀ3*/
  19.   TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  20.   TIM3_OCInitStructure.TIM_Pulse = TM3_CCR1_Val;  //3000
  21.   TIM_OC3Init(TIM3, &TIM3_OCInitStructure);
  22.   TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Disable);

  23.   /* TIM ÖжÏʹÄÜ */
  24.   TIM_ITConfig(TIM3, TIM_IT_CC3 , ENABLE);

  25.   /* TIM3 ʹÄÜ */
  26.   TIM_Cmd(TIM3, ENABLE);

  27. }
复制代码

3. 中断子程序

  1. void TIM3_IRQHandler(void)
  2. {
  3.   if (TIM_GetITStatus(TIM3, TIM_IT_CC3) != RESET)
  4.   {
  5.     TIM_ClearITPendingBit(TIM3, TIM_IT_CC3);

  6.     /* LED3 toggling with frequency = 219.7 Hz */
  7. //    LED1_Toggle();
  8. //    capture3 = TIM_GetCapture3(TIM3);
  9. //    TIM_SetCompare3(TIM3, capture3 + TM3_CCR1_Val);

  10.         OutToggle();

  11.         if(TimeRxFlag)
  12.         {
  13.             TimeInterval++;
  14.             if(TimeInterval>4)
  15.             {
  16.                 RxFrameEndFlag =1;
  17.             }
  18.         }
  19.         if(KeyCtrl.bDebunceTime != 0)
  20.         {
  21.                 KeyCtrl.bDebunceTime--;
  22.         }
  23. //        SevenSegShow(DispBuffer);
  24.     capture3 = TIM_GetCapture3(TIM3);
  25.     TIM_SetCompare3(TIM3, capture3 + TM3_CCR1_Val);
  26.   }
  27. }   
复制代码


收藏 评论0 发布时间:2021-11-24 14:57

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版