OpenEdv-开源电子网

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

原子哥麻烦看下这个定时器!

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-4-2
在线时间
1 小时
发表于 2013-4-3 14:50:07 | 显示全部楼层 |阅读模式

TIM3_Init(500,3599);  //10Khz的计数频率(100us),计数到500为50ms


while(1)
{
          DuoCtrl=1;
FlagAngle=0;       //数据处理完成清除标志!!
Anglecnt=0;
TIM3->CR1|=0x01;    //使能定时器3
}


//定时器3中断服务程序  
void TIM3_IRQHandler(void)
{          
if(TIM3->SR&0X0001)//溢出中断
{
DuoCtrl=0;
LED0=!LED0;
             
}   
TIM3->SR&=~(1<<0);//清除中断标志位
TIM3->CR1&=0xFE;    //关闭定时器3    
}
//通用定时器中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void TIM3_Init(u16 arr,u16 psc)
{
    RCC->APB1ENR|=1<<1;//TIM3时钟使能
//TIM3->CNT=0;    
  TIM3->ARR=arr;  //设定计数器自动重装值//刚好1ms    
TIM3->SC=psc;  //预分频器7200,得到10Khz的计数时钟
//这两个东东要同时设置才可以使用中断
TIM3->DIER|=1<<0;   //允许更新中断
    TIM3->DIER|=1<<6;   //允许触发中断
TIM3->CR1|=0x01;    //使能定时器3
TIM3->CR1&=0xFE;    //关闭定时器3   
//TIM3->CR1|=0x01;    //使能定时器3
  MY_NVIC_Init(1,2,TIM3_IRQChannel,2);//抢占1,子优先级2,组2  
}

DuoCtrl的高电平时按道理应该全是50ms,可实际中生成的第一个高电平是628us,后面的高电平才是50100us,麻烦原子哥帮我分析下,谢谢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-4-2
在线时间
1 小时
 楼主| 发表于 2013-4-3 15:02:15 | 显示全部楼层
实际中我是要给定约100ms的高电平给下级机构,利用定时器3第一次产生的高电平是不准的,后面的才是准确的,为了找出问题原因我将主程序全设置成1,类似于产生PWM波形一样,实际上我需要的是某时100ms,其他时间均为低电平
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-4-2
在线时间
1 小时
 楼主| 发表于 2013-4-3 16:23:12 | 显示全部楼层


回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-4-2
在线时间
1 小时
 楼主| 发表于 2013-4-3 19:48:50 | 显示全部楼层
原子哥帮我看下哦,谢谢!还是查不到原因
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-4-2
在线时间
1 小时
 楼主| 发表于 2013-4-3 20:48:31 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
初始化中我没有使能定时器,第一次调用定时器还是不对,后面是对的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-3 20:49:52 | 显示全部楼层
使能之前把CNT清零试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-4-2
在线时间
1 小时
 楼主| 发表于 2013-4-3 21:11:21 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
RCC->APB1ENR|=1<<1;//TIM3时钟使能
//TIM3->CNT=0;    
  TIM3->ARR=arr;  //设定计数器自动重装值//刚好1ms    


当时在这个地方清零了,不管用,后来我就没试这个了
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-4-2
在线时间
1 小时
 楼主| 发表于 2013-4-4 13:26:40 | 显示全部楼层
回复【7楼】正点原子:

使能之前把CNT清零试试。

---------------------------------
CNT清零还是第一次生成的时间不对,后面是对的,用示波器看的结果
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2013-4-2
在线时间
1 小时
 楼主| 发表于 2013-4-4 13:27:10 | 显示全部楼层
6 us

56 us

55 us

55 us

55 us

55 us

55 us

55 us

55 us(改了计数频率的结果)
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-4 19:09:00 | 显示全部楼层
可能是中断配置完后,立马会进一次中断的问题。你可以在中断里面设置个断点,看看是不是这样。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-3-2
在线时间
2 小时
发表于 2015-4-16 10:37:06 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
原子哥  也遇到类似问题,
        SystemInit();   //系统时钟初始化为72M   SYSCLK_FREQ_72MHz
delay_init(72);       //延时函数初始化
NVIC_Configuration();   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
!!!TIM1->CNT=1200;   
Timer3_Init(100,71);  //10Khz的计数频率,计数到1000为100ms 
 这样对在定时器前TIM1->CNT置数无效,TIM1->CNT还是默认的0
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-3-2
在线时间
2 小时
发表于 2015-4-18 19:13:28 | 显示全部楼层
回复【12楼】耄耋小弟:
---------------------------------
麻烦谁解答一下啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-18 22:42:33 | 显示全部楼层
回复【12楼】耄耋小弟:
---------------------------------
先开启TIM1时钟。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-3-2
在线时间
2 小时
发表于 2015-4-20 21:08:14 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
都试过  都一样  很不解   我在TIM3的中断中改他第一次也不行  非得第二次才可以
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-21 00:01:56 | 显示全部楼层
回复【15楼】耄耋小弟:
---------------------------------
这我也不晓得 了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-3-2
在线时间
2 小时
发表于 2015-4-21 16:31:35 | 显示全部楼层
回复【16楼】正点原子:
---------------------------------
麻烦了  我再仔细看看
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 07:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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