打印

STM32 定时器外部时钟模式

[复制链接]
9551|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 | 只看该作者
问题解决,可以对输入脉冲进行计数并产生中断.

使用特权

评论回复
5
STM32-shadow| | 2013-3-15 10:55 | 只看该作者
我的能计数,产生中断的时候计数器的值每次都不同,且与ARR寄存器的值是不一致,纠结了很久,你的有没有遇到过这种情况???

使用特权

评论回复
6
pybieku| | 2013-3-15 12:14 | 只看该作者
STM32-shadow 发表于 2013-3-15 10:55
我的能计数,产生中断的时候计数器的值每次都不同,且与ARR寄存器的值是不一致,纠结了很久,你的有没有遇 ...

不必纠结CNT的值,在仿真时读出的总是很“随机”的数,但是关键是功能是否正常。

使用特权

评论回复
7
jennifer83395| | 2013-6-26 17:58 | 只看该作者
wenzj12345 发表于 2012-7-23 15:29
问题解决,可以对输入脉冲进行计数并产生中断.

我也在弄这个,可以计数了,中断怎么产生,能给我说下怎么处理嘛,最好是把代码片断发给我看下,
ltb83395@126.com  谢谢了!!!!

使用特权

评论回复
8
cjhk| | 2013-6-26 20:22 | 只看该作者
学习学习   帮楼主   顶起来  

使用特权

评论回复
9
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 很给力!
10
wenzj12345|  楼主 | 2013-7-6 12:26 | 只看该作者
jennifer83395 发表于 2013-6-26 17:58
我也在弄这个,可以计数了,中断怎么产生,能给我说下怎么处理嘛,最好是把代码片断发给我看下,
ltb833 ...

初始化代码已在下面.希望对你有用.

使用特权

评论回复
11
小L1u氓| | 2014-7-27 09:23 | 只看该作者
楼主强大,小弟学习了

使用特权

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

本版积分规则

0

主题

140

帖子

1

粉丝