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

[复制链接]
2257|11
 楼主| manaok12345 发表于 2016-7-14 09:41 | 显示全部楼层 |阅读模式
  1. #include "stm8l15x.h"


  2. static void CLK_Config(void);
  3. static void TIM2_Config(void);

  4. void delayms(unsigned int w);
  5. void delayms(unsigned int w)
  6. {
  7.     unsigned int i,j;
  8.     for(i=0;i<w;i++)
  9.       for(j=0;j<1000;j++);
  10. }
  11. /* 函数功能 ------------------------------------------------------------------*/

  12. /*******************************************************************************
  13.   * @函数名称        main
  14.   * @函数说明   主函数
  15.   * @输入参数   无
  16.   * @返回参数   无
  17. *******************************************************************************/
  18. void main(void)
  19. {
  20.    /* CLK configuration -------------------------------------------*/
  21.   CLK_Config();

  22.    /* TIM2 configuration -------------------------------------------*/
  23.   TIM2_Config();

  24.   GPIO_Init(GPIOC, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast);

  25.     /* --使能 interrupts ---*/
  26.   enableInterrupts();

  27.   while (1)
  28.   {



  29.   }
  30. }


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

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

  39.   /*Configures the system clock (SYSCLK)
  40.   * Select HSI as system clock source
  41.   */
  42.   CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);

  43.   /*HSI used as system clock  
  44.   * Returns the clock source used as system clock
  45.   */
  46.   while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)
  47.   {}

  48.   /* Enable TIM1 CLK */
  49.   CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
  50.   CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);
  51. }

  52. /*******************************************************************************
  53.   * @函数名称        TIM2_Config
  54.   * @函数说明  
  55.   * @输入参数  
  56.   * @输出参数   无
  57.   * @返回参数   无
  58. *******************************************************************************/
  59. static void TIM2_Config(void)
  60. {



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

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

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

  70.   /* TIM2 counter enable */
  71.   TIM2_Cmd(ENABLE);
  72. }

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




  74. INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_IRQHandler,19)
  75. {
  76. /* In order to detect unexpected events during development,
  77.    it is recommended to set a breakpoint on the following instruction.
  78. */
  79.   if(TIM2_GetITStatus(TIM2_IT_Update)==SET)
  80.   {
  81.     TIM2_ClearITPendingBit(TIM2_IT_Update);
  82.     GPIO_ToggleBits(GPIOC, GPIO_Pin_6);
  83.   }

  84. }
中断进不去,头大了
 楼主| 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 | 显示全部楼层
你好像没有复位定时器,是不是这个问题呢
mdk55555 发表于 2016-7-16 21:59 | 显示全部楼层
定时器复位,是哪个函数呢?我怎么没找到
haokeer 发表于 2016-7-18 16:47 | 显示全部楼层
TIM4_DeInit(); 这句不就是定时器的复位么,必须要使能这句的。
xiaolong12 发表于 2016-7-19 15:54 | 显示全部楼层
定时器的初始化,居然清除标志  TIM2_ClearFlag(TIM2_FLAG_Update);这句是不必要的吧
喵喵小星人 发表于 2016-7-19 19:49 | 显示全部楼层
要初始化输入通道和使能输入通道
TIMx_ICInit
TIMx_CCxCmd
maninman1981 发表于 2016-7-20 22:07 | 显示全部楼层
可是我见别人的程序,都没有TIM4_DeInit();这句的,为什么我的没有就不能呢
rmbass 发表于 2016-7-21 09:26 | 显示全部楼层
初始化的时候,外设的DeInit还是必须要加上的,不加就会出问题。
yysforever 发表于 2016-7-22 10:55 | 显示全部楼层
  1. 给你一段初始化代码看看
  2. void Timer4_Config(void)
  3. {
  4.   TIM4_DeInit();
  5.   TIM4_TimeBaseInit(TIM4_PRESCALER_16, 249);//250us*4=1000us=1ms*500=500ms
  6.   TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
  7.   TIM4_Cmd(ENABLE);
  8. }

  9. /*---------------------------------------------------------------------
  10.   函数:Timer2_Config(void)
  11.   输入:无
  12.   返回:无
  13.   说明: Timer2_Config(void)
  14. //5ms一次,用作按键扫描的
  15. ----------------------------------------------------------------------*/
  16. void Timer2_Config(void)
  17. {
  18.    TIM2_TimeBaseInit(TIM2_PRESCALER_16, 4999);//50ms
  19.    TIM2_ARRPreloadConfig(ENABLE);
  20.    TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);
  21.    TIM2_Cmd(DISABLE);
  22. }
冰是睡着的冰 发表于 2016-7-22 21:52 | 显示全部楼层

我这里定时器2基础设置的参数只有两个,你怎么有三个参数呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

69

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部