新手上路
- 积分
- 35
- 金钱
- 35
- 注册时间
- 2021-9-2
- 在线时间
- 9 小时
|
STM32F407的板子,UCOS版本3.0.3,先后尝试了LWIP1.4.1和2.1.2,结果相同。测试程序:两个主线程做TCP服务端,监听两个不同的端口,各开一个子线程用于发送数据。其中一个子线程每10ms发送一包40*1024字节的数据包到客户端。
客户端程序在电脑上。
实验现象:
在os_cfg.h中#define OS_CFG_ISR_POST_DEFERRED_EN 1u,实验多次,最长不超过10分钟,LWIP卡死在等待某信号量上。卡死后大约2秒,串口信息提示memp_pool已满。
在os_cfg.h中#define OS_CFG_ISR_POST_DEFERRED_EN 0u,实验两小时,程序运行正常,没有卡死。
在os_cfg.h中#define OS_CFG_ISR_POST_DEFERRED_EN 1u,且在ETH中断函数void ETH_IRQHandler(void)中,添加OSIntEnter();和OSIntExit(); 实验半小时,程序运行正常,没有卡死。
请问:
#define OS_CFG_ISR_POST_DEFERRED_EN 1u 开始延迟中断 功能与OSIntEnter();和OSIntExit(); 有何关联?开启延迟中断后,在有系统操作的中断函数中必须使用OSIntEnter();和OSIntExit(); 吗?
谢谢!
|
|