Beispiel #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);
		}
	}
}
/**
  * @brief  This function handles SysTick Handler.
  * @param  None
  * @retval None
  */
void SysTick_Handler(void)
{
	//Handle delays
	uint8_t i = 0;
	while(i != delayComponent.capacity)
	{
		if(DecreaseDelay(i))
		{
			if(delayComponent.buffer[i].callback)//Is there a callback?
			{
				(*delayComponent.buffer[i].callback)();//Call it
				RemoveDelayOnPosition(i);
				continue;
			}
		}
		i++;
	}

	//Handler for debug position
	//If the user button is pressed, send informations abou position
	if(STM32F4_Discovery_PBGetState(BUTTON_USER) == Bit_SET && debugPositionCounter == 100)
	{
		*((uint32_t*)(debugPositionBuffer+2+12*debugPositionPointer)) = debugPositionTime;
		memcpy((void*)(debugPositionBuffer + 6 + 12*debugPositionPointer), (void*)(&axesBuffer), sizeof(float)*2);
		debugPositionCounter = 0;
		debugPositionPointer++;
		if(debugPositionPointer == 21)
		{
			debugPositionBuffer[0] = 1;
			debugPositionBuffer[1] = DEBUG_POSITION_INFO;//Error message type
			SendData(debugPositionBuffer, sizeof(debugPositionBuffer));
			debugPositionPointer = 0;
		}
	}
	debugPositionTime++;
	debugPositionCounter++;
}