예제 #1
0
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);

}
예제 #2
0
/**
  * @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*/
}
예제 #3
0
//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);
    }