CH32V208W,RTTHRAD+MQTT,运行会卡住
将例程里面ETH中的MQTT拷贝到RTTHREAD例程中,将MQTT中的main函数作为
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函数改为
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);
? ? }
}