OpenEdv-开源电子网

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

关于定时器TIM1->CNT赋值的问题

[复制链接]

13

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2016-6-30
在线时间
97 小时
发表于 2016-7-1 09:54:27 | 显示全部楼层 |阅读模式
5金钱
我是这样写的:我是想中断来时第一次直接触发 所以给TIM1->CNT赋值 可这样写后定时器输出pwm都不触发了是什么问题啊


//外部中断0服务程序
void EXTI1_IRQHandler(void)
{
         /* TIM1 counter enable */
         TIM_Cmd(TIM1, ENABLE);

         /* Test on channel1 transfer complete flag */
         while(!DMA_GetFlagStatus(DMA1_FLAG_TC1));
         /* Clear channel1 transfer complete flag */
         DMA_ClearFlag(DMA1_FLAG_TC1);

         /* TIM1 counter disable */
         TIM_Cmd(TIM1, DISABLE);

         TIM1->CNT = 23997;

         EXTI_ClearITPendingBit(EXTI_Line1);  //清除LINE4上的中断标志位  
}



最佳答案

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

TIM1->CNT 计数值 TIM1->ARR 自动重装值 TIM1->CCR 比较值 你配置完成是多少
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-7-1 09:54:28 | 显示全部楼层
TIM1->CNT     计数值
TIM1->ARR     自动重装值
TIM1->CCR    比较值

你配置完成是多少
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-7-1 10:10:13 | 显示全部楼层
你定时器都关了还触发什么                                     还有你定时器怎么配置的
回复

使用道具 举报

13

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2016-6-30
在线时间
97 小时
 楼主| 发表于 2016-7-1 10:11:34 | 显示全部楼层
止天 发表于 2016-7-1 10:10
你定时器都关了还触发什么                                     还有你定时器怎么配置的

是下一个中断来时使能定时器 触发 转换完成后关闭定时器的
回复

使用道具 举报

13

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2016-6-30
在线时间
97 小时
 楼主| 发表于 2016-7-1 10:12:52 | 显示全部楼层
止天 发表于 2016-7-1 10:10
你定时器都关了还触发什么                                     还有你定时器怎么配置的

定时器是这样配置的  
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Period = arr;         
  TIM_TimeBaseStructure.TIM_Prescaler = psc;      
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;   
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  /* TIM1 channel1 configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;               
  TIM_OCInitStructure.TIM_Pulse = 1;//0x7F;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;         
  TIM_OC1Init(TIM1, &TIM_OCInitStructure);
回复

使用道具 举报

13

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2016-6-30
在线时间
97 小时
 楼主| 发表于 2016-7-1 10:36:48 | 显示全部楼层
现在就是给cnt赋值后就触发不了pwm了    TIM_SetCounter(TIM1, 23997);
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-7-1 12:11:15 | 显示全部楼层
本帖最后由 憨厚诚实大叔 于 2016-7-1 12:13 编辑

话说,你CNT赋值做什么。这个是计数器
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-7-1 12:14:57 | 显示全部楼层
ARR配置的是频率,CCR配置的是占空比。CNT是计数器,你给计数器赋值做什么
回复

使用道具 举报

13

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2016-6-30
在线时间
97 小时
 楼主| 发表于 2016-7-1 13:29:34 | 显示全部楼层
止天 发表于 2016-7-1 12:01
TIM1->CNT     计数值
TIM1->ARR     自动重装值
TIM1->CCR    比较值

TIM1->CCR是1
TIM1->ARR 是23998

我是想第一次从23997开始计数
回复

使用道具 举报

13

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2016-6-30
在线时间
97 小时
 楼主| 发表于 2016-7-1 13:41:39 | 显示全部楼层
止天 发表于 2016-7-1 12:01
TIM1->CNT     计数值
TIM1->ARR     自动重装值
TIM1->CCR    比较值

额现在TIM1->CNT 赋值2就对了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 17:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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