实现动画效果
This commit is contained in:
parent
68f2a39aad
commit
837276fb62
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
@ -45,7 +45,7 @@
|
||||
<PageWidth>79</PageWidth>
|
||||
<PageLength>66</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath></ListingPath>
|
||||
<ListingPath />
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
@ -104,16 +104,16 @@
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>4</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<sDll />
|
||||
<sDllPa />
|
||||
<sDlgDll />
|
||||
<sDlgPa />
|
||||
<sIfile />
|
||||
<tDll />
|
||||
<tDllPa />
|
||||
<tDlgDll />
|
||||
<tDlgPa />
|
||||
<tIfile />
|
||||
<pMon>Segger\JL2CM3.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
@ -133,7 +133,7 @@
|
||||
<Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F429IGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<Breakpoint />
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
@ -163,19 +163,19 @@
|
||||
<newCpu>0</newCpu>
|
||||
<uProt>0</uProt>
|
||||
</DebugFlag>
|
||||
<LintExecutable></LintExecutable>
|
||||
<LintConfigFile></LintConfigFile>
|
||||
<LintExecutable />
|
||||
<LintConfigFile />
|
||||
<bLintAuto>0</bLintAuto>
|
||||
<bAutoGenD>0</bAutoGenD>
|
||||
<LntExFlags>0</LntExFlags>
|
||||
<pMisraName></pMisraName>
|
||||
<pszMrule></pszMrule>
|
||||
<pSingCmds></pSingCmds>
|
||||
<pMultCmds></pMultCmds>
|
||||
<pMisraNamep></pMisraNamep>
|
||||
<pszMrulep></pszMrulep>
|
||||
<pSingCmdsp></pSingCmdsp>
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
<pMisraName />
|
||||
<pszMrule />
|
||||
<pSingCmds />
|
||||
<pMultCmds />
|
||||
<pMisraNamep />
|
||||
<pszMrulep />
|
||||
<pSingCmdsp />
|
||||
<pMultCmdsp />
|
||||
</TargetOption>
|
||||
</Target>
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_projx.xsd">
|
||||
|
||||
<SchemaVersion>2.1</SchemaVersion>
|
||||
|
||||
@ -19,28 +18,28 @@
|
||||
<PackID>Keil.STM32F4xx_DFP.2.5.0</PackID>
|
||||
<PackURL>http://www.keil.com/pack</PackURL>
|
||||
<Cpu>IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile></StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId></DeviceId>
|
||||
<RegisterFile></RegisterFile>
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<FlashUtilSpec/>
|
||||
<StartupFile/>
|
||||
<FlashDriverDll/>
|
||||
<DeviceId/>
|
||||
<RegisterFile/>
|
||||
<MemoryEnv/>
|
||||
<Cmp/>
|
||||
<Asm/>
|
||||
<Linker/>
|
||||
<OHString/>
|
||||
<InfinionOptionDll/>
|
||||
<SLE66CMisc/>
|
||||
<SLE66AMisc/>
|
||||
<SLE66LinkerMisc/>
|
||||
<SFDFile>$$Device:STM32F429IGTx$CMSIS\SVD\STM32F429x.svd</SFDFile>
|
||||
<bCustSvd>0</bCustSvd>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath></RegisterFilePath>
|
||||
<DBRegisterFilePath></DBRegisterFilePath>
|
||||
<BinPath/>
|
||||
<IncludePath/>
|
||||
<LibPath/>
|
||||
<RegisterFilePath/>
|
||||
<DBRegisterFilePath/>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
@ -55,15 +54,15 @@
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath></ListingPath>
|
||||
<ListingPath/>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Name/>
|
||||
<UserProg2Name/>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
@ -72,8 +71,8 @@
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Name/>
|
||||
<UserProg2Name/>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
@ -82,15 +81,15 @@
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Name/>
|
||||
<UserProg2Name/>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopA1X>0</nStopA1X>
|
||||
<nStopA2X>0</nStopA2X>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString></SVCSIdString>
|
||||
<SVCSIdString/>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
@ -104,8 +103,8 @@
|
||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<CustomArgument/>
|
||||
<IncludeLibraryModules/>
|
||||
<ComprImg>0</ComprImg>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
@ -138,11 +137,11 @@
|
||||
</Flash1>
|
||||
<bUseTDR>1</bUseTDR>
|
||||
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<Flash3/>
|
||||
<Flash4/>
|
||||
<pFcarmOut/>
|
||||
<pFcarmGrp/>
|
||||
<pFcArmRoot/>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<TargetArmAds>
|
||||
@ -175,7 +174,7 @@
|
||||
<RvctClst>0</RvctClst>
|
||||
<GenPPlst>0</GenPPlst>
|
||||
<AdsCpuType>"Cortex-M4"</AdsCpuType>
|
||||
<RvctDeviceName></RvctDeviceName>
|
||||
<RvctDeviceName/>
|
||||
<mOS>0</mOS>
|
||||
<uocRom>0</uocRom>
|
||||
<uocRam>0</uocRam>
|
||||
@ -308,7 +307,7 @@
|
||||
<Size>0x10000</Size>
|
||||
</OCR_RVCT10>
|
||||
</OnChipMemories>
|
||||
<RvctStartVector></RvctStartVector>
|
||||
<RvctStartVector/>
|
||||
</ArmAdsMisc>
|
||||
<Cads>
|
||||
<interw>1</interw>
|
||||
@ -335,10 +334,10 @@
|
||||
<v6WtE>0</v6WtE>
|
||||
<v6Rtti>0</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<MiscControls/>
|
||||
<Define>USE_HAL_DRIVER,STM32F429xx</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>../Inc; ../Src; ../TouchGFX/generated/fonts/include; ../TouchGFX/generated/texts/include; ../TouchGFX/generated/images/include; ../TouchGFX/generated/gui_generated/include; ../TouchGFX/gui/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy; ../Middlewares/Third_Party/FreeRTOS/Source/include; ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS; ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F; ../Drivers/BSP/Components/exc7200; ../Drivers/BSP/Components/stmpe811; ../Drivers/BSP/Components/ts3510; ../Drivers/BSP/Components/ampire480272; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/BSP/Components/Common; ../Drivers/CMSIS/Include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ..\Drivers\BSP\Components; ../Middlewares/ST/TouchGFX/touchgfx/framework/include</IncludePath>
|
||||
<Undefine/>
|
||||
<IncludePath>../Inc; ../Src; ../TouchGFX/generated/fonts/include; ../TouchGFX/generated/texts/include; ../TouchGFX/generated/images/include; ../TouchGFX/generated/gui_generated/include; ../TouchGFX/gui/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy; ../Middlewares/Third_Party/FreeRTOS/Source/include; ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS; ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F; ../Drivers/BSP/Components/exc7200; ../Drivers/BSP/Components/stmpe811; ../Drivers/BSP/Components/ts3510; ../Drivers/BSP/Components/ampire480272; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/BSP/Components/Common; ../Drivers/CMSIS/Include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ..\Drivers\BSP\Components; ../Middlewares/ST/TouchGFX/touchgfx/framework/include</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
@ -353,9 +352,9 @@
|
||||
<useXO>0</useXO>
|
||||
<uClangAs>0</uClangAs>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<MiscControls/>
|
||||
<Define/>
|
||||
<Undefine/>
|
||||
<IncludePath>..\Inc</IncludePath>
|
||||
</VariousControls>
|
||||
</Aads>
|
||||
@ -368,13 +367,13 @@
|
||||
<useFile>0</useFile>
|
||||
<TextAddressRange>0x08000000</TextAddressRange>
|
||||
<DataAddressRange>0x20000000</DataAddressRange>
|
||||
<pXoBase></pXoBase>
|
||||
<ScatterFile></ScatterFile>
|
||||
<IncludeLibs></IncludeLibs>
|
||||
<IncludeLibsPath></IncludeLibsPath>
|
||||
<Misc></Misc>
|
||||
<LinkerInputFile></LinkerInputFile>
|
||||
<DisabledWarnings></DisabledWarnings>
|
||||
<pXoBase/>
|
||||
<ScatterFile/>
|
||||
<IncludeLibs/>
|
||||
<IncludeLibsPath/>
|
||||
<Misc/>
|
||||
<LinkerInputFile/>
|
||||
<DisabledWarnings/>
|
||||
</LDads>
|
||||
</TargetArmAds>
|
||||
</TargetOption>
|
||||
@ -472,6 +471,21 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Drivers\BSP\Components\bsp_i2c_touch.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>exc7200.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/BSP/Components/exc7200/exc7200.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stmpe811.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/BSP/Components/stmpe811/stmpe811.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>ts3510.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/BSP/Components/ts3510/ts3510.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
|
@ -258,14 +258,23 @@ void MX_DMA2D_Init(void)
|
||||
/* Configure the DMA2D default mode */
|
||||
|
||||
hdma2d.Instance = DMA2D;
|
||||
hdma2d.Init.Mode = DMA2D_R2M;
|
||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565;
|
||||
hdma2d.Init.Mode = DMA2D_M2M;
|
||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888;
|
||||
hdma2d.Init.OutputOffset = 0;
|
||||
hdma2d.LayerCfg[1].InputOffset = 0;
|
||||
hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888;
|
||||
hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
|
||||
hdma2d.LayerCfg[1].InputAlpha = 0;
|
||||
if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
|
||||
{
|
||||
Error_Handler( );
|
||||
}
|
||||
|
||||
if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK)
|
||||
{
|
||||
Error_Handler( );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* MSPInit/deInit Implementation */
|
||||
|
@ -205,9 +205,9 @@ void SystemClock_Config(void)
|
||||
Error_Handler();
|
||||
}
|
||||
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIN = 192;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIN = 250;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIR = 5;
|
||||
PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_4;
|
||||
PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_2;
|
||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
|
@ -1,7 +1,7 @@
|
||||
#MicroXplorer Configuration settings - do not modify
|
||||
DMA2D.ColorMode=DMA2D_OUTPUT_RGB565
|
||||
DMA2D.ColorMode=DMA2D_OUTPUT_ARGB8888
|
||||
DMA2D.IPParameters=Mode,ColorMode
|
||||
DMA2D.Mode=DMA2D_R2M
|
||||
DMA2D.Mode=DMA2D_M2M
|
||||
FMC.CASLatency1=FMC_SDRAM_CAS_LATENCY_3
|
||||
FMC.ExitSelfRefreshDelay1=7
|
||||
FMC.IPParameters=CASLatency1,SDClockPeriod1,SDClockPeriod2,ReadPipeDelay1,ReadPipeDelay2,LoadToActiveDelay1,ExitSelfRefreshDelay1,SelfRefreshTime1,RowCycleDelay1,RowCycleDelay2,WriteRecoveryTime1,RPDelay1,RPDelay2,RCDDelay1
|
||||
@ -471,8 +471,8 @@ RCC.HCLKFreq_Value=180000000
|
||||
RCC.HSE_VALUE=25000000
|
||||
RCC.HSI_VALUE=16000000
|
||||
RCC.I2SClocksFreq_Value=96000000
|
||||
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSAIDivR,PLLSAIN,PLLSAIR,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VCOSAIOutputFreq_ValueR,VcooutputI2S,VcooutputI2SQ
|
||||
RCC.LCDTFTFreq_Value=9600000
|
||||
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSAIN,PLLSAIR,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VCOSAIOutputFreq_ValueR,VcooutputI2S,VcooutputI2SQ
|
||||
RCC.LCDTFTFreq_Value=25000000
|
||||
RCC.LSE_VALUE=32768
|
||||
RCC.LSI_VALUE=32000
|
||||
RCC.MCO2PinFreq_Value=180000000
|
||||
@ -480,22 +480,21 @@ RCC.PLLCLKFreq_Value=180000000
|
||||
RCC.PLLM=25
|
||||
RCC.PLLN=360
|
||||
RCC.PLLQCLKFreq_Value=90000000
|
||||
RCC.PLLSAIDivR=RCC_PLLSAIDIVR_4
|
||||
RCC.PLLSAIN=192
|
||||
RCC.PLLSAIN=250
|
||||
RCC.PLLSAIR=5
|
||||
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
|
||||
RCC.RTCFreq_Value=32000
|
||||
RCC.RTCHSEDivFreq_Value=12500000
|
||||
RCC.SAI_AClocksFreq_Value=48000000
|
||||
RCC.SAI_BClocksFreq_Value=48000000
|
||||
RCC.SAI_AClocksFreq_Value=62500000
|
||||
RCC.SAI_BClocksFreq_Value=62500000
|
||||
RCC.SYSCLKFreq_VALUE=180000000
|
||||
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||
RCC.VCOI2SOutputFreq_Value=192000000
|
||||
RCC.VCOInputFreq_Value=1000000
|
||||
RCC.VCOOutputFreq_Value=360000000
|
||||
RCC.VCOSAIOutputFreq_Value=192000000
|
||||
RCC.VCOSAIOutputFreq_ValueQ=48000000
|
||||
RCC.VCOSAIOutputFreq_ValueR=38400000
|
||||
RCC.VCOSAIOutputFreq_Value=250000000
|
||||
RCC.VCOSAIOutputFreq_ValueQ=62500000
|
||||
RCC.VCOSAIOutputFreq_ValueR=50000000
|
||||
RCC.VcooutputI2S=96000000
|
||||
RCC.VcooutputI2SQ=96000000
|
||||
SH.FMC_A0.0=FMC_A0,12b-sda1
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
@ -45,7 +45,7 @@
|
||||
<PageWidth>79</PageWidth>
|
||||
<PageLength>66</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath></ListingPath>
|
||||
<ListingPath />
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
@ -104,16 +104,16 @@
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>4</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<sDll />
|
||||
<sDllPa />
|
||||
<sDlgDll />
|
||||
<sDlgPa />
|
||||
<sIfile />
|
||||
<tDll />
|
||||
<tDllPa />
|
||||
<tDlgDll />
|
||||
<tDlgPa />
|
||||
<tIfile />
|
||||
<pMon>Segger\JL2CM3.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
@ -130,7 +130,7 @@
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMDBGFLAGS</Key>
|
||||
<Name></Name>
|
||||
<Name />
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
@ -162,7 +162,7 @@
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>../touchgfx/gui/src/model/model.cpp</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<ExecCommand />
|
||||
<Expression>\\hellotouchGFX_demo\../touchgfx/gui/src/model/model.cpp\21</Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
@ -178,7 +178,7 @@
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>../touchgfx/gui/src/model/model.cpp</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<ExecCommand />
|
||||
<Expression>\\hellotouchGFX_demo\../touchgfx/gui/src/model/model.cpp\19</Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
@ -211,19 +211,19 @@
|
||||
<newCpu>0</newCpu>
|
||||
<uProt>0</uProt>
|
||||
</DebugFlag>
|
||||
<LintExecutable></LintExecutable>
|
||||
<LintConfigFile></LintConfigFile>
|
||||
<LintExecutable />
|
||||
<LintConfigFile />
|
||||
<bLintAuto>0</bLintAuto>
|
||||
<bAutoGenD>0</bAutoGenD>
|
||||
<LntExFlags>0</LntExFlags>
|
||||
<pMisraName></pMisraName>
|
||||
<pszMrule></pszMrule>
|
||||
<pSingCmds></pSingCmds>
|
||||
<pMultCmds></pMultCmds>
|
||||
<pMisraNamep></pMisraNamep>
|
||||
<pszMrulep></pszMrulep>
|
||||
<pSingCmdsp></pSingCmdsp>
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
<pMisraName />
|
||||
<pszMrule />
|
||||
<pSingCmds />
|
||||
<pMultCmds />
|
||||
<pMisraNamep />
|
||||
<pszMrulep />
|
||||
<pSingCmdsp />
|
||||
<pMultCmdsp />
|
||||
</TargetOption>
|
||||
</Target>
|
||||
|
||||
@ -441,6 +441,42 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/BSP/Components/exc7200/exc7200.c</PathWithFileName>
|
||||
<FilenameWithoutPath>exc7200.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/BSP/Components/stmpe811/stmpe811.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stmpe811.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/BSP/Components/ts3510/ts3510.c</PathWithFileName>
|
||||
<FilenameWithoutPath>ts3510.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
@ -451,7 +487,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -463,7 +499,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -475,7 +511,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -487,7 +523,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -499,7 +535,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -511,7 +547,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -523,7 +559,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -535,7 +571,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -547,7 +583,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -559,7 +595,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -571,7 +607,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -583,7 +619,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -595,7 +631,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -607,7 +643,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -619,7 +655,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -631,7 +667,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileNumber>35</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -643,7 +679,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -655,7 +691,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -667,7 +703,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>35</FileNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -679,7 +715,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -691,7 +727,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -703,7 +739,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -715,7 +751,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -727,7 +763,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -747,7 +783,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -767,7 +803,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -779,7 +815,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -791,7 +827,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -803,7 +839,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileNumber>48</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -815,7 +851,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileNumber>49</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -827,7 +863,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileNumber>50</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -839,7 +875,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>48</FileNumber>
|
||||
<FileNumber>51</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -851,7 +887,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>49</FileNumber>
|
||||
<FileNumber>52</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -863,7 +899,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>50</FileNumber>
|
||||
<FileNumber>53</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -875,7 +911,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>51</FileNumber>
|
||||
<FileNumber>54</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -895,7 +931,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>52</FileNumber>
|
||||
<FileNumber>55</FileNumber>
|
||||
<FileType>4</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -907,7 +943,19 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>53</FileNumber>
|
||||
<FileNumber>56</FileNumber>
|
||||
<FileType>4</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Middlewares/ST/TouchGFX/touchgfx/lib/core/cortex_m4f/Keil/touchgfx_core.lib</PathWithFileName>
|
||||
<FilenameWithoutPath>touchgfx_core.lib</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>57</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -927,7 +975,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>54</FileNumber>
|
||||
<FileNumber>58</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -939,7 +987,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>55</FileNumber>
|
||||
<FileNumber>59</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -951,7 +999,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>56</FileNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -963,7 +1011,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>57</FileNumber>
|
||||
<FileNumber>61</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -975,7 +1023,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>58</FileNumber>
|
||||
<FileNumber>62</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -987,7 +1035,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>59</FileNumber>
|
||||
<FileNumber>63</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1007,7 +1055,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileNumber>64</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1019,7 +1067,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>61</FileNumber>
|
||||
<FileNumber>65</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1031,7 +1079,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>62</FileNumber>
|
||||
<FileNumber>66</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1043,7 +1091,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>63</FileNumber>
|
||||
<FileNumber>67</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1055,7 +1103,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>64</FileNumber>
|
||||
<FileNumber>68</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1067,7 +1115,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>65</FileNumber>
|
||||
<FileNumber>69</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1079,7 +1127,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>66</FileNumber>
|
||||
<FileNumber>70</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1091,7 +1139,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>67</FileNumber>
|
||||
<FileNumber>71</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1103,7 +1151,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>68</FileNumber>
|
||||
<FileNumber>72</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1115,7 +1163,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>69</FileNumber>
|
||||
<FileNumber>73</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1127,7 +1175,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>70</FileNumber>
|
||||
<FileNumber>74</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1139,7 +1187,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>71</FileNumber>
|
||||
<FileNumber>75</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1151,7 +1199,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>72</FileNumber>
|
||||
<FileNumber>76</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1163,7 +1211,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>73</FileNumber>
|
||||
<FileNumber>77</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1175,7 +1223,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>74</FileNumber>
|
||||
<FileNumber>78</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1187,7 +1235,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>75</FileNumber>
|
||||
<FileNumber>79</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1199,7 +1247,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>76</FileNumber>
|
||||
<FileNumber>80</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1211,7 +1259,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>77</FileNumber>
|
||||
<FileNumber>81</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1223,7 +1271,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>78</FileNumber>
|
||||
<FileNumber>82</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1235,7 +1283,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>79</FileNumber>
|
||||
<FileNumber>83</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1247,7 +1295,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>80</FileNumber>
|
||||
<FileNumber>84</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1259,7 +1307,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>81</FileNumber>
|
||||
<FileNumber>85</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1271,7 +1319,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>82</FileNumber>
|
||||
<FileNumber>86</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1283,7 +1331,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>83</FileNumber>
|
||||
<FileNumber>87</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1295,7 +1343,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>84</FileNumber>
|
||||
<FileNumber>88</FileNumber>
|
||||
<FileType>8</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_projx.xsd">
|
||||
|
||||
<SchemaVersion>2.1</SchemaVersion>
|
||||
|
||||
@ -19,28 +18,28 @@
|
||||
<PackID>Keil.STM32F4xx_DFP.2.5.0</PackID>
|
||||
<PackURL>http://www.keil.com/pack</PackURL>
|
||||
<Cpu>IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile></StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId></DeviceId>
|
||||
<RegisterFile></RegisterFile>
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<FlashUtilSpec/>
|
||||
<StartupFile/>
|
||||
<FlashDriverDll/>
|
||||
<DeviceId/>
|
||||
<RegisterFile/>
|
||||
<MemoryEnv/>
|
||||
<Cmp/>
|
||||
<Asm/>
|
||||
<Linker/>
|
||||
<OHString/>
|
||||
<InfinionOptionDll/>
|
||||
<SLE66CMisc/>
|
||||
<SLE66AMisc/>
|
||||
<SLE66LinkerMisc/>
|
||||
<SFDFile>$$Device:STM32F429IGTx$CMSIS\SVD\STM32F429x.svd</SFDFile>
|
||||
<bCustSvd>0</bCustSvd>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath></RegisterFilePath>
|
||||
<DBRegisterFilePath></DBRegisterFilePath>
|
||||
<BinPath/>
|
||||
<IncludePath/>
|
||||
<LibPath/>
|
||||
<RegisterFilePath/>
|
||||
<DBRegisterFilePath/>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
@ -55,15 +54,15 @@
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath></ListingPath>
|
||||
<ListingPath/>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Name/>
|
||||
<UserProg2Name/>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
@ -72,8 +71,8 @@
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Name/>
|
||||
<UserProg2Name/>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
@ -82,15 +81,15 @@
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Name/>
|
||||
<UserProg2Name/>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopA1X>0</nStopA1X>
|
||||
<nStopA2X>0</nStopA2X>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString></SVCSIdString>
|
||||
<SVCSIdString/>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
@ -104,8 +103,8 @@
|
||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<CustomArgument/>
|
||||
<IncludeLibraryModules/>
|
||||
<ComprImg>0</ComprImg>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
@ -138,11 +137,11 @@
|
||||
</Flash1>
|
||||
<bUseTDR>1</bUseTDR>
|
||||
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<Flash3/>
|
||||
<Flash4/>
|
||||
<pFcarmOut/>
|
||||
<pFcarmGrp/>
|
||||
<pFcArmRoot/>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<TargetArmAds>
|
||||
@ -175,7 +174,7 @@
|
||||
<RvctClst>0</RvctClst>
|
||||
<GenPPlst>0</GenPPlst>
|
||||
<AdsCpuType>"Cortex-M4"</AdsCpuType>
|
||||
<RvctDeviceName></RvctDeviceName>
|
||||
<RvctDeviceName/>
|
||||
<mOS>0</mOS>
|
||||
<uocRom>0</uocRom>
|
||||
<uocRam>0</uocRam>
|
||||
@ -308,7 +307,7 @@
|
||||
<Size>0x10000</Size>
|
||||
</OCR_RVCT10>
|
||||
</OnChipMemories>
|
||||
<RvctStartVector></RvctStartVector>
|
||||
<RvctStartVector/>
|
||||
</ArmAdsMisc>
|
||||
<Cads>
|
||||
<interw>1</interw>
|
||||
@ -335,10 +334,10 @@
|
||||
<v6WtE>0</v6WtE>
|
||||
<v6Rtti>0</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<MiscControls/>
|
||||
<Define>USE_HAL_DRIVER,STM32F429xx</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>../Inc; ../Src; ../TouchGFX/generated/fonts/include; ../TouchGFX/generated/texts/include; ../TouchGFX/generated/images/include; ../TouchGFX/generated/gui_generated/include; ../TouchGFX/gui/include;../middlewares/st/touchgfx/touchgfx/framework/include; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy; ../Middlewares/Third_Party/FreeRTOS/Source/include; ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS; ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F; ../Drivers/BSP/Components/exc7200; ../Drivers/BSP/Components/stmpe811; ../Drivers/BSP/Components/ts3510; ../Drivers/BSP/Components/ampire480272; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/BSP/Components/Common; ../Drivers/CMSIS/Include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include; ..\Drivers\BSP\Components;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include</IncludePath>
|
||||
<Undefine/>
|
||||
<IncludePath>../Inc; ../Src; ../TouchGFX/generated/fonts/include; ../TouchGFX/generated/texts/include; ../TouchGFX/generated/images/include; ../TouchGFX/generated/gui_generated/include; ../TouchGFX/gui/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy; ../Middlewares/Third_Party/FreeRTOS/Source/include; ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS; ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F; ../Drivers/BSP/Components/exc7200; ../Drivers/BSP/Components/stmpe811; ../Drivers/BSP/Components/ts3510; ../Drivers/BSP/Components/ampire480272; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/BSP/Components/Common; ../Drivers/CMSIS/Include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ..\Drivers\BSP\Components; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../Middlewares/ST/TouchGFX/touchgfx/framework/include</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
@ -353,9 +352,9 @@
|
||||
<useXO>0</useXO>
|
||||
<uClangAs>0</uClangAs>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<MiscControls/>
|
||||
<Define/>
|
||||
<Undefine/>
|
||||
<IncludePath>..\Inc</IncludePath>
|
||||
</VariousControls>
|
||||
</Aads>
|
||||
@ -368,13 +367,13 @@
|
||||
<useFile>0</useFile>
|
||||
<TextAddressRange>0x08000000</TextAddressRange>
|
||||
<DataAddressRange>0x20000000</DataAddressRange>
|
||||
<pXoBase></pXoBase>
|
||||
<ScatterFile></ScatterFile>
|
||||
<IncludeLibs></IncludeLibs>
|
||||
<IncludeLibsPath></IncludeLibsPath>
|
||||
<Misc></Misc>
|
||||
<LinkerInputFile></LinkerInputFile>
|
||||
<DisabledWarnings></DisabledWarnings>
|
||||
<pXoBase/>
|
||||
<ScatterFile/>
|
||||
<IncludeLibs/>
|
||||
<IncludeLibsPath/>
|
||||
<Misc/>
|
||||
<LinkerInputFile/>
|
||||
<DisabledWarnings/>
|
||||
</LDads>
|
||||
</TargetArmAds>
|
||||
</TargetOption>
|
||||
@ -472,6 +471,21 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Drivers\BSP\Components\bsp_i2c_touch.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>exc7200.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/BSP/Components/exc7200/exc7200.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stmpe811.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/BSP/Components/stmpe811/stmpe811.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>ts3510.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/BSP/Components/ts3510/ts3510.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
@ -672,6 +686,11 @@
|
||||
<FileType>4</FileType>
|
||||
<FilePath>../middlewares/st/touchgfx/touchgfx/lib/core/cortex_m4f/Keil/touchgfx_core.lib</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>touchgfx_core.lib</FileName>
|
||||
<FileType>4</FileType>
|
||||
<FilePath>../Middlewares/ST/TouchGFX/touchgfx/lib/core/cortex_m4f/Keil/touchgfx_core.lib</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>OSWrappers.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
|
@ -258,14 +258,23 @@ void MX_DMA2D_Init(void)
|
||||
/* Configure the DMA2D default mode */
|
||||
|
||||
hdma2d.Instance = DMA2D;
|
||||
hdma2d.Init.Mode = DMA2D_R2M;
|
||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565;
|
||||
hdma2d.Init.Mode = DMA2D_M2M;
|
||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888;
|
||||
hdma2d.Init.OutputOffset = 0;
|
||||
hdma2d.LayerCfg[1].InputOffset = 0;
|
||||
hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888;
|
||||
hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
|
||||
hdma2d.LayerCfg[1].InputAlpha = 0;
|
||||
if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
|
||||
{
|
||||
Error_Handler( );
|
||||
}
|
||||
|
||||
if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK)
|
||||
{
|
||||
Error_Handler( );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* MSPInit/deInit Implementation */
|
||||
|
@ -217,9 +217,9 @@ void SystemClock_Config(void)
|
||||
Error_Handler();
|
||||
}
|
||||
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIN = 192;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIN = 250;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIR = 5;
|
||||
PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_4;
|
||||
PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_2;
|
||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
|
@ -1,7 +1,7 @@
|
||||
#MicroXplorer Configuration settings - do not modify
|
||||
DMA2D.ColorMode=DMA2D_OUTPUT_RGB565
|
||||
DMA2D.ColorMode=DMA2D_OUTPUT_ARGB8888
|
||||
DMA2D.IPParameters=Mode,ColorMode
|
||||
DMA2D.Mode=DMA2D_R2M
|
||||
DMA2D.Mode=DMA2D_M2M
|
||||
FMC.CASLatency1=FMC_SDRAM_CAS_LATENCY_3
|
||||
FMC.ExitSelfRefreshDelay1=7
|
||||
FMC.IPParameters=CASLatency1,SDClockPeriod1,SDClockPeriod2,ReadPipeDelay1,ReadPipeDelay2,LoadToActiveDelay1,ExitSelfRefreshDelay1,SelfRefreshTime1,RowCycleDelay1,RowCycleDelay2,WriteRecoveryTime1,RPDelay1,RPDelay2,RCDDelay1
|
||||
@ -39,7 +39,7 @@ GRAPHICS.EA_3_in_file1_param7=MDK-ARM V5
|
||||
GRAPHICS.EA_3_os-TouchGFX_F429_439=Windows
|
||||
GRAPHICS.EW_FRAME_BUFFER_COLOR_FORMAT-TouchGFX_F429_439=RGB565
|
||||
GRAPHICS.GUI_NUM_LAYERS-TouchGFX_F429_439=1
|
||||
GRAPHICS.IPParameters=EA_3_in_file1_param2,EA_3_in_file1_param3,TGFX_Pixel_Format_DPI_DSI-TouchGFX_F429_439,TGFX_depth-TouchGFX_F429_439,GUI_NUM_LAYERS-TouchGFX_F429_439,Use_ili9341_Check-TouchGFX_F429_439,EA_3_os-TouchGFX_F429_439,EA_3_command_line_template-TouchGFX_F429_439,EW_FRAME_BUFFER_COLOR_FORMAT-TouchGFX_F429_439,Check_OTM8009A_PixelFormat-TouchGFX_F429_439,Use_SDRAM-TouchGFX_F429_439,Use_DSI-TouchGFX_F429_439,USE_Embedded_Wizard-TouchGFX_F429_439,USE_STTouchGFX-TouchGFX_F429_439,Use_ili9341,EA_3_input_param1,EA_3_in_file1_src,EA_3_in_file1_param4,EA_3_in_file1_param5,EA_3_in_file1_param7,EA_3_in_file1_trg,EA_3_in_dir1_src,EA_3_in_dir1_trg,EA_3_executable_name-TouchGFX_F429_439
|
||||
GRAPHICS.IPParameters=EA_3_in_file1_param2,EA_3_in_file1_param3,TGFX_Pixel_Format_DPI_DSI-TouchGFX_F429_439,TGFX_depth-TouchGFX_F429_439,GUI_NUM_LAYERS-TouchGFX_F429_439,Use_ili9341_Check-TouchGFX_F429_439,EA_3_os-TouchGFX_F429_439,EA_3_command_line_template-TouchGFX_F429_439,EW_FRAME_BUFFER_COLOR_FORMAT-TouchGFX_F429_439,Check_OTM8009A_PixelFormat-TouchGFX_F429_439,Use_SDRAM-TouchGFX_F429_439,Use_DSI-TouchGFX_F429_439,USE_Embedded_Wizard-TouchGFX_F429_439,USE_STTouchGFX-TouchGFX_F429_439,Use_ili9341,EA_3_in_file1_param4,EA_3_in_file1_param7,EA_3_executable_name-TouchGFX_F429_439
|
||||
GRAPHICS.TGFX_Pixel_Format_DPI_DSI-TouchGFX_F429_439=RGB565
|
||||
GRAPHICS.TGFX_depth-TouchGFX_F429_439=16
|
||||
GRAPHICS.USE_Embedded_Wizard-TouchGFX_F429_439=0
|
||||
@ -487,8 +487,8 @@ RCC.HCLKFreq_Value=180000000
|
||||
RCC.HSE_VALUE=25000000
|
||||
RCC.HSI_VALUE=16000000
|
||||
RCC.I2SClocksFreq_Value=96000000
|
||||
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSAIDivR,PLLSAIN,PLLSAIR,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VCOSAIOutputFreq_ValueR,VcooutputI2S,VcooutputI2SQ
|
||||
RCC.LCDTFTFreq_Value=9600000
|
||||
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSAIN,PLLSAIR,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VCOSAIOutputFreq_ValueR,VcooutputI2S,VcooutputI2SQ
|
||||
RCC.LCDTFTFreq_Value=25000000
|
||||
RCC.LSE_VALUE=32768
|
||||
RCC.LSI_VALUE=32000
|
||||
RCC.MCO2PinFreq_Value=180000000
|
||||
@ -496,22 +496,21 @@ RCC.PLLCLKFreq_Value=180000000
|
||||
RCC.PLLM=25
|
||||
RCC.PLLN=360
|
||||
RCC.PLLQCLKFreq_Value=90000000
|
||||
RCC.PLLSAIDivR=RCC_PLLSAIDIVR_4
|
||||
RCC.PLLSAIN=192
|
||||
RCC.PLLSAIN=250
|
||||
RCC.PLLSAIR=5
|
||||
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
|
||||
RCC.RTCFreq_Value=32000
|
||||
RCC.RTCHSEDivFreq_Value=12500000
|
||||
RCC.SAI_AClocksFreq_Value=48000000
|
||||
RCC.SAI_BClocksFreq_Value=48000000
|
||||
RCC.SAI_AClocksFreq_Value=62500000
|
||||
RCC.SAI_BClocksFreq_Value=62500000
|
||||
RCC.SYSCLKFreq_VALUE=180000000
|
||||
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||
RCC.VCOI2SOutputFreq_Value=192000000
|
||||
RCC.VCOInputFreq_Value=1000000
|
||||
RCC.VCOOutputFreq_Value=360000000
|
||||
RCC.VCOSAIOutputFreq_Value=192000000
|
||||
RCC.VCOSAIOutputFreq_ValueQ=48000000
|
||||
RCC.VCOSAIOutputFreq_ValueR=38400000
|
||||
RCC.VCOSAIOutputFreq_Value=250000000
|
||||
RCC.VCOSAIOutputFreq_ValueQ=62500000
|
||||
RCC.VCOSAIOutputFreq_ValueR=50000000
|
||||
RCC.VcooutputI2S=96000000
|
||||
RCC.VcooutputI2SQ=96000000
|
||||
SH.FMC_A0.0=FMC_A0,12b-sda1
|
||||
|
@ -53,6 +53,7 @@ void MemManage_Handler(void);
|
||||
void BusFault_Handler(void);
|
||||
void UsageFault_Handler(void);
|
||||
void DebugMon_Handler(void);
|
||||
void USART3_IRQHandler(void);
|
||||
void TIM6_DAC_IRQHandler(void);
|
||||
void LTDC_IRQHandler(void);
|
||||
void DMA2D_IRQHandler(void);
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -338,7 +338,7 @@
|
||||
<MiscControls></MiscControls>
|
||||
<Define>USE_HAL_DRIVER,STM32F429xx</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>../Inc; ../Src; ../TouchGFX/generated/fonts/include; ../TouchGFX/generated/texts/include; ../TouchGFX/generated/images/include; ../TouchGFX/generated/gui_generated/include; ../TouchGFX/gui/include;../middlewares/st/touchgfx/touchgfx/framework/include; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy; ../Middlewares/Third_Party/FreeRTOS/Source/include; ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS; ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F; ../Drivers/BSP/Components/exc7200; ../Drivers/BSP/Components/stmpe811; ../Drivers/BSP/Components/ts3510; ../Drivers/BSP/Components/ampire480272; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/BSP/Components/Common; ../Drivers/CMSIS/Include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include; ..\Drivers\BSP\Components;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include;../middlewares/st/touchgfx/touchgfx/framework/include</IncludePath>
|
||||
<IncludePath>../Inc; ../Src; ../TouchGFX/generated/fonts/include; ../TouchGFX/generated/texts/include; ../TouchGFX/generated/images/include; ../TouchGFX/generated/gui_generated/include; ../TouchGFX/gui/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy; ../Middlewares/Third_Party/FreeRTOS/Source/include; ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS; ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F; ../Drivers/BSP/Components/exc7200; ../Drivers/BSP/Components/stmpe811; ../Drivers/BSP/Components/ts3510; ../Drivers/BSP/Components/ampire480272; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/BSP/Components/Common; ../Drivers/CMSIS/Include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ..\Drivers\BSP\Components; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../middlewares/st/touchgfx/touchgfx/framework/include; ../Middlewares/ST/TouchGFX/touchgfx/framework/include; ..\TouchGFX\gui\include\gui\common; ..\TouchGFX\gui\include\gui\graph_widget</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
@ -360,7 +360,7 @@
|
||||
</VariousControls>
|
||||
</Aads>
|
||||
<LDads>
|
||||
<umfTarg>1</umfTarg>
|
||||
<umfTarg>0</umfTarg>
|
||||
<Ropi>0</Ropi>
|
||||
<Rwpi>0</Rwpi>
|
||||
<noStLib>0</noStLib>
|
||||
@ -369,7 +369,7 @@
|
||||
<TextAddressRange>0x08000000</TextAddressRange>
|
||||
<DataAddressRange>0x20000000</DataAddressRange>
|
||||
<pXoBase></pXoBase>
|
||||
<ScatterFile></ScatterFile>
|
||||
<ScatterFile>hellotouchGFX_demo\hellotouchGFX_demo.sct</ScatterFile>
|
||||
<IncludeLibs></IncludeLibs>
|
||||
<IncludeLibsPath></IncludeLibsPath>
|
||||
<Misc></Misc>
|
||||
@ -392,6 +392,11 @@
|
||||
<Group>
|
||||
<GroupName>Application/User</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>sensor.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>..\Src\sensor.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>main.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
@ -672,6 +677,11 @@
|
||||
<FileType>4</FileType>
|
||||
<FilePath>../middlewares/st/touchgfx/touchgfx/lib/core/cortex_m4f/Keil/touchgfx_core.lib</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>touchgfx_core.lib</FileName>
|
||||
<FileType>4</FileType>
|
||||
<FilePath>../Middlewares/ST/TouchGFX/touchgfx/lib/core/cortex_m4f/Keil/touchgfx_core.lib</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>OSWrappers.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
@ -1014,6 +1024,41 @@
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>graph_widget</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>AbstractGraph.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>..\TouchGFX\gui\src\graph_widget\AbstractGraph.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Graph.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>..\TouchGFX\gui\src\graph_widget\Graph.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>GraphBelow.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>..\TouchGFX\gui\src\graph_widget\GraphBelow.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>GraphDots.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>..\TouchGFX\gui\src\graph_widget\GraphDots.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>GraphLine.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>..\TouchGFX\gui\src\graph_widget\GraphLine.cpp</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>PainterVerticalAlpha.cpp</FileName>
|
||||
<FileType>8</FileType>
|
||||
<FilePath>..\TouchGFX\gui\src\graph_widget\PainterVerticalAlpha.cpp</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::CMSIS</GroupName>
|
||||
</Group>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -172,7 +172,7 @@ void MX_FMC_Init(void)
|
||||
hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3;
|
||||
hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE;
|
||||
hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2;
|
||||
hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE;
|
||||
hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_ENABLE;
|
||||
hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1;
|
||||
/* SdramTiming */
|
||||
SdramTiming.LoadToActiveDelay = 2;
|
||||
@ -258,14 +258,23 @@ void MX_DMA2D_Init(void)
|
||||
/* Configure the DMA2D default mode */
|
||||
|
||||
hdma2d.Instance = DMA2D;
|
||||
hdma2d.Init.Mode = DMA2D_R2M;
|
||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565;
|
||||
hdma2d.Init.Mode = DMA2D_M2M;
|
||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888;
|
||||
hdma2d.Init.OutputOffset = 0;
|
||||
hdma2d.LayerCfg[1].InputOffset = 0;
|
||||
hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888;
|
||||
hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
|
||||
hdma2d.LayerCfg[1].InputAlpha = 0;
|
||||
if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
|
||||
{
|
||||
Error_Handler( );
|
||||
}
|
||||
|
||||
if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK)
|
||||
{
|
||||
Error_Handler( );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* MSPInit/deInit Implementation */
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "sensor.h"
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
@ -47,12 +48,15 @@ CRC_HandleTypeDef hcrc;
|
||||
SPI_HandleTypeDef hspi5;
|
||||
|
||||
UART_HandleTypeDef huart1;
|
||||
UART_HandleTypeDef huart3;
|
||||
|
||||
osThreadId mainTaskHandle;
|
||||
osThreadId keyTaskHandle;
|
||||
osThreadId sensorTaskHandle;
|
||||
osMessageQId gui_msg_qHandle;
|
||||
osMessageQId sensor_msg_qHandle;
|
||||
/* USER CODE BEGIN PV */
|
||||
|
||||
ts_sensor_data s_sensor_data;
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
@ -64,8 +68,10 @@ extern void GRAPHICS_HW_Init(void);
|
||||
extern void GRAPHICS_Init(void);
|
||||
extern void GRAPHICS_MainTask(void);
|
||||
static void MX_USART1_UART_Init(void);
|
||||
static void MX_USART3_UART_Init(void);
|
||||
void StartmainTask(void const * argument);
|
||||
void StartkeyTask(void const * argument);
|
||||
void StartsensorTask(void const * argument);
|
||||
|
||||
/* USER CODE BEGIN PFP */
|
||||
|
||||
@ -107,6 +113,7 @@ int main(void)
|
||||
MX_GPIO_Init();
|
||||
MX_CRC_Init();
|
||||
MX_USART1_UART_Init();
|
||||
MX_USART3_UART_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
|
||||
/* USER CODE END 2 */
|
||||
@ -136,6 +143,10 @@ int main(void)
|
||||
osMessageQDef(gui_msg_q, 16, uint8_t);
|
||||
gui_msg_qHandle = osMessageCreate(osMessageQ(gui_msg_q), NULL);
|
||||
|
||||
/* definition and creation of sensor_msg_q */
|
||||
osMessageQDef(sensor_msg_q, 20, uint32_t);
|
||||
sensor_msg_qHandle = osMessageCreate(osMessageQ(sensor_msg_q), NULL);
|
||||
|
||||
/* USER CODE BEGIN RTOS_QUEUES */
|
||||
/* add queues, ... */
|
||||
/* USER CODE END RTOS_QUEUES */
|
||||
@ -149,6 +160,10 @@ int main(void)
|
||||
osThreadDef(keyTask, StartkeyTask, osPriorityNormal, 0, 256);
|
||||
keyTaskHandle = osThreadCreate(osThread(keyTask), NULL);
|
||||
|
||||
/* definition and creation of sensorTask */
|
||||
osThreadDef(sensorTask, StartsensorTask, osPriorityNormal, 0, 512);
|
||||
sensorTaskHandle = osThreadCreate(osThread(sensorTask), NULL);
|
||||
|
||||
/* USER CODE BEGIN RTOS_THREADS */
|
||||
/* add threads, ... */
|
||||
/* USER CODE END RTOS_THREADS */
|
||||
@ -217,9 +232,9 @@ void SystemClock_Config(void)
|
||||
Error_Handler();
|
||||
}
|
||||
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIN = 192;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIN = 250;
|
||||
PeriphClkInitStruct.PLLSAI.PLLSAIR = 5;
|
||||
PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_4;
|
||||
PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_2;
|
||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
@ -323,6 +338,39 @@ static void MX_USART1_UART_Init(void)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief USART3 Initialization Function
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void MX_USART3_UART_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN USART3_Init 0 */
|
||||
|
||||
/* USER CODE END USART3_Init 0 */
|
||||
|
||||
/* USER CODE BEGIN USART3_Init 1 */
|
||||
|
||||
/* USER CODE END USART3_Init 1 */
|
||||
huart3.Instance = USART3;
|
||||
huart3.Init.BaudRate = 9600;
|
||||
huart3.Init.WordLength = UART_WORDLENGTH_8B;
|
||||
huart3.Init.StopBits = UART_STOPBITS_1;
|
||||
huart3.Init.Parity = UART_PARITY_NONE;
|
||||
huart3.Init.Mode = UART_MODE_TX_RX;
|
||||
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
||||
huart3.Init.OverSampling = UART_OVERSAMPLING_16;
|
||||
if (HAL_UART_Init(&huart3) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN USART3_Init 2 */
|
||||
|
||||
/* USER CODE END USART3_Init 2 */
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIO Initialization Function
|
||||
* @param None
|
||||
@ -457,6 +505,30 @@ void StartkeyTask(void const * argument)
|
||||
/* USER CODE END StartkeyTask */
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN Header_StartsensorTask */
|
||||
/**
|
||||
* @brief Function implementing the sensorTask thread.
|
||||
* @param argument: Not used
|
||||
* @retval None
|
||||
*/
|
||||
/* USER CODE END Header_StartsensorTask */
|
||||
void StartsensorTask(void const * argument)
|
||||
{
|
||||
/* USER CODE BEGIN StartsensorTask */
|
||||
sensor_read_init();
|
||||
osMessagePut(sensor_msg_qHandle,(uint32_t)&s_sensor_data,200);
|
||||
/* Infinite loop */
|
||||
for(;;)
|
||||
{
|
||||
if(sensor_read_func()==0)
|
||||
{
|
||||
osMessagePut(sensor_msg_qHandle,(uint32_t)&s_sensor_data,200);
|
||||
}
|
||||
osDelay(500);
|
||||
}
|
||||
/* USER CODE END StartsensorTask */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Period elapsed callback in non blocking mode
|
||||
* @note This function is called when TIM6 interrupt took place, inside
|
||||
|
139
example3/freeRTOS/Src/sensor.cpp
Normal file
139
example3/freeRTOS/Src/sensor.cpp
Normal file
@ -0,0 +1,139 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file
|
||||
* @author
|
||||
* @version V2.0.0
|
||||
* @date 07/13/2019
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "sensor.h"
|
||||
#include "stdio.h"
|
||||
#include "string.h"
|
||||
extern UART_HandleTypeDef huart3;
|
||||
|
||||
uint8_t aTxBuffer[30]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t aRxBuffer[1];
|
||||
__IO ITStatus Tx_ready_UART3 = SET; //<2F>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>븳ֵSET
|
||||
__IO ITStatus Rx_ready_UART3 = RESET;
|
||||
uint8_t Rx_buff_UART3[30];
|
||||
uint8_t Rx_count_UART3=0; //UART3 <20><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t Rx_num_UART3=0; //UART3 һ<><D2BB>ָ<EFBFBD><D6B8>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
||||
extern ts_sensor_data s_sensor_data;
|
||||
|
||||
|
||||
//68 01 0E 01 19 01 B4 00(wifi) 00 00 00 10(crc) 5C 6E
|
||||
#define FRM_START 0x68
|
||||
#define FRM_CMD_UPD_SENSOR 0x01
|
||||
#define FRM_FIXLEN 14
|
||||
#define FRM_END0 0x5c
|
||||
#define FRM_END1 0x6e
|
||||
|
||||
#define FRM_POS_START 0
|
||||
#define FRM_POS_CMD 1
|
||||
#define FRM_POS_LEN 2
|
||||
#define FRM_POS_DATA 3
|
||||
#define FRM_POS_CRC 11
|
||||
#define FRM_POS_END0 12
|
||||
#define FRM_POS_END1 13
|
||||
|
||||
|
||||
uint8_t cal_crc(uint8_t *buf,uint8_t len)
|
||||
{
|
||||
uint8_t t_crc = 0;
|
||||
uint8_t r_crc = 0;
|
||||
//check crc
|
||||
for(int i=0; i<len ;i++)
|
||||
{
|
||||
t_crc += buf[i];
|
||||
}
|
||||
r_crc = (uint8_t)t_crc;
|
||||
return r_crc;
|
||||
}
|
||||
|
||||
int8_t parse_sensor_package(void)
|
||||
{
|
||||
uint8_t msg[8];
|
||||
int rc = 0;
|
||||
if(Rx_buff_UART3[FRM_POS_START]==FRM_START && Rx_buff_UART3[FRM_POS_CRC] == cal_crc(Rx_buff_UART3,FRM_FIXLEN-3))
|
||||
{
|
||||
if(Rx_buff_UART3[FRM_POS_CMD]==FRM_CMD_UPD_SENSOR)
|
||||
{
|
||||
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_11);
|
||||
msg[0]=Rx_buff_UART3[FRM_POS_DATA];
|
||||
msg[1]=Rx_buff_UART3[FRM_POS_DATA+1];
|
||||
msg[2]=Rx_buff_UART3[FRM_POS_DATA+2];
|
||||
msg[3]=Rx_buff_UART3[FRM_POS_DATA+3];
|
||||
msg[4]=Rx_buff_UART3[FRM_POS_DATA+4];
|
||||
s_sensor_data.temperature[1] = (msg[0]*256+msg[1])/10;
|
||||
s_sensor_data.temperature[0] = (msg[0]*256+msg[1])%10;
|
||||
|
||||
s_sensor_data.humidity[1] = (msg[2]*256+msg[3])/10;
|
||||
s_sensor_data.humidity[0] = (msg[2]*256+msg[3])%10;
|
||||
s_sensor_data.wifi_status = msg[4];//wifi status
|
||||
//printf("s_sensor_data.wifi_status =%d\n\r",s_sensor_data.wifi_status);
|
||||
}
|
||||
}else{
|
||||
rc = -1;
|
||||
}
|
||||
return rc;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void Start_Next_UART_Receive_IT(UART_HandleTypeDef *UartHandle)
|
||||
{
|
||||
HAL_UART_Receive_IT(UartHandle,aRxBuffer,1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
|
||||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
|
||||
{
|
||||
|
||||
if(UartHandle->Instance == USART3)
|
||||
{
|
||||
Rx_buff_UART3[Rx_count_UART3] = aRxBuffer[0];
|
||||
if((Rx_buff_UART3[Rx_count_UART3-1] == 0x5c && Rx_buff_UART3[Rx_count_UART3] == 0x6e) || Rx_count_UART3 > FRM_FIXLEN)
|
||||
{
|
||||
Rx_ready_UART3 = SET;
|
||||
Rx_num_UART3 = ++Rx_count_UART3;
|
||||
Start_Next_UART_Receive_IT(&huart3); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
else
|
||||
{
|
||||
Rx_count_UART3++;
|
||||
Start_Next_UART_Receive_IT(&huart3); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void sensor_read_init(void)
|
||||
{
|
||||
Start_Next_UART_Receive_IT(&huart3); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
s_sensor_data.wifi_status=FRM_CMD_UPD_INITSTAT;
|
||||
}
|
||||
|
||||
int sensor_read_func(void)
|
||||
{
|
||||
int rc = 0;
|
||||
if(Rx_ready_UART3==SET)
|
||||
{
|
||||
Rx_ready_UART3 = RESET;
|
||||
rc = parse_sensor_package();
|
||||
Rx_count_UART3=0;
|
||||
memset(Rx_buff_UART3,0,sizeof(Rx_buff_UART3));
|
||||
|
||||
}else{
|
||||
rc = -1;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
void sensor_read_start_next()
|
||||
{
|
||||
Start_Next_UART_Receive_IT(&huart3); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -267,6 +267,33 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
|
||||
|
||||
/* USER CODE END USART1_MspInit 1 */
|
||||
}
|
||||
else if(huart->Instance==USART3)
|
||||
{
|
||||
/* USER CODE BEGIN USART3_MspInit 0 */
|
||||
|
||||
/* USER CODE END USART3_MspInit 0 */
|
||||
/* Peripheral clock enable */
|
||||
__HAL_RCC_USART3_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
/**USART3 GPIO Configuration
|
||||
PB10 ------> USART3_TX
|
||||
PB11 ------> USART3_RX
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/* USART3 interrupt Init */
|
||||
HAL_NVIC_SetPriority(USART3_IRQn, 5, 0);
|
||||
HAL_NVIC_EnableIRQ(USART3_IRQn);
|
||||
/* USER CODE BEGIN USART3_MspInit 1 */
|
||||
|
||||
/* USER CODE END USART3_MspInit 1 */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -296,6 +323,26 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
|
||||
|
||||
/* USER CODE END USART1_MspDeInit 1 */
|
||||
}
|
||||
else if(huart->Instance==USART3)
|
||||
{
|
||||
/* USER CODE BEGIN USART3_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END USART3_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_USART3_CLK_DISABLE();
|
||||
|
||||
/**USART3 GPIO Configuration
|
||||
PB10 ------> USART3_TX
|
||||
PB11 ------> USART3_RX
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_11);
|
||||
|
||||
/* USART3 interrupt DeInit */
|
||||
HAL_NVIC_DisableIRQ(USART3_IRQn);
|
||||
/* USER CODE BEGIN USART3_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END USART3_MspDeInit 1 */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,7 @@
|
||||
/* External variables --------------------------------------------------------*/
|
||||
extern DMA2D_HandleTypeDef hdma2d;
|
||||
extern LTDC_HandleTypeDef hltdc;
|
||||
extern UART_HandleTypeDef huart3;
|
||||
extern TIM_HandleTypeDef htim6;
|
||||
|
||||
/* USER CODE BEGIN EV */
|
||||
@ -162,6 +163,20 @@ void DebugMon_Handler(void)
|
||||
/* please refer to the startup file (startup_stm32f4xx.s). */
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief This function handles USART3 global interrupt.
|
||||
*/
|
||||
void USART3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART3_IRQn 0 */
|
||||
|
||||
/* USER CODE END USART3_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&huart3);
|
||||
/* USER CODE BEGIN USART3_IRQn 1 */
|
||||
|
||||
/* USER CODE END USART3_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
|
||||
*/
|
||||
|
84
example3/freeRTOS/TouchGFX/gui/include/gui/common/sensor.h
Normal file
84
example3/freeRTOS/TouchGFX/gui/include/gui/common/sensor.h
Normal file
@ -0,0 +1,84 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : SENSOR.h
|
||||
* Description : This file provides code for the configuration
|
||||
* of the sensor instances.
|
||||
******************************************************************************
|
||||
** This notice applies to any and all portions of this file
|
||||
* that are not between comment pairs USER CODE BEGIN and
|
||||
* USER CODE END. Other portions of this file, whether
|
||||
* inserted by the user or by software development tools
|
||||
* are owned by their respective copyright owners.
|
||||
*
|
||||
* COPYRIGHT(c) 2019 STMicroelectronics
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __sensor_H
|
||||
#define __sensor_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef SIMULATOR
|
||||
//#include "usart.h"
|
||||
#endif
|
||||
#include "stm32f4xx_hal.h"
|
||||
#include <stdint.h>
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#define FRM_CMD_UPD_SENSOR 0x01//SHT30 DATA
|
||||
#define FRM_CMD_UPD_RESTWIFI 0x02//REST WIFI
|
||||
#define FRM_CMD_UPD_AIRLINK 0x03//CONFIG WIFI TO ROUTER
|
||||
#define FRM_CMD_UPD_CONFIGEND 0x04//LINKED TO ROUTER
|
||||
#define FRM_CMD_UPD_INITSTAT 0x05//INIT STATUS
|
||||
|
||||
typedef struct _s_sensor_data
|
||||
{
|
||||
uint8_t temperature[2];
|
||||
uint8_t humidity[2];
|
||||
uint16_t pm25;
|
||||
uint8_t wifi_status;
|
||||
}ts_sensor_data;
|
||||
|
||||
void sensor_read_init(void);
|
||||
int sensor_read_func(void);
|
||||
void sensor_read_start_next();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /*__ sensor_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
@ -0,0 +1,493 @@
|
||||
#ifndef ABSTRACTGRAPH_HPP
|
||||
#define ABSTRACTGRAPH_HPP
|
||||
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
#include <touchgfx/widgets/Widget.hpp>
|
||||
#include <touchgfx/widgets/canvas/Canvas.hpp>
|
||||
#include <touchgfx/widgets/canvas/CanvasWidget.hpp>
|
||||
#include <touchgfx/Color.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/**
|
||||
* @class AbstractGraph AbstractGraph.hpp
|
||||
*
|
||||
* @brief Simple widget capable of drawing a graph line. The graph line consists of a number of
|
||||
* points with different x values. Points on the graph can be added and removed and the
|
||||
* coordinate system of the graph can easily be setup. The graph is limited to integer
|
||||
* values for x and y and the values should not exceed 1000.
|
||||
*
|
||||
* @see CanvasWidget
|
||||
*/
|
||||
class AbstractGraph : public CanvasWidget
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @class GraphPoint AbstractGraph.hpp gui/common/AbstractGraph.hpp
|
||||
*
|
||||
* @brief A graph point on the graph line.
|
||||
*
|
||||
* A graph point on the graph line. The point stores the slope of the line going from
|
||||
* this point to the next on the graph line.
|
||||
*/
|
||||
class GraphPoint
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn GraphPoint::GraphPoint()
|
||||
*
|
||||
* @brief Default constructor.
|
||||
*
|
||||
* Default constructor.
|
||||
*/
|
||||
GraphPoint()
|
||||
{
|
||||
}
|
||||
|
||||
int x; ///< The x coordinate of the points.
|
||||
int y; ///< The y coordinate of the points.
|
||||
CWRUtil::Q5 dx, dy; ///< The slope from the GridPoint to the next on the AbstractGraph
|
||||
};
|
||||
|
||||
/**
|
||||
* @fn AbstractGraph::AbstractGraph()
|
||||
*
|
||||
* @brief Constructs a new NewGraph.
|
||||
*
|
||||
* Constructs a new NewGraph.
|
||||
*/
|
||||
AbstractGraph();
|
||||
|
||||
/**
|
||||
* @fn virtual AbstractGraph::~AbstractGraph()
|
||||
*
|
||||
* @brief Virtual Destructor.
|
||||
*
|
||||
* Virtual Destructor. Not used.
|
||||
*/
|
||||
virtual ~AbstractGraph();
|
||||
|
||||
/**
|
||||
* @fn CWRUtil::Q5 AbstractGraph::widgetX(int x) const;
|
||||
*
|
||||
* @brief Calculate Widget x coordinate.
|
||||
*
|
||||
* Calculate widget x coordinate from a graph x coordinate.
|
||||
*
|
||||
* @param x The x coordinate.
|
||||
*
|
||||
* @return The x coordinate in the widget in Q5 format.
|
||||
*/
|
||||
CWRUtil::Q5 widgetX(int x) const;
|
||||
|
||||
/**
|
||||
* @fn CWRUtil::Q5 AbstractGraph::widgetY(int y) const;
|
||||
*
|
||||
* @brief Calculate Widget y coordinate.
|
||||
*
|
||||
* Calculate widget y coordinate from a graph y coordinate.
|
||||
*
|
||||
* @param y The y coordinate.
|
||||
*
|
||||
* @return The y coordinate in the widget in Q5 format.
|
||||
*/
|
||||
CWRUtil::Q5 widgetY(int y) const;
|
||||
|
||||
/**
|
||||
* @fn CWRUtil::Q5 AbstractGraph::widgetXindex(int index) const;
|
||||
*
|
||||
* @brief Calculate Widget x coordinate of the index'th point.
|
||||
*
|
||||
* Calculate widget x coordinate of the index'th point.
|
||||
*
|
||||
* @param index The index.
|
||||
*
|
||||
* @return The x coordinate in the widget in Q5 format.
|
||||
*/
|
||||
CWRUtil::Q5 widgetXindex(int index) const;
|
||||
|
||||
/**
|
||||
* @fn CWRUtil::Q5 AbstractGraph::widgetYindex(int index) const;
|
||||
*
|
||||
* @brief Calculate Widget y coordinate of the index'th point.
|
||||
*
|
||||
* Calculate widget y coordinate of the index'th point.
|
||||
*
|
||||
* @param index The index.
|
||||
*
|
||||
* @return The y coordinate in the widget in Q5 format.
|
||||
*/
|
||||
CWRUtil::Q5 widgetYindex(int index) const;
|
||||
|
||||
/**
|
||||
* @fn void AbstractGraph::setBuffer(GraphPoint *pointsBuffer, int numPointsInBuffer)
|
||||
*
|
||||
* @brief Sets a buffer to be used to store points on the graph line.
|
||||
*
|
||||
* Sets a buffer to be used to store points on the graph line.
|
||||
*
|
||||
* @param [in] pointsBuffer If non-null, buffer for points data.
|
||||
* @param numPointsInBuffer Number of points in buffers.
|
||||
*/
|
||||
void setBuffer(GraphPoint* pointsBuffer, int numPointsInBuffer);
|
||||
|
||||
/**
|
||||
* @fn void AbstractGraph::setLinkedGraph(AbstractGraph &other);
|
||||
*
|
||||
* @brief Sets linked graph.
|
||||
*
|
||||
* Sets linked graph which is updated when necessary. Invalidation etc is also
|
||||
* handled. Linked graphs share the memory used for graph points and will thus
|
||||
* reduce memory requirements.
|
||||
*
|
||||
* @note this is only intended to link to another graph with lineWidth==0 at the moment.
|
||||
*
|
||||
* @param [in] other The other graph to link to.
|
||||
*/
|
||||
void setLinkedGraph(AbstractGraph& other);
|
||||
|
||||
/**
|
||||
* @fn void AbstractGraph::setRange(int newLleft, int newRight, int newTop, int newBottom)
|
||||
*
|
||||
* @brief Sets the range of the graph.
|
||||
*
|
||||
* Sets the range of the graph.
|
||||
*
|
||||
* @param newLeft The value at the left of the graph area.
|
||||
* @param newRight The value at the right of the graph area.
|
||||
* @param newTop The value at the top of the graph area.
|
||||
* @param newBottom The value at the bottom of the graph area.
|
||||
*/
|
||||
void setRange(int newLleft, int newRight, int newTop, int newBottom);
|
||||
|
||||
/**
|
||||
* @fn virtual void Drawable::setX(int16_t x)
|
||||
*
|
||||
* @brief Sets the x coordinate of this drawable.
|
||||
*
|
||||
* Sets the x coordinate of this drawable.
|
||||
*
|
||||
* @note Changing this does not automatically yield a redraw.
|
||||
*
|
||||
* @param x The new x value, relative to the parent. A negative value is allowed.
|
||||
*/
|
||||
virtual void setX(int16_t x);
|
||||
|
||||
/**
|
||||
* @fn virtual void Drawable::setY(int16_t y)
|
||||
*
|
||||
* @brief Sets the y coordinate of this drawable.
|
||||
*
|
||||
* Sets the y coordinate of this drawable.
|
||||
*
|
||||
* @note Changing this does not automatically yield a redraw.
|
||||
*
|
||||
* @param y The new y value, relative to the parent. A negative value is allowed.
|
||||
*/
|
||||
virtual void setY(int16_t y);
|
||||
|
||||
/**
|
||||
* @fn virtual void AbstractGraph::setWidth(int16_t width)
|
||||
*
|
||||
* @brief Sets the width of this drawable.
|
||||
*
|
||||
* Sets the width of this drawable.
|
||||
*
|
||||
* @note Changing this does not automatically yield a redraw.
|
||||
*
|
||||
* @param width The new width.
|
||||
*/
|
||||
virtual void setWidth(int16_t width);
|
||||
|
||||
/**
|
||||
* @fn virtual void AbstractGraph::setHeight(int16_t height)
|
||||
*
|
||||
* @brief Sets the height of this drawable.
|
||||
*
|
||||
* Sets the height of this drawable.
|
||||
*
|
||||
* @note Changing this does not automatically yield a redraw.
|
||||
*
|
||||
* @param height The new height.
|
||||
*/
|
||||
virtual void setHeight(int16_t height);
|
||||
|
||||
/**
|
||||
* @fn template <class T> void AbstractGraph::setLineWidth(T width)
|
||||
*
|
||||
* @brief Sets the width for this graph line.
|
||||
*
|
||||
* Sets the width for this graph line. A line width of 0 is handled specially as
|
||||
* it will fill the area below the graph line.
|
||||
*
|
||||
* @note The graph line is invalidated.
|
||||
*
|
||||
* @tparam T Generic type parameter.
|
||||
* @param width The width of the line measured in pixels.
|
||||
*/
|
||||
template <class T>
|
||||
void setLineWidth(T width)
|
||||
{
|
||||
CWRUtil::Q5 newLineWidth = CWRUtil::toQ5(width);
|
||||
if (lineWidth == newLineWidth)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
lineWidth = newLineWidth;
|
||||
|
||||
if (numPoints > 0)
|
||||
{
|
||||
updateAndInvalidateCacheForLinesBetweenIndeces(0, numPoints - 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn template <class T> T AbstractGraph::getLineWidth() const
|
||||
*
|
||||
* @brief Gets line width.
|
||||
*
|
||||
* Gets line width.
|
||||
*
|
||||
* @tparam T Generic type parameter.
|
||||
*
|
||||
* @return The line width.
|
||||
*/
|
||||
template <class T>
|
||||
T getLineWidth() const
|
||||
{
|
||||
return int(lineWidth) / T(Rasterizer::POLY_BASE_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn virtual void NewGraph::clearGraph()
|
||||
*
|
||||
* @brief Clears the graph.
|
||||
*
|
||||
* @note The graph line is not invalidated.
|
||||
*/
|
||||
virtual void clearGraph();
|
||||
|
||||
/**
|
||||
* @fn virtual bool AbstractGraph::addValue(int x, int y)
|
||||
*
|
||||
* @brief Adds a value to the graph.
|
||||
*
|
||||
* Adds a value to the graph.
|
||||
*
|
||||
* @note The updated graph line is invalidated.
|
||||
*
|
||||
* @param x The value.
|
||||
* @param y The y coordinate.
|
||||
*
|
||||
* @return true if it succeeds, false if it fails.
|
||||
*/
|
||||
virtual bool addValue(int x, int y);
|
||||
|
||||
/**
|
||||
* @fn virtual bool AbstractGraph::deleteValue(int x)
|
||||
*
|
||||
* @brief Deletes the value on the graph line at the given x coordinate.
|
||||
*
|
||||
* Deletes the value on the graph line at the given x coordinate.
|
||||
*
|
||||
* @param x The x coordinate.
|
||||
*
|
||||
* @return true if a point with the given x value was found and deleted, false otherwise.
|
||||
*/
|
||||
virtual bool deleteValue(int x);
|
||||
|
||||
/**
|
||||
* @fn virtual bool AbstractGraph::drawCanvasWidget(const Rect& invalidatedArea) const
|
||||
*
|
||||
* @brief Draw the graph line.
|
||||
*
|
||||
* Draw the graph line. Care is taken not to spend time drawing graphs lines
|
||||
* that are outside the invalidated area.
|
||||
*
|
||||
* @param invalidatedArea The rectangle to draw, with coordinates relative to this drawable.
|
||||
*
|
||||
* @return true if it succeeds, false if there was insufficient memory to draw the line.
|
||||
*/
|
||||
virtual bool drawCanvasWidget(const Rect& invalidatedArea) const;
|
||||
|
||||
protected:
|
||||
virtual Rect getMinimalRectContainingIndices(int firstIndex, int lastIndex) const = 0;
|
||||
|
||||
virtual void invalidateRectContainingIndices(int firstIndex, int lastIndex) const;
|
||||
|
||||
/**
|
||||
* @fn Rect AbstractGraph::updateCacheForLinesBetweenIndeces(int firstIndex, int lastIndex)
|
||||
*
|
||||
* @brief Updates the NewGraph cache for one element.
|
||||
*
|
||||
* The cache is used to be able to quickly redraw the graph line without
|
||||
* calculating the slope of all the lines that make up the graph line.
|
||||
*
|
||||
* @param firstIndex Zero-based index of the first index to update cache for.
|
||||
* @param lastIndex Zero-based index of the last index to update cache for (actually lastIndex-1 is the last).
|
||||
*
|
||||
* @return A Rect enclosing the graph line in the given range from firstIndex to lastIndex (inclusive).
|
||||
*/
|
||||
virtual void updateAndInvalidateCacheForLinesBetweenIndeces(int firstIndex, int lastIndex);
|
||||
|
||||
/**
|
||||
* @fn Rect AbstractGraph::getMinimalRect() const
|
||||
*
|
||||
* @brief Gets minimal rectangle containing the NewGraph. Used for invalidating only the
|
||||
* required part of the screen.
|
||||
*
|
||||
* @return The minimal rectangle.
|
||||
*/
|
||||
virtual Rect getMinimalRect() const;
|
||||
|
||||
AbstractGraph* linkedGraph; ///< Graph sharing data with this graph. Updated when setting range, changing values etc.
|
||||
|
||||
int left, right, top, bottom; ///< Limits of the values of the graph line area
|
||||
GraphPoint* points; ///< Pointer to buffer where the coordinates are stored
|
||||
int maxPoints; ///< Maximum number of points possible on graph line
|
||||
int numPoints; ///< Number of points currently in use
|
||||
CWRUtil::Q5 lineWidth; ///< Line with (0=fill below graph line)
|
||||
CWRUtil::Q5 widgetWidth; ///< Width of the widget as Q5
|
||||
CWRUtil::Q5 widgetHeight; ///< Height of the widget as Q5
|
||||
CWRUtil::Q5 graphWidth; ///< Width of the graph range (left to right) as Q5
|
||||
CWRUtil::Q5 graphHeight; ///< Height of the graph range (top to bottom) as Q5
|
||||
|
||||
/**
|
||||
* @fn void AbstractGraph::setNumPoints(int numPointsUsed)
|
||||
*
|
||||
* @brief Sets number of used points.
|
||||
*
|
||||
* Sets number of used points, synchronize with linked graph.
|
||||
*
|
||||
* @param numPointsUsed The number of used points.
|
||||
*/
|
||||
virtual void setNumPoints(int numPointsUsed);
|
||||
|
||||
/**
|
||||
* @fn void AbstractGraph::invalidateLineFromIndex(int index)
|
||||
*
|
||||
* @brief Invalidate line from index to index+1.
|
||||
*
|
||||
* Invalidate line from index to index+1.
|
||||
*
|
||||
* @param index Zero-based index of the left end point.
|
||||
*/
|
||||
virtual void invalidateLineFromIndex(int index);
|
||||
|
||||
/**
|
||||
* @fn void AbstractGraph::insertPointAtIndex(int index)
|
||||
*
|
||||
* @brief Inserts a point at the given index.
|
||||
*
|
||||
* There is only made room for the point, by moving all points after the given
|
||||
* index one index up.
|
||||
*
|
||||
* @param index Zero-based index of the point.
|
||||
*/
|
||||
virtual void insertPointAtIndex(int index);
|
||||
|
||||
/**
|
||||
* @fn void AbstractGraph::deletePointAtIndex(int index)
|
||||
*
|
||||
* @brief Deletes the point at the given index.
|
||||
*
|
||||
* Deletes the point at the given index.
|
||||
*
|
||||
* @param index Zero-based index of the point.
|
||||
*/
|
||||
virtual void deletePointAtIndex(int index);
|
||||
|
||||
/**
|
||||
* @fn int AbstractGraph::findX(int x)
|
||||
*
|
||||
* @brief Searches for the given x coordinate.
|
||||
*
|
||||
* Searches for the given x coordinate. If the x coordinate is not found, the
|
||||
* closest index is returned so that the point at the returned index has the
|
||||
* first x value higher than the sought x coordinate (or at usedPoints if the x
|
||||
* coordinate is higher than the x coordinate of all existing points)
|
||||
*
|
||||
* @param x The x coordinate.
|
||||
*
|
||||
* @return The index of the found x coordinate where the x should be inserted.
|
||||
*/
|
||||
virtual int findX(int x);
|
||||
|
||||
// A handful of functions to get the Q5 coordinates of the corners of the line segments making up the line
|
||||
CWRUtil::Q5 xAboveOutgoing(int index) const
|
||||
{
|
||||
return widgetXindex(index) + points[index].dy;
|
||||
}
|
||||
CWRUtil::Q5 yAboveOutgoing(int index) const
|
||||
{
|
||||
return widgetYindex(index) - points[index].dx;
|
||||
}
|
||||
CWRUtil::Q5 xBelowOutgoing(int index) const
|
||||
{
|
||||
return widgetXindex(index) - points[index].dy;
|
||||
}
|
||||
CWRUtil::Q5 yBelowOutgoing(int index) const
|
||||
{
|
||||
return widgetYindex(index) + points[index].dx;
|
||||
}
|
||||
CWRUtil::Q5 xAboveIncoming(int index) const
|
||||
{
|
||||
return widgetXindex(index) + points[index - 1].dy;
|
||||
}
|
||||
CWRUtil::Q5 yAboveIncoming(int index) const
|
||||
{
|
||||
return widgetYindex(index) - points[index - 1].dx;
|
||||
}
|
||||
CWRUtil::Q5 xBelowIncoming(int index) const
|
||||
{
|
||||
return widgetXindex(index) - points[index - 1].dy;
|
||||
}
|
||||
CWRUtil::Q5 yBelowIncoming(int index) const
|
||||
{
|
||||
return widgetYindex(index) + points[index - 1].dx;
|
||||
}
|
||||
|
||||
private:
|
||||
/**
|
||||
* @fn void AbstractGraph::assignRange(int newLeft, int newRight, int newTop, int newBottom)
|
||||
*
|
||||
* @brief Sets the range of the graph.
|
||||
*
|
||||
* Sets the range of the graph.
|
||||
*
|
||||
* @param newLeft The value at the left of the graph area.
|
||||
* @param newRight The value at the right of the graph area.
|
||||
* @param newTop The value at the top of the graph area.
|
||||
* @param newBottom The value at the bottom of the graph area.
|
||||
*/
|
||||
void assignRange(int newLeft, int newRight, int newTop, int newBottom);
|
||||
|
||||
/**
|
||||
* @fn virtual void AbstractGraph::assignWidth(int16_t width)
|
||||
*
|
||||
* @brief Sets the width of this drawable.
|
||||
*
|
||||
* Sets the width of this drawable.
|
||||
*
|
||||
* @note Changing this does not automatically yield a redraw.
|
||||
*
|
||||
* @param width The new width.
|
||||
*/
|
||||
virtual void assignWidth(int16_t width);
|
||||
|
||||
/**
|
||||
* @fn virtual void AbstractGraph::assignHeight(int16_t height)
|
||||
*
|
||||
* @brief Sets the height of this drawable.
|
||||
*
|
||||
* Sets the height of this drawable.
|
||||
*
|
||||
* @note Changing this does not automatically yield a redraw.
|
||||
*
|
||||
* @param height The new height.
|
||||
*/
|
||||
virtual void assignHeight(int16_t height);
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,115 @@
|
||||
#ifndef GRAPH_HPP
|
||||
#define GRAPH_HPP
|
||||
|
||||
#include "GraphLine.hpp"
|
||||
#include "GraphBelow.hpp"
|
||||
#include "GraphDots.hpp"
|
||||
#include "PainterVerticalAlpha.hpp"
|
||||
#include <touchgfx/containers/Container.hpp>
|
||||
#include <touchgfx/widgets/Image.hpp>
|
||||
#include <touchgfx/widgets/canvas/Circle.hpp>
|
||||
#if !defined(USE_BPP) || USE_BPP==16
|
||||
#include <touchgfx/widgets/canvas/PainterRGB565.hpp>
|
||||
#include <touchgfx/widgets/canvas/PainterRGB565Bitmap.hpp>
|
||||
#elif USE_BPP==24
|
||||
#include <touchgfx/widgets/canvas/PainterRGB888.hpp>
|
||||
#include <touchgfx/widgets/canvas/PainterRGB888Bitmap.hpp>
|
||||
#elif USE_BPP==4
|
||||
#include <touchgfx/widgets/canvas/PainterGRAY4.hpp>
|
||||
#include <touchgfx/widgets/canvas/PainterGRAY4Bitmap.hpp>
|
||||
#elif USE_BPP==2
|
||||
#include <touchgfx/widgets/canvas/PainterGRAY2.hpp>
|
||||
#include <touchgfx/widgets/canvas/PainterGRAY2Bitmap.hpp>
|
||||
#else
|
||||
#error Unknown USE_BPP
|
||||
#endif
|
||||
#include <BitmapDatabase.hpp>
|
||||
|
||||
#include <touchgfx/widgets/Box.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
class Graph : public Container
|
||||
{
|
||||
public:
|
||||
static const int NUMBER_OF_POINTS = 8000;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
|
||||
Graph();
|
||||
virtual ~Graph() { }
|
||||
|
||||
void setup(int newWidth, int newHeight, colortype lineColor, colortype backgroundColor);
|
||||
|
||||
bool addValue(int x, int y)
|
||||
{
|
||||
return graphLine.addValue(x, y);
|
||||
}
|
||||
|
||||
bool deleteValue(int x)
|
||||
{
|
||||
return graphLine.deleteValue(x);
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
graphLine.clearGraph();
|
||||
}
|
||||
|
||||
void setRange(int left, int right, int top, int bottom);
|
||||
|
||||
void setLineVisible(bool lineVisible);
|
||||
void setDotsVisible(bool dotsVisible);
|
||||
void setDotsBackgroundVisible(bool dotsBackgroundVisible);
|
||||
void setAreaVisible(bool areaVisible);
|
||||
|
||||
void setDotShape(int startAngle, int angleStep, int lineWidth);
|
||||
void setDotBackgroundShape(int startAngle, int angleStep, int lineWidth);
|
||||
|
||||
void setLineWidth(int width);
|
||||
void set_Draw_Range(int left,int right,int top,int button);
|
||||
uint8_t getAlpha()
|
||||
{
|
||||
return myAlpha;
|
||||
}
|
||||
void setAlpha(uint8_t alpha)
|
||||
{
|
||||
myAlpha = alpha;
|
||||
graphLine.setAlpha(myAlpha);
|
||||
graphArea.setAlpha(myAlpha);
|
||||
graphDots.setAlpha(myAlpha);
|
||||
graphDotsBackground.setAlpha(myAlpha);
|
||||
invalidate();
|
||||
}
|
||||
protected:
|
||||
|
||||
GraphLine graphLine;
|
||||
GraphBelow graphArea;
|
||||
GraphDots graphDots;
|
||||
GraphDots graphDotsBackground;
|
||||
|
||||
GraphLine::GraphPoint graphBuffer[NUMBER_OF_POINTS];
|
||||
|
||||
#if !defined(USE_BPP) || USE_BPP==16
|
||||
PainterRGB565 graphLinePainter;
|
||||
PainterRGB565 graphDotsPainter;
|
||||
PainterRGB565 graphDotsBackgroundPainter;
|
||||
#elif USE_BPP==24
|
||||
PainterRGB888 graphLinePainter;
|
||||
PainterRGB888 graphDotsPainter;
|
||||
PainterRGB888 graphDotsBackgroundPainter;
|
||||
#elif USE_BPP==4
|
||||
PainterGRAY4 graphLinePainter;
|
||||
PainterGRAY4 graphDotsPainter;
|
||||
PainterGRAY4 graphDotsBackgroundPainter;
|
||||
#elif USE_BPP==2
|
||||
PainterGRAY2 graphLinePainter;
|
||||
PainterGRAY2 graphDotsPainter;
|
||||
PainterGRAY2 graphDotsBackgroundPainter;
|
||||
#else
|
||||
#error Unknown USE_BPP
|
||||
#endif
|
||||
PainterVerticalAlpha graphAreaPainter;
|
||||
|
||||
uint8_t myAlpha;
|
||||
};
|
||||
|
||||
#endif /* GRAPH_HPP */
|
@ -0,0 +1,52 @@
|
||||
#ifndef GRAPHBELOW_HPP
|
||||
#define GRAPHBELOW_HPP
|
||||
|
||||
#include "GraphLine.hpp"
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
#include <touchgfx/widgets/Widget.hpp>
|
||||
#include <touchgfx/widgets/canvas/Canvas.hpp>
|
||||
#include <touchgfx/widgets/canvas/CanvasWidget.hpp>
|
||||
#include <touchgfx/Color.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/**
|
||||
* @class GraphBelow GraphBelow.hpp
|
||||
*
|
||||
* @brief Simple widget capable of drawing a graph line. The graph line consists of a number of
|
||||
* points with different x values. Points on the graph can be added and removed and the
|
||||
* coordinate system of the graph can easily be setup.
|
||||
*
|
||||
* @see CanvasWidget
|
||||
*/
|
||||
class GraphBelow : public GraphLine
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn virtual GraphBelow::~GraphBelow()
|
||||
*
|
||||
* @brief Virtual Destructor. Not used.
|
||||
*
|
||||
* Virtual Destructor. Not used.
|
||||
*/
|
||||
virtual ~GraphBelow();
|
||||
|
||||
/**
|
||||
* @fn virtual bool GraphBelow::drawCanvasWidget(const Rect& invalidatedArea) const
|
||||
*
|
||||
* @brief Draw the graph line.
|
||||
*
|
||||
* Draw the graph line. Care is taken not to spend time drawing graphs lines
|
||||
* that are outside the invalidated area.
|
||||
*
|
||||
* @param invalidatedArea The rectangle to draw, with coordinates relative to this drawable.
|
||||
*
|
||||
* @return true if it succeeds, false if there was insufficient memory to draw the line.
|
||||
*/
|
||||
virtual bool drawCanvasWidget(const Rect& invalidatedArea) const;
|
||||
|
||||
protected:
|
||||
virtual Rect getMinimalRectContainingIndices(int firstIndex, int lastIndex) const;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,81 @@
|
||||
#ifndef GRAPHDOTS_HPP
|
||||
#define GRAPHDOTS_HPP
|
||||
|
||||
#include "AbstractGraph.hpp"
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
#include <touchgfx/widgets/Widget.hpp>
|
||||
#include <touchgfx/widgets/canvas/Canvas.hpp>
|
||||
#include <touchgfx/widgets/canvas/CanvasWidget.hpp>
|
||||
#include <touchgfx/Color.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/**
|
||||
* @class GraphDots GraphDots.hpp
|
||||
*
|
||||
* @brief Simple widget capable of drawing a graph of dots. The graph consists of a number of
|
||||
* points with different x values. Points on the graph can be added and removed and the
|
||||
* coordinate system of the graph can easily be setup.
|
||||
*
|
||||
* @see CanvasWidget
|
||||
*/
|
||||
class GraphDots : public AbstractGraph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn GraphDots::GraphDots();
|
||||
*
|
||||
* @brief Default constructor.
|
||||
*
|
||||
* Default constructor.
|
||||
*/
|
||||
GraphDots();
|
||||
|
||||
/**
|
||||
* @fn void GraphDots::setDotShape(int dotStartAngle, int dotAngleStep);
|
||||
*
|
||||
* @brief Sets dot shape.
|
||||
*
|
||||
* Sets dot shape. Using the start angle and angle step various shapes can be made.
|
||||
* Example shapes are (0,30) circle, (0,90) diamond, (0,120) triangle, (0,144)
|
||||
* pentagram, (0,135) octagram, (45,90) square, (0,72) pentagon, etc.
|
||||
*
|
||||
* @param dotStartAngle The start angle.
|
||||
* @param dotAngleStep The angle step.
|
||||
*/
|
||||
void setDotShape(int dotStartAngle, int dotAngleStep);
|
||||
|
||||
/**
|
||||
* @fn virtual bool GraphDots::drawCanvasWidget(const Rect& invalidatedArea) const;
|
||||
*
|
||||
* @brief Draw the graph.
|
||||
*
|
||||
* Draw the graph. Care is taken not to spend time drawing graph dots that are
|
||||
* outside the invalidated area.
|
||||
*
|
||||
* @param invalidatedArea The rectangle to draw, with coordinates relative to this drawable.
|
||||
*
|
||||
* @return true if it succeeds, false if there was insufficient memory to draw the line.
|
||||
*/
|
||||
virtual bool drawCanvasWidget(const Rect& invalidatedArea) const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @fn virtual Rect GraphDots::getMinimalRectContainingIndices(int firstIndex, int lastIndex) const;
|
||||
*
|
||||
* @brief Gets minimal rectangle containing dots for the given indices.
|
||||
*
|
||||
* Gets minimal rectangle containing dots for the given range of indices. Line width
|
||||
* is taken into account to get the right rectangle.
|
||||
*
|
||||
* @param firstIndex Zero-based index of the first.
|
||||
* @param lastIndex Zero-based index of the last.
|
||||
*
|
||||
* @return The minimal rectangle containing indices.
|
||||
*/
|
||||
virtual Rect getMinimalRectContainingIndices(int firstIndex, int lastIndex) const;
|
||||
|
||||
int startAngle, angleStep;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,56 @@
|
||||
#ifndef GRAPHLINE_HPP
|
||||
#define GRAPHLINE_HPP
|
||||
|
||||
#include "AbstractGraph.hpp"
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
#include <touchgfx/widgets/Widget.hpp>
|
||||
#include <touchgfx/widgets/canvas/Canvas.hpp>
|
||||
#include <touchgfx/widgets/canvas/CanvasWidget.hpp>
|
||||
#include <touchgfx/Color.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/**
|
||||
* @class GraphLine GraphLine.hpp
|
||||
*
|
||||
* @brief Simple widget capable of drawing a graph line. The graph line consists of a number of
|
||||
* points with different x values. Points on the graph can be added and removed and the
|
||||
* coordinate system of the graph can easily be setup.
|
||||
*
|
||||
* @see CanvasWidget
|
||||
*/
|
||||
class GraphLine : public AbstractGraph
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn virtual bool GraphLine::drawCanvasWidget(const Rect& invalidatedArea) const;
|
||||
*
|
||||
* @brief Draw the graph line.
|
||||
*
|
||||
* Draw the graph line. Care is taken not to spend time drawing graph lines that are
|
||||
* outside the invalidated area.
|
||||
*
|
||||
* @param invalidatedArea The rectangle to draw, with coordinates relative to this drawable.
|
||||
*
|
||||
* @return true if it succeeds, false if there was insufficient memory to draw the line.
|
||||
*/
|
||||
virtual bool drawCanvasWidget(const Rect& invalidatedArea) const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @fn virtual Rect GraphLine::getMinimalRectContainingIndices(int firstIndex, int lastIndex) const;
|
||||
*
|
||||
* @brief Gets minimal rectangle containing line between the given indices.
|
||||
*
|
||||
* Gets minimal rectangle containing line between the given indices. Line width is
|
||||
* taken into account to get the right rectangle.
|
||||
*
|
||||
* @param firstIndex Zero-based index of the first.
|
||||
* @param lastIndex Zero-based index of the last.
|
||||
*
|
||||
* @return The minimal rectangle containing indices.
|
||||
*/
|
||||
virtual Rect getMinimalRectContainingIndices(int firstIndex, int lastIndex) const;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,105 @@
|
||||
#ifndef PAINTERVERTICALALPHA_HPP
|
||||
#define PAINTERVERTICALALPHA_HPP
|
||||
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
#include <stdint.h>
|
||||
#if !defined(USE_BPP) || USE_BPP==16
|
||||
#include <touchgfx/widgets/canvas/AbstractPainterRGB565.hpp>
|
||||
#elif USE_BPP==24
|
||||
#include <touchgfx/widgets/canvas/AbstractPainterRGB888.hpp>
|
||||
#elif USE_BPP==4
|
||||
#include <touchgfx/widgets/canvas/AbstractPainterGRAY4.hpp>
|
||||
#include <platform/driver/lcd/LCD4bpp.hpp>
|
||||
#elif USE_BPP==2
|
||||
#include <touchgfx/widgets/canvas/AbstractPainterGRAY2.hpp>
|
||||
#include <platform/driver/lcd/LCD2bpp.hpp>
|
||||
#else
|
||||
#error Unknown USE_BPP
|
||||
#endif
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/**
|
||||
* @class PainterVerticalAlpha PainterVerticalAlpha.hpp
|
||||
*
|
||||
* @brief A Painter that will paint using a fading color.
|
||||
*
|
||||
* PainterVerticalAlpha will paint using the given color at y coordinate 0 fading
|
||||
* the color to invisible at the given y coordinate.
|
||||
*
|
||||
* @see AbstractPainter
|
||||
*/
|
||||
class PainterVerticalAlpha :
|
||||
#if !defined(USE_BPP) || USE_BPP==16
|
||||
public AbstractPainterRGB565
|
||||
#elif USE_BPP==24
|
||||
public AbstractPainterRGB888
|
||||
#elif USE_BPP==4
|
||||
public AbstractPainterGRAY4
|
||||
#elif USE_BPP==2
|
||||
public AbstractPainterGRAY2
|
||||
#else
|
||||
#error Unknown USE_BPP
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* @fn PainterVerticalAlpha::PainterVerticalAlpha(colortype color = 0, int alpha0atY = 100);
|
||||
*
|
||||
* @brief Constructor.
|
||||
*
|
||||
* Constructor.
|
||||
*
|
||||
* @param color The color.
|
||||
* @param alpha0atY The y coordinate where alpha has faded to 0.
|
||||
*/
|
||||
PainterVerticalAlpha(colortype color = 0, int alpha0atY = 100);
|
||||
|
||||
/**
|
||||
* @fn void PainterVerticalAlpha::setColor(colortype color, int alphaZeroAt);
|
||||
*
|
||||
* @brief Sets color and alpha to use when drawing the CanvasWidget.
|
||||
*
|
||||
* Sets color and alpha to use when drawing the CanvasWidget.
|
||||
*
|
||||
* @param color The color.
|
||||
* @param alphaZeroAt The y coordinate where alpha has faded to 0.
|
||||
*/
|
||||
void setColor(colortype color, int alphaZeroAt);
|
||||
|
||||
virtual void render(uint8_t* ptr, int x, int xAdjust, int y, unsigned count, const uint8_t* covers);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @fn virtual bool PainterVerticalAlpha::renderInit();
|
||||
*
|
||||
* @brief Get ready to render (part of) a scanline.
|
||||
*
|
||||
* Get ready to render (part of) a scanline. Since the scanline will have the same y
|
||||
* coordinate, the alpha for the scanline can be calculated here and used for all
|
||||
* pixels in the scanline.
|
||||
*
|
||||
* @return true if it succeeds, false if it fails.
|
||||
*/
|
||||
virtual bool renderInit();
|
||||
|
||||
#if !defined(USE_BPP) || USE_BPP==16 || USE_BPP==24
|
||||
virtual bool renderNext(uint8_t& pixelRed, uint8_t& pixelGreen, uint8_t& pixelBlue, uint8_t& pixelAlpha);
|
||||
uint8_t painterRed; ///< The red part of the color
|
||||
uint8_t painterGreen; ///< The green part of the color
|
||||
uint8_t painterBlue; ///< The blue part of the color
|
||||
#elif USE_BPP==4 || USE_BPP==2
|
||||
virtual bool renderNext(uint8_t& gray, uint8_t& alpha);
|
||||
uint8_t painterGray; ///< The gray color
|
||||
#else
|
||||
#error Unknown USE_BPP
|
||||
#endif
|
||||
|
||||
uint8_t painterAlpha; ///< Current alpha for the scan line
|
||||
int alpha0atY; ///< The Y coordinate where alpha has faded to 0
|
||||
|
||||
private:
|
||||
}; // class PainterVerticalAlpha
|
||||
|
||||
#endif /* PAINTERVERTICALALPHA_HPP */
|
@ -2,7 +2,7 @@
|
||||
#define MODELLISTENER_HPP
|
||||
|
||||
#include <gui/model/Model.hpp>
|
||||
|
||||
#include "sensor.h"
|
||||
/**
|
||||
* ModelListener is the interface through which the Model can inform the currently
|
||||
* active presenter of events. All presenters should derive from this class.
|
||||
@ -31,6 +31,10 @@ public:
|
||||
{
|
||||
// Override and implement this function in Presenter
|
||||
}
|
||||
virtual void update_sensor_event(ts_sensor_data *p_sensor_data)
|
||||
{
|
||||
// Override and implement this function in Presenter
|
||||
}
|
||||
protected:
|
||||
Model* model;
|
||||
};
|
||||
|
@ -26,6 +26,8 @@ public:
|
||||
virtual void deactivate();
|
||||
|
||||
virtual ~Screen1Presenter() {};
|
||||
|
||||
virtual void update_sensor_event(ts_sensor_data *p_sensor_data);
|
||||
|
||||
private:
|
||||
Screen1Presenter();
|
||||
|
@ -1,12 +1,13 @@
|
||||
#ifndef SCREEN1VIEW_HPP
|
||||
#define SCREEN1VIEW_HPP
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
|
||||
#include <gui/screen1_screen/Screen1Presenter.hpp>
|
||||
#include <touchgfx/widgets/Image.hpp>
|
||||
#include <touchgfx/widgets/TextureMapper.hpp>
|
||||
#include <touchgfx/widgets/AnimationTextureMapper.hpp>
|
||||
#include <touchgfx/EasingEquations.hpp>
|
||||
#include "Graph.hpp"
|
||||
|
||||
class Screen1View : public Screen1ViewBase
|
||||
{
|
||||
@ -16,7 +17,31 @@ public:
|
||||
virtual void setupScreen();
|
||||
virtual void tearDownScreen();
|
||||
virtual void handleTickEvent();
|
||||
virtual void update_sensor_value(ts_sensor_data *p_sensor_data);
|
||||
virtual void set_sensor_value(ts_sensor_data *p_sensor_data);
|
||||
void setupHand(TextureMapper& hand, const BitmapId bitmapId, int16_t clockRotationCenterX, int16_t clockRotationCenterY, int16_t rotationCenterX, int16_t rotationCenterY);
|
||||
|
||||
private:
|
||||
// uint16_t g_tick;
|
||||
// float max_sim;
|
||||
// uint8_t max_z;
|
||||
// uint8_t max_w;
|
||||
// uint16_t From_Presenter_temperature;
|
||||
// uint16_t From_Presenter_temperature_z;
|
||||
// float real_temperature;
|
||||
|
||||
|
||||
|
||||
// uint8_t Time_base;
|
||||
// uint8_t Time_baseg;
|
||||
// uint8_t Time_baseS;
|
||||
// float avg;
|
||||
// uint16_t avg_flag;
|
||||
// float avg_all;
|
||||
// float avg_r;
|
||||
// uint8_t avg_r_w;
|
||||
// uint8_t avg_r_z;
|
||||
|
||||
protected:
|
||||
int tickCounter;
|
||||
int hours;
|
||||
@ -26,7 +51,13 @@ protected:
|
||||
float humidityEntropi;
|
||||
float temperatureEntropi;
|
||||
|
||||
|
||||
uint16_t g_y;
|
||||
|
||||
ts_sensor_data v_sensor_data;
|
||||
uint16_t wait;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // SCREEN1VIEW_HPP
|
||||
|
@ -0,0 +1,422 @@
|
||||
#include "AbstractGraph.hpp"
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
AbstractGraph::AbstractGraph() :
|
||||
CanvasWidget(), linkedGraph(0), left(-1), right(-1), top(-1), bottom(-1), points(0), maxPoints(0), lineWidth(0)
|
||||
{
|
||||
clearGraph();
|
||||
}
|
||||
|
||||
AbstractGraph::~AbstractGraph()
|
||||
{
|
||||
}
|
||||
|
||||
CWRUtil::Q5 AbstractGraph::widgetX(int x) const
|
||||
{
|
||||
if (graphWidth == 0)
|
||||
{
|
||||
return CWRUtil::toQ5(0);
|
||||
}
|
||||
return CWRUtil::toQ5(x - left) * widgetWidth / graphWidth;
|
||||
}
|
||||
|
||||
CWRUtil::Q5 AbstractGraph::widgetY(int y) const
|
||||
{
|
||||
if (graphHeight == 0)
|
||||
{
|
||||
return CWRUtil::toQ5(0);
|
||||
}
|
||||
return CWRUtil::toQ5(y - top) * widgetHeight / graphHeight;
|
||||
}
|
||||
|
||||
CWRUtil::Q5 AbstractGraph::widgetXindex(int index) const
|
||||
{
|
||||
return widgetX(points[index].x);
|
||||
}
|
||||
|
||||
CWRUtil::Q5 AbstractGraph::widgetYindex(int index) const
|
||||
{
|
||||
return widgetY(points[index].y);
|
||||
}
|
||||
|
||||
void AbstractGraph::setBuffer(GraphPoint* pointsBuffer, int numPointsInBuffer)
|
||||
{
|
||||
points = pointsBuffer;
|
||||
maxPoints = numPointsInBuffer;
|
||||
numPoints = 0;
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->setBuffer(pointsBuffer, numPointsInBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::setLinkedGraph(AbstractGraph& other)
|
||||
{
|
||||
if (linkedGraph == &other)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (linkedGraph != 0)
|
||||
{
|
||||
linkedGraph->setLinkedGraph(other);
|
||||
}
|
||||
else
|
||||
{
|
||||
linkedGraph = &other;
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::setRange(int newLleft, int newRight, int newTop, int newBottom)
|
||||
{
|
||||
if (left != newLleft || right != newRight || top != newTop || bottom != newBottom)
|
||||
{
|
||||
assignRange(newLleft, newRight, newTop, newBottom);
|
||||
|
||||
if (numPoints > 0)
|
||||
{
|
||||
updateAndInvalidateCacheForLinesBetweenIndeces(0, numPoints - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::setX(int16_t x)
|
||||
{
|
||||
CanvasWidget::setX(x);
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->setX(x);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::setY(int16_t y)
|
||||
{
|
||||
CanvasWidget::setY(y);
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->setY(y);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::setWidth(int16_t width)
|
||||
{
|
||||
assignWidth(width);
|
||||
if (numPoints > 0)
|
||||
{
|
||||
updateAndInvalidateCacheForLinesBetweenIndeces(0, numPoints - 1);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::setHeight(int16_t height)
|
||||
{
|
||||
assignHeight(height);
|
||||
if (numPoints > 0)
|
||||
{
|
||||
updateAndInvalidateCacheForLinesBetweenIndeces(0, numPoints - 1);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::clearGraph()
|
||||
{
|
||||
numPoints = 0;
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->clearGraph();
|
||||
}
|
||||
}
|
||||
|
||||
bool AbstractGraph::addValue(int x, int y)
|
||||
{
|
||||
if (numPoints >= maxPoints)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (numPoints == 0 || x > points[numPoints - 1].x)
|
||||
{
|
||||
// Point added at end of graph line
|
||||
points[numPoints].x = x;
|
||||
points[numPoints].y = y;
|
||||
setNumPoints(numPoints + 1);
|
||||
updateAndInvalidateCacheForLinesBetweenIndeces(numPoints - 2, numPoints - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
int index = findX(x);
|
||||
assert(points[index].x >= x && "Bug in binary search algorithm");
|
||||
if (points[index].x > x)
|
||||
{
|
||||
// Point with given X not already in graph line, insert it
|
||||
invalidateLineFromIndex(index);
|
||||
insertPointAtIndex(index);
|
||||
points[index].x = x;
|
||||
points[index].y = y;
|
||||
updateAndInvalidateCacheForLinesBetweenIndeces(index - 1, index + 1);
|
||||
}
|
||||
else // (points[index].x == x)
|
||||
{
|
||||
// Point with given X already exists in graph line, replace it (unless the
|
||||
// exact same point was already there)
|
||||
if (points[index].y != y)
|
||||
{
|
||||
// New Y value, so update the point on the graph line
|
||||
invalidateLineFromIndex(index - 1);
|
||||
invalidateLineFromIndex(index);
|
||||
points[index].x = x; // Actually not necessary
|
||||
points[index].y = y;
|
||||
updateAndInvalidateCacheForLinesBetweenIndeces(index - 1, index + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AbstractGraph::deleteValue(int x)
|
||||
{
|
||||
int index = findX(x);
|
||||
if (index < numPoints && points[index].x == x)
|
||||
{
|
||||
// Point with given X found in graph line
|
||||
if (index > 0)
|
||||
{
|
||||
invalidateLineFromIndex(index - 1);
|
||||
}
|
||||
invalidateLineFromIndex(index);
|
||||
deletePointAtIndex(index);
|
||||
if (numPoints > 0)
|
||||
{
|
||||
updateAndInvalidateCacheForLinesBetweenIndeces(MAX(0, index - 1), index);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AbstractGraph::drawCanvasWidget(const Rect& invalidatedArea) const
|
||||
{
|
||||
if (numPoints < 2)
|
||||
{
|
||||
// A graph line with a single (or not even a single) point is invisible
|
||||
return true;
|
||||
}
|
||||
|
||||
int firstIndex = 0;
|
||||
int lastIndex = numPoints - 1;
|
||||
|
||||
// We can skip the line from index if the left part of the line at index+1 is to the left of the invalidated area
|
||||
while (firstIndex < lastIndex &&
|
||||
invalidatedArea.x > (widgetXindex(firstIndex + 1) + lineWidth / 2).to<int>())
|
||||
{
|
||||
firstIndex++;
|
||||
}
|
||||
// We can skip the line from index if the left part of the line at index-1 is to the right of the invalidated area
|
||||
while (lastIndex > firstIndex &&
|
||||
invalidatedArea.right() < (widgetXindex(lastIndex - 1) - lineWidth / 2).to<int>())
|
||||
{
|
||||
lastIndex--;
|
||||
}
|
||||
if (firstIndex < lastIndex)
|
||||
{
|
||||
Canvas canvas(this, invalidatedArea);
|
||||
canvas.moveTo(xAboveOutgoing(firstIndex), yAboveOutgoing(firstIndex));
|
||||
canvas.lineTo(xAboveIncoming(firstIndex + 1), yAboveIncoming(firstIndex + 1));
|
||||
for (int index = firstIndex + 1; index < lastIndex; index++)
|
||||
{
|
||||
canvas.lineTo(xAboveOutgoing(index), yAboveOutgoing(index));
|
||||
canvas.lineTo(xAboveIncoming(index + 1), yAboveIncoming(index + 1));
|
||||
}
|
||||
if (lineWidth == 0)
|
||||
{
|
||||
CWRUtil::Q5 xBelow = xBelowIncoming(lastIndex);
|
||||
if (xBelow > xAboveIncoming(lastIndex))
|
||||
{
|
||||
canvas.lineTo(xBelow, yBelowIncoming(lastIndex));
|
||||
}
|
||||
canvas.lineTo(xAboveIncoming(lastIndex), widgetY(bottom));
|
||||
canvas.lineTo(xAboveOutgoing(firstIndex), widgetY(bottom));
|
||||
xBelow = xBelowOutgoing(firstIndex);
|
||||
if (xBelow < xAboveOutgoing(firstIndex))
|
||||
{
|
||||
canvas.lineTo(xBelow, yBelowOutgoing(firstIndex));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int index = lastIndex - 1; index >= firstIndex; index--)
|
||||
{
|
||||
canvas.lineTo(xBelowIncoming(index + 1), yBelowIncoming(index + 1));
|
||||
canvas.lineTo(xBelowOutgoing(index), yBelowOutgoing(index));
|
||||
}
|
||||
}
|
||||
return canvas.render();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void AbstractGraph::invalidateRectContainingIndices(int firstIndex, int lastIndex) const
|
||||
{
|
||||
Rect minimalRect = getMinimalRectContainingIndices(firstIndex, lastIndex);
|
||||
invalidateRect(minimalRect);
|
||||
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->invalidateRectContainingIndices(firstIndex, lastIndex);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::updateAndInvalidateCacheForLinesBetweenIndeces(int firstIndex, int lastIndex)
|
||||
{
|
||||
if (firstIndex < 0)
|
||||
{
|
||||
firstIndex = 0;
|
||||
}
|
||||
if (lastIndex >= numPoints)
|
||||
{
|
||||
lastIndex = numPoints - 1;
|
||||
}
|
||||
if (firstIndex > lastIndex)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (getWidth() == 0 || getHeight() == 0 || left == right || top == bottom)
|
||||
{
|
||||
// No width or no height
|
||||
return;
|
||||
}
|
||||
|
||||
// Calculate the slopes of all lines
|
||||
for (int index = firstIndex; index < lastIndex; index++)
|
||||
{
|
||||
CWRUtil::Q5 dy = (widgetYindex(index + 1) - widgetYindex(index));
|
||||
CWRUtil::Q5 dx = (widgetXindex(index + 1) - widgetXindex(index));
|
||||
CWRUtil::Q5 d = CWRUtil::sqrtQ10(dy * dy + dx * dx);
|
||||
|
||||
if (d != 0) // Should not happen, but if range is zero high/wide it does
|
||||
{
|
||||
points[index].dy = (lineWidth * dy / d) / 2;
|
||||
points[index].dx = (lineWidth * dx / d) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
invalidateRectContainingIndices(firstIndex, lastIndex);
|
||||
}
|
||||
|
||||
Rect AbstractGraph::getMinimalRect() const
|
||||
{
|
||||
if (numPoints < 1 || graphWidth == 0 || graphHeight == 0)
|
||||
{
|
||||
return Rect(0, 0, 0, 0);
|
||||
}
|
||||
return getMinimalRectContainingIndices(0, numPoints - 1);
|
||||
}
|
||||
|
||||
void AbstractGraph::setNumPoints(int numPointsUsed)
|
||||
{
|
||||
numPoints = numPointsUsed;
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->setNumPoints(numPointsUsed);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::invalidateLineFromIndex(int index)
|
||||
{
|
||||
invalidateRectContainingIndices(index, index + 1);
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->invalidateLineFromIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::insertPointAtIndex(int index)
|
||||
{
|
||||
assert(numPoints < maxPoints && "Unable to insert more points in array");
|
||||
assert(index >= 0 && index <= numPoints && "Illegal index"); // Allow insert at first position outside array
|
||||
for (int i = numPoints; i > index; i--)
|
||||
{
|
||||
points[i] = points[i - 1];
|
||||
}
|
||||
setNumPoints(numPoints + 1);
|
||||
}
|
||||
|
||||
void AbstractGraph::deletePointAtIndex(int index)
|
||||
{
|
||||
assert(index >= 0 && index < numPoints && "Illegal index");
|
||||
setNumPoints(numPoints - 1);
|
||||
for (int i = index; i < numPoints; i++)
|
||||
{
|
||||
points[i] = points[i + 1];
|
||||
}
|
||||
}
|
||||
|
||||
int AbstractGraph::findX(int x)
|
||||
{
|
||||
// No points, or x larger than all existing x coordinates
|
||||
if (numPoints == 0 || x > points[numPoints - 1].x)
|
||||
{
|
||||
return numPoints;
|
||||
}
|
||||
|
||||
// Setup search limits
|
||||
int loIndex = 0;
|
||||
int hiIndex = numPoints - 1;
|
||||
while (loIndex <= hiIndex)
|
||||
{
|
||||
int midIndex = (loIndex + hiIndex) / 2;
|
||||
int midX = points[midIndex].x;
|
||||
if (x < midX)
|
||||
{
|
||||
// Search lower half
|
||||
hiIndex = midIndex - 1;
|
||||
}
|
||||
else if (x > midX)
|
||||
{
|
||||
// Search higher half
|
||||
loIndex = midIndex + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Found
|
||||
return midIndex;
|
||||
}
|
||||
}
|
||||
// Return first index over wanted x coordinate
|
||||
return loIndex;
|
||||
}
|
||||
|
||||
void AbstractGraph::assignRange(int newLeft, int newRight, int newTop, int newBottom)
|
||||
{
|
||||
left = newLeft;
|
||||
right = newRight;
|
||||
top = newTop;
|
||||
bottom = newBottom;
|
||||
|
||||
graphWidth = CWRUtil::toQ5(newRight - newLeft);
|
||||
graphHeight = CWRUtil::toQ5(newBottom - newTop);
|
||||
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->assignRange(newLeft, newRight, newTop, newBottom);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::assignWidth(int16_t width)
|
||||
{
|
||||
CanvasWidget::setWidth(width);
|
||||
widgetWidth = CWRUtil::toQ5(getWidth());
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->assignWidth(width);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractGraph::assignHeight(int16_t height)
|
||||
{
|
||||
CanvasWidget::setHeight(height);
|
||||
widgetHeight = CWRUtil::toQ5(getHeight());
|
||||
if (linkedGraph)
|
||||
{
|
||||
linkedGraph->assignHeight(height);
|
||||
}
|
||||
}
|
96
example3/freeRTOS/TouchGFX/gui/src/graph_widget/Graph.cpp
Normal file
96
example3/freeRTOS/TouchGFX/gui/src/graph_widget/Graph.cpp
Normal file
@ -0,0 +1,96 @@
|
||||
#include "Graph.hpp"
|
||||
#include <touchgfx/Color.hpp>
|
||||
#include <touchgfx/EasingEquations.hpp>
|
||||
#include <math.h>
|
||||
|
||||
Graph::Graph() :
|
||||
myAlpha(255)
|
||||
{
|
||||
}
|
||||
|
||||
void Graph::setup(int newWidth, int newHeight, colortype lineColor, colortype backgroundColor)
|
||||
{
|
||||
setWidth(newWidth);
|
||||
setHeight(newHeight);
|
||||
|
||||
graphLinePainter.setColor(lineColor);
|
||||
graphAreaPainter.setColor(lineColor, getHeight());
|
||||
graphDotsPainter.setColor(lineColor);
|
||||
graphDotsBackgroundPainter.setColor(backgroundColor);
|
||||
|
||||
graphLine.setLinkedGraph(graphArea);
|
||||
graphLine.setLinkedGraph(graphDots);
|
||||
graphLine.setLinkedGraph(graphDotsBackground);
|
||||
|
||||
graphLine.setPosition(0, 0, getWidth(), getHeight());
|
||||
graphLine.setPainter(graphLinePainter);
|
||||
graphLine.setBuffer(graphBuffer, NUMBER_OF_POINTS);
|
||||
graphLine.setLineWidth(1);
|
||||
graphLine.setRange(0, 0, 0, 0);
|
||||
|
||||
graphArea.setPainter(graphAreaPainter);
|
||||
graphArea.setLineWidth(0);
|
||||
|
||||
graphDots.setPainter(graphDotsPainter);
|
||||
graphDots.setLineWidth(7);
|
||||
graphDots.setDotShape(0, 90);
|
||||
|
||||
graphDotsBackground.setPainter(graphDotsBackgroundPainter);
|
||||
graphDotsBackground.setLineWidth(9);
|
||||
graphDots.setDotShape(0, 30);
|
||||
|
||||
add(graphArea);
|
||||
add(graphLine);
|
||||
add(graphDotsBackground);
|
||||
add(graphDots);
|
||||
}
|
||||
|
||||
void Graph::setRange(int left, int right, int top, int bottom)
|
||||
{
|
||||
graphLine.setRange(left, right, top, bottom);
|
||||
}
|
||||
|
||||
void Graph::setLineVisible(bool lineVisible)
|
||||
{
|
||||
graphLine.setVisible(lineVisible);
|
||||
}
|
||||
|
||||
void Graph::setDotsVisible(bool dotsVisible)
|
||||
{
|
||||
graphDots.setVisible(dotsVisible);
|
||||
}
|
||||
|
||||
void Graph::setDotsBackgroundVisible(bool dotsBackgroundVisible)
|
||||
{
|
||||
graphDotsBackground.setVisible(dotsBackgroundVisible);
|
||||
}
|
||||
|
||||
void Graph::setAreaVisible(bool areaVisible)
|
||||
{
|
||||
graphArea.setVisible(areaVisible);
|
||||
}
|
||||
|
||||
void Graph::setDotShape(int startAngle, int angleStep, int lineWidth)
|
||||
{
|
||||
graphDots.setDotShape(startAngle, angleStep);
|
||||
graphDots.setLineWidth(lineWidth);
|
||||
graphDots.invalidate();
|
||||
}
|
||||
|
||||
void Graph::setDotBackgroundShape(int startAngle, int angleStep, int lineWidth)
|
||||
{
|
||||
graphDotsBackground.setDotShape(startAngle, angleStep);
|
||||
graphDotsBackground.setLineWidth(lineWidth);
|
||||
graphDots.invalidate();
|
||||
}
|
||||
|
||||
void Graph::setLineWidth(int width)
|
||||
{
|
||||
graphLine.setLineWidth(width);
|
||||
}
|
||||
|
||||
void Graph::set_Draw_Range(int left, int right, int top, int button)
|
||||
{
|
||||
graphLine.setRange(left, right, top, button);
|
||||
}
|
||||
|
@ -0,0 +1,65 @@
|
||||
#include "GraphBelow.hpp"
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
GraphBelow::~GraphBelow()
|
||||
{
|
||||
}
|
||||
|
||||
bool GraphBelow::drawCanvasWidget(const Rect& invalidatedArea) const
|
||||
{
|
||||
if (numPoints < 2)
|
||||
{
|
||||
// A graph line with a single (or not even a single) point is invisible
|
||||
return true;
|
||||
}
|
||||
|
||||
int firstIndex = 0;
|
||||
int lastIndex = numPoints - 1;
|
||||
|
||||
// We can skip the line from index if the left part of the line at index+1 is to the left of the invalidated area
|
||||
while (firstIndex < lastIndex &&
|
||||
invalidatedArea.x > (widgetXindex(firstIndex + 1) + lineWidth / 2).to<int>())
|
||||
{
|
||||
firstIndex++;
|
||||
}
|
||||
// We can skip the line from index if the left part of the line at index-1 is to the right of the invalidated area
|
||||
while (lastIndex > firstIndex &&
|
||||
invalidatedArea.right() < (widgetXindex(lastIndex - 1) - lineWidth / 2).to<int>())
|
||||
{
|
||||
lastIndex--;
|
||||
}
|
||||
if (firstIndex < lastIndex)
|
||||
{
|
||||
Canvas canvas(this, invalidatedArea);
|
||||
canvas.moveTo(widgetXindex(firstIndex), widgetYindex(firstIndex));
|
||||
for (int index = firstIndex + 1; index <= lastIndex; index++)
|
||||
{
|
||||
canvas.lineTo(widgetXindex(index), widgetYindex(index));
|
||||
}
|
||||
canvas.lineTo(widgetXindex(lastIndex), widgetY(0));
|
||||
canvas.lineTo(widgetXindex(firstIndex), widgetY(0));
|
||||
// canvas.lineTo(widgetXindex(lastIndex), widgetY(bottom));
|
||||
// canvas.lineTo(widgetXindex(firstIndex), widgetY(bottom));
|
||||
return canvas.render();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Rect GraphBelow::getMinimalRectContainingIndices(int firstIndex, int lastIndex) const
|
||||
{
|
||||
int minX = widgetXindex(firstIndex).to<int>();
|
||||
int maxX = widgetXindex(lastIndex).to<int>();
|
||||
int zeroY = widgetY(0).to<int>();
|
||||
int firstY = widgetYindex(firstIndex).to<int>();
|
||||
int minY = MIN(zeroY, firstY);
|
||||
int maxY = MAX(zeroY, firstY);
|
||||
for (int index = firstIndex + 1; index <= lastIndex; index++)
|
||||
{
|
||||
int y = widgetYindex(index).to<int>();
|
||||
minY = MIN(minY, y);
|
||||
maxY = MAX(maxY, y);
|
||||
}
|
||||
|
||||
return Rect(minX, minY, maxX - minX + 1, maxY - minY + 1);
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
#include "GraphDots.hpp"
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
GraphDots::GraphDots() :
|
||||
AbstractGraph(), startAngle(0), angleStep(30)
|
||||
{
|
||||
}
|
||||
|
||||
void GraphDots::setDotShape(int dotStartAngle, int dotAngleStep)
|
||||
{
|
||||
startAngle = dotStartAngle;
|
||||
angleStep = dotAngleStep;
|
||||
}
|
||||
|
||||
bool GraphDots::drawCanvasWidget(const Rect& invalidatedArea) const
|
||||
{
|
||||
if (numPoints < 2)
|
||||
{
|
||||
// A graph line with a single (or not even a single) point is invisible
|
||||
return true;
|
||||
}
|
||||
|
||||
int firstIndex = 0;
|
||||
int lastIndex = numPoints - 1;
|
||||
|
||||
// We can skip the line from index if the left part of the line at index+1 is to the left of the invalidated area
|
||||
while (firstIndex < lastIndex &&
|
||||
invalidatedArea.x > (widgetXindex(firstIndex + 1) + lineWidth / 2).to<int>())
|
||||
{
|
||||
firstIndex++;
|
||||
}
|
||||
// We can skip the line from index if the left part of the line at index-1 is to the right of the invalidated area
|
||||
while (lastIndex > firstIndex &&
|
||||
invalidatedArea.right() < (widgetXindex(lastIndex - 1) - lineWidth / 2).to<int>())
|
||||
{
|
||||
lastIndex--;
|
||||
}
|
||||
if (firstIndex < lastIndex)
|
||||
{
|
||||
Canvas canvas(this, invalidatedArea);
|
||||
for (int index = firstIndex; index <= lastIndex; index++)
|
||||
{
|
||||
CWRUtil::Q5 circleCenterX, circleCenterY;
|
||||
circleCenterX = widgetXindex(index);
|
||||
circleCenterY = widgetYindex(index);
|
||||
canvas.moveTo(circleCenterX + ((lineWidth * CWRUtil::sine(startAngle)) / 2), circleCenterY - ((lineWidth * CWRUtil::cosine(startAngle)) / 2));
|
||||
for (int angle = startAngle + angleStep; (angle % 360) != startAngle; angle += angleStep)
|
||||
{
|
||||
canvas.lineTo(circleCenterX + ((lineWidth * CWRUtil::sine(angle)) / 2), circleCenterY - ((lineWidth * CWRUtil::cosine(angle)) / 2));
|
||||
}
|
||||
}
|
||||
return canvas.render();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Rect GraphDots::getMinimalRectContainingIndices(int firstIndex, int lastIndex) const
|
||||
{
|
||||
int minX = (widgetXindex(firstIndex) - lineWidth / 2).to<int>();
|
||||
int maxX = (widgetXindex(lastIndex) + lineWidth / 2).to<int>();
|
||||
int minY = (widgetYindex(firstIndex) - lineWidth / 2).to<int>();
|
||||
int maxY = (widgetYindex(firstIndex) + lineWidth / 2).to<int>();
|
||||
for (int index = firstIndex + 1; index <= lastIndex; index++)
|
||||
{
|
||||
minY = MIN(minY, (widgetYindex(index) - lineWidth / 2).to<int>());
|
||||
maxY = MAX(maxY, (widgetYindex(index) + lineWidth / 2).to<int>());
|
||||
}
|
||||
|
||||
Rect minimalRect = Rect(minX, minY, maxX - minX + 1, maxY - minY + 1);
|
||||
|
||||
return minimalRect;
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
#include "GraphLine.hpp"
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
bool GraphLine::drawCanvasWidget(const Rect& invalidatedArea) const
|
||||
{
|
||||
if (numPoints < 2)
|
||||
{
|
||||
// A graph line with a single (or not even a single) point is invisible
|
||||
return true;
|
||||
}
|
||||
|
||||
int firstIndex = 0;
|
||||
int lastIndex = numPoints - 1;
|
||||
|
||||
// We can skip the line from index if the left part of the line at index+1 is to the left of the invalidated area
|
||||
while (firstIndex < lastIndex &&
|
||||
invalidatedArea.x > (widgetXindex(firstIndex + 1) + lineWidth / 2).to<int>())
|
||||
{
|
||||
firstIndex++;
|
||||
}
|
||||
// We can skip the line from index if the left part of the line at index-1 is to the right of the invalidated area
|
||||
while (lastIndex > firstIndex &&
|
||||
invalidatedArea.right() < (widgetXindex(lastIndex - 1) - lineWidth / 2).to<int>())
|
||||
{
|
||||
lastIndex--;
|
||||
}
|
||||
if (firstIndex < lastIndex)
|
||||
{
|
||||
Canvas canvas(this, invalidatedArea);
|
||||
canvas.moveTo(xAboveOutgoing(firstIndex), yAboveOutgoing(firstIndex));
|
||||
canvas.lineTo(xAboveIncoming(firstIndex + 1), yAboveIncoming(firstIndex + 1));
|
||||
for (int index = firstIndex + 1; index < lastIndex; index++)
|
||||
{
|
||||
canvas.lineTo(xAboveOutgoing(index), yAboveOutgoing(index));
|
||||
canvas.lineTo(xAboveIncoming(index + 1), yAboveIncoming(index + 1));
|
||||
}
|
||||
for (int index = lastIndex - 1; index >= firstIndex; index--)
|
||||
{
|
||||
canvas.lineTo(xBelowIncoming(index + 1), yBelowIncoming(index + 1));
|
||||
canvas.lineTo(xBelowOutgoing(index), yBelowOutgoing(index));
|
||||
}
|
||||
return canvas.render();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Rect GraphLine::getMinimalRectContainingIndices(int firstIndex, int lastIndex) const
|
||||
{
|
||||
int minX = (widgetXindex(firstIndex) - lineWidth / 2).to<int>();
|
||||
int maxX = (widgetXindex(lastIndex) + lineWidth / 2).to<int>();
|
||||
int minY = (widgetYindex(firstIndex) - lineWidth / 2).to<int>();
|
||||
int maxY = (widgetYindex(firstIndex) + lineWidth / 2).to<int>();
|
||||
for (int index = firstIndex + 1; index <= lastIndex; index++)
|
||||
{
|
||||
minY = MIN(minY, (widgetYindex(index) - lineWidth / 2).to<int>());
|
||||
maxY = MAX(maxY, (widgetYindex(index) + lineWidth / 2).to<int>());
|
||||
}
|
||||
|
||||
Rect minimalRect = Rect(minX, minY, maxX - minX + 1, maxY - minY + 1);
|
||||
|
||||
return minimalRect;
|
||||
}
|
@ -0,0 +1,143 @@
|
||||
#include "PainterVerticalAlpha.hpp"
|
||||
#include <touchgfx/Color.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
PainterVerticalAlpha::PainterVerticalAlpha(colortype color /*= 0*/, int alpha0atY /*= 100*/)
|
||||
{
|
||||
setColor(color, alpha0atY);
|
||||
}
|
||||
|
||||
void PainterVerticalAlpha::setColor(colortype color, int alphaZeroAt)
|
||||
{
|
||||
#if !defined(USE_BPP) || USE_BPP==16 || USE_BPP==24
|
||||
painterRed = Color::getRedColor(color);
|
||||
painterGreen = Color::getGreenColor(color);
|
||||
painterBlue = Color::getBlueColor(color);
|
||||
#elif USE_BPP==4 || USE_BPP==2
|
||||
painterGray = (uint8_t)color;
|
||||
#else
|
||||
#error Unknown USE_BPP
|
||||
#endif
|
||||
alpha0atY = alphaZeroAt;
|
||||
}
|
||||
|
||||
bool PainterVerticalAlpha::renderInit()
|
||||
{
|
||||
int gradientAlpha = 255 - (currentY * 255 / alpha0atY);
|
||||
if (gradientAlpha < 0)
|
||||
{
|
||||
gradientAlpha = 0;
|
||||
}
|
||||
if (gradientAlpha > 255)
|
||||
{
|
||||
gradientAlpha = 255;
|
||||
}
|
||||
painterAlpha = gradientAlpha;
|
||||
return true;
|
||||
}
|
||||
|
||||
void PainterVerticalAlpha::render(uint8_t* ptr, int x, int xAdjust, int y, unsigned count, const uint8_t* covers)
|
||||
{
|
||||
currentY = y + areaOffsetY;
|
||||
renderInit(); // re-use code to set painterAlpha
|
||||
#if !defined(USE_BPP) || USE_BPP==16 || USE_BPP==24
|
||||
#if !defined(USE_BPP) || USE_BPP==16
|
||||
uint16_t* p = reinterpret_cast<uint16_t*>(ptr) + (x + xAdjust);
|
||||
currentX = x + areaOffsetX; // CurrentX is not used in 24bpp
|
||||
#else
|
||||
uint8_t* p = ptr + ((x + xAdjust) * 3);
|
||||
#endif
|
||||
uint8_t totalAlpha = (widgetAlpha * painterAlpha) / 255u;
|
||||
do
|
||||
{
|
||||
uint32_t combinedAlpha = (*covers) * totalAlpha;
|
||||
covers++;
|
||||
|
||||
#if !defined(USE_BPP) || USE_BPP==16
|
||||
uint8_t p_red = (*p & RMASK) >> 8;
|
||||
uint8_t p_green = (*p & GMASK) >> 3;
|
||||
uint8_t p_blue = (*p & BMASK) << 3;
|
||||
|
||||
uint8_t pixelRed = static_cast<uint8_t>((((painterRed - p_red) * combinedAlpha) >> 16) + p_red);
|
||||
uint8_t pixelGreen = static_cast<uint8_t>((((painterGreen - p_green) * combinedAlpha) >> 16) + p_green);
|
||||
uint8_t pixelBlue = static_cast<uint8_t>((((painterBlue - p_blue) * combinedAlpha) >> 16) + p_blue);
|
||||
|
||||
#define fastrand(g_seed) ((214013*(uint32_t)(g_seed)+2531011)>>16)
|
||||
uint8_t rand = fastrand((currentX + *p) * (currentY + *p));
|
||||
if (pixelRed < 0xF8)
|
||||
{
|
||||
pixelRed = pixelRed + ((rand >> 5)); // Add bit 7-5 of rand to red to get rounding
|
||||
}
|
||||
if (pixelGreen < 0xFC)
|
||||
{
|
||||
pixelGreen = pixelGreen + ((rand >> 3) & 0x3); // Add bit 4-3 of rand to green to get rounding
|
||||
}
|
||||
if (pixelBlue < 0xF8)
|
||||
{
|
||||
pixelBlue = pixelBlue + ((rand) & 0x7); // Add bit 2-0 of rand to blue to get rounding
|
||||
}
|
||||
*p++ = ((pixelRed << 8) & RMASK) | ((pixelGreen << 3) & GMASK) | ((pixelBlue >> 3) & BMASK);
|
||||
currentX++;
|
||||
#else
|
||||
uint8_t pixelBlue = static_cast<uint8_t>((((painterBlue - *p) * combinedAlpha) >> 16) + *p);
|
||||
*p++ = pixelBlue;
|
||||
|
||||
uint8_t pixelGreen = static_cast<uint8_t>((((painterGreen - *p) * combinedAlpha) >> 16) + *p);
|
||||
*p++ = pixelGreen;
|
||||
|
||||
uint8_t pixelRed = static_cast<uint8_t>((((painterRed - *p) * combinedAlpha) >> 16) + *p);
|
||||
*p++ = pixelRed;
|
||||
#endif
|
||||
}
|
||||
while (--count != 0);
|
||||
#elif USE_BPP==4
|
||||
x += xAdjust;
|
||||
uint8_t totalAlpha = (widgetAlpha * painterAlpha) / 255u;
|
||||
do
|
||||
{
|
||||
uint16_t combinedAlpha = (*covers) * totalAlpha;
|
||||
covers++;
|
||||
|
||||
if (combinedAlpha != 0)
|
||||
{
|
||||
uint8_t p_gray = LCD4getPixel(ptr, x);
|
||||
LCD4setPixel(ptr, x, static_cast<uint8_t>((((painterGray - p_gray) * combinedAlpha) >> 16) + p_gray));
|
||||
}
|
||||
x++;
|
||||
}
|
||||
while (--count != 0);
|
||||
#elif USE_BPP==2
|
||||
x += xAdjust;
|
||||
uint8_t totalAlpha = (widgetAlpha * painterAlpha) / 255u;
|
||||
do
|
||||
{
|
||||
uint8_t combinedAlpha = (*covers) * totalAlpha;
|
||||
covers++;
|
||||
|
||||
if (combinedAlpha != 0)
|
||||
{
|
||||
uint8_t p_gray = LCD2getPixel(ptr, x);
|
||||
LCD2setPixel(ptr, x, static_cast<uint8_t>((((painterGray - p_gray) * combinedAlpha) >> 16) + p_gray));
|
||||
}
|
||||
x++;
|
||||
}
|
||||
while (--count != 0);
|
||||
#else
|
||||
#error Unknown USE_BPP
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !defined(USE_BPP) || USE_BPP==16 || USE_BPP==24
|
||||
bool PainterVerticalAlpha::renderNext(uint8_t& pixelRed, uint8_t& pixelGreen, uint8_t& pixelBlue, uint8_t& pixelAlpha)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#elif USE_BPP==4 || USE_BPP==2
|
||||
bool PainterVerticalAlpha::renderNext(uint8_t& pixelGray, uint8_t& pixelAlpha)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
#error Unknown USE_BPP
|
||||
#endif
|
@ -2,9 +2,11 @@
|
||||
#include <gui/model/ModelListener.hpp>
|
||||
#include "cmsis_os.h"
|
||||
#include "main.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#define MAX_P_SENSORBOARD_LOST_TIM 300
|
||||
extern osMessageQId gui_msg_qHandle;
|
||||
|
||||
extern osMessageQId sensor_msg_qHandle;
|
||||
Model::Model() : modelListener(0)
|
||||
{
|
||||
|
||||
@ -12,7 +14,10 @@ Model::Model() : modelListener(0)
|
||||
|
||||
void Model::tick()
|
||||
{
|
||||
static ts_sensor_data *p_sensor_data=NULL;
|
||||
static uint16_t s_p_sensorboard_lost_tcnt = 0;
|
||||
osEvent retkey;
|
||||
retkey.value.v = 0;
|
||||
retkey = osMessageGet(gui_msg_qHandle,1);
|
||||
if(retkey.status == osEventMessage)
|
||||
{
|
||||
@ -21,6 +26,27 @@ void Model::tick()
|
||||
modelListener->key_event();
|
||||
}
|
||||
}
|
||||
osEvent retsensor;
|
||||
retsensor.value.v = 0;
|
||||
retsensor = osMessageGet(sensor_msg_qHandle,1);
|
||||
if(retsensor.status == osEventMessage)
|
||||
{
|
||||
if(retsensor.value.v!=0)
|
||||
{
|
||||
p_sensor_data = (ts_sensor_data *)(retsensor.value.v|0x20000000);
|
||||
modelListener->update_sensor_event(p_sensor_data);
|
||||
s_p_sensorboard_lost_tcnt = 0;
|
||||
}
|
||||
}
|
||||
//check if the sensor board disconnected
|
||||
if(s_p_sensorboard_lost_tcnt++>MAX_P_SENSORBOARD_LOST_TIM)
|
||||
{
|
||||
p_sensor_data->humidity[0]=0;
|
||||
p_sensor_data->humidity[1]=0;
|
||||
p_sensor_data->temperature[0]=0;
|
||||
p_sensor_data->temperature[1]=0;
|
||||
modelListener->update_sensor_event(p_sensor_data);
|
||||
}
|
||||
}
|
||||
void Model::set_light_onoff(uint8_t data)
|
||||
{
|
||||
|
@ -15,3 +15,8 @@ void Screen1Presenter::deactivate()
|
||||
{
|
||||
|
||||
}
|
||||
void Screen1Presenter::update_sensor_event(ts_sensor_data *p_sensor_data)
|
||||
{
|
||||
view.update_sensor_value(p_sensor_data);
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,14 @@
|
||||
#include <touchgfx/widgets/TextureMapper.hpp>
|
||||
#include <touchgfx/widgets/AnimationTextureMapper.hpp>
|
||||
#include <touchgfx/EasingEquations.hpp>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
//static const uint16_t CANVAS_BUFFER_SIZE = 4800;
|
||||
//uint8_t canvasBuffer[CANVAS_BUFFER_SIZE] __attribute__ ((section ("EXRAM")));
|
||||
//Graph graphT __attribute__ ((section ("EXRAM")));
|
||||
//Graph graph_Base __attribute__ ((section ("EXRAM")));
|
||||
//Graph graph_avg __attribute__ ((section ("EXRAM")));
|
||||
|
||||
Screen1View::Screen1View():
|
||||
tickCounter(0),
|
||||
@ -18,11 +26,14 @@ Screen1View::Screen1View():
|
||||
|
||||
void Screen1View::setupScreen()
|
||||
{
|
||||
wait = 0;
|
||||
tickCounter = 0;
|
||||
Screen1ViewBase::setupScreen();
|
||||
// Set hands to initial positions
|
||||
analogClock1.setTime24Hour(hours, minutes, seconds);
|
||||
wait = 0;
|
||||
tickCounter = 0;
|
||||
|
||||
// CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE);
|
||||
|
||||
}
|
||||
|
||||
void Screen1View::tearDownScreen()
|
||||
@ -34,7 +45,7 @@ void Screen1View::handleTickEvent()
|
||||
{
|
||||
wait++;
|
||||
++tickCounter;
|
||||
if (tickCounter % 22 == 0)
|
||||
if (tickCounter % 52 == 0)
|
||||
{
|
||||
if (++seconds >= 60)
|
||||
{
|
||||
@ -48,20 +59,7 @@ void Screen1View::handleTickEvent()
|
||||
}
|
||||
}
|
||||
}
|
||||
// Update humidity
|
||||
humidityEntropi = ((seconds * seconds + seconds * 5 + hours) % 180) / 360.0f * 2 * PI - PI / 2;
|
||||
humidity.setupAnimation(AnimationTextureMapper::Z_ROTATION, humidityEntropi, 10, 0, EasingEquations::cubicEaseInOut);
|
||||
humidity.startAnimation();
|
||||
|
||||
// Update pressure
|
||||
temperatureEntropi = (((seconds + minutes + hours) * (seconds + minutes + hours)) % 180) / 360.0f * 2 * PI - PI / 2;
|
||||
temperature.setupAnimation(AnimationTextureMapper::Z_ROTATION, temperatureEntropi, 10, 0, EasingEquations::cubicEaseInOut);
|
||||
temperature.startAnimation();
|
||||
|
||||
Unicode::snprintf(TemvalueBuffer1, TEMVALUEBUFFER1_SIZE, "%d", 88);
|
||||
Unicode::snprintf(HumvalueBuffer1, HUMVALUEBUFFER1_SIZE, "%d", 88);
|
||||
Humvalue.invalidate();
|
||||
Temvalue.invalidate();
|
||||
// Update the clock
|
||||
analogClock1.setTime24Hour(hours, minutes, seconds);
|
||||
}
|
||||
@ -73,5 +71,32 @@ void Screen1View::handleTickEvent()
|
||||
|
||||
}
|
||||
}
|
||||
void Screen1View::update_sensor_value(ts_sensor_data *p_sensor_data)
|
||||
{
|
||||
|
||||
Unicode::snprintf(TemvalueBuffer1, TEMVALUEBUFFER1_SIZE, "%d", p_sensor_data->temperature[1]);
|
||||
Unicode::snprintf(TemvalueBuffer2, TEMVALUEBUFFER2_SIZE, "%d", p_sensor_data->temperature[0]);
|
||||
Temvalue.invalidate();
|
||||
Unicode::snprintf(HumvalueBuffer1, HUMVALUEBUFFER1_SIZE, "%d", p_sensor_data->humidity[1]);
|
||||
Unicode::snprintf(HumvalueBuffer2, HUMVALUEBUFFER2_SIZE, "%d", p_sensor_data->humidity[0]);
|
||||
Humvalue.invalidate();
|
||||
|
||||
// Update humidity
|
||||
humidityEntropi = (uint8_t(1.8*(p_sensor_data->humidity[1])) % 180) / 360.0f * 2 * PI - PI / 2;
|
||||
humidity.setupAnimation(AnimationTextureMapper::Z_ROTATION, humidityEntropi, 10, 0, EasingEquations::cubicEaseInOut);
|
||||
humidity.startAnimation();
|
||||
|
||||
// Update pressure
|
||||
temperatureEntropi = (uint8_t(3*(p_sensor_data->temperature[1])) % 180) / 360.0f * 2 * PI - PI / 2;
|
||||
temperature.setupAnimation(AnimationTextureMapper::Z_ROTATION, temperatureEntropi, 10, 0, EasingEquations::cubicEaseInOut);
|
||||
temperature.startAnimation();
|
||||
|
||||
}
|
||||
void Screen1View::set_sensor_value(ts_sensor_data *p_sensor_data)
|
||||
{
|
||||
v_sensor_data.temperature[0] = p_sensor_data->temperature[0];
|
||||
v_sensor_data.temperature[1] = p_sensor_data->temperature[1];
|
||||
v_sensor_data.humidity[0] = p_sensor_data->humidity[0];
|
||||
v_sensor_data.humidity[1] = p_sensor_data->humidity[1];
|
||||
}
|
||||
|
||||
|
@ -1026,7 +1026,7 @@
|
||||
"Version": "1.0.0",
|
||||
"Description": "STM32CubeMX Generated Simulator Application Template",
|
||||
"AvailableColorDepths": [
|
||||
16
|
||||
16
|
||||
],
|
||||
"AvailableSections": [
|
||||
"ExtFlashSection",
|
||||
@ -1048,4 +1048,4 @@
|
||||
"DisplayOrientation": "Landscape"
|
||||
},
|
||||
"Version": "4.12.3"
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,16 @@
|
||||
#MicroXplorer Configuration settings - do not modify
|
||||
DMA2D.ColorMode=DMA2D_OUTPUT_RGB565
|
||||
DMA2D.ColorMode=DMA2D_OUTPUT_ARGB8888
|
||||
DMA2D.IPParameters=Mode,ColorMode
|
||||
DMA2D.Mode=DMA2D_R2M
|
||||
DMA2D.Mode=DMA2D_M2M
|
||||
FMC.CASLatency1=FMC_SDRAM_CAS_LATENCY_3
|
||||
FMC.ExitSelfRefreshDelay1=7
|
||||
FMC.IPParameters=CASLatency1,SDClockPeriod1,SDClockPeriod2,ReadPipeDelay1,ReadPipeDelay2,LoadToActiveDelay1,ExitSelfRefreshDelay1,SelfRefreshTime1,RowCycleDelay1,RowCycleDelay2,WriteRecoveryTime1,RPDelay1,RPDelay2,RCDDelay1
|
||||
FMC.IPParameters=CASLatency1,SDClockPeriod1,SDClockPeriod2,ReadPipeDelay1,ReadPipeDelay2,LoadToActiveDelay1,ExitSelfRefreshDelay1,SelfRefreshTime1,RowCycleDelay1,RowCycleDelay2,WriteRecoveryTime1,RPDelay1,RPDelay2,RCDDelay1,ReadBurst1,ReadBurst2
|
||||
FMC.LoadToActiveDelay1=2
|
||||
FMC.RCDDelay1=2
|
||||
FMC.RPDelay1=2
|
||||
FMC.RPDelay2=2
|
||||
FMC.ReadBurst1=FMC_SDRAM_RBURST_ENABLE
|
||||
FMC.ReadBurst2=FMC_SDRAM_RBURST_ENABLE
|
||||
FMC.ReadPipeDelay1=FMC_SDRAM_RPIPE_DELAY_1
|
||||
FMC.ReadPipeDelay2=FMC_SDRAM_RPIPE_DELAY_1
|
||||
FMC.RowCycleDelay1=7
|
||||
@ -19,8 +21,8 @@ FMC.SelfRefreshTime1=4
|
||||
FMC.WriteRecoveryTime1=3
|
||||
FREERTOS.FootprintOK=true
|
||||
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,FootprintOK,configUSE_RECURSIVE_MUTEXES,configUSE_COUNTING_SEMAPHORES,configUSE_IDLE_HOOK,configUSE_MALLOC_FAILED_HOOK,configCHECK_FOR_STACK_OVERFLOW,Queues01
|
||||
FREERTOS.Queues01=gui_msg_q,16,uint8_t,0,Dynamic,NULL,NULL
|
||||
FREERTOS.Tasks01=mainTask,1,4096,StartmainTask,Default,NULL,Dynamic,NULL,NULL;keyTask,0,256,StartkeyTask,Default,NULL,Dynamic,NULL,NULL
|
||||
FREERTOS.Queues01=gui_msg_q,16,uint8_t,0,Dynamic,NULL,NULL;sensor_msg_q,20,uint32_t,0,Dynamic,NULL,NULL
|
||||
FREERTOS.Tasks01=mainTask,1,4096,StartmainTask,Default,NULL,Dynamic,NULL,NULL;keyTask,0,256,StartkeyTask,Default,NULL,Dynamic,NULL,NULL;sensorTask,0,512,StartsensorTask,Default,NULL,Dynamic,NULL,NULL
|
||||
FREERTOS.configCHECK_FOR_STACK_OVERFLOW=2
|
||||
FREERTOS.configTOTAL_HEAP_SIZE=32768
|
||||
FREERTOS.configUSE_COUNTING_SEMAPHORES=1
|
||||
@ -123,6 +125,7 @@ Mcu.IP0=CRC
|
||||
Mcu.IP1=DMA2D
|
||||
Mcu.IP10=TIM7
|
||||
Mcu.IP11=USART1
|
||||
Mcu.IP12=USART3
|
||||
Mcu.IP2=FMC
|
||||
Mcu.IP3=FREERTOS
|
||||
Mcu.IP4=GRAPHICS
|
||||
@ -131,7 +134,7 @@ Mcu.IP6=NVIC
|
||||
Mcu.IP7=RCC
|
||||
Mcu.IP8=SPI5
|
||||
Mcu.IP9=SYS
|
||||
Mcu.IPNb=12
|
||||
Mcu.IPNb=13
|
||||
Mcu.Name=STM32F429I(E-G)Tx
|
||||
Mcu.Package=LQFP176
|
||||
Mcu.Pin0=PC13
|
||||
@ -167,64 +170,66 @@ Mcu.Pin35=PE12
|
||||
Mcu.Pin36=PE13
|
||||
Mcu.Pin37=PE14
|
||||
Mcu.Pin38=PE15
|
||||
Mcu.Pin39=PH6
|
||||
Mcu.Pin39=PB10
|
||||
Mcu.Pin4=PF1
|
||||
Mcu.Pin40=PH7
|
||||
Mcu.Pin41=PH8
|
||||
Mcu.Pin42=PH10
|
||||
Mcu.Pin43=PH11
|
||||
Mcu.Pin44=PH12
|
||||
Mcu.Pin45=PD8
|
||||
Mcu.Pin46=PD9
|
||||
Mcu.Pin47=PD10
|
||||
Mcu.Pin48=PD12
|
||||
Mcu.Pin49=PD13
|
||||
Mcu.Pin40=PB11
|
||||
Mcu.Pin41=PH6
|
||||
Mcu.Pin42=PH7
|
||||
Mcu.Pin43=PH8
|
||||
Mcu.Pin44=PH10
|
||||
Mcu.Pin45=PH11
|
||||
Mcu.Pin46=PH12
|
||||
Mcu.Pin47=PD8
|
||||
Mcu.Pin48=PD9
|
||||
Mcu.Pin49=PD10
|
||||
Mcu.Pin5=PF2
|
||||
Mcu.Pin50=PD14
|
||||
Mcu.Pin51=PD15
|
||||
Mcu.Pin52=PG4
|
||||
Mcu.Pin53=PG5
|
||||
Mcu.Pin54=PG6
|
||||
Mcu.Pin55=PG7
|
||||
Mcu.Pin56=PG8
|
||||
Mcu.Pin57=PC7
|
||||
Mcu.Pin58=PA9
|
||||
Mcu.Pin59=PA10
|
||||
Mcu.Pin50=PD12
|
||||
Mcu.Pin51=PD13
|
||||
Mcu.Pin52=PD14
|
||||
Mcu.Pin53=PD15
|
||||
Mcu.Pin54=PG4
|
||||
Mcu.Pin55=PG5
|
||||
Mcu.Pin56=PG6
|
||||
Mcu.Pin57=PG7
|
||||
Mcu.Pin58=PG8
|
||||
Mcu.Pin59=PC7
|
||||
Mcu.Pin6=PF3
|
||||
Mcu.Pin60=PA11
|
||||
Mcu.Pin61=PA12
|
||||
Mcu.Pin62=PA13
|
||||
Mcu.Pin63=PH13
|
||||
Mcu.Pin64=PH15
|
||||
Mcu.Pin65=PI0
|
||||
Mcu.Pin66=PI2
|
||||
Mcu.Pin67=PA14
|
||||
Mcu.Pin68=PD0
|
||||
Mcu.Pin69=PD1
|
||||
Mcu.Pin60=PA9
|
||||
Mcu.Pin61=PA10
|
||||
Mcu.Pin62=PA11
|
||||
Mcu.Pin63=PA12
|
||||
Mcu.Pin64=PA13
|
||||
Mcu.Pin65=PH13
|
||||
Mcu.Pin66=PH15
|
||||
Mcu.Pin67=PI0
|
||||
Mcu.Pin68=PI2
|
||||
Mcu.Pin69=PA14
|
||||
Mcu.Pin7=PF4
|
||||
Mcu.Pin70=PD4
|
||||
Mcu.Pin71=PD6
|
||||
Mcu.Pin72=PD7
|
||||
Mcu.Pin73=PG9
|
||||
Mcu.Pin74=PG10
|
||||
Mcu.Pin75=PG11
|
||||
Mcu.Pin76=PG12
|
||||
Mcu.Pin77=PG15
|
||||
Mcu.Pin78=PB8
|
||||
Mcu.Pin79=PB9
|
||||
Mcu.Pin70=PD0
|
||||
Mcu.Pin71=PD1
|
||||
Mcu.Pin72=PD4
|
||||
Mcu.Pin73=PD6
|
||||
Mcu.Pin74=PD7
|
||||
Mcu.Pin75=PG9
|
||||
Mcu.Pin76=PG10
|
||||
Mcu.Pin77=PG11
|
||||
Mcu.Pin78=PG12
|
||||
Mcu.Pin79=PG15
|
||||
Mcu.Pin8=PF5
|
||||
Mcu.Pin80=PE0
|
||||
Mcu.Pin81=PE1
|
||||
Mcu.Pin82=PI4
|
||||
Mcu.Pin83=VP_CRC_VS_CRC
|
||||
Mcu.Pin84=VP_DMA2D_VS_DMA2D
|
||||
Mcu.Pin85=VP_FREERTOS_VS_CMSIS_V1
|
||||
Mcu.Pin86=VP_GRAPHICS_VS-Touch-GFX
|
||||
Mcu.Pin87=VP_GRAPHICS_VS-DisplayInterface-LTDC
|
||||
Mcu.Pin88=VP_SYS_VS_tim6
|
||||
Mcu.Pin89=VP_TIM7_VS_ClockSourceINT
|
||||
Mcu.Pin80=PB8
|
||||
Mcu.Pin81=PB9
|
||||
Mcu.Pin82=PE0
|
||||
Mcu.Pin83=PE1
|
||||
Mcu.Pin84=PI4
|
||||
Mcu.Pin85=VP_CRC_VS_CRC
|
||||
Mcu.Pin86=VP_DMA2D_VS_DMA2D
|
||||
Mcu.Pin87=VP_FREERTOS_VS_CMSIS_V1
|
||||
Mcu.Pin88=VP_GRAPHICS_VS-Touch-GFX
|
||||
Mcu.Pin89=VP_GRAPHICS_VS-DisplayInterface-LTDC
|
||||
Mcu.Pin9=PF7
|
||||
Mcu.PinsNb=90
|
||||
Mcu.Pin90=VP_SYS_VS_tim6
|
||||
Mcu.Pin91=VP_TIM7_VS_ClockSourceINT
|
||||
Mcu.PinsNb=92
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32F429IGTx
|
||||
@ -245,6 +250,7 @@ NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:false
|
||||
NVIC.TIM6_DAC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
||||
NVIC.TimeBase=TIM6_DAC_IRQn
|
||||
NVIC.TimeBaseIP=TIM6
|
||||
NVIC.USART3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
|
||||
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
PA0/WKUP.GPIOParameters=GPIO_PuPd,GPIO_Label
|
||||
PA0/WKUP.GPIO_Label=KEY1
|
||||
@ -274,6 +280,10 @@ PB0.Signal=LTDC_R3
|
||||
PB1.Locked=true
|
||||
PB1.Mode=RGB565
|
||||
PB1.Signal=LTDC_R6
|
||||
PB10.Mode=Asynchronous
|
||||
PB10.Signal=USART3_TX
|
||||
PB11.Mode=Asynchronous
|
||||
PB11.Signal=USART3_RX
|
||||
PB8.Locked=true
|
||||
PB8.Mode=RGB565
|
||||
PB8.Signal=LTDC_B6
|
||||
@ -470,7 +480,7 @@ ProjectManager.StackSize=0x400
|
||||
ProjectManager.TargetToolchain=MDK-ARM V5
|
||||
ProjectManager.ToolChainLocation=
|
||||
ProjectManager.UnderRoot=false
|
||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_CRC_Init-CRC-false-HAL-true,4-MX_SPI5_Init-SPI5-true-HAL-false,5-GRAPHICS_Init-GRAPHICS-false-HAL-false,6-MX_USART1_UART_Init-USART1-false-HAL-true
|
||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_CRC_Init-CRC-false-HAL-true,4-MX_SPI5_Init-SPI5-true-HAL-false,5-GRAPHICS_Init-GRAPHICS-false-HAL-false,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_USART3_UART_Init-USART3-false-HAL-true
|
||||
RCC.48MHZClocksFreq_Value=90000000
|
||||
RCC.AHBFreq_Value=180000000
|
||||
RCC.APB1CLKDivider=RCC_HCLK_DIV4
|
||||
@ -487,8 +497,8 @@ RCC.HCLKFreq_Value=180000000
|
||||
RCC.HSE_VALUE=25000000
|
||||
RCC.HSI_VALUE=16000000
|
||||
RCC.I2SClocksFreq_Value=96000000
|
||||
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSAIDivR,PLLSAIN,PLLSAIR,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VCOSAIOutputFreq_ValueR,VcooutputI2S,VcooutputI2SQ
|
||||
RCC.LCDTFTFreq_Value=9600000
|
||||
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LCDTFTFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSAIN,PLLSAIR,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VCOSAIOutputFreq_ValueR,VcooutputI2S,VcooutputI2SQ
|
||||
RCC.LCDTFTFreq_Value=25000000
|
||||
RCC.LSE_VALUE=32768
|
||||
RCC.LSI_VALUE=32000
|
||||
RCC.MCO2PinFreq_Value=180000000
|
||||
@ -496,22 +506,21 @@ RCC.PLLCLKFreq_Value=180000000
|
||||
RCC.PLLM=25
|
||||
RCC.PLLN=360
|
||||
RCC.PLLQCLKFreq_Value=90000000
|
||||
RCC.PLLSAIDivR=RCC_PLLSAIDIVR_4
|
||||
RCC.PLLSAIN=192
|
||||
RCC.PLLSAIN=250
|
||||
RCC.PLLSAIR=5
|
||||
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
|
||||
RCC.RTCFreq_Value=32000
|
||||
RCC.RTCHSEDivFreq_Value=12500000
|
||||
RCC.SAI_AClocksFreq_Value=48000000
|
||||
RCC.SAI_BClocksFreq_Value=48000000
|
||||
RCC.SAI_AClocksFreq_Value=62500000
|
||||
RCC.SAI_BClocksFreq_Value=62500000
|
||||
RCC.SYSCLKFreq_VALUE=180000000
|
||||
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||
RCC.VCOI2SOutputFreq_Value=192000000
|
||||
RCC.VCOInputFreq_Value=1000000
|
||||
RCC.VCOOutputFreq_Value=360000000
|
||||
RCC.VCOSAIOutputFreq_Value=192000000
|
||||
RCC.VCOSAIOutputFreq_ValueQ=48000000
|
||||
RCC.VCOSAIOutputFreq_ValueR=38400000
|
||||
RCC.VCOSAIOutputFreq_Value=250000000
|
||||
RCC.VCOSAIOutputFreq_ValueQ=62500000
|
||||
RCC.VCOSAIOutputFreq_ValueR=50000000
|
||||
RCC.VcooutputI2S=96000000
|
||||
RCC.VcooutputI2SQ=96000000
|
||||
SH.FMC_A0.0=FMC_A0,12b-sda1
|
||||
@ -595,6 +604,9 @@ SPI5.Mode=SPI_MODE_MASTER
|
||||
SPI5.VirtualType=VM_MASTER
|
||||
USART1.IPParameters=VirtualMode
|
||||
USART1.VirtualMode=VM_ASYNC
|
||||
USART3.BaudRate=9600
|
||||
USART3.IPParameters=VirtualMode,BaudRate
|
||||
USART3.VirtualMode=VM_ASYNC
|
||||
VP_CRC_VS_CRC.Mode=CRC_Activate
|
||||
VP_CRC_VS_CRC.Signal=CRC_VS_CRC
|
||||
VP_DMA2D_VS_DMA2D.Mode=DMA2D_Activate
|
||||
|
Loading…
x
Reference in New Issue
Block a user