CH32V208W,RTTHRAD+MQTT,运行会卡住

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);


? ? }

}


您好,移植拷贝的时候,注意涉及到的中断函数的声明方式要改成软件压栈的声明方式,此外要注意添加对应的路径。若方便,可将你的例程发至我的邮箱(lzs@wch.cn)具体看一下


只有登录才能回复,可以选择微信账号登录