CH32V208W,RTTHRAD+MQTT,運行會卡住
將例程里面ETH中的MQTT拷貝到RTTHREAD例程中,將MQTT中的main函數(shù)作為
RTTHREAD一個任務,啟動運行的話會卡住,只運行到
WCHNET_LibInit Success;
然后就停住了;
后面的PHY Link Success就沒有出來;
是不是庫不對;
有改了RTTHREAD文件夾里面的ld文件,不然編譯提示空間不夠;
MEMORY
{
/*
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
*/
/* CH32V20x_D8 - CH32V203RB
? ?CH32V20x_D8W - CH32V208x
? ?FLASH + RAM supports the following configuration
? ?FLASH-128K + RAM-64K
? ?FLASH-144K + RAM-48K
? ?FLASH-160K + RAM-32K
*/
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 128K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
}
main函數(shù)改為
int mqtt_main(void)
{
? ? u8 i;
? ? Delay_Init();
//? ? USART_Printf_Init(115200);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//USART initialize
? ? printf("MQTT\r\n");
? ? printf("SystemClk:%d\r\n",SystemCoreClock);
? ? printf("net version:%x\n",WCHNET_GetVer());
? ? if( WCHNET_LIB_VER != WCHNET_GetVer() ){
? ? ? ? printf("version error.\n");
? ? }
? ? WCHNET_GetMacAddr(MACAddr);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //get the chip MAC address
? ? printf("mac addr:");
? ? for(i = 0; i < 6; i++)?
? ? ? ? printf("%x ",MACAddr[i]);
? ? printf("\n");
//? ? TIM2_Init();
? ? i = ETH_LibInit(IPAddr,GWIPAddr,IPMask,MACAddr);? ? ? ? ? ? ? ? ? ? ? ? ?//Ethernet library initialize
? ? mStopIfError(i);
? ? if(i == WCHNET_ERR_SUCCESS) printf("WCHNET_LibInit Success\r\n");
? ? Transport_Open();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //open the TCP connection.
? ? while(1)
? ? {
? ? ? ? /*Ethernet library main task function,
? ? ? ? ?* which needs to be called cyclically*/
? ? ? ? WCHNET_MainTask();
? ? ? ? /*Query the Ethernet global interrupt,
? ? ? ? ?* if there is an interrupt, call the global interrupt handler*/
? ? ? ? if(WCHNET_QueryGlobalInt())
? ? ? ? {
? ? ? ? ? ? WCHNET_HandleGlobalInt();
? ? ? ? }
? ? ? ? rt_thread_mdelay(2);
? ? }
}