在用CCS6.1仿真MSP430F6733的SD24_B的功能时,总是出现No source available for "0x4" 的错误,然后仿真就跑不了了。
在出现错误之前,24bit AD转换出来的结果都是对的。
无论是用我自己的程序还是TI给的例程,都有这种错误出现。
请问是什么原因呢?是软件,还是CCS仿真设置,还是硬件上的问题啊?
下面贴上我的SD24_B的代码
void initSD24_B(void) { SD24BCTL0 = SD24DIV0 | SD24PDIV1 | SD24SSEL_1; // Select external REF, SMCLK as SD24_B Clock Source SD24BCCTL0 = SD24ALGN | SD24SCS_4; // Continue Conversion, Left-aligned, Group 0 SD24BCCTL1 = SD24ALGN | SD24SCS_4; // Continue Conversion, Left-aligned, Group 0 SD24BCCTL2 = SD24ALGN | SD24SCS_4; // Continue Conversion, Left-aligned, Group 0 SD24BIE = SD24IE2; // Enable channel 2 interrupt START_SD24_B // Set bit to start conversion } unsigned int g_SD24_B0Results[SD24_B_SIZE]; unsigned int g_SD24_B1Results[SD24_B_SIZE]; unsigned int g_SD24_B2Results[SD24_B_SIZE]; unsigned int g_SD24_BIndex = 0; volatile int g_SD24_BFlag; int getSD24_BFlag(void) { return g_SD24_BFlag; } void setSD24_BFlag(int flag){ g_SD24_BFlag = flag; } unsigned int * getSD24_B0Result(void) { return &g_SD24_B0Results[0]; } unsigned int * getSD24_B1Result(void){ return &g_SD24_B1Results[0]; } unsigned int * getSD24_B2Result(void) { return &g_SD24_B2Results[0]; } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=SD24B_VECTOR __interrupt void SD24BISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(SD24B_VECTOR))) SD24BISR (void) #else #error Compiler not supported! #endif { unsigned int result;switch (SD24BIV){case SD24BIV_SD24OVIFG:// SD24MEM Overflowbreak;case SD24BIV_SD24TRGIFG:// SD24 Trigger IFGbreak;case SD24BIV_SD24IFG0:// SD24MEM0 IFGbreak;case SD24BIV_SD24IFG1:// SD24MEM1 IFGbreak;case SD24BIV_SD24IFG2:// SD24MEM2 IFG if((g_SD24_BIndex) >= SD24_B_SIZE) { g_SD24_BIndex = 0; g_SD24_BFlag = SD24_B_FLAG_FINISH; __bic_SR_register_on_exit(LPM0_bits | GIE); } if(g_SD24_BFlag == SD24_B_FLAG_EXCUTE) { g_SD24_B0Results[g_SD24_BIndex] = SD24BMEMH0; // Save CH0 results (clears IFG) g_SD24_B1Results[g_SD24_BIndex] = SD24BMEMH1; // Save CH1 results (clears IFG) g_SD24_B2Results[g_SD24_BIndex] = SD24BMEMH2; // Save CH2 results (clears IFG) g_SD24_BIndex++; } else { result = SD24BMEMH0; result = SD24BMEMH0; result = SD24BMEMH0; }break;}SD24BIFG = 0; }
Hardy Hu:
你好:
仅用例程会有问题没有?
你是指仿真到哪个位置时出的错?从你给的信息上看,很像开了中断,被触发后没有中断服务函数。
Jianyang Qin:
回复 Hardy Hu:
仅用例程也会出错。也是一样的No source available的错误,但有时候不是0x4,而是0x4000或者其他的数值
SD24_B的中断服务函数我上面应该写了吧,SD24_B中断是进了,有几分钟的时间是可以正常工作的
灰小子:
回复 Jianyang Qin:
好奇怪,为啥是0x4这个地址?看看哪里用到这个地址?
rujun chen:
请问楼主解决了吗/我也遇到同样的问题了。