This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3200 在外部中断处理函数中建立tcp链接时,跳出来是什么原因



对象:

外部中断检测按钮是否按下?按下就通过wifi建立tcp链接,发送数据到pc端

问题:

用adc使用过:在检测到adc的值达到一定值可以发送tcp数据

但在外部中断中使用tcp发送数据变进行不下去了,请问这是什么问题?

adc模式:

{
unsigned long adc=0;
if(MAP_ADCFIFOLvlGet(ADC_BASE, uiChannel))
{

ulSample = MAP_ADCFIFORead(ADC_BASE, uiChannel);
adc=((ulSample>>2)& 0x0FFF);
UART_PRINT("\n\rVoltage is %d\n\r",adc);
if( adc>3500 )
{
lRetVal=BsdTcpClient(PORT_NUM);
if(lRetVal<0)
{
sl_Stop(SL_STOP_TIMEOUT);
lRetVal = sl_Start(0, 0, 0);
lRetVal = WlanConnect();
}
}

}
}

外部中断模式:

void GPIO14_handle(void) {
int i;
//获取经过屏蔽的中断状态
i = GPIOIntStatus(GPIOA2_BASE,true);
//判断是不是GPIO触发的中断
if(i&GPIO_INT_PIN_6) {
g_cBsdBuf[0] = (char)(0);
Report("\t\t ********************pin15*****************************\n\r");
lRetVal=BsdTcpClient(PORT_NUM);
if(lRetVal<0)
{
sl_Stop(SL_STOP_TIMEOUT);
lRetVal = sl_Start(0, 0, 0);
lRetVal = WlanConnect();
}

GPIOIntClear(GPIOA2_BASE,GPIO_INT_PIN_6);

}
if(i&GPIO_INT_PIN_0) {
Report("\t\t ********************pin7*****************************\n\r");
//清除中断标志位
GPIOIntClear(GPIOA2_BASE,GPIO_INT_PIN_0);
}
if(i&GPIO_INT_PIN_1) {
Report("\t\t ********************pin8*****************************\n\r");
//清除中断标志位
GPIOIntClear(GPIOA2_BASE,GPIO_INT_PIN_1);
}
}