共2条
1/1 1 跳转至页
大家帮我看看这段程序有什么问题?
问
#include "MSP430x13x.h"
void main(void)
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1 &= ~XT2OFF; // XT2= HF XTAL
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
BCSCTL2 |= SELM_2+SELS; // MCLK= XT2 (safe)//FLL_CTL0 =XCAP14PF;
TBCTL=TBSSEL_2 |ID_3 |TBCLR;
TBCCR0=18000-1;
//TBCL0=18000-1;
TBCCTL1=OUTMOD_7;
TBCCR1=9000;
//TBCL1=9000;
TBCCTL2=OUTMOD_7;
TBCCR2=9000;
//TBCL2=9000;
P4DIR|=0x06;//4.1 4.2输出正弦波
P4SEL|=0x06;
TBCTL|=MC0;
for (;;); // Do nothing
} 答 1: 求各位大侠帮帮忙。 答 2: #define R_senson BIT2 //P3.3
#define R_ref BIT0 //P2.0
/************************************************************/
unsigned int sample_adc_ref(void) //测试t_off time
{
unsigned int early=0,time=0;
temp_init();
P2DIR |= BIT0; //P2.0输出
//P2OUT &= ~BIT0; //p2.0输出0
//delay(100); //延时1ms(清空电荷)
P2OUT |=BIT0; //开始充电
delay(2000); //充电5ms
P2DIR &= ~BIT0; //P2.0进入高阻态
//CACTL1|=CAON; //开比较器
//delay(100); //等待比较器稳定
TACCTL1|=CCIE + CAP + CM_2 + CCIS_1; //开捕获功能
early=TACCR1=TAR; //初始直
P2OUT&=~BIT0; //ref放电
_BIS_SR(LPM3_bits);
if(x_time<early)time=32768+x_time-early;
time=x_time-early;
P2DIR &= ~BIT0; //P2.0进入高阻态
CACTL1 =0;
x_time=0;
return(time);
}
/*********************************************************/
unsigned int sample_adc_s(void)
{
unsigned int early,time;
temp_init();
P3DIR |= BIT2; //P3.3输出
//P3OUT &= ~BIT2; //p3.3输出0
//delay(100); //延时1ms(清空电荷)
P3OUT |=BIT2; //开始充电
delay(2000); //充电5ms
P3DIR &= ~BIT2; //P3.3进入高阻态
//CACTL1|=CAON; //开比较器
//delay(100); //等待比较器稳定
TACCTL1|=CCIE + CAP + CM_2 + CCIS_1; //开捕获功能
early=TACCR1=TAR; //初始直
P3OUT&=~BIT2; //sen放电
_BIS_SR(LPM3_bits);
if(x_time<early)time=32768+x_time-early;
time=x_time-early;
P3DIR &= ~BIT2; //P3.3进入高阻态
CACTL1=0;
x_time=0;
return(time);
}
/*******************************************************/
void temp_init(void)
{
CACTL1 |= CAON + CARSEL + CAREF_1; //Setup Comparater
CACTL2 |= P2CA0;
}
/**********************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void ISR_TA0(void) //定时器中断//
{
clear_watchdog();
TACCR0 += 32768;
TACCTL0 &=~CCIFG;
date_cal();
flag |= meas_flag;
//_BIC_SR_IRQ(LPM3_bits);
}
/**********************************************************/
#pragma vector=TIMERA1_VECTOR
__interrupt void ISR_T1(void) //捕获中断//
{
if(CCIFG!=0)x_time=TACCR1;
TACCTL1=0;
_BIC_SR_IRQ(LPM3_bits);
}
/**********************************************************/
P2DIR|=BIT0; //定义P2.0为输出
P3DIR|=BIT2; //定义P3.3为输出
P1SEL|=BIT6+BIT7; //定义P1.6和P1.7为外部功能
P1IE = BIT0;
P1IES = BIT0;
P1IFG &= 0;
TACTL =TASSEL_1 + ID_0+TACLR; //Setup Timer_A
TACCR0 = 32768;
TACCTL0=CCIE;
TACTL |=MC_2;
芯片F435
请各位帮忙看看有什么问题,放电时间采集不到,谢谢,急 答 3: 好像没有什么问题吧
跟例程上的差不多吧
只不过p4.2~p4.3输出的是方波吧?
void main(void)
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1 &= ~XT2OFF; // XT2= HF XTAL
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
BCSCTL2 |= SELM_2+SELS; // MCLK= XT2 (safe)//FLL_CTL0 =XCAP14PF;
TBCTL=TBSSEL_2 |ID_3 |TBCLR;
TBCCR0=18000-1;
//TBCL0=18000-1;
TBCCTL1=OUTMOD_7;
TBCCR1=9000;
//TBCL1=9000;
TBCCTL2=OUTMOD_7;
TBCCR2=9000;
//TBCL2=9000;
P4DIR|=0x06;//4.1 4.2输出正弦波
P4SEL|=0x06;
TBCTL|=MC0;
for (;;); // Do nothing
} 答 1: 求各位大侠帮帮忙。 答 2: #define R_senson BIT2 //P3.3
#define R_ref BIT0 //P2.0
/************************************************************/
unsigned int sample_adc_ref(void) //测试t_off time
{
unsigned int early=0,time=0;
temp_init();
P2DIR |= BIT0; //P2.0输出
//P2OUT &= ~BIT0; //p2.0输出0
//delay(100); //延时1ms(清空电荷)
P2OUT |=BIT0; //开始充电
delay(2000); //充电5ms
P2DIR &= ~BIT0; //P2.0进入高阻态
//CACTL1|=CAON; //开比较器
//delay(100); //等待比较器稳定
TACCTL1|=CCIE + CAP + CM_2 + CCIS_1; //开捕获功能
early=TACCR1=TAR; //初始直
P2OUT&=~BIT0; //ref放电
_BIS_SR(LPM3_bits);
if(x_time<early)time=32768+x_time-early;
time=x_time-early;
P2DIR &= ~BIT0; //P2.0进入高阻态
CACTL1 =0;
x_time=0;
return(time);
}
/*********************************************************/
unsigned int sample_adc_s(void)
{
unsigned int early,time;
temp_init();
P3DIR |= BIT2; //P3.3输出
//P3OUT &= ~BIT2; //p3.3输出0
//delay(100); //延时1ms(清空电荷)
P3OUT |=BIT2; //开始充电
delay(2000); //充电5ms
P3DIR &= ~BIT2; //P3.3进入高阻态
//CACTL1|=CAON; //开比较器
//delay(100); //等待比较器稳定
TACCTL1|=CCIE + CAP + CM_2 + CCIS_1; //开捕获功能
early=TACCR1=TAR; //初始直
P3OUT&=~BIT2; //sen放电
_BIS_SR(LPM3_bits);
if(x_time<early)time=32768+x_time-early;
time=x_time-early;
P3DIR &= ~BIT2; //P3.3进入高阻态
CACTL1=0;
x_time=0;
return(time);
}
/*******************************************************/
void temp_init(void)
{
CACTL1 |= CAON + CARSEL + CAREF_1; //Setup Comparater
CACTL2 |= P2CA0;
}
/**********************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void ISR_TA0(void) //定时器中断//
{
clear_watchdog();
TACCR0 += 32768;
TACCTL0 &=~CCIFG;
date_cal();
flag |= meas_flag;
//_BIC_SR_IRQ(LPM3_bits);
}
/**********************************************************/
#pragma vector=TIMERA1_VECTOR
__interrupt void ISR_T1(void) //捕获中断//
{
if(CCIFG!=0)x_time=TACCR1;
TACCTL1=0;
_BIC_SR_IRQ(LPM3_bits);
}
/**********************************************************/
P2DIR|=BIT0; //定义P2.0为输出
P3DIR|=BIT2; //定义P3.3为输出
P1SEL|=BIT6+BIT7; //定义P1.6和P1.7为外部功能
P1IE = BIT0;
P1IES = BIT0;
P1IFG &= 0;
TACTL =TASSEL_1 + ID_0+TACLR; //Setup Timer_A
TACCR0 = 32768;
TACCTL0=CCIE;
TACTL |=MC_2;
芯片F435
请各位帮忙看看有什么问题,放电时间采集不到,谢谢,急 答 3: 好像没有什么问题吧
跟例程上的差不多吧
只不过p4.2~p4.3输出的是方波吧?
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |