我的一个信号通道产生两路交替的信号,这两个信号交替通过flag控制产生,但是不重叠,用ADC12采集,串口发送,可是串口没有反应。。一路信号试验的话出来了,现在两路这样写,用串口调试助手,完全没有反应,有没有用过430的前辈指点一二?
#include <msp430x14x.h>
#define uint unsigned int
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
uint high81,low81,high82,low82,flag;//high81,low81,high82,low82//分别存第一路第二路的高低八位
//两路信号由同一个通道产生,由flag控制哪路信号发射,交替发射不重叠
//同一个AD采集
	void int1()
{
  flag=1;
  delay_ms(10); //产生第一路信号,第二路信号不产生
}
	void int2()
{
  flag=2;
  delay_ms(10); //产生第二路信号,第一路信号不产生
}
void int_adc()
{
  P6SEL |= BIT1;                            // P6.1,使能AD转换通道A0
  ADC12CTL0 = ADC12ON+SHT0_8+MSC;           // 启动ADC12, 设置采样时间
  ADC12CTL1 = SHP+CONSEQ_2;                 // 应用采样定时器
  ADC12MCTL0=SREF_0;                        //参考3.3V
  ADC12IE = 0x01;                           // 使能AD中断
  ADC12CTL0 |= ENC;                         // 使能AD转换
  //ADC12CTL0 |= ADC12SC;                     // 开始AD转换 
}
	#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
     //ADC_CH0 = ADC12MEM0;           // 存储转换结果
      // ah=ADC12MEM0>>8;  
  if(flag==1)
  {
       low81=((ADC12MEM0<<8)>>8);
       high81=ADC12MEM0>>8; 
  }
  else if(flag==2)
    {
       low82=((ADC12MEM0<<8)>>8);
       high82=ADC12MEM0>>8; 
  }
}
	void int_usart()
{
   
  UCTL0 |= SWRST;
  UTCTL0 = SSEL0;                   // UCLK = ACLK,选择时钟来源
  UBR00 = 0x03;                     // 32k/9600 - 3.41 波特率寄存器低字节
  UBR10 = 0x00;                    // 32k/9600 波特率寄存器高字节,波特率9600,波特率手册上有相应设置
  UMCTL0 = 0x4A;                  // Modulation,由于波特率计算有余数,填写波特率调整寄存器
  UCTL0 &= ~SWRST;                // 初始化UART状态机
  UCTL0 |= CHAR;                 // 数据格式为8位数据
  ME1 |= UTXE0 + URXE0;         // 使能USART0的发送TXD和接受RXD
  IE1 |= URXIE0;               // 使能USART0的接收中断,让串口接收到数据后能产生中断 
  P3SEL |= BIT4;
  P3SEL |= BIT5;               //P3.4  P3.5扩展功能和方向
  P3DIR |= BIT4;
  
}
int main(void)
{
    WDTCTL = WDTPW + WDTHOLD;
    int_adc();
    int_usart();
    _EINT();
    ADC12CTL0 |= ADC12SC;                     // 开始AD转换 
   
   while(1)
    { 
      
      if(flag==1)
      {
      while (!(IFG1 & UTXIFG0) );  
      TXBUF0='a';
      while (!(IFG1 & UTXIFG0) );
      TXBUF0=low81;
      while (!(IFG1 & UTXIFG0) );
      TXBUF0=high81;
     }
      else if(flag==2)
   {
      while (!(IFG1 & UTXIFG0) )
      TXBUF0='b';
      while (!(IFG1 & UTXIFG0) )
      TXBUF0=low82;
      while (!(IFG1 & UTXIFG0) )
      TXBUF0=high82;
   
    }
    int1();
    int2();
   }
}

 
					
				
 
			
			
			
						
			 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

