📄 df_bh_timera.c
字号:
/*****************************************************************************
文件名:df_bh_timera.c
编写者:czhang
描述:使用定时器A捕获信号的上升和下降沿,检测信号周期
版本:1.0 2005-2-20
*****************************************************************************/
#include <MSP430x14x.h>
#include "df_bh_timera.h"
#define BHSEL P2SEL //定义捕获端口
#define BH_IO BIT2
unsigned int Cyc; //检测到的信号周期
unsigned int LastCCR0; //上一次测到的CCR0值
/*****************************************************************************
初始化
*****************************************************************************/
void InitBhTimerA()
{
TACTL = TASSEL_1+TACLR; //定时器A,时钟源:ACLK,连续计数模式
CCTL0 = CCIS_1+CM_2+CAP; //选择下降沿捕获,CCIB(P2.2)为信号源,
BHSEL |= BH_IO; //选择P2.2使用第二功能
}
/*****************************************************************************
控制捕获运行或者停止
doit:0:停止 100:运行 其他:什么都不做
*****************************************************************************/
void GoBhTimerA(unsigned char doit)
{
if(doit==0)
{
TACTL &= ~MC1; //关闭计数器
CCTL0 &= ~CCIE; //关闭中断
}
else
{
TACTL |= MC_2+TACLR; //打开计数器
CCTL0 |= CCIE; //捕获中断允许
}
}
/*****************************************************************************
定时器A中断函数
中断源:CC0
*****************************************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0()
{
Cyc=CCR0-LastCCR0;
LastCCR0=CCR0;
}
unsigned int GetCyc()
{
return Cyc;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -