OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4376|回复: 2

OSTaskResume唤醒任务后再也不能进入中断了,请教各位大神是什么回事

[复制链接]

4

主题

12

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2014-4-3
在线时间
0 小时
发表于 2015-1-14 16:18:26 | 显示全部楼层 |阅读模式
5金钱
我一个任务阻塞等待唤醒,在DecapPackage();函数里加有打印语句进行延迟
void App_Task_DECAP(void* pdata)
{
INT8U err;
sem=OSSemCreate(0);
    for (;;)
    {
    //OSSemPend(sem,0,&err);
    OSTaskSuspend(APP_TASK_DECAP_PRIO);
FrameFlag |= STATUS_BUSY;
DecapPackage();
/*处理完成*/
FrameFlag &= ~STATUS_BUSY;
    }
}
在UART 中断里面唤醒该任务后就再也不能触发中断了,如果该任务没有加打印语句(即延迟),可以正常操作,如下为中断处理函数
void DMA1_Channel2_3_IRQHandler(void)
{
static uint8_t PartArea = 0;
OSIntEnter();
LED1_OPEN();
if(DMA_GetFlagStatus(DMA1_FLAG_TC3) != RESET) //检测DMA1TC1标志    
{  
DMA_ClearFlag(DMA1_FLAG_TC3); //清除DMA TC3标志 
/*已验证完引导码*/
if(FrameFlag & STATUS_RECEIVE)
{
if(DMARxBufsize == 1)
{
PartArea = GetUnionPartRxStatus();
DMARxBufsize = (USART_RX_Buffer[0]); /*modify*/
BufferRxUnion.BufferUnion[PartArea * FRAMELENGTH] = 0x55;
BufferRxUnion.BufferUnion[PartArea * FRAMELENGTH + 1] = 0xaa;
BufferRxUnion.BufferUnion[PartArea * FRAMELENGTH + 2] = USART_RX_Buffer[0];
}
else
{
/*临界区资源*/
memcpy((uint8_t *)&(BufferRxUnion.BufferUnion[PartArea * FRAMELENGTH + 3]),USART_RX_Buffer,DMARxBufsize);
SetUnionPartRxStatus(PartArea,1);
//DMATxBufsize = DMARxBufsize;
//DMA1CH2_BufSizeReload(DMATxBufsize);
FrameFlag &= ~STATUS_RECEIVE;
//FrameFlag |= STATUS_BUSY;
#ifndef   OS_uCOS_II_H
CmdCtrl = DISPOSE;
#else
/*唤醒*/
OSTaskResume(APP_TASK_DECAP_PRIO);
#endif
DMARxBufsize = 1;
PartArea = 0;
}
}
/*校验引导码*/
else
{
switch(LeadHeadFlag)
{
case HeadFist:
if(USART_RX_Buffer[0] == 0x55)
{
LeadHeadFlag = HeadSecond;
DMARxBufsize = 1;
}
break;
case HeadSecond:
if(USART_RX_Buffer[0] == 0xaa)
{
LeadHeadFlag = HeadFist;
FrameFlag |= STATUS_RECEIVE;
DMARxBufsize = 1;
}
break;
}
}
DMA1CH3_BufSizeReload(DMARxBufsize);
}
else if(DMA_GetFlagStatus(DMA1_FLAG_TC2) != RESET)
{
DMA_ClearFlag(DMA1_FLAG_TC2);
FrameFlag &= ~STATUS_TRANSMIT;
}
LED1_CLOSE();
OSIntExit();
}
请教各位大神是怎么回事

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

12

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2014-4-3
在线时间
0 小时
 楼主| 发表于 2015-1-14 16:58:08 | 显示全部楼层
原子哥,各位大神们?怎么回事请问
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-14 23:03:11 | 显示全部楼层
帮顶.....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-27 01:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表