STM32 定时器外部时钟模式

[复制链接]
10303|10
 楼主| wenzj12345 发表于 2012-7-20 16:25 | 显示全部楼层 |阅读模式
TIM_InitStructure.TIM_Period = 0XFFFF;
TIM_InitStructure.TIM_Prescaler =0X00;
TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
//TIM_InitStructure.TIM_RepetitionCounter = 0;
TIM_InitStructure.TIM_ClockDivision = 0X00;
TIM_TimeBaseInit(TIM4,&TIM_InitStructure);  //定时器4初始化
TIM_ETRConfig(TIM4,TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_Inverted,0);

TIM_TIxExternalClockConfig(TIM4,TIM_TIxExternalCLK1Source_TI2, TIM_ICPolarity_Rising,0);  //选择外部时钟
TIM_ETRClockMode2Config(TIM4,TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);  //外部时钟配置2

TIM_SetCounter( TIM4, 0);

上面是定时器4的初始化,另外IO口   时钟等都已初始化。
问题1:定时器外部时钟源模式2  是不是和输出一样要选择引脚?如有要怎么选。但我现在是没有发现(MDK)软件仿真时,TIMER PINS 那TIM4_ETR并没有选中,这是为什么?
问题2:他能否对输入的脉冲进行比较匹配后并产生中断?
问题3:一个定时器能否用于对输入脉冲进行计数并用其他通道做输出比较?
先感谢大家的回答。谢谢
 楼主| wenzj12345 发表于 2012-7-20 16:25 | 显示全部楼层
自己先顶一个:lol
zh5202 发表于 2012-7-20 17:34 | 显示全部楼层
正在研究
 楼主| wenzj12345 发表于 2012-7-23 15:29 | 显示全部楼层
问题解决,可以对输入脉冲进行计数并产生中断.
STM32-shadow 发表于 2013-3-15 10:55 | 显示全部楼层
我的能计数,产生中断的时候计数器的值每次都不同,且与ARR寄存器的值是不一致,纠结了很久,你的有没有遇到过这种情况???
pybieku 发表于 2013-3-15 12:14 | 显示全部楼层
STM32-shadow 发表于 2013-3-15 10:55
我的能计数,产生中断的时候计数器的值每次都不同,且与ARR寄存器的值是不一致,纠结了很久,你的有没有遇 ...

不必纠结CNT的值,在仿真时读出的总是很“随机”的数,但是关键是功能是否正常。
jennifer83395 发表于 2013-6-26 17:58 | 显示全部楼层
wenzj12345 发表于 2012-7-23 15:29
问题解决,可以对输入脉冲进行计数并产生中断.

我也在弄这个,可以计数了,中断怎么产生,能给我说下怎么处理嘛,最好是把代码片断发给我看下,
ltb83395@126.com  谢谢了!!!!
cjhk 发表于 2013-6-26 20:22 | 显示全部楼层
学习学习   帮楼主   顶起来  
 楼主| wenzj12345 发表于 2013-7-6 12:25 | 显示全部楼层
        /*定时器做脉冲计数*/
         TIM_DeInit(TIM4);
         NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQChannel;
         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;
         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
         NVIC_Init(&NVIC_InitStructure);
         TIM_ITConfig(TIM4,TIM_IT_Update, ENABLE);//enable interrupt

         
        TIM_InitStructure.TIM_Period = 0xF5;
        TIM_InitStructure.TIM_Prescaler =0X00;
        TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_InitStructure.TIM_ClockDivision = 0X00;
        TIM_TimeBaseInit(TIM4,&TIM_InitStructure);                //定时器4初始化
       
        TIM_ETRClockMode2Config(TIM4,TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
//        TIM_SelectInputTrigger(TIM4,TIM_TS_ETRF);
        TIM_SetCounter( TIM4, 0);
//        TIM_GetCounter(TIM4);
        这是我的定时器初始化程序.希望对大家有用.

评分

参与人数 1威望 +1 收起 理由
liujinxu212 + 1 很给力!

查看全部评分

 楼主| wenzj12345 发表于 2013-7-6 12:26 | 显示全部楼层
jennifer83395 发表于 2013-6-26 17:58
我也在弄这个,可以计数了,中断怎么产生,能给我说下怎么处理嘛,最好是把代码片断发给我看下,
ltb833 ...

初始化代码已在下面.希望对你有用.
小L1u氓 发表于 2014-7-27 09:23 | 显示全部楼层
楼主强大,小弟学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

140

帖子

1

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