┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |
/*****************************************************************
//功能:利用定时器A的捕捉能测量脉冲信号的脉宽
//
//
// MSP430F449
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P1.5/ACLK|---+
// | | |
// | P2.0/TA2|<--+
// | |
// | |
//说明:ACLK要进行8分频(4K),并将其作为外部的要捕获的脉冲;
//MCLK=SMCLK=8M;
*****************************************************************/
#include <msp430x44x.h>
int pwm_start,pwm_end,pwm_wide=0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR = 0x20; // P1.5 输出
P1SEL = 0x20; // P1.5输出ACLK
P2SEL|=BIT0; //P2.0 CCI2A
SCFI0 |= FN_4;
SCFQCTL = 121; // (121+1) ×32768 *2= 7.99Mhz
FLL_CTL0=DCOPLUS+OSCCAP1; //MCLK=SMCLK=8M
FLL_CTL1 |= FLL_DIV_8; //ACLK要进行8分频,ACLK=4K
TACCTL2 =CAP+CM_3+CCIS_0+SCS+CCIE; //捕获模式,上升和下降都捕获,选择CCI2A,同步,捕获中断开
//Capture input select: 0 - CCI2A
TACTL = TASSEL_2 + MC_2 ; //SMCLK=8M,L连续计数模式
_EINT(); //开总中断
LPM0;
_NOP();
pwm_wide=pwm_end-pwm_start;
while(1);
}
// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV)
{case 2:break;
case 4:
if(TACCTL2 & CCI)
pwm_start=CCR2;
else
pwm_end=CCR2;
//pwm_wide=pwm_end-pwm_start;
break;
case 10:
break;
}
LPM0_EXIT;
}
┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |