STM32
直播中

mintsy

9年用户 1573经验值
擅长:MEMS/传感技术
私信 关注
[问答]

注释掉main函数内一行代码后程序无法启动怎么解决?

主函数如下:
    while (1)    {    /* USER CODE END WHILE */    /* USER CODE BEGIN 3 */        loop_cnt++;        //HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);        if(13 == ((loop_cnt >> 4)   0x0f))            HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);        else if (15 == ((loop_cnt >> 4)   0x0f))            HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);        HAL_IWDG_Refresh( hiwdg);        if(HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_13))        {            HAL_GPIO_WritePin(GPIOD, GPIO_PIN_6, GPIO_PIN_RESET);        }        else        {            HAL_GPIO_WritePin(GPIOD, GPIO_PIN_6, GPIO_PIN_SET);        }        //print_log("w5500 link STA %drn", (Read_W5500_1Byte(PHYCFGR) LINK));        #if 1        if((getPHYCFGR()   0x01) != link_state)        {            link_state = (getPHYCFGR()   0x01);            if((getPHYCFGR()   0x01) == 0)            {                beep_voice(1, 200);                close(2);                S_State[2] = 0;                close(3);                S_State[3] = 0;                close(4);                S_State[4] = 0;                close(5);                S_State[5] = 0;            }            else            {                beep_voice(2, 50);                print_log("w5500 linkrn");            }        }        else if(memcmp(gSystemParam.deviceIp, gSystemParam.gateway, 3) == 0) // check gateway        {            //tmpTciks = g64msticks;            // handle webserver            do_http(0);            //print_log("do_http %lldrn", g64msTicks - tmpTciks);            //tmpTciks = g64msTicks;            // handle NTP services            //ntpServices();            //print_log("ntpServices %lldrn", g64msTicks - tmpTciks);            //tmpTciks = g64msTicks;            netAppServices();            //read_net_app();            //print_log("netAppServices %lldrn", g64msTicks - tmpTciks);        }        // handle uart message, include uart1 uart2 uart3        cmdMachine();        #endif    }在注释掉do_http(0)后程序无法启动,请问是什么问题?
do_http的函数定义如下:
char rx_buf[MAX_URI_SIZE] = {0};void do_http(uint8_t sn){  unsigned short len;  st_http_request *http_request;  memset(rx_buf,0x00,MAX_URI_SIZE);  http_request = (st_http_request*)rx_buf;      // struct of http request    /* http service start */  switch(getSn_SR(sn))  {    case SOCK_INIT:      //listen(sn);      break;    case SOCK_LISTEN:      break;    case SOCK_ESTABLISHED:    //case SOCK_CLOSE_WAIT:      if(getSn_IR(sn)   Sn_IR_CON)      {        setSn_IR(sn, Sn_IR_CON);      }      if ((len = getSn_RX_RSR(sn)) > 0)       {        len = recv(sn, (unsigned char*)http_request, len);         *(((unsigned char*)http_request)+len) = 0;        //proc_http(sn, (unsigned char*)http_request); // request is processed        disconnect(sn);                //printf("SOCK_ESTABLISHED %04xrn", len);      }      break;    case SOCK_CLOSE_WAIT:         if ((len = getSn_RX_RSR(sn)) > 0)      {        //printf("close wait: %drn",len);        len = recv(sn, (unsigned char*)http_request, len);             *(((unsigned char*)http_request)+len) = 0;        //proc_http(sn, (unsigned char*)http_request); // request is processed                //printf("SOCK_CLOSE_WAIT %04xrn", len);      }      disconnect(sn);      break;    case SOCK_CLOSED:            len = gSystemParam.webServerPort[1];            len *= 256;            len += gSystemParam.webServerPort[0];            socket(sn, Sn_MR_TCP, len, 0x00);    /* reinitialize the socket */      break;    default:    break;  }// end of switch}


更多回帖

发帖
×
20
完善资料,
赚取积分