INTERRUPT void USART1_RX_IRQHandler(void) { #endif //GPIO_HIGH(LED3_PORT, LED3_PIN); /* Read one byte from the receive data register and send it back */ if (USART_GetFlagStatus(USART1, USART_FLAG_OR) != RESET){ Interrupt_USART1_ReceiveData_ptr_fuc(USART1->DR); }else{ Interrupt_USART1_ReceiveData_ptr_fuc(USART_ReceiveData8(USART1)); } //USART_ClearITPendingBit(USART1, USART_IT_RXNE); //GPIO_LOW(LED3_PORT, LED3_PIN); }
/** * @brief Main program. * @param None * @retval None */ void main(void) { #ifdef USART_IrDA_TRANSMIT JOYState_TypeDef Key = (JOYState_TypeDef)0; #else /* USART_IrDA_RECEIVE */ uint8_t ReceivedData = 0; #endif /*USART_IrDA_TRANSMIT*/ /* USART configuration -------------------------------------------*/ USART_Config(); #ifdef USART_IrDA_TRANSMIT while (1) { /* Read Key */ while (Key == JOY_NONE) { Key = ReadJoystick(); } switch (Key) { case JOY_UP: USART_SendData8(EVAL_COM1, JOY_UP); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; case JOY_DOWN: USART_SendData8(EVAL_COM1, JOY_DOWN); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; case JOY_LEFT: USART_SendData8(EVAL_COM1, JOY_LEFT); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; case JOY_RIGHT: USART_SendData8(EVAL_COM1, JOY_RIGHT); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; case JOY_SEL: USART_SendData8(EVAL_COM1, JOY_SEL); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; default: break; } } #else /* USART_IrDA_RECEIVE */ /* Initialize I/Os in Output Mode for LEDs */ STM_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); /* Turn on LEDs */ STM_EVAL_LEDOn(LED1); STM_EVAL_LEDOn(LED2); STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOn(LED4); while (1) { /* Wait until a byte is received */ while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_RXNE) == RESET) {} /* Read the received byte */ ReceivedData = USART_ReceiveData8(EVAL_COM1); switch (ReceivedData) { /* LED4 toggle */ case JOY_UP: STM_EVAL_LEDToggle(LED4); break; /* LED3 toggle */ case JOY_DOWN: STM_EVAL_LEDToggle(LED3); break; /* LED2 toggle */ case JOY_LEFT: STM_EVAL_LEDToggle(LED2); break; /* LED1 toggle */ case JOY_RIGHT: STM_EVAL_LEDToggle(LED1); break; case JOY_SEL: STM_EVAL_LEDToggle(LED1); STM_EVAL_LEDToggle(LED2); STM_EVAL_LEDToggle(LED3); STM_EVAL_LEDToggle(LED4); break; default: break; } } #endif /*USART_IrDA_TRANSMIT*/ }
//struct timer timeout; extern unsigned char uarttimeout; PROCESS_NAME(zigbee_comunication); INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28) { /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ static unsigned char state = 1; DISABLE_INTERRUPTS(); ENERGEST_ON(ENERGEST_TYPE_IRQ); USART_ClearITPendingBit(USART1,USART_IT_RXNE); #if 0 uarttimeout = 0; stUartRcv.buf[stUartRcv.index ++] = USART_ReceiveData8(USART1); if(stUartRcv.index == 1) { //timer_set(&timeout,CLOCK_SECOND / CLOCK_SECOND); uarttimeout = 0; } else { if(uarttimeout > CLOCK_SECOND / 100) //if(timer_expired(&timeout)) { stUartRcv.len = stUartRcv.index; stUartRcv.index = 0; process_post(&zigbee_comunication, PROCESS_EVENT_MSG, &stUartRcv); }