int main(void) // Объявляем функцию которая принимает значение void { SystemInit(); // Настройка и включение кварца (Quarz Einstellungen aktivieren) // ### SystemInit кокофигурируется где то в дебрях system_stm32f4xx.h UB_Button_Init(); // Активация Кнопки (Init der Buttons) UB_Led_Init(); // Активация LEDs (Init der LEDs) // ### UB_Button_Init UB_Led_Init кофигурируется в файлах // ### stm32_ub_button.c stm32_ub_button.h stm32_ub_led.c stm32_ub_led.h UB_Led_On(LED_GREEN); // Включение GREEN СветоДиода (gruene LED einschalten) // ### UB_Led_On кофигурируется в файлах stm32_ub_led.c stm32_ub_led.h while(1) // Открываем цикл { // прорверяем нажата ли кнопка USER (Test ob Button gedruckt ist) if(UB_Button_Read(BTN_USER)==BTN_PRESSED) { // ### UB_Button_Read кофигурируется в файлах stm32_ub_button.c stm32_ub_button.h UB_Led_On(LED_RED); // Включение RED СветоДиода (rote LED einschalten) UB_Led_Off(LED_GREEN); // ### UB_Led_On UB_Led_Off кофигурируется в файлах stm32_ub_led.c stm32_ub_led.h UB_Led_On(LED_ORANGE); UB_Led_Off(LED_BLUE); } else { UB_Led_Off(LED_RED); // Выключение RED СветоДиода (rote LED ausschalten) UB_Led_On(LED_GREEN); UB_Led_Off(LED_ORANGE); UB_Led_On(LED_BLUE); } } }
int main(void) { FIL myFile; // Filehandler uint8_t write_ok=0; SystemInit(); // Quarz Einstellungen aktivieren // Init der LEDs UB_Led_Init(); // Init vom USB-OTG-Port als MSC-HOST // (zum lesen/schreiben auf einen USB-Stick) UB_USB_MSC_HOST_Init(); while(1) { // pollen vom USB-Status if(UB_USB_MSC_HOST_Do()==USB_MSC_DEV_CONNECTED) { // wenn USB-Stick erkannt wurde UB_Led_On(LED_GREEN); // wenn File noch nicht geschrieben wurde if(write_ok==0) { write_ok=1; UB_Led_On(LED_RED); // Media mounten if(UB_Fatfs_Mount(USB_0)==FATFS_OK) { // File zum schreiben im root neu anlegen if(UB_Fatfs_OpenFile(&myFile, "USB_File.txt", F_WR_CLEAR)==FATFS_OK) { // ein paar Textzeilen in das File schreiben UB_Fatfs_WriteString(&myFile,"Test der WriteString-Funktion"); UB_Fatfs_WriteString(&myFile,"hier Zeile zwei"); UB_Fatfs_WriteString(&myFile,"ENDE"); // File schliessen UB_Fatfs_CloseFile(&myFile); } // Media unmounten UB_Fatfs_UnMount(USB_0); } UB_Led_Off(LED_RED); } } else { // wenn kein USB-Stick vorhanden UB_Led_Off(LED_GREEN); } } }
int main(void) { uint32_t adr; uint8_t sollwert, istwert; ErrorStatus ramcheck; SystemInit(); // Quarz Einstellungen aktivieren // init der LEDs UB_Led_Init(); // init vom externen SDRAM (und test ob es vorhanden ist) ramcheck=UB_SDRAM_Init(); if(ramcheck==SUCCESS) { // zum test RAM komplett füllen sollwert=0xA1B2; for(adr=0;adr<SDRAM_MAX_ADR;adr+=2) { UB_SDRAM_Write16b(adr,sollwert); sollwert++; } // Ram wieder auslesen und prüfen sollwert=0xA1B2; for(adr=0;adr<SDRAM_MAX_ADR;adr+=2) { istwert=UB_SDRAM_Read16b(adr); if(istwert!=sollwert) { // RAM-Inhalt fehlerhaft ramcheck=ERROR; } sollwert++; } } while(1) { if(ramcheck==SUCCESS) { // wenn kein Fehler -> gruene LED leuchtet UB_Led_On(LED_GREEN); } else { // wenn Fehler -> rote LED blinkt UB_Led_Toggle(LED_RED); Delay(5000000); } } }
//-------------------------------------------------------------- // init der Hardware //-------------------------------------------------------------- uint32_t p_oszi_hw_init(void) { uint32_t ret_wert=0; // init vom Touch if(UB_Touch_Init()!=SUCCESS) { ret_wert=1; // Touch error } // Check der Defines if(ADC_ARRAY_LEN!=SCALE_W) { ret_wert=2; // define error } // init vom Systick UB_Systick_Init(); // init der LEDs UB_Led_Init(); // init vom Button UB_Button_Init(); // init der UART UB_Uart_Init(); // init vom LCD (und SD-RAM) UB_LCD_Init(); UB_LCD_LayerInit_Fullscreen(); UB_LCD_SetMode(LANDSCAPE); // alle Puffer löschen p_oszi_clear_all(); // init vom ADC ADC_Init_ALL(); return(ret_wert); }
// usuwanie_plikow_i_katalogow void usuwanie_plikow_i_katalogow() { FILINFO fno; DIR dir; uint8_t write_ok = 0; FRESULT res; char *path=""; char *fn; // This function is assuming non-Unicode cfg. SystemInit ( ); UB_Led_Init ( ); UB_USB_MSC_HOST_Init ( ); fno.lfname = lfnBuffer; fno.lfsize = sizeof ( lfnBuffer ); unsigned int counter =0; while ( counter<5000000 ) { if ( UB_USB_MSC_HOST_Do ( ) == USB_MSC_DEV_CONNECTED ) { // Sprawdzenie poprawnsoci po³¹czenia UB_Led_On ( LED_GREEN ); UB_Led_Off ( LED_RED ); // Je¿eli zapisy s¹ poprawne to: if ( write_ok == 0 ) { write_ok = 1; // W trakcie zapisu wieci pomarañczowa dioda. UB_Led_On ( LED_ORANGE ); if ( UB_Fatfs_Mount ( USB_0 ) == FATFS_OK ) // Montowanie pendraiva { res = f_opendir(&dir, path); // Open the directory if (res == FR_OK) { for (;;) { res = f_readdir(&dir, &fno); // Read a directory item if (res != FR_OK || fno.fname[0] == 0) break; // Break on error or end of dir #if _USE_LFN fn = *fno.lfname ? fno.lfname : fno.fname; #else fn = fno.fname; #endif f_unlink(fn); } // for } // if // Odmontowanie usb po wykonaniu akcji UB_Fatfs_UnMount ( USB_0 ); } // if UB_Led_Off ( LED_ORANGE ); } // Kiedy koniec operacji gaszenie ¿ó³tej lampki // stop UB_Led_On ( LED_BLUE ); //mozna tu dac jakies opoznienie counter=5000001; } // if else { // W razie b³êdów zawiecenie diody czerwone i zgaszenie zielonej UB_Led_Off ( LED_GREEN ); UB_Led_On ( LED_RED ); //tu trzeba dac jakies opoznienie counter++; } // else } // while } // main
int main(void) { RTC_STATUS_t check; uint8_t old_sek=0; char buf[APP_TX_BUF_SIZE]; // puffer fuer Datenempfang SystemInit(); // Quarz Einstellungen aktivieren // Init der LEDs UB_Led_Init(); // Init der Buttons UB_Button_Init ( ); // Init und start der RTC check=UB_RTC_Init(); if(check==RTC_UNDEFINED) { // RTC war noch nie initialisiert UB_Led_On(LED_RED); } else { // RTC war schon initialisiert UB_Led_On(LED_GREEN); } // Init vom USB-OTG-Port als CDC-Device // (Virtueller-ComPort) /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * die nächste Zeile auskommentieren, * dann funktioniert das Zurücksetzen * des RTC */ UB_USB_CDC_Init(); while ( 1 ) { // wenn Button gedrückt -> RTC zurücksetzen if ( UB_Button_Read ( BTN_USER ) ) { // orange LED ein UB_Led_On ( LED_ORANGE ); // RTC zurücksetzen ResetRTC ( ); // warten bis Button gelöst while ( UB_Button_Read ( BTN_USER ) ); // die LED noch ein Weilchen an lassen Delay ( 10000000 ); UB_Led_Off ( LED_ORANGE ); } // aktuelle RTC-Zeit auslesen UB_RTC_GetClock(RTC_DEC); if(UB_RTC.sek!=old_sek) { // wenn eine Sekunde um ist old_sek=UB_RTC.sek; UB_Led_Toggle(LED_BLUE); // aktuelle Zeit als String formatieren sprintf ( buf, "%02d.%02d.%02d %02d:%02d:%02d", UB_RTC.tag, UB_RTC.monat, UB_RTC.jahr, UB_RTC.std, UB_RTC.min, UB_RTC.sek ); // an Semihosting senden printf ( "%s\r\n", buf ); // Test ob USB-Verbindung zum PC besteht if(UB_USB_CDC_GetStatus()==USB_CDC_CONNECTED) { // an PC senden UB_USB_CDC_SendString ( buf, LFCR ); } } } }
/***************************************** * MAIN *****************************************/ int main(void) { SystemInit(); UB_Systick_Init(); // Init of UB libs UB_TIMER2_Init_FRQ( 100 ); UB_TIMER5_Init_FRQ( 10000 ); UB_Led_Init(); UB_DigIn_Init(); UB_DigOut_Init(); UB_ADC1_SINGLE_Init(); UB_RTC_Init(); UB_RTC_SetWakeUpInterrupt(RTC_WAKEUP_5s); // Note: code needs to be reconfigured for Nucleo Board (Frequency of 96 MHz should also be checked) UB_WS2812_Init(); WC_DisableAllElements(); WC_SetColor( WS2812_HSV_COL_WHITE ); WC_SetBrightness( 10 ); WC_SetElement(WC_ELEMENT_ES, 1); WC_Refresh(); UB_Uart_Init(); esp8266_init(); UB_Systick_Pause_ms(1000); // Indicate successful booting UB_Led_On( LED_GREEN ); UB_Systick_Pause_s(1); UB_Led_Off( LED_GREEN ); // Start timers and therefore cyclic actions in the call backs below UB_TIMER2_Start(); UB_TIMER5_Start(); UB_DigOut_Lo(DOUT_PB7); // Set ground for LDR UB_DigOut_Lo(DOUT_PB9); // Set PC9 low to start DCF module while(1) { // Handle word matrix refreshes if ( gWcIsToBeRefreshed == Bit_SET ){ WC_Refresh(); gWcIsToBeRefreshed = Bit_RESET; } // Check if update of time is necessary #ifndef DISABLE_DCF if ( DcfTimeWasSetRecently() == Bit_RESET ) gDcfRxInProgress = Bit_SET; #endif // Handle IR remote if ( irmp_get_data( &irData ) ) ProcessIrDataPacket( irData ); // Read Ambient brightness and set LED brightness if ( gDcfRxInProgress == Bit_RESET ){ ambientBrightnessCurrent = SlidingAverageOnLastValues( UB_ADC1_SINGLE_Read( ADC_PA1 ) ); int brightnessToSet = 100.0 * GetBrightnessFactor( ambientBrightnessPoints, ambientBrightnessLedDimmingFactors, ambientBrightnessCurrent ); if ( brightnessToSet < LED_BRIGHTNESS_OFF_THRESHOLD ) WC_SetColor( WS2812_HSV_COL_OFF ); else WC_SetBrightness( brightnessToSet ); gWcIsToBeRefreshed = Bit_SET; } // Handle ESP8266 receive esp8266_handle_receive(); if( esp8266_request_time_from_google() == 1 ) { UB_RTC = Esp8266_curTime; UB_RTC_SetClock( RTC_DEC ); SetWordMatrix( UB_RTC_GetClock(RTC_DEC) ); gWcIsToBeRefreshed = Bit_SET; } } }