53 #define USB_AUDIO_INPUT 88 #define LAYER0_ADDRESS (LCD_FB_START_ADDRESS) 91 #define DEFAULT_THREAD_STACKSIZE 500 92 #define AUDIO_THREAD_PRIO (tskIDLE_PRIORITY+2) //osPriorityNormal 93 #define UARTCMD_THREAD_PRIO (tskIDLE_PRIORITY+1) //osPriorityNormal 96 static __IO int32_t front_buffer = 0;
97 static __IO int32_t pend_buffer = -1;
99 static const uint32_t Buffers[] =
110 static void OnError_Handler(uint32_t condition);
112 static void CopyBuffer(uint32_t *pSrc,
119 static uint8_t LCD_Init(
void);
121 static int GetInterfaceSelection(
int *outSelection,
int *sampleRate);
122 static void LCD_Config(
void);
124 static void MX_GPIO_Init(
void);
125 static void MX_DMA_Init(
void);
126 static void MX_SPDIFRX_Init(
void);
128 static void Audio_Thread(
void const * argument);
136 static void UARTCmd_Thread(
void const * argument);
141 #define SCRATCH_BUFF_SIZE (AUDIO_OUT_BUFFER_SIZE/sizeof(int32_t)) 151 static void OnError_Handler(uint32_t condition)
160 static void TIM_Start(
void)
233 #if defined(__GNUC__) 256 static void Audio_Thread(
void const * argument)
258 int ifSelection, outSelection;
259 int sampleFreq = 48000;
262 ifSelection = GetInterfaceSelection(&outSelection, &sampleFreq);
274 if (ifSelection == 4)
280 if (ifSelection == 3)
291 if (ifSelection == 2)
303 if (ifSelection == 1)
309 if (ifSelection == 0)
346 extern u16_t UDANTE_UDPPort;
351 if ((UDANTE_IPAddr.addr != 0) && ( ! done))
360 sprintf((
char*)iptxt,
"uDANTE: %ld.%ld.%ld.%ld | %d", UDANTE_IPAddr.addr & 0xFF, UDANTE_IPAddr.addr >> 8 & 0xFF, UDANTE_IPAddr.addr >> 16 & 0xFF, UDANTE_IPAddr.addr >> 24 & 0xFF,
396 static float sMaxLoad = 0.0f;
404 sMaxLoadInt = (int)(sMaxLoad * 10.0);
405 sprintf(text,
"%3d.%1d%%", sMaxLoadInt / 10, sMaxLoadInt % 10);
407 if (sMaxLoad > 30.0f)
412 if (sMaxLoad > 0.05f)
429 void LCD_Config(
void)
431 uint8_t lcd_status =
LCD_OK;
434 lcd_status = LCD_Init();
435 OnError_Handler(lcd_status !=
LCD_OK);
450 int GetInterfaceSelection(
int *outSelection,
int *sampleRate)
474 if ((tsState.
touchY[0] > 44) && (tsState.
touchY[0] < 144))
476 if ((tsState.
touchX[0] > 260) && (tsState.
touchX[0] < 360))
480 if ((tsState.
touchX[0] > 660) && (tsState.
touchX[0] < 760))
486 if ((tsState.
touchY[0] > 200) && (tsState.
touchY[0] < 300))
488 if ((tsState.
touchX[0] > 260) && (tsState.
touchX[0] < 360))
492 if ((tsState.
touchX[0] > 660) && (tsState.
touchX[0] < 760))
496 if ((tsState.
touchX[0] > 390) && (tsState.
touchX[0] < 620))
505 if ((tsState.
touchY[0] > 356) && (tsState.
touchY[0] < 456))
507 if ((tsState.
touchX[0] > 60) && (tsState.
touchX[0] < 160))
512 if ((tsState.
touchX[0] > 260) && (tsState.
touchX[0] < 360))
517 if ((tsState.
touchX[0] > 460) && (tsState.
touchX[0] < 560))
522 if ((tsState.
touchX[0] > 660) && (tsState.
touchX[0] < 760))
579 CopyBuffer((uint32_t *)Buffers[0], (uint32_t *)Buffers[1], 0, 0, 800, 480);
598 LTDC_LAYER(&
hltdc_discovery, 0)->CFBAR = ((uint32_t)Buffers[pend_buffer]);
603 front_buffer = pend_buffer;
618 static uint8_t LCD_Init(
void)
657 CmdCfg.VirtualChannelID = 0;
658 CmdCfg.HSPolarity = DSI_HSYNC_ACTIVE_HIGH;
659 CmdCfg.VSPolarity = DSI_VSYNC_ACTIVE_HIGH;
660 CmdCfg.DEPolarity = DSI_DATA_ENABLE_ACTIVE_HIGH;
661 CmdCfg.ColorCoding = DSI_RGB888;
663 CmdCfg.TearingEffectSource = DSI_TE_DSILINK;
664 CmdCfg.TearingEffectPolarity = DSI_TE_RISING_EDGE;
665 CmdCfg.VSyncPol = DSI_VSYNC_FALLING;
666 CmdCfg.AutomaticRefresh = DSI_AR_DISABLE;
667 CmdCfg.TEAcknowledgeRequest = DSI_TE_ACKNOWLEDGE_ENABLE;
670 LPCmd.LPGenShortWriteNoP = DSI_LP_GSW0P_ENABLE;
671 LPCmd.LPGenShortWriteOneP = DSI_LP_GSW1P_ENABLE;
672 LPCmd.LPGenShortWriteTwoP = DSI_LP_GSW2P_ENABLE;
673 LPCmd.LPGenShortReadNoP = DSI_LP_GSR0P_ENABLE;
674 LPCmd.LPGenShortReadOneP = DSI_LP_GSR1P_ENABLE;
675 LPCmd.LPGenShortReadTwoP = DSI_LP_GSR2P_ENABLE;
676 LPCmd.LPGenLongWrite = DSI_LP_GLW_ENABLE;
677 LPCmd.LPDcsShortWriteNoP = DSI_LP_DSW0P_ENABLE;
678 LPCmd.LPDcsShortWriteOneP = DSI_LP_DSW1P_ENABLE;
679 LPCmd.LPDcsShortReadNoP = DSI_LP_DSR0P_ENABLE;
680 LPCmd.LPDcsLongWrite = DSI_LP_DLW_ENABLE;
694 LPCmd.LPGenShortWriteNoP = DSI_LP_GSW0P_DISABLE;
695 LPCmd.LPGenShortWriteOneP = DSI_LP_GSW1P_DISABLE;
696 LPCmd.LPGenShortWriteTwoP = DSI_LP_GSW2P_DISABLE;
697 LPCmd.LPGenShortReadNoP = DSI_LP_GSR0P_DISABLE;
698 LPCmd.LPGenShortReadOneP = DSI_LP_GSR1P_DISABLE;
699 LPCmd.LPGenShortReadTwoP = DSI_LP_GSR2P_DISABLE;
700 LPCmd.LPGenLongWrite = DSI_LP_GLW_DISABLE;
701 LPCmd.LPDcsShortWriteNoP = DSI_LP_DSW0P_DISABLE;
702 LPCmd.LPDcsShortWriteOneP = DSI_LP_DSW1P_DISABLE;
703 LPCmd.LPDcsShortReadNoP = DSI_LP_DSR0P_DISABLE;
704 LPCmd.LPDcsLongWrite = DSI_LP_DLW_DISABLE;
759 static void CopyBuffer(uint32_t *pSrc, uint32_t *pDst, uint16_t x, uint16_t y, uint16_t xsize, uint16_t ysize)
761 uint32_t destination = (uint32_t)pDst + (y * 800 + x) * 4;
762 uint32_t source = (uint32_t)pSrc;
768 hdma2d.
Init.AlphaInverted = DMA2D_REGULAR_ALPHA;
769 hdma2d.
Init.RedBlueSwap = DMA2D_RB_REGULAR;
779 hdma2d.
LayerCfg[1].RedBlueSwap = DMA2D_RB_REGULAR;
780 hdma2d.
LayerCfg[1].AlphaInverted = DMA2D_REGULAR_ALPHA;
808 MPU_Region_InitTypeDef MPU_InitStruct;
814 MPU_InitStruct.Enable = MPU_REGION_ENABLE;
815 MPU_InitStruct.BaseAddress = 0x20010000;
816 MPU_InitStruct.Size = MPU_REGION_SIZE_512KB;
817 MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
818 MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
819 MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
820 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
821 MPU_InitStruct.Number = MPU_REGION_NUMBER0;
822 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
823 MPU_InitStruct.SubRegionDisable = 0x00;
824 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
826 HAL_MPU_ConfigRegion(&MPU_InitStruct);
829 MPU_InitStruct.Enable = MPU_REGION_ENABLE;
830 MPU_InitStruct.BaseAddress = 0xC0000000;
831 MPU_InitStruct.Size = MPU_REGION_SIZE_256MB;
832 MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
833 MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
834 MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
835 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
836 MPU_InitStruct.Number = MPU_REGION_NUMBER2;
837 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
838 MPU_InitStruct.SubRegionDisable = 0x00;
839 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
841 HAL_MPU_ConfigRegion(&MPU_InitStruct);
844 MPU_InitStruct.Enable = MPU_REGION_ENABLE;
845 MPU_InitStruct.BaseAddress = 0xC0000000;
846 MPU_InitStruct.Size = MPU_REGION_SIZE_8MB;
847 MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
848 MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
849 MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
850 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
851 MPU_InitStruct.Number = MPU_REGION_NUMBER3;
852 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
853 MPU_InitStruct.SubRegionDisable = 0x00;
854 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
856 HAL_MPU_ConfigRegion(&MPU_InitStruct);
859 MPU_InitStruct.Enable = MPU_REGION_ENABLE;
860 MPU_InitStruct.BaseAddress = 0x90000000;
861 MPU_InitStruct.Size = MPU_REGION_SIZE_256MB;
862 MPU_InitStruct.AccessPermission = MPU_REGION_PRIV_RO;
863 MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
864 MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
865 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
866 MPU_InitStruct.Number = MPU_REGION_NUMBER4;
867 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
868 MPU_InitStruct.SubRegionDisable = 0x00;
869 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
871 HAL_MPU_ConfigRegion(&MPU_InitStruct);
874 MPU_InitStruct.Enable = MPU_REGION_ENABLE;
875 MPU_InitStruct.BaseAddress = 0x90000000;
876 MPU_InitStruct.Size = MPU_REGION_SIZE_16MB;
877 MPU_InitStruct.AccessPermission = MPU_REGION_PRIV_RO;
878 MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
879 MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
880 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
881 MPU_InitStruct.Number = MPU_REGION_NUMBER5;
882 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
883 MPU_InitStruct.SubRegionDisable = 0x00;
884 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
886 HAL_MPU_ConfigRegion(&MPU_InitStruct);
889 HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
924 RCC_OscInitStruct.
PLL.
PLLM = 25;
925 RCC_OscInitStruct.
PLL.
PLLN = 400;
927 RCC_OscInitStruct.
PLL.
PLLQ = 8;
996 static void MX_SPDIFRX_Init(
void)
1018 static void MX_DMA_Init(
void)
1031 static void MX_GPIO_Init(
void)
1048 #ifdef USE_FULL_ASSERT 1057 void assert_failed(uint8_t *file, uint32_t line)
Header of cmsis_os.c A new set of APIs are added in addition to existing ones, these APIs are specifi...
#define RCC_TIMPRES_ACTIVATED
osStatus osKernelStart(void)
Start the RTOS Kernel with executing the specified thread.
#define I2S_AUDIOFREQ_44K
#define RCC_CLOCKTYPE_PCLK1
#define __HAL_RCC_DMA1_CLK_ENABLE()
#define LCD_COLOR_GREEN
Green value in ARGB8888 format.
void VUMETER_Input(int channel)
Analyze the peak meter for the audio input.
uint32_t PeriphClockSelection
void SPDIF_Tx_Init(void)
Initialize the SPDIF Tx transmission, forward as SPDIF out.
#define RCC_SYSCLKSOURCE_PLLCLK
void http_taskCreate(void)
RCC_PLLI2SInitTypeDef PLLI2S
void SystemClock_Config(void)
System Clock Configuration The system Clock is configured as follow : System Clock source = PLL (HSE)...
void BSP_LCD_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address)
Initializes the LCD layers.
int main_audio(void)
Main program.
SPDIFRX handle Structure definition.
volatile uint32_t time_total
RCC System, AHB and APB busses clock configuration structure definition.
void BSP_LED_Init(Led_TypeDef Led)
Configures LED GPIO.
void BSP_LCD_SelectLayer(uint32_t LayerIndex)
Selects the LCD Layer.
#define LCD_COLOR_YELLOW
Yellow value in ARGB8888 format.
#define RCC_CLOCKTYPE_HCLK
void LTDC_Init(void)
LTDC initialization.
void BSP_LCD_SetFont(sFONT *fonts)
Sets the LCD text font.
HAL_StatusTypeDef HAL_DMA2D_Start(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width, uint32_t Height)
#define TIM_MEASURE_TOTAL
void CPU_CACHE_Enable(void)
CPU L1-Cache enable.
void HAL_Delay(__IO uint32_t Delay)
This function provides accurate delay (in milliseconds) based on variable incremented.
#define RCC_CLOCKTYPE_SYSCLK
void BSP_LCD_Reset(void)
BSP LCD Reset Hw reset the LCD DSI activating its XRES signal (active low for some time) and desactiv...
void VUMETER_Display(int channel)
Display the peak meter.
xTaskHandle CreatedTaskAudio
#define SPDIFRX_PARITYERRORMASK_OFF
void main_UDanteUDP(void)
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
int32_t Scratch[SCRATCH_BUFF_SIZE]
#define LCD_OK
LCD status structure definition.
DSI_HandleTypeDef hdsi_discovery
uint8_t BSP_QSPI_EnableMemoryMappedMode(void)
Configure the QSPI in memory-mapped mode.
SemaphoreHandle_t xSemaphoreAudio
#define __HAL_RCC_TIMCLKPRESCALER(__PRESC__)
Macro to configure the Timers clocks prescalers.
#define LCD_COLOR_WHITE
White value in ARGB8888 format.
#define SPDIFRX_WAITFORACTIVITY_ON
TS_StateTypeDef Define TS State structure.
void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
Draws a full rectangle in currently active layer.
#define UARTCMD_THREAD_PRIO
void VUMETER_Analyse(void)
Analyse the peak meter value.
uint8_t BSP_AUDIO_IN_AllocScratch(int32_t *pScratch, uint32_t size)
Allocate channel buffer scratch.
#define RCC_PERIPHCLK_CLK48
#define DEFAULT_AUDIO_IN_BIT_RESOLUTION
AUDIO_ErrorTypeDef AUDIO_PLAYER_Start(void)
Starts Audio streaming.
#define DEFAULT_AUDIO_IN_CHANNEL_NBR
int SPDIF_RX_Start(void)
Start the SPDIF Rx reception.
#define DEFAULT_THREAD_STACKSIZE
#define RCC_CLK48SOURCE_PLLSAIP
void BSP_LCD_SetBackColor(uint32_t Color)
Sets the LCD background color.
AUDIO_ErrorTypeDef AUDIO_PLAYER_Init(int outSelection, int sampleFreq)
Initializes Audio Interface.
void BSP_LCD_DisplayStringAt(uint16_t Xpos, uint16_t Ypos, uint8_t *Text, Text_AlignModeTypdef Mode)
Displays characters in currently active layer.
void BSP_AUDIO_IN_TransferComplete_CallBack(void)
HAL_StatusTypeDef HAL_DMA2D_ConfigLayer(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx)
void HAL_DSI_EndOfRefreshCallback(DSI_HandleTypeDef *hdsi)
End of Refresh DSI callback.
#define I2S_AUDIOFREQ_48K
#define osThreadDef(name, thread, priority, instances, stacksz)
void vTaskStartScheduler(void) PRIVILEGED_FUNCTION
#define SPDIFRX_PREAMBLETYPEMASK_OFF
HAL_StatusTypeDef HAL_DMA2D_Init(DMA2D_HandleTypeDef *hdma2d)
SPDIFRX_HandleTypeDef hspdif
void(* XferCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d)
RCC extended clocks structure definition.
uint32_t ChannelSelection
#define DMA2D_OUTPUT_ARGB8888
#define TIM_MEASURE_START
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
HAL_StatusTypeDef HAL_Init(void)
This function is used to initialize the HAL Library; it must be the first instruction to be executed ...
DMA_HandleTypeDef hdma_spdif_rx_dt
void MPU_Config(void)
Configure the MPU attributes as Write Through for SRAM1/2.
HAL_StatusTypeDef HAL_PWREx_EnableOverDrive(void)
void SPDIF_Tx_Start(void)
Start the SPDIF Tx transmission, output.
__STATIC_INLINE void SCB_EnableICache(void)
Enable I-Cache.
#define SPDIFRX_CHANNEL_A
void BSP_LCD_DisplayOn(void)
Switch back on the display if was switched off by previous call of BSP_LCD_DisplayOff(). Exit DSI ULPM mode if was allowed and configured in Dsi Configuration.
uint32_t Clk48ClockSelection
#define LCD_COLOR_BLACK
Black value in ARGB8888 format.
void USB_Interface(int mode)
#define RCC_PERIPHCLK_SPDIFRX
unsigned long AUDIO_Player_GetHeartbeat(void)
Get the counter (heartbeat) if we have audio reception.
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
uint8_t BSP_TS_Init(uint16_t ts_SizeX, uint16_t ts_SizeY)
Initializes and configures the touch screen functionalities and configures all necessary hardware res...
void BSP_LED_On(Led_TypeDef Led)
Turns selected LED On.
uint8_t BSP_AUDIO_IN_InitEx(uint16_t InputDevice, uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initialize wave recording.
LTDC_HandleTypeDef hltdc_discovery
void BSP_LCD_SetTextColor(uint32_t Color)
Sets the LCD text color.
#define SPDIFRX_CHANNELSTATUS_OFF
osThreadId osThreadCreate(const osThreadDef_t *thread_def, void *argument)
Create a thread and add it to Active Threads and set it to state READY.
DMA_HandleTypeDef hSaiDma
#define RCC_OSCILLATORTYPE_HSE
uint8_t BSP_TS_GetState(TS_StateTypeDef *TS_State)
Returns status and positions of the touch screen.
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
#define RCC_PLLSOURCE_HSE
uint16_t touchY[TS_MAX_NB_TOUCH]
DSI_PLLInitTypeDef dsiPllInit
DSI_VidCfgTypeDef hdsivideo_handle
void Netif_AddUDANTE(ip_addr_t ipAddr)
uint32_t ChannelStatusMask
RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition.
#define __HAL_RCC_GPIOG_CLK_ENABLE()
#define SPDIFRX_VALIDITYMASK_OFF
uint32_t PreambleTypeMask
uint8_t BSP_SDRAM_Init(void)
Initializes the SDRAM device.
uint8_t BSP_AUDIO_IN_Record(uint16_t *pbuf, uint32_t size)
Start audio recording.
__weak void BSP_LCD_MspInit(void)
Initialize the BSP LCD Msp. Application can surcharge if needed this function implementation.
uint8_t BSP_QSPI_Init(void)
Initializes the QSPI interface.
DMA handle Structure definition.
#define SPDIFRX_STEREOMODE_ENABLE
int32_t FFT_Filter(int ch)
#define TIM_MEASURE_BEGIN
void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
HAL_StatusTypeDef HAL_DMA2D_PollForTransfer(DMA2D_HandleTypeDef *hdma2d, uint32_t Timeout)
HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
#define AUDIO_THREAD_PRIO
SPDIFRX_TypeDef * Instance
int AUDIO_PLAYER_GetBuffer(uint8_t **out_BufAddr)
#define SPDIFRX_MAXRETRIES_NONE
#define configMINIMAL_STACK_SIZE
#define vSemaphoreCreateBinary(xSemaphore)
uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
Initialize wave recording.
#define SCRATCH_BUFF_SIZE
HAL_StatusTypeDef
HAL Status structures definition.
volatile uint32_t time_diff
#define RCC_CLOCKTYPE_PCLK2
__STATIC_INLINE void SCB_EnableDCache(void)
Enable D-Cache.
#define OTM8009A_COLMOD_RGB888
#define __HAL_TIM_ENABLE(__HANDLE__)
Enable the TIM peripheral.
#define xTaskCreate(pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask)
#define __HAL_RCC_TIM2_CLK_ENABLE()
Enable or disable the Low Speed APB (APB1) peripheral clock.
int AUDIO_PLAYER_GetClock(void)
#define INPUT_DEVICE_INPUT_LINE_1
void(* TaskFunction_t)(void *)
void FFT_DisplayGraph(int ch)
Display the FFT, depending on the barType - which type we want to display.
void BSP_LCD_DrawBitmap(uint32_t Xpos, uint32_t Ypos, uint8_t *pbmp)
Draws a bitmap picture loaded in the internal Flash (32 bpp) in currently active layer.
uint8_t OTM8009A_Init(uint32_t ColorCoding, uint32_t orientation)
Initializes the LCD KoD display part by communication in DSI mode in Video Mode with IC Display Drive...
#define LCD_COLOR_LIGHTRED
Light Red value in ARGB8888 format.
void SystemCoreClockUpdate(void)
Update SystemCoreClock variable according to Clock Register Values. The SystemCoreClock variable cont...
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct
HAL_StatusTypeDef HAL_SPDIFRX_Init(SPDIFRX_HandleTypeDef *hspdif)
DMA2D_LayerCfgTypeDef LayerCfg[MAX_DMA2D_LAYER]
DMA2D handle Structure definition.
QueueHandle_t SemaphoreHandle_t
#define DMA2D_NO_MODIF_ALPHA
RCC_PLLSAIInitTypeDef PLLSAI
uint16_t touchX[TS_MAX_NB_TOUCH]