[STM32] TIM2触发ADC

[复制链接]
1425|1
 楼主| 小耐耐 发表于 2015-1-11 18:37 | 显示全部楼层 |阅读模式
想用TIM2触发ADC,不能用~~大家看一看,拜托了,困惑好久了~~
  1. void TIM2_NVIC_Configuration(void)
  2. {
  3.     NVIC_InitTypeDef   NVIC_InitStructure;
  4.    
  5.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  //0 bits for pre-emption priority,4 bits for subpriority                                                                               

  6.                        
  7.     NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;          //28
  8.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  9.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;       
  10.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  11.     NVIC_Init(&NVIC_InitStructure);
  12. }

  13.                                                                                   
  14. /*TIM_Period--1000   TIM_Prescaler--719 -->中断周期为10ms*/
  15. void TIM2_Configuration(void)
  16. {
  17.     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  18.         TIM_OCInitTypeDef TIM_OCInitStructure        ;

  19.    
  20.     TIM_DeInit(TIM2); //不初始化到默认参数
  21.     TIM_TimeBaseStructure.TIM_Period=1000; /* 自动重装载寄存器周期的值(计数值), 累计 TIM_Period个频率后产生一个更新或者中断 */
  22.     TIM_TimeBaseStructure.TIM_Prescaler= (720 - 1);/* 时钟预分频数 72M/72 */
  23.     TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;                 /* 采样分频 */
  24.     TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 向上计数模式 */

  25.         TIM_OCInitStructure. TIM_OCMode= TIM_OCMode_PWM1;
  26.     TIM_OCInitStructure. TIM_OutputState=TIM_OutputState_Enable ;
  27.         TIM_OCInitStructure. TIM_Pulse         = 500; //the pulse value to be loaded into the Capture Compare Register.
  28.         TIM_OCInitStructure. TIM_OCNPolarity= TIM_OCNPolarity_Low;
  29.    

  30.     TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  31.     TIM_ClearFlag(TIM2, TIM_FLAG_Update);        /* 清除溢出中断标志 */
  32.     TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);  //enable TIM update Interrupt source
  33.                                                            

  34.         TIM_OC2Init(TIM2, &TIM_OCInitStructure);
  35.         TIM_InternalClockConfig(TIM2);
  36.         TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);
  37.         //TIM_UpdateDisableConfig(TIM2,DISABLE);
  38.         TIM_CtrlPWMOutputs(TIM2,ENABLE);

  39.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
  40.         TIM_Cmd(TIM2, ENABLE);        /* 开启时钟 */
  41.         }       
  42.   
  43. void timer_gpio_config(void)
  44. {
  45.   

  46.         GPIO_InitTypeDef GPIO_InitStructure;
  47.        
  48.         /* Enable ADC1 and GPIOC clock */
  49.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
  50.        
  51.         /* Configure PB.03  as analog input */
  52.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  53.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出       
  54.         GPIO_Init(GPIOB, &GPIO_InitStructure);                               
  55. }          

  56. void TIM2_Init(void)
  57. {   
  58.      TIM2_NVIC_Configuration();
  59.          TIM2_Configuration();
  60.      timer_gpio_config();





  61. }
wind~风 发表于 2015-4-28 17:24 | 显示全部楼层
ADC的配置呢?要在ADC的配置里面选择TIM2的信号作为触发源
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

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