This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

RTX and network problem

Hello,

Here is my program which sends a UDP package each 100us(micro-second).

int32_t socket;
uint8_t *sendbuf;
 
 
void Time3(void){
TIM_TimeBaseInitTypeDef TimeStruct; 
NVIC_InitTypeDef nvicStructure;
	
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
nvicStructure.NVIC_IRQChannel = TIM3_IRQn;
nvicStructure.NVIC_IRQChannelPreemptionPriority =1;
nvicStructure.NVIC_IRQChannelSubPriority = 0;
nvicStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvicStructure);		
	
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TimeStruct.TIM_Prescaler=35;
TimeStruct.TIM_Period=200;  ///200=100us
TimeStruct.TIM_ClockDivision=TIM_CKD_DIV1;	
TimeStruct.TIM_CounterMode=	TIM_CounterMode_Up ;
TIM_TimeBaseInit(TIM3, &TimeStruct);
TIM_Cmd(TIM3, ENABLE);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
}
 
/*###########################################
##############Main Function##################
###########################################*/ 
 

void job3 (void const *argument)  {          

netInitialize();
}

osThreadDef(job3, osPriorityAboveNormal, 1, 0);


void SetSCK(){	
			
			socket = netUDP_GetSocket(udp_cb_func);
			if (socket >= 0) 
			{
					netUDP_Open(socket,0);
					netUDP_SetOption (socket, netUDP_OptionTTL, 20);
			}
}
 
 
int main (void){
	CLOCK();
	GPIO_SetBits(GPIOA,GPIO_Pin_5);
	LongDelay();

osKernelInitialize (); 
osThreadCreate (osThread(job3),NULL);
osKernelStart (); 

	LongDelay();
	Time3();
	GPIO_ResetBits(GPIOA,GPIO_Pin_5);
 
	do {
  	osDelay(500U);
  	netIF_GetOption(NET_IF_CLASS_ETH | 0, netIF_OptionIP4_Address, (uint8_t *)&addr, sizeof (addr));
	} while (addr == 0U);
 
 
 
	SetSCK();
 
	while (1) 
 
	{
		
		if(Alarm==1)
		{
			Alarm=0;
			Ethers();
		}
		

 
	}
}
 
void Ethers(void){
			NET_ADDR addrUDP={ NET_ADDR_IP4, 5022, 192, 168,1,10};
			if(socket>=0){
			CheckAlarm=0;
			Data();
			sendbuf =  netUDP_GetBuffer (Ether.Size);
			memcpy (sendbuf, MSG, Ether.Size);
			State=netUDP_Send (socket,&addrUDP,sendbuf,Ether.Size);	
}
void TIM3_IRQHandler(){
	
	CheckAlarm=CheckAlarm+1;
	Alarm=1;
	TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}

My program hangs after some seconds before using a thread for "netInitialize();" function. After adding a new thread for netInitialize() (Job3) it shows me this error

OS_ERROR_TIMER_OVF:

I need to know how to solve this problem.

----------

As I checked the fault reposrts windows debault fault shows me Halted flag is on.

Parents Reply Children
No data