Beispiel #1
0
/**
  * @brief Example main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{
  /* Initialize I/Os in Output Mode for LEDs */
  GPIO_Init(LEDS_PORT, LED1_PIN | LED2_PIN, GPIO_MODE_OUT_PP_LOW_FAST);
	
  /* Initialize I/O in Input Mode with Interrupt for button and joystick */
	/* Button */
  GPIO_Init(BUTTON_PORT, BUTTON_PIN, GPIO_MODE_IN_FL_IT);
  /* Joystick */
  GPIO_Init(JOYSTICK_PORT, JOYSTICK_DOWN_PIN, GPIO_MODE_IN_FL_IT);

  /* Initialize the Interrupt sensitivity for button and joystick */
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_FALL_LOW);
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_LOW);

  /*
    Change the software priority between button and joystick:
    - By hardware the PORTB (joystick) has a higher priority than PORTC (button)
    - We configure the PORTC (button) to have a higher sw priority than PORTB (joystick)
  */
  ITC_SetSoftwarePriority(ITC_IRQ_PORTB, ITC_PRIORITYLEVEL_1); /* joystick */
  ITC_SetSoftwarePriority(ITC_IRQ_PORTC, ITC_PRIORITYLEVEL_2); /* button = higher sw priority */

  enableInterrupts();

  /* LEDs are ON together */
  GPIO_WriteHigh(LEDS_PORT, (LED1_PIN | LED2_PIN));
 
  while (1);
}
Beispiel #2
0
void BPs_IT_enable(char b) {
    if ( b != 0) {
        SET(GPIOD->CR2, GPIO_PIN_7, ENABLE); // BP1
        SET(GPIOE->CR2, GPIO_PIN_7, ENABLE); // BP2
        
        // GPIOD->CR2 |= CONF(GPIO_PIN_7, ENABLE); // BP1
        // GPIOE->CR2 |= CONF(GPIO_PIN_7, ENABLE); // BP2
        
        EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_RISE_ONLY); // BP1
        EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOE, EXTI_SENSITIVITY_RISE_ONLY); // BP2
        
                    // EXTI_SENSITIVITY_FALL_LOW  : Interrupt on Falling edge and Low level
                    // EXTI_SENSITIVITY_RISE_ONLY : Interrupt on Rising edge only
                    // EXTI_SENSITIVITY_FALL_ONLY : Interrupt on Falling edge only
                    // EXTI_SENSITIVITY_RISE_FALL : Interrupt on Rising and Falling edges
        
    }
    else {
        SET(GPIOD->CR2, GPIO_PIN_7, DISABLE); // BP1
        SET(GPIOE->CR2, GPIO_PIN_7, DISABLE); // BP2
    
        // GPIOD->CR2 |= CONF(GPIO_PIN_7, DISABLE); // BP1
        // GPIOE->CR2 |= CONF(GPIO_PIN_7, DISABLE); // BP2
    }
}
Beispiel #3
0
void GPIO_Config_Init(void)
{
    /* Initialize I/Os in Output Mode */
    GPIO_Init(GPIOE, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);    //滤网指示灯
    GPIO_Init(GPIOF, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);    //网络指示灯
    GPIO_Init(GPIOF, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);    //风扇电源
    GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);    //GPRS电源
    GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST);    //电池转12V
    GPIO_Init(GPIOB, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);    //负离子
    GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);    //PM2.5 LED
    GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);    //PM2.5电源
    GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_IN_PU_IT);        //DC输入
    GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_IN_PU_IT);        //霍尔开关
    GPIO_Init(GPIOE, GPIO_PIN_0, GPIO_MODE_IN_PU_NO_IT);        //滤网复位
    GPIO_Init(GPIOE, GPIO_PIN_5, GPIO_MODE_IN_PU_NO_IT);        //触摸开关
  
  
//    BitStatus bit_status;
//    bit_status = GPIO_ReadInputPin(GPIOB, GPIO_PIN_7);    //DC输入
//    if (bit_status == RESET)  //SET or RESET
//    DeviceStatus.FN_Status |= PWOER_MODE;
//    else
//    DeviceStatus.FN_Status &= ~PWOER_MODE;
//
//    bit_status = GPIO_ReadInputPin(GPIOD, GPIO_PIN_0);    //霍尔开关
//    if (bit_status == RESET)  //SET or RESET
//    {
//    FAN_POWER_ON;
//    DeviceStatus.PW_Status |= FAN_POWER;
//    DeviceStatus.DS_Status &= ~CAP_OPEN;
//    }
//    else
//    {
//    FAN_POWER_OFF;
//    DeviceStatus.PW_Status &= ~FAN_POWER;
//    DeviceStatus.DS_Status |= CAP_OPEN;
//    }
//
//    FAN_SPEED_OFF;
//    if(((DeviceStatus.FN_Status & BATTERY_LEVELS) != BATTERY_LEVEL_0) || (DeviceStatus.FN_Status & PWOER_MODE)) //不是低电状态 or DC供电
//    {
//    D12_POWER_ON;
//    NET_POWER_ON;
//    PM_POWER_ON;
//    DeviceStatus.PW_Status |= (D12_POWER | NET_POWER | PM_POWER);
//    }
//    else
//    {
//    DeviceStatus.PW_Status &= ~(D12_POWER | NET_POWER | PM_POWER);
//    }

    D12_POWER_ON;
    NET_POWER_ON;
    PM_POWER_ON;
//    FAN_POWER_ON;
    /* Initialize the Interrupt sensitivity */  
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_RISE_FALL);
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_RISE_FALL);
}
Beispiel #4
0
void EXTI_INIT(void)
{
      EXTI_DeInit();

      EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_RISE_FALL);
      EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_RISE_FALL);

}
void gpio_init(void)
{
  GPIO_Init(GPIOC,GPIO_PIN_3, GPIO_MODE_IN_PU_IT);                              /*GDO0*/
  GPIO_Init(GPIOD,GPIO_PIN_3, GPIO_MODE_IN_PU_IT);                              /*Mode_switch*/
  
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);       /*GDO0 Interrupt*/
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_FALL_ONLY);       /*Mode_switch Interrupt*/
  EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY);
}
Beispiel #6
0
//-----------------------------------------------------------------------
void initTxRx(void)
{
		GPIO_Init(TxRxPort, TX, GPIO_MODE_OUT_PP_LOW_SLOW);
		GPIO_Init(TxRxPort, RX, GPIO_MODE_IN_PU_IT);	//开接收中断
		EXTI_SetExtIntSensitivity(ExtiRxPort, EXTI_SENSITIVITY_RISE_ONLY);
		EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_RISE_ONLY);
}
Beispiel #7
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
void main(void)
{

  /* GPIO Configuration  -----------------------------------------*/
  GPIO_Config();  
  
  /* Initialize the Interrupt sensitivity */
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_FALL_ONLY);
  EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY);
  
  enableInterrupts();

  while (1)
  {
    /* The LED toggles in the interrupt routines */
  }

}
Beispiel #8
0
/**
  * @brief Example  main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{

    /* Initialize SPI for LCD */
    SPI_DeInit();
    SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_128, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_HIGH, SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_1LINE_TX, SPI_NSS_SOFT, 0x07);
    SPI_Cmd(ENABLE);

    
    /* Configure GPIO used to drive the joystick
	      JOYSTICK_UP    --> PB6
	      JOYSTICK_DOWN  --> PB7
	      JOYSTICK_LEFT --> PB4
	*/
  GPIO_Init(GPIOB, GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_7, GPIO_MODE_IN_FL_IT);
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_FALL_LOW);
	
	enableInterrupts();
    
    
    /* Initialize LCD */
    LCD_Init();

    /* Clear LCD lines */
    LCD_Clear();

    LCD_Backlight(ENABLE);

    LCD_PrintString(LCD_LINE1, ENABLE, DISABLE, "Clock Selection");
    LCD_PrintString(LCD_LINE2, ENABLE, DISABLE, " Use joystick");

    CLK_DeInit();
		CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
    /* Output Fcpu on CLK_CCO pin */
    CLK_CCOConfig(CLK_OUTPUT_MASTER);

    while (1)
    {
  
    }

}
Beispiel #9
0
// 初始化GPIO
void system_config_gpio_config(void)
{
    // STM8S105K6 没有PB6 PB7 所以使用 PB2 PB3代替
    GPIO_DeInit(GPIOB);
    GPIO_DeInit(GPIOC);
    GPIO_DeInit(GPIOD);
    // GPIO_DeInit(GPIOE);

    // 中断引脚 没用到中断 只用到了电平判断
    // GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_IN_PU_NO_IT);          
    GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_IN_PU_IT);         // GIO0
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_RISE_ONLY); 

    // EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY);

    GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST); // CE SX1278 - RST
    GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST); // CS
    GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);  // SCK
    GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST); // SDI
    GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);      // SDO

    // 插座状态 和 插座继电器控制
    GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST); // 是否收到信号 状态
    GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST); // 继电器  必须设置为低电平 否则会一上电 继电器就是开的状态
    
    GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_IN_PU_IT);
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_RISE_FALL); // EXTI_SENSITIVITY_RISE_ONLY); 
    // EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_RISE_ONLY);
    
#if 0
    GPIO_DeInit(GPIOB);
    GPIO_DeInit(GPIOC);
    GPIO_DeInit(GPIOD);
    // GPIO_DeInit(GPIOE);

    // 中断引脚 没用到中断 只用到了电平判断
    // GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_IN_PU_NO_IT);          
    GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_IN_PU_IT);         // GIO0
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_RISE_ONLY); 

    // EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY);

    GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST); // CE SX1278 - RST
    GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST); // CS
    GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);  // SCK
    GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST); // SDI
    GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);      // SDO

    // 插座状态 和 插座继电器控制
    GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST); // 是否收到信号 状态
    GPIO_Init(GPIOB, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST); // 继电器  必须设置为低电平 否则会一上电 继电器就是开的状态

    // GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);      // 按键 每按一次 翻转一次
    GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_IN_PU_IT);
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_RISE_FALL); // EXTI_SENSITIVITY_RISE_ONLY); 
    // EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_RISE_ONLY);

    //GPIO_WriteHigh(GPIOB, GPIO_PIN_6);
    //GPIO_WriteLow(GPIOB, GPIO_PIN_6);
    
    GPIO_WriteHigh(GPIOD, GPIO_PIN_0);
    GPIO_WriteLow(GPIOD, GPIO_PIN_0);
    
    GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);      // SDO
    while(1)
    {
        if (GPIO_ReadInputPin( GPIOB, GPIO_PIN_7 ))
        {
            printf("a");
        }           
        else        
        {
            printf("b");
        }
    }
#endif
    
#if 0    
    GPIO_DeInit(GPIOA);
    GPIO_DeInit(GPIOB);
    GPIO_DeInit(GPIOC);    
    GPIO_DeInit(GPIOD);
    GPIO_DeInit(GPIOE);    
    
    GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST); //RESET

    GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);  //SCK    
    GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);      //SDO
    GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST); //SDI
    GPIO_Init(GPIOF, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST); //CS
   
    GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_PU_IT);         //GIO0
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC,EXTI_SENSITIVITY_RISE_ONLY); // Interrupt on Rising edge only
    EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY);
   
    GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST); // 继电器
    GPIO_Init(GPIOD, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST); // 是否收到信号
    GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_IN_PU_NO_IT);      // 按键 每按一次 翻转一次
#endif
}
Beispiel #10
0
/**
  * @brief Validation firmware main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{
    int ButtonIndex =0;
    u8 i =0;
    u8 LedState =1;
    u8 pos =0;
    u8 s[16];

    /* Initialize I/Os in Output Mode for LEDs */
    GPIO_Init(LEDS_PORT, LED1_PIN | LED2_PIN | LED3_PIN | LED4_PIN,GPIO_MODE_OUT_PP_LOW_FAST);

    /* Initialization of I/O in Input Mode with Interrupt for Key button */
    GPIO_Init(BUTTON_PORT, BUTTON_PIN, GPIO_MODE_IN_FL_IT);

    /* Initialization of the Interrupt sensitivity */
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);

    /* Enable general interrupts for Key button reading */
    enableInterrupts();

    /* Initialize SPI */
    SPI_DeInit();
    SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_128, SPI_MODE_MASTER,
             SPI_CLOCKPOLARITY_HIGH, SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_1LINE_TX,
             SPI_NSS_SOFT, 0x07);
    SPI_Cmd(ENABLE);

    /* Initialize LCD */
    LCD_Init();

    /* Clear LCD lines */
    LCD_Clear();

    /* Display "moving" ST logo on first line */
    for (pos = 0x80; pos < 0x88; pos++)
    {
        LCD_Clear();
        LCD_DisplayLogo(pos);
        Delay(20000);
    }

    /* Display "moving" ST logo on second line */
    for (pos = 0x90; pos < 0x98; pos++)
    {
        LCD_Clear();
        LCD_DisplayLogo(pos);
        Delay(20000);
    }

    LCD_Clear();

    /* More than 15 characters: the message is displayed on 2 lines */
    /* LCD_PrintMsg("STM8S - SPI/LCD example"); */

    /* Max 15 characters per line */
    LCD_PrintString(LCD_LINE1, ENABLE, DISABLE, " *** STM8S *** ");
    LCD_PrintString(LCD_LINE2, ENABLE, DISABLE, "SPI-LCD example");

    for (i = 0; i < 10; i++)
    {
        Delay(0xFFFF);
    }

    LCD_Clear();

    LCD_PrintString(LCD_LINE1, ENABLE, DISABLE, "Press KEY...");

    while (1)
    {
        /* Check button status */
        if (GetVar_ButtonPressed() == TRUE) /* Button is pressed */
        {
            ButtonPressed = FALSE;
            LCD_ClearLine(LCD_LINE2);
            LCD_PrintString(LCD_LINE2, DISABLE, DISABLE, "LED #");
						
           /*Use the  sprintf() and LCD_Print() function to print a digit on the LCD */
 					 if (LedState == 0)
            {
                sprintf(s,"%d ", ButtonIndex + 1);
                LCD_Print(s);
								LCD_SetCursorPos(LCD_LINE2, 4); /* 8th position */
                LCD_PrintChar('O');
                LCD_PrintChar('F');
                LCD_PrintChar('F');
            }
						/*Use the LCD_PrintDec1() function to print a digit on the LCD */
            else
            {
                LCD_PrintDec1((u8)(ButtonIndex + 1)); /* Display at current cursor position */
                LCD_SetCursorPos(LCD_LINE2, 4); /* 8th position */ 
								LCD_PrintChar('O');
                LCD_PrintChar('N');
                LCD_PrintChar(' ');
            }
             switch (ButtonIndex)
            {
            case 0:
                GPIO_WriteReverse(LEDS_PORT, LED1_PIN);
                ButtonIndex++;
                break;
            case 1:
                GPIO_WriteReverse(LEDS_PORT, LED2_PIN);
                ButtonIndex++;
                break;
            case 2:
                GPIO_WriteReverse(LEDS_PORT, LED3_PIN);
                ButtonIndex++;
                break;
            default:
            case 3:
                GPIO_WriteReverse(LEDS_PORT, LED4_PIN);
                ButtonIndex = 0;
                LedState ^= 0x01;
                break;
            }
        }
    }

}
Beispiel #11
0
/**
  * @brief Example main entry point.
  * @par Parameters:
  * None
  * @retval
  * None
  */
void main(void)
{

    u8 i = 0;

    /* Initialization of the clock */
    /* Clock divider to HSI/1 */
    CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

    /* Initialization of I/Os in Output Mode */
    GPIO_Init(LEDS_PORT, (LED1_PIN | LED2_PIN | LED3_PIN | LED4_PIN), GPIO_MODE_OUT_PP_LOW_FAST);

    /* Initialization of I/O in Input Mode with Interrupt */
    GPIO_Init(BUTTON_PORT, BUTTON_PIN, GPIO_MODE_IN_FL_IT);

    /* Initialization of the Interrupt sensitivity */
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);

    /* BEEP calibration */

    BEEP_LSICalibrationConfig(LSIMeasurment());

    GPIO_Write(LEDS_PORT, (LED1_PIN | LED2_PIN | LED3_PIN | LED4_PIN)); /* All LEDs ON */

    /* Initialize SPI for LCD */
    SPI_DeInit();
    SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_128, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_HIGH, SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_1LINE_TX, SPI_NSS_SOFT, 0x07);
    SPI_Cmd(ENABLE);

    /* Initialize LCD */
    LCD_Init();

    /* Clear LCD lines */
    LCD_Clear();

    /* Enable general interrupts for Key button reading */
    enableInterrupts();

    LCD_PrintString(LCD_LINE1, ENABLE, DISABLE, "  BEEPER OFF");
    LCD_PrintString(LCD_LINE2, ENABLE, DISABLE, "   Press Key");

    while (1)
    {
        /* Check button status */
        if (ButtonPressed == TRUE) /* Button is pressed */
        {
            ButtonPressed = FALSE;
            /* Change BEEP frequency */
            switch (i)
            {
            case 0:
                BEEP_Cmd(DISABLE);
                Delay(100);
                BEEP_Init(BEEP_FREQUENCY_1KHZ);
                BEEP_Cmd(ENABLE);
                GPIO_Write(LEDS_PORT, LED1_PIN); /* LED1 ON */
                LCD_PrintString(LCD_LINE1, ENABLE, DISABLE, "  BEEPER 1kHz");
                i = 1;
                break;
            case 1:
                BEEP_Cmd(DISABLE);
                Delay(100);
                BEEP_Init(BEEP_FREQUENCY_2KHZ);
                BEEP_Cmd(ENABLE);
                GPIO_Write(LEDS_PORT, LED2_PIN); /* LED2 ON */
                LCD_PrintString(LCD_LINE1, ENABLE, DISABLE, "  BEEPER 2kHz");
                i = 2;
                break;
            case 2:
                BEEP_Cmd(DISABLE);
                Delay(100);
                BEEP_Init(BEEP_FREQUENCY_4KHZ);
                BEEP_Cmd(ENABLE);
                GPIO_Write(LEDS_PORT, LED3_PIN); /* LED3 ON */
                LCD_PrintString(LCD_LINE1, ENABLE, DISABLE, "  BEEPER 4kHz");
                i = 3;
                break;
            case 3:
                BEEP_Cmd(DISABLE);
                GPIO_Write(LEDS_PORT, LED4_PIN); /* LED4 ON */
                LCD_PrintString(LCD_LINE1, ENABLE, DISABLE, "  BEEPER OFF");
                i = 0;
                break;
            default:
                break;
            }
        }

    }

}
Beispiel #12
0
int main( void )
{
  RF24L01_init();
  uint8_t tx_addr[5] = {0x04, 0xAD, 0x45, 0x98, 0x51};
  uint8_t rx_addr[5] = {0x44, 0x88, 0xBA, 0xBE, 0x42};
  RF24L01_setup(tx_addr, rx_addr, 12);
  RF24L01_set_mode_TX();
  
  //IRQ
  GPIO_Init(
    GPIOC,
    GPIO_PIN_2,
    GPIO_MODE_IN_FL_IT
  );
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);
  enableInterrupts();
  
  to_send.op1 = 1;
  to_send.op2 = 1;
  
  while(1) {
      //Prepare the buffer to send from the data_to_send struct
      uint8_t buffer_to_send[32];
      uint8_t i = 0;
      for (i=0; i<32; i++) {
        buffer_to_send[i] = 0;
      }
      *((data_to_send *) &buffer_to_send) = to_send;

      //Send the buffer
      mutex = 0;
      RF24L01_set_mode_TX();
      RF24L01_write_payload(buffer_to_send, 32);

      //Wait for the buffer to be sent
      while(!mutex);
      if (mutex != 1) {
        //The transmission failed
      }
      
      //Wait for the response
      //TODO: implement a timeout if nothing is received after a certain amount of time
      mutex = 0;
      RF24L01_set_mode_RX();
      while(!mutex);
      if (mutex == 1) {
        uint8_t recv_data[32];
        RF24L01_read_payload(recv_data, 32);
        received = *((data_received *) &recv_data);
        
        asm("nop"); //Place a breakpoint here to see memory
      }
      else {
        //Something happened
      }
      
      //Let's vary the data to send
      to_send.op1++;
      to_send.op2 += 2;
  }
}