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); } } }
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); 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); STM32F4_Discovery_LEDInit(LED3); STM32F4_Discovery_LEDInit(LED4); STM32F4_Discovery_LEDInit(LED5); STM32F4_Discovery_LEDInit(LED6); while (1) { Delayms(0xFFFF); uint32_t i=0; while (i<64) { Buf[i]=OutBuffer[i]; i++; } if (Buf[0] == 't' && Buf[1] == 'e' && Buf[2] == 's' && Buf[3] == 't') { SendStrToUSB((uint8_t*)"Testing 1 2 3 . . ."); SendStrToUSB((uint8_t*)"|1|2|"); } if (Buf[0] == 'l' && Buf[1] == 'e' && Buf[2] == 'd') { if (Buf[3] == 0x33) { STM32F4_Discovery_LEDToggle(LED3); SendStrToUSB((uint8_t*)"LED3(Orange) has been toggled!"); SendStrToUSB((uint8_t*)"|1|2|"); } if (Buf[3] == 0x34) { STM32F4_Discovery_LEDToggle(LED4); SendStrToUSB((uint8_t*)"LED4(Green) has been toggled!"); SendStrToUSB((uint8_t*)"|1|2|"); } if (Buf[3] == 0x35) { STM32F4_Discovery_LEDToggle(LED5); SendStrToUSB((uint8_t*)"LED5(Red) has been toggled!"); SendStrToUSB((uint8_t*)"|1|2|"); } if (Buf[3] == 0x36) { STM32F4_Discovery_LEDToggle(LED6); SendStrToUSB((uint8_t*)"LED6(Blue) has been toggled!"); SendStrToUSB((uint8_t*)"|1|2|"); } } ClearBuffer(); } }
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); SystemCoreClockUpdate(); // inicjalizacja dystrybucji czasu procesora init_I2C1(); // na podstawie: http://eliaselectronics.com/stm32f4-tutorials/stm32f4-i2c-mastertutorial/ //acc I2C_start(I2C1, LSM303DL_A_ADDRESS, I2C_Direction_Transmitter); I2C_write(I2C1,0x20); // LSM303_CTRL_REG1_A 0x20 I2C_write(I2C1,0x27); // Enable Accelerometer // 0x27 = 0b00100111 // Normal power mode, all axes enabled I2C_stop(I2C1); // stop the transmission //acc //mag I2C_start(I2C1, LSM303DL_M_ADDRESS, I2C_Direction_Transmitter); I2C_write(I2C1,0x02); //LSM303_MR_REG_M 0x02 I2C_write(I2C1,0x00); // Enable Magnetometer // 0x00 = 0b00000000 // Continuous conversion mode I2C_stop(I2C1); //mag //gyro I2C_start(I2C1, LSM303DL_G_ADDRESS, I2C_Direction_Transmitter); I2C_write(I2C1, 0x20); //L3G_CTRL_REG1 0x20 I2C_write(I2C1, 0x0F); // 0x0F = 0b00001111 // Normal power mode, all axes enabled I2C_stop(I2C1); //gyro char start='0'; while(1) { Delay(5); read_acc(); read_mag(); read_gyro(); start='0'; while(1) { start = usb_cdc_getc(); if(start=='1') { break; } } } /*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); } }*/ }
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); } } }
int main(void) { SystemInit(); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); // 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); led_driver_init(); motor_driver_init(); SysTick_Config(2100000); //10 times a second: 168 MHz / 8 = 21 MHz SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //while(1) //{ //led_driver_write_data(50, 10); //} while (1) { if( usb_cdc_kbhit() ) { character = usb_cdc_getc(); usb_rx_buffer[usb_rx_ptr] = character; usb_rx_ptr++; if( usb_rx_ptr == 10 ) //upon receiving 10 bytes { if( ( usb_rx_buffer[0] == 0xAA ) && ( usb_rx_buffer[9] == 0xCC ) ) //check head and tail for correctness { usb_rx_ptr = 0; //reset data pointer if correct flag_new_command_received = 1; //set the flag if packet correct } else { usb_rx_ptr = 0; // if packet incorrect, reset data pointer } } } if(flag_new_command_received) { flag_new_command_received = 0; } if(flag_send_sensor_data) { motor_set_speed(0x55, 0x55); flag_send_sensor_data = 0; } // here's how to send data through USB VCP /* sprintf(buffer_out,"LED%c = %u\r\n",c,GPIO_ReadInputDataBit(GPIOD,LED6_PIN)); usb_cdc_printf(buffer_out); */ } }
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; }*/ } }