小弟最近在看周航慈的那本书:在看其中的数据采样部分
思路很简单:利用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);/* 按照小弟的理解,这里显示的数据应该跟我在中断中采集的数据是一样的,可是这里的数据一直不对,而且一直操持不变 */
}
}
|