初级会员
- 积分
- 168
- 金钱
- 168
- 注册时间
- 2020-9-2
- 在线时间
- 41 小时
|
1金钱
我用ucos写串口中断接收数据,刚上电后是可以正常接受数据,但是运行时间一段时间后串口中断就不接收数据,系统中的其他任务还可以正常运行,正常实现任务调度
//串口1接收数据中断服务函数
void USART1_IRQHandler(void)
{
unsigned char r;
OS_ERR err;
CPU_SR_ALLOC();
CPU_CRITICAL_ENTER();
OSIntEnter();
CPU_CRITICAL_EXIT();
if(USART_GetFlagStatus(USART1,USART_IT_RXNE)!=RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); // 清中断标志
r=USART_ReceiveData(USART1);
USART1_RX_BUF[USART1_REC_CNT]=r;
USART1_REC_CNT++;
if(USART1_REC_CNT>(USART1_REC_LEN-1))
{
OSTaskSemPost((OS_TCB *)&Analy_TaskTCB, //目标任务
(OS_OPT )OS_OPT_POST_NONE, //没选项要求
(OS_ERR *)&err);
USART1_REC_CNT=0;
}
}
USART_ClearITPendingBit(USART1,USART_IT_CTS);
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) != RESET) // 检查 ORE 标志
{
USART_ClearFlag(USART1,USART_FLAG_ORE);
USART_ReceiveData(USART1);
}
OSIntExit();
}
我怀疑是不是长时间运行内存溢出了?以为我在一个F103ZET6上运行了一夜就没出现问题
|
|