Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 1:47c996032a9e, committed 2020-09-25
- Comitter:
- hudakz
- Date:
- Fri Sep 25 14:52:27 2020 +0000
- Parent:
- 0:fa952828e34c
- Commit message:
- 3.5" inch TFT LCD Display Module 480X320 driven with FSMC.
Changed in this revision
--- a/UniGraphic/Graphics/TextDisplay.h Sun May 10 10:44:31 2020 +0000 +++ b/UniGraphic/Graphics/TextDisplay.h Fri Sep 25 14:52:27 2020 +0000 @@ -17,6 +17,7 @@ #define MBED_TEXTDISPLAY_H #include "mbed.h" +#include "Stream.h" /** A common base class for Text displays */
--- a/main.cpp Sun May 10 10:44:31 2020 +0000
+++ b/main.cpp Fri Sep 25 14:52:27 2020 +0000
@@ -30,7 +30,8 @@
#include "string"
#include "Arial12x12.h"
#include "Arial24x23.h"
-#include "Terminal6x8.h"
+/* include "Terminal6x8.h" */
+
#include "Arial43x48_digits.h"
#include "pict.h"
#include "pavement_48x34.h"
@@ -47,23 +48,27 @@
Timer tmr;
int time1;
int time2;
-unsigned short backgroundColor = Black;
-unsigned short foregroundColor = White;
-uint8_t orient = 0;
+unsigned short backgroundcolor = Black;
+unsigned short foregroundcolor = White;
+char orient = 0;
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
+//I2S_HandleTypeDef hi2s3;
+//PCD_HandleTypeDef hpcd_USB_OTG_FS;
SRAM_HandleTypeDef hsram1;
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
-//static void SystemClock_Config(void);
+static void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_FSMC_Init(void);
+//static void MX_I2S3_Init(void);
+//static void MX_USB_OTG_FS_PCD_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
@@ -71,9 +76,8 @@
/* USER CODE BEGIN 0 */
uint16_t RGB(uint16_t r, uint16_t g, uint16_t b)
{
- return(r << 16) | (g << 8) | b;
+ return(r * 65536) + (g * 256) + b;
}
-
/* USER CODE END 0 */
/**
@@ -97,10 +101,13 @@
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_FSMC_Init();
+
+ // MX_I2S3_Init();
+ // MX_USB_OTG_FS_PCD_Init();
/* USER CODE BEGIN 2 */
+ // PinName dataPins[] = { PD_14, PD_15, PD_0, PD_1, PE_7, PE_8, PE_9, PE_10 }; // FSMC [D0:D7] -> LCD [D0:D7]
// LCD_RST : PB_12 -> LCD_RST
- // FSMC_NE1: not used
- // GND -> LCD_CS
+ // FSMC_NE1: PD_7 -> LCD_CS
// FSMC_A18: PD_13 -> LCD_RS
// FSMC_NWE: PD_5 -> LCD_WR
// FSMC_NOE: PD_4 -> LCD_RD
@@ -112,33 +119,39 @@
// FSMC_D5 : PE_8 -> LCD_D5
// FSMC_D6 : PE_9 -> LCD_D6
// FSMC_D7 : PE_10 -> LCD_D7
- //TFT_MIPI myLCD(BUS_8, buspins, PD_7, PB_12, PD_13, PD_5, PD_4, "myLCD", 320, 480); // CS, reset, DC, WR, RD
+ //TFT_MIPI myLCD(BUS_8, buspins, PD_7, PB_12, PD_13, PD_5, PD_4, "myLCD", 320, 480); // CS, reset, DC, WR, RD
// CS , RST, DC, WR, RD
- myLCD = new TFT_MIPI(FSMC_8, PB_12, "myLCD", 320, 480); // Protocol, Pin->LCD_RST, name , LCDSIZE_X, LCDSIZE_Y
- myLCD->set_orientation(1);
- myLCD->background(backgroundColor);
- myLCD->foreground(foregroundColor);
+ myLCD = new TFT_MIPI(FSMC_8, PB_12, "myLCD", 320, 480); // Protocol, Pin->LCD_RST, name , LCDSIZE_X = 320, LCDSIZE_Y = 480
+ myLCD->set_orientation(orient);
+ myLCD->background(backgroundcolor); /* set background to black */
+ myLCD->foreground(foregroundcolor); /* set chars to white */
printf("\n\nSystem Core Clock = %.3f MHZ\r\n", (float)SystemCoreClock / 1000000);
+ tmr.start();
+
printf("Target: %s\n", MBED_STRINGIFY(TARGET_NAME));
- myLCD->cls();
- myLCD->locate(0, 30);
- myLCD->printf("Display ID: %.8X\r\n", myLCD->tftID);
- printf("Display ID: %.8X\r\n", myLCD->tftID);
-
- tmr.start();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1) {
+
myLCD->set_orientation((++orient) % 4);
+ //myLCD->set_orientation(1);
- /* LCD memory write/read test */
+ /*
+ * myLCD->set_orientation(2);
+ */
+ myLCD->cls(); /* clear the screen */
+ myLCD->locate(0, 30);
+ myLCD->printf("Display ID: %.8X\r\n", myLCD->tftID);
+ printf("Display ID: %.8X\r\n", myLCD->tftID);
+
+ /* mem write/read test */
unsigned short readback;
unsigned short colorstep = (0x10000 / myLCD->width());
for (unsigned short i = 0; i < myLCD->width(); i++) {
- myLCD->pixel(i, 0, i * colorstep);
+ myLCD->pixel(i, 0, i * colorstep); /* write line */
}
bool readerror = false;
@@ -154,111 +167,115 @@
}
myLCD->locate(0, 10);
- myLCD->printf("Pixelread test %s\r\n", readerror ? "FAILED" : "PASSED");
- thread_sleep_for(2000);
+ myLCD->printf("pixelread test %s\r\n", readerror ? "FAIL" : "PASS");
- /* Auto carriage return test */
+ ThisThread::sleep_for(2000);
myLCD->cls();
+ //myLCD->set_font((unsigned char*)Arial12x12, 32, 127, false); /* variable width disabled */
myLCD->set_font((unsigned char*)Arial12x12);
myLCD->locate(0, 0);
myLCD->printf("Display Test\r\nSome text just to see if auto carriage return works correctly");
- printf(" Display Test \r\n");
- thread_sleep_for(2000);
+ printf("Display Test \r\n");
- /* Clear screen test */
+ ThisThread::sleep_for(2000);
tmr.reset();
myLCD->cls();
time1 = tmr.read_us();
- myLCD->locate(2, 75);
+ myLCD->locate(2, 55);
myLCD->printf("cls: %.3fms", (float)time1 / 1000);
printf("cls: %.3fms\r\n", (float)time1 / 1000);
- thread_sleep_for(2000);
+ ThisThread::sleep_for(2000);
myLCD->cls();
tmr.reset();
- /* Simple graphics test */
+ //draw some graphics ;
myLCD->set_font((unsigned char*)Arial24x23);
myLCD->locate(10, 10);
myLCD->printf("Test");
- myLCD->line(0, 0, myLCD->width() - 1, 0, foregroundColor);
- myLCD->line(0, 0, 0, myLCD->height() - 1, foregroundColor);
- myLCD->line(0, 0, myLCD->width() - 1, myLCD->height() - 1, foregroundColor);
- myLCD->rect(10, 30, 50, 40, foregroundColor);
- myLCD->fillrect(60, 30, 100, 40, foregroundColor);
- myLCD->circle(150, 32, 30, foregroundColor);
- myLCD->fillcircle(140, 20, 10, foregroundColor);
+
+ myLCD->line(0, 0, myLCD->width() - 1, 0, foregroundcolor);
+ myLCD->line(0, 0, 0, myLCD->height() - 1, foregroundcolor);
+ myLCD->line(0, 0, myLCD->width() - 1, myLCD->height() - 1, foregroundcolor);
+
+ myLCD->rect(10, 30, 50, 40, foregroundcolor);
+ myLCD->fillrect(60, 30, 100, 40, foregroundcolor);
+
+ myLCD->circle(150, 32, 30, foregroundcolor);
+ myLCD->fillcircle(140, 20, 10, foregroundcolor);
double s;
for (unsigned short i = 0; i < myLCD->width(); i++) {
s = 10 * sin((long double)i / 10);
- myLCD->pixel(i, 40 + (int)s, foregroundColor);
+ myLCD->pixel(i, 40 + (int)s, foregroundcolor);
}
time1 = tmr.read_us();
- myLCD->locate(2, 75);
+ myLCD->locate(2, 55);
myLCD->set_font((unsigned char*)Arial12x12);
myLCD->printf("plot: %.3fms", (float)time1 / 1000);
printf("plot: %.3fms\r\n", (float)time1 / 1000);
- thread_sleep_for(2000);
+
+ ThisThread::sleep_for(2000);
+ myLCD->cls();
+ tmr.reset();
- /* Bitmap test */
- Bitmap_s bmp =
- {
- 64, // XSize
- 64, // YSize
- 8, // Bytes in Line
- burp // Pointer to picture data
+ Bitmap_s pic = { 64, // XSize
+ 64, // YSize
+ 8, // Bytes in Line
+ burp // Pointer to picture data
};
- tmr.reset();
- myLCD->cls();
- myLCD->Bitmap_BW(bmp, myLCD->width() - 64, 0);
+ myLCD->Bitmap_BW(pic, myLCD->width() - 64, 0);
time1 = tmr.read_us();
- myLCD->locate(2, 75);
+ myLCD->locate(2, 55);
myLCD->printf("bmp: %.3fms", (float)time1 / 1000);
printf("bmp: %.3fms\r\n", (float)time1 / 1000);
- thread_sleep_for(2000);
- /* Large font test */
+ ThisThread::sleep_for(2000);
myLCD->cls();
- myLCD->set_font((unsigned char*)Arial43x48_digits, 46, 58, false); /* only digits, variable-width disabled */
+ myLCD->set_font((unsigned char*)Arial43x48_digits, 46, 58, false); /* only numbers, variable-width disabled */
tmr.reset();
+
myLCD->locate(0, 0);
myLCD->printf("%d", 12345);
time1 = tmr.read_us();
- myLCD->locate(2, 75);
+ myLCD->locate(2, 55);
myLCD->set_font((unsigned char*)Arial12x12);
- myLCD->printf("Large Font: %.3fms", (float)time1 / 1000);
- printf("Large Font: %.3fms\r\n", (float)time1 / 1000);
- thread_sleep_for(2000);
+ myLCD->printf("Big Font: %.3fms", (float)time1 / 1000);
+ printf("Big Font: %.3fms\r\n", (float)time1 / 1000);
- /* Sparse pixels test */
+ ThisThread::sleep_for(2000);
+ /* sparse pixels test */
myLCD->cls();
myLCD->FastWindow(false);
tmr.reset();
+
for (unsigned int i = 0; i < 20000; i++) {
myLCD->pixel((i + (i * 89)) % myLCD->width(), (i + (i * 61)) % myLCD->height(), White);
}
+ myLCD->copy_to_lcd();
time1 = tmr.read_us();
- thread_sleep_for(2000);
+ ThisThread::sleep_for(2000);
myLCD->cls();
myLCD->FastWindow(true);
tmr.reset();
+
for (unsigned int i = 0; i < 20000; i++) {
myLCD->pixel((i + (i * 89)) % myLCD->width(), (i + (i * 61)) % myLCD->height(), White);
}
+ myLCD->copy_to_lcd();
time2 = tmr.read_us();
myLCD->cls();
- myLCD->locate(2, 75);
+ myLCD->locate(2, 55);
myLCD->printf("std:%.3fms fastw:%.3fms", (float)time1 / 1000, (float)time2 / 1000);
printf("std: %.3fms fastw: %.3fms\r\n", (float)time1 / 1000, (float)time2 / 1000);
- thread_sleep_for(2000);
- /* Scroll test */
+ ThisThread::sleep_for(2000);
+ /* scroll test, only for TFT */
myLCD->cls();
myLCD->set_font((unsigned char*)Arial24x23);
myLCD->locate(2, 10);
@@ -266,33 +283,33 @@
myLCD->rect(0, 0, myLCD->width() - 1, myLCD->height() - 1, White);
myLCD->rect(1, 1, myLCD->width() - 2, myLCD->height() - 2, Blue);
myLCD->setscrollarea(0, myLCD->sizeY());
- thread_sleep_for(1000);
+ ThisThread::sleep_for(1000);
myLCD->scroll(1); /* up 1 */
- thread_sleep_for(1000);
+ ThisThread::sleep_for(1000);
myLCD->scroll(0); /* center */
- thread_sleep_for(1000);
+ ThisThread::sleep_for(1000);
myLCD->scroll(myLCD->sizeY() - 1); /* down 1 */
- thread_sleep_for(1000);
+ ThisThread::sleep_for(1000);
myLCD->scroll(myLCD->sizeY()); /* same as 0, center */
- thread_sleep_for(1000);
+ ThisThread::sleep_for(1000);
myLCD->scroll(myLCD->sizeY() >> 1); /* half screen */
- thread_sleep_for(1000);
+ ThisThread::sleep_for(1000);
myLCD->scrollreset(); /* center */
- thread_sleep_for(1000);
+ ThisThread::sleep_for(1000);
for (unsigned short i = 1; i <= myLCD->sizeY(); i++) {
myLCD->scroll(i);
- thread_sleep_for(2);
+ ThisThread::sleep_for(2);
}
- thread_sleep_for(2000);
- /* Color inversion */
+ ThisThread::sleep_for(2000);
+ /* color inversion */
for (unsigned short i = 0; i <= 8; i++) {
myLCD->invert(i & 1);
- thread_sleep_for(200);
+ ThisThread::sleep_for(200);
}
- thread_sleep_for(2000);
- /* 16bit bitmap test */
+ ThisThread::sleep_for(2000);
+ /* bmp 16bit test */
myLCD->cls();
tmr.reset();
for (int y = 0; y < myLCD->height(); y += 34) {
@@ -300,14 +317,13 @@
myLCD->Bitmap(x, y, 48, 34, (unsigned char*)pavement_48x34);
}
time1 = tmr.read_us();
- myLCD->locate(2, 75);
+ myLCD->locate(2, 55);
myLCD->set_font((unsigned char*)Arial12x12);
- myLCD->printf("16bit bitmap speed: %.3fms", (float)time1 / 1000);
- printf("16bit bitmap speed: %.3fms\r\n", (float)time1 / 1000);
- thread_sleep_for(2000);
+ myLCD->printf("Bmp speed: %.3fms", (float)time1 / 1000);
+ printf("Bmp speed: %.3fms\r\n", (float)time1 / 1000);
- /* Drawing random lines */
- for (int i = 0; i < 6000; i++) {
+ ThisThread::sleep_for(2000);
+ for (int i = 0; i < 3000; i++) {
int x1 = rand() % myLCD->width();
int y1 = rand() % myLCD->height();
@@ -321,7 +337,6 @@
myLCD->line(x1, y1, x2, y2, RGB(r, g, b));
}
- /* Drawing text at random position */
for (int i = 0; i < 3000; i++) {
int x1 = rand() % myLCD->width();
int y1 = rand() % myLCD->height();
@@ -335,8 +350,7 @@
myLCD->printf("Hello World");
}
- /* Drawing random pixels */
- for (int i = 0; i < 500000; i++) {
+ for (unsigned int i = 0; i < 200000; i++) {
int x1 = rand() % myLCD->width();
int y1 = rand() % myLCD->height();
@@ -347,8 +361,7 @@
myLCD->pixel(x1, y1, RGB(r, g, b));
}
- /* Drawing random rectangles */
- for (int i = 0; i < 500; i++) {
+ for (int i = 0; i < 1000; i++) {
int x1 = rand() % myLCD->width();
int y1 = rand() % myLCD->height();
@@ -359,9 +372,24 @@
int g = rand() % 0xff;
int b = rand() % 0xff;
+ //myLCD->rect(x1, y1, x2, y2, RGB(r, g, b));
myLCD->fillrect(x1, y1, x2, y2, RGB(r, g, b));
}
+// for (int i = 0; i < 1500; i++) {
+// int x1 = rand() % myLCD->width();
+// int y1 = rand() % myLCD->height();
+
+// int rad = rand() % myLCD->height() / 2;
+
+// int r = rand() % 0xff;
+// int g = rand() % 0xff;
+// int b = rand() % 0xff;
+
+// myLCD->circle(x1, y1, rad, RGB(r, g, b));
+// myLCD->fillcircle(x1, y1, rad, RGB(r, g, b));
+// }
+
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
@@ -373,45 +401,102 @@
* @brief System Clock Configuration
* @retval None
*/
-//void SystemClock_Config(void)
-//{
-// RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };
-// RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };
-// RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
-// /** Configure the main internal regulator output voltage
-//*/
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
+ /** Configure the main internal regulator output voltage
+*/
+
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
-// __HAL_RCC_PWR_CLK_ENABLE();
-// __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+ /** Initializes the CPU, AHB and APB busses clocks
+*/
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 8;
+ RCC_OscInitStruct.PLL.PLLN = 336;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 7;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
+ Error_Handler();
+ }
-// /** Initializes the CPU, AHB and APB busses clocks
-//*/
-// RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
-// RCC_OscInitStruct.HSEState = RCC_HSE_ON;
-// RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
-// RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
-// RCC_OscInitStruct.PLL.PLLM = 8;
-// RCC_OscInitStruct.PLL.PLLN = 336;
-// RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
-// RCC_OscInitStruct.PLL.PLLQ = 7;
-// if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
+ /** Initializes the CPU, AHB and APB busses clocks
+*/
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
+ Error_Handler();
+ }
+
+ // PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2S;
+ // PeriphClkInitStruct.PLLI2S.PLLI2SN = 316;
+ // PeriphClkInitStruct.PLLI2S.PLLI2SR = 7;
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
+ Error_Handler();
+ }
+}
+
+/**
+* @brief I2S3 Initialization Function
+* @param None
+* @retval None
+*/
+//static void MX_I2S3_Init(void)
+//{
+// /* USER CODE BEGIN I2S3_Init 0 */
+// /* USER CODE END I2S3_Init 0 */
+// /* USER CODE BEGIN I2S3_Init 1 */
+// /* USER CODE END I2S3_Init 1 */
+// hi2s3.Instance = SPI3;
+// hi2s3.Init.Mode = I2S_MODE_MASTER_TX;
+// hi2s3.Init.Standard = I2S_STANDARD_PHILIPS;
+// hi2s3.Init.DataFormat = I2S_DATAFORMAT_16B;
+// hi2s3.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
+// hi2s3.Init.AudioFreq = I2S_AUDIOFREQ_44K;
+// hi2s3.Init.CPOL = I2S_CPOL_LOW;
+// hi2s3.Init.ClockSource = I2S_CLOCK_PLL;
+// hi2s3.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_DISABLE;
+// if (HAL_I2S_Init(&hi2s3) != HAL_OK) {
// Error_Handler();
// }
-
-// /** Initializes the CPU, AHB and APB busses clocks
-//*/
-// RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
-// RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
-// RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
-// RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
-// RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
-// if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
+// /* USER CODE BEGIN I2S3_Init 2 */
+// /* USER CODE END I2S3_Init 2 */
+//}
+/**
+* @brief USB_OTG_FS Initialization Function
+* @param None
+* @retval None
+*/
+//static void MX_USB_OTG_FS_PCD_Init(void)
+//{
+// /* USER CODE BEGIN USB_OTG_FS_Init 0 */
+// /* USER CODE END USB_OTG_FS_Init 0 */
+// /* USER CODE BEGIN USB_OTG_FS_Init 1 */
+// /* USER CODE END USB_OTG_FS_Init 1 */
+// hpcd_USB_OTG_FS.Instance = USB_OTG_FS;
+// hpcd_USB_OTG_FS.Init.dev_endpoints = 4;
+// hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL;
+// hpcd_USB_OTG_FS.Init.dma_enable = DISABLE;
+// hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
+// hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE;
+// hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE;
+// hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE;
+// hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE;
+// hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE;
+// if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK) {
// Error_Handler();
// }
-
-// if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
-// Error_Handler();
-// }
+// /* USER CODE BEGIN USB_OTG_FS_Init 2 */
+// /* USER CODE END USB_OTG_FS_Init 2 */
//}
/**
--- a/mbed-os.lib Sun May 10 10:44:31 2020 +0000 +++ b/mbed-os.lib Fri Sep 25 14:52:27 2020 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#cf4f12a123c05fcae83fc56d76442015cb8a39e9 +https://github.com/ARMmbed/mbed-os/#0db72d0cf26539016efbe38f80d6f2cb7a3d4414
--- a/mbed_app.json Sun May 10 10:44:31 2020 +0000
+++ b/mbed_app.json Fri Sep 25 14:52:27 2020 +0000
@@ -1,4 +1,6 @@
-{
- "macros" : ["STM32F407xx"]
-}
-
+{
+ "macros": [
+ "MBED_CONF_TARGET_STDIO_UART_TX=PA_9",
+ "MBED_CONF_TARGET_STDIO_UART_RX=PA_10"
+ ]
+}
\ No newline at end of file
--- a/stm32f4xx_hal_conf.h Sun May 10 10:44:31 2020 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,444 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f4xx_hal_conf_template.h
- * @author MCD Application Team
- * @brief HAL configuration template file.
- * This file should be copied to the application folder and renamed
- * to stm32f4xx_hal_conf.h.
- ******************************************************************************
- * @attention
- *
- * <h2><center>© Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at:
- * opensource.org/licenses/BSD-3-Clause
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F4xx_HAL_CONF_H
-#define __STM32F4xx_HAL_CONF_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-/* ########################## Module Selection ############################## */
-/**
- * @brief This is the list of modules to be used in the HAL driver
- */
-#define HAL_MODULE_ENABLED
-
- /* #define HAL_ADC_MODULE_ENABLED */
-/* #define HAL_CRYP_MODULE_ENABLED */
-/* #define HAL_CAN_MODULE_ENABLED */
-/* #define HAL_CRC_MODULE_ENABLED */
-/* #define HAL_CRYP_MODULE_ENABLED */
-/* #define HAL_DAC_MODULE_ENABLED */
-/* #define HAL_DCMI_MODULE_ENABLED */
-/* #define HAL_DMA2D_MODULE_ENABLED */
-/* #define HAL_ETH_MODULE_ENABLED */
-/* #define HAL_NAND_MODULE_ENABLED */
-/* #define HAL_NOR_MODULE_ENABLED */
-/* #define HAL_PCCARD_MODULE_ENABLED */
-#define HAL_SRAM_MODULE_ENABLED
-/* #define HAL_SDRAM_MODULE_ENABLED */
-/* #define HAL_HASH_MODULE_ENABLED */
-/* #define HAL_I2C_MODULE_ENABLED */
-/* #define HAL_I2S_MODULE_ENABLED */
-/* #define HAL_IWDG_MODULE_ENABLED */
-/* #define HAL_LTDC_MODULE_ENABLED */
-/* #define HAL_RNG_MODULE_ENABLED */
-/* #define HAL_RTC_MODULE_ENABLED */
-/* #define HAL_SAI_MODULE_ENABLED */
-/* #define HAL_SD_MODULE_ENABLED */
-/* #define HAL_MMC_MODULE_ENABLED */
-/* #define HAL_SPI_MODULE_ENABLED */
-/* #define HAL_TIM_MODULE_ENABLED */
-/* #define HAL_UART_MODULE_ENABLED */
-/* #define HAL_USART_MODULE_ENABLED */
-/* #define HAL_IRDA_MODULE_ENABLED */
-/* #define HAL_SMARTCARD_MODULE_ENABLED */
-/* #define HAL_SMBUS_MODULE_ENABLED */
-/* #define HAL_WWDG_MODULE_ENABLED */
-/* #define HAL_PCD_MODULE_ENABLED */
-/* #define HAL_HCD_MODULE_ENABLED */
-/* #define HAL_DSI_MODULE_ENABLED */
-/* #define HAL_QSPI_MODULE_ENABLED */
-/* #define HAL_QSPI_MODULE_ENABLED */
-/* #define HAL_CEC_MODULE_ENABLED */
-/* #define HAL_FMPI2C_MODULE_ENABLED */
-/* #define HAL_SPDIFRX_MODULE_ENABLED */
-/* #define HAL_DFSDM_MODULE_ENABLED */
-/* #define HAL_LPTIM_MODULE_ENABLED */
-#define HAL_GPIO_MODULE_ENABLED
-#define HAL_EXTI_MODULE_ENABLED
-#define HAL_DMA_MODULE_ENABLED
-#define HAL_RCC_MODULE_ENABLED
-#define HAL_FLASH_MODULE_ENABLED
-#define HAL_PWR_MODULE_ENABLED
-#define HAL_CORTEX_MODULE_ENABLED
-
-/* ########################## HSE/HSI Values adaptation ##################### */
-/**
- * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
- * This value is used by the RCC HAL module to compute the system frequency
- * (when HSE is used as system clock source, directly or through the PLL).
- */
-#if !defined (HSE_VALUE)
- #define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */
-#endif /* HSE_VALUE */
-
-#if !defined (HSE_STARTUP_TIMEOUT)
- #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */
-#endif /* HSE_STARTUP_TIMEOUT */
-
-/**
- * @brief Internal High Speed oscillator (HSI) value.
- * This value is used by the RCC HAL module to compute the system frequency
- * (when HSI is used as system clock source, directly or through the PLL).
- */
-#if !defined (HSI_VALUE)
- #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/
-#endif /* HSI_VALUE */
-
-/**
- * @brief Internal Low Speed oscillator (LSI) value.
- */
-#if !defined (LSI_VALUE)
- #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/
-#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
- The real value may vary depending on the variations
- in voltage and temperature.*/
-/**
- * @brief External Low Speed oscillator (LSE) value.
- */
-#if !defined (LSE_VALUE)
- #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External Low Speed oscillator in Hz */
-#endif /* LSE_VALUE */
-
-#if !defined (LSE_STARTUP_TIMEOUT)
- #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */
-#endif /* LSE_STARTUP_TIMEOUT */
-
-/**
- * @brief External clock source for I2S peripheral
- * This value is used by the I2S HAL module to compute the I2S clock source
- * frequency, this source is inserted directly through I2S_CKIN pad.
- */
-#if !defined (EXTERNAL_CLOCK_VALUE)
- #define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the External audio frequency in Hz*/
-#endif /* EXTERNAL_CLOCK_VALUE */
-
-/* Tip: To avoid modifying this file each time you need to use different HSE,
- === you can define the HSE value in your toolchain compiler preprocessor. */
-
-/* ########################### System Configuration ######################### */
-/**
- * @brief This is the HAL system configuration section
- */
-#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */
-#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */
-#define USE_RTOS 0U
-#define PREFETCH_ENABLE 1U
-#define INSTRUCTION_CACHE_ENABLE 1U
-#define DATA_CACHE_ENABLE 1U
-
-/* ########################## Assert Selection ############################## */
-/**
- * @brief Uncomment the line below to expanse the "assert_param" macro in the
- * HAL drivers code
- */
-/* #define USE_FULL_ASSERT 1U */
-
-/* ################## Ethernet peripheral configuration ##################### */
-
-/* Section 1 : Ethernet peripheral configuration */
-
-/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
-#define MAC_ADDR0 2U
-#define MAC_ADDR1 0U
-#define MAC_ADDR2 0U
-#define MAC_ADDR3 0U
-#define MAC_ADDR4 0U
-#define MAC_ADDR5 0U
-
-/* Definition of the Ethernet driver buffers size and count */
-#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */
-#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */
-#define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */
-#define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */
-
-/* Section 2: PHY configuration section */
-
-/* DP83848_PHY_ADDRESS Address*/
-#define DP83848_PHY_ADDRESS 0x01U
-/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
-#define PHY_RESET_DELAY ((uint32_t)0x000000FFU)
-/* PHY Configuration delay */
-#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU)
-
-#define PHY_READ_TO ((uint32_t)0x0000FFFFU)
-#define PHY_WRITE_TO ((uint32_t)0x0000FFFFU)
-
-/* Section 3: Common PHY Registers */
-
-#define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */
-#define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */
-
-#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */
-#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */
-#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */
-#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */
-#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */
-#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */
-#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */
-#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */
-#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */
-#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */
-
-#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */
-#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */
-#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */
-
-/* Section 4: Extended PHY Registers */
-#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */
-
-#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */
-#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */
-
-/* ################## SPI peripheral configuration ########################## */
-
-/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
-* Activated: CRC code is present inside driver
-* Deactivated: CRC code cleaned from driver
-*/
-
-#define USE_SPI_CRC 0U
-
-/* Includes ------------------------------------------------------------------*/
-/**
- * @brief Include module's header file
- */
-
-#ifdef HAL_RCC_MODULE_ENABLED
- #include "stm32f4xx_hal_rcc.h"
-#endif /* HAL_RCC_MODULE_ENABLED */
-
-#ifdef HAL_EXTI_MODULE_ENABLED
- #include "stm32f4xx_hal_exti.h"
-#endif /* HAL_EXTI_MODULE_ENABLED */
-
-#ifdef HAL_GPIO_MODULE_ENABLED
- #include "stm32f4xx_hal_gpio.h"
-#endif /* HAL_GPIO_MODULE_ENABLED */
-
-#ifdef HAL_DMA_MODULE_ENABLED
- #include "stm32f4xx_hal_dma.h"
-#endif /* HAL_DMA_MODULE_ENABLED */
-
-#ifdef HAL_CORTEX_MODULE_ENABLED
- #include "stm32f4xx_hal_cortex.h"
-#endif /* HAL_CORTEX_MODULE_ENABLED */
-
-#ifdef HAL_ADC_MODULE_ENABLED
- #include "stm32f4xx_hal_adc.h"
-#endif /* HAL_ADC_MODULE_ENABLED */
-
-#ifdef HAL_CAN_MODULE_ENABLED
- #include "stm32f4xx_hal_can.h"
-#endif /* HAL_CAN_MODULE_ENABLED */
-
-#ifdef HAL_CRC_MODULE_ENABLED
- #include "stm32f4xx_hal_crc.h"
-#endif /* HAL_CRC_MODULE_ENABLED */
-
-#ifdef HAL_CRYP_MODULE_ENABLED
- #include "stm32f4xx_hal_cryp.h"
-#endif /* HAL_CRYP_MODULE_ENABLED */
-
-#ifdef HAL_SMBUS_MODULE_ENABLED
-#include "stm32f4xx_hal_smbus.h"
-#endif /* HAL_SMBUS_MODULE_ENABLED */
-
-#ifdef HAL_DMA2D_MODULE_ENABLED
- #include "stm32f4xx_hal_dma2d.h"
-#endif /* HAL_DMA2D_MODULE_ENABLED */
-
-#ifdef HAL_DAC_MODULE_ENABLED
- #include "stm32f4xx_hal_dac.h"
-#endif /* HAL_DAC_MODULE_ENABLED */
-
-#ifdef HAL_DCMI_MODULE_ENABLED
- #include "stm32f4xx_hal_dcmi.h"
-#endif /* HAL_DCMI_MODULE_ENABLED */
-
-#ifdef HAL_ETH_MODULE_ENABLED
- #include "stm32f4xx_hal_eth.h"
-#endif /* HAL_ETH_MODULE_ENABLED */
-
-#ifdef HAL_FLASH_MODULE_ENABLED
- #include "stm32f4xx_hal_flash.h"
-#endif /* HAL_FLASH_MODULE_ENABLED */
-
-#ifdef HAL_SRAM_MODULE_ENABLED
- #include "stm32f4xx_hal_sram.h"
-#endif /* HAL_SRAM_MODULE_ENABLED */
-
-#ifdef HAL_NOR_MODULE_ENABLED
- #include "stm32f4xx_hal_nor.h"
-#endif /* HAL_NOR_MODULE_ENABLED */
-
-#ifdef HAL_NAND_MODULE_ENABLED
- #include "stm32f4xx_hal_nand.h"
-#endif /* HAL_NAND_MODULE_ENABLED */
-
-#ifdef HAL_PCCARD_MODULE_ENABLED
- #include "stm32f4xx_hal_pccard.h"
-#endif /* HAL_PCCARD_MODULE_ENABLED */
-
-#ifdef HAL_SDRAM_MODULE_ENABLED
- #include "stm32f4xx_hal_sdram.h"
-#endif /* HAL_SDRAM_MODULE_ENABLED */
-
-#ifdef HAL_HASH_MODULE_ENABLED
- #include "stm32f4xx_hal_hash.h"
-#endif /* HAL_HASH_MODULE_ENABLED */
-
-#ifdef HAL_I2C_MODULE_ENABLED
- #include "stm32f4xx_hal_i2c.h"
-#endif /* HAL_I2C_MODULE_ENABLED */
-
-#ifdef HAL_I2S_MODULE_ENABLED
- #include "stm32f4xx_hal_i2s.h"
-#endif /* HAL_I2S_MODULE_ENABLED */
-
-#ifdef HAL_IWDG_MODULE_ENABLED
- #include "stm32f4xx_hal_iwdg.h"
-#endif /* HAL_IWDG_MODULE_ENABLED */
-
-#ifdef HAL_LTDC_MODULE_ENABLED
- #include "stm32f4xx_hal_ltdc.h"
-#endif /* HAL_LTDC_MODULE_ENABLED */
-
-#ifdef HAL_PWR_MODULE_ENABLED
- #include "stm32f4xx_hal_pwr.h"
-#endif /* HAL_PWR_MODULE_ENABLED */
-
-#ifdef HAL_RNG_MODULE_ENABLED
- #include "stm32f4xx_hal_rng.h"
-#endif /* HAL_RNG_MODULE_ENABLED */
-
-#ifdef HAL_RTC_MODULE_ENABLED
- #include "stm32f4xx_hal_rtc.h"
-#endif /* HAL_RTC_MODULE_ENABLED */
-
-#ifdef HAL_SAI_MODULE_ENABLED
- #include "stm32f4xx_hal_sai.h"
-#endif /* HAL_SAI_MODULE_ENABLED */
-
-#ifdef HAL_SD_MODULE_ENABLED
- #include "stm32f4xx_hal_sd.h"
-#endif /* HAL_SD_MODULE_ENABLED */
-
-#ifdef HAL_MMC_MODULE_ENABLED
- #include "stm32f4xx_hal_mmc.h"
-#endif /* HAL_MMC_MODULE_ENABLED */
-
-#ifdef HAL_SPI_MODULE_ENABLED
- #include "stm32f4xx_hal_spi.h"
-#endif /* HAL_SPI_MODULE_ENABLED */
-
-#ifdef HAL_TIM_MODULE_ENABLED
- #include "stm32f4xx_hal_tim.h"
-#endif /* HAL_TIM_MODULE_ENABLED */
-
-#ifdef HAL_UART_MODULE_ENABLED
- #include "stm32f4xx_hal_uart.h"
-#endif /* HAL_UART_MODULE_ENABLED */
-
-#ifdef HAL_USART_MODULE_ENABLED
- #include "stm32f4xx_hal_usart.h"
-#endif /* HAL_USART_MODULE_ENABLED */
-
-#ifdef HAL_IRDA_MODULE_ENABLED
- #include "stm32f4xx_hal_irda.h"
-#endif /* HAL_IRDA_MODULE_ENABLED */
-
-#ifdef HAL_SMARTCARD_MODULE_ENABLED
- #include "stm32f4xx_hal_smartcard.h"
-#endif /* HAL_SMARTCARD_MODULE_ENABLED */
-
-#ifdef HAL_WWDG_MODULE_ENABLED
- #include "stm32f4xx_hal_wwdg.h"
-#endif /* HAL_WWDG_MODULE_ENABLED */
-
-#ifdef HAL_PCD_MODULE_ENABLED
- #include "stm32f4xx_hal_pcd.h"
-#endif /* HAL_PCD_MODULE_ENABLED */
-
-#ifdef HAL_HCD_MODULE_ENABLED
- #include "stm32f4xx_hal_hcd.h"
-#endif /* HAL_HCD_MODULE_ENABLED */
-
-#ifdef HAL_DSI_MODULE_ENABLED
- #include "stm32f4xx_hal_dsi.h"
-#endif /* HAL_DSI_MODULE_ENABLED */
-
-#ifdef HAL_QSPI_MODULE_ENABLED
- #include "stm32f4xx_hal_qspi.h"
-#endif /* HAL_QSPI_MODULE_ENABLED */
-
-#ifdef HAL_CEC_MODULE_ENABLED
- #include "stm32f4xx_hal_cec.h"
-#endif /* HAL_CEC_MODULE_ENABLED */
-
-#ifdef HAL_FMPI2C_MODULE_ENABLED
- #include "stm32f4xx_hal_fmpi2c.h"
-#endif /* HAL_FMPI2C_MODULE_ENABLED */
-
-#ifdef HAL_SPDIFRX_MODULE_ENABLED
- #include "stm32f4xx_hal_spdifrx.h"
-#endif /* HAL_SPDIFRX_MODULE_ENABLED */
-
-#ifdef HAL_DFSDM_MODULE_ENABLED
- #include "stm32f4xx_hal_dfsdm.h"
-#endif /* HAL_DFSDM_MODULE_ENABLED */
-
-#ifdef HAL_LPTIM_MODULE_ENABLED
- #include "stm32f4xx_hal_lptim.h"
-#endif /* HAL_LPTIM_MODULE_ENABLED */
-
-/* Exported macro ------------------------------------------------------------*/
-#ifdef USE_FULL_ASSERT
-/**
- * @brief The assert_param macro is used for function's parameters check.
- * @param expr: If expr is false, it calls assert_failed function
- * which reports the name of the source file and the source
- * line number of the call that failed.
- * If expr is true, it returns no value.
- * @retval None
- */
- #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
-/* Exported functions ------------------------------------------------------- */
- void assert_failed(uint8_t* file, uint32_t line);
-#else
- #define assert_param(expr) ((void)0U)
-#endif /* USE_FULL_ASSERT */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F4xx_HAL_CONF_H */
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
--- a/stm32f4xx_hal_msp.c Sun May 10 10:44:31 2020 +0000 +++ b/stm32f4xx_hal_msp.c Fri Sep 25 14:52:27 2020 +0000 @@ -188,4 +188,3 @@ /* USER CODE END 1 */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ -
--- a/stm32f4xx_it_msp.c Sun May 10 10:44:31 2020 +0000 +++ b/stm32f4xx_it_msp.c Fri Sep 25 14:52:27 2020 +0000 @@ -201,4 +201,3 @@ /* USER CODE END 1 */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ -
--- a/stm32f4xx_it_msp.h Sun May 10 10:44:31 2020 +0000 +++ b/stm32f4xx_it_msp.h Fri Sep 25 14:52:27 2020 +0000 @@ -67,4 +67,3 @@ #endif /* __STM32F4xx_IT_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ -