⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 STM32F RFID通讯源代码(支持双向发送接收)
💻 C
📖 第 1 页 / 共 2 页
字号:
  // WriteReg(0xC5, CTRL_REG2);
  WriteReg(0x55, CTRL_REG2);
  //ReadReg(&val, CTRL_REG2);

  // Set CTRL_REG3
  WriteReg(0x00, CTRL_REG3);
  //ReadReg(&val, CTRL_REG3);

}



/*************************************************************************
 * Function Name: main
 * Parameters: none
 * Return: Int32U
 *
 * Description: The main subroutine
 *
 *************************************************************************/
int main(void)
{

  #ifdef DEBUG
    debug();
  #endif

  // Init clock system
  Clk_Init();

  // LCD init
  LCDInit();
  LCDContrast(0x45);

  LCDClear();
  LCDStr ( 0, "   Welcome to ", 0 );
  LCDStr ( 1, " STM32F103-STK", 0 );
  LCDStr ( 2, "  development ", 0 );
  LCDStr ( 3, "     board    ", 0 );
  LCDStr ( 5, "www.olimex.com", 1 );
  LCDUpdate();

  // Delay :-)
  for(dly=0; dly<5000000; dly++);

label1:

  // Init joystick
  InitJoystick();
  // Draw menue
  UpdateMenu(MenuPos);

  while(1) {
    JoyPos = GetJoystickPosition();

    if(JoyPos==KEY_UP) {
      MenuPos--;
      if((MenuPos<1)) MenuPos = 1;
      UpdateMenu(MenuPos);
      for(dly=0; dly<700000; dly++);
    }

    if(JoyPos==KEY_DOWN) {
      MenuPos++;
      if((MenuPos>9)) MenuPos = 9;
      UpdateMenu(MenuPos);
      for(dly=0; dly<700000; dly++);
    }

    if(JoyPos==KEY_CENTER) break;

  }

  // Test MMC ------------------------------------------------------------------
  if(MenuPos == 1) {
			if (CardIsPresent())
			{
				LCDClear();
      	LCDStr ( 0, " Card present!", 0 );
      	LCDStr ( 1, "   remove it  ", 0 );
				LCDStr ( 2, " and try again", 0 );
				LCDStr ( 5, "exit          ", 0 );
      	LCDUpdate();
				while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
		    goto label1;
			}
			
			LCDClear();
      LCDStr ( 0, "Please put MMC", 0 );
      LCDStr ( 1, "   card now   ", 0 );
			LCDStr ( 2, " with LOCK ON ", 0 );
      LCDUpdate();
			
			while (!CardIsPresent());
			
			while(!CardIsProtected());
			
			LCDClear();
      LCDStr ( 0, "MMC WP test OK", 0 );
			LCDStr ( 1, "  Insert the  ", 0 );
      LCDStr ( 2, "   card now   ", 0 );
			LCDStr ( 3, " with LOCK OFF", 0 );
			LCDStr ( 4, "and press WAKE", 0 );
      LCDUpdate();
			
			while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET);
						
    	test_state = TestMMC();
    	if(test_state == 1) {
      	LCDClear();
      	LCDStr ( 0, " Test MMC card", 0 );
      	LCDStr ( 1, "   SUCCESS!!! ", 0 );
      	LCDStr ( 5, "exit          ", 0 );
      	LCDUpdate();
    	}
    	else if (test_state == 2) {
      	LCDClear();
      	LCDStr ( 0, "  MMC card is ", 0 );
      	LCDStr ( 1, "  protected!!!", 0 );
      	LCDStr ( 5, "exit          ", 0 );
      	LCDUpdate();
    	}
    	else if (test_state == 3) {
      	LCDClear();
      	LCDStr ( 0, "  MMC card  ", 0 );
      	LCDStr ( 1, "not present!!!", 0 );
      	LCDStr ( 5, "exit          ", 0 );
      	LCDUpdate();
    	}
    	else {
      LCDClear();
      LCDStr ( 0, " Test MMC card", 0 );
      LCDStr ( 1, "   FAILED!!!  ", 0 );
      LCDStr ( 5, "exit          ", 0 );
      LCDUpdate();
    }

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
    goto label1;
  }

  // Test Audio ----------------------------------------------------------------
  if(MenuPos == 2) {

    // WAKE UP
    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);


    LCDClear();
    LCDStr ( 0, "  Audio test  ", 0 );
    LCDStr ( 1, "now in STANDBY", 0 );
    LCDStr ( 2, "press WAKE-UP ", 0 );
    LCDStr ( 3, "to hear audio ", 0 );
    LCDStr ( 5, "exit          ", 0 );
    LCDUpdate();

    while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET);
  	LCDClear();
    LCDStr ( 0, "  Audio test  ", 0 );
    LCDStr ( 1, "  now is ON   ", 0 );
    LCDStr ( 2, "              ", 0 );
    LCDStr ( 3, "              ", 0 );
    LCDStr ( 5, "exit          ", 0 );
    LCDUpdate();

    // Set STNBY pin
    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    // Chip on
    GPIO_WriteBit(GPIOC, GPIO_Pin_3, Bit_RESET);

    // Microphone and headphone
    ADCInit();
    InitPWM();

    // Enable interrupts
    __enable_interrupt();

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {

      if((TIM1->SR)&(0x1)) {

        // clear flag
        TIM1->SR &= ~0x1;

        if((jjj++)==3) {

          jjj = 0;

          ADCValue = GetADCChanel(ADC_Channel_1);
          ADCValue>>=2;
          SetDutyPeriod(ADCValue);
        }
      }
    }
    goto label1;
  }

  // Test RTC ------------------------------------------------------------------
  if(MenuPos == 3) {
    RTCInit();

    LCDClear();
    LCDStr ( 0, "   RTC Test   ", 0 );
    LCDStr ( 1, "STAT led have ", 0 );
    LCDStr ( 2, "to blink every", 0 );
    LCDStr ( 3, "    second    ", 0 );
    LCDStr ( 5, "exit          ", 0 );
    LCDUpdate();

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
    // Disable RTC
    RCC_RTCCLKCmd(DISABLE);
    // TURN OFF led
    GPIOC->BSRR |= 0x00001000;
    // restart :-)
    goto label1;
  }


  // Test NRF ------------------------------------------------------------------
  if(MenuPos == 4) {

    LCDClear();
    LCDStr ( 0, "   Test NRF   ", 0 );
    LCDStr ( 1, " press WAKE-UP", 0 );
    LCDStr ( 2, " send/receive ", 0 );
    LCDStr ( 3, "   one byte   ", 0 );
    LCDUpdate();

    while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==Bit_RESET);

        // RESET LCD
    GPIO_WriteBit(GPIOC, GPIO_Pin_10, Bit_SET);

    nRFSetting();

    // B1 as input
    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {
        TestNRF();
    }
    goto label1;
  }

  // Test USB ------------------------------------------------------------------
  if(MenuPos == 5) {

    LCDClear();
    LCDStr ( 0, "   Test USB   ", 0 );
    LCDStr ( 1, "  connect usb ", 0 );
    LCDStr ( 2, "  cable and   ", 0 );
		LCDStr ( 4, "press WAKE-UP ", 0 );
    LCDStr ( 5, "exit          ", 0 );
    LCDUpdate();

    USBSettings();

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {

      if((UsbCoreReq(UsbCoreReqDevState)==UsbDevStatusConfigured)&&(UsbCoreReq(UsbCoreReqDevSusState)==0)) {
        LCDClear();
        LCDStr ( 0, "   Test USB   ", 0 );
        LCDStr ( 1, "  SUCCESS!!!  ", 0 );
        LCDStr ( 5, "exit          ", 0 );
        LCDUpdate();
      }
    }
    goto label1;
  }

  // Test MMA--------------------------------------------------------
  if(MenuPos == 6) {

    InitMMA();

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {

      //*    // whait until data is ready for reading
      //*    val=0;
      //*    while((val&0x01)!=0x01) {
      //*      ReadReg(&val, 0x27);
      //*    }

      // wait new data
      while((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5)) != Bit_SET);

      // X
      value = value_h = value_l = 0;
      ReadReg(&value_l, OUTX_L);
      ReadReg(&value_h, OUTX_H);
      value = (value_h<<8)|value_l;
      sprintf(buff_x, " X: 0x%04x\0", value);

      // Y
      value = value_h = value_l = 0;
      ReadReg(&value_l, OUTY_L);
      ReadReg(&value_h, OUTY_H);
      value = (value_h<<8)|value_l;
      sprintf(buff_y, " Y: 0x%04x\0", value);

      // Z
      value = value_h = value_l = 0;
      ReadReg(&value_l, OUTZ_L);
      ReadReg(&value_h, OUTZ_H);
      value = (value_h<<8)|value_l;
      sprintf(buff_z, " Z: 0x%04x\0", value);

      LCDClear();
      LCDStr ( 0, (unsigned char*)buff_x, 0 );
      LCDStr ( 1, (unsigned char*)buff_y, 0 );
      LCDStr ( 2, (unsigned char*)buff_z, 0 );
      LCDStr ( 5, "exit          ", 0 );
      LCDUpdate();

      for(dly=0; dly<1000000; dly++);
    }
    goto label1;

  }

  // Test Extension Port--------------------------------------------------------
  if(MenuPos == 7) {
    LCDClear();
    LCDStr ( 0, "   Test EXT   ", 0 );
    LCDStr ( 1, " Pls, put EXTs", 0 );
    LCDStr ( 2, " press WAKE-UP", 0 );
    // LCDStr ( 5, "exit          ", 0 );
    LCDUpdate();

    while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==Bit_RESET);

    if(TestEXT()) {
      LCDInit();
      LCDContrast(0x45);
      InitJoystick();

      LCDClear();
      LCDStr ( 0, "   Test EXT   ", 0 );
      LCDStr ( 1, "  SUCCESS!!!  ", 0 );
      LCDStr ( 5, "exit          ", 0 );
      LCDUpdate();
    }
    else {

      LCDInit();
      LCDContrast(0x45);
      InitJoystick();

      LCDClear();
      LCDStr ( 0, "   Test EXT   ", 0 );
      LCDStr ( 1, "   FAILED!!!  ", 0 );
      LCDStr ( 5, "exit          ", 0 );
      LCDUpdate();
    }

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
    goto label1;
  }

	if(MenuPos == 8)
	{
		LCDClear();
    LCDStr ( 0, "   Test UEXT  ", 0 );
    LCDStr ( 1, " Pls, put UEXT", 0 );
    LCDStr ( 2, " press WAKE-UP", 0 );
    // LCDStr ( 5, "exit          ", 0 );
    LCDUpdate();

    while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==Bit_RESET);

    if(TestUEXT()) {
      LCDInit();
      LCDContrast(0x45);
      InitJoystick();

      LCDClear();
      LCDStr ( 0, "   Test UEXT  ", 0 );
      LCDStr ( 1, "  SUCCESS!!!  ", 0 );
      LCDStr ( 5, "exit          ", 0 );
      LCDUpdate();
    }
    else {

      LCDInit();
      LCDContrast(0x45);
      InitJoystick();

      LCDClear();
      LCDStr ( 0, "  Test UEXT   ", 0 );
      LCDStr ( 1, "   FAILED!!!  ", 0 );
      LCDStr ( 5, "exit          ", 0 );
      LCDUpdate();
    }

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET);
    goto label1;
		
	}

  // Test Joystick and Button --------------------------------------------------
  if(MenuPos == 9) {

    while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET) {
      JoyPos = GetJoystickPosition();

      if(JoyPos==KEY_UP) {
        LCDClear();
        LCDStr ( 0, "      UP      ", 0 );
        LCDStr ( 5, "exit          ", 0 );
        LCDUpdate();
      }

      if(JoyPos==KEY_DOWN) {
        LCDClear();
        LCDStr ( 4, "     DOWN     ", 0 );
        LCDStr ( 5, "exit          ", 0 );
        LCDUpdate();
      }

      if(JoyPos==KEY_LEFT) {
        LCDClear();
        LCDStr ( 2, "LEFT          ", 0 );
        LCDStr ( 5, "exit          ", 0 );
        LCDUpdate();
      }

      if(JoyPos==KEY_RIGHT) {
        LCDClear();
        LCDStr ( 2, "         RIGHT", 0 );
        LCDStr ( 5, "exit          ", 0 );
        LCDUpdate();
      }

      if(JoyPos==KEY_CENTER) {
        LCDClear();
        LCDStr ( 2, "    CENTER    ", 0 );
        LCDStr ( 5, "exit          ", 0 );
        LCDUpdate();
      }
    }
    goto label1;
  }
}

/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -