fishxxx

    1. qinkaiabc 发表于 2014-5-8 18:49 中断函数呢? 你最好先注释,省的网友麻烦再翻数据手册了。、。。。
      我使用ADC12IFG0作为DMA的触发源,每次转换完成都能触发DMA把数据传输到DA的DAC12_0DAT寄存器去,DA是立即能输出的,这样的话应该可以不用中断函数吧?还是说是没写中断函数引起了No source available for "0x4"的问题? 附上带注释的程序 #include void Clk_init(void) { //P1DIR|=BIT0; //P1SEL|=BIT0; while(BAKCTL&LOCKIO)   BAKCTL&=~LOCKIO;                         //使能XT1 P7SEL|=BIT2+BIT3; UCSCTL6&=~(XT1OFF); UCSCTL6&=~XT2OFF;                        //使能XT2 do {   UCSCTL7&=~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);   SFRIFG1&=~OFIFG; }while(SFRIFG1&OFIFG);                    //检查是否清楚失效标志位 UCSCTL6&=~XT2DRIVE0; UCSCTL4|=SELA_0+SELM_5+SELS_5; //ACLK=XT1=32K MCLK=SMCLK=XT2=4M } void Timer_init(void) { TA0CCR0=999;                                 //采样频率4M/1000=4K TA0CCTL1|=OUTMOD_3;                   //输出模式3 置位复位 TA0CCR1=500; TA0CTL=TASSEL_2+MC_1+TACLR;    //TA时钟源SMCLK  增计数模式 } void ADC_init(void) { REFCTL0&=~REFMSTR; P6SEL|=BIT0; ADC12CTL0=ADC12ON+ADC12SHT0_2+ADC12REF2_5V+ADC12REFON;    //打开ADC12     多次采样   采样保持时间16*ADC12CLK  片内产生参考电压2.5v ADC12CTL1=ADC12SSEL_2+ADC12CONSEQ_2+ADC12SHS_1+ADC12SHP;  //采样信号源自timerA    重复当前通道         ADC12时钟源为MCLK ADC12CTL2=ADC12RES_2;                                                                     //12位分辨率转换需要 13个ADC12CLK周期 ADC12MCTL0=ADC12INCH_0+ADC12SREF_1;                                           //通道0     参考电压2.5v ADC12CTL0|=ADC12ENC; } void DAC_init(void) { DAC12_0CTL0=DAC12IR+DAC12SREF_0+DAC12AMP_5+DAC12ENC+DAC12CALON+DAC12OPS; //满程输出Vref(2.5v)使能DAC } void DMA_init(void) { DMACTL0=DMA0TSEL__ADC12IFG;                                                                  //DMA触发源ADC12IFG0 DMA0CTL=DMADT_4+DMADSTINCR_0+DMAEN;                                              //重复单次传输模式 源地址不变  使能 __data16_write_addr((unsigned short)&DMA0SA,(unsigned long)&ADC12MEM0); //源地址 __data16_write_addr((unsigned short)&DMA0DA,(unsigned long)&DAC12_0DAT); //目标地址 DMA0SZ=0x01;                                                                                              //传输数据单位1字 } void main(void) { WDTCTL=WDTPW+WDTHOLD;                   // Stop watchdog timer     Clk_init();     Timer_init();     ADC_init();     DMA_init();     DAC_init(); __bis_SR_register(CPUOFF + GIE);             // Enter LPM0, enable interrupts __no_operation();                                     // For debugger }

最近访客

< 1/1 >

统计信息

已有3人来访过

  • 芯积分:10
  • 好友:--
  • 主题:1
  • 回复:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言