OpenEdv-开源电子网

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

输入捕获测周期,占空比过高/低数据不对

[复制链接]

9

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2018-4-6
在线时间
31 小时
发表于 2018-8-25 09:19:29 | 显示全部楼层 |阅读模式
3金钱
如题,PWM设置的是5ms周期,ARR设置的5000,当CCR的值低于1000或高于3500,数据感觉第一个脉冲还正常,然后就跳动

4.png 3.png 2.png 1.png

[mw_shl_code=c,true]#include "stm32f10x.h"
#include "usart.h"
#include "delay.h"
#include "tim.h"

u8 TIM2CH1_CAPTURE_STA=0;        //êäèë2¶»ñ×′쬠      
u32        TIM2CH1_CAPTURE_VAL1;        //êäèë2¶»ñÖμ
u32        TIM2CH1_CAPTURE_VAL2;

void TIM2_IRQHandler(void)
{
if((TIM2CH1_CAPTURE_STA&0x80)==0)//ûóDíê3é
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)
{
if(TIM2CH1_CAPTURE_STA&0x20)
{
if(TIM2CH1_CAPTURE_STA&0x1f)
{
TIM2CH1_CAPTURE_STA|=0x80;
TIM_ITConfig(TIM2, TIM_IT_Update|TIM_IT_CC1, DISABLE);
TIM_Cmd(TIM2, DISABLE);
}
else
TIM2CH1_CAPTURE_STA++;
}
}
if(TIM_GetITStatus(TIM2,TIM_IT_CC1)!=RESET) //·¢éú2¶»ñ
{
if((TIM2CH1_CAPTURE_STA&0x20)==0) //μúò»′θßμçÆ½
{
TIM2CH1_CAPTURE_STA|=0x20;
TIM_SetCounter(TIM2,0);
TIM_Cmd(TIM2, ENABLE);
TIM_OC1PolarityConfig(TIM2,TIM_OCPolarity_Low);//ϽμÑØ
}
else if((TIM2CH1_CAPTURE_STA&0x20)&&(!(TIM2CH1_CAPTURE_STA&0x40)))//μúò»′ÎμíμçÆ½
{
TIM2CH1_CAPTURE_STA|=0x40;
TIM2CH1_CAPTURE_VAL1=TIM_GetCapture1(TIM2)+(TIM2CH1_CAPTURE_STA&0x1f)*65536;
TIM_SetCounter(TIM2,0);       
TIM_OC1PolarityConfig(TIM2,TIM_OCPolarity_High);//éÏéyÑØ
TIM2CH1_CAPTURE_STA&=0xe0;
}
else if((TIM2CH1_CAPTURE_STA&0x40)&&(!(TIM2CH1_CAPTURE_STA&0x80)))//óÖ»ñμøßμçÆ½
{
TIM2CH1_CAPTURE_VAL2=TIM_GetCapture1(TIM2)+(TIM2CH1_CAPTURE_STA&0x1f)*65536;
TIM2CH1_CAPTURE_STA|=0x80;
TIM_OC1PolarityConfig(TIM2, TIM_OCPolarity_High);//éÏéy

TIM_ITConfig(TIM2, TIM_IT_Update|TIM_IT_CC1, DISABLE);
TIM_Cmd(TIM2, DISABLE);
}
}
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1|TIM_IT_Update);
}
}
void get_pwm(void)
{
TIM2CH1_CAPTURE_STA=0;
TIM2CH1_CAPTURE_VAL1=0;
TIM2CH1_CAPTURE_VAL2=0;

TIM_ITConfig(TIM2, TIM_IT_Update|TIM_IT_CC1, ENABLE);

while((TIM2CH1_CAPTURE_STA&0x80)==0);

printf("¸ßμçÆ½:%d+++++++++++++++",TIM2CH1_CAPTURE_VAL1);
printf("μíμçÆ½%d----------------\n",TIM2CH1_CAPTURE_VAL2);
printf("==============%d---------------\n",TIM2CH1_CAPTURE_VAL1+TIM2CH1_CAPTURE_VAL2);
}
int main()
{
uart_init(9600);

TIM3_PWM1_init();//PA6μÄpwm
TIM_SetCompare1(TIM3, 500);
TIM2_CH1_init();//PA0μÄêäèë2¶»ñ

while(1)
{
unsigned int i=50000;
get_pwm();
while(i--);
}
}


[/mw_shl_code]

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

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-8-25 09:37:44 来自手机 | 显示全部楼层
任何方法都有使用限制范围
回复

使用道具 举报

9

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2018-4-6
在线时间
31 小时
 楼主| 发表于 2018-8-25 09:41:37 | 显示全部楼层
yklstudent 发表于 2018-8-25 09:37
任何方法都有使用限制范围

哎,还以为能做个示波器
回复

使用道具 举报

9

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2018-4-6
在线时间
31 小时
 楼主| 发表于 2018-8-25 17:35:51 | 显示全部楼层
自顶,求助,,,
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 00:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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