打印
[uCOS/RTOS]

ucos学习之邮箱传递数据

[复制链接]
1064|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuchang890811|  楼主 | 2015-8-17 09:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ucos, TE, TI, Box, mb
小弟最近在看周航慈的那本书:在看其中的数据采样部分
思路很简单:利用ADC采样数据(这部分在ISR中),将采样的数据送到Sample_Task任务中显示出来
问题:我确定在中断中已经采样到数据,可是我利用邮箱将数据传递给任务,却传递不过去,恳请大神指教~~~
中断部分
void TIM2_IRQHandler(void)
{
        __IO uint32_t temp = 0;
        OS_CPU_SR cpu_sr;
        OS_ENTER_CRITICAL();
        OSIntEnter();
        OS_EXIT_CRITICAL();
       
        if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET )
        {       
                temp = (INT32U)ADC1_GetVal() & 0x00000fff;       
                OSMboxPost(My_Mbox,(void *)&temp);       
                printf("XXX=%d\n",temp);/* 从这里可以看到我采集的部分数据是正确的 */
                TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);                   
        }       

        OSIntExit();
}

static void Sample_Task(void *p_arg)
{
        INT8U  err;
        INT32U *tem ;
        INT32U temp;
        (void)p_arg;
       
       
        TIM2_Init();/* 我将采集数据是放在定时器中断部分,每隔10ms采集一次 */
        LCD_Init();
        LCD_Clear(0,0,320,240,BLACK);
       
        while(1)
        {
                OSTimeDly(100);
                tem = (INT32U *)OSMboxPend(My_Mbox,0,&err);
                temp = *tem;
                temp = (*tem) & 0x00000fff;
                printf("%d\n",temp);/* 按照小弟的理解,这里显示的数据应该跟我在中断中采集的数据是一样的,可是这里的数据一直不对,而且一直操持不变 */
        }

}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

87

帖子

0

粉丝