初级会员

- 积分
- 122
- 金钱
- 122
- 注册时间
- 2014-11-15
- 在线时间
- 17 小时
|
1金钱
各位大佬,基于STM32H7+LWIP+FREERTOS进行UDP通信,系统通过UDP以120Hz的频率在定时中断中向外发数,同时在1s一次的任务中对外发数,在接收到串口数据后(1秒8次的不定时数据)也会向外发数,同时UDP每秒还会接收32次每次近1000字节的数据,测试中发现系统在一段时间后HAL_ETH_Transmit函数会返回错误值,由于对UDP了解不多,不知道原因是什么,感觉存在有正在RTOS周期性任务发以太网数的过程中突然定时中断或串口通信中断发以太网数据导致发送函数返回错误值,不知道这种机理准不准确,在未验证的情况下我把中断发送以太网数据的函数进行了改写,新增了一个8ms周期的任务,在任务中根据各需要UDP发送的数的标志来决定本任务周期要不要发送相应数据,改写完后,能正常发送1s的周期数据,但此时一接收以太网数据,整个系统就奔溃了,表现在freertos 1秒周期的闪灯维持在常量或常灭,由于本人对FREERTOS也不太熟悉(freertos包括4个任务,ethernetif_input任务优先级为osPriorityRealtime,1秒周期任务优先级为osPriorityNormal,主要闪灯和给1s周期性发数使能置位,100ms周期任务用于AD采样,优先级为osPriorityLow6,8ms任务用于发送以太网数据,根据各数据使能情况进行发数,每8ms最多发送两帧以太网数据,优先级为osPriorityLow7),想问下大佬,针对这两个问题有没有解决建议
|
|