打印

STM32L TIM 外部时钟模式不计数(STM32L-Discovery板子) ,什么问

[复制链接]
2573|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
god_carl|  楼主 | 2013-10-31 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 god_carl 于 2013-10-31 15:56 编辑

GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_ClocksTypeDef RCC_ClockFreq;
        TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
       

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//_FLOATING; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; //
GPIO_Init(GPIOA, &GPIO_InitStructure);
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//|GPIO_Pin_5|GPIO_Pin_15;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//_FLOATING; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; //
       
              // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
         //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
                                 
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOD,GPIO_Pin_2,GPIO_AF_TIM3);



         

SystemInit();//??system_stm32f10x.c??,????????,????RCC???.
RCC_GetClocksFreq(&RCC_ClockFreq);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);




TIM_DeInit(TIM3);               
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler = 0x01;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // Time base configuration





TIM_ETRClockMode2Config(TIM3, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

TIM_SetCounter(TIM3, 100);
//TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM3, ENABLE);
   

       
while(1)
{
           for(i_Loop = 0; i_Loop < 100; i_Loop ++)
         {
        GPIO_SetBits(GPIOA, GPIO_Pin_2);
        Delay(2);
        GPIO_ResetBits(GPIOA, GPIO_Pin_2);
        Delay(2);
         }
   
}
}               
沙发
god_carl|  楼主 | 2013-10-31 16:22 | 只看该作者
换成TIM2 也不行  外部PA0,PA5,PA15管脚都试了,还是不计数,寄存器里可以看到这几个脚的电平变化   ,就是计数器不计数。下面是换TIM2的代码
  GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_ClocksTypeDef RCC_ClockFreq;
        TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
       

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//_FLOATING; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; //
GPIO_Init(GPIOA, &GPIO_InitStructure);
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_15;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//_FLOATING; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; //
       
              // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        // GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
                                 
GPIO_Init(GPIOA, &GPIO_InitStructure);
//GPIO_PinAFConfig(GPIOA,GPIO_Pin_2,GPIO_AF_TIM2);



         

SystemInit();//??system_stm32f10x.c??,????????,????RCC???.
RCC_GetClocksFreq(&RCC_ClockFreq);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
//RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);




TIM_DeInit(TIM2);               
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); // Time base configuration





TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

TIM_SetCounter(TIM2, 100);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2, ENABLE);
   

       
while(1)
{
           for(i_Loop = 0; i_Loop < 100; i_Loop ++)
         {
        GPIO_SetBits(GPIOA, GPIO_Pin_2);
        Delay(2);
        GPIO_ResetBits(GPIOA, GPIO_Pin_2);
        Delay(2);
         }
   
}
}               

使用特权

评论回复
板凳
god_carl|  楼主 | 2013-10-31 16:24 | 只看该作者
没有人知道么?

使用特权

评论回复
地板
香水城| | 2013-10-31 21:36 | 只看该作者
芯片参考手册的定时器一章,有专门段落讲如何使用外部引脚上的信号作为计数器的时钟,【external clock source mode1】和【external clock source mode2】。

不是没人知道,只是这么大段代码贴上来,高兴看的估计不多。还是自己对照手册里描述的寄存器配置检查吧。

使用特权

评论回复
5
god_carl|  楼主 | 2013-11-1 15:10 | 只看该作者
都对应检测了 还是没找出问题来, 别人一样的代码在STM32上就没问题,为什么STM32L 就不行了呢

使用特权

评论回复
6
god_carl|  楼主 | 2013-11-1 16:47 | 只看该作者
终于解决了

使用特权

评论回复
7
wangweidgv| | 2014-8-18 14:06 | 只看该作者
怎么解决的?

使用特权

评论回复
8
dulangzhou99| | 2015-11-2 21:54 | 只看该作者
请教一下,是怎么解决的

使用特权

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

本版积分规则

2

主题

6

帖子

1

粉丝