|
- void USART1_IRQHandler(void)
- {
- u8 data;
-
- OSIntEnter();
- if( USART_GetITStatus( USART1, USART_IT_RXNE ) == SET )
- {
- data = USART_ReceiveData( USART1 );
- OSMboxPost( LedDelay_Box, (void *)(&data));
-
- }
- OSIntExit();
- }
复制代码 上面是串口里面的部分代码。data是个局部变量。
在另一个任务里面,用如下方式进行接收。- void USART_Task( void *pdata )
- {
- u8 *pValue;
- u8 err;
-
- while(1)
- {
- pValue = OSMboxPend(LedDelay_Box, 0, &err);
- LED_Delay = *pValue;
- printf( "%dS\n", 10*LED_Delay);
- }
- }
复制代码 我以为OSMbox传递的是指针变量,但是理论上在中断程序退出后,data的指针应该是没有意义了。
也就是说USART_Task接收到的指针理论上应该是无意义的,但是在本程序中,竟然可以很好的工作?
我发现奋斗的程序中也是这么写的(其实就是学他的)。
这是为什么?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|