Chinaunix

标题: 赏析之 M3定时器 TIM3计数中断led闪烁 (13) [打印本页]

作者: yuweixian4230    时间: 2011-12-21 08:41
标题: 赏析之 M3定时器 TIM3计数中断led闪烁 (13)
工程代码: 6_tim3计数中断led闪烁.rar  


  1. #ifndef __TIM3_H
  2. #define __TIM3_H

  3. #include "stm32f10x_nvic.h"
  4. #include "stm32f10x_tim.h"

  5. void TIM3_Configuration(void); //初始化 TIM3
  6. void TIM3_NVIC_Configuration(void); //中断优先级配置

  7. #endif

  1. #include "tim3.h"
  2. /*
  3. * rcc时钟配置: SYSCLK = 16MHZ
  4. * AHB = 16MHZ
  5. *              APB1 = 8 MHZ // TIM2 TIM3 TIM4
  6. *                 APB2 = 16 MHZ //GPIO A B C D
  7. */
  8. void TIM3_Configuration(void)
  9. {
  10.     TIM_TimeBaseInitTypeDef      TIM_TimeBaseStructure;
  11.     
  12.     TIM_TimeBaseStructure.TIM_Prescaler = 1; //APB1时钟 2预分频 8MHZ/2 = 4MHZ
  13.                                             //1秒时间 4MHZ 的脉冲
  14.     TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  15.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数模式
  16.     TIM_TimeBaseStructure.TIM_Period = 4000; //自动装载 从1~4000计数,刚好1ms时间
  17.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  18.     
  19.     TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
  20.     TIM_Cmd(TIM3, ENABLE);
  21.     //需要使能TIM3时钟,我们已经在RCC头文件中 使能了
  22.     //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    //定时器3提供时钟
  23. }


  24. /**********************************************************************
  25. * 名 称:NVIC_Configuration()
  26. * 功 能:中断优先级设置
  27. * 入口参数:
  28. * 出口参数:
  29. -----------------------------------------------------------------------
  30. * 说明:设置Tim3优先级
  31. ***********************************************************************/
  32. void TIM3_NVIC_Configuration(void)
  33. {
  34.     NVIC_InitTypeDef NVIC_InitStructure;
  35.     
  36. #ifdef VECT_TAB_RAM
  37.     /* Set the Vector Table base location at 0x20000000 */
  38.     NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
  39. #else /* VECT_TAB_FLASH */
  40.     /* Set the Vector Table base location at 0x08000000 */
  41.     NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
  42. #endif

  43.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//抢占式优先级别, 无抢占优先级
  44.     
  45.     /* Enable the TIM3 Interrupt 使能TIM3中断*/
  46.     NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;
  47.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  48.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  49.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  50.     NVIC_Init(&NVIC_InitStructure);
  51.  
  52. }

































欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2