Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4470709
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: 嵌入式

2011-08-22 15:01:32

本文的copyright归yuweixian4230@163.com 所有,使用GPL发布,可以自由拷贝,转载。
但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:yuweixian4230@163.com
博客:yuweixian4230.blog.chinaunix.net 


附件: 18tim3外部计数器.rar  

  设置tim3 为外部计数器模式,从信号发生器中输入 100hz 的方波, tim3计数器中每100个方波产生一个中断

  1. void test(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;
  4.     NVIC_InitTypeDef NVIC_InitStructure;
  5.     TIM_TimeBaseInitTypeDef      TIM_TimeBaseStructure;

  6.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

  7.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  8.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  9.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  10.     GPIO_Init(GPIOA, &GPIO_InitStructure);

  11. /************************************************/
  12.     
  13.     
  14.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //TIM3时钟配置选择
  15.     //TIM3输出初始化
  16.     TIM_DeInit(TIM3); //TIM3 ch2 pin17 pa7

  17.     TIM_TimeBaseStructure.TIM_Period = 99; //计数值=100-1
  18.     TIM_TimeBaseStructure.TIM_Prescaler = 0; //预分频
  19.     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟分割
  20.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down; //模式
  21.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //基本初始化
  22.     
  23.     TIM_SetCounter(TIM3, 99); //设置 TIM3 计数器寄存器值
  24.     TIM_ARRPreloadConfig(TIM3, ENABLE); //设置 TIMx 自动重装载寄存器值
  25.     TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);
  26.     TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_External1);
  27.     
  28.     //TIM3通道的捕捉初始化
  29.     TIM_SetCompare2(TIM3, 99);
  30.     TIM_Cmd(TIM3, ENABLE); //启动TIM3
  31.     TIM_ClearFlag(TIM3, TIM_IT_CC2);
  32.     TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE); //打开中断


  33. //#if 0    
  34. #ifdef VECT_TAB_RAM
  35.     /* Set the Vector Table base location at 0x20000000 */
  36.     NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
  37. #else /* VECT_TAB_FLASH */
  38.     /* Set the Vector Table base location at 0x08000000 */
  39.     NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
  40. #endif
  41. //#endif

  42.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//抢占式优先级别, 无抢占优先级

  43.     
  44.     NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //
  45.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级0
  46.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级0
  47.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //允许中断
  48.     NVIC_Init(&NVIC_InitStructure); //写入设置    
  49. }


阅读(2218) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~