|
楼主 |
发表于 2016-1-8 19:34:11
|
显示全部楼层
请问二值信号量为什么不能给出呢?
以下的代码测试发现GPIO_Pin_8没有反转,说明xHigherPriorityTaskWoken一直为pdFALSE
- void USART2_IRQHandler(void)
- {
- if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET)
- {
- xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );
- if( xHigherPriorityTaskWoken != pdFALSE )
- {
- GPIOF->ODR ^= GPIO_Pin_8;
- }
- }
- }
复制代码 以下代码有电平反转,说明xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken )被执行了,但是为什么给出信号量没有成功呢?- void USART2_IRQHandler(void)
- {
- if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET)
- {
- GPIOF->ODR ^= GPIO_Pin_8;
- xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );
- if( xHigherPriorityTaskWoken != pdFALSE )
- {
-
- }
- }
- }
复制代码 |
|