finished Task

This commit is contained in:
Schrom01 2022-09-30 07:48:14 +02:00
commit 95886b12ec
56 changed files with 10325 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,245 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Extensions>
<cExt>*.c</cExt>
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc; *.md</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp; *.cc; *.cxx</CppX>
<nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
<dwLowDateTime>0</dwLowDateTime>
<dwHighDateTime>0</dwHighDateTime>
</DaveTm>
<Target>
<TargetName>Target 1</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
<CLKADS>12000000</CLKADS>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\Listings\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>1</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>6</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMRTXEVENTFLAGS</Key>
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGTARM</Key>
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMDBGFLAGS</Key>
<Name></Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>ST-LINKIII-KEIL_SWO</Key>
<Name>-U-O206 -O206 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_2048.FLM -FS08000000 -FL0200000 -FP0($$Device:CT_Board_HS14_M0$Flash\STM32F4xx_2048.FLM)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGUARM</Key>
<Name>(105=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>UL2CM3</Key>
<Name>UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F4xx_2048 -FL0200000 -FS08000000 -FP0($$Device:CT_Board_HS14_M0$Flash\STM32F4xx_2048.FLM)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>1</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>1</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></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>
</TargetOption>
</Target>
<Group>
<GroupName>Source Group 1</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\app\utils_ctboard.c</PathWithFileName>
<FilenameWithoutPath>utils_ctboard.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\app\task.c</PathWithFileName>
<FilenameWithoutPath>task.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>::Device</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>1</RteFlg>
</Group>
<Group>
<GroupName>::HAL</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>1</RteFlg>
</Group>
</ProjectOpt>

View File

@ -0,0 +1,503 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
<SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
<Target>
<TargetName>Target 1</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>6180000::V6.18::ARMCLANG</pCCUsed>
<uAC6>1</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>CT_Board_HS14_M0</Device>
<Vendor>STMicroelectronics</Vendor>
<PackID>InES.CTBoard14_DFP.4.0.2</PackID>
<PackURL>https://ennis.zhaw.ch/pack/</PackURL>
<Cpu>IRAM(0x20000000,0x30000) IRAM2(0x10000000,0x10000) IROM(0x08000000,0x200000) CPUTYPE("Cortex-M0") CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile>
<FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_2048 -FS08000000 -FL0200000 -FP0($$Device:CT_Board_HS14_M0$Flash\STM32F4xx_2048.FLM))</FlashDriverDll>
<DeviceId>0</DeviceId>
<RegisterFile></RegisterFile>
<MemoryEnv></MemoryEnv>
<Cmp></Cmp>
<Asm></Asm>
<Linker></Linker>
<OHString></OHString>
<InfinionOptionDll></InfinionOptionDll>
<SLE66CMisc></SLE66CMisc>
<SLE66AMisc></SLE66AMisc>
<SLE66LinkerMisc></SLE66LinkerMisc>
<SFDFile>$$Device:CT_Board_HS14_M0$SVD\STM32F429x.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
<BinPath></BinPath>
<IncludePath></IncludePath>
<LibPath></LibPath>
<RegisterFilePath></RegisterFilePath>
<DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
<ButtonStop>0</ButtonStop>
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
<OutputDirectory>.\build\</OutputDirectory>
<OutputName>CT-Lab1-Project</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>0</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
<ListingPath>.\Listings\</ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopU1X>0</nStopU1X>
<nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopA1X>0</nStopA1X>
<nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
<SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>1</IncludeInBuild>
<AlwaysBuild>0</AlwaysBuild>
<GenerateAssemblyFile>0</GenerateAssemblyFile>
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
<SimDllArguments> -REMAP-MPU </SimDllArguments>
<SimDlgDll>DARMCM1.DLL</SimDlgDll>
<SimDlgDllArguments>-pCM0</SimDlgDllArguments>
<TargetDllName>SARMCM3.DLL</TargetDllName>
<TargetDllArguments>-MPU </TargetDllArguments>
<TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
<TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
</DllOption>
<DebugOption>
<OPTHX>
<HexSelection>1</HexSelection>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
</DebugOption>
<Utilities>
<Flash1>
<UseTargetDll>1</UseTargetDll>
<UseExternalTool>0</UseExternalTool>
<RunIndependent>0</RunIndependent>
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
<Capability>1</Capability>
<DriverSelection>-1</DriverSelection>
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>BIN\UL2CM3.DLL</Flash2>
<Flash3></Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
<pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
<ArmAdsMisc>
<GenerateListings>0</GenerateListings>
<asHll>1</asHll>
<asAsm>1</asAsm>
<asMacX>1</asMacX>
<asSyms>1</asSyms>
<asFals>1</asFals>
<asDbgD>1</asDbgD>
<asForm>1</asForm>
<ldLst>0</ldLst>
<ldmm>1</ldmm>
<ldXref>1</ldXref>
<BigEnd>0</BigEnd>
<AdsALst>1</AdsALst>
<AdsACrf>1</AdsACrf>
<AdsANop>0</AdsANop>
<AdsANot>0</AdsANot>
<AdsLLst>1</AdsLLst>
<AdsLmap>1</AdsLmap>
<AdsLcgr>1</AdsLcgr>
<AdsLsym>1</AdsLsym>
<AdsLszi>1</AdsLszi>
<AdsLtoi>1</AdsLtoi>
<AdsLsun>1</AdsLsun>
<AdsLven>1</AdsLven>
<AdsLsxf>1</AdsLsxf>
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M0"</AdsCpuType>
<RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
<hadIROM>1</hadIROM>
<hadIRAM>1</hadIRAM>
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP>
<RvdsMve>0</RvdsMve>
<RvdsCdeCp>0</RvdsCdeCp>
<nBranchProt>0</nBranchProt>
<hadIRAM2>1</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
<useUlib>0</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
<nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>4</RwSelD>
<CodeSel>0</CodeSel>
<OptFeed>0</OptFeed>
<NoZi1>0</NoZi1>
<NoZi2>0</NoZi2>
<NoZi3>0</NoZi3>
<NoZi4>0</NoZi4>
<NoZi5>0</NoZi5>
<Ro1Chk>0</Ro1Chk>
<Ro2Chk>0</Ro2Chk>
<Ro3Chk>0</Ro3Chk>
<Ir1Chk>1</Ir1Chk>
<Ir2Chk>0</Ir2Chk>
<Ra1Chk>0</Ra1Chk>
<Ra2Chk>0</Ra2Chk>
<Ra3Chk>0</Ra3Chk>
<Im1Chk>1</Im1Chk>
<Im2Chk>1</Im2Chk>
<OnChipMemories>
<Ocm1>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm1>
<Ocm2>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm2>
<Ocm3>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm3>
<Ocm4>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm4>
<Ocm5>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm5>
<Ocm6>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm6>
<IRAM>
<Type>0</Type>
<StartAddress>0x20000000</StartAddress>
<Size>0x30000</Size>
</IRAM>
<IROM>
<Type>1</Type>
<StartAddress>0x8000000</StartAddress>
<Size>0x200000</Size>
</IROM>
<XRAM>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRAM>
<OCR_RVCT1>
<Type>1</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT1>
<OCR_RVCT2>
<Type>1</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT2>
<OCR_RVCT3>
<Type>1</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
<StartAddress>0x8000000</StartAddress>
<Size>0x200000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT5>
<OCR_RVCT6>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT6>
<OCR_RVCT7>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT7>
<OCR_RVCT8>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
<StartAddress>0x20000000</StartAddress>
<Size>0x30000</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
<StartAddress>0x10000000</StartAddress>
<Size>0x10000</Size>
</OCR_RVCT10>
</OnChipMemories>
<RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
<Optim>1</Optim>
<oTime>0</oTime>
<SplitLS>0</SplitLS>
<OneElfS>1</OneElfS>
<Strict>0</Strict>
<EnumInt>0</EnumInt>
<PlainCh>0</PlainCh>
<Ropi>0</Ropi>
<Rwpi>0</Rwpi>
<wLevel>2</wLevel>
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
<uGnu>1</uGnu>
<useXO>0</useXO>
<v6Lang>1</v6Lang>
<v6LangP>1</v6LangP>
<vShortEn>1</vShortEn>
<vShortWch>1</vShortWch>
<v6Lto>0</v6Lto>
<v6WtE>0</v6WtE>
<v6Rtti>0</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Cads>
<Aads>
<interw>1</interw>
<Ropi>0</Ropi>
<Rwpi>0</Rwpi>
<thumb>0</thumb>
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc>
<useXO>0</useXO>
<ClangAsOpt>1</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
<umfTarg>0</umfTarg>
<Ropi>0</Ropi>
<Rwpi>0</Rwpi>
<noStLib>0</noStLib>
<RepFail>1</RepFail>
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
<pXoBase></pXoBase>
<ScatterFile></ScatterFile>
<IncludeLibs></IncludeLibs>
<IncludeLibsPath></IncludeLibsPath>
<Misc>--diag_suppress 6314</Misc>
<LinkerInputFile></LinkerInputFile>
<DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
</TargetOption>
<Groups>
<Group>
<GroupName>Source Group 1</GroupName>
<Files>
<File>
<FileName>utils_ctboard.c</FileName>
<FileType>1</FileType>
<FilePath>.\app\utils_ctboard.c</FilePath>
</File>
<File>
<FileName>task.c</FileName>
<FileType>1</FileType>
<FilePath>.\app\task.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>::Device</GroupName>
</Group>
<Group>
<GroupName>::HAL</GroupName>
</Group>
</Groups>
</Target>
</Targets>
<RTE>
<apis/>
<components>
<component Cclass="Device" Cgroup="Startup" Cvendor="InES" Cversion="4.0.1" condition="SYSTEM_M0">
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</component>
<component Cclass="HAL" Cgroup="FMC" Cvendor="InES" Cversion="3.0.1" condition="HAL">
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</component>
<component Cclass="HAL" Cgroup="GPIO" Cvendor="InES" Cversion="4.0.1" condition="HAL">
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</component>
<component Cclass="HAL" Cgroup="PWR" Cvendor="InES" Cversion="2.2.0" condition="HAL">
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</component>
<component Cclass="HAL" Cgroup="RCC" Cvendor="InES" Cversion="4.0.1" condition="HAL">
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</component>
</components>
<files>
<file attr="config" category="source" name="Device\Source\datainit_ctboard.s" version="4.0.1">
<instance index="0">RTE\Device\CT_Board_HS14_M0\datainit_ctboard.s</instance>
<component Cclass="Device" Cgroup="Startup" Cvendor="InES" Cversion="4.0.1" condition="SYSTEM_M0"/>
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</file>
<file attr="config" category="source" name="Device\Source\startup_ctboard.s" version="4.0.1">
<instance index="0">RTE\Device\CT_Board_HS14_M0\startup_ctboard.s</instance>
<component Cclass="Device" Cgroup="Startup" Cvendor="InES" Cversion="4.0.1" condition="SYSTEM_M0"/>
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</file>
<file attr="config" category="source" name="Device\Source\system_ctboard.c" version="4.0.1">
<instance index="0">RTE\Device\CT_Board_HS14_M0\system_ctboard.c</instance>
<component Cclass="Device" Cgroup="Startup" Cvendor="InES" Cversion="4.0.1" condition="SYSTEM_M0"/>
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</file>
<file attr="config" category="source" name="HAL\Source\hal_fmc.c" version="3.0.1">
<instance index="0">RTE\HAL\CT_Board_HS14_M0\hal_fmc.c</instance>
<component Cclass="HAL" Cgroup="FMC" Cvendor="InES" Cversion="3.0.1" condition="HAL"/>
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</file>
<file attr="config" category="source" name="HAL\Source\hal_gpio.c" version="4.0.1">
<instance index="0">RTE\HAL\CT_Board_HS14_M0\hal_gpio.c</instance>
<component Cclass="HAL" Cgroup="GPIO" Cvendor="InES" Cversion="4.0.1" condition="HAL"/>
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</file>
<file attr="config" category="source" name="HAL\Source\hal_pwr.c" version="2.2.0">
<instance index="0">RTE\HAL\CT_Board_HS14_M0\hal_pwr.c</instance>
<component Cclass="HAL" Cgroup="PWR" Cvendor="InES" Cversion="2.2.0" condition="HAL"/>
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</file>
<file attr="config" category="source" name="HAL\Source\hal_rcc.c" version="4.0.1">
<instance index="0">RTE\HAL\CT_Board_HS14_M0\hal_rcc.c</instance>
<component Cclass="HAL" Cgroup="RCC" Cvendor="InES" Cversion="4.0.1" condition="HAL"/>
<package name="CTBoard14_DFP" schemaVersion="1.1" url="https://ennis.zhaw.ch/pack/" vendor="InES" version="4.0.2"/>
<targetInfos>
<targetInfo name="Target 1"/>
</targetInfos>
</file>
</files>
</RTE>
</Project>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
<component name="EventRecorderStub" version="1.0.0"/> <!--name and version of the component-->
<events>
</events>
</component_viewer>

View File

@ -0,0 +1,627 @@
Component: Arm Compiler for Embedded 6.18 Tool: armlink [5e4cc100]
==============================================================================
Section Cross References
utils_ctboard.o(.ARM.exidx.text.read_byte) refers to utils_ctboard.o(.text.read_byte) for [Anonymous Symbol]
utils_ctboard.o(.ARM.exidx.text.read_halfword) refers to utils_ctboard.o(.text.read_halfword) for [Anonymous Symbol]
utils_ctboard.o(.ARM.exidx.text.read_word) refers to utils_ctboard.o(.text.read_word) for [Anonymous Symbol]
utils_ctboard.o(.ARM.exidx.text.read_doubleword) refers to utils_ctboard.o(.text.read_doubleword) for [Anonymous Symbol]
utils_ctboard.o(.ARM.exidx.text.write_byte) refers to utils_ctboard.o(.text.write_byte) for [Anonymous Symbol]
utils_ctboard.o(.ARM.exidx.text.write_halfword) refers to utils_ctboard.o(.text.write_halfword) for [Anonymous Symbol]
utils_ctboard.o(.ARM.exidx.text.write_word) refers to utils_ctboard.o(.text.write_word) for [Anonymous Symbol]
utils_ctboard.o(.ARM.exidx.text.write_doubleword) refers to utils_ctboard.o(.text.write_doubleword) for [Anonymous Symbol]
task.o(.text.main) refers to utils_ctboard.o(.text.read_word) for read_word
task.o(.text.main) refers to utils_ctboard.o(.text.write_word) for write_word
task.o(.text.main) refers to utils_ctboard.o(.text.read_byte) for read_byte
task.o(.text.main) refers to task.o(.text.getData7Segment) for getData7Segment
task.o(.text.main) refers to utils_ctboard.o(.text.write_byte) for write_byte
task.o(.ARM.exidx.text.main) refers to task.o(.text.main) for [Anonymous Symbol]
task.o(.ARM.exidx.text.getData7Segment) refers to task.o(.text.getData7Segment) for [Anonymous Symbol]
task.o(.ARM.exidx.text.getData7SegmentTwoDigits) refers to task.o(.text.getData7SegmentTwoDigits) for [Anonymous Symbol]
datainit_ctboard.o(.text) refers (Weak) to startup_ctboard.o(STACK) for Stack_Mem
datainit_ctboard.o(.text) refers to task.o(.text.main) for main
startup_ctboard.o(RESET) refers to startup_ctboard.o(STACK) for __initial_sp
startup_ctboard.o(RESET) refers to startup_ctboard.o(.text) for Reset_Handler
startup_ctboard.o(.text) refers to system_ctboard.o(.text.__system) for __system
startup_ctboard.o(.text) refers to datainit_ctboard.o(.text) for __main
system_ctboard.o(.text.__system) refers to system_ctboard.o(.text.system_enter_run) for system_enter_run
system_ctboard.o(.ARM.exidx.text.__system) refers to system_ctboard.o(.text.__system) for [Anonymous Symbol]
system_ctboard.o(.text.system_enter_run) refers to system_ctboard.o(.text.init_SystemClock) for init_SystemClock
system_ctboard.o(.text.system_enter_run) refers to system_ctboard.o(.text.init_FPU) for init_FPU
system_ctboard.o(.text.system_enter_run) refers to system_ctboard.o(.text.init_FMC_SRAM) for init_FMC_SRAM
system_ctboard.o(.text.system_enter_run) refers to system_ctboard.o(.text.init_LCD) for init_LCD
system_ctboard.o(.ARM.exidx.text.system_enter_run) refers to system_ctboard.o(.text.system_enter_run) for [Anonymous Symbol]
system_ctboard.o(.text.init_SystemClock) refers to hal_rcc.o(.text.hal_rcc_reset) for hal_rcc_reset
system_ctboard.o(.text.init_SystemClock) refers to hal_rcc.o(.text.hal_rcc_set_osc) for hal_rcc_set_osc
system_ctboard.o(.text.init_SystemClock) refers to hal_rcc.o(.text.hal_rcc_setup_pll) for hal_rcc_setup_pll
system_ctboard.o(.text.init_SystemClock) refers to hal_pwr.o(.text.hal_pwr_set_overdrive) for hal_pwr_set_overdrive
system_ctboard.o(.text.init_SystemClock) refers to hal_rcc.o(.text.hal_rcc_setup_clock) for hal_rcc_setup_clock
system_ctboard.o(.ARM.exidx.text.init_SystemClock) refers to system_ctboard.o(.text.init_SystemClock) for [Anonymous Symbol]
system_ctboard.o(.ARM.exidx.text.init_FPU) refers to system_ctboard.o(.text.init_FPU) for [Anonymous Symbol]
system_ctboard.o(.text.init_FMC_SRAM) refers to hal_gpio.o(.text.hal_gpio_init_alternate) for hal_gpio_init_alternate
system_ctboard.o(.text.init_FMC_SRAM) refers to hal_fmc.o(.text.hal_fmc_init_sram) for hal_fmc_init_sram
system_ctboard.o(.ARM.exidx.text.init_FMC_SRAM) refers to system_ctboard.o(.text.init_FMC_SRAM) for [Anonymous Symbol]
system_ctboard.o(.ARM.exidx.text.init_LCD) refers to system_ctboard.o(.text.init_LCD) for [Anonymous Symbol]
system_ctboard.o(.ARM.exidx.text.system_enter_sleep) refers to system_ctboard.o(.text.system_enter_sleep) for [Anonymous Symbol]
system_ctboard.o(.ARM.exidx.text.system_enter_stop) refers to system_ctboard.o(.text.system_enter_stop) for [Anonymous Symbol]
system_ctboard.o(.ARM.exidx.text.system_enter_standby) refers to system_ctboard.o(.text.system_enter_standby) for [Anonymous Symbol]
hal_fmc.o(.ARM.exidx.text.hal_fmc_reset) refers to hal_fmc.o(.text.hal_fmc_reset) for [Anonymous Symbol]
hal_fmc.o(.ARM.exidx.text.hal_fmc_init_sram) refers to hal_fmc.o(.text.hal_fmc_init_sram) for [Anonymous Symbol]
hal_gpio.o(.ARM.exidx.text.hal_gpio_reset) refers to hal_gpio.o(.text.hal_gpio_reset) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_init_input) refers to hal_gpio.o(.text.intercept_overwrite_register) for intercept_overwrite_register
hal_gpio.o(.text.hal_gpio_init_input) refers to hal_gpio.o(.text.create_pattern_mask) for create_pattern_mask
hal_gpio.o(.ARM.exidx.text.hal_gpio_init_input) refers to hal_gpio.o(.text.hal_gpio_init_input) for [Anonymous Symbol]
hal_gpio.o(.ARM.exidx.text.intercept_overwrite_register) refers to hal_gpio.o(.text.intercept_overwrite_register) for [Anonymous Symbol]
hal_gpio.o(.text.create_pattern_mask) refers to aeabi_sdiv.o(.text) for __aeabi_uidiv
hal_gpio.o(.ARM.exidx.text.create_pattern_mask) refers to hal_gpio.o(.text.create_pattern_mask) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_init_analog) refers to hal_gpio.o(.text.hal_gpio_init_input) for hal_gpio_init_input
hal_gpio.o(.text.hal_gpio_init_analog) refers to hal_gpio.o(.text.create_pattern_mask) for create_pattern_mask
hal_gpio.o(.ARM.exidx.text.hal_gpio_init_analog) refers to hal_gpio.o(.text.hal_gpio_init_analog) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_init_output) refers to hal_gpio.o(.text.intercept_overwrite_register) for intercept_overwrite_register
hal_gpio.o(.text.hal_gpio_init_output) refers to hal_gpio.o(.text.create_pattern_mask) for create_pattern_mask
hal_gpio.o(.ARM.exidx.text.hal_gpio_init_output) refers to hal_gpio.o(.text.hal_gpio_init_output) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_init_alternate) refers to hal_gpio.o(.text.hal_gpio_init_output) for hal_gpio_init_output
hal_gpio.o(.text.hal_gpio_init_alternate) refers to hal_gpio.o(.text.create_pattern_mask) for create_pattern_mask
hal_gpio.o(.ARM.exidx.text.hal_gpio_init_alternate) refers to hal_gpio.o(.text.hal_gpio_init_alternate) for [Anonymous Symbol]
hal_gpio.o(.ARM.exidx.text.hal_gpio_input_read) refers to hal_gpio.o(.text.hal_gpio_input_read) for [Anonymous Symbol]
hal_gpio.o(.ARM.exidx.text.hal_gpio_output_read) refers to hal_gpio.o(.text.hal_gpio_output_read) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_output_write) refers to hal_gpio.o(.text.intercept_overwrite_register) for intercept_overwrite_register
hal_gpio.o(.ARM.exidx.text.hal_gpio_output_write) refers to hal_gpio.o(.text.hal_gpio_output_write) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_bit_set) refers to hal_gpio.o(.text.intercept_overwrite_register) for intercept_overwrite_register
hal_gpio.o(.ARM.exidx.text.hal_gpio_bit_set) refers to hal_gpio.o(.text.hal_gpio_bit_set) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_bit_reset) refers to hal_gpio.o(.text.intercept_overwrite_register) for intercept_overwrite_register
hal_gpio.o(.ARM.exidx.text.hal_gpio_bit_reset) refers to hal_gpio.o(.text.hal_gpio_bit_reset) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_bit_toggle) refers to hal_gpio.o(.text.intercept_overwrite_register) for intercept_overwrite_register
hal_gpio.o(.text.hal_gpio_bit_toggle) refers to hal_gpio.o(.text.hal_gpio_output_read) for hal_gpio_output_read
hal_gpio.o(.ARM.exidx.text.hal_gpio_bit_toggle) refers to hal_gpio.o(.text.hal_gpio_bit_toggle) for [Anonymous Symbol]
hal_gpio.o(.text.hal_gpio_irq_set) refers to hal_gpio.o(.text.get_syscfg_mask) for get_syscfg_mask
hal_gpio.o(.ARM.exidx.text.hal_gpio_irq_set) refers to hal_gpio.o(.text.hal_gpio_irq_set) for [Anonymous Symbol]
hal_gpio.o(.ARM.exidx.text.get_syscfg_mask) refers to hal_gpio.o(.text.get_syscfg_mask) for [Anonymous Symbol]
hal_gpio.o(.ARM.exidx.text.hal_gpio_irq_status) refers to hal_gpio.o(.text.hal_gpio_irq_status) for [Anonymous Symbol]
hal_gpio.o(.ARM.exidx.text.hal_gpio_irq_clear) refers to hal_gpio.o(.text.hal_gpio_irq_clear) for [Anonymous Symbol]
hal_pwr.o(.ARM.exidx.text.hal_pwr_reset) refers to hal_pwr.o(.text.hal_pwr_reset) for [Anonymous Symbol]
hal_pwr.o(.ARM.exidx.text.hal_pwr_set_backup_domain) refers to hal_pwr.o(.text.hal_pwr_set_backup_domain) for [Anonymous Symbol]
hal_pwr.o(.ARM.exidx.text.hal_pwr_set_backup_access) refers to hal_pwr.o(.text.hal_pwr_set_backup_access) for [Anonymous Symbol]
hal_pwr.o(.ARM.exidx.text.hal_pwr_set_wakeup_pin) refers to hal_pwr.o(.text.hal_pwr_set_wakeup_pin) for [Anonymous Symbol]
hal_pwr.o(.ARM.exidx.text.hal_pwr_set_flash_powerdown) refers to hal_pwr.o(.text.hal_pwr_set_flash_powerdown) for [Anonymous Symbol]
hal_pwr.o(.ARM.exidx.text.hal_pwr_set_overdrive) refers to hal_pwr.o(.text.hal_pwr_set_overdrive) for [Anonymous Symbol]
hal_pwr.o(.ARM.exidx.text.hal_pwr_set_underdrive) refers to hal_pwr.o(.text.hal_pwr_set_underdrive) for [Anonymous Symbol]
hal_rcc.o(.ARM.exidx.text.hal_rcc_reset) refers to hal_rcc.o(.text.hal_rcc_reset) for [Anonymous Symbol]
hal_rcc.o(.ARM.exidx.text.hal_rcc_set_peripheral) refers to hal_rcc.o(.text.hal_rcc_set_peripheral) for [Anonymous Symbol]
hal_rcc.o(.ARM.exidx.text.hal_rcc_set_osc) refers to hal_rcc.o(.text.hal_rcc_set_osc) for [Anonymous Symbol]
hal_rcc.o(.ARM.exidx.text.hal_rcc_setup_pll) refers to hal_rcc.o(.text.hal_rcc_setup_pll) for [Anonymous Symbol]
hal_rcc.o(.ARM.exidx.text.hal_rcc_setup_clock) refers to hal_rcc.o(.text.hal_rcc_setup_clock) for [Anonymous Symbol]
aeabi_idiv0_sigfpe.o(.text) refers to rt_div0.o(.text) for __rt_div0
rt_div0.o(.text) refers to defsig_fpe_outer.o(.text) for __rt_SIGFPE
defsig_fpe_outer.o(.text) refers to defsig_fpe_inner.o(.text) for __rt_SIGFPE_inner
defsig_fpe_outer.o(.text) refers to defsig_exit.o(.text) for __sig_exit
defsig_fpe_formal.o(.text) refers to rt_raise.o(.text) for __rt_raise
rt_raise.o(.text) refers to __raise.o(.text) for __raise
rt_raise.o(.text) refers to sys_exit.o(.text) for _sys_exit
defsig_exit.o(.text) refers to sys_exit.o(.text) for _sys_exit
defsig_fpe_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display
sys_exit.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting
sys_exit.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function
sys_exit_hlt.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting
sys_exit_hlt.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function
__raise.o(.text) refers to defsig.o(CL$$defsig) for __default_signal_handler
defsig_general.o(.text) refers to sys_wrch.o(.text) for _ttywrch
sys_wrch.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting
sys_wrch.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function
sys_wrch_hlt.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting
sys_wrch_hlt.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function
defsig.o(CL$$defsig) refers to defsig_fpe_inner.o(.text) for __rt_SIGFPE_inner
defsig_abrt_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display
defsig_rtred_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display
defsig_rtmem_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display
defsig_stak_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display
defsig_pvfn_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display
defsig_cppl_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display
defsig_segv_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display
defsig_other.o(.text) refers to defsig_general.o(.text) for __default_signal_display
==============================================================================
Removing Unused input sections from the image.
Removing utils_ctboard.o(.text), (0 bytes).
Removing utils_ctboard.o(.ARM.exidx.text.read_byte), (8 bytes).
Removing utils_ctboard.o(.text.read_halfword), (16 bytes).
Removing utils_ctboard.o(.ARM.exidx.text.read_halfword), (8 bytes).
Removing utils_ctboard.o(.ARM.exidx.text.read_word), (8 bytes).
Removing utils_ctboard.o(.text.read_doubleword), (18 bytes).
Removing utils_ctboard.o(.ARM.exidx.text.read_doubleword), (8 bytes).
Removing utils_ctboard.o(.ARM.exidx.text.write_byte), (8 bytes).
Removing utils_ctboard.o(.text.write_halfword), (22 bytes).
Removing utils_ctboard.o(.ARM.exidx.text.write_halfword), (8 bytes).
Removing utils_ctboard.o(.ARM.exidx.text.write_word), (8 bytes).
Removing utils_ctboard.o(.text.write_doubleword), (26 bytes).
Removing utils_ctboard.o(.ARM.exidx.text.write_doubleword), (8 bytes).
Removing task.o(.text), (0 bytes).
Removing task.o(.ARM.exidx.text.main), (8 bytes).
Removing task.o(.ARM.exidx.text.getData7Segment), (8 bytes).
Removing task.o(.text.getData7SegmentTwoDigits), (304 bytes).
Removing task.o(.ARM.exidx.text.getData7SegmentTwoDigits), (8 bytes).
Removing task.o(.ARM.use_no_argv), (4 bytes).
Removing startup_ctboard.o(HEAP), (2048 bytes).
Removing system_ctboard.o(.text), (0 bytes).
Removing system_ctboard.o(.ARM.exidx.text.__system), (8 bytes).
Removing system_ctboard.o(.ARM.exidx.text.system_enter_run), (8 bytes).
Removing system_ctboard.o(.ARM.exidx.text.init_SystemClock), (8 bytes).
Removing system_ctboard.o(.ARM.exidx.text.init_FPU), (8 bytes).
Removing system_ctboard.o(.ARM.exidx.text.init_FMC_SRAM), (8 bytes).
Removing system_ctboard.o(.ARM.exidx.text.init_LCD), (8 bytes).
Removing system_ctboard.o(.text.system_enter_sleep), (10 bytes).
Removing system_ctboard.o(.ARM.exidx.text.system_enter_sleep), (8 bytes).
Removing system_ctboard.o(.text.system_enter_stop), (14 bytes).
Removing system_ctboard.o(.ARM.exidx.text.system_enter_stop), (8 bytes).
Removing system_ctboard.o(.text.system_enter_standby), (2 bytes).
Removing system_ctboard.o(.ARM.exidx.text.system_enter_standby), (8 bytes).
Removing hal_fmc.o(.text), (0 bytes).
Removing hal_fmc.o(.text.hal_fmc_reset), (148 bytes).
Removing hal_fmc.o(.ARM.exidx.text.hal_fmc_reset), (8 bytes).
Removing hal_fmc.o(.ARM.exidx.text.hal_fmc_init_sram), (8 bytes).
Removing hal_gpio.o(.text), (0 bytes).
Removing hal_gpio.o(.text.hal_gpio_reset), (120 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_reset), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_init_input), (126 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_init_input), (8 bytes).
Removing hal_gpio.o(.ARM.exidx.text.intercept_overwrite_register), (8 bytes).
Removing hal_gpio.o(.ARM.exidx.text.create_pattern_mask), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_init_analog), (84 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_init_analog), (8 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_init_output), (8 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_init_alternate), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_input_read), (14 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_input_read), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_output_read), (14 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_output_read), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_output_write), (42 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_output_write), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_bit_set), (54 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_bit_set), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_bit_reset), (54 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_bit_reset), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_bit_toggle), (78 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_bit_toggle), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_irq_set), (888 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_irq_set), (8 bytes).
Removing hal_gpio.o(.text.get_syscfg_mask), (272 bytes).
Removing hal_gpio.o(.ARM.exidx.text.get_syscfg_mask), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_irq_status), (76 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_irq_status), (8 bytes).
Removing hal_gpio.o(.text.hal_gpio_irq_clear), (28 bytes).
Removing hal_gpio.o(.ARM.exidx.text.hal_gpio_irq_clear), (8 bytes).
Removing hal_pwr.o(.text), (0 bytes).
Removing hal_pwr.o(.text.hal_pwr_reset), (24 bytes).
Removing hal_pwr.o(.ARM.exidx.text.hal_pwr_reset), (8 bytes).
Removing hal_pwr.o(.text.hal_pwr_set_backup_domain), (164 bytes).
Removing hal_pwr.o(.ARM.exidx.text.hal_pwr_set_backup_domain), (8 bytes).
Removing hal_pwr.o(.text.hal_pwr_set_backup_access), (52 bytes).
Removing hal_pwr.o(.ARM.exidx.text.hal_pwr_set_backup_access), (8 bytes).
Removing hal_pwr.o(.text.hal_pwr_set_wakeup_pin), (52 bytes).
Removing hal_pwr.o(.ARM.exidx.text.hal_pwr_set_wakeup_pin), (8 bytes).
Removing hal_pwr.o(.text.hal_pwr_set_flash_powerdown), (52 bytes).
Removing hal_pwr.o(.ARM.exidx.text.hal_pwr_set_flash_powerdown), (8 bytes).
Removing hal_pwr.o(.ARM.exidx.text.hal_pwr_set_overdrive), (8 bytes).
Removing hal_pwr.o(.text.hal_pwr_set_underdrive), (12 bytes).
Removing hal_pwr.o(.ARM.exidx.text.hal_pwr_set_underdrive), (8 bytes).
Removing hal_rcc.o(.text), (0 bytes).
Removing hal_rcc.o(.ARM.exidx.text.hal_rcc_reset), (8 bytes).
Removing hal_rcc.o(.text.hal_rcc_set_peripheral), (420 bytes).
Removing hal_rcc.o(.ARM.exidx.text.hal_rcc_set_peripheral), (8 bytes).
Removing hal_rcc.o(.ARM.exidx.text.hal_rcc_set_osc), (8 bytes).
Removing hal_rcc.o(.ARM.exidx.text.hal_rcc_setup_pll), (8 bytes).
Removing hal_rcc.o(.ARM.exidx.text.hal_rcc_setup_clock), (8 bytes).
89 unused section(s) (total 5646 bytes) removed from the image.
==============================================================================
Image Symbol Table
Local Symbols
Symbol Name Value Ov Type Size Object(Section)
../clib/angel/rt.s 0x00000000 Number 0 aeabi_idiv0.o ABSOLUTE
../clib/angel/rt.s 0x00000000 Number 0 aeabi_idiv0_sigfpe.o ABSOLUTE
../clib/angel/rt.s 0x00000000 Number 0 rt_div0.o ABSOLUTE
../clib/angel/rt.s 0x00000000 Number 0 rt_raise.o ABSOLUTE
../clib/angel/sys.s 0x00000000 Number 0 use_no_semi.o ABSOLUTE
../clib/angel/sys.s 0x00000000 Number 0 indicate_semi.o ABSOLUTE
../clib/angel/sysapp.c 0x00000000 Number 0 sys_exit.o ABSOLUTE
../clib/angel/sysapp.c 0x00000000 Number 0 sys_exit_hlt.o ABSOLUTE
../clib/angel/sysapp.c 0x00000000 Number 0 sys_wrch.o ABSOLUTE
../clib/angel/sysapp.c 0x00000000 Number 0 sys_wrch_hlt.o ABSOLUTE
../clib/division.s 0x00000000 Number 0 aeabi_sdiv.o ABSOLUTE
../clib/division.s 0x00000000 Number 0 aeabi_sdiv_div0.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_fpe_outer.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_fpe_formal.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_exit.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_fpe_inner.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 __raise.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_general.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_abrt_inner.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_rtred_inner.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_rtmem_inner.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_stak_inner.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_pvfn_inner.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_cppl_inner.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_segv_inner.o ABSOLUTE
../clib/signal.c 0x00000000 Number 0 defsig_other.o ABSOLUTE
../clib/signal.s 0x00000000 Number 0 defsig.o ABSOLUTE
RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s 0x00000000 Number 0 datainit_ctboard.o ABSOLUTE
RTE/Device/CT_Board_HS14_M0/startup_ctboard.s 0x00000000 Number 0 startup_ctboard.o ABSOLUTE
dc.s 0x00000000 Number 0 dc.o ABSOLUTE
hal_fmc.c 0x00000000 Number 0 hal_fmc.o ABSOLUTE
hal_gpio.c 0x00000000 Number 0 hal_gpio.o ABSOLUTE
hal_pwr.c 0x00000000 Number 0 hal_pwr.o ABSOLUTE
hal_rcc.c 0x00000000 Number 0 hal_rcc.o ABSOLUTE
system_ctboard.c 0x00000000 Number 0 system_ctboard.o ABSOLUTE
task.c 0x00000000 Number 0 task.o ABSOLUTE
utils_ctboard.c 0x00000000 Number 0 utils_ctboard.o ABSOLUTE
RESET 0x08000000 Section 428 startup_ctboard.o(RESET)
.text 0x080001ac Section 124 datainit_ctboard.o(.text)
.text 0x08000228 Section 36 startup_ctboard.o(.text)
.text 0x0800024c Section 364 aeabi_sdiv.o(.text)
[Anonymous Symbol] 0x080003b8 Section 0 system_ctboard.o(.text.__system)
create_pattern_mask 0x080003c1 Thumb Code 156 hal_gpio.o(.text.create_pattern_mask)
[Anonymous Symbol] 0x080003c0 Section 0 hal_gpio.o(.text.create_pattern_mask)
[Anonymous Symbol] 0x0800045c Section 0 task.o(.text.getData7Segment)
[Anonymous Symbol] 0x08000548 Section 0 hal_fmc.o(.text.hal_fmc_init_sram)
__arm_cp.1_0 0x0800077c Number 4 hal_fmc.o(.text.hal_fmc_init_sram)
__arm_cp.1_1 0x08000780 Number 4 hal_fmc.o(.text.hal_fmc_init_sram)
__arm_cp.1_2 0x08000784 Number 4 hal_fmc.o(.text.hal_fmc_init_sram)
__arm_cp.1_3 0x08000788 Number 4 hal_fmc.o(.text.hal_fmc_init_sram)
__arm_cp.1_4 0x0800078c Number 4 hal_fmc.o(.text.hal_fmc_init_sram)
__arm_cp.1_5 0x08000790 Number 4 hal_fmc.o(.text.hal_fmc_init_sram)
__arm_cp.1_6 0x08000794 Number 4 hal_fmc.o(.text.hal_fmc_init_sram)
[Anonymous Symbol] 0x08000798 Section 0 hal_gpio.o(.text.hal_gpio_init_alternate)
[Anonymous Symbol] 0x0800085a Section 0 hal_gpio.o(.text.hal_gpio_init_output)
[Anonymous Symbol] 0x0800092a Section 0 hal_pwr.o(.text.hal_pwr_set_overdrive)
[Anonymous Symbol] 0x08000938 Section 0 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_1 0x080009cc Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_4 0x080009d0 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_6 0x080009d4 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_7 0x080009d8 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_8 0x080009dc Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_9 0x080009e0 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_10 0x080009e4 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_11 0x080009e8 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_12 0x080009ec Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_13 0x080009f0 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_14 0x080009f4 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_15 0x080009f8 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_16 0x080009fc Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_17 0x08000a00 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_18 0x08000a04 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_19 0x08000a08 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_20 0x08000a0c Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_21 0x08000a10 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_22 0x08000a14 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_23 0x08000a18 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_24 0x08000a1c Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_25 0x08000a20 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_26 0x08000a24 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_27 0x08000a28 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_28 0x08000a2c Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_29 0x08000a30 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_30 0x08000a34 Number 4 hal_rcc.o(.text.hal_rcc_reset)
__arm_cp.0_31 0x08000a38 Number 4 hal_rcc.o(.text.hal_rcc_reset)
[Anonymous Symbol] 0x08000a3c Section 0 hal_rcc.o(.text.hal_rcc_set_osc)
__arm_cp.2_0 0x08000b48 Number 4 hal_rcc.o(.text.hal_rcc_set_osc)
__arm_cp.2_2 0x08000b4c Number 4 hal_rcc.o(.text.hal_rcc_set_osc)
[Anonymous Symbol] 0x08000b50 Section 0 hal_rcc.o(.text.hal_rcc_setup_clock)
__arm_cp.4_0 0x08000bf0 Number 4 hal_rcc.o(.text.hal_rcc_setup_clock)
__arm_cp.4_1 0x08000bf4 Number 4 hal_rcc.o(.text.hal_rcc_setup_clock)
[Anonymous Symbol] 0x08000bf8 Section 0 hal_rcc.o(.text.hal_rcc_setup_pll)
__arm_cp.3_0 0x08000d40 Number 4 hal_rcc.o(.text.hal_rcc_setup_pll)
__arm_cp.3_1 0x08000d44 Number 4 hal_rcc.o(.text.hal_rcc_setup_pll)
__arm_cp.3_2 0x08000d48 Number 4 hal_rcc.o(.text.hal_rcc_setup_pll)
__arm_cp.3_3 0x08000d4c Number 4 hal_rcc.o(.text.hal_rcc_setup_pll)
__arm_cp.3_4 0x08000d50 Number 4 hal_rcc.o(.text.hal_rcc_setup_pll)
__arm_cp.3_5 0x08000d54 Number 4 hal_rcc.o(.text.hal_rcc_setup_pll)
init_FMC_SRAM 0x08000d59 Thumb Code 340 system_ctboard.o(.text.init_FMC_SRAM)
[Anonymous Symbol] 0x08000d58 Section 0 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_0 0x08000eac Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_1 0x08000eb0 Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_2 0x08000eb4 Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_3 0x08000eb8 Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_4 0x08000ebc Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_5 0x08000ec0 Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_6 0x08000ec4 Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_7 0x08000ec8 Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_8 0x08000ecc Number 4 system_ctboard.o(.text.init_FMC_SRAM)
__arm_cp.4_9 0x08000ed0 Number 4 system_ctboard.o(.text.init_FMC_SRAM)
init_FPU 0x08000ed5 Thumb Code 2 system_ctboard.o(.text.init_FPU)
[Anonymous Symbol] 0x08000ed4 Section 0 system_ctboard.o(.text.init_FPU)
init_LCD 0x08000ed9 Thumb Code 32 system_ctboard.o(.text.init_LCD)
[Anonymous Symbol] 0x08000ed8 Section 0 system_ctboard.o(.text.init_LCD)
__arm_cp.5_0 0x08000ef8 Number 4 system_ctboard.o(.text.init_LCD)
init_SystemClock 0x08000efd Thumb Code 196 system_ctboard.o(.text.init_SystemClock)
[Anonymous Symbol] 0x08000efc Section 0 system_ctboard.o(.text.init_SystemClock)
__arm_cp.2_0 0x08000fc0 Number 4 system_ctboard.o(.text.init_SystemClock)
__arm_cp.2_1 0x08000fc4 Number 4 system_ctboard.o(.text.init_SystemClock)
__arm_cp.2_2 0x08000fc8 Number 4 system_ctboard.o(.text.init_SystemClock)
__arm_cp.2_3 0x08000fcc Number 4 system_ctboard.o(.text.init_SystemClock)
__arm_cp.2_4 0x08000fd0 Number 4 system_ctboard.o(.text.init_SystemClock)
intercept_overwrite_register 0x08000fd5 Thumb Code 48 hal_gpio.o(.text.intercept_overwrite_register)
[Anonymous Symbol] 0x08000fd4 Section 0 hal_gpio.o(.text.intercept_overwrite_register)
__arm_cp.2_0 0x08001004 Number 4 hal_gpio.o(.text.intercept_overwrite_register)
__arm_cp.2_1 0x08001008 Number 4 hal_gpio.o(.text.intercept_overwrite_register)
__arm_cp.2_2 0x0800100c Number 4 hal_gpio.o(.text.intercept_overwrite_register)
[Anonymous Symbol] 0x08001010 Section 0 task.o(.text.main)
__arm_cp.0_0 0x08001048 Number 4 task.o(.text.main)
__arm_cp.0_1 0x0800104c Number 4 task.o(.text.main)
__arm_cp.0_2 0x08001050 Number 4 task.o(.text.main)
__arm_cp.0_3 0x08001054 Number 4 task.o(.text.main)
[Anonymous Symbol] 0x08001058 Section 0 utils_ctboard.o(.text.read_byte)
[Anonymous Symbol] 0x08001068 Section 0 utils_ctboard.o(.text.read_word)
[Anonymous Symbol] 0x08001078 Section 0 system_ctboard.o(.text.system_enter_run)
[Anonymous Symbol] 0x0800108c Section 0 utils_ctboard.o(.text.write_byte)
[Anonymous Symbol] 0x080010a2 Section 0 utils_ctboard.o(.text.write_word)
STACK 0x20000000 Section 8192 startup_ctboard.o(STACK)
__initial_sp 0x20002000 Data 0 startup_ctboard.o(STACK)
Global Symbols
Symbol Name Value Ov Type Size Object(Section)
BuildAttributes$$THM_ISAv3M$S$PE$A:L22$X:L11$S22$IEEE1$IW$~IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$ROPI$EBA8$STANDARDLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE
Image$$ER_IROM1$$Limit - Undefined Weak Reference
Image$$RW_IRAM1$$Base - Undefined Weak Reference
Image$$RW_IRAM1$$ZI$$Base - Undefined Weak Reference
Image$$RW_IRAM1$$ZI$$Limit - Undefined Weak Reference
__sigvec_lookup - Undefined Weak Reference
__Vectors_Size 0x000001ac Number 0 startup_ctboard.o ABSOLUTE
Stack_Size 0x00002000 Number 0 startup_ctboard.o ABSOLUTE
__Vectors 0x08000000 Data 4 startup_ctboard.o(RESET)
__Vectors_End 0x080001ac Data 0 startup_ctboard.o(RESET)
__main 0x080001ad Thumb Code 74 datainit_ctboard.o(.text)
Reset_Handler 0x08000229 Thumb Code 8 startup_ctboard.o(.text)
NMI_Handler 0x08000231 Thumb Code 2 startup_ctboard.o(.text)
HardFault_Handler 0x08000233 Thumb Code 2 startup_ctboard.o(.text)
MemManage_Handler 0x08000235 Thumb Code 2 startup_ctboard.o(.text)
BusFault_Handler 0x08000237 Thumb Code 2 startup_ctboard.o(.text)
UsageFault_Handler 0x08000239 Thumb Code 2 startup_ctboard.o(.text)
SVC_Handler 0x0800023b Thumb Code 2 startup_ctboard.o(.text)
DebugMon_Handler 0x0800023d Thumb Code 2 startup_ctboard.o(.text)
PendSV_Handler 0x0800023f Thumb Code 2 startup_ctboard.o(.text)
SysTick_Handler 0x08000241 Thumb Code 2 startup_ctboard.o(.text)
ADC_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CAN1_RX0_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CAN1_RX1_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CAN1_SCE_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CAN1_TX_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CAN2_RX0_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CAN2_RX1_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CAN2_SCE_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CAN2_TX_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
CRYP_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DCMI_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA1_Stream0_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA1_Stream1_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA1_Stream2_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA1_Stream3_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA1_Stream4_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA1_Stream5_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA1_Stream6_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA1_Stream7_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2D_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2_Stream0_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2_Stream1_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2_Stream2_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2_Stream3_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2_Stream4_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2_Stream5_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2_Stream6_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
DMA2_Stream7_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
ETH_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
ETH_WKUP_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
EXTI0_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
EXTI15_10_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
EXTI1_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
EXTI2_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
EXTI3_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
EXTI4_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
EXTI9_5_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
FLASH_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
FMC_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
FPU_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
HASH_RNG_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
I2C1_ER_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
I2C1_EV_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
I2C2_ER_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
I2C2_EV_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
I2C3_ER_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
I2C3_EV_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
LTDC_ER_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
LTDC_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
OTG_FS_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
OTG_FS_WKUP_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
OTG_HS_EP1_IN_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
OTG_HS_EP1_OUT_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
OTG_HS_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
OTG_HS_WKUP_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
PVD_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
RCC_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
RTC_Alarm_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
RTC_WKUP_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
SAI1_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
SDIO_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
SPI1_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
SPI2_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
SPI3_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
SPI4_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
SPI5_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
SPI6_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TAMP_STAMP_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM1_BRK_TIM9_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM1_CC_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM1_TRG_COM_TIM11_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM1_UP_TIM10_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM2_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM3_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM4_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM5_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM6_DAC_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM7_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM8_BRK_TIM12_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM8_CC_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM8_TRG_COM_TIM14_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
TIM8_UP_TIM13_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
UART4_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
UART5_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
UART7_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
UART8_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
USART1_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
USART2_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
USART3_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
USART6_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
WWDG_IRQHandler 0x08000243 Thumb Code 0 startup_ctboard.o(.text)
__aeabi_uidiv 0x0800024d Thumb Code 0 aeabi_sdiv.o(.text)
__aeabi_uidivmod 0x0800024d Thumb Code 20 aeabi_sdiv.o(.text)
__aeabi_idiv 0x08000261 Thumb Code 0 aeabi_sdiv.o(.text)
__aeabi_idivmod 0x08000261 Thumb Code 338 aeabi_sdiv.o(.text)
__system 0x080003b9 Thumb Code 8 system_ctboard.o(.text.__system)
getData7Segment 0x0800045d Thumb Code 236 task.o(.text.getData7Segment)
hal_fmc_init_sram 0x08000549 Thumb Code 564 hal_fmc.o(.text.hal_fmc_init_sram)
hal_gpio_init_alternate 0x08000799 Thumb Code 194 hal_gpio.o(.text.hal_gpio_init_alternate)
hal_gpio_init_output 0x0800085b Thumb Code 208 hal_gpio.o(.text.hal_gpio_init_output)
hal_pwr_set_overdrive 0x0800092b Thumb Code 12 hal_pwr.o(.text.hal_pwr_set_overdrive)
hal_rcc_reset 0x08000939 Thumb Code 148 hal_rcc.o(.text.hal_rcc_reset)
hal_rcc_set_osc 0x08000a3d Thumb Code 268 hal_rcc.o(.text.hal_rcc_set_osc)
hal_rcc_setup_clock 0x08000b51 Thumb Code 160 hal_rcc.o(.text.hal_rcc_setup_clock)
hal_rcc_setup_pll 0x08000bf9 Thumb Code 328 hal_rcc.o(.text.hal_rcc_setup_pll)
main 0x08001011 Thumb Code 56 task.o(.text.main)
read_byte 0x08001059 Thumb Code 16 utils_ctboard.o(.text.read_byte)
read_word 0x08001069 Thumb Code 16 utils_ctboard.o(.text.read_word)
system_enter_run 0x08001079 Thumb Code 20 system_ctboard.o(.text.system_enter_run)
write_byte 0x0800108d Thumb Code 22 utils_ctboard.o(.text.write_byte)
write_word 0x080010a3 Thumb Code 20 utils_ctboard.o(.text.write_word)
Image$$RO$$Limit 0x080010b8 Number 0 anon$$obj.o ABSOLUTE
Image$$RW$$Base 0x20000000 Number 0 anon$$obj.o ABSOLUTE
Image$$ZI$$Base 0x20000000 Number 0 anon$$obj.o ABSOLUTE
Stack_Mem 0x20000000 Data 8192 startup_ctboard.o(STACK)
Image$$ZI$$Limit 0x20002000 Number 0 anon$$obj.o ABSOLUTE
==============================================================================
Memory Map of the image
Image Entry point : 0x08000229
Load Region LR_1 (Base: 0x08000000, Size: 0x000010b8, Max: 0xffffffff, ABSOLUTE)
Execution Region ER_RO (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000010b8, Max: 0xffffffff, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x08000000 0x08000000 0x000001ac Data RO 46 RESET startup_ctboard.o
0x080001ac 0x080001ac 0x0000007c Code RO 38 .text datainit_ctboard.o
0x08000228 0x08000228 0x00000024 Code RO 47 * .text startup_ctboard.o
0x0800024c 0x0800024c 0x0000016c Code RO 168 .text c_p.l(aeabi_sdiv.o)
0x080003b8 0x080003b8 0x00000008 Code RO 52 .text.__system system_ctboard.o
0x080003c0 0x080003c0 0x0000009c Code RO 94 .text.create_pattern_mask hal_gpio.o
0x0800045c 0x0800045c 0x000000ec Code RO 27 .text.getData7Segment task.o
0x08000548 0x08000548 0x00000250 Code RO 79 .text.hal_fmc_init_sram hal_fmc.o
0x08000798 0x08000798 0x000000c2 Code RO 100 .text.hal_gpio_init_alternate hal_gpio.o
0x0800085a 0x0800085a 0x000000d0 Code RO 98 .text.hal_gpio_init_output hal_gpio.o
0x0800092a 0x0800092a 0x0000000c Code RO 139 .text.hal_pwr_set_overdrive hal_pwr.o
0x08000936 0x08000936 0x00000002 PAD
0x08000938 0x08000938 0x00000104 Code RO 150 .text.hal_rcc_reset hal_rcc.o
0x08000a3c 0x08000a3c 0x00000114 Code RO 154 .text.hal_rcc_set_osc hal_rcc.o
0x08000b50 0x08000b50 0x000000a8 Code RO 158 .text.hal_rcc_setup_clock hal_rcc.o
0x08000bf8 0x08000bf8 0x00000160 Code RO 156 .text.hal_rcc_setup_pll hal_rcc.o
0x08000d58 0x08000d58 0x0000017c Code RO 60 .text.init_FMC_SRAM system_ctboard.o
0x08000ed4 0x08000ed4 0x00000002 Code RO 58 .text.init_FPU system_ctboard.o
0x08000ed6 0x08000ed6 0x00000002 PAD
0x08000ed8 0x08000ed8 0x00000024 Code RO 62 .text.init_LCD system_ctboard.o
0x08000efc 0x08000efc 0x000000d8 Code RO 56 .text.init_SystemClock system_ctboard.o
0x08000fd4 0x08000fd4 0x0000003c Code RO 92 .text.intercept_overwrite_register hal_gpio.o
0x08001010 0x08001010 0x00000048 Code RO 25 .text.main task.o
0x08001058 0x08001058 0x00000010 Code RO 2 .text.read_byte utils_ctboard.o
0x08001068 0x08001068 0x00000010 Code RO 6 .text.read_word utils_ctboard.o
0x08001078 0x08001078 0x00000014 Code RO 54 .text.system_enter_run system_ctboard.o
0x0800108c 0x0800108c 0x00000016 Code RO 10 .text.write_byte utils_ctboard.o
0x080010a2 0x080010a2 0x00000014 Code RO 14 .text.write_word utils_ctboard.o
Execution Region ER_RW (Exec base: 0x20000000, Load base: 0x080010b8, Size: 0x00000000, Max: 0xffffffff, ABSOLUTE)
**** No section assigned to this execution region ****
Execution Region ER_ZI (Exec base: 0x20000000, Load base: 0x080010b8, Size: 0x00002000, Max: 0xffffffff, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 - 0x00002000 Zero RW 44 STACK startup_ctboard.o
==============================================================================
Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug Object Name
124 50 0 0 0 428 datainit_ctboard.o
592 44 0 0 0 3213 hal_fmc.o
618 12 0 0 0 8713 hal_gpio.o
12 0 0 0 0 2018 hal_pwr.o
1056 152 0 0 0 4848 hal_rcc.o
36 8 428 0 8192 796 startup_ctboard.o
662 64 0 0 0 6900 system_ctboard.o
308 80 0 0 0 1190 task.o
74 0 0 0 0 1703 utils_ctboard.o
----------------------------------------------------------------------
3488 410 428 0 8192 29809 Object Totals
0 0 0 0 0 0 (incl. Generated)
6 0 0 0 0 0 (incl. Padding)
----------------------------------------------------------------------
Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name
364 4 0 0 0 92 aeabi_sdiv.o
----------------------------------------------------------------------
364 4 0 0 0 92 Library Totals
0 0 0 0 0 0 (incl. Padding)
----------------------------------------------------------------------
Code (inc. data) RO Data RW Data ZI Data Debug Library Name
364 4 0 0 0 92 c_p.l
----------------------------------------------------------------------
364 4 0 0 0 92 Library Totals
----------------------------------------------------------------------
==============================================================================
Code (inc. data) RO Data RW Data ZI Data Debug
3852 414 428 0 8192 29677 Grand Totals
3852 414 428 0 8192 29677 ELF Image Totals
3852 414 428 0 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 4280 ( 4.18kB)
Total RW Size (RW Data + ZI Data) 8192 ( 8.00kB)
Total ROM Size (Code + RO Data + RW Data) 4280 ( 4.18kB)
==============================================================================

View File

@ -0,0 +1,52 @@
<html>
<body>
<pre>
<h1>µVision Build Log</h1>
<h2>Tool Versions:</h2>
IDE-Version: µVision V5.37.0.0
Copyright (C) 2022 ARM Ltd and ARM Germany GmbH. All rights reserved.
License Information: Roman Schenk, ZHAW, LIC=----
Tool Versions:
Toolchain: MDK-Lite Version: 5.37.0.0
Toolchain Path: C:\Keil_v5\ARM\ARMCLANG\Bin
C Compiler: ArmClang.exe V6.18
Assembler: Armasm.exe V6.18
Linker/Locator: ArmLink.exe V6.18
Library Manager: ArmAr.exe V6.18
Hex Converter: FromElf.exe V6.18
CPU DLL: SARMCM3.DLL V5.37.0.0
Dialog DLL: DARMCM1.DLL V1.19.6.0
Target DLL: UL2CM3.DLL V1.164.7.0
Dialog DLL: TARMCM1.DLL V1.14.6.0
<h2>Project:</h2>
C:\Users\roman\Documents\CT-Lab1-Project\CT-Lab1-Project.uvprojx
Project File Date: 09/23/2022
<h2>Output:</h2>
*** Using Compiler 'V6.18', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin'
Build target 'Target 1'
linking...
.\Objects\CT-Lab1-Project.axf: Error: L6320W: Ignoring --entry command. Cannot find argument 'Reset_Handler'.
.\Objects\CT-Lab1-Project.axf: Warning: L6320W: Ignoring --first command. Cannot find argument '__Vectors'.
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
Finished: 2 information, 1 warning and 1 error messages.
".\Objects\CT-Lab1-Project.axf" - 1 Error(s), 1 Warning(s).
<h2>Software Packages used:</h2>
Package Vendor: InES
https://ennis.zhaw.ch/pack/InES.CTBoard14_DFP.4.0.2.pack
InES.CTBoard14_DFP.4.0.2
CT Board 14 (STM32F429ZI) Device Support
<h2>Collection of Component include folders:</h2>
<h2>Collection of Component Files used:</h2>
Target not created.
Build Time Elapsed: 00:00:00
</pre>
</body>
</html>

View File

@ -0,0 +1,6 @@
--cpu Cortex-M0
".\objects\utils_ctboard.o"
".\objects\task.o"
--ro-base 0x08000000 --entry 0x08000000 --rw-base 0x20000000 --entry Reset_Handler --first __Vectors --strict --summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols
--info sizes --info totals --info unused --info veneers
--list ".\Listings\CT-Lab1-Project.map" -o .\Objects\CT-Lab1-Project.axf

View File

@ -0,0 +1,6 @@
Dependencies for Project 'CT-Lab1-Project', Target 'Target 1': (DO NOT MODIFY !)
CompilerVersion: 6180000::V6.18::ARMCLANG
F (.\utils_ctboard.c)(0x613F3541)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -D__UVISION_VERSION="537" -o ./objects/utils_ctboard.o -MD)
I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538)
I (utils_ctboard.h)(0x613F3541)
F (.\Task.c)(0x632D5432)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -D__UVISION_VERSION="537" -o ./objects/task.o -MD)

View File

@ -0,0 +1,5 @@
-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c
-fno-rtti -funsigned-char -fshort-enums -fshort-wchar
-D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier
-D__UVISION_VERSION="537"
-o ./objects/task.o -MD "Task.c"

View File

@ -0,0 +1,2 @@
./objects/task.o: Task.c utils_ctboard.h \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h

Binary file not shown.

View File

@ -0,0 +1,2 @@
./objects/utils_ctboard.o: utils_ctboard.c \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h utils_ctboard.h

Binary file not shown.

View File

@ -0,0 +1,100 @@
;* ------------------------------------------------------------------
;* -- _____ ______ _____ -
;* -- |_ _| | ____|/ ____| -
;* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
;* -- | | | '_ \| __| \___ \ Zurich University of -
;* -- _| |_| | | | |____ ____) | Applied Sciences -
;* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
;* ------------------------------------------------------------------
;* --
;* -- Project : CT Board - Cortex M4
;* -- Description : Data Segment initialisation.
;* --
;* -- $Id$
;* ------------------------------------------------------------------
; -------------------------------------------------------------------
; -- __Main
; -------------------------------------------------------------------
AREA |.text|, CODE, READONLY
IMPORT main
EXPORT __main
__main PROC
; initialize RW and ZI data - this includes heap and stack for the -ro=... -rw=... -entry=... linking cmd args...
IMPORT |Image$$RO$$Limit| [WEAK]
IMPORT |Image$$RW$$Base| [WEAK]
IMPORT |Image$$ZI$$Base| [WEAK]
IMPORT |Image$$ZI$$Limit| [WEAK]
; ...or from auto generated scatter file. Needs linker option: --diag_suppress 6314
IMPORT |Image$$ER_IROM1$$Limit| [WEAK]
IMPORT |Image$$RW_IRAM1$$Base| [WEAK]
IMPORT |Image$$RW_IRAM1$$ZI$$Base| [WEAK]
IMPORT |Image$$RW_IRAM1$$ZI$$Limit| [WEAK]
; import stack parameter
IMPORT Stack_Size [WEAK]
IMPORT Stack_Mem [WEAK]
; switch between command line generated regions and auto scatter file generated regions
LDR R1, =|Image$$RO$$Limit|
CMP R1,#0
BEQ ScatterFileSymbols
CommandLineSymbols
LDR R2, =|Image$$RW$$Base| ; start of the RW data in RAM
LDR R3, =|Image$$ZI$$Base| ; end of the RW data in RAM
MOV R5, R3 ; start of zero initialized data
LDR R6, =|Image$$ZI$$Limit| ; end of zero initialized data
B CondRWLoop
ScatterFileSymbols
LDR R1, =|Image$$ER_IROM1$$Limit| ; start of flashed initial RW data
LDR R2, =|Image$$RW_IRAM1$$Base| ; start of the RW data in RAM
LDR R3, =|Image$$RW_IRAM1$$ZI$$Base| ; end of the RW data in RAM
MOV R5, R3 ; start of zero initialized data
LDR R6, =|Image$$RW_IRAM1$$ZI$$Limit| ; end of zero initialized data
B CondRWLoop
; init non-zero data
LoopRWCopy LDR R4, [R1]
STR R4, [R2]
ADDS R1, R1, #4
ADDS R2, R2, #4
CondRWLoop CMP R2, R3
BNE LoopRWCopy
; init zero-initialized data
MOV R2, R5
MOV R3, R6
MOVS R4, #0
B CondZILoop
LoopZICopy STR R4, [R2]
ADDS R2, R2, #4
CondZILoop CMP R2, R3
BNE LoopZICopy
; fingerprint stack section
LDR R0, =Stack_Mem
LDR R1, =Stack_Size
LDR R2, =0xEFBEADDE ; stack fingerprint (little endian!)
LoopStack STR R2, [R0]
ADDS R0, R0, #4
SUBS R1, #4
BNE LoopStack
; go to the user main function
LDR R0, =main
BX R0
ENDP
; -------------------------------------------------------------------
; -- End of file
; -------------------------------------------------------------------
ALIGN
END

View File

@ -0,0 +1,439 @@
;******************** (C) COPYRIGHT 2013 STMicroelectronics ********************
;* File Name : startup_stm32f429_439xx.s
;* Author : MCD Application Team
;* Version : V1.3.0
;* Date : 08-November-2013
;* Description : STM32F429xx/439xx devices vector table for MDK-ARM toolchain.
;* This module performs:
;* - Set the initial SP
;* - Set the initial PC == Reset_Handler
;* - Set the vector table entries with the exceptions ISR address
;* - Configure the system clock and the external SRAM/SDRAM mounted
;* on STM324x9I-EVAL boards to be used as data memory
;* (optional, to be enabled by user)
;* - Branches to __main in the C library (which eventually
;* calls main()).
;* After Reset the CortexM4 processor is in Thread mode,
;* priority is Privileged, and the Stack is set to Main.
;* <<< Use Configuration Wizard in Context Menu >>>
;*******************************************************************************
;
; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
; You may not use this file except in compliance with the License.
; You may obtain a copy of the License at:
;
; http://www.st.com/software_license_agreement_liberty_v2
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
;*******************************************************************************
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x00002000
AREA STACK, NOINIT, READWRITE, ALIGN=3
EXPORT Stack_Size
EXPORT Stack_Mem
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000800
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WWDG_IRQHandler ; Window WatchDog
DCD PVD_IRQHandler ; PVD through EXTI Line detection
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
DCD FLASH_IRQHandler ; FLASH
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line0
DCD EXTI1_IRQHandler ; EXTI Line1
DCD EXTI2_IRQHandler ; EXTI Line2
DCD EXTI3_IRQHandler ; EXTI Line3
DCD EXTI4_IRQHandler ; EXTI Line4
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s
DCD CAN1_TX_IRQHandler ; CAN1 TX
DCD CAN1_RX0_IRQHandler ; CAN1 RX0
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
DCD EXTI9_5_IRQHandler ; External Line[9:5]s
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
DCD TIM2_IRQHandler ; TIM2
DCD TIM3_IRQHandler ; TIM3
DCD TIM4_IRQHandler ; TIM4
DCD I2C1_EV_IRQHandler ; I2C1 Event
DCD I2C1_ER_IRQHandler ; I2C1 Error
DCD I2C2_EV_IRQHandler ; I2C2 Event
DCD I2C2_ER_IRQHandler ; I2C2 Error
DCD SPI1_IRQHandler ; SPI1
DCD SPI2_IRQHandler ; SPI2
DCD USART1_IRQHandler ; USART1
DCD USART2_IRQHandler ; USART2
DCD USART3_IRQHandler ; USART3
DCD EXTI15_10_IRQHandler ; External Line[15:10]s
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
DCD FMC_IRQHandler ; FMC
DCD SDIO_IRQHandler ; SDIO
DCD TIM5_IRQHandler ; TIM5
DCD SPI3_IRQHandler ; SPI3
DCD UART4_IRQHandler ; UART4
DCD UART5_IRQHandler ; UART5
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
DCD TIM7_IRQHandler ; TIM7
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
DCD ETH_IRQHandler ; Ethernet
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line
DCD CAN2_TX_IRQHandler ; CAN2 TX
DCD CAN2_RX0_IRQHandler ; CAN2 RX0
DCD CAN2_RX1_IRQHandler ; CAN2 RX1
DCD CAN2_SCE_IRQHandler ; CAN2 SCE
DCD OTG_FS_IRQHandler ; USB OTG FS
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
DCD USART6_IRQHandler ; USART6
DCD I2C3_EV_IRQHandler ; I2C3 event
DCD I2C3_ER_IRQHandler ; I2C3 error
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI
DCD OTG_HS_IRQHandler ; USB OTG HS
DCD DCMI_IRQHandler ; DCMI
DCD CRYP_IRQHandler ; CRYP crypto
DCD HASH_RNG_IRQHandler ; Hash and Rng
DCD FPU_IRQHandler ; FPU
DCD UART7_IRQHandler ; UART7
DCD UART8_IRQHandler ; UART8
DCD SPI4_IRQHandler ; SPI4
DCD SPI5_IRQHandler ; SPI5
DCD SPI6_IRQHandler ; SPI6
DCD SAI1_IRQHandler ; SAI1
DCD LTDC_IRQHandler ; LTDC
DCD LTDC_ER_IRQHandler ; LTDC error
DCD DMA2D_IRQHandler ; DMA2D
__Vectors_End
__Vectors_Size EQU __Vectors_End - __Vectors
AREA |.text|, CODE, READONLY
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __system
IMPORT __main
ENTRY
LDR R0, =__system
BLX R0
LDR R0, =__main
BX R0
ENDP
; Dummy Exception Handlers (infinite loops which can be modified)
NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
B .
ENDP
MemManage_Handler\
PROC
EXPORT MemManage_Handler [WEAK]
B .
ENDP
BusFault_Handler\
PROC
EXPORT BusFault_Handler [WEAK]
B .
ENDP
UsageFault_Handler\
PROC
EXPORT UsageFault_Handler [WEAK]
B .
ENDP
SVC_Handler PROC
EXPORT SVC_Handler [WEAK]
B .
ENDP
DebugMon_Handler\
PROC
EXPORT DebugMon_Handler [WEAK]
B .
ENDP
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
Default_Handler PROC
EXPORT WWDG_IRQHandler [WEAK]
EXPORT PVD_IRQHandler [WEAK]
EXPORT TAMP_STAMP_IRQHandler [WEAK]
EXPORT RTC_WKUP_IRQHandler [WEAK]
EXPORT FLASH_IRQHandler [WEAK]
EXPORT RCC_IRQHandler [WEAK]
EXPORT EXTI0_IRQHandler [WEAK]
EXPORT EXTI1_IRQHandler [WEAK]
EXPORT EXTI2_IRQHandler [WEAK]
EXPORT EXTI3_IRQHandler [WEAK]
EXPORT EXTI4_IRQHandler [WEAK]
EXPORT DMA1_Stream0_IRQHandler [WEAK]
EXPORT DMA1_Stream1_IRQHandler [WEAK]
EXPORT DMA1_Stream2_IRQHandler [WEAK]
EXPORT DMA1_Stream3_IRQHandler [WEAK]
EXPORT DMA1_Stream4_IRQHandler [WEAK]
EXPORT DMA1_Stream5_IRQHandler [WEAK]
EXPORT DMA1_Stream6_IRQHandler [WEAK]
EXPORT ADC_IRQHandler [WEAK]
EXPORT CAN1_TX_IRQHandler [WEAK]
EXPORT CAN1_RX0_IRQHandler [WEAK]
EXPORT CAN1_RX1_IRQHandler [WEAK]
EXPORT CAN1_SCE_IRQHandler [WEAK]
EXPORT EXTI9_5_IRQHandler [WEAK]
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK]
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK]
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK]
EXPORT TIM1_CC_IRQHandler [WEAK]
EXPORT TIM2_IRQHandler [WEAK]
EXPORT TIM3_IRQHandler [WEAK]
EXPORT TIM4_IRQHandler [WEAK]
EXPORT I2C1_EV_IRQHandler [WEAK]
EXPORT I2C1_ER_IRQHandler [WEAK]
EXPORT I2C2_EV_IRQHandler [WEAK]
EXPORT I2C2_ER_IRQHandler [WEAK]
EXPORT SPI1_IRQHandler [WEAK]
EXPORT SPI2_IRQHandler [WEAK]
EXPORT USART1_IRQHandler [WEAK]
EXPORT USART2_IRQHandler [WEAK]
EXPORT USART3_IRQHandler [WEAK]
EXPORT EXTI15_10_IRQHandler [WEAK]
EXPORT RTC_Alarm_IRQHandler [WEAK]
EXPORT OTG_FS_WKUP_IRQHandler [WEAK]
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK]
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK]
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK]
EXPORT TIM8_CC_IRQHandler [WEAK]
EXPORT DMA1_Stream7_IRQHandler [WEAK]
EXPORT FMC_IRQHandler [WEAK]
EXPORT SDIO_IRQHandler [WEAK]
EXPORT TIM5_IRQHandler [WEAK]
EXPORT SPI3_IRQHandler [WEAK]
EXPORT UART4_IRQHandler [WEAK]
EXPORT UART5_IRQHandler [WEAK]
EXPORT TIM6_DAC_IRQHandler [WEAK]
EXPORT TIM7_IRQHandler [WEAK]
EXPORT DMA2_Stream0_IRQHandler [WEAK]
EXPORT DMA2_Stream1_IRQHandler [WEAK]
EXPORT DMA2_Stream2_IRQHandler [WEAK]
EXPORT DMA2_Stream3_IRQHandler [WEAK]
EXPORT DMA2_Stream4_IRQHandler [WEAK]
EXPORT ETH_IRQHandler [WEAK]
EXPORT ETH_WKUP_IRQHandler [WEAK]
EXPORT CAN2_TX_IRQHandler [WEAK]
EXPORT CAN2_RX0_IRQHandler [WEAK]
EXPORT CAN2_RX1_IRQHandler [WEAK]
EXPORT CAN2_SCE_IRQHandler [WEAK]
EXPORT OTG_FS_IRQHandler [WEAK]
EXPORT DMA2_Stream5_IRQHandler [WEAK]
EXPORT DMA2_Stream6_IRQHandler [WEAK]
EXPORT DMA2_Stream7_IRQHandler [WEAK]
EXPORT USART6_IRQHandler [WEAK]
EXPORT I2C3_EV_IRQHandler [WEAK]
EXPORT I2C3_ER_IRQHandler [WEAK]
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK]
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK]
EXPORT OTG_HS_WKUP_IRQHandler [WEAK]
EXPORT OTG_HS_IRQHandler [WEAK]
EXPORT DCMI_IRQHandler [WEAK]
EXPORT CRYP_IRQHandler [WEAK]
EXPORT HASH_RNG_IRQHandler [WEAK]
EXPORT FPU_IRQHandler [WEAK]
EXPORT UART7_IRQHandler [WEAK]
EXPORT UART8_IRQHandler [WEAK]
EXPORT SPI4_IRQHandler [WEAK]
EXPORT SPI5_IRQHandler [WEAK]
EXPORT SPI6_IRQHandler [WEAK]
EXPORT SAI1_IRQHandler [WEAK]
EXPORT LTDC_IRQHandler [WEAK]
EXPORT LTDC_ER_IRQHandler [WEAK]
EXPORT DMA2D_IRQHandler [WEAK]
WWDG_IRQHandler
PVD_IRQHandler
TAMP_STAMP_IRQHandler
RTC_WKUP_IRQHandler
FLASH_IRQHandler
RCC_IRQHandler
EXTI0_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_IRQHandler
EXTI4_IRQHandler
DMA1_Stream0_IRQHandler
DMA1_Stream1_IRQHandler
DMA1_Stream2_IRQHandler
DMA1_Stream3_IRQHandler
DMA1_Stream4_IRQHandler
DMA1_Stream5_IRQHandler
DMA1_Stream6_IRQHandler
ADC_IRQHandler
CAN1_TX_IRQHandler
CAN1_RX0_IRQHandler
CAN1_RX1_IRQHandler
CAN1_SCE_IRQHandler
EXTI9_5_IRQHandler
TIM1_BRK_TIM9_IRQHandler
TIM1_UP_TIM10_IRQHandler
TIM1_TRG_COM_TIM11_IRQHandler
TIM1_CC_IRQHandler
TIM2_IRQHandler
TIM3_IRQHandler
TIM4_IRQHandler
I2C1_EV_IRQHandler
I2C1_ER_IRQHandler
I2C2_EV_IRQHandler
I2C2_ER_IRQHandler
SPI1_IRQHandler
SPI2_IRQHandler
USART1_IRQHandler
USART2_IRQHandler
USART3_IRQHandler
EXTI15_10_IRQHandler
RTC_Alarm_IRQHandler
OTG_FS_WKUP_IRQHandler
TIM8_BRK_TIM12_IRQHandler
TIM8_UP_TIM13_IRQHandler
TIM8_TRG_COM_TIM14_IRQHandler
TIM8_CC_IRQHandler
DMA1_Stream7_IRQHandler
FMC_IRQHandler
SDIO_IRQHandler
TIM5_IRQHandler
SPI3_IRQHandler
UART4_IRQHandler
UART5_IRQHandler
TIM6_DAC_IRQHandler
TIM7_IRQHandler
DMA2_Stream0_IRQHandler
DMA2_Stream1_IRQHandler
DMA2_Stream2_IRQHandler
DMA2_Stream3_IRQHandler
DMA2_Stream4_IRQHandler
ETH_IRQHandler
ETH_WKUP_IRQHandler
CAN2_TX_IRQHandler
CAN2_RX0_IRQHandler
CAN2_RX1_IRQHandler
CAN2_SCE_IRQHandler
OTG_FS_IRQHandler
DMA2_Stream5_IRQHandler
DMA2_Stream6_IRQHandler
DMA2_Stream7_IRQHandler
USART6_IRQHandler
I2C3_EV_IRQHandler
I2C3_ER_IRQHandler
OTG_HS_EP1_OUT_IRQHandler
OTG_HS_EP1_IN_IRQHandler
OTG_HS_WKUP_IRQHandler
OTG_HS_IRQHandler
DCMI_IRQHandler
CRYP_IRQHandler
HASH_RNG_IRQHandler
FPU_IRQHandler
UART7_IRQHandler
UART8_IRQHandler
SPI4_IRQHandler
SPI5_IRQHandler
SPI6_IRQHandler
SAI1_IRQHandler
LTDC_IRQHandler
LTDC_ER_IRQHandler
DMA2D_IRQHandler
B .
ENDP
ALIGN
END
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****

View File

@ -0,0 +1,290 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Interface of module system_ctboard.
* Description : Basic system configuration.
* * initialize system clock
* * initialize FMC (SRAM & GPIO)
*
* GPIO FMC pin assignment:
*
* PD0 > FMC_D2 | PE0 > FMC_NBL0 | PF0 > FMC_A0 | PG0 > FMC_A10
* PD1 > FMC_D3 | PE1 > FMC_NBL1 | PF1 > FMC_A1 | PG1 > FMC_A11
* PD3 > FMC_CLK | PE2 > FMC_A23 | PF2 > FMC_A2 | PG2 > FMC_A12
* PD4 > FMC_NOE | PE3 > FMC_A19 | PF3 > FMC_A3 | PG3 > FMC_A13
* PD5 > FMC_NWE | PE4 > FMC_A20 | PF4 > FMC_A4 | PG4 > FMC_A14
* PD6 > FMC_WAIT | PE5 > FMC_A21 | PF5 > FMC_A5 | PG5 > FMC_A15
* PD7 > FMC_NE1 | PE6 > FMC_A22 | PF12 > FMC_A6 | PG9 > FMC_NE2
* PD8 > FMC_D13 | PE7 > FMC_D4 | PF13 > FMC_A7 | PG10 > FMC_NE3
* PD9 > FMC_D14 | PE8 > FMC_D5 | PF14 > FMC_A8 | PG12 > FMC_NE4
* PD10 > FMC_A15 | PE9 > FMC_D6 | PF15 > FMC_A9 | PG13 > FMC_A24
* PD11 > FMC_A16 | PE10 > FMC_D7 | |
* PD12 > FMC_A17 | PE11 > FMC_D8 | |
* PD13 > FMC_A18 | PE12 > FMC_D9 | |
* PD14 > FMC_D0 | PE13 > FMC_D10 | |
* PD15 > FMC_D1 | PE14 > FMC_D11 | |
* | PE15 > FMC_D12 | |
*
* $Id$
* ------------------------------------------------------------------------- */
/* Standard includes */
#include <stdint.h>
/* User includes */
#include "system_ctboard.h"
#include "reg_stm32f4xx.h"
#include "reg_ctboard.h"
/* -- Macros (LCD)
* ------------------------------------------------------------------------- */
#define LCD_WAIT 0x1fff
/* -- Macros (FMC)
* ------------------------------------------------------------------------- */
#define FMC_PORTD_PINMASK 0xfffb
#define FMC_PORTE_PINMASK 0xffff
#define FMC_PORTF_PINMASK 0xf03f
#define FMC_PORTG_PINMASK 0x363f
/* -- Local function declarations
* ------------------------------------------------------------------------- */
static void init_SystemClock(void);
static void init_FPU(void);
static void init_FMC_SRAM(void);
static void init_LCD(void);
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/**
* \brief Entry point used in startup.
*/
void __system(void)
{
system_enter_run();
}
/*
* See header files
*/
void system_enter_run(void)
{
/* Initialize RCC / system clock */
init_SystemClock();
/* Iitialize FPU */
init_FPU();
/* Initialize SRAM interface */
init_FMC_SRAM();
/* Initialize LCD on CT-Board */
init_LCD();
}
/*
* See header file
*/
void system_enter_sleep(hal_pwr_lp_entry_t entry)
{
/** \note Implement this function if needed. */
}
/*
* See header file
*/
void system_enter_stop(hal_pwr_regulator_t regulator, hal_pwr_lp_entry_t entry)
{
/** \note Implement this function if needed. */
}
/*
* See header file
*/
void system_enter_standby(void)
{
/** \note Implement this function if needed. */
}
/* -- Local function definitions
* ------------------------------------------------------------------------- */
/**
* \brief Configures the System clock source, PLL Multiplier and Divider
* factors, AHB/APBx prescalers and Flash settings.
*/
static void init_SystemClock(void)
{
hal_rcc_pll_init_t pll_init;
hal_rcc_clk_init_t clk_init;
/* Enable used periphery */
PWR_ENABLE();
/* Reset */
hal_rcc_reset();
PWR_RESET();
/* Enable HSE oscillator and proceed if ok */
if (hal_rcc_set_osc(HAL_RCC_OSC_HSE, ENABLE)) {
/* Select regulator voltage output Scale 1 mode */
RCC->APB1ENR |= 0x00000000;
PWR->CR |= 0x0000c000;
/* Configure PLL */
pll_init.source = HAL_RCC_OSC_HSE;
pll_init.m_divider = 4u;
pll_init.n_factor = 168u;
pll_init.p_divider = 2u;
pll_init.q_divider = 7u;
hal_rcc_setup_pll(HAL_RCC_OSC_PLL, pll_init);
/* Enable PLL */
hal_rcc_set_osc(HAL_RCC_OSC_PLL, ENABLE);
/* Enable overdrive to allow system clock >= 168 MHz */
hal_pwr_set_overdrive(ENABLE);
/* Configure Flash prefetch, Instruction cache, Data cache
* and wait state */
FLASH->ACR = 0x00000705;
/* Setup system clock */
clk_init.osc = HAL_RCC_OSC_PLL;
clk_init.hpre = HAL_RCC_HPRE_2; // -> AHB clock : 84 MHz
clk_init.ppre1 = HAL_RCC_PPRE_2; // -> APB1 clock : 48 MHz
clk_init.ppre2 = HAL_RCC_PPRE_2; // -> APB2 clock : 48 MHz
hal_rcc_setup_clock(clk_init);
} else {
/* If HSE fails to start-up, the application will have wrong clock con-
figuration. User can add here some code to deal with this error */
}
}
/**
* \brief Initialize the floating point unit in M4 mode.
*/
static void init_FPU(void)
{
#ifdef PLATFORM_M4
/* No documentation about this, even the registers... */
/* set CP10 and CP11 Full Access */
FPU->CPACR |= ((3u << 20u)|(3u << 22u));
#endif
}
/**
* \brief Setup the flexible memory controller. This function configures the SRAM
* interface for accessing the periphery on the CT Board.
*/
static void init_FMC_SRAM(void)
{
#ifndef NO_FMC
hal_gpio_output_t gpio_init;
hal_fmc_sram_init_t sram_init;
hal_fmc_sram_timing_t sram_timing;
/* Enable used peripherals */
GPIOD_ENABLE();
GPIOE_ENABLE();
GPIOF_ENABLE();
GPIOG_ENABLE();
FMC_ENABLE();
/* Configure the involved GPIO pins to AF12 (FMC) */
gpio_init.pupd = HAL_GPIO_PUPD_NOPULL;
gpio_init.out_speed = HAL_GPIO_OUT_SPEED_50MHZ;
gpio_init.out_type = HAL_GPIO_OUT_TYPE_PP;
/* GPIOD configuration (pins: 0,1,3-15) */
gpio_init.pins = FMC_PORTD_PINMASK;
hal_gpio_init_alternate(GPIOD, HAL_GPIO_AF_FMC, gpio_init);
/* GPIOE configuration (pins: 0-15) */
gpio_init.pins = FMC_PORTE_PINMASK;
hal_gpio_init_alternate(GPIOE, HAL_GPIO_AF_FMC, gpio_init);
/* GPIOF configuration (pins: 0-5,12-15) */
gpio_init.pins = FMC_PORTF_PINMASK;
hal_gpio_init_alternate(GPIOF, HAL_GPIO_AF_FMC, gpio_init);
/* GPIOG configuration (pins: 1-5, 9, 10, 12, 13) */
gpio_init.pins = FMC_PORTG_PINMASK;
hal_gpio_init_alternate(GPIOG, HAL_GPIO_AF_FMC, gpio_init);
/* Initialize the synchronous PSRAM on bank 1 */
sram_init.address_mux = DISABLE;
sram_init.type = HAL_FMC_TYPE_PSRAM;
sram_init.width = HAL_FMC_WIDTH_16B;
sram_init.read_burst = ENABLE;
sram_init.write_enable = ENABLE;
sram_init.write_burst = ENABLE;
sram_init.continous_clock = ENABLE;
sram_timing.bus_turnaround = 1u;
sram_timing.clk_divider = 15u;
sram_timing.data_latency = 2u;
hal_fmc_init_sram(HAL_FMC_SRAM_BANK1, sram_init, sram_timing);
/* Initialize the asynchronous SRAM on bank 2 */
sram_init.address_mux = DISABLE;
sram_init.type = HAL_FMC_TYPE_SRAM;
sram_init.width = HAL_FMC_WIDTH_16B;
sram_init.read_burst = DISABLE;
sram_init.write_enable = DISABLE;
sram_init.write_burst = DISABLE;
sram_init.continous_clock = DISABLE;
sram_timing.bus_turnaround = 1u;
sram_timing.address_setup = 11u;
sram_timing.address_hold = 5u;
sram_timing.data_setup = 11u;
sram_timing.mode = HAL_FMC_ACCESS_MODE_A;
hal_fmc_init_sram(HAL_FMC_SRAM_BANK2, sram_init, sram_timing);
#endif
}
/**
* \brief Wait for the LCD controller on the CT Board to be initialized.
* \TODO Possibly adjust LCD controller on CPLD to set status bit
* and wait for it in this function.
*/
static void init_LCD(void)
{
#ifndef NO_FMC
uint32_t wait_for_lcd = LCD_WAIT;
for(; wait_for_lcd > 0; wait_for_lcd--);
#endif
}

View File

@ -0,0 +1,100 @@
;* ------------------------------------------------------------------
;* -- _____ ______ _____ -
;* -- |_ _| | ____|/ ____| -
;* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
;* -- | | | '_ \| __| \___ \ Zurich University of -
;* -- _| |_| | | | |____ ____) | Applied Sciences -
;* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
;* ------------------------------------------------------------------
;* --
;* -- Project : CT Board - Cortex M4
;* -- Description : Data Segment initialisation.
;* --
;* -- $Id$
;* ------------------------------------------------------------------
; -------------------------------------------------------------------
; -- __Main
; -------------------------------------------------------------------
AREA |.text|, CODE, READONLY
IMPORT main
EXPORT __main
__main PROC
; initialize RW and ZI data - this includes heap and stack for the -ro=... -rw=... -entry=... linking cmd args...
IMPORT |Image$$RO$$Limit| [WEAK]
IMPORT |Image$$RW$$Base| [WEAK]
IMPORT |Image$$ZI$$Base| [WEAK]
IMPORT |Image$$ZI$$Limit| [WEAK]
; ...or from auto generated scatter file. Needs linker option: --diag_suppress 6314
IMPORT |Image$$ER_IROM1$$Limit| [WEAK]
IMPORT |Image$$RW_IRAM1$$Base| [WEAK]
IMPORT |Image$$RW_IRAM1$$ZI$$Base| [WEAK]
IMPORT |Image$$RW_IRAM1$$ZI$$Limit| [WEAK]
; import stack parameter
IMPORT Stack_Size [WEAK]
IMPORT Stack_Mem [WEAK]
; switch between command line generated regions and auto scatter file generated regions
LDR R1, =|Image$$RO$$Limit|
CMP R1,#0
BEQ ScatterFileSymbols
CommandLineSymbols
LDR R2, =|Image$$RW$$Base| ; start of the RW data in RAM
LDR R3, =|Image$$ZI$$Base| ; end of the RW data in RAM
MOV R5, R3 ; start of zero initialized data
LDR R6, =|Image$$ZI$$Limit| ; end of zero initialized data
B CondRWLoop
ScatterFileSymbols
LDR R1, =|Image$$ER_IROM1$$Limit| ; start of flashed initial RW data
LDR R2, =|Image$$RW_IRAM1$$Base| ; start of the RW data in RAM
LDR R3, =|Image$$RW_IRAM1$$ZI$$Base| ; end of the RW data in RAM
MOV R5, R3 ; start of zero initialized data
LDR R6, =|Image$$RW_IRAM1$$ZI$$Limit| ; end of zero initialized data
B CondRWLoop
; init non-zero data
LoopRWCopy LDR R4, [R1]
STR R4, [R2]
ADDS R1, R1, #4
ADDS R2, R2, #4
CondRWLoop CMP R2, R3
BNE LoopRWCopy
; init zero-initialized data
MOV R2, R5
MOV R3, R6
MOVS R4, #0
B CondZILoop
LoopZICopy STR R4, [R2]
ADDS R2, R2, #4
CondZILoop CMP R2, R3
BNE LoopZICopy
; fingerprint stack section
LDR R0, =Stack_Mem
LDR R1, =Stack_Size
LDR R2, =0xEFBEADDE ; stack fingerprint (little endian!)
LoopStack STR R2, [R0]
ADDS R0, R0, #4
SUBS R1, #4
BNE LoopStack
; go to the user main function
LDR R0, =main
BX R0
ENDP
; -------------------------------------------------------------------
; -- End of file
; -------------------------------------------------------------------
ALIGN
END

View File

@ -0,0 +1,439 @@
;******************** (C) COPYRIGHT 2013 STMicroelectronics ********************
;* File Name : startup_stm32f429_439xx.s
;* Author : MCD Application Team
;* Version : V1.3.0
;* Date : 08-November-2013
;* Description : STM32F429xx/439xx devices vector table for MDK-ARM toolchain.
;* This module performs:
;* - Set the initial SP
;* - Set the initial PC == Reset_Handler
;* - Set the vector table entries with the exceptions ISR address
;* - Configure the system clock and the external SRAM/SDRAM mounted
;* on STM324x9I-EVAL boards to be used as data memory
;* (optional, to be enabled by user)
;* - Branches to __main in the C library (which eventually
;* calls main()).
;* After Reset the CortexM4 processor is in Thread mode,
;* priority is Privileged, and the Stack is set to Main.
;* <<< Use Configuration Wizard in Context Menu >>>
;*******************************************************************************
;
; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
; You may not use this file except in compliance with the License.
; You may obtain a copy of the License at:
;
; http://www.st.com/software_license_agreement_liberty_v2
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
;*******************************************************************************
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x00002000
AREA STACK, NOINIT, READWRITE, ALIGN=3
EXPORT Stack_Size
EXPORT Stack_Mem
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000800
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WWDG_IRQHandler ; Window WatchDog
DCD PVD_IRQHandler ; PVD through EXTI Line detection
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
DCD FLASH_IRQHandler ; FLASH
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line0
DCD EXTI1_IRQHandler ; EXTI Line1
DCD EXTI2_IRQHandler ; EXTI Line2
DCD EXTI3_IRQHandler ; EXTI Line3
DCD EXTI4_IRQHandler ; EXTI Line4
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s
DCD CAN1_TX_IRQHandler ; CAN1 TX
DCD CAN1_RX0_IRQHandler ; CAN1 RX0
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
DCD EXTI9_5_IRQHandler ; External Line[9:5]s
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
DCD TIM2_IRQHandler ; TIM2
DCD TIM3_IRQHandler ; TIM3
DCD TIM4_IRQHandler ; TIM4
DCD I2C1_EV_IRQHandler ; I2C1 Event
DCD I2C1_ER_IRQHandler ; I2C1 Error
DCD I2C2_EV_IRQHandler ; I2C2 Event
DCD I2C2_ER_IRQHandler ; I2C2 Error
DCD SPI1_IRQHandler ; SPI1
DCD SPI2_IRQHandler ; SPI2
DCD USART1_IRQHandler ; USART1
DCD USART2_IRQHandler ; USART2
DCD USART3_IRQHandler ; USART3
DCD EXTI15_10_IRQHandler ; External Line[15:10]s
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12
DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13
DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
DCD FMC_IRQHandler ; FMC
DCD SDIO_IRQHandler ; SDIO
DCD TIM5_IRQHandler ; TIM5
DCD SPI3_IRQHandler ; SPI3
DCD UART4_IRQHandler ; UART4
DCD UART5_IRQHandler ; UART5
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
DCD TIM7_IRQHandler ; TIM7
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
DCD ETH_IRQHandler ; Ethernet
DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line
DCD CAN2_TX_IRQHandler ; CAN2 TX
DCD CAN2_RX0_IRQHandler ; CAN2 RX0
DCD CAN2_RX1_IRQHandler ; CAN2 RX1
DCD CAN2_SCE_IRQHandler ; CAN2 SCE
DCD OTG_FS_IRQHandler ; USB OTG FS
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
DCD USART6_IRQHandler ; USART6
DCD I2C3_EV_IRQHandler ; I2C3 event
DCD I2C3_ER_IRQHandler ; I2C3 error
DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out
DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In
DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI
DCD OTG_HS_IRQHandler ; USB OTG HS
DCD DCMI_IRQHandler ; DCMI
DCD CRYP_IRQHandler ; CRYP crypto
DCD HASH_RNG_IRQHandler ; Hash and Rng
DCD FPU_IRQHandler ; FPU
DCD UART7_IRQHandler ; UART7
DCD UART8_IRQHandler ; UART8
DCD SPI4_IRQHandler ; SPI4
DCD SPI5_IRQHandler ; SPI5
DCD SPI6_IRQHandler ; SPI6
DCD SAI1_IRQHandler ; SAI1
DCD LTDC_IRQHandler ; LTDC
DCD LTDC_ER_IRQHandler ; LTDC error
DCD DMA2D_IRQHandler ; DMA2D
__Vectors_End
__Vectors_Size EQU __Vectors_End - __Vectors
AREA |.text|, CODE, READONLY
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __system
IMPORT __main
ENTRY
LDR R0, =__system
BLX R0
LDR R0, =__main
BX R0
ENDP
; Dummy Exception Handlers (infinite loops which can be modified)
NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
B .
ENDP
MemManage_Handler\
PROC
EXPORT MemManage_Handler [WEAK]
B .
ENDP
BusFault_Handler\
PROC
EXPORT BusFault_Handler [WEAK]
B .
ENDP
UsageFault_Handler\
PROC
EXPORT UsageFault_Handler [WEAK]
B .
ENDP
SVC_Handler PROC
EXPORT SVC_Handler [WEAK]
B .
ENDP
DebugMon_Handler\
PROC
EXPORT DebugMon_Handler [WEAK]
B .
ENDP
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
Default_Handler PROC
EXPORT WWDG_IRQHandler [WEAK]
EXPORT PVD_IRQHandler [WEAK]
EXPORT TAMP_STAMP_IRQHandler [WEAK]
EXPORT RTC_WKUP_IRQHandler [WEAK]
EXPORT FLASH_IRQHandler [WEAK]
EXPORT RCC_IRQHandler [WEAK]
EXPORT EXTI0_IRQHandler [WEAK]
EXPORT EXTI1_IRQHandler [WEAK]
EXPORT EXTI2_IRQHandler [WEAK]
EXPORT EXTI3_IRQHandler [WEAK]
EXPORT EXTI4_IRQHandler [WEAK]
EXPORT DMA1_Stream0_IRQHandler [WEAK]
EXPORT DMA1_Stream1_IRQHandler [WEAK]
EXPORT DMA1_Stream2_IRQHandler [WEAK]
EXPORT DMA1_Stream3_IRQHandler [WEAK]
EXPORT DMA1_Stream4_IRQHandler [WEAK]
EXPORT DMA1_Stream5_IRQHandler [WEAK]
EXPORT DMA1_Stream6_IRQHandler [WEAK]
EXPORT ADC_IRQHandler [WEAK]
EXPORT CAN1_TX_IRQHandler [WEAK]
EXPORT CAN1_RX0_IRQHandler [WEAK]
EXPORT CAN1_RX1_IRQHandler [WEAK]
EXPORT CAN1_SCE_IRQHandler [WEAK]
EXPORT EXTI9_5_IRQHandler [WEAK]
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK]
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK]
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK]
EXPORT TIM1_CC_IRQHandler [WEAK]
EXPORT TIM2_IRQHandler [WEAK]
EXPORT TIM3_IRQHandler [WEAK]
EXPORT TIM4_IRQHandler [WEAK]
EXPORT I2C1_EV_IRQHandler [WEAK]
EXPORT I2C1_ER_IRQHandler [WEAK]
EXPORT I2C2_EV_IRQHandler [WEAK]
EXPORT I2C2_ER_IRQHandler [WEAK]
EXPORT SPI1_IRQHandler [WEAK]
EXPORT SPI2_IRQHandler [WEAK]
EXPORT USART1_IRQHandler [WEAK]
EXPORT USART2_IRQHandler [WEAK]
EXPORT USART3_IRQHandler [WEAK]
EXPORT EXTI15_10_IRQHandler [WEAK]
EXPORT RTC_Alarm_IRQHandler [WEAK]
EXPORT OTG_FS_WKUP_IRQHandler [WEAK]
EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK]
EXPORT TIM8_UP_TIM13_IRQHandler [WEAK]
EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK]
EXPORT TIM8_CC_IRQHandler [WEAK]
EXPORT DMA1_Stream7_IRQHandler [WEAK]
EXPORT FMC_IRQHandler [WEAK]
EXPORT SDIO_IRQHandler [WEAK]
EXPORT TIM5_IRQHandler [WEAK]
EXPORT SPI3_IRQHandler [WEAK]
EXPORT UART4_IRQHandler [WEAK]
EXPORT UART5_IRQHandler [WEAK]
EXPORT TIM6_DAC_IRQHandler [WEAK]
EXPORT TIM7_IRQHandler [WEAK]
EXPORT DMA2_Stream0_IRQHandler [WEAK]
EXPORT DMA2_Stream1_IRQHandler [WEAK]
EXPORT DMA2_Stream2_IRQHandler [WEAK]
EXPORT DMA2_Stream3_IRQHandler [WEAK]
EXPORT DMA2_Stream4_IRQHandler [WEAK]
EXPORT ETH_IRQHandler [WEAK]
EXPORT ETH_WKUP_IRQHandler [WEAK]
EXPORT CAN2_TX_IRQHandler [WEAK]
EXPORT CAN2_RX0_IRQHandler [WEAK]
EXPORT CAN2_RX1_IRQHandler [WEAK]
EXPORT CAN2_SCE_IRQHandler [WEAK]
EXPORT OTG_FS_IRQHandler [WEAK]
EXPORT DMA2_Stream5_IRQHandler [WEAK]
EXPORT DMA2_Stream6_IRQHandler [WEAK]
EXPORT DMA2_Stream7_IRQHandler [WEAK]
EXPORT USART6_IRQHandler [WEAK]
EXPORT I2C3_EV_IRQHandler [WEAK]
EXPORT I2C3_ER_IRQHandler [WEAK]
EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK]
EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK]
EXPORT OTG_HS_WKUP_IRQHandler [WEAK]
EXPORT OTG_HS_IRQHandler [WEAK]
EXPORT DCMI_IRQHandler [WEAK]
EXPORT CRYP_IRQHandler [WEAK]
EXPORT HASH_RNG_IRQHandler [WEAK]
EXPORT FPU_IRQHandler [WEAK]
EXPORT UART7_IRQHandler [WEAK]
EXPORT UART8_IRQHandler [WEAK]
EXPORT SPI4_IRQHandler [WEAK]
EXPORT SPI5_IRQHandler [WEAK]
EXPORT SPI6_IRQHandler [WEAK]
EXPORT SAI1_IRQHandler [WEAK]
EXPORT LTDC_IRQHandler [WEAK]
EXPORT LTDC_ER_IRQHandler [WEAK]
EXPORT DMA2D_IRQHandler [WEAK]
WWDG_IRQHandler
PVD_IRQHandler
TAMP_STAMP_IRQHandler
RTC_WKUP_IRQHandler
FLASH_IRQHandler
RCC_IRQHandler
EXTI0_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_IRQHandler
EXTI4_IRQHandler
DMA1_Stream0_IRQHandler
DMA1_Stream1_IRQHandler
DMA1_Stream2_IRQHandler
DMA1_Stream3_IRQHandler
DMA1_Stream4_IRQHandler
DMA1_Stream5_IRQHandler
DMA1_Stream6_IRQHandler
ADC_IRQHandler
CAN1_TX_IRQHandler
CAN1_RX0_IRQHandler
CAN1_RX1_IRQHandler
CAN1_SCE_IRQHandler
EXTI9_5_IRQHandler
TIM1_BRK_TIM9_IRQHandler
TIM1_UP_TIM10_IRQHandler
TIM1_TRG_COM_TIM11_IRQHandler
TIM1_CC_IRQHandler
TIM2_IRQHandler
TIM3_IRQHandler
TIM4_IRQHandler
I2C1_EV_IRQHandler
I2C1_ER_IRQHandler
I2C2_EV_IRQHandler
I2C2_ER_IRQHandler
SPI1_IRQHandler
SPI2_IRQHandler
USART1_IRQHandler
USART2_IRQHandler
USART3_IRQHandler
EXTI15_10_IRQHandler
RTC_Alarm_IRQHandler
OTG_FS_WKUP_IRQHandler
TIM8_BRK_TIM12_IRQHandler
TIM8_UP_TIM13_IRQHandler
TIM8_TRG_COM_TIM14_IRQHandler
TIM8_CC_IRQHandler
DMA1_Stream7_IRQHandler
FMC_IRQHandler
SDIO_IRQHandler
TIM5_IRQHandler
SPI3_IRQHandler
UART4_IRQHandler
UART5_IRQHandler
TIM6_DAC_IRQHandler
TIM7_IRQHandler
DMA2_Stream0_IRQHandler
DMA2_Stream1_IRQHandler
DMA2_Stream2_IRQHandler
DMA2_Stream3_IRQHandler
DMA2_Stream4_IRQHandler
ETH_IRQHandler
ETH_WKUP_IRQHandler
CAN2_TX_IRQHandler
CAN2_RX0_IRQHandler
CAN2_RX1_IRQHandler
CAN2_SCE_IRQHandler
OTG_FS_IRQHandler
DMA2_Stream5_IRQHandler
DMA2_Stream6_IRQHandler
DMA2_Stream7_IRQHandler
USART6_IRQHandler
I2C3_EV_IRQHandler
I2C3_ER_IRQHandler
OTG_HS_EP1_OUT_IRQHandler
OTG_HS_EP1_IN_IRQHandler
OTG_HS_WKUP_IRQHandler
OTG_HS_IRQHandler
DCMI_IRQHandler
CRYP_IRQHandler
HASH_RNG_IRQHandler
FPU_IRQHandler
UART7_IRQHandler
UART8_IRQHandler
SPI4_IRQHandler
SPI5_IRQHandler
SPI6_IRQHandler
SAI1_IRQHandler
LTDC_IRQHandler
LTDC_ER_IRQHandler
DMA2D_IRQHandler
B .
ENDP
ALIGN
END
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****

View File

@ -0,0 +1,290 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Interface of module system_ctboard.
* Description : Basic system configuration.
* * initialize system clock
* * initialize FMC (SRAM & GPIO)
*
* GPIO FMC pin assignment:
*
* PD0 > FMC_D2 | PE0 > FMC_NBL0 | PF0 > FMC_A0 | PG0 > FMC_A10
* PD1 > FMC_D3 | PE1 > FMC_NBL1 | PF1 > FMC_A1 | PG1 > FMC_A11
* PD3 > FMC_CLK | PE2 > FMC_A23 | PF2 > FMC_A2 | PG2 > FMC_A12
* PD4 > FMC_NOE | PE3 > FMC_A19 | PF3 > FMC_A3 | PG3 > FMC_A13
* PD5 > FMC_NWE | PE4 > FMC_A20 | PF4 > FMC_A4 | PG4 > FMC_A14
* PD6 > FMC_WAIT | PE5 > FMC_A21 | PF5 > FMC_A5 | PG5 > FMC_A15
* PD7 > FMC_NE1 | PE6 > FMC_A22 | PF12 > FMC_A6 | PG9 > FMC_NE2
* PD8 > FMC_D13 | PE7 > FMC_D4 | PF13 > FMC_A7 | PG10 > FMC_NE3
* PD9 > FMC_D14 | PE8 > FMC_D5 | PF14 > FMC_A8 | PG12 > FMC_NE4
* PD10 > FMC_A15 | PE9 > FMC_D6 | PF15 > FMC_A9 | PG13 > FMC_A24
* PD11 > FMC_A16 | PE10 > FMC_D7 | |
* PD12 > FMC_A17 | PE11 > FMC_D8 | |
* PD13 > FMC_A18 | PE12 > FMC_D9 | |
* PD14 > FMC_D0 | PE13 > FMC_D10 | |
* PD15 > FMC_D1 | PE14 > FMC_D11 | |
* | PE15 > FMC_D12 | |
*
* $Id$
* ------------------------------------------------------------------------- */
/* Standard includes */
#include <stdint.h>
/* User includes */
#include "system_ctboard.h"
#include "reg_stm32f4xx.h"
#include "reg_ctboard.h"
/* -- Macros (LCD)
* ------------------------------------------------------------------------- */
#define LCD_WAIT 0x1fff
/* -- Macros (FMC)
* ------------------------------------------------------------------------- */
#define FMC_PORTD_PINMASK 0xfffb
#define FMC_PORTE_PINMASK 0xffff
#define FMC_PORTF_PINMASK 0xf03f
#define FMC_PORTG_PINMASK 0x363f
/* -- Local function declarations
* ------------------------------------------------------------------------- */
static void init_SystemClock(void);
static void init_FPU(void);
static void init_FMC_SRAM(void);
static void init_LCD(void);
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/**
* \brief Entry point used in startup.
*/
void __system(void)
{
system_enter_run();
}
/*
* See header files
*/
void system_enter_run(void)
{
/* Initialize RCC / system clock */
init_SystemClock();
/* Iitialize FPU */
init_FPU();
/* Initialize SRAM interface */
init_FMC_SRAM();
/* Initialize LCD on CT-Board */
init_LCD();
}
/*
* See header file
*/
void system_enter_sleep(hal_pwr_lp_entry_t entry)
{
/** \note Implement this function if needed. */
}
/*
* See header file
*/
void system_enter_stop(hal_pwr_regulator_t regulator, hal_pwr_lp_entry_t entry)
{
/** \note Implement this function if needed. */
}
/*
* See header file
*/
void system_enter_standby(void)
{
/** \note Implement this function if needed. */
}
/* -- Local function definitions
* ------------------------------------------------------------------------- */
/**
* \brief Configures the System clock source, PLL Multiplier and Divider
* factors, AHB/APBx prescalers and Flash settings.
*/
static void init_SystemClock(void)
{
hal_rcc_pll_init_t pll_init;
hal_rcc_clk_init_t clk_init;
/* Enable used periphery */
PWR_ENABLE();
/* Reset */
hal_rcc_reset();
PWR_RESET();
/* Enable HSE oscillator and proceed if ok */
if (hal_rcc_set_osc(HAL_RCC_OSC_HSE, ENABLE)) {
/* Select regulator voltage output Scale 1 mode */
RCC->APB1ENR |= 0x00000000;
PWR->CR |= 0x0000c000;
/* Configure PLL */
pll_init.source = HAL_RCC_OSC_HSE;
pll_init.m_divider = 4u;
pll_init.n_factor = 168u;
pll_init.p_divider = 2u;
pll_init.q_divider = 7u;
hal_rcc_setup_pll(HAL_RCC_OSC_PLL, pll_init);
/* Enable PLL */
hal_rcc_set_osc(HAL_RCC_OSC_PLL, ENABLE);
/* Enable overdrive to allow system clock >= 168 MHz */
hal_pwr_set_overdrive(ENABLE);
/* Configure Flash prefetch, Instruction cache, Data cache
* and wait state */
FLASH->ACR = 0x00000705;
/* Setup system clock */
clk_init.osc = HAL_RCC_OSC_PLL;
clk_init.hpre = HAL_RCC_HPRE_2; // -> AHB clock : 84 MHz
clk_init.ppre1 = HAL_RCC_PPRE_2; // -> APB1 clock : 48 MHz
clk_init.ppre2 = HAL_RCC_PPRE_2; // -> APB2 clock : 48 MHz
hal_rcc_setup_clock(clk_init);
} else {
/* If HSE fails to start-up, the application will have wrong clock con-
figuration. User can add here some code to deal with this error */
}
}
/**
* \brief Initialize the floating point unit in M4 mode.
*/
static void init_FPU(void)
{
#ifdef PLATFORM_M4
/* No documentation about this, even the registers... */
/* set CP10 and CP11 Full Access */
FPU->CPACR |= ((3u << 20u)|(3u << 22u));
#endif
}
/**
* \brief Setup the flexible memory controller. This function configures the SRAM
* interface for accessing the periphery on the CT Board.
*/
static void init_FMC_SRAM(void)
{
#ifndef NO_FMC
hal_gpio_output_t gpio_init;
hal_fmc_sram_init_t sram_init;
hal_fmc_sram_timing_t sram_timing;
/* Enable used peripherals */
GPIOD_ENABLE();
GPIOE_ENABLE();
GPIOF_ENABLE();
GPIOG_ENABLE();
FMC_ENABLE();
/* Configure the involved GPIO pins to AF12 (FMC) */
gpio_init.pupd = HAL_GPIO_PUPD_NOPULL;
gpio_init.out_speed = HAL_GPIO_OUT_SPEED_50MHZ;
gpio_init.out_type = HAL_GPIO_OUT_TYPE_PP;
/* GPIOD configuration (pins: 0,1,3-15) */
gpio_init.pins = FMC_PORTD_PINMASK;
hal_gpio_init_alternate(GPIOD, HAL_GPIO_AF_FMC, gpio_init);
/* GPIOE configuration (pins: 0-15) */
gpio_init.pins = FMC_PORTE_PINMASK;
hal_gpio_init_alternate(GPIOE, HAL_GPIO_AF_FMC, gpio_init);
/* GPIOF configuration (pins: 0-5,12-15) */
gpio_init.pins = FMC_PORTF_PINMASK;
hal_gpio_init_alternate(GPIOF, HAL_GPIO_AF_FMC, gpio_init);
/* GPIOG configuration (pins: 1-5, 9, 10, 12, 13) */
gpio_init.pins = FMC_PORTG_PINMASK;
hal_gpio_init_alternate(GPIOG, HAL_GPIO_AF_FMC, gpio_init);
/* Initialize the synchronous PSRAM on bank 1 */
sram_init.address_mux = DISABLE;
sram_init.type = HAL_FMC_TYPE_PSRAM;
sram_init.width = HAL_FMC_WIDTH_16B;
sram_init.read_burst = ENABLE;
sram_init.write_enable = ENABLE;
sram_init.write_burst = ENABLE;
sram_init.continous_clock = ENABLE;
sram_timing.bus_turnaround = 1u;
sram_timing.clk_divider = 15u;
sram_timing.data_latency = 2u;
hal_fmc_init_sram(HAL_FMC_SRAM_BANK1, sram_init, sram_timing);
/* Initialize the asynchronous SRAM on bank 2 */
sram_init.address_mux = DISABLE;
sram_init.type = HAL_FMC_TYPE_SRAM;
sram_init.width = HAL_FMC_WIDTH_16B;
sram_init.read_burst = DISABLE;
sram_init.write_enable = DISABLE;
sram_init.write_burst = DISABLE;
sram_init.continous_clock = DISABLE;
sram_timing.bus_turnaround = 1u;
sram_timing.address_setup = 11u;
sram_timing.address_hold = 5u;
sram_timing.data_setup = 11u;
sram_timing.mode = HAL_FMC_ACCESS_MODE_A;
hal_fmc_init_sram(HAL_FMC_SRAM_BANK2, sram_init, sram_timing);
#endif
}
/**
* \brief Wait for the LCD controller on the CT Board to be initialized.
* \TODO Possibly adjust LCD controller on CPLD to set status bit
* and wait for it in this function.
*/
static void init_LCD(void)
{
#ifndef NO_FMC
uint32_t wait_for_lcd = LCD_WAIT;
for(; wait_for_lcd > 0; wait_for_lcd--);
#endif
}

View File

@ -0,0 +1,143 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Implementation of module hal_fmc.
*
* The hardware abstraction layer for the memory controller.
*
* $Id$
* ------------------------------------------------------------------------- */
/* User includes */
#include "hal_fmc.h"
#include "reg_stm32f4xx.h"
/* -- Macros
* ------------------------------------------------------------------------- */
#define MASK_PERIPH_FMC (0x00000001)
#define MASK_SRAM_ENABLE (0x00000001)
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/*
* See header file
*/
void hal_fmc_reset(hal_fmc_bank_t bank)
{
switch (bank) {
default:
case HAL_FMC_SRAM_BANK1:
FMC->SRAM.BCR1 = 0x000030db;
FMC->SRAM.BTR1 = 0x0fffffff;
break;
case HAL_FMC_SRAM_BANK2:
FMC->SRAM.BCR2 = 0x000030d2;
FMC->SRAM.BTR2 = 0x0fffffff;
break;
case HAL_FMC_SRAM_BANK3:
FMC->SRAM.BCR3 = 0x000030d2;
FMC->SRAM.BTR3 = 0x0fffffff;
break;
case HAL_FMC_SRAM_BANK4:
FMC->SRAM.BCR4 = 0x000030d2;
FMC->SRAM.BTR4 = 0x0fffffff;
break;
}
}
/*
* See header file
*/
void hal_fmc_init_sram(hal_fmc_bank_t bank,
hal_fmc_sram_init_t init,
hal_fmc_sram_timing_t timing)
{
uint32_t reg_cr = 0, reg_tr = 0;
/* Input check */
timing.address_setup &= 0xf;
timing.address_hold &= 0xf;
if (timing.address_hold < 1u) timing.address_hold = 1u;
timing.data_setup &= 0xff;
if (timing.data_setup < 1u) timing.data_setup = 1u;
timing.bus_turnaround &= 0xf;
/* Input check clock divider (2..16) */
if (timing.clk_divider > 16u) timing.clk_divider = 16u;
if (timing.clk_divider < 2u) timing.clk_divider = 2u;
timing.clk_divider -= 1u; // 0b0001 -> clk / 2
/* Input check data latency (2..17) */
if (timing.data_latency > 17u) timing.data_latency = 17u;
if (timing.data_latency < 2u) timing.data_latency = 2u;
timing.data_latency -= 2u; // 0b0000 -> latency = 2
/* Process boolean parameter */
if (init.address_mux == ENABLE) reg_cr |= (1u << 1u);
if (init.read_burst == ENABLE) reg_cr |= (1u << 8u);
if (init.write_enable == ENABLE) reg_cr |= (1u << 12u);
if (init.write_burst == ENABLE) reg_cr |= (1u << 19u);
if (init.continous_clock == ENABLE) reg_cr |= (1u << 20u);
/* Process non boolean parameter */
reg_cr |= (init.type << 2u);
reg_cr |= (init.width << 4u);
/* Process timing for async. SRAM */
if (init.type == HAL_FMC_TYPE_SRAM) {
reg_tr |= (timing.address_setup << 0u);
reg_tr |= (timing.address_hold << 4u);
reg_tr |= (timing.data_setup << 8u);
reg_tr |= (timing.mode << 28u);
}
/* Process timing for sync. PSRAM */
else if (init.type == HAL_FMC_TYPE_PSRAM) {
reg_tr |= (timing.clk_divider << 20u);
reg_tr |= (timing.data_latency << 24u);
}
/* Process bus turnaround time */
reg_tr |= (timing.bus_turnaround << 16u);
/* Write register */
switch (bank) {
default:
case HAL_FMC_SRAM_BANK1:
FMC->SRAM.BCR1 = reg_cr;
FMC->SRAM.BTR1 = reg_tr;
FMC->SRAM.BCR1 |= MASK_SRAM_ENABLE;
break;
case HAL_FMC_SRAM_BANK2:
FMC->SRAM.BCR2 = reg_cr;
FMC->SRAM.BTR2 = reg_tr;
FMC->SRAM.BCR2 |= MASK_SRAM_ENABLE;
break;
case HAL_FMC_SRAM_BANK3:
FMC->SRAM.BCR3 = reg_cr;
FMC->SRAM.BTR3 = reg_tr;
FMC->SRAM.BCR3 |= MASK_SRAM_ENABLE;
break;
case HAL_FMC_SRAM_BANK4:
FMC->SRAM.BCR4 = reg_cr;
FMC->SRAM.BTR4 = reg_tr;
FMC->SRAM.BCR4 |= MASK_SRAM_ENABLE;
break;
}
}

View File

@ -0,0 +1,412 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Implementation of module hal_gpio.
*
* The hardware abstraction layer for the GPIO periphery.
*
* $Id$
* ------------------------------------------------------------------------- */
/* User includes */
#include "hal_gpio.h"
/* -- Macros
* ------------------------------------------------------------------------- */
#define NVIC_OFFSET_1_4 ( 6u)
#define NVIC_OFFSET_5_9 (23u)
#define NVIC_OFFSET_10_15 ( 8u)
/* -- Local function declarations
* ------------------------------------------------------------------------- */
static uint32_t create_pattern_mask(uint16_t pins,
uint8_t pattern,
uint8_t pattern_bit_width);
static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins);
static uint8_t get_syscfg_mask(reg_gpio_t *port);
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/*
* See header file
*/
void hal_gpio_reset(reg_gpio_t *port)
{
if(port == GPIOA) {
/* Reset GPIOA specific values */
port->MODER = 0xa8000000;
port->OSPEEDR = 0x00000000;
port->PUPDR = 0x64000000;
}
else if (port == GPIOB) {
/* Reset GPIOB specific values */
port->MODER = 0x00000280;
port->OSPEEDR = 0x000000c0;
port->PUPDR = 0x00000100;
} else {
/* Reset other GPIO */
port->MODER = 0x00000000;
port->OSPEEDR = 0x00000000;
port->PUPDR = 0x00000000;
}
port->OTYPER = 0x00000000;
port->AFRL = 0x00000000;
port->AFRH = 0x00000000;
port->ODR = 0x00000000;
}
/*
* See header file
*/
void hal_gpio_init_input(reg_gpio_t *port, hal_gpio_input_t init)
{
/* prevent overwrite false reg entry */
init.pins = intercept_overwrite_register(port, init.pins);
/* process mode */
port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_IN, 2u);
/* process pull up/down resitors */
port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u);
}
/*
* See header file
*/
void hal_gpio_init_analog(reg_gpio_t *port, hal_gpio_input_t init)
{
/* treat like input */
hal_gpio_init_input(port, init);
/* change mode */
port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AN, 2u);
}
/*
* See header file
*/
void hal_gpio_init_output(reg_gpio_t *port, hal_gpio_output_t init)
{
/* prevent overwrite false reg entry */
init.pins = intercept_overwrite_register(port, init.pins);
/* process mode */
port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_OUT, 2u);
/* process pull up/down resitors */
port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u);
/* process port speed */
port->OSPEEDR &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->OSPEEDR |= create_pattern_mask(init.pins, init.out_speed, 2u);
/* process output typ */
port->OTYPER &= ~init.pins;
if(init.out_type == HAL_GPIO_OUT_TYPE_OD){
port->OTYPER |= init.pins;
}
}
/*
* See header file
*/
void hal_gpio_init_alternate(reg_gpio_t *port,
hal_gpio_af_t af_mode,
hal_gpio_output_t init)
{
/* treat like output */
hal_gpio_init_output(port, init);
/* change mode */
port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AF, 2u);
/* process af type */
port->AFRL &= ~create_pattern_mask(init.pins, 0xf, 4u);
port->AFRL |= create_pattern_mask(init.pins, af_mode, 4u);
port->AFRH &= ~create_pattern_mask((init.pins >> 8), 0xf, 4u);
port->AFRH |= create_pattern_mask((init.pins >> 8), af_mode, 4u);
}
/*
* See header file
*/
uint16_t hal_gpio_input_read(reg_gpio_t *port)
{
return (uint16_t) port->IDR;
}
/*
* See header file
*/
uint16_t hal_gpio_output_read(reg_gpio_t *port)
{
return (uint16_t) port->ODR;
}
/*
* See header file
*/
void hal_gpio_output_write(reg_gpio_t *port, uint16_t port_value)
{
/* prevent overwrite false reg entry */
port_value = intercept_overwrite_register(port, port_value);
port->ODR = port_value;
}
/*
* See header file
*/
void hal_gpio_bit_set(reg_gpio_t *port, uint16_t pins)
{
/* prevent overwrite false reg entry */
pins = intercept_overwrite_register(port, pins);
/* exit if no pins to be configured */
if (pins != 0) {
port->BSRR = pins;
}
}
/*
* See header file
*/
void hal_gpio_bit_reset(reg_gpio_t *port, uint16_t pins)
{
/* prevent overwrite false reg entry */
pins = intercept_overwrite_register(port, pins);
/* exit if no pins to be configured */
if (pins != 0) {
port->BSRR = (pins << 16);
}
}
/*
* See header file
*/
void hal_gpio_bit_toggle(reg_gpio_t *port, uint16_t pins)
{
uint16_t pattern;
/* prevent overwrite false reg entry */
pins = intercept_overwrite_register(port, pins);
/* exit if no pins to be configured */
if (pins != 0) {
/* get actual value and invert */
pattern = hal_gpio_output_read(port);
pattern = ~pattern;
/* mask pins */
pattern &= pins;
port->ODR = pattern;
}
}
/*
* See header file
*/
void hal_gpio_irq_set(reg_gpio_t *port,
uint16_t pins,
hal_gpio_trg_t edge,
hal_bool_t status)
{
uint8_t syscfg_bank, nvic_bank, syscfg_shift, exti_line;
uint32_t exticr_mask;
for (exti_line = 0u; exti_line < 16u; exti_line++) {
if (pins & (0x1 << exti_line)) {
syscfg_bank = exti_line / 4u;
syscfg_shift = exti_line % 4u;
nvic_bank = (exti_line < 10u) ? 0u : 1u;
if (status == ENABLE) {
/* Trigger (rising/falling/both) */
if (edge & HAL_GPIO_TRG_POS) {
EXTI->RTSR |= (0x1 << exti_line);
}
if (edge & HAL_GPIO_TRG_NEG) {
EXTI->FTSR |= (0x1 << exti_line);
}
/* Set EXTI line to corresponding GPIO port */
exticr_mask = get_syscfg_mask(port);
if (syscfg_bank == 0u) {
SYSCFG->EXTICR1 &= ~(0xf << syscfg_shift);
SYSCFG->EXTICR1 |= (exticr_mask << syscfg_shift);
} else if (syscfg_bank == 1u) {
SYSCFG->EXTICR2 &= ~(0xf << syscfg_shift);
SYSCFG->EXTICR2 |= (exticr_mask << syscfg_shift);
} else if (syscfg_bank == 2u) {
SYSCFG->EXTICR3 &= ~(0xf << syscfg_shift);
SYSCFG->EXTICR3 |= (exticr_mask << syscfg_shift);
} else if (syscfg_bank == 3u) {
SYSCFG->EXTICR4 &= ~(0xf << syscfg_shift);
SYSCFG->EXTICR4 |= (exticr_mask << syscfg_shift);
}
/* Unmask interrupt */
EXTI->IMR |= (0x1 << exti_line);
if (nvic_bank == 0u) {
NVIC->ISER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
} else if (nvic_bank == 1u) {
NVIC->ISER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
} else if (nvic_bank == 2u) {
NVIC->ISER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
}
} else {
/* Mask interrupt */
EXTI->IMR &= ~(0x1 << exti_line);
if (nvic_bank == 0u) {
NVIC->ICER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
} else if (nvic_bank == 1u) {
NVIC->ICER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
} else if (nvic_bank == 2u) {
NVIC->ICER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
}
}
}
}
}
/*
* See header file
*/
hal_bool_t hal_gpio_irq_status(uint16_t pin)
{
hal_bool_t status = DISABLED;
if ((EXTI->IMR && pin) &&
(EXTI->PR && pin)) {
status = ENABLED;
}
return status;
}
/*
* See header file
*/
void hal_gpio_irq_clear(uint16_t pin)
{
EXTI->PR |= pin;
}
/* -- Local function definitions
* ------------------------------------------------------------------------- */
/**
* \brief Creates a pattern based on specified pins.
*
* example: pins = 1,3,4 (0x001a) / pattern = 0x2 (2 bit wide)
* ==> pattern = 0x0000'0288
*
* 0b0..0'0001'1010 / 0b10 (2 bit wide)
* ^ ^ ^
* ==> 0b0..0'00010'1000'1000
* ^^ ^^ ^^
*
* pattern_bit_width must be 2 or 4
*/
static uint32_t create_pattern_mask(uint16_t pins,
uint8_t pattern,
uint8_t pattern_bit_width)
{
const uint8_t mask_bit_width = 32u;
const uint16_t pin1_mask = 1u;
uint8_t pos, end;
uint32_t mask = 0u;
if (pattern_bit_width == 2u || pattern_bit_width == 4u) {
/* create pattern mask */
end = mask_bit_width / pattern_bit_width;
for (pos = 0; pos < end; pos++) {
if (pins & pin1_mask) {
mask |= pattern << (pos * pattern_bit_width);
}
pins >>= 1;
}
} else {
/* exit if pattern_bit_width not as needed */
mask = 0u;
}
return mask;
}
/**
* \brief This function ensures that these sensitive pins are not reconfigured.
*
* On GPIOA and GPIOB only pins 11 down to 0 are available to the user.
* Pins 15 down to 12 are used for system functions of the discovery board,
* e.g. connection of the debugger.
* These pins must not be reconfigured. Otherwise the debugger cannot be used any more.
*/
static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins){
if (port == GPIOA || port == GPIOB){
pins &= 0x0FFF;
}
return pins;
}
/**
* \brief Returns mask for configuration of SYSCFG_EXTICR register.
* \param port : Port of which the mask should be generated.
* \return Mask for specified port.
*/
static uint8_t get_syscfg_mask(reg_gpio_t *port)
{
return ((port == GPIOA) ? 0u :
(port == GPIOB) ? 1u :
(port == GPIOC) ? 2u :
(port == GPIOD) ? 3u :
(port == GPIOE) ? 4u :
(port == GPIOF) ? 5u :
(port == GPIOG) ? 6u :
(port == GPIOH) ? 7u :
(port == GPIOI) ? 8u :
(port == GPIOJ) ? 9u : 10u);
}

View File

@ -0,0 +1,132 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Implementation of module hal_pwr.
*
* The hardware abstraction layer for the power control unit.
*
* $Id$
* ------------------------------------------------------------------------- */
/* User includes */
#include "hal_pwr.h"
#include "reg_stm32f4xx.h"
/* -- Macros
* ------------------------------------------------------------------------- */
#define TIME_OUT 0x1000
#define MASK_PERIPH_PWR (1u << 28u)
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/*
* See header file
*/
void hal_pwr_reset(void)
{
/* Reset peripheral */
PWR->CR = 0x0000c000;
PWR->CSR = 0x00000000;
}
/*
* See header file
*/
hal_bool_t hal_pwr_set_backup_domain(hal_bool_t status)
{
uint16_t count = 0;
uint32_t reg = 0;
if (status == DISABLE) {
/* Disable backup domain / regulator */
PWR->CSR &= ~(1u << 9u);
return DISABLED;
}
/* Enable backup domain / regulator */
PWR->CSR |= (1u << 9u);
/* Wait till regulator is ready and if time out is reached exit */
reg = PWR->CSR & (1u << 3u);
while ((reg == 0) && (count != TIME_OUT)) {
reg = PWR->CSR & (1u << 3u);
count++;
}
/* Return */
if (reg != 0) {
return ENABLED;
}
return DISABLED;
}
/*
* See header file
*/
void hal_pwr_set_backup_access(hal_bool_t status)
{
if (status == DISABLE) {
PWR->CR &= ~(1u << 8u);
} else {
PWR->CR |= (1u << 8u);
}
}
/*
* See header file
*/
void hal_pwr_set_wakeup_pin(hal_bool_t status)
{
if (status == DISABLE) {
PWR->CSR &= ~(1u << 8u);
} else {
PWR->CSR |= (1u << 8u);
}
}
/*
* See header file
*/
void hal_pwr_set_flash_powerdown(hal_bool_t status)
{
if (status == DISABLE) {
PWR->CR &= ~(1u << 9u);
} else {
PWR->CR |= (1u << 9u);
}
}
/*
* See header file
*/
hal_bool_t hal_pwr_set_overdrive(hal_bool_t status)
{
/* Is this realy nedded ?
Extend clock to 180 MHz if HSI/HSE is used, but pll ? */
return DISABLED;
}
/*
* See header file
*/
hal_bool_t hal_pwr_set_underdrive(hal_bool_t status)
{
/* Is this realy nedded ? */
return DISABLED;
}

View File

@ -0,0 +1,347 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Implementation of module hal_rcc.
*
* The hardware abstraction layer for the reset and clock control unit.
*
* $Id$
* ------------------------------------------------------------------------- */
/* User includes */
#include "hal_rcc.h"
#include "reg_stm32f4xx.h"
/* -- Macros
* ------------------------------------------------------------------------- */
#define TIME_OUT 0x5000
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/*
* See header file
*/
void hal_rcc_reset(void)
{
/* Set RCC->CR to default values */
RCC->CR |= 0x00000001; // Set HSION bit first -> keep cpu running
RCC->CR &= 0xeaf6ffff; // Reset HSEON, CSSON, PLLON, PLLI2S,
// PLLSAI bits (STM32F42xx/43xx)
RCC->CR &= 0xfffbffff; // Reset HSEBYP bit
/* Reset RCC->CFGR to default values */
RCC->CFGR = 0u;
/* Reset RCC->PLLxCFGR to default values */
RCC->PLLCFGR = 0x24003010;
RCC->PLLI2SCFGR = 0x20003000;
RCC->PLLSAICFGR = 0x24003000; // only STM32F42xx/43xx)
/* Disable all interrupts */
RCC->CIR = 0u;
/* Disable all peripherals */
RCC->AHB1RSTR = 0u;
RCC->AHB2RSTR = 0u;
RCC->AHB3RSTR = 0u;
RCC->APB1RSTR = 0u;
RCC->APB2RSTR = 0u;
RCC->AHB1ENR = 0x00100000;
RCC->AHB2ENR = 0u;
RCC->AHB3ENR = 0u;
RCC->APB1ENR = 0u;
RCC->APB2ENR = 0u;
RCC->AHB1LPENR = 0x7e6791ff;
RCC->AHB2LPENR = 0x000000f1;
RCC->AHB3LPENR = 0x00000001;
RCC->APB1LPENR = 0x36fec9ff;
RCC->APB2LPENR = 0x00075f33;
/* Reset forgotten registers */
RCC->BDCR = 0u;
RCC->CSR = 0x0e000000;
RCC->SSCGR = 0u;
RCC->DCKCFGR = 0u;
}
/*
* See header file
*/
void hal_rcc_set_peripheral(hal_peripheral_t peripheral, hal_bool_t status)
{
volatile uint32_t *reg;
uint32_t bit_pos;
/* Select correct enable register */
switch (peripheral) {
/* AHB1 */
case PER_GPIOA:
bit_pos = 0u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOB:
bit_pos = 1u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOC:
bit_pos = 2u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOD:
bit_pos = 3u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOE:
bit_pos = 4u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOF:
bit_pos = 5u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOG:
bit_pos = 6u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOH:
bit_pos = 7u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOI:
bit_pos = 8u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOJ:
bit_pos = 9u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOK:
bit_pos = 10u;
reg = &RCC->AHB1ENR;
break;
case PER_DMA1:
bit_pos = 21u;
reg = &RCC->AHB1ENR;
break;
case PER_DMA2:
bit_pos = 22u;
reg = &RCC->AHB1ENR;
break;
/* AHB3 */
case PER_FMC:
bit_pos = 0u;
reg = &RCC->AHB3ENR;
break;
/* APB1 */
case PER_DAC:
bit_pos = 29u;
reg = &RCC->APB1ENR;
break;
case PER_PWR:
bit_pos = 28u;
reg = &RCC->APB1ENR;
break;
case PER_TIM2:
bit_pos = 0u;
reg = &RCC->APB1ENR;
break;
case PER_TIM3:
bit_pos = 1u;
reg = &RCC->APB1ENR;
break;
case PER_TIM4:
bit_pos = 2u;
reg = &RCC->APB1ENR;
break;
case PER_TIM5:
bit_pos = 3u;
reg = &RCC->APB1ENR;
break;
/* APB2 */
case PER_ADC1:
bit_pos = 8u;
reg = &RCC->APB2ENR;
break;
case PER_ADC2:
bit_pos = 9u;
reg = &RCC->APB2ENR;
break;
case PER_ADC3:
bit_pos = 10u;
reg = &RCC->APB2ENR;
break;
default:
return;
}
if (status == DISABLE) {
*reg &= ~(1u << bit_pos);
} else {
*reg |= (1u << bit_pos);
}
}
/*
* See header file
*/
hal_bool_t hal_rcc_set_osc(hal_rcc_osc_t source, hal_bool_t status)
{
uint32_t reg = 0;
uint32_t count = 0;
/* Disable source */
if (status == DISABLE) {
RCC->CR &= ~(1u << source);
return DISABLED;
}
/* If pll, check if source is ok */
if (source == HAL_RCC_OSC_PLL ||
source == HAL_RCC_OSC_PLLI2S ||
source == HAL_RCC_OSC_PLLSAI)
{
reg = RCC->CR;
/* HSE */
if (RCC->PLLCFGR & ~(1u << 22u)) {
reg &= (1u << (HAL_RCC_OSC_HSE + 1u));
}
/* HSI */
else {
reg &= (1u << (HAL_RCC_OSC_HSI + 1u));
}
/* Return if source is not ok */
if (!reg) {
return DISABLED;
}
}
/* Enable source */
RCC->CR |= (1u << source);
/* Wait till source is ready and if time out is reached exit */
reg = RCC->CR & (1u << (source + 1u));
while ((reg == 0) && (count != TIME_OUT)) {
reg = RCC->CR & (1u << (source + 1u));
count++;
}
/* Return */
if (reg != 0) {
return ENABLED;
}
return DISABLED;
}
/*
* See header file
*/
void hal_rcc_setup_pll(hal_rcc_osc_t pll, hal_rcc_pll_init_t init)
{
/* Input check */
if (init.m_divider < 2u) init.m_divider = 2u;
if (init.n_factor < 2u) init.n_factor = 2u;
if (init.n_factor > 432u) init.n_factor = 432u;
if (init.p_divider > 8u) init.p_divider = 8u;
if (init.q_divider < 2u) init.q_divider = 2u;
init.r_divider &= 0x07;
/* Set source or return if invalid */
if (init.source == HAL_RCC_OSC_HSI) {
RCC->PLLCFGR &= ~(1u << 22u);
} else if (init.source == HAL_RCC_OSC_HSE) {
RCC->PLLCFGR |= (1u << 22u);
} else {
return;
}
/* Set pll preescaler */
RCC->PLLCFGR &= ~(0x3f);
RCC->PLLCFGR |= init.m_divider;
/* Configure pll */
switch (pll) {
case HAL_RCC_OSC_PLL:
RCC->PLLCFGR &= ~0x0f037fc0;
RCC->PLLCFGR |= (init.n_factor << 6u);
RCC->PLLCFGR |= (((init.p_divider - 1) >> 1u) << 16u);
RCC->PLLCFGR |= (init.q_divider << 24u);
break;
case HAL_RCC_OSC_PLLI2S:
RCC->PLLI2SCFGR &= ~0x7f007fc0;
RCC->PLLI2SCFGR |= (init.n_factor << 6u);
RCC->PLLI2SCFGR |= (init.q_divider << 24u);
RCC->PLLI2SCFGR |= (init.r_divider << 28u);
break;
/* case HAL_RCC_OSC_PLLSAI:
RCC->PLLSAICFGR &= ~0x7f007fc0;
RCC->PLLSAICFGR |= (init.n_factor << 6u);
RCC->PLLSAICFGR |= (init.q_divider << 24u);
RCC->PLLSAICFGR |= (init.r_divider << 28u);
break;
*/
default:
break;
}
}
/*
* See header file
*/
void hal_rcc_setup_clock(hal_rcc_clk_init_t init)
{
uint32_t reg = 0;
/* Configure clock divider */
RCC->CFGR &= ~0x0000fcf0;
RCC->CFGR |= (init.hpre << 4u);
RCC->CFGR |= (init.ppre1 << 10u);
RCC->CFGR |= (init.ppre2 << 13u);
/* Select system clock source */
RCC->CFGR &= ~0x00000003;
switch (init.osc) {
default:
case HAL_RCC_OSC_HSI:
reg = 0u;
break;
case HAL_RCC_OSC_HSE:
reg = 1u;
break;
case HAL_RCC_OSC_PLL:
reg = 2u;
break;
}
RCC->CFGR |= reg;
#ifndef TESTING
/* Wait till system clock is selected */
while ((RCC->CFGR & 0x0000000c) != (reg << 2u));
#endif
}

View File

@ -0,0 +1,143 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Implementation of module hal_fmc.
*
* The hardware abstraction layer for the memory controller.
*
* $Id$
* ------------------------------------------------------------------------- */
/* User includes */
#include "hal_fmc.h"
#include "reg_stm32f4xx.h"
/* -- Macros
* ------------------------------------------------------------------------- */
#define MASK_PERIPH_FMC (0x00000001)
#define MASK_SRAM_ENABLE (0x00000001)
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/*
* See header file
*/
void hal_fmc_reset(hal_fmc_bank_t bank)
{
switch (bank) {
default:
case HAL_FMC_SRAM_BANK1:
FMC->SRAM.BCR1 = 0x000030db;
FMC->SRAM.BTR1 = 0x0fffffff;
break;
case HAL_FMC_SRAM_BANK2:
FMC->SRAM.BCR2 = 0x000030d2;
FMC->SRAM.BTR2 = 0x0fffffff;
break;
case HAL_FMC_SRAM_BANK3:
FMC->SRAM.BCR3 = 0x000030d2;
FMC->SRAM.BTR3 = 0x0fffffff;
break;
case HAL_FMC_SRAM_BANK4:
FMC->SRAM.BCR4 = 0x000030d2;
FMC->SRAM.BTR4 = 0x0fffffff;
break;
}
}
/*
* See header file
*/
void hal_fmc_init_sram(hal_fmc_bank_t bank,
hal_fmc_sram_init_t init,
hal_fmc_sram_timing_t timing)
{
uint32_t reg_cr = 0, reg_tr = 0;
/* Input check */
timing.address_setup &= 0xf;
timing.address_hold &= 0xf;
if (timing.address_hold < 1u) timing.address_hold = 1u;
timing.data_setup &= 0xff;
if (timing.data_setup < 1u) timing.data_setup = 1u;
timing.bus_turnaround &= 0xf;
/* Input check clock divider (2..16) */
if (timing.clk_divider > 16u) timing.clk_divider = 16u;
if (timing.clk_divider < 2u) timing.clk_divider = 2u;
timing.clk_divider -= 1u; // 0b0001 -> clk / 2
/* Input check data latency (2..17) */
if (timing.data_latency > 17u) timing.data_latency = 17u;
if (timing.data_latency < 2u) timing.data_latency = 2u;
timing.data_latency -= 2u; // 0b0000 -> latency = 2
/* Process boolean parameter */
if (init.address_mux == ENABLE) reg_cr |= (1u << 1u);
if (init.read_burst == ENABLE) reg_cr |= (1u << 8u);
if (init.write_enable == ENABLE) reg_cr |= (1u << 12u);
if (init.write_burst == ENABLE) reg_cr |= (1u << 19u);
if (init.continous_clock == ENABLE) reg_cr |= (1u << 20u);
/* Process non boolean parameter */
reg_cr |= (init.type << 2u);
reg_cr |= (init.width << 4u);
/* Process timing for async. SRAM */
if (init.type == HAL_FMC_TYPE_SRAM) {
reg_tr |= (timing.address_setup << 0u);
reg_tr |= (timing.address_hold << 4u);
reg_tr |= (timing.data_setup << 8u);
reg_tr |= (timing.mode << 28u);
}
/* Process timing for sync. PSRAM */
else if (init.type == HAL_FMC_TYPE_PSRAM) {
reg_tr |= (timing.clk_divider << 20u);
reg_tr |= (timing.data_latency << 24u);
}
/* Process bus turnaround time */
reg_tr |= (timing.bus_turnaround << 16u);
/* Write register */
switch (bank) {
default:
case HAL_FMC_SRAM_BANK1:
FMC->SRAM.BCR1 = reg_cr;
FMC->SRAM.BTR1 = reg_tr;
FMC->SRAM.BCR1 |= MASK_SRAM_ENABLE;
break;
case HAL_FMC_SRAM_BANK2:
FMC->SRAM.BCR2 = reg_cr;
FMC->SRAM.BTR2 = reg_tr;
FMC->SRAM.BCR2 |= MASK_SRAM_ENABLE;
break;
case HAL_FMC_SRAM_BANK3:
FMC->SRAM.BCR3 = reg_cr;
FMC->SRAM.BTR3 = reg_tr;
FMC->SRAM.BCR3 |= MASK_SRAM_ENABLE;
break;
case HAL_FMC_SRAM_BANK4:
FMC->SRAM.BCR4 = reg_cr;
FMC->SRAM.BTR4 = reg_tr;
FMC->SRAM.BCR4 |= MASK_SRAM_ENABLE;
break;
}
}

View File

@ -0,0 +1,412 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Implementation of module hal_gpio.
*
* The hardware abstraction layer for the GPIO periphery.
*
* $Id$
* ------------------------------------------------------------------------- */
/* User includes */
#include "hal_gpio.h"
/* -- Macros
* ------------------------------------------------------------------------- */
#define NVIC_OFFSET_1_4 ( 6u)
#define NVIC_OFFSET_5_9 (23u)
#define NVIC_OFFSET_10_15 ( 8u)
/* -- Local function declarations
* ------------------------------------------------------------------------- */
static uint32_t create_pattern_mask(uint16_t pins,
uint8_t pattern,
uint8_t pattern_bit_width);
static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins);
static uint8_t get_syscfg_mask(reg_gpio_t *port);
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/*
* See header file
*/
void hal_gpio_reset(reg_gpio_t *port)
{
if(port == GPIOA) {
/* Reset GPIOA specific values */
port->MODER = 0xa8000000;
port->OSPEEDR = 0x00000000;
port->PUPDR = 0x64000000;
}
else if (port == GPIOB) {
/* Reset GPIOB specific values */
port->MODER = 0x00000280;
port->OSPEEDR = 0x000000c0;
port->PUPDR = 0x00000100;
} else {
/* Reset other GPIO */
port->MODER = 0x00000000;
port->OSPEEDR = 0x00000000;
port->PUPDR = 0x00000000;
}
port->OTYPER = 0x00000000;
port->AFRL = 0x00000000;
port->AFRH = 0x00000000;
port->ODR = 0x00000000;
}
/*
* See header file
*/
void hal_gpio_init_input(reg_gpio_t *port, hal_gpio_input_t init)
{
/* prevent overwrite false reg entry */
init.pins = intercept_overwrite_register(port, init.pins);
/* process mode */
port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_IN, 2u);
/* process pull up/down resitors */
port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u);
}
/*
* See header file
*/
void hal_gpio_init_analog(reg_gpio_t *port, hal_gpio_input_t init)
{
/* treat like input */
hal_gpio_init_input(port, init);
/* change mode */
port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AN, 2u);
}
/*
* See header file
*/
void hal_gpio_init_output(reg_gpio_t *port, hal_gpio_output_t init)
{
/* prevent overwrite false reg entry */
init.pins = intercept_overwrite_register(port, init.pins);
/* process mode */
port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_OUT, 2u);
/* process pull up/down resitors */
port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u);
/* process port speed */
port->OSPEEDR &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->OSPEEDR |= create_pattern_mask(init.pins, init.out_speed, 2u);
/* process output typ */
port->OTYPER &= ~init.pins;
if(init.out_type == HAL_GPIO_OUT_TYPE_OD){
port->OTYPER |= init.pins;
}
}
/*
* See header file
*/
void hal_gpio_init_alternate(reg_gpio_t *port,
hal_gpio_af_t af_mode,
hal_gpio_output_t init)
{
/* treat like output */
hal_gpio_init_output(port, init);
/* change mode */
port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u);
port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AF, 2u);
/* process af type */
port->AFRL &= ~create_pattern_mask(init.pins, 0xf, 4u);
port->AFRL |= create_pattern_mask(init.pins, af_mode, 4u);
port->AFRH &= ~create_pattern_mask((init.pins >> 8), 0xf, 4u);
port->AFRH |= create_pattern_mask((init.pins >> 8), af_mode, 4u);
}
/*
* See header file
*/
uint16_t hal_gpio_input_read(reg_gpio_t *port)
{
return (uint16_t) port->IDR;
}
/*
* See header file
*/
uint16_t hal_gpio_output_read(reg_gpio_t *port)
{
return (uint16_t) port->ODR;
}
/*
* See header file
*/
void hal_gpio_output_write(reg_gpio_t *port, uint16_t port_value)
{
/* prevent overwrite false reg entry */
port_value = intercept_overwrite_register(port, port_value);
port->ODR = port_value;
}
/*
* See header file
*/
void hal_gpio_bit_set(reg_gpio_t *port, uint16_t pins)
{
/* prevent overwrite false reg entry */
pins = intercept_overwrite_register(port, pins);
/* exit if no pins to be configured */
if (pins != 0) {
port->BSRR = pins;
}
}
/*
* See header file
*/
void hal_gpio_bit_reset(reg_gpio_t *port, uint16_t pins)
{
/* prevent overwrite false reg entry */
pins = intercept_overwrite_register(port, pins);
/* exit if no pins to be configured */
if (pins != 0) {
port->BSRR = (pins << 16);
}
}
/*
* See header file
*/
void hal_gpio_bit_toggle(reg_gpio_t *port, uint16_t pins)
{
uint16_t pattern;
/* prevent overwrite false reg entry */
pins = intercept_overwrite_register(port, pins);
/* exit if no pins to be configured */
if (pins != 0) {
/* get actual value and invert */
pattern = hal_gpio_output_read(port);
pattern = ~pattern;
/* mask pins */
pattern &= pins;
port->ODR = pattern;
}
}
/*
* See header file
*/
void hal_gpio_irq_set(reg_gpio_t *port,
uint16_t pins,
hal_gpio_trg_t edge,
hal_bool_t status)
{
uint8_t syscfg_bank, nvic_bank, syscfg_shift, exti_line;
uint32_t exticr_mask;
for (exti_line = 0u; exti_line < 16u; exti_line++) {
if (pins & (0x1 << exti_line)) {
syscfg_bank = exti_line / 4u;
syscfg_shift = exti_line % 4u;
nvic_bank = (exti_line < 10u) ? 0u : 1u;
if (status == ENABLE) {
/* Trigger (rising/falling/both) */
if (edge & HAL_GPIO_TRG_POS) {
EXTI->RTSR |= (0x1 << exti_line);
}
if (edge & HAL_GPIO_TRG_NEG) {
EXTI->FTSR |= (0x1 << exti_line);
}
/* Set EXTI line to corresponding GPIO port */
exticr_mask = get_syscfg_mask(port);
if (syscfg_bank == 0u) {
SYSCFG->EXTICR1 &= ~(0xf << syscfg_shift);
SYSCFG->EXTICR1 |= (exticr_mask << syscfg_shift);
} else if (syscfg_bank == 1u) {
SYSCFG->EXTICR2 &= ~(0xf << syscfg_shift);
SYSCFG->EXTICR2 |= (exticr_mask << syscfg_shift);
} else if (syscfg_bank == 2u) {
SYSCFG->EXTICR3 &= ~(0xf << syscfg_shift);
SYSCFG->EXTICR3 |= (exticr_mask << syscfg_shift);
} else if (syscfg_bank == 3u) {
SYSCFG->EXTICR4 &= ~(0xf << syscfg_shift);
SYSCFG->EXTICR4 |= (exticr_mask << syscfg_shift);
}
/* Unmask interrupt */
EXTI->IMR |= (0x1 << exti_line);
if (nvic_bank == 0u) {
NVIC->ISER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
} else if (nvic_bank == 1u) {
NVIC->ISER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
} else if (nvic_bank == 2u) {
NVIC->ISER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
}
} else {
/* Mask interrupt */
EXTI->IMR &= ~(0x1 << exti_line);
if (nvic_bank == 0u) {
NVIC->ICER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
} else if (nvic_bank == 1u) {
NVIC->ICER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
} else if (nvic_bank == 2u) {
NVIC->ICER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) :
(exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15);
}
}
}
}
}
/*
* See header file
*/
hal_bool_t hal_gpio_irq_status(uint16_t pin)
{
hal_bool_t status = DISABLED;
if ((EXTI->IMR && pin) &&
(EXTI->PR && pin)) {
status = ENABLED;
}
return status;
}
/*
* See header file
*/
void hal_gpio_irq_clear(uint16_t pin)
{
EXTI->PR |= pin;
}
/* -- Local function definitions
* ------------------------------------------------------------------------- */
/**
* \brief Creates a pattern based on specified pins.
*
* example: pins = 1,3,4 (0x001a) / pattern = 0x2 (2 bit wide)
* ==> pattern = 0x0000'0288
*
* 0b0..0'0001'1010 / 0b10 (2 bit wide)
* ^ ^ ^
* ==> 0b0..0'00010'1000'1000
* ^^ ^^ ^^
*
* pattern_bit_width must be 2 or 4
*/
static uint32_t create_pattern_mask(uint16_t pins,
uint8_t pattern,
uint8_t pattern_bit_width)
{
const uint8_t mask_bit_width = 32u;
const uint16_t pin1_mask = 1u;
uint8_t pos, end;
uint32_t mask = 0u;
if (pattern_bit_width == 2u || pattern_bit_width == 4u) {
/* create pattern mask */
end = mask_bit_width / pattern_bit_width;
for (pos = 0; pos < end; pos++) {
if (pins & pin1_mask) {
mask |= pattern << (pos * pattern_bit_width);
}
pins >>= 1;
}
} else {
/* exit if pattern_bit_width not as needed */
mask = 0u;
}
return mask;
}
/**
* \brief This function ensures that these sensitive pins are not reconfigured.
*
* On GPIOA and GPIOB only pins 11 down to 0 are available to the user.
* Pins 15 down to 12 are used for system functions of the discovery board,
* e.g. connection of the debugger.
* These pins must not be reconfigured. Otherwise the debugger cannot be used any more.
*/
static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins){
if (port == GPIOA || port == GPIOB){
pins &= 0x0FFF;
}
return pins;
}
/**
* \brief Returns mask for configuration of SYSCFG_EXTICR register.
* \param port : Port of which the mask should be generated.
* \return Mask for specified port.
*/
static uint8_t get_syscfg_mask(reg_gpio_t *port)
{
return ((port == GPIOA) ? 0u :
(port == GPIOB) ? 1u :
(port == GPIOC) ? 2u :
(port == GPIOD) ? 3u :
(port == GPIOE) ? 4u :
(port == GPIOF) ? 5u :
(port == GPIOG) ? 6u :
(port == GPIOH) ? 7u :
(port == GPIOI) ? 8u :
(port == GPIOJ) ? 9u : 10u);
}

View File

@ -0,0 +1,132 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Implementation of module hal_pwr.
*
* The hardware abstraction layer for the power control unit.
*
* $Id$
* ------------------------------------------------------------------------- */
/* User includes */
#include "hal_pwr.h"
#include "reg_stm32f4xx.h"
/* -- Macros
* ------------------------------------------------------------------------- */
#define TIME_OUT 0x1000
#define MASK_PERIPH_PWR (1u << 28u)
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/*
* See header file
*/
void hal_pwr_reset(void)
{
/* Reset peripheral */
PWR->CR = 0x0000c000;
PWR->CSR = 0x00000000;
}
/*
* See header file
*/
hal_bool_t hal_pwr_set_backup_domain(hal_bool_t status)
{
uint16_t count = 0;
uint32_t reg = 0;
if (status == DISABLE) {
/* Disable backup domain / regulator */
PWR->CSR &= ~(1u << 9u);
return DISABLED;
}
/* Enable backup domain / regulator */
PWR->CSR |= (1u << 9u);
/* Wait till regulator is ready and if time out is reached exit */
reg = PWR->CSR & (1u << 3u);
while ((reg == 0) && (count != TIME_OUT)) {
reg = PWR->CSR & (1u << 3u);
count++;
}
/* Return */
if (reg != 0) {
return ENABLED;
}
return DISABLED;
}
/*
* See header file
*/
void hal_pwr_set_backup_access(hal_bool_t status)
{
if (status == DISABLE) {
PWR->CR &= ~(1u << 8u);
} else {
PWR->CR |= (1u << 8u);
}
}
/*
* See header file
*/
void hal_pwr_set_wakeup_pin(hal_bool_t status)
{
if (status == DISABLE) {
PWR->CSR &= ~(1u << 8u);
} else {
PWR->CSR |= (1u << 8u);
}
}
/*
* See header file
*/
void hal_pwr_set_flash_powerdown(hal_bool_t status)
{
if (status == DISABLE) {
PWR->CR &= ~(1u << 9u);
} else {
PWR->CR |= (1u << 9u);
}
}
/*
* See header file
*/
hal_bool_t hal_pwr_set_overdrive(hal_bool_t status)
{
/* Is this realy nedded ?
Extend clock to 180 MHz if HSI/HSE is used, but pll ? */
return DISABLED;
}
/*
* See header file
*/
hal_bool_t hal_pwr_set_underdrive(hal_bool_t status)
{
/* Is this realy nedded ? */
return DISABLED;
}

View File

@ -0,0 +1,347 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ------------------------------------------------------------------------- */
/**
* \brief Implementation of module hal_rcc.
*
* The hardware abstraction layer for the reset and clock control unit.
*
* $Id$
* ------------------------------------------------------------------------- */
/* User includes */
#include "hal_rcc.h"
#include "reg_stm32f4xx.h"
/* -- Macros
* ------------------------------------------------------------------------- */
#define TIME_OUT 0x5000
/* -- Public function definitions
* ------------------------------------------------------------------------- */
/*
* See header file
*/
void hal_rcc_reset(void)
{
/* Set RCC->CR to default values */
RCC->CR |= 0x00000001; // Set HSION bit first -> keep cpu running
RCC->CR &= 0xeaf6ffff; // Reset HSEON, CSSON, PLLON, PLLI2S,
// PLLSAI bits (STM32F42xx/43xx)
RCC->CR &= 0xfffbffff; // Reset HSEBYP bit
/* Reset RCC->CFGR to default values */
RCC->CFGR = 0u;
/* Reset RCC->PLLxCFGR to default values */
RCC->PLLCFGR = 0x24003010;
RCC->PLLI2SCFGR = 0x20003000;
RCC->PLLSAICFGR = 0x24003000; // only STM32F42xx/43xx)
/* Disable all interrupts */
RCC->CIR = 0u;
/* Disable all peripherals */
RCC->AHB1RSTR = 0u;
RCC->AHB2RSTR = 0u;
RCC->AHB3RSTR = 0u;
RCC->APB1RSTR = 0u;
RCC->APB2RSTR = 0u;
RCC->AHB1ENR = 0x00100000;
RCC->AHB2ENR = 0u;
RCC->AHB3ENR = 0u;
RCC->APB1ENR = 0u;
RCC->APB2ENR = 0u;
RCC->AHB1LPENR = 0x7e6791ff;
RCC->AHB2LPENR = 0x000000f1;
RCC->AHB3LPENR = 0x00000001;
RCC->APB1LPENR = 0x36fec9ff;
RCC->APB2LPENR = 0x00075f33;
/* Reset forgotten registers */
RCC->BDCR = 0u;
RCC->CSR = 0x0e000000;
RCC->SSCGR = 0u;
RCC->DCKCFGR = 0u;
}
/*
* See header file
*/
void hal_rcc_set_peripheral(hal_peripheral_t peripheral, hal_bool_t status)
{
volatile uint32_t *reg;
uint32_t bit_pos;
/* Select correct enable register */
switch (peripheral) {
/* AHB1 */
case PER_GPIOA:
bit_pos = 0u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOB:
bit_pos = 1u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOC:
bit_pos = 2u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOD:
bit_pos = 3u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOE:
bit_pos = 4u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOF:
bit_pos = 5u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOG:
bit_pos = 6u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOH:
bit_pos = 7u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOI:
bit_pos = 8u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOJ:
bit_pos = 9u;
reg = &RCC->AHB1ENR;
break;
case PER_GPIOK:
bit_pos = 10u;
reg = &RCC->AHB1ENR;
break;
case PER_DMA1:
bit_pos = 21u;
reg = &RCC->AHB1ENR;
break;
case PER_DMA2:
bit_pos = 22u;
reg = &RCC->AHB1ENR;
break;
/* AHB3 */
case PER_FMC:
bit_pos = 0u;
reg = &RCC->AHB3ENR;
break;
/* APB1 */
case PER_DAC:
bit_pos = 29u;
reg = &RCC->APB1ENR;
break;
case PER_PWR:
bit_pos = 28u;
reg = &RCC->APB1ENR;
break;
case PER_TIM2:
bit_pos = 0u;
reg = &RCC->APB1ENR;
break;
case PER_TIM3:
bit_pos = 1u;
reg = &RCC->APB1ENR;
break;
case PER_TIM4:
bit_pos = 2u;
reg = &RCC->APB1ENR;
break;
case PER_TIM5:
bit_pos = 3u;
reg = &RCC->APB1ENR;
break;
/* APB2 */
case PER_ADC1:
bit_pos = 8u;
reg = &RCC->APB2ENR;
break;
case PER_ADC2:
bit_pos = 9u;
reg = &RCC->APB2ENR;
break;
case PER_ADC3:
bit_pos = 10u;
reg = &RCC->APB2ENR;
break;
default:
return;
}
if (status == DISABLE) {
*reg &= ~(1u << bit_pos);
} else {
*reg |= (1u << bit_pos);
}
}
/*
* See header file
*/
hal_bool_t hal_rcc_set_osc(hal_rcc_osc_t source, hal_bool_t status)
{
uint32_t reg = 0;
uint32_t count = 0;
/* Disable source */
if (status == DISABLE) {
RCC->CR &= ~(1u << source);
return DISABLED;
}
/* If pll, check if source is ok */
if (source == HAL_RCC_OSC_PLL ||
source == HAL_RCC_OSC_PLLI2S ||
source == HAL_RCC_OSC_PLLSAI)
{
reg = RCC->CR;
/* HSE */
if (RCC->PLLCFGR & ~(1u << 22u)) {
reg &= (1u << (HAL_RCC_OSC_HSE + 1u));
}
/* HSI */
else {
reg &= (1u << (HAL_RCC_OSC_HSI + 1u));
}
/* Return if source is not ok */
if (!reg) {
return DISABLED;
}
}
/* Enable source */
RCC->CR |= (1u << source);
/* Wait till source is ready and if time out is reached exit */
reg = RCC->CR & (1u << (source + 1u));
while ((reg == 0) && (count != TIME_OUT)) {
reg = RCC->CR & (1u << (source + 1u));
count++;
}
/* Return */
if (reg != 0) {
return ENABLED;
}
return DISABLED;
}
/*
* See header file
*/
void hal_rcc_setup_pll(hal_rcc_osc_t pll, hal_rcc_pll_init_t init)
{
/* Input check */
if (init.m_divider < 2u) init.m_divider = 2u;
if (init.n_factor < 2u) init.n_factor = 2u;
if (init.n_factor > 432u) init.n_factor = 432u;
if (init.p_divider > 8u) init.p_divider = 8u;
if (init.q_divider < 2u) init.q_divider = 2u;
init.r_divider &= 0x07;
/* Set source or return if invalid */
if (init.source == HAL_RCC_OSC_HSI) {
RCC->PLLCFGR &= ~(1u << 22u);
} else if (init.source == HAL_RCC_OSC_HSE) {
RCC->PLLCFGR |= (1u << 22u);
} else {
return;
}
/* Set pll preescaler */
RCC->PLLCFGR &= ~(0x3f);
RCC->PLLCFGR |= init.m_divider;
/* Configure pll */
switch (pll) {
case HAL_RCC_OSC_PLL:
RCC->PLLCFGR &= ~0x0f037fc0;
RCC->PLLCFGR |= (init.n_factor << 6u);
RCC->PLLCFGR |= (((init.p_divider - 1) >> 1u) << 16u);
RCC->PLLCFGR |= (init.q_divider << 24u);
break;
case HAL_RCC_OSC_PLLI2S:
RCC->PLLI2SCFGR &= ~0x7f007fc0;
RCC->PLLI2SCFGR |= (init.n_factor << 6u);
RCC->PLLI2SCFGR |= (init.q_divider << 24u);
RCC->PLLI2SCFGR |= (init.r_divider << 28u);
break;
/* case HAL_RCC_OSC_PLLSAI:
RCC->PLLSAICFGR &= ~0x7f007fc0;
RCC->PLLSAICFGR |= (init.n_factor << 6u);
RCC->PLLSAICFGR |= (init.q_divider << 24u);
RCC->PLLSAICFGR |= (init.r_divider << 28u);
break;
*/
default:
break;
}
}
/*
* See header file
*/
void hal_rcc_setup_clock(hal_rcc_clk_init_t init)
{
uint32_t reg = 0;
/* Configure clock divider */
RCC->CFGR &= ~0x0000fcf0;
RCC->CFGR |= (init.hpre << 4u);
RCC->CFGR |= (init.ppre1 << 10u);
RCC->CFGR |= (init.ppre2 << 13u);
/* Select system clock source */
RCC->CFGR &= ~0x00000003;
switch (init.osc) {
default:
case HAL_RCC_OSC_HSI:
reg = 0u;
break;
case HAL_RCC_OSC_HSE:
reg = 1u;
break;
case HAL_RCC_OSC_PLL:
reg = 2u;
break;
}
RCC->CFGR |= reg;
#ifndef TESTING
/* Wait till system clock is selected */
while ((RCC->CFGR & 0x0000000c) != (reg << 2u));
#endif
}

View File

@ -0,0 +1,15 @@
/*
* Auto generated Run-Time-Environment Configuration File
* *** Do not modify ! ***
*
* Project: 'CT-Lab1-Project'
* Target: 'Target 1'
*/
#ifndef RTE_COMPONENTS_H
#define RTE_COMPONENTS_H
#endif /* RTE_COMPONENTS_H */

View File

@ -0,0 +1,97 @@
#include "utils_ctboard.h"
uint8_t getData7Segment(uint8_t digit);
uint16_t getData7SegmentTwoDigits(uint8_t digit);
int main(void) {
/* initializations go here */
uint8_t rotationSwitchData;
while (1) {
/*Connect LEDs to Switchs */
write_word(0x60000100, read_word(0x60000200));
/*Connect Rotation Switch to 7 Segment */
rotationSwitchData = read_byte(0x60000211) & 0x0F;
/*write_word(0x60000110, getData7Segment(rotationSwitchData) | 0xFFFF0000); */
write_byte(0x60000110, getData7Segment(rotationSwitchData));
}
}
uint8_t getData7Segment(uint8_t digit) {
switch(digit) {
case 0x0:
return 0xC0;
case 0x1:
return 0xF9;
case 0x2:
return 0xA4;
case 0x3:
return 0xB0;
case 0x4:
return 0x99;
case 0x5:
return 0x92;
case 0x6:
return 0x82;
case 0x7:
return 0xF8;
case 0x8:
return 0x80;
case 0x9:
return 0x90;
case 0xA:
return 0x88;
case 0xB:
return 0x83;
case 0xC:
return 0xC6;
case 0xD:
return 0xA1;
case 0xE:
return 0x86;
case 0xF:
return 0x8E;
default:
return 0xFF;
}
}
uint16_t getData7SegmentTwoDigits(uint8_t digit) {
switch(digit) {
case 0x0:
return 0xFFC0;
case 0x1:
return 0xFFF9;
case 0x2:
return 0xFFA4;
case 0x3:
return 0xFFB0;
case 0x4:
return 0xFF99;
case 0x5:
return 0xFF92;
case 0x6:
return 0xFF82;
case 0x7:
return 0xFFF8;
case 0x8:
return 0xFF80;
case 0x9:
return 0xFF90;
case 0xA:
return 0xF9C0;
case 0xB:
return 0xF9F9;
case 0xC:
return 0xF9A4;
case 0xD:
return 0xF9B0;
case 0xE:
return 0xF999;
case 0xF:
return 0xF992;
default:
return 0xFFFF;
}
}

View File

@ -0,0 +1,103 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ----------------------------------------------------------------------------
* --
* -- Project : CT Board - Cortex M4
* -- Description : Utilities for ct board.
* --
* -- $Id: utils_ctboard.c 2160 2015-06-08 12:28:00Z feur $
* ------------------------------------------------------------------------- */
#include <stdint.h>
#include "utils_ctboard.h"
/* ----------------------------------------------------------------------------
* -- Functions
* ----------------------------------------------------------------------------
*/
/*
* See header file
*/
uint8_t read_byte(uint32_t address)
{
uint8_t *pointer;
pointer = (uint8_t *)address;
return *pointer;
}
/*
* See header file
*/
uint16_t read_halfword(uint32_t address)
{
uint16_t *pointer;
pointer = (uint16_t *)address;
return *pointer;
}
/*
* See header file
*/
uint32_t read_word(uint32_t address)
{
uint32_t *pointer;
pointer = (uint32_t *)address;
return *pointer;
}
/*
* See header file
*/
uint64_t read_doubleword(uint32_t address)
{
uint64_t *pointer;
pointer = (uint64_t *)address;
return *pointer;
}
/*
* See header file
*/
void write_byte(uint32_t address, uint8_t data)
{
uint8_t *pointer;
pointer = (uint8_t *)address;
*pointer = data;
}
/*
* See header file
*/
void write_halfword(uint32_t address, uint16_t data)
{
uint16_t *pointer;
pointer = (uint16_t *)address;
*pointer = data;
}
/*
* See header file
*/
void write_word(uint32_t address, uint32_t data)
{
uint32_t *pointer;
pointer = (uint32_t *)address;
*pointer = data;
}
/*
* See header file
*/
void write_doubleword(uint32_t address, uint64_t data)
{
uint64_t *pointer;
pointer = (uint64_t *)address;
*pointer = data;
}

View File

@ -0,0 +1,52 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ----------------------------------------------------------------------------
* --
* -- Module : ctboard_utils
* -- Description : Interface for module.
* --
* -- $Id: utils_ctboard.h 1122 2015-01-06 13:57:04Z feur $
* ------------------------------------------------------------------------- */
#ifndef _UTILS_CTBOARD
#define _UTILS_CTBOARD
#include <stdint.h>
/* ----------------------------------------------------------------------------
* -- Function prototypes
* ----------------------------------------------------------------------------
*/
/*
* Functions to read either a byte, halfword, word or
* doubleword from an arbitrary address.
* @param address: address to read from (32 bit)
* @retval data @ address
*/
uint8_t read_byte(uint32_t address);
uint16_t read_halfword(uint32_t address);
uint32_t read_word(uint32_t address);
uint64_t read_doubleword(uint32_t address);
/*
* Functions to write either a byte, halfword, word or
* doubleword to an arbitrary address.
* @param address: address to write to (32 bit)
* data: data to write @ address
*/
void write_byte(uint32_t address, uint8_t data);
void write_halfword(uint32_t address, uint16_t data);
void write_word(uint32_t address, uint32_t data);
void write_doubleword(uint32_t address, uint64_t data);
/* ----------------------------------------------------------------------------
* -- Header file end
* ----------------------------------------------------------------------------
*/
#endif

Binary file not shown.

View File

@ -0,0 +1,335 @@
<html>
<body>
<pre>
<h1>µVision Build Log</h1>
<h2>Tool Versions:</h2>
IDE-Version: µVision V5.37.0.0
Copyright (C) 2022 ARM Ltd and ARM Germany GmbH. All rights reserved.
License Information: Roman Schenk, ZHAW, LIC=----
Tool Versions:
Toolchain: MDK-Lite Version: 5.37.0.0
Toolchain Path: C:\Keil_v5\ARM\ARMCLANG\Bin
C Compiler: ArmClang.exe V6.18
Assembler: Armasm.exe V6.18
Linker/Locator: ArmLink.exe V6.18
Library Manager: ArmAr.exe V6.18
Hex Converter: FromElf.exe V6.18
CPU DLL: SARMCM3.DLL V5.37.0.0
Dialog DLL: DARMCM1.DLL V1.19.6.0
Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.9.0
Dialog DLL: TARMCM1.DLL V1.14.6.0
<h2>Project:</h2>
C:\Users\roman\Documents\CT-Lab1-Project\CT-Lab1-Project.uvprojx
Project File Date: 09/23/2022
<h2>Output:</h2>
*** Using Compiler 'V6.18', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin'
Rebuild target 'Target 1'
assembling startup_ctboard.s...
assembling datainit_ctboard.s...
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(42): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\system_ctboard.h(32): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(24): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\reg_stm32f4xx.h(1181): warning: // comments are not allowed in this language [-Wcomment]
// volatile uint32_t HR[5];
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(42): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\system_ctboard.h(32): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(25): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include/hal_common.h(59): warning: // comments are not allowed in this language [-Wcomment]
PER_ADC1, // APB2
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(42): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\system_ctboard.h(32): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(168): warning: commas at the end of enumerator lists are a C99-specific feature [-Wc99-extensions]
HAL_GPIO_PIN_All = 0xffff,
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(42): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\system_ctboard.h(33): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_fmc.h(71): warning: commas at the end of enumerator lists are a C99-specific feature [-Wc99-extensions]
HAL_FMC_ACCESS_MODE_D = 3u, /**< Access mode D. */
^~
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(77): warning: no previous prototype for function '__system' [-Wmissing-prototypes]
void __system(void)
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(77): note: declare 'static' if the function is not intended to be used outside of this translation unit
void __system(void)
^
static
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(105): warning: unused parameter 'entry' [-Wunused-parameter]
void system_enter_sleep(hal_pwr_lp_entry_t entry)
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(114): warning: unused parameter 'regulator' [-Wunused-parameter]
void system_enter_stop(hal_pwr_regulator_t regulator, hal_pwr_lp_entry_t entry)
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(114): warning: unused parameter 'entry' [-Wunused-parameter]
void system_enter_stop(hal_pwr_regulator_t regulator, hal_pwr_lp_entry_t entry)
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(146): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
PWR_RESET();
^~~~~~~~~~~
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\reg_stm32f4xx.h(178): note: expanded from macro 'PWR_RESET'
#define PWR_RESET() REG_TGL(RCC->APB1RSTR, PWR_RCC_PATTERN)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\reg_stm32f4xx.h(31): note: expanded from macro 'REG_TGL'
REG_CLR((REG), (BIT)); \
^~~~~~~~~~~~~~~~~~~~~
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\reg_stm32f4xx.h(26): note: expanded from macro 'REG_CLR'
#define REG_CLR(REG, BIT) ( (REG) &= ~(BIT) )
~~ ^~~~~~
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(42): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\system_ctboard.h(35): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_rcc.h(78): warning: padding struct 'hal_rcc_pll_init_t' with 1 byte to align 'n_factor' [-Wpadded]
uint16_t n_factor;
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(174): warning: // comments are not allowed in this language [-Wcomment]
clk_init.hpre = HAL_RCC_HPRE_2; // -> AHB clock : 84 MHz
^
RTE/Device/CT_Board_HS14_M0/system_ctboard.c(42): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\system_ctboard.h(32): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(197): warning: padding size of 'hal_gpio_output_t' with 1 byte to alignment boundary [-Wpadded]
typedef struct {
^
12 warnings generated.
compiling system_ctboard.c...
compiling utils_ctboard.c...
compiling task.c...
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(18): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_fmc.h(24): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include/hal_common.h(59): warning: // comments are not allowed in this language [-Wcomment]
PER_ADC1, // APB2
^
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(18): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_fmc.h(71): warning: commas at the end of enumerator lists are a C99-specific feature [-Wc99-extensions]
HAL_FMC_ACCESS_MODE_D = 3u, /**< Access mode D. */
^~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(19): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\reg_stm32f4xx.h(1181): warning: // comments are not allowed in this language [-Wcomment]
// volatile uint32_t HR[5];
^
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(38): warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]
default:
^
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(82): warning: // comments are not allowed in this language [-Wcomment]
timing.clk_divider -= 1u; // 0b0001 -> clk / 2
^
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(97): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_cr |= (init.type << 2u);
~~ ~~~~~~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(98): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_cr |= (init.width << 4u);
~~ ~~~~~~~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(102): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_tr |= (timing.address_setup << 0u);
~~ ~~~~~~~~~~~~~~~~~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(103): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_tr |= (timing.address_hold << 4u);
~~ ~~~~~~~~~~~~~~~~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(104): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_tr |= (timing.data_setup << 8u);
~~ ~~~~~~~~~~~~~~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(105): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_tr |= (timing.mode << 28u);
~~ ~~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(109): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_tr |= (timing.clk_divider << 20u);
~~ ~~~~~~~~~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(110): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_tr |= (timing.data_latency << 24u);
~~ ~~~~~~~~~~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(113): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
reg_tr |= (timing.bus_turnaround << 16u);
~~ ~~~~~~~~~~~~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_fmc.c(117): warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]
default:
^
15 warnings generated.
compiling hal_fmc.c...
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(18): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(24): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\reg_stm32f4xx.h(1181): warning: // comments are not allowed in this language [-Wcomment]
// volatile uint32_t HR[5];
^
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(18): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(25): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include/hal_common.h(59): warning: // comments are not allowed in this language [-Wcomment]
PER_ADC1, // APB2
^
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(18): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(168): warning: commas at the end of enumerator lists are a C99-specific feature [-Wc99-extensions]
HAL_GPIO_PIN_All = 0xffff,
^
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(187): warning: padding size of 'hal_gpio_input_t' with 1 byte to alignment boundary [-Wpadded]
typedef struct {
^
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_gpio.h(197): warning: padding size of 'hal_gpio_output_t' with 1 byte to alignment boundary [-Wpadded]
typedef struct {
^
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(207): warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion]
port->BSRR = (pins << 16);
~ ~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(264): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
SYSCFG->EXTICR1 &= ~(0xf << syscfg_shift);
~~ ^~~~~~~~~~~~~~~~~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(267): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
SYSCFG->EXTICR2 &= ~(0xf << syscfg_shift);
~~ ^~~~~~~~~~~~~~~~~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(270): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
SYSCFG->EXTICR3 &= ~(0xf << syscfg_shift);
~~ ^~~~~~~~~~~~~~~~~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(273): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
SYSCFG->EXTICR4 &= ~(0xf << syscfg_shift);
~~ ^~~~~~~~~~~~~~~~~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_gpio.c(366): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
mask |= pattern << (pos * pattern_bit_width);
~~ ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
11 warnings generated.
compiling hal_gpio.c...
RTE/HAL/CT_Board_HS14_M0/hal_pwr.c(18): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_pwr.h(24): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include/hal_common.h(59): warning: // comments are not allowed in this language [-Wcomment]
PER_ADC1, // APB2
^
RTE/HAL/CT_Board_HS14_M0/hal_pwr.c(19): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\reg_stm32f4xx.h(1181): warning: // comments are not allowed in this language [-Wcomment]
// volatile uint32_t HR[5];
^
RTE/HAL/CT_Board_HS14_M0/hal_pwr.c(117): warning: unused parameter 'status' [-Wunused-parameter]
hal_bool_t hal_pwr_set_overdrive(hal_bool_t status)
^
RTE/HAL/CT_Board_HS14_M0/hal_pwr.c(128): warning: unused parameter 'status' [-Wunused-parameter]
hal_bool_t hal_pwr_set_underdrive(hal_bool_t status)
^
4 warnings generated.
compiling hal_pwr.c...
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(18): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_rcc.h(24): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include/hal_common.h(59): warning: // comments are not allowed in this language [-Wcomment]
PER_ADC1, // APB2
^
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(19): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include\reg_stm32f4xx.h(1181): warning: // comments are not allowed in this language [-Wcomment]
// volatile uint32_t HR[5];
^
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(37): warning: // comments are not allowed in this language [-Wcomment]
RCC->CR |= 0x00000001; // Set HSION bit first -> keep cpu running
^
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(189): warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]
default:
^
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(18): warning: In file included from...
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include\hal_rcc.h(78): warning: padding struct 'hal_rcc_pll_init_t' with 1 byte to align 'n_factor' [-Wpadded]
uint16_t n_factor;
^
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(280): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLCFGR &= ~(0x3f);
~~ ^~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(286): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLCFGR &= ~0x0f037fc0;
~~ ^~~~~~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(287): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLCFGR |= (init.n_factor << 6u);
~~ ~~~~~~~~~~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(288): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLCFGR |= (((init.p_divider - 1) >> 1u) << 16u);
~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(289): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLCFGR |= (init.q_divider << 24u);
~~ ~~~~~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(293): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLI2SCFGR &= ~0x7f007fc0;
~~ ^~~~~~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(294): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLI2SCFGR |= (init.n_factor << 6u);
~~ ~~~~~~~~~~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(295): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLI2SCFGR |= (init.q_divider << 24u);
~~ ~~~~~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(296): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->PLLI2SCFGR |= (init.r_divider << 28u);
~~ ~~~~~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(284): warning: enumeration values 'HAL_RCC_OSC_HSI', 'HAL_RCC_OSC_HSE', and 'HAL_RCC_OSC_PLLSAI' not explicitly handled in switch [-Wswitch-enum]
switch (pll) {
^~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(320): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->CFGR &= ~0x0000fcf0;
~~ ^~~~~~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(321): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->CFGR |= (init.hpre << 4u);
~~ ~~~~~~~~~~^~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(322): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->CFGR |= (init.ppre1 << 10u);
~~ ~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(323): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->CFGR |= (init.ppre2 << 13u);
~~ ~~~~~~~~~~~^~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(326): warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
RCC->CFGR &= ~0x00000003;
~~ ^~~~~~~~~~~
RTE/HAL/CT_Board_HS14_M0/hal_rcc.c(327): warning: enumeration values 'HAL_RCC_OSC_PLLI2S' and 'HAL_RCC_OSC_PLLSAI' not explicitly handled in switch [-Wswitch-enum]
switch (init.osc) {
^~~~~~~~
21 warnings generated.
compiling hal_rcc.c...
linking...
Program Size: Code=3852 RO-data=428 RW-data=0 ZI-data=8192
".\build\CT-Lab1-Project.axf" - 0 Error(s), 63 Warning(s).
<h2>Software Packages used:</h2>
Package Vendor: InES
https://ennis.zhaw.ch/pack/InES.CTBoard14_DFP.4.0.2.pack
InES.CTBoard14_DFP.4.0.2
CT Board 14 (STM32F429ZI) Device Support
* Component: Startup Version: 4.0.1
* Component: FMC Version: 3.0.1
* Component: GPIO Version: 4.0.1
* Component: PWR Version: 2.2.0
* Component: RCC Version: 4.0.1
<h2>Collection of Component include folders:</h2>
./RTE/_Target_1
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0
C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include
<h2>Collection of Component Files used:</h2>
* Component: InES::Device:Startup:4.0.1
Include file: Device/Include/reg_stm32f4xx.h
Include file: Device/Include/reg_ctboard.h
Include file: Device/Include/m0/platform_ctboard.h
Include file: Device/Include/system_ctboard.h
Source file: Device/Source/system_ctboard.c
Source file: Device/Source/datainit_ctboard.s
Source file: Device/Source/startup_ctboard.s
* Component: InES::HAL:FMC:3.0.1
Source file: HAL/Source/hal_fmc.c
Include file: HAL/Include/hal_common.h
Include file: HAL/Include/hal_fmc.h
Include file: Device/Include/reg_stm32f4xx.h
* Component: InES::HAL:GPIO:4.0.1
Include file: HAL/Include/hal_gpio.h
Include file: Device/Include/reg_stm32f4xx.h
Source file: HAL/Source/hal_gpio.c
Include file: HAL/Include/hal_common.h
* Component: InES::HAL:PWR:2.2.0
Include file: Device/Include/reg_stm32f4xx.h
Source file: HAL/Source/hal_pwr.c
Include file: HAL/Include/hal_common.h
Include file: HAL/Include/hal_pwr.h
* Component: InES::HAL:RCC:4.0.1
Source file: HAL/Source/hal_rcc.c
Include file: HAL/Include/hal_common.h
Include file: HAL/Include/hal_rcc.h
Include file: Device/Include/reg_stm32f4xx.h
Build Time Elapsed: 00:00:01
</pre>
</body>
</html>

View File

@ -0,0 +1,656 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html><head>
<title>Static Call Graph - [.\build\CT-Lab1-Project.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image .\build\CT-Lab1-Project.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 6180002: Last Updated: Fri Sep 30 07:35:31 2022
<BR><P>
<H3>Maximum Stack Usage = 312 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
__system &rArr; system_enter_run &rArr; init_FMC_SRAM &rArr; hal_gpio_init_alternate &rArr; hal_gpio_init_output &rArr; create_pattern_mask
<P>
<H3>
Mutually Recursive functions
</H3> <LI><a href="#[1]">NMI_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[1]">NMI_Handler</a><BR>
<LI><a href="#[2]">HardFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[2]">HardFault_Handler</a><BR>
<LI><a href="#[3]">MemManage_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[3]">MemManage_Handler</a><BR>
<LI><a href="#[4]">BusFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[4]">BusFault_Handler</a><BR>
<LI><a href="#[5]">UsageFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[5]">UsageFault_Handler</a><BR>
<LI><a href="#[6]">SVC_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[6]">SVC_Handler</a><BR>
<LI><a href="#[7]">DebugMon_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[7]">DebugMon_Handler</a><BR>
<LI><a href="#[8]">PendSV_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[8]">PendSV_Handler</a><BR>
<LI><a href="#[9]">SysTick_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[9]">SysTick_Handler</a><BR>
<LI><a href="#[1c]">ADC_IRQHandler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[1c]">ADC_IRQHandler</a><BR>
</UL>
<P>
<H3>
Function Pointers
</H3><UL>
<LI><a href="#[1c]">ADC_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[4]">BusFault_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[1e]">CAN1_RX0_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[1f]">CAN1_RX1_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[20]">CAN1_SCE_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[1d]">CAN1_TX_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[4a]">CAN2_RX0_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[4b]">CAN2_RX1_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[4c]">CAN2_SCE_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[49]">CAN2_TX_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[59]">CRYP_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[58]">DCMI_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[15]">DMA1_Stream0_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[16]">DMA1_Stream1_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[17]">DMA1_Stream2_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[18]">DMA1_Stream3_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[19]">DMA1_Stream4_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[1a]">DMA1_Stream5_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[1b]">DMA1_Stream6_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[39]">DMA1_Stream7_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[64]">DMA2D_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[42]">DMA2_Stream0_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[43]">DMA2_Stream1_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[44]">DMA2_Stream2_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[45]">DMA2_Stream3_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[46]">DMA2_Stream4_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[4e]">DMA2_Stream5_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[4f]">DMA2_Stream6_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[50]">DMA2_Stream7_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[7]">DebugMon_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[47]">ETH_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[48]">ETH_WKUP_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[10]">EXTI0_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[32]">EXTI15_10_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[11]">EXTI1_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[12]">EXTI2_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[13]">EXTI3_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[14]">EXTI4_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[21]">EXTI9_5_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[e]">FLASH_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[3a]">FMC_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[5b]">FPU_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[5a]">HASH_RNG_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[2]">HardFault_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[2a]">I2C1_ER_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[29]">I2C1_EV_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[2c]">I2C2_ER_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[2b]">I2C2_EV_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[53]">I2C3_ER_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[52]">I2C3_EV_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[63]">LTDC_ER_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[62]">LTDC_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[3]">MemManage_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[1]">NMI_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[4d]">OTG_FS_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[34]">OTG_FS_WKUP_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[55]">OTG_HS_EP1_IN_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[54]">OTG_HS_EP1_OUT_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[57]">OTG_HS_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[56]">OTG_HS_WKUP_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[b]">PVD_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[8]">PendSV_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[f]">RCC_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[33]">RTC_Alarm_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[d]">RTC_WKUP_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[0]">Reset_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[61]">SAI1_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[3b]">SDIO_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[2d]">SPI1_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[2e]">SPI2_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[3d]">SPI3_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[5e]">SPI4_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[5f]">SPI5_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[60]">SPI6_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[6]">SVC_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[9]">SysTick_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[c]">TAMP_STAMP_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[22]">TIM1_BRK_TIM9_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[25]">TIM1_CC_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[24]">TIM1_TRG_COM_TIM11_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[23]">TIM1_UP_TIM10_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[26]">TIM2_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[27]">TIM3_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[28]">TIM4_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[3c]">TIM5_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[40]">TIM6_DAC_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[41]">TIM7_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[35]">TIM8_BRK_TIM12_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[38]">TIM8_CC_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[37]">TIM8_TRG_COM_TIM14_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[36]">TIM8_UP_TIM13_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[3e]">UART4_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[3f]">UART5_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[5c]">UART7_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[5d]">UART8_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[2f]">USART1_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[30]">USART2_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[31]">USART3_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[51]">USART6_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[5]">UsageFault_Handler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[a]">WWDG_IRQHandler</a> from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET)
<LI><a href="#[67]">__main</a> from datainit_ctboard.o(.text) referenced from startup_ctboard.o(.text)
<LI><a href="#[66]">__system</a> from system_ctboard.o(.text.__system) referenced from startup_ctboard.o(.text)
<LI><a href="#[65]">main</a> from task.o(.text.main) referenced from datainit_ctboard.o(.text)
</UL>
<P>
<H3>
Global Symbols
</H3>
<P><STRONG><a name="[67]"></a>__main</STRONG> (Thumb, 74 bytes, Stack size 0 bytes, datainit_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(.text)
</UL>
<P><STRONG><a name="[0]"></a>Reset_Handler</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[1]"></a>NMI_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NMI_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NMI_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[2]"></a>HardFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[3]"></a>MemManage_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MemManage_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MemManage_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[4]"></a>BusFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;BusFault_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;BusFault_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[5]"></a>UsageFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsageFault_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsageFault_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[6]"></a>SVC_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SVC_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SVC_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[7]"></a>DebugMon_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DebugMon_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DebugMon_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[8]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PendSV_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PendSV_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[9]"></a>SysTick_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SysTick_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SysTick_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[1c]"></a>ADC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[1c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_IRQHandler
</UL>
<BR>[Called By]<UL><LI><a href="#[1c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[1e]"></a>CAN1_RX0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[1f]"></a>CAN1_RX1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[20]"></a>CAN1_SCE_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[1d]"></a>CAN1_TX_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[4a]"></a>CAN2_RX0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[4b]"></a>CAN2_RX1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[4c]"></a>CAN2_SCE_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[49]"></a>CAN2_TX_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[59]"></a>CRYP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[58]"></a>DCMI_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[15]"></a>DMA1_Stream0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[16]"></a>DMA1_Stream1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[17]"></a>DMA1_Stream2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[18]"></a>DMA1_Stream3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[19]"></a>DMA1_Stream4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[1a]"></a>DMA1_Stream5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[1b]"></a>DMA1_Stream6_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[39]"></a>DMA1_Stream7_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[64]"></a>DMA2D_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[42]"></a>DMA2_Stream0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[43]"></a>DMA2_Stream1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[44]"></a>DMA2_Stream2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[45]"></a>DMA2_Stream3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[46]"></a>DMA2_Stream4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[4e]"></a>DMA2_Stream5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[4f]"></a>DMA2_Stream6_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[50]"></a>DMA2_Stream7_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[47]"></a>ETH_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[48]"></a>ETH_WKUP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[10]"></a>EXTI0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[32]"></a>EXTI15_10_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[11]"></a>EXTI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[12]"></a>EXTI2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[13]"></a>EXTI3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[14]"></a>EXTI4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[21]"></a>EXTI9_5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[e]"></a>FLASH_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[3a]"></a>FMC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[5b]"></a>FPU_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[5a]"></a>HASH_RNG_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[2a]"></a>I2C1_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[29]"></a>I2C1_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[2c]"></a>I2C2_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[2b]"></a>I2C2_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[53]"></a>I2C3_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[52]"></a>I2C3_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[63]"></a>LTDC_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[62]"></a>LTDC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[4d]"></a>OTG_FS_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[34]"></a>OTG_FS_WKUP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[55]"></a>OTG_HS_EP1_IN_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[54]"></a>OTG_HS_EP1_OUT_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[57]"></a>OTG_HS_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[56]"></a>OTG_HS_WKUP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[b]"></a>PVD_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[f]"></a>RCC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[33]"></a>RTC_Alarm_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[d]"></a>RTC_WKUP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[61]"></a>SAI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[3b]"></a>SDIO_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[2d]"></a>SPI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[2e]"></a>SPI2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[3d]"></a>SPI3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[5e]"></a>SPI4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[5f]"></a>SPI5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[60]"></a>SPI6_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[c]"></a>TAMP_STAMP_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[22]"></a>TIM1_BRK_TIM9_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[25]"></a>TIM1_CC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[24]"></a>TIM1_TRG_COM_TIM11_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[23]"></a>TIM1_UP_TIM10_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[26]"></a>TIM2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[27]"></a>TIM3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[28]"></a>TIM4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[3c]"></a>TIM5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[40]"></a>TIM6_DAC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[41]"></a>TIM7_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[35]"></a>TIM8_BRK_TIM12_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[38]"></a>TIM8_CC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[37]"></a>TIM8_TRG_COM_TIM14_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[36]"></a>TIM8_UP_TIM13_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[3e]"></a>UART4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[3f]"></a>UART5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[5c]"></a>UART7_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[5d]"></a>UART8_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[2f]"></a>USART1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[30]"></a>USART2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[31]"></a>USART3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[51]"></a>USART6_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[a]"></a>WWDG_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(RESET)
</UL>
<P><STRONG><a name="[6a]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, aeabi_sdiv.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;create_pattern_mask
</UL>
<P><STRONG><a name="[7d]"></a>__aeabi_uidivmod</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, aeabi_sdiv.o(.text), UNUSED)
<P><STRONG><a name="[7e]"></a>__aeabi_idiv</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, aeabi_sdiv.o(.text), UNUSED)
<P><STRONG><a name="[7f]"></a>__aeabi_idivmod</STRONG> (Thumb, 338 bytes, Stack size 8 bytes, aeabi_sdiv.o(.text), UNUSED)
<P><STRONG><a name="[66]"></a>__system</STRONG> (Thumb, 8 bytes, Stack size 8 bytes, system_ctboard.o(.text.__system))
<BR><BR>[Stack]<UL><LI>Max Depth = 312<LI>Call Chain = __system &rArr; system_enter_run &rArr; init_FMC_SRAM &rArr; hal_gpio_init_alternate &rArr; hal_gpio_init_output &rArr; create_pattern_mask
</UL>
<BR>[Calls]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;system_enter_run
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_ctboard.o(.text)
</UL>
<P><STRONG><a name="[79]"></a>getData7Segment</STRONG> (Thumb, 236 bytes, Stack size 12 bytes, task.o(.text.getData7Segment))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = getData7Segment
</UL>
<BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[6f]"></a>hal_fmc_init_sram</STRONG> (Thumb, 564 bytes, Stack size 64 bytes, hal_fmc.o(.text.hal_fmc_init_sram))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = hal_fmc_init_sram
</UL>
<BR>[Called By]<UL><LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_FMC_SRAM
</UL>
<P><STRONG><a name="[6b]"></a>hal_gpio_init_alternate</STRONG> (Thumb, 194 bytes, Stack size 72 bytes, hal_gpio.o(.text.hal_gpio_init_alternate))
<BR><BR>[Stack]<UL><LI>Max Depth = 160<LI>Call Chain = hal_gpio_init_alternate &rArr; hal_gpio_init_output &rArr; create_pattern_mask
</UL>
<BR>[Calls]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_gpio_init_output
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;create_pattern_mask
</UL>
<BR>[Called By]<UL><LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_FMC_SRAM
</UL>
<P><STRONG><a name="[6c]"></a>hal_gpio_init_output</STRONG> (Thumb, 208 bytes, Stack size 48 bytes, hal_gpio.o(.text.hal_gpio_init_output))
<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = hal_gpio_init_output &rArr; create_pattern_mask
</UL>
<BR>[Calls]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;create_pattern_mask
<LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;intercept_overwrite_register
</UL>
<BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_gpio_init_alternate
</UL>
<P><STRONG><a name="[74]"></a>hal_pwr_set_overdrive</STRONG> (Thumb, 12 bytes, Stack size 4 bytes, hal_pwr.o(.text.hal_pwr_set_overdrive))
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = hal_pwr_set_overdrive
</UL>
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_SystemClock
</UL>
<P><STRONG><a name="[71]"></a>hal_rcc_reset</STRONG> (Thumb, 148 bytes, Stack size 0 bytes, hal_rcc.o(.text.hal_rcc_reset))
<BR><BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_SystemClock
</UL>
<P><STRONG><a name="[72]"></a>hal_rcc_set_osc</STRONG> (Thumb, 268 bytes, Stack size 32 bytes, hal_rcc.o(.text.hal_rcc_set_osc))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = hal_rcc_set_osc
</UL>
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_SystemClock
</UL>
<P><STRONG><a name="[75]"></a>hal_rcc_setup_clock</STRONG> (Thumb, 160 bytes, Stack size 20 bytes, hal_rcc.o(.text.hal_rcc_setup_clock))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = hal_rcc_setup_clock
</UL>
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_SystemClock
</UL>
<P><STRONG><a name="[73]"></a>hal_rcc_setup_pll</STRONG> (Thumb, 328 bytes, Stack size 24 bytes, hal_rcc.o(.text.hal_rcc_setup_pll))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = hal_rcc_setup_pll
</UL>
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_SystemClock
</UL>
<P><STRONG><a name="[65]"></a>main</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, task.o(.text.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = main &rArr; getData7Segment
</UL>
<BR>[Calls]<UL><LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;getData7Segment
<LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;write_word
<LI><a href="#[7a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;write_byte
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;read_word
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;read_byte
</UL>
<BR>[Address Reference Count : 1]<UL><LI> datainit_ctboard.o(.text)
</UL>
<P><STRONG><a name="[78]"></a>read_byte</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, utils_ctboard.o(.text.read_byte))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = read_byte
</UL>
<BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[76]"></a>read_word</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, utils_ctboard.o(.text.read_word))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = read_word
</UL>
<BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[68]"></a>system_enter_run</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, system_ctboard.o(.text.system_enter_run))
<BR><BR>[Stack]<UL><LI>Max Depth = 304<LI>Call Chain = system_enter_run &rArr; init_FMC_SRAM &rArr; hal_gpio_init_alternate &rArr; hal_gpio_init_output &rArr; create_pattern_mask
</UL>
<BR>[Calls]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_LCD
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_FMC_SRAM
<LI><a href="#[7b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_FPU
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;init_SystemClock
</UL>
<BR>[Called By]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__system
</UL>
<P><STRONG><a name="[7a]"></a>write_byte</STRONG> (Thumb, 22 bytes, Stack size 12 bytes, utils_ctboard.o(.text.write_byte))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = write_byte
</UL>
<BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[77]"></a>write_word</STRONG> (Thumb, 20 bytes, Stack size 12 bytes, utils_ctboard.o(.text.write_word))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = write_word
</UL>
<BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P>
<H3>
Local Symbols
</H3>
<P><STRONG><a name="[70]"></a>init_SystemClock</STRONG> (Thumb, 196 bytes, Stack size 40 bytes, system_ctboard.o(.text.init_SystemClock))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = init_SystemClock &rArr; hal_rcc_set_osc
</UL>
<BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_rcc_setup_clock
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_pwr_set_overdrive
<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_rcc_setup_pll
<LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_rcc_set_osc
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_rcc_reset
</UL>
<BR>[Called By]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;system_enter_run
</UL>
<P><STRONG><a name="[7b]"></a>init_FPU</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, system_ctboard.o(.text.init_FPU))
<BR><BR>[Called By]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;system_enter_run
</UL>
<P><STRONG><a name="[6e]"></a>init_FMC_SRAM</STRONG> (Thumb, 340 bytes, Stack size 136 bytes, system_ctboard.o(.text.init_FMC_SRAM))
<BR><BR>[Stack]<UL><LI>Max Depth = 296<LI>Call Chain = init_FMC_SRAM &rArr; hal_gpio_init_alternate &rArr; hal_gpio_init_output &rArr; create_pattern_mask
</UL>
<BR>[Calls]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_fmc_init_sram
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_gpio_init_alternate
</UL>
<BR>[Called By]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;system_enter_run
</UL>
<P><STRONG><a name="[7c]"></a>init_LCD</STRONG> (Thumb, 32 bytes, Stack size 4 bytes, system_ctboard.o(.text.init_LCD))
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = init_LCD
</UL>
<BR>[Called By]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;system_enter_run
</UL>
<P><STRONG><a name="[6d]"></a>intercept_overwrite_register</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, hal_gpio.o(.text.intercept_overwrite_register))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = intercept_overwrite_register
</UL>
<BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_gpio_init_output
</UL>
<P><STRONG><a name="[69]"></a>create_pattern_mask</STRONG> (Thumb, 156 bytes, Stack size 40 bytes, hal_gpio.o(.text.create_pattern_mask))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = create_pattern_mask
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_gpio_init_output
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;hal_gpio_init_alternate
</UL>
<P>
<H3>
Undefined Global Symbols
</H3><HR></body></html>

View File

@ -0,0 +1,14 @@
--cpu Cortex-M0
".\build\utils_ctboard.o"
".\build\task.o"
".\build\datainit_ctboard.o"
".\build\startup_ctboard.o"
".\build\system_ctboard.o"
".\build\hal_fmc.o"
".\build\hal_gpio.o"
".\build\hal_pwr.o"
".\build\hal_rcc.o"
--ro-base 0x08000000 --entry 0x08000000 --rw-base 0x20000000 --entry Reset_Handler --first __Vectors --strict
--diag_suppress 6314 --summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols
--info sizes --info totals --info unused --info veneers
--list ".\Listings\CT-Lab1-Project.map" -o .\build\CT-Lab1-Project.axf

View File

@ -0,0 +1,41 @@
Dependencies for Project 'CT-Lab1-Project', Target 'Target 1': (DO NOT MODIFY !)
CompilerVersion: 6180000::V6.18::ARMCLANG
F (.\app\utils_ctboard.c)(0x613F3541)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/utils_ctboard.o -MD)
I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538)
I (app\utils_ctboard.h)(0x613F3541)
F (.\app\task.c)(0x63368018)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/task.o -MD)
I (app\utils_ctboard.h)(0x613F3541)
I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538)
F (RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s)(0x5C517478)(--target=arm-arm-none-eabi -mcpu=cortex-m0 -masm=auto -c -gdwarf-4 -Wa,armasm,--pd,"__EVAL SETA 1" -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -Wa,armasm,--pd,"__UVISION_VERSION SETA 537" -Wa,armasm,--pd,"_RTE_ SETA 1" -Wa,armasm,--pd,"_RTE_ SETA 1" -o ./build/datainit_ctboard.o)
F (RTE/Device/CT_Board_HS14_M0/startup_ctboard.s)(0x5C517478)(--target=arm-arm-none-eabi -mcpu=cortex-m0 -masm=auto -c -gdwarf-4 -Wa,armasm,--pd,"__EVAL SETA 1" -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -Wa,armasm,--pd,"__UVISION_VERSION SETA 537" -Wa,armasm,--pd,"_RTE_ SETA 1" -Wa,armasm,--pd,"_RTE_ SETA 1" -o ./build/startup_ctboard.o)
F (RTE/Device/CT_Board_HS14_M0/system_ctboard.c)(0x5C597514)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/system_ctboard.o -MD)
I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\system_ctboard.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\m0\platform_ctboard.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_gpio.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_fmc.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_pwr.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_rcc.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_ctboard.h)(0x5C6AA868)
F (RTE/HAL/CT_Board_HS14_M0/hal_fmc.c)(0x5C517478)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/hal_fmc.o -MD)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_fmc.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478)
I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514)
F (RTE/HAL/CT_Board_HS14_M0/hal_gpio.c)(0x5C5ACEB0)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/hal_gpio.o -MD)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_gpio.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514)
I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478)
F (RTE/HAL/CT_Board_HS14_M0/hal_pwr.c)(0x5C517478)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/hal_pwr.o -MD)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_pwr.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478)
I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514)
F (RTE/HAL/CT_Board_HS14_M0/hal_rcc.c)(0x5C597514)(-xc -std=c90 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/hal_rcc.o -MD)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_rcc.h)(0x5C517478)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478)
I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538)
I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514)

View File

@ -0,0 +1,2 @@
[EXTDLL]
Count=0

Binary file not shown.

View File

@ -0,0 +1,5 @@
./build/hal_fmc.o: RTE\HAL\CT_Board_HS14_M0\hal_fmc.c \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_fmc.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h

Binary file not shown.

View File

@ -0,0 +1,5 @@
./build/hal_gpio.o: RTE\HAL\CT_Board_HS14_M0\hal_gpio.c \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_gpio.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h

Binary file not shown.

View File

@ -0,0 +1,5 @@
./build/hal_pwr.o: RTE\HAL\CT_Board_HS14_M0\hal_pwr.c \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_pwr.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h

Binary file not shown.

View File

@ -0,0 +1,5 @@
./build/hal_rcc.o: RTE\HAL\CT_Board_HS14_M0\hal_rcc.c \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_rcc.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,11 @@
./build/system_ctboard.o: RTE\Device\CT_Board_HS14_M0\system_ctboard.c \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\system_ctboard.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\m0\platform_ctboard.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_gpio.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_fmc.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_pwr.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_rcc.h \
C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_ctboard.h

Binary file not shown.

View File

@ -0,0 +1,2 @@
./build/task.o: app\task.c app\utils_ctboard.h \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h

Binary file not shown.

View File

@ -0,0 +1,2 @@
./build/utils_ctboard.o: app\utils_ctboard.c \
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h app\utils_ctboard.h

Binary file not shown.

BIN
CTP_TargetSystem.pdf Normal file

Binary file not shown.

103
utils_ctboard.c Normal file
View File

@ -0,0 +1,103 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ----------------------------------------------------------------------------
* --
* -- Project : CT Board - Cortex M4
* -- Description : Utilities for ct board.
* --
* -- $Id: utils_ctboard.c 2160 2015-06-08 12:28:00Z feur $
* ------------------------------------------------------------------------- */
#include <stdint.h>
#include "utils_ctboard.h"
/* ----------------------------------------------------------------------------
* -- Functions
* ----------------------------------------------------------------------------
*/
/*
* See header file
*/
uint8_t read_byte(uint32_t address)
{
uint8_t *pointer;
pointer = (uint8_t *)address;
return *pointer;
}
/*
* See header file
*/
uint16_t read_halfword(uint32_t address)
{
uint16_t *pointer;
pointer = (uint16_t *)address;
return *pointer;
}
/*
* See header file
*/
uint32_t read_word(uint32_t address)
{
uint32_t *pointer;
pointer = (uint32_t *)address;
return *pointer;
}
/*
* See header file
*/
uint64_t read_doubleword(uint32_t address)
{
uint64_t *pointer;
pointer = (uint64_t *)address;
return *pointer;
}
/*
* See header file
*/
void write_byte(uint32_t address, uint8_t data)
{
uint8_t *pointer;
pointer = (uint8_t *)address;
*pointer = data;
}
/*
* See header file
*/
void write_halfword(uint32_t address, uint16_t data)
{
uint16_t *pointer;
pointer = (uint16_t *)address;
*pointer = data;
}
/*
* See header file
*/
void write_word(uint32_t address, uint32_t data)
{
uint32_t *pointer;
pointer = (uint32_t *)address;
*pointer = data;
}
/*
* See header file
*/
void write_doubleword(uint32_t address, uint64_t data)
{
uint64_t *pointer;
pointer = (uint64_t *)address;
*pointer = data;
}

52
utils_ctboard.h Normal file
View File

@ -0,0 +1,52 @@
/* ----------------------------------------------------------------------------
* -- _____ ______ _____ -
* -- |_ _| | ____|/ ____| -
* -- | | _ __ | |__ | (___ Institute of Embedded Systems -
* -- | | | '_ \| __| \___ \ Zurich University of -
* -- _| |_| | | | |____ ____) | Applied Sciences -
* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
* ----------------------------------------------------------------------------
* --
* -- Module : ctboard_utils
* -- Description : Interface for module.
* --
* -- $Id: utils_ctboard.h 1122 2015-01-06 13:57:04Z feur $
* ------------------------------------------------------------------------- */
#ifndef _UTILS_CTBOARD
#define _UTILS_CTBOARD
#include <stdint.h>
/* ----------------------------------------------------------------------------
* -- Function prototypes
* ----------------------------------------------------------------------------
*/
/*
* Functions to read either a byte, halfword, word or
* doubleword from an arbitrary address.
* @param address: address to read from (32 bit)
* @retval data @ address
*/
uint8_t read_byte(uint32_t address);
uint16_t read_halfword(uint32_t address);
uint32_t read_word(uint32_t address);
uint64_t read_doubleword(uint32_t address);
/*
* Functions to write either a byte, halfword, word or
* doubleword to an arbitrary address.
* @param address: address to write to (32 bit)
* data: data to write @ address
*/
void write_byte(uint32_t address, uint8_t data);
void write_halfword(uint32_t address, uint16_t data);
void write_word(uint32_t address, uint32_t data);
void write_doubleword(uint32_t address, uint64_t data);
/* ----------------------------------------------------------------------------
* -- Header file end
* ----------------------------------------------------------------------------
*/
#endif