打印
[STM8]

stm8s103f3

[复制链接]
1967|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zoulinqi110|  楼主 | 2014-6-27 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm8s103f3 tim1 ch1做pwm捕获,只用ch1的寄存器,我看网上大多数资料都用到了ch2 的寄存器,能不能只用ch1?求大神给个思路。
沙发
mmuuss586| | 2014-6-27 17:01 | 只看该作者

没用过这个功能;
你可以试下,我想应该可以;

使用特权

评论回复
板凳
bbstr| | 2014-6-27 17:29 | 只看该作者
没明白你什么意思

使用特权

评论回复
地板
lovehuxiaohui| | 2014-6-28 20:49 | 只看该作者
测占空比吗?测高电平长度和低电平长度..要用到两个CC通道,,测频率一个就可以了,,因为测高电平宽度 你要上升沿和下降沿触发,,用两个cc

使用特权

评论回复
5
zoulinqi110|  楼主 | 2014-6-30 13:58 | 只看该作者
mmuuss586 发表于 2014-6-27 17:01
没用过这个功能;
你可以试下,我想应该可以;

我觉得应该也可以,但是没找到思路,很纠结,现在做一个项目,要用一个pwm捕获,多个pwm输出,time口不够,有人说用io模拟pwm输出,我觉得会不准,影响性能。

使用特权

评论回复
6
zoulinqi110|  楼主 | 2014-6-30 14:01 | 只看该作者
lovehuxiaohui 发表于 2014-6-28 20:49
测占空比吗?测高电平长度和低电平长度..要用到两个CC通道,,测频率一个就可以了,,因为测高电平宽度 你要上升 ...

用两个应该不难,现在就是希望通过一个来捕获上升沿和下降沿。

使用特权

评论回复
7
lovehuxiaohui| | 2014-6-30 20:42 | 只看该作者
zoulinqi110 发表于 2014-6-30 14:01
用两个应该不难,现在就是希望通过一个来捕获上升沿和下降沿。

那要在中间切换了~~一个通道只能记录一个沿  ~~

使用特权

评论回复
8
zoulinqi110|  楼主 | 2014-7-3 17:29 | 只看该作者
lovehuxiaohui 发表于 2014-6-30 20:42
那要在中间切换了~~一个通道只能记录一个沿  ~~

确实要做一个切换,我用查询的方法实现了切换,但在中断中却切换不了,不知道是什么地方没设置好。
#pragma vector=14
__interrupt void Timer1Capture(void)
{
         
                 if(TIM1_GetITStatus(TIM1_IT_CC1))
             {   
                 ICValue1 = TIM1_GetCapture1();
                 TIM1_ClearITPendingBit(TIM1_IT_CC1);
                 
             }


                 TIM1->CCER1=0x02;//切换到下降沿
             
                 if(TIM1_GetITStatus(TIM1_IT_CC1))
                 {
                   ICValue2 = TIM1_GetCapture1();
                   TIM1_ClearITPendingBit(TIM1_IT_CC1);
                   TIM1_ClearFlag(TIM1_FLAG_CC1);
                 
                 }
                 if(ICValue2 > ICValue1)
                  Period = ICValue2-ICValue1;
           else if(ICValue2<ICValue1)
                  Period = 0xffff + ICValue2-ICValue1;
           HIGH=Period/8;
         
}

使用特权

评论回复
9
lovehuxiaohui| | 2014-7-3 20:47 | 只看该作者
zoulinqi110 发表于 2014-7-3 17:29
确实要做一个切换,我用查询的方法实现了切换,但在中断中却切换不了,不知道是什么地方没设置好。
#prag ...

你中断进入后,,程序有问题 最好用switch,一步一步来
在第一次进来时 记录ICValue1 = TIM1_GetCapture1(); 同时切换到下降沿,,但是你下降沿触发后进来,,ICValue1 = TIM1_GetCapture1(); 还是会执行的~~这样你ICValue1和ICValue2就一直相等了~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

62

帖子

0

粉丝