Ejemplo n.º 1
0
int main(void)
{

	SystemInit();

	STM32F4_Discovery_LEDInit(LED3); //Orange
	STM32F4_Discovery_LEDInit(LED4); //Green
	STM32F4_Discovery_LEDInit(LED5); //Red
	STM32F4_Discovery_LEDInit(LED6); //Blue

	STM32F4_Discovery_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);

	USBD_Init(&USB_OTG_dev,USB_OTG_FS_CORE_ID,&USR_desc,&USBD_CDC_cb,&USR_cb);

	while (1){

		if(usb_cdc_kbhit()){
			char c, buffer_out[15];
			c = usb_cdc_getc();
			switch(c){
				case '3':
					STM32F4_Discovery_LEDToggle(LED3);
					sprintf(buffer_out,"LED%c = %u\r\n",c,GPIO_ReadInputDataBit(GPIOD,LED3_PIN));
					usb_cdc_printf(buffer_out);
					break;
				case '4':
					STM32F4_Discovery_LEDToggle(LED4);
					sprintf(buffer_out,"LED%c = %u\r\n",c,GPIO_ReadInputDataBit(GPIOD,LED4_PIN));
					usb_cdc_printf(buffer_out);
					break;
				case '5':
					STM32F4_Discovery_LEDToggle(LED5);
					sprintf(buffer_out,"LED%c = %u\r\n",c,GPIO_ReadInputDataBit(GPIOD,LED5_PIN));
					usb_cdc_printf(buffer_out);
					break;
				case '6':
					STM32F4_Discovery_LEDToggle(LED6);
					sprintf(buffer_out,"LED%c = %u\r\n",c,GPIO_ReadInputDataBit(GPIOD,LED6_PIN));
					usb_cdc_printf(buffer_out);
					break;
			}
		}

		button_sts = STM32F4_Discovery_PBGetState(BUTTON_USER);

		if(button_sts){
			STM32F4_Discovery_LEDOff(LED3);
			STM32F4_Discovery_LEDOff(LED5);
			STM32F4_Discovery_LEDOff(LED3);
			STM32F4_Discovery_LEDOff(LED5);
		}
	}
}
Ejemplo n.º 2
0
//==============================================================================
//	descri:   Função para o timer do STEP dos MOTORES
// USER EDIT - Mudar o nome do IRQ se o TIMER for alterado 
void TIM3_IRQHandler(void)
{
    // Channel 1 -  MOTOR 1
    if ((STPDRV_TIM->SR & TIM_IT_CC1) && (STPDRV_TIM->DIER & TIM_IT_CC1)) {
        STPDRV_TIM->CCR1 += Motors[0].CurDelay;
        if (MOTOR1_STEP_PORT->IDR & MOTOR1_STEP_PIN) {
            //MOTOR1_STEP_PORT->BSRRH = MOTOR1_STEP_PIN;
            MOTOR1_STEP_PORT->BRR = MOTOR1_STEP_PIN;
#ifdef __STM32F4_DISCOVERY_H
            STM32F4_Discovery_LEDOff(LED3);
#endif			
        } else {
            //MOTOR1_STEP_PORT->BSRRL = MOTOR1_STEP_PIN;
            MOTOR1_STEP_PORT->BSRR = MOTOR1_STEP_PIN;
#ifdef __STM32F4_DISCOVERY_H
            STM32F4_Discovery_LEDOn(LED3);
#endif			
            if (Motors[0].Dir == dir_CW)
                Motors[0].Pos++;
            else
                Motors[0].Pos--;
        }
        STPDRV_TIM->SR = ~TIM_IT_CC1;
    }

    // Channel 2 -  MOTOR 2
    if ((STPDRV_TIM->SR & TIM_IT_CC2) && (STPDRV_TIM->DIER & TIM_IT_CC2)) {
        STPDRV_TIM->CCR2 += Motors[1].CurDelay;
        if (MOTOR2_STEP_PORT->IDR & MOTOR2_STEP_PIN) {
            //MOTOR2_STEP_PORT->BSRRH = MOTOR2_STEP_PIN;
            MOTOR2_STEP_PORT->BRR = MOTOR1_STEP_PIN;
        } else {
            //MOTOR2_STEP_PORT->BSRRL = MOTOR2_STEP_PIN;
            MOTOR2_STEP_PORT->BSRR = MOTOR2_STEP_PIN;
            if (Motors[1].Dir == dir_CW)
                Motors[1].Pos++;
            else
                Motors[1].Pos--;
        }
        STPDRV_TIM->SR = ~TIM_IT_CC2;
    }

    // Channel 3 -  MOTOR 1 ACELL / DECCEL
    if ((STPDRV_TIM->SR & TIM_IT_CC3) && (STPDRV_TIM->DIER & TIM_IT_CC3)) {
        STPDRV_TIM->CCR3 += Motors[0].RampDelay;
        __OnRampTimer(0);
        STPDRV_TIM->SR = ~TIM_IT_CC3;
    }

    // Channel 4 -  MOTOR 2 ACELL / DECCEL
    if ((STPDRV_TIM->SR & TIM_IT_CC4) && (STPDRV_TIM->DIER & TIM_IT_CC4)) {
        STPDRV_TIM->CCR4 += Motors[1].RampDelay;
        __OnRampTimer(1);
        STPDRV_TIM->SR = ~TIM_IT_CC4;
    }
}
void TIM3_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET)
	{
		TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
		if(PulseGeneratorData[0].set)
		{
			//Set pin to reset state
			if(!PulseGeneratorData[0].polarity)
				GPIOA->BSRRH |= 1 << 6;
			else
				GPIOA->BSRRL |= 1 << 6;
			STM32F4_Discovery_LEDOff(LED3);
		}
		PulseGeneratorData[0].set = false;
	}
	else if(TIM_GetITStatus(TIM3, TIM_IT_CC2) != RESET)
	{
		TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);
		if(PulseGeneratorData[1].set)
		{
			//Set pin to reset state
			if(!PulseGeneratorData[1].polarity)
				GPIOA->BSRRH |= 1 << 7;
			else
				GPIOA->BSRRL |= 1 << 7;
		}
		PulseGeneratorData[1].set = false;
	}
	else if(TIM_GetITStatus(TIM3, TIM_IT_CC3) != RESET)
	{
		TIM_ClearITPendingBit(TIM3, TIM_IT_CC3);
		if(PulseGeneratorData[2].set)
		{
			//Set pin to reset state
			if(!PulseGeneratorData[2].polarity)
				GPIOB->BSRRH |= 1 << 0;
			else
				GPIOB->BSRRL |= 1 << 0;
		}
		PulseGeneratorData[2].set = false;
	}
	else if(TIM_GetITStatus(TIM3, TIM_IT_CC4) != RESET)
	{
		TIM_ClearITPendingBit(TIM3, TIM_IT_CC4);
	}
}
Ejemplo n.º 4
0
int main(void)
{
  STM32F4_Discovery_LEDInit(LED3);
  STM32F4_Discovery_LEDInit(LED4);
  STM32F4_Discovery_LEDInit(LED5);
  STM32F4_Discovery_LEDInit(LED6);
  STM32F4_Discovery_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);
  STM32F4_Discovery_LEDOn(LED3);
  Delay(0xFFFF);
  STM32F4_Discovery_LEDOff(LED3);

  USBD_Init(&USB_OTG_dev,
#ifdef USE_USB_OTG_HS
  USB_OTG_HS_CORE_ID,
#else
  USB_OTG_FS_CORE_ID,
#endif
  &USR_desc,
  &USBD_HID_cb,
  &USR_cb);


  Init_ADC_Reading();
  int x=0;
  while (1)
  {
	  Delay(0xFF);
	  if (OutBuffer[1]%2==1)
	  {
		  switch(x)
		  {
		  case 1:
			  STM32F4_Discovery_LEDOn(LED3);
			  break;
		  case 999999:
			  STM32F4_Discovery_LEDOff(LED3);
			  STM32F4_Discovery_LEDOn(LED4);
			  break;
		  case 2*999999:
			  STM32F4_Discovery_LEDOff(LED4);
			  STM32F4_Discovery_LEDOn(LED5);
			  break;
		  case 3*999999:
			  STM32F4_Discovery_LEDOff(LED5);
			  STM32F4_Discovery_LEDOn(LED6);
			  break;
		  case 4*999999:
			  STM32F4_Discovery_LEDOff(LED6);
		       x=0;
		  }
		  x++;
	  }
	  else
	  {
		  if (OutBuffer[0]%5==1)  	STM32F4_Discovery_LEDOn(LED3);
			  	  else			STM32F4_Discovery_LEDOff(LED3);
		  if (OutBuffer[0]%5==2)  	STM32F4_Discovery_LEDOn(LED4);
			  	  else			STM32F4_Discovery_LEDOff(LED4);
		  if (OutBuffer[0]%5==3)  	STM32F4_Discovery_LEDOn(LED5);
			  	  else			STM32F4_Discovery_LEDOff(LED5);
		  if (OutBuffer[0]%5==4)  	STM32F4_Discovery_LEDOn(LED6);
			  	  else			STM32F4_Discovery_LEDOff(LED6);
	  }

  }
}
Ejemplo n.º 5
0
int main(void)
{


	SystemInit();
	SystemCoreClockUpdate(); // inicjalizacja dystrybucji czasu procesora

	/* Enable the SPI periph */
	RCC_APB2PeriphClockCmd(LIS302DL_SPI_CLK, ENABLE);
	/* Enable SCK, MOSI and MISO GPIO clocks */
	RCC_AHB1PeriphClockCmd(LIS302DL_SPI_SCK_GPIO_CLK | LIS302DL_SPI_MISO_GPIO_CLK |
	LIS302DL_SPI_MOSI_GPIO_CLK, ENABLE);
	/* Enable CS GPIO clock */
	RCC_AHB1PeriphClockCmd(LIS302DL_SPI_CS_GPIO_CLK, ENABLE);
	/* Enable INT1 GPIO clock */
	RCC_AHB1PeriphClockCmd(LIS302DL_SPI_INT1_GPIO_CLK, ENABLE);
	/* Enable INT2 GPIO clock */
	RCC_AHB1PeriphClockCmd(LIS302DL_SPI_INT2_GPIO_CLK, ENABLE);

	GPIO_PinAFConfig(LIS302DL_SPI_SCK_GPIO_PORT, LIS302DL_SPI_SCK_SOURCE,
	LIS302DL_SPI_SCK_AF);
	GPIO_PinAFConfig(LIS302DL_SPI_MISO_GPIO_PORT, LIS302DL_SPI_MISO_SOURCE,
	LIS302DL_SPI_MISO_AF);
	GPIO_PinAFConfig(LIS302DL_SPI_MOSI_GPIO_PORT, LIS302DL_SPI_MOSI_SOURCE,
	LIS302DL_SPI_MOSI_AF);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	/* SPI SCK pin configuration */
	GPIO_InitStructure.GPIO_Pin = LIS302DL_SPI_SCK_PIN;
	GPIO_Init(LIS302DL_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
	/* SPI MOSI pin configuration */
	GPIO_InitStructure.GPIO_Pin = LIS302DL_SPI_MOSI_PIN;
	GPIO_Init(LIS302DL_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);
	/* SPI MISO pin configuration */
	GPIO_InitStructure.GPIO_Pin = LIS302DL_SPI_MISO_PIN;
	GPIO_Init(LIS302DL_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);

	/* SPI configuration -------------------------------------------------------*/
	SPI_InitTypeDef SPI_InitStructure;
	SPI_I2S_DeInit(LIS302DL_SPI);
	SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
	SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
	SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
	SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
	SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
	SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
	SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
	SPI_InitStructure.SPI_CRCPolynomial = 7;
	SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
	SPI_Init(LIS302DL_SPI, &SPI_InitStructure);

	/* Enable SPI1 */
	SPI_Cmd(LIS302DL_SPI, ENABLE);

	/* Configure GPIO PIN for Lis Chip select */
	GPIO_InitStructure.GPIO_Pin = LIS302DL_SPI_CS_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(LIS302DL_SPI_CS_GPIO_PORT, &GPIO_InitStructure);
	/* Deselect : Chip Select high */
	GPIO_SetBits(LIS302DL_SPI_CS_GPIO_PORT, LIS302DL_SPI_CS_PIN);
	/* Configure GPIO PINs to detect Interrupts */
	GPIO_InitStructure.GPIO_Pin = LIS302DL_SPI_INT1_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(LIS302DL_SPI_INT1_GPIO_PORT, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Pin = LIS302DL_SPI_INT2_PIN;
	GPIO_Init(LIS302DL_SPI_INT2_GPIO_PORT, &GPIO_InitStructure);

	LIS302DL_InitTypeDef LIS302DL_InitStruct;
	uint8_t ctrl = 0x00;
	/* Set configuration of LIS302DL*/
	LIS302DL_InitStruct.Power_Mode = LIS302DL_LOWPOWERMODE_ACTIVE;
	LIS302DL_InitStruct.Output_DataRate = LIS302DL_DATARATE_100;
	LIS302DL_InitStruct.Axes_Enable = LIS302DL_X_ENABLE | LIS302DL_Y_ENABLE |
	LIS302DL_Z_ENABLE;
	LIS302DL_InitStruct.Full_Scale = LIS302DL_FULLSCALE_2_3;
	LIS302DL_InitStruct.Self_Test = LIS302DL_SELFTEST_NORMAL;
	LIS302DL_Init(&LIS302DL_InitStruct);

	LIS302DL_InterruptConfigTypeDef LIS302DL_InterruptStruct;
	/* Set configuration of Internal High Pass Filter of LIS302DL*/
	LIS302DL_InterruptStruct.Latch_Request = LIS302DL_INTERRUPTREQUEST_LATCHED;
	LIS302DL_InterruptStruct.SingleClick_Axes = LIS302DL_CLICKINTERRUPT_Z_ENABLE;
	LIS302DL_InterruptStruct.DoubleClick_Axes = LIS302DL_DOUBLECLICKINTERRUPT_Z_ENABLE;
	LIS302DL_InterruptConfig(&LIS302DL_InterruptStruct);

	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOA, ENABLE);

	/* Configure PD12, PD13, PD14 and PD15 in output pushpull mode */
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOD, &GPIO_InitStructure);



  STM32F4_Discovery_LEDInit(LED3);
  STM32F4_Discovery_LEDInit(LED4);
  STM32F4_Discovery_LEDInit(LED5);
  STM32F4_Discovery_LEDInit(LED6);
  STM32F4_Discovery_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);

  STM32F4_Discovery_LEDOn(LED3);   
  Delay(0xFFFF);
  STM32F4_Discovery_LEDOff(LED3);   

  USBD_Init(&USB_OTG_dev,
#ifdef USE_USB_OTG_HS
  USB_OTG_HS_CORE_ID,
#else
  USB_OTG_FS_CORE_ID,
#endif
  &USR_desc,
  &USBD_HID_cb,
  &USR_cb);


  //char button=0;
  while (1)
  {

	  Delay(0xFF);

	  if (OutBuffer[0]&1)  	STM32F4_Discovery_LEDOn(LED3);
		  	  else			STM32F4_Discovery_LEDOff(LED3);
	  if (OutBuffer[0]&2)  	STM32F4_Discovery_LEDOn(LED4);
		  	  else			STM32F4_Discovery_LEDOff(LED4);
	  if (OutBuffer[0]&4)  	STM32F4_Discovery_LEDOn(LED5);
		  	  else			STM32F4_Discovery_LEDOff(LED5);
	  if (OutBuffer[0]&8)  	STM32F4_Discovery_LEDOn(LED6);
		  	  else			STM32F4_Discovery_LEDOff(LED6);

	  //if ((STM32F4_Discovery_PBGetState(BUTTON_USER) == Bit_SET)&&(button==0))

	 // {
			//  int i=0;

			  Delay(0xFF);
			  InBuffer[0] = przyspieszenie_x;
			  InBuffer[1] = przyspieszenie_y;
			  USBD_HID_SendReport (&USB_OTG_dev, InBuffer, 64);
	//  }
	 // button = STM32F4_Discovery_PBGetState(BUTTON_USER);

	LIS302DL_Read(&przyspieszenie_x, LIS302DL_OUT_X_ADDR, 1);
		if(przyspieszenie_x>127)
		{
			przyspieszenie_x=przyspieszenie_x-1;
			przyspieszenie_x=(~przyspieszenie_x)&0xFF;
			przyspieszenie_x=-przyspieszenie_x;
		}

		LIS302DL_Read(&przyspieszenie_y, LIS302DL_OUT_Y_ADDR, 1);
		if(przyspieszenie_y>127)
		{
			przyspieszenie_y=przyspieszenie_y-1;
			przyspieszenie_y=(~przyspieszenie_y)&0xFF;
			przyspieszenie_y=-przyspieszenie_y;
		}

		/*LIS302DL_Read(&przyspieszenie_z, LIS302DL_OUT_Z_ADDR, 1);
		if(przyspieszenie_z>127)
		{
				przyspieszenie_z=przyspieszenie_z-1;
				przyspieszenie_z=(~przyspieszenie_z)&0xFF;
				przyspieszenie_z=-przyspieszenie_z;
		}*/
  }
}