F746NG Test All Functions

Dependencies:   TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG BUTTON_GROUP Arduino

Committer:
MaxScorda
Date:
Tue Dec 29 18:04:23 2020 +0000
Revision:
10:4fef0d14dc70
Parent:
7:f654d2b1f08b
Publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MaxScorda 6:ba00a5cd9466 1 // os.mbed.com/teams/ST/code/BSP_DISCO_F746NG/docs/tip/stm32746g__discovery__lcd_8c.html
MaxScorda 7:f654d2b1f08b 2 // https://os.mbed.com/handbook/Socket
sunsmile2015 0:f40a402e1725 3 #include "mbed.h"
MaxScorda 7:f654d2b1f08b 4 #include <string>
MaxScorda 7:f654d2b1f08b 5 #include <ctype.h>
sunsmile2015 0:f40a402e1725 6 #include "EthernetInterface.h"
MaxScorda 2:65480fe798bf 7
MaxScorda 7:f654d2b1f08b 8
MaxScorda 1:3fca41f3ed30 9 #include "stm32746g_discovery_lcd.h"
MaxScorda 1:3fca41f3ed30 10 #include "stm32746g_discovery_ts.h"
MaxScorda 1:3fca41f3ed30 11
MaxScorda 3:e7e663758e6d 12 #include "button_group.hpp"
MaxScorda 7:f654d2b1f08b 13 #include "Arduino.h"
MaxScorda 3:e7e663758e6d 14 using namespace ButGrp;
MaxScorda 3:e7e663758e6d 15 TS_DISCO_F746NG ts_;
MaxScorda 3:e7e663758e6d 16 LCD_DISCO_F746NG BSP_LCD_;
MaxScorda 2:65480fe798bf 17
MaxScorda 7:f654d2b1f08b 18 Ticker GestioneOutput;
MaxScorda 7:f654d2b1f08b 19
MaxScorda 7:f654d2b1f08b 20 //sensors
MaxScorda 7:f654d2b1f08b 21 AnalogIn adc_temp(ADC_TEMP);
MaxScorda 7:f654d2b1f08b 22 AnalogIn adc_vref(ADC_VREF);
MaxScorda 7:f654d2b1f08b 23 #if defined(TARGET_DISCO_F051R8) || defined(TARGET_NUCLEO_F030R8) || defined(TARGET_NUCLEO_F031K6) || defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F070RB) || defined(TARGET_NUCLEO_F072RB) || defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F207ZG) || defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F303K8) || defined(TARGET_DISCO_F303VC) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303ZE) || defined(TARGET_DISCO_F334C8) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_MTS_DRAGONFLY_F411RE) || defined(TARGET_MTS_MDOT_F405RG) || defined(TARGET_MTS_MDOT_F411RE) || defined(TARGET_DISCO_F401VC) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_ARCH_MAX) || defined(TARGET_DISCO_F407VG) || defined(TARGET_NUCLEO_F410RB) || defined(TARGET_ELMO_F411RE) || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F429ZI) || defined(TARGET_NUCLEO_F439ZI) || defined(TARGET_B96B_F446VE) || defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F446ZE) || defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG) || defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_F756ZG) || defined(TARGET_NUCLEO_F767ZI) || defined(TARGET_DISCO_F769NI) || defined(TARGET_DISCO_L072CZ_LRWAN1) || defined(TARGET_NUCLEO_L432KC) || defined(TARGET_DISCO_L476VG) || defined(TARGET_NUCLEO_L476RG) || defined(TARGET_NUCLEO_L486RG)
MaxScorda 7:f654d2b1f08b 24 AnalogIn adc_vbat(ADC_VBAT); // Warning: Not available on all devices
MaxScorda 7:f654d2b1f08b 25 #endif
MaxScorda 7:f654d2b1f08b 26
MaxScorda 6:ba00a5cd9466 27 // my vars
MaxScorda 6:ba00a5cd9466 28 const int DimX=BSP_LCD_GetXSize()-1;
MaxScorda 6:ba00a5cd9466 29 const int DimY=BSP_LCD_GetYSize()-1;
MaxScorda 6:ba00a5cd9466 30 #define MAXMENU 3
MaxScorda 6:ba00a5cd9466 31 int nummenu=0;
MaxScorda 7:f654d2b1f08b 32 char str[128];
MaxScorda 7:f654d2b1f08b 33 #define IP "192.168.1.177"
MaxScorda 1:3fca41f3ed30 34 #define GATEWAY "192.168.1.1"
MaxScorda 1:3fca41f3ed30 35 #define MASK "255.255.255.0"
MaxScorda 7:f654d2b1f08b 36 #define PORTA 29999
sunsmile2015 0:f40a402e1725 37
MaxScorda 3:e7e663758e6d 38
sunsmile2015 0:f40a402e1725 39 // Network interface
MaxScorda 7:f654d2b1f08b 40 //se li metto qui non sgancia ma blocca ciclo
MaxScorda 7:f654d2b1f08b 41 TCPSocket client;
MaxScorda 7:f654d2b1f08b 42 SocketAddress client_addr;
MaxScorda 7:f654d2b1f08b 43 //
sunsmile2015 0:f40a402e1725 44
MaxScorda 7:f654d2b1f08b 45
MaxScorda 7:f654d2b1f08b 46 //external
MaxScorda 1:3fca41f3ed30 47 DigitalOut led1(LED1);
MaxScorda 1:3fca41f3ed30 48 InterruptIn button(USER_BUTTON);
MaxScorda 3:e7e663758e6d 49
MaxScorda 3:e7e663758e6d 50 // Setting of button group
MaxScorda 6:ba00a5cd9466 51 Button avanti(BSP_LCD_, ts_, DimX-37, 50, 38, 170, LCD_COLOR_BLUE, LCD_COLOR_BLACK, ">>", Font12);
MaxScorda 6:ba00a5cd9466 52 Button indietro(BSP_LCD_, ts_, 0, 50, 38, 170, LCD_COLOR_BLUE, LCD_COLOR_BLACK, "<<", Font12);
MaxScorda 5:19f1743cecb1 53
MaxScorda 3:e7e663758e6d 54
MaxScorda 3:e7e663758e6d 55 //Touch
MaxScorda 3:e7e663758e6d 56 # define NUMLAYER 2
MaxScorda 3:e7e663758e6d 57 TS_StateTypeDef TS_State;
MaxScorda 3:e7e663758e6d 58 uint8_t status;
MaxScorda 3:e7e663758e6d 59
MaxScorda 2:65480fe798bf 60 #include "Functions.h"
MaxScorda 7:f654d2b1f08b 61 #include "ProgFunctions.h"
MaxScorda 1:3fca41f3ed30 62
MaxScorda 1:3fca41f3ed30 63 int main()
MaxScorda 1:3fca41f3ed30 64 {
MaxScorda 3:e7e663758e6d 65 //Tasto
MaxScorda 3:e7e663758e6d 66 button.rise(&PressButton);
MaxScorda 7:f654d2b1f08b 67 //timer
MaxScorda 7:f654d2b1f08b 68 StartArduinoTimer();
MaxScorda 7:f654d2b1f08b 69 //Ticker
MaxScorda 7:f654d2b1f08b 70 GestioneOutput.attach(&UsciteVideo,0.1);
MaxScorda 1:3fca41f3ed30 71
MaxScorda 5:19f1743cecb1 72 // DISPLAY
MaxScorda 1:3fca41f3ed30 73 BSP_LCD_Init();
MaxScorda 3:e7e663758e6d 74 BSP_LCD_DisplayOn();
MaxScorda 3:e7e663758e6d 75 /* Initialize the LCD Layers */
MaxScorda 3:e7e663758e6d 76 BSP_LCD_LayerRgb565Init(0, LCD_FB_START_ADDRESS);
MaxScorda 3:e7e663758e6d 77 BSP_LCD_LayerRgb565Init(1, LCD_FB_START_ADDRESS+(BSP_LCD_GetXSize()*BSP_LCD_GetYSize()*NUMLAYER)); //Reserve memory art SRAM acc. resolution and color format
MaxScorda 6:ba00a5cd9466 78
MaxScorda 6:ba00a5cd9466 79 for (int idx = 0; idx < NUMLAYER; idx++) {
MaxScorda 6:ba00a5cd9466 80 BSP_LCD_SetTransparency (idx, 255);
MaxScorda 6:ba00a5cd9466 81 SetLayer( idx);
MaxScorda 6:ba00a5cd9466 82 // BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
MaxScorda 6:ba00a5cd9466 83 // BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
MaxScorda 6:ba00a5cd9466 84 BSP_LCD_Clear(LCD_COLOR_BLACK);
MaxScorda 6:ba00a5cd9466 85 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
MaxScorda 6:ba00a5cd9466 86 }
MaxScorda 3:e7e663758e6d 87 SetLayer( 0);
MaxScorda 6:ba00a5cd9466 88
MaxScorda 6:ba00a5cd9466 89 //frames
MaxScorda 4:0ce191d3f0ce 90 BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
MaxScorda 4:0ce191d3f0ce 91 BSP_LCD_DrawRect(0, 0, DimX/3, 40);
MaxScorda 4:0ce191d3f0ce 92 BSP_LCD_DrawRect(DimX/3+5, 0, ((DimX*2)/3)-5, 40);
MaxScorda 4:0ce191d3f0ce 93 BSP_LCD_DrawRect(40, 45, DimX-80, DimY-45-45);
MaxScorda 4:0ce191d3f0ce 94 BSP_LCD_DrawRect(0, DimY-40, DimX, 40);
MaxScorda 3:e7e663758e6d 95 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 5:19f1743cecb1 96 BSP_LCD_.SetFont(&Font12);
MaxScorda 6:ba00a5cd9466 97 BSP_LCD_DisplayStringAt(5, 3, (uint8_t *)"Test All 0.2 ", LEFT_MODE);
MaxScorda 6:ba00a5cd9466 98 BSP_LCD_DisplayStringAt(5, 23, (uint8_t *)"Max Scordamaglia 2020", LEFT_MODE);
MaxScorda 6:ba00a5cd9466 99 BSP_LCD_.SetFont(&Font24);
MaxScorda 6:ba00a5cd9466 100 BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
MaxScorda 6:ba00a5cd9466 101 BSP_LCD_DisplayStringAt(DimX/3+10, 10, (uint8_t *) "Dati Generali", LEFT_MODE);
MaxScorda 1:3fca41f3ed30 102
MaxScorda 3:e7e663758e6d 103 // touch
MaxScorda 3:e7e663758e6d 104 status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
MaxScorda 6:ba00a5cd9466 105 BSP_LCD_.SetFont(&Font12);
MaxScorda 6:ba00a5cd9466 106 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
MaxScorda 3:e7e663758e6d 107 if (status != TS_OK) {
MaxScorda 5:19f1743cecb1 108 BSP_LCD_DisplayStringAt(300, LINE(4), (uint8_t *)"TOUCHSCREEN INIT FAIL", LEFT_MODE);
MaxScorda 3:e7e663758e6d 109 } else {
MaxScorda 5:19f1743cecb1 110 BSP_LCD_DisplayStringAt(300, LINE(4), (uint8_t *)"TOUCHSCREEN INIT OK", LEFT_MODE);
MaxScorda 3:e7e663758e6d 111 }
MaxScorda 5:19f1743cecb1 112 Button::SetMultiTouch(false);
MaxScorda 1:3fca41f3ed30 113
MaxScorda 6:ba00a5cd9466 114 // Buttons
MaxScorda 6:ba00a5cd9466 115 avanti.Draw(LCD_COLOR_BLUE, LCD_COLOR_YELLOW);
MaxScorda 6:ba00a5cd9466 116 indietro.Draw(LCD_COLOR_BLUE, LCD_COLOR_YELLOW);
MaxScorda 6:ba00a5cd9466 117 // multiTouch.Draw(0, LCD_COLOR_DARKBLUE);
MaxScorda 3:e7e663758e6d 118
MaxScorda 3:e7e663758e6d 119 // ethernet interface
MaxScorda 7:f654d2b1f08b 120 EthernetInterface eth;
MaxScorda 7:f654d2b1f08b 121 eth.set_network("192.168.1.177","255.255.255.0","192.168.1.1");
MaxScorda 7:f654d2b1f08b 122 eth.connect();
sunsmile2015 0:f40a402e1725 123
MaxScorda 7:f654d2b1f08b 124 //Server
MaxScorda 7:f654d2b1f08b 125 TCPServer srv(&eth);
MaxScorda 7:f654d2b1f08b 126 srv.set_blocking(false);
MaxScorda 7:f654d2b1f08b 127 srv.bind(29999);
MaxScorda 7:f654d2b1f08b 128 srv.listen();
sunsmile2015 0:f40a402e1725 129
MaxScorda 7:f654d2b1f08b 130 if (nummenu==0) {
MaxScorda 7:f654d2b1f08b 131 sprintf(str,"The Server IP address is '%s', port %d", eth.get_ip_address(), PORTA);
MaxScorda 7:f654d2b1f08b 132 BSP_LCD_.SetFont(&Font12);
MaxScorda 7:f654d2b1f08b 133 BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
MaxScorda 7:f654d2b1f08b 134 BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *) str, CENTER_MODE);
MaxScorda 7:f654d2b1f08b 135 }
MaxScorda 1:3fca41f3ed30 136
MaxScorda 1:3fca41f3ed30 137
MaxScorda 6:ba00a5cd9466 138 while(1) {
MaxScorda 7:f654d2b1f08b 139 FattorizzazioneCiclica(); //1
MaxScorda 7:f654d2b1f08b 140 RoutineCiclicaSocket(srv);
MaxScorda 1:3fca41f3ed30 141 }
sunsmile2015 0:f40a402e1725 142 }
MaxScorda 7:f654d2b1f08b 143
MaxScorda 7:f654d2b1f08b 144
MaxScorda 7:f654d2b1f08b 145