OpenEdv-开源电子网

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

原子哥!你看看你发的STM8定时器2通道2的输入捕获的程序,理解不对哦

[复制链接]

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2014-6-30
在线时间
7 小时
发表于 2015-9-17 22:20:15 | 显示全部楼层 |阅读模式
5金钱
//定时器2.输入捕获初始化代码
//输入捕获计数频率: Fmaster/(2^psc)
//输入捕获最大值:arr
//psc:分配系数,0~15;分频系数为:2^psc,最大为2^15=32768分频
//arr:自动重装载值,0~65535
void TIM2_CAP_Init(u8 psc,u16 arr)

         CLK->CKENR1|=1<<5; //开启TIM2时钟
         GPIOD->DDR&=~(1<<3);//PD3 输入模式
        GPIOD->CR1|=1<<3; //PD3,上拉
        GPIOD->CR2&=~(1<<3);//PD3,不使用中断

        TIM2->SCR=psc; //2^psc次方分频
        TIM2->ARRH=arr>>8; //必须先设置ARR的高字节
        TIM2->ARRL=arr&0XFF;//再设置低字节

        TIM2->CCMR2|=1<<0; //CC2映射在TI2FP2上
TIM2->CCMR2|=0<<2; //无预分频,每个事件一次捕获
TIM2->CCMR2|=0<<4; //无滤波,Fmaster采样.
TIM2->CCER1|=1<<5; //捕获下降沿
TIM2->CCER1|=1<<4; //IC2输入捕获使能,允许捕获计数器的值到捕获寄存器中

TIM2->CR1|=1<<7; //预装载使能
TIM2->IER|=1<<0; //使能更新中断
TIM2->IER|=1<<2; //通道2捕获中断使能
TIM2->CR1|=1<<0; //使能TIM2 
ITC_Set(TIM2_UPD_OVF_VECTOR,3); //优先级3
}

是这样的,原子哥你的程序首先设置下降沿捕获,然后进一个下降沿的中断,记录此时的捕获寄存器的值,再改为上升沿
然后在下一次上升沿的中断,记录此时的捕获寄存器的值。实际测得电平过程是:下降沿??低电平??上升沿
这不是测低电平时间吗?
你的程序是:
while(1) 
{  
if(t==20)

LED0_SET(i=!i);
t=0;  
}
t++;
delay_ms(10);  
  if(TIM2CH2_CAPTURE_STA&0X80)//成功捕获到了一次高电平
{
temp=TIM2CH2_CAPTURE_STA&0X3F;
temp*=65536; //溢出时间总和
temp+=TIM2CH2_CAPTURE_VAL; //得到总的高电平时间
printf("HIGH:%ld us\r\n",temp/3);//打印总的高点平时间
TIM2CH2_CAPTURE_STA=0; //开启下一次捕获
}
}
你不是测高电平时间吗?
还是我的理解有错误?

我想安安静静做个美男子
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-9-30 08:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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