OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6145|回复: 4

定时器如何重新开始计数

[复制链接]

4

主题

6

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-11-21
在线时间
0 小时
发表于 2014-12-16 21:33:38 | 显示全部楼层 |阅读模式
5金钱
我写的程序思路为:当外部脉冲n来临时发生中断发生时,同时定时器开始定时,向上计数模式,中断时间为1秒,如果脉冲个数n+1在定时器发生中断前来临时,定时器重新开始定时,从0开始,当定时器中断发生时,外部中断n+1还没有来临,则清空n,使n=0,我使用的函数为TIM_SetAutoreload(TIM2,0);这样对吗?我写的程序如下
void TIM2_Int_Init(u16 arr,u16 psc)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //?±??????
TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

//?¨?±?÷TIM2??????
TIM_TimeBaseStructure.TIM_Period = arr; //?è???????????ü??????×°????????×?????×°???????÷????????
TIM_TimeBaseStructure.TIM_Prescaler =psc; //?è??????×÷??TIMx?±?????????????¤·?????
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //?è???±??·???:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM?ò???????
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //?ù?????¨????????????TIMx???±???ù??????
 
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE ); //???????¨??TIM3????,???í?ü??????


NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //TIM3????
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;  //??????????0??
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //????????3??
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?¨??±?????
NVIC_Init(&NVIC_InitStructure);  //??????NVIC?????÷


TIM_Cmd(TIM2, ENABLE);  //????TIMx  
}
定时器服务函数
void TIM2_IRQHandler(void) 
{
 if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //?ì?éTIM3?ü??????·??ú??·?
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //????TIMx?ü??????±ê?? 
extinum=0;
extinum1=0;
extinum2=0;
extinum3=0;
}
}

最佳答案

查看完整内容[请看2#楼]

直接TIM2->CNT=0即可。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-16 21:33:39 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-12-8
在线时间
5 小时
发表于 2014-12-17 08:52:46 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
是不是CNT既能读也能写,写的时候这轮是从CNT开始计数,下次CNT会读取arr再计数;读的时候是读取当前CNT以判断定时时间用?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-17 23:21:54 | 显示全部楼层
回复【3楼】xianxin1217:
---------------------------------
是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-17 23:22:08 | 显示全部楼层
CNT到达arr就溢出了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-27 19:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表