打印

STM8S 为什么程序进不去定时器中断呢

[复制链接]
1857|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
manaok12345|  楼主 | 2016-7-14 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "stm8l15x.h"


static void CLK_Config(void);
static void TIM2_Config(void);

void delayms(unsigned int w);
void delayms(unsigned int w)
{
    unsigned int i,j;
    for(i=0;i<w;i++)
      for(j=0;j<1000;j++);
}
/* 函数功能 ------------------------------------------------------------------*/

/*******************************************************************************
  * @函数名称        main
  * @函数说明   主函数
  * @输入参数   无
  * @返回参数   无
*******************************************************************************/
void main(void)
{
   /* CLK configuration -------------------------------------------*/
  CLK_Config();

   /* TIM2 configuration -------------------------------------------*/
  TIM2_Config();

  GPIO_Init(GPIOC, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast);

    /* --使能 interrupts ---*/
  enableInterrupts();

  while (1)
  {



  }
}


static void CLK_Config(void)
{
    /* ------使能 TIM2 时钟外设单元------ */
// CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
/* High speed internal clock prescaler */
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_2);

  /*Enables or disables the clock switch execution*/
  CLK_SYSCLKSourceSwitchCmd(ENABLE);

  /*Configures the system clock (SYSCLK)
  * Select HSI as system clock source
  */
  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);

  /*HSI used as system clock  
  * Returns the clock source used as system clock
  */
  while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)
  {}

  /* Enable TIM1 CLK */
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);
}

/*******************************************************************************
  * @函数名称        TIM2_Config
  * @函数说明  
  * @输入参数  
  * @输出参数   无
  * @返回参数   无
*******************************************************************************/
static void TIM2_Config(void)
{



  TIM2_ETRClockMode1Config(TIM2_ExtTRGPSC_DIV8,//不分频
                           TIM2_ExtTRGPolarity_Inverted,//触发极性
                           0x00); //滤波  低功耗模式下滤波关掉

  /* Time Base configuration */
  TIM2_TimeBaseInit(128, TIM2_CounterMode_Up, 8191);

  /* --清除TIM2溢出更新标志位-- */
  TIM2_ClearFlag(TIM2_FLAG_Update);
  /* --使能TIM2溢出更新中断-- */
  TIM2_ITConfig(TIM2_IT_Update, ENABLE);

  /* TIM2 counter enable */
  TIM2_Cmd(ENABLE);
}

/******************* (C) COPYRIGHT 2012 STMicroelectronics *****END OF FILE****/




INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_IRQHandler,19)
{
/* In order to detect unexpected events during development,
   it is recommended to set a breakpoint on the following instruction.
*/
  if(TIM2_GetITStatus(TIM2_IT_Update)==SET)
  {
    TIM2_ClearITPendingBit(TIM2_IT_Update);
    GPIO_ToggleBits(GPIOC, GPIO_Pin_6);
  }

}
中断进不去,头大了

相关帖子

沙发
manaok12345|  楼主 | 2016-7-14 09:42 | 只看该作者
求大神看看我的time为啥不启动  我试了tim1 tim2 timn4   试了内部LSE HSE 晶振 都不行  就是进不了中断郁闷  大神帮俺看看呗

使用特权

评论回复
板凳
叶覃| | 2016-7-14 23:03 | 只看该作者
TIM2_ClearITPendingBit(TIM2_IT_Update);
这句话应该放在外面了吧,只要进去中断,就要清除标志的。

使用特权

评论回复
地板
huafei123| | 2016-7-15 11:26 | 只看该作者
你好像没有复位定时器,是不是这个问题呢

使用特权

评论回复
5
mdk55555| | 2016-7-16 21:59 | 只看该作者
定时器复位,是哪个函数呢?我怎么没找到

使用特权

评论回复
6
haokeer| | 2016-7-18 16:47 | 只看该作者
TIM4_DeInit(); 这句不就是定时器的复位么,必须要使能这句的。

使用特权

评论回复
7
xiaolong12| | 2016-7-19 15:54 | 只看该作者
定时器的初始化,居然清除标志  TIM2_ClearFlag(TIM2_FLAG_Update);这句是不必要的吧

使用特权

评论回复
8
喵喵小星人| | 2016-7-19 19:49 | 只看该作者
要初始化输入通道和使能输入通道
TIMx_ICInit
TIMx_CCxCmd

使用特权

评论回复
9
maninman1981| | 2016-7-20 22:07 | 只看该作者
可是我见别人的程序,都没有TIM4_DeInit();这句的,为什么我的没有就不能呢

使用特权

评论回复
10
rmbass| | 2016-7-21 09:26 | 只看该作者
初始化的时候,外设的DeInit还是必须要加上的,不加就会出问题。

使用特权

评论回复
11
yysforever| | 2016-7-22 10:55 | 只看该作者
给你一段初始化代码看看
void Timer4_Config(void)
{
  TIM4_DeInit();
  TIM4_TimeBaseInit(TIM4_PRESCALER_16, 249);//250us*4=1000us=1ms*500=500ms
  TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
  TIM4_Cmd(ENABLE);
}

/*---------------------------------------------------------------------
  函数:Timer2_Config(void)
  输入:无
  返回:无
  说明: Timer2_Config(void)
//5ms一次,用作按键扫描的
----------------------------------------------------------------------*/
void Timer2_Config(void)
{
   TIM2_TimeBaseInit(TIM2_PRESCALER_16, 4999);//50ms
   TIM2_ARRPreloadConfig(ENABLE);
   TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);
   TIM2_Cmd(DISABLE);
}

使用特权

评论回复
12
冰是睡着的冰| | 2016-7-22 21:52 | 只看该作者

我这里定时器2基础设置的参数只有两个,你怎么有三个参数呢?

使用特权

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

本版积分规则

9

主题

69

帖子

0

粉丝