在用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:
请问楼主解决了吗/我也遇到同样的问题了。
TI中文支持网



