对象:
外部中断检测按钮是否按下?按下就通过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);
}
}