|
- 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周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|