OpenEdv-开源电子网

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

STM32定时器计数器自动清零问题

[复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2012-5-23
在线时间
0 小时
发表于 2012-8-26 10:51:28 | 显示全部楼层 |阅读模式
STM32通用定时器,每次启动时,计数器的值会自动清零吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2012-5-23
在线时间
0 小时
 楼主| 发表于 2012-8-26 11:42:02 | 显示全部楼层

void Timerx_Init(u16 arr,u16 psc)
{
 RCC->APB1ENR|=1<<1;//TIM3时钟使能   
  TIM3->ARR=arr;  //设定计数器自动重装值//刚好1ms   
 TIM3->SC=psc;  //预分频器7200,得到10Khz的计数时钟
 //这两个东东要同时设置才可以使用中断
 TIM3->DIER|=1<<0;   //允许更新中断    
 TIM3->DIER|=1<<6;   //允许触发中断
 //TIM3->CR1|=1<<2;//|1<<3;   
 //TIM3->CR1|=0x01;    //使能定时器3
   MY_NVIC_Init(0,0,TIM3_IRQChannel,2);//抢占0,子优先级0,组2 ,最高先级        
}
Timerx_Init(6144,0);//72M的计数频率,计数到6144为85us,按1024道,每道为6个计数
void EXTI3_IRQHandler(void)  //XF中断
{
 //Sample=0;  //打开线性门
 TIM3->CR1|=0x01;    //使能定时器3
 OUTB=1;
 NVIC->ICER[0]|=1<<(EXTI3_IRQChannel);

 //EXTI->R=1<<12;
 //NVIC->ISER[1]|=1<<(EXTI15_10_IRQChannel-32); //关闭下阀中断,开启上阀和采集
 
 EXTI->R=1<<4;
 NVIC->ISER[0]|=1<<EXTI4_IRQChannel;
 //Sample=1;  //关线性门
 //XFC=1;//开线放
 //NVIC->ISER[1]|=1<<(EXTI15_10_IRQChannel-32); //关闭下阀中断,开启上阀和采集
 
 EXTI->R=1<<3;  //清除LINE0上的中断标志位 
}
在外部中断内无法启动定时器,不知道为什么

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2012-5-23
在线时间
0 小时
 楼主| 发表于 2012-8-26 14:57:20 | 显示全部楼层
我就是按照咱的代码做的,如果在初始化TIM3的时候,直接启动,则可以进入中断。如果初始化后在外部中断中再启动定时器,则定时器就无法工作。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-26 17:14:49 | 显示全部楼层
回复【5楼】succeedli:
---------------------------------
先确保你外部中断进入了....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2012-5-23
在线时间
0 小时
 楼主| 发表于 2012-8-26 20:22:24 | 显示全部楼层
我每次启动定时器后,会根据外部条件判断停止定时器,下次启动计数器自动清零,应该如何设置。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-26 21:55:11 | 显示全部楼层
if(条件成立)
{
停止定时器;
}

....

TIMx->CNT=0;
启动定时器;
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-4-16
在线时间
19 小时
发表于 2018-4-17 10:15:42 | 显示全部楼层
正点原子 发表于 2012-8-26 21:55
if(条件成立)
{
停止定时器;
}

....

TIMx-&gt;CNT=0;
启动定时器;

谢谢原子哥解答,看来还是寄存器重要啊
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-6-12
在线时间
3 小时
发表于 2020-7-24 15:54:56 | 显示全部楼层
TIMx->CNT=0;
唉呀。。。百度了一下午。。。最后还是在原子哥论坛找到的。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 01:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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