OpenEdv-开源电子网

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

请问这个定时时间怎么算啊?

[复制链接]

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-11-4
在线时间
0 小时
发表于 2013-11-5 20:59:00 | 显示全部楼层 |阅读模式
u16 capture=0;
u16 CCR1_Val=1000;
u16 CCR2_Val=5000;
u16 CCR3_Val=10000;
u16 CCR4_Val=20000;

       TIM_TimeBaseStructure.TIM_Period=65535;
TIM_TimeBaseStructure.TIM_Prescaler=7200-1;
TIM_TimeBaseStructure.TIM_ClockDivision=0x0;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

void TIM2_IRQHandler(void)
{
/*TIM2_CH1*/
if(TIM_GetITStatus(TIM2,TIM_IT_CC1)!=RESET)
{
TIM_ClearITPendingBit(TIM2,TIM_IT_CC1);
/*PC.1引脚的翻转频率为  Hz*/
GPIO_WriteBit(GPIOC,GPIO_Pin_1,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1)));
capture=TIM_GetCapture1(TIM2);
TIM_SetCompare1(TIM2,capture+CCR1_Val);
//GPIO_ResetBits(GPIOC,GPIO_Pin_All);
}
/*TIM2_CH2*/
if(TIM_GetITStatus(TIM2,TIM_IT_CC2)!=RESET)
{
GPIO_WriteBit(GPIOC,GPIO_Pin_2,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_2)));
TIM_ClearITPendingBit(TIM2,TIM_IT_CC2);
capture=TIM_GetCapture2(TIM2);
TIM_SetCompare2(TIM2,capture+CCR2_Val);
//GPIO_SetBits(GPIOC,GPIO_Pin_All); 
}

}

请问这个定时时间怎么算啊?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-10-18
在线时间
5 小时
发表于 2013-11-5 23:09:08 | 显示全部楼层
TIM_TimeBaseStructure.TIM_Period=65535;
TIM_TimeBaseStructure.TIM_Prescaler=7200-1;

TIM_TimeBaseStructure.TIM_ClockDivision=0x0;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数
这个看懂了先
回复 支持 反对

使用道具 举报

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-11-4
在线时间
0 小时
 楼主| 发表于 2013-11-5 23:16:36 | 显示全部楼层
回复【3楼】tim4146:
---------------------------------
这个我懂啊 但是u16 capture=0;
u16 CCR1_Val=1000;
u16 CCR2_Val=5000;
u16 CCR3_Val=10000;
u16 CCR4_Val=20000;
这个呢?  注意:我现在设置的是这个模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;,而不是AF_PP,所以不是输出PWM哦
回复 支持 反对

使用道具 举报

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-11-4
在线时间
0 小时
 楼主| 发表于 2013-11-5 23:31:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
教程我又看了一下!不过我这个不是输出PWM啊!GPIO设置的而是推挽输出,而不是复用推挽!

u16 CCR1_Val=1000; 
u16 CCR2_Val=5000; 
u16 CCR3_Val=10000; 
u16 CCR4_Val=20000; 
这个呢?  注意:我现在设置的是这个模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;,而不是AF_PP,所以不是输出PWM哦
回复 支持 反对

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-10-18
在线时间
5 小时
发表于 2013-11-5 23:34:05 | 显示全部楼层
我也是正在学习的
GPIO_WriteBit(GPIOC,GPIO_Pin_1,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1)));
是什么意思?特别是,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1))
是啥....
回复 支持 反对

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-10-18
在线时间
5 小时
发表于 2013-11-5 23:39:16 | 显示全部楼层
if(TIM_GetITStatus(TIM2,TIM_IT_CC1)!=RESET)
中断里面的内容看起来,似乎就是捕获外部信号产生的中断。不是定时器溢出中断啊...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165580
金钱
165580
注册时间
2010-12-1
在线时间
2118 小时
发表于 2013-11-7 23:21:55 | 显示全部楼层
回复【5楼】HUALIN:
---------------------------------
你想做什么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-11-4
在线时间
0 小时
 楼主| 发表于 2013-11-9 10:27:20 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
让通用定时器的4个通道分别产生不同的定时时间
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165580
金钱
165580
注册时间
2010-12-1
在线时间
2118 小时
发表于 2013-11-9 19:56:48 | 显示全部楼层
定时时间是由ARR和PSC决定的,你用CCRx,要嘛产生PWM,要嘛用输出比较,或者输入捕获。
你想实现不同时间定时,不要用这种改CCRx的方法,很蛋疼。
直接用定时器中断实验,就可以实现了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-2-22
在线时间
7 小时
发表于 2017-2-22 20:56:25 | 显示全部楼层
请教一下,假如说是PWM输出,那TIM_SetCompare1(TIM2,capture+CCR1_Val); 这条语句的时间是怎么算的,没超过65536吗???
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-9-22 16:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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