commit
97f430c5d9
15 changed files with 1390 additions and 0 deletions
@ -0,0 +1,223 @@ |
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> |
||||
<storageModule moduleId="org.eclipse.cdt.core.settings"> |
||||
<cconfiguration id="com.crt.advproject.config.exe.debug.1657942249.304190424"> |
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.crt.advproject.config.exe.debug.1657942249.304190424" moduleId="org.eclipse.cdt.core.settings" name="flash"> |
||||
<externalSettings/> |
||||
<extensions> |
||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
||||
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/> |
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
</extensions> |
||||
</storageModule> |
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
||||
<configuration artifactExtension="axf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="com.crt.advproject.config.exe.debug.1657942249.304190424" name="flash" parent="com.crt.advproject.config.exe.debug" postannouncebuildStep="Performing post-build steps" postbuildStep="arm-none-eabi-size "${BuildArtifactFileName}"; # arm-none-eabi-objcopy -v -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" ; # checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin"; "> |
||||
<folderInfo id="com.crt.advproject.config.exe.debug.1657942249.304190424." name="/" resourcePath=""> |
||||
<toolChain id="com.crt.advproject.toolchain.exe.debug.1214887054" name="NXP MCU Tools" superClass="com.crt.advproject.toolchain.exe.debug"> |
||||
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="com.crt.advproject.platform.exe.debug.374606542" name="ARM-based MCU (Debug)" superClass="com.crt.advproject.platform.exe.debug"/> |
||||
<builder buildPath="${workspace_loc:/UART0_Terminal}/Debug" id="com.crt.advproject.builder.exe.debug.1207580420" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="com.crt.advproject.builder.exe.debug"/> |
||||
<tool id="com.crt.advproject.cpp.exe.debug.1198339513" name="MCU C++ Compiler" superClass="com.crt.advproject.cpp.exe.debug"> |
||||
<option id="com.crt.advproject.cpp.hdrlib.2080739169" name="Library headers" superClass="com.crt.advproject.cpp.hdrlib" useByScannerDiscovery="false"/> |
||||
<option id="com.crt.advproject.cpp.fpu.1418679656" name="Floating point" superClass="com.crt.advproject.cpp.fpu" useByScannerDiscovery="true"/> |
||||
<option id="gnu.cpp.compiler.option.preprocessor.def.538032655" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false"/> |
||||
</tool> |
||||
<tool id="com.crt.advproject.gcc.exe.debug.126636966" name="MCU C Compiler" superClass="com.crt.advproject.gcc.exe.debug"> |
||||
<option id="com.crt.advproject.gcc.thumb.1461993944" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" useByScannerDiscovery="false" value="true" valueType="boolean"/> |
||||
<option id="com.crt.advproject.gcc.arch.2121110030" name="Architecture" superClass="com.crt.advproject.gcc.arch" useByScannerDiscovery="false" value="com.crt.advproject.gcc.target.cm0" valueType="enumerated"/> |
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.preprocessor.def.symbols.2033988197" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> |
||||
<listOptionValue builtIn="false" value="DEBUG"/> |
||||
<listOptionValue builtIn="false" value="CR_INTEGER_PRINTF"/> |
||||
<listOptionValue builtIn="false" value="__USE_CMSIS"/> |
||||
<listOptionValue builtIn="false" value="__CODE_RED"/> |
||||
<listOptionValue builtIn="false" value="CORE_M0PLUS"/> |
||||
<listOptionValue builtIn="false" value="__MTB_DISABLE"/> |
||||
<listOptionValue builtIn="false" value="__MTB_BUFFER_SIZE=256"/> |
||||
<listOptionValue builtIn="false" value="__REDLIB__"/> |
||||
</option> |
||||
<option id="gnu.c.compiler.option.misc.other.747401920" name="Other flags" superClass="gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections" valueType="string"/> |
||||
<option id="gnu.c.compiler.option.optimization.flags.1310121032" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" useByScannerDiscovery="false" value="-fno-common" valueType="string"/> |
||||
<option id="com.crt.advproject.gcc.hdrlib.2073169015" name="Library headers" superClass="com.crt.advproject.gcc.hdrlib" useByScannerDiscovery="false" value="Redlib" valueType="enumerated"/> |
||||
<option id="com.crt.advproject.gcc.specs.1228074933" name="Specs" superClass="com.crt.advproject.gcc.specs" useByScannerDiscovery="false" value="com.crt.advproject.gcc.specs.codered" valueType="enumerated"/> |
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.include.paths.1708913729" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> |
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> |
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/peripherals_lib/inc}""/> |
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/utilities_lib/inc}""/> |
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> |
||||
</option> |
||||
<option id="com.crt.advproject.gcc.fpu.1917934235" name="Floating point" superClass="com.crt.advproject.gcc.fpu" useByScannerDiscovery="true"/> |
||||
<option id="com.crt.advproject.c.misc.dialect.1459071690" superClass="com.crt.advproject.c.misc.dialect"/> |
||||
<option id="gnu.c.compiler.option.dialect.flags.1821537654" superClass="gnu.c.compiler.option.dialect.flags"/> |
||||
<option id="gnu.c.compiler.option.preprocessor.nostdinc.1848637450" superClass="gnu.c.compiler.option.preprocessor.nostdinc"/> |
||||
<option id="gnu.c.compiler.option.preprocessor.preprocess.320600529" superClass="gnu.c.compiler.option.preprocessor.preprocess"/> |
||||
<option id="gnu.c.compiler.option.preprocessor.undef.symbol.1638317112" superClass="gnu.c.compiler.option.preprocessor.undef.symbol"/> |
||||
<option id="gnu.c.compiler.option.include.files.907434793" superClass="gnu.c.compiler.option.include.files"/> |
||||
<option id="com.crt.advproject.gcc.exe.debug.option.optimization.level.1820269102" superClass="com.crt.advproject.gcc.exe.debug.option.optimization.level"/> |
||||
<option id="com.crt.advproject.gcc.exe.debug.option.debugging.level.145053629" superClass="com.crt.advproject.gcc.exe.debug.option.debugging.level"/> |
||||
<option id="gnu.c.compiler.option.debugging.other.992597112" superClass="gnu.c.compiler.option.debugging.other"/> |
||||
<option id="gnu.c.compiler.option.debugging.prof.1904552373" superClass="gnu.c.compiler.option.debugging.prof"/> |
||||
<option id="gnu.c.compiler.option.debugging.gprof.985899099" superClass="gnu.c.compiler.option.debugging.gprof"/> |
||||
<option id="gnu.c.compiler.option.debugging.codecov.1829691069" superClass="gnu.c.compiler.option.debugging.codecov"/> |
||||
<option id="gnu.c.compiler.option.warnings.syntax.1196179329" superClass="gnu.c.compiler.option.warnings.syntax"/> |
||||
<option id="gnu.c.compiler.option.warnings.pedantic.1867504227" superClass="gnu.c.compiler.option.warnings.pedantic"/> |
||||
<option id="gnu.c.compiler.option.warnings.pedantic.error.1948710558" superClass="gnu.c.compiler.option.warnings.pedantic.error"/> |
||||
<option id="gnu.c.compiler.option.warnings.nowarn.690570209" superClass="gnu.c.compiler.option.warnings.nowarn"/> |
||||
<option id="gnu.c.compiler.option.warnings.allwarn.830054398" superClass="gnu.c.compiler.option.warnings.allwarn"/> |
||||
<option id="gnu.c.compiler.option.warnings.extrawarn.954500513" superClass="gnu.c.compiler.option.warnings.extrawarn"/> |
||||
<option id="gnu.c.compiler.option.warnings.toerrors.1473311822" superClass="gnu.c.compiler.option.warnings.toerrors"/> |
||||
<option id="gnu.c.compiler.option.warnings.wconversion.1027202978" superClass="gnu.c.compiler.option.warnings.wconversion"/> |
||||
<option id="gnu.c.compiler.option.misc.verbose.232382178" superClass="gnu.c.compiler.option.misc.verbose"/> |
||||
<option id="gnu.c.compiler.option.misc.ansi.808316688" superClass="gnu.c.compiler.option.misc.ansi"/> |
||||
<option id="gnu.c.compiler.option.misc.pic.172579864" superClass="gnu.c.compiler.option.misc.pic"/> |
||||
<option id="com.crt.advproject.gcc.lto.1573057455" superClass="com.crt.advproject.gcc.lto"/> |
||||
<option id="com.crt.advproject.gcc.lto.fat.240684632" superClass="com.crt.advproject.gcc.lto.fat"/> |
||||
<option id="com.crt.advproject.gcc.merge.constants.399824288" superClass="com.crt.advproject.gcc.merge.constants"/> |
||||
<option id="com.crt.advproject.gcc.prefixmap.719849027" superClass="com.crt.advproject.gcc.prefixmap"/> |
||||
<option id="com.crt.advproject.gcc.thumbinterwork.23888654" superClass="com.crt.advproject.gcc.thumbinterwork"/> |
||||
<option id="com.crt.advproject.gcc.securestate.1362746449" superClass="com.crt.advproject.gcc.securestate"/> |
||||
<option id="com.crt.advproject.gcc.stackusage.1847830853" superClass="com.crt.advproject.gcc.stackusage"/> |
||||
<option id="com.crt.advproject.gcc.config.149269241" superClass="com.crt.advproject.gcc.config"/> |
||||
<option id="com.crt.advproject.gcc.store.2065923139" superClass="com.crt.advproject.gcc.store"/> |
||||
<inputType id="com.crt.advproject.compiler.input.1867279265" superClass="com.crt.advproject.compiler.input"/> |
||||
</tool> |
||||
<tool id="com.crt.advproject.gas.exe.debug.1605775762" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.debug"> |
||||
<option id="com.crt.advproject.gas.thumb.1597285555" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" useByScannerDiscovery="false" value="true" valueType="boolean"/> |
||||
<option id="com.crt.advproject.gas.arch.1397260888" name="Architecture" superClass="com.crt.advproject.gas.arch" useByScannerDiscovery="false" value="com.crt.advproject.gas.target.cm0" valueType="enumerated"/> |
||||
<option id="gnu.both.asm.option.flags.crt.695947580" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" useByScannerDiscovery="false" value="-c -x assembler-with-cpp -DDEBUG -D__CODE_RED -DCORE_M0PLUS -D__LPC84X__ -D__REDLIB__" valueType="string"/> |
||||
<option id="com.crt.advproject.gas.hdrlib.170280979" name="Library headers" superClass="com.crt.advproject.gas.hdrlib" useByScannerDiscovery="false" value="Redlib" valueType="enumerated"/> |
||||
<option id="com.crt.advproject.gas.specs.2051073967" name="Specs" superClass="com.crt.advproject.gas.specs" useByScannerDiscovery="false" value="com.crt.advproject.gas.specs.codered" valueType="enumerated"/> |
||||
<option id="com.crt.advproject.gas.fpu.1713508037" name="Floating point" superClass="com.crt.advproject.gas.fpu"/> |
||||
<option id="gnu.both.asm.option.include.paths.489811631" superClass="gnu.both.asm.option.include.paths"/> |
||||
<option id="gnu.both.asm.option.warnings.nowarn.356978026" superClass="gnu.both.asm.option.warnings.nowarn"/> |
||||
<option id="gnu.both.asm.option.version.781223840" superClass="gnu.both.asm.option.version"/> |
||||
<option id="com.crt.advproject.gas.exe.debug.option.debugging.level.1906047180" superClass="com.crt.advproject.gas.exe.debug.option.debugging.level"/> |
||||
<option id="com.crt.advproject.gas.thumbinterwork.1827763507" superClass="com.crt.advproject.gas.thumbinterwork"/> |
||||
<option id="com.crt.advproject.gas.config.877426382" superClass="com.crt.advproject.gas.config"/> |
||||
<option id="com.crt.advproject.gas.store.894608365" superClass="com.crt.advproject.gas.store"/> |
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.191409779" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> |
||||
<inputType id="com.crt.advproject.assembler.input.428875517" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/> |
||||
</tool> |
||||
<tool id="com.crt.advproject.link.cpp.exe.debug.1607649866" name="MCU C++ Linker" superClass="com.crt.advproject.link.cpp.exe.debug"> |
||||
<option id="com.crt.advproject.link.cpp.hdrlib.599103906" name="Library" superClass="com.crt.advproject.link.cpp.hdrlib"/> |
||||
<option id="com.crt.advproject.link.cpp.fpu.845161882" name="Floating point" superClass="com.crt.advproject.link.cpp.fpu"/> |
||||
</tool> |
||||
<tool id="com.crt.advproject.link.exe.debug.1528510851" name="MCU Linker" superClass="com.crt.advproject.link.exe.debug"> |
||||
<option id="com.crt.advproject.link.thumb.1221840341" name="Thumb mode" superClass="com.crt.advproject.link.thumb" useByScannerDiscovery="false" value="true" valueType="boolean"/> |
||||
<option id="com.crt.advproject.link.memory.heapAndStack.420338875" name="Heap and Stack options" superClass="com.crt.advproject.link.memory.heapAndStack" useByScannerDiscovery="false" value="&Heap:Default;Post Data;Default&Stack:Default;End;Default" valueType="string"/> |
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.crt.advproject.link.gcc.multicore.master.userobjs.408136983" name="Slave Objects (not visible)" superClass="com.crt.advproject.link.gcc.multicore.master.userobjs" useByScannerDiscovery="false" valueType="userObjs"/> |
||||
<option id="com.crt.advproject.link.arch.1269805062" name="Architecture" superClass="com.crt.advproject.link.arch" useByScannerDiscovery="false" value="com.crt.advproject.link.target.cm0" valueType="enumerated"/> |
||||
<option id="com.crt.advproject.link.script.1255124212" name="Linker script" superClass="com.crt.advproject.link.script" useByScannerDiscovery="false" value=""Projet_e-paper_flash.ld"" valueType="string"/> |
||||
<option id="com.crt.advproject.link.manage.844371882" name="Manage linker script" superClass="com.crt.advproject.link.manage" useByScannerDiscovery="false" value="true" valueType="boolean"/> |
||||
<option id="gnu.c.link.option.nostdlibs.1728925009" name="No startup or default libs (-nostdlib)" superClass="gnu.c.link.option.nostdlibs" useByScannerDiscovery="false" value="true" valueType="boolean"/> |
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.other.754954714" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList"> |
||||
<listOptionValue builtIn="false" value="-Map="${BuildArtifactFileBaseName}.map""/> |
||||
<listOptionValue builtIn="false" value="--gc-sections"/> |
||||
<listOptionValue builtIn="false" value="-print-memory-usage"/> |
||||
</option> |
||||
<option id="com.crt.advproject.link.gcc.hdrlib.897699944" name="Library" superClass="com.crt.advproject.link.gcc.hdrlib" useByScannerDiscovery="false" value="com.crt.advproject.gcc.link.hdrlib.codered.nohost_nf" valueType="enumerated"/> |
||||
<option id="com.crt.advproject.link.crpenable.1196271376" name="Enable automatic placement of Code Read Protection field in image" superClass="com.crt.advproject.link.crpenable" useByScannerDiscovery="false" value="true" valueType="boolean"/> |
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.libs.1043775225" name="Libraries (-l)" superClass="gnu.c.link.option.libs" useByScannerDiscovery="false" valueType="libs"> |
||||
<listOptionValue builtIn="false" value="peripherals_lib"/> |
||||
<listOptionValue builtIn="false" value="utilities_lib"/> |
||||
</option> |
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.paths.102567499" name="Library search path (-L)" superClass="gnu.c.link.option.paths" useByScannerDiscovery="false" valueType="libPaths"> |
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/peripherals_lib/flash}""/> |
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/utilities_lib/flash}""/> |
||||
</option> |
||||
<option defaultValue="com.crt.advproject.heapAndStack.lpcXpressoStyle" id="com.crt.advproject.link.memory.heapAndStack.style.1227878819" name="Heap and Stack placement" superClass="com.crt.advproject.link.memory.heapAndStack.style" useByScannerDiscovery="false" valueType="enumerated"/> |
||||
<option id="com.crt.advproject.link.gcc.multicore.slave.200142628" name="Multicore configuration" superClass="com.crt.advproject.link.gcc.multicore.slave"/> |
||||
<option id="com.crt.advproject.link.memory.load.image.989508248" name="Plain load image" superClass="com.crt.advproject.link.memory.load.image" value="" valueType="string"/> |
||||
<option id="com.crt.advproject.link.memory.data.187763471" name="Global data placement" superClass="com.crt.advproject.link.memory.data" value="" valueType="string"/> |
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.crt.advproject.link.memory.sections.2037790199" name="Extra linker script input sections" superClass="com.crt.advproject.link.memory.sections" valueType="stringList"/> |
||||
<option id="com.crt.advproject.link.fpu.817721077" name="Floating point" superClass="com.crt.advproject.link.fpu"/> |
||||
<option id="gnu.c.link.option.nostart.417623793" superClass="gnu.c.link.option.nostart"/> |
||||
<option id="gnu.c.link.option.nodeflibs.2062289132" superClass="gnu.c.link.option.nodeflibs"/> |
||||
<option id="gnu.c.link.option.strip.9904865" superClass="gnu.c.link.option.strip"/> |
||||
<option id="gnu.c.link.option.noshared.1095585534" superClass="gnu.c.link.option.noshared"/> |
||||
<option id="gnu.c.link.option.ldflags.112905622" superClass="gnu.c.link.option.ldflags"/> |
||||
<option id="gnu.c.link.option.userobjs.2001485615" superClass="gnu.c.link.option.userobjs"/> |
||||
<option id="gnu.c.link.option.shared.397132535" superClass="gnu.c.link.option.shared"/> |
||||
<option id="gnu.c.link.option.soname.540474367" superClass="gnu.c.link.option.soname"/> |
||||
<option id="gnu.c.link.option.implname.778294187" superClass="gnu.c.link.option.implname"/> |
||||
<option id="gnu.c.link.option.defname.164254463" superClass="gnu.c.link.option.defname"/> |
||||
<option id="gnu.c.link.option.debugging.prof.687497433" superClass="gnu.c.link.option.debugging.prof"/> |
||||
<option id="gnu.c.link.option.debugging.gprof.195722450" superClass="gnu.c.link.option.debugging.gprof"/> |
||||
<option id="gnu.c.link.option.debugging.codecov.78662743" superClass="gnu.c.link.option.debugging.codecov"/> |
||||
<option id="com.crt.advproject.link.gcc.lto.1576137605" superClass="com.crt.advproject.link.gcc.lto"/> |
||||
<option id="com.crt.advproject.link.gcc.lto.optmization.level.604046314" superClass="com.crt.advproject.link.gcc.lto.optmization.level"/> |
||||
<option id="com.crt.advproject.link.scriptdir.215296876" superClass="com.crt.advproject.link.scriptdir"/> |
||||
<option id="com.crt.advproject.link.flashconfigenable.134007661" superClass="com.crt.advproject.link.flashconfigenable"/> |
||||
<option id="com.crt.advproject.link.ecrp.543532765" superClass="com.crt.advproject.link.ecrp"/> |
||||
<option id="com.crt.advproject.link.gcc.nanofloat.1437736047" superClass="com.crt.advproject.link.gcc.nanofloat"/> |
||||
<option id="com.crt.advproject.link.gcc.nanofloat.scanf.1527276849" superClass="com.crt.advproject.link.gcc.nanofloat.scanf"/> |
||||
<option id="com.crt.advproject.link.toram.1486023920" superClass="com.crt.advproject.link.toram"/> |
||||
<option id="com.crt.advproject.link.stackOffset.975312840" superClass="com.crt.advproject.link.stackOffset"/> |
||||
<option id="com.crt.advproject.link.gcc.multicore.master.1046886410" superClass="com.crt.advproject.link.gcc.multicore.master"/> |
||||
<option id="com.crt.advproject.link.gcc.multicore.empty.1750055801" superClass="com.crt.advproject.link.gcc.multicore.empty"/> |
||||
<option id="com.crt.advproject.link.config.183735384" superClass="com.crt.advproject.link.config"/> |
||||
<option id="com.crt.advproject.link.store.1327152506" superClass="com.crt.advproject.link.store"/> |
||||
<option id="com.crt.advproject.link.securestate.1624775756" superClass="com.crt.advproject.link.securestate"/> |
||||
<option id="com.crt.advproject.link.sgstubs.placement.1563767041" superClass="com.crt.advproject.link.sgstubs.placement"/> |
||||
<option id="com.crt.advproject.link.sgstubenable.612552095" superClass="com.crt.advproject.link.sgstubenable"/> |
||||
<option id="com.crt.advproject.link.nonsecureobject.1078348703" superClass="com.crt.advproject.link.nonsecureobject"/> |
||||
<option id="com.crt.advproject.link.inimplib.2146054521" superClass="com.crt.advproject.link.inimplib"/> |
||||
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1088814266" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> |
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> |
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/> |
||||
</inputType> |
||||
</tool> |
||||
<tool id="com.crt.advproject.tool.debug.debug.1112192280" name="MCU Debugger" superClass="com.crt.advproject.tool.debug.debug"> |
||||
<option id="com.crt.advproject.linkserver.debug.prevent.debug.352440464" superClass="com.crt.advproject.linkserver.debug.prevent.debug"/> |
||||
<option id="com.crt.advproject.miscellaneous.end_of_heap.1617035437" superClass="com.crt.advproject.miscellaneous.end_of_heap"/> |
||||
<option id="com.crt.advproject.miscellaneous.pvHeapStart.223964568" superClass="com.crt.advproject.miscellaneous.pvHeapStart"/> |
||||
<option id="com.crt.advproject.miscellaneous.pvHeapLimit.890789366" superClass="com.crt.advproject.miscellaneous.pvHeapLimit"/> |
||||
<option id="com.crt.advproject.debugger.security.nonsecureimageenable.150853950" superClass="com.crt.advproject.debugger.security.nonsecureimageenable"/> |
||||
<option id="com.crt.advproject.debugger.security.nonsecureimage.1904369027" superClass="com.crt.advproject.debugger.security.nonsecureimage"/> |
||||
</tool> |
||||
</toolChain> |
||||
</folderInfo> |
||||
</configuration> |
||||
</storageModule> |
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
||||
</cconfiguration> |
||||
</storageModule> |
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
||||
<project id="UART0_Terminal.com.crt.advproject.projecttype.exe.608083179" name="Executable" projectType="com.crt.advproject.projecttype.exe"/> |
||||
</storageModule> |
||||
<storageModule moduleId="scannerConfiguration"> |
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
||||
</storageModule> |
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> |
||||
<storageModule moduleId="com.crt.config"> |
||||
<projectStorage><?xml version="1.0" encoding="UTF-8"?> |
||||
<TargetConfig> |
||||
<Properties property_2="LPC80x_32.cfx" property_3="NXP" property_4="LPC804" property_count="5" version="100300"/> |
||||
<infoList vendor="NXP"> |
||||
<info chip="LPC804" flash_driver="LPC80x_32.cfx" match_id="0x0" name="LPC804" stub="crt_emu_cm3_gen"> |
||||
<chip> |
||||
<name>LPC804</name> |
||||
<family>LPC80x</family> |
||||
<vendor>NXP (formerly Philips)</vendor> |
||||
<reset board="None" core="Real" sys="Real"/> |
||||
<clock changeable="TRUE" freq="12MHz" is_accurate="TRUE"/> |
||||
<memory can_program="true" id="Flash" is_ro="true" type="Flash"/> |
||||
<memory id="RAM" type="RAM"/> |
||||
<memory id="Periph" is_volatile="true" type="Peripheral"/> |
||||
<memoryInstance derived_from="Flash" id="MFlash32" location="0x0" size="0x7f80"/> |
||||
<memoryInstance derived_from="RAM" id="RamLoc4" location="0x10000000" size="0x1000"/> |
||||
</chip> |
||||
<processor> |
||||
<name gcc_name="cortex-m0">Cortex-M0</name> |
||||
<family>Cortex-M</family> |
||||
</processor> |
||||
</info> |
||||
</infoList> |
||||
</TargetConfig></projectStorage> |
||||
</storageModule> |
||||
<storageModule moduleId="refreshScope"/> |
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> |
||||
<storageModule moduleId="com.crt.advproject"/> |
||||
</cproject> |
@ -0,0 +1,2 @@ |
||||
/flash |
||||
*.launch |
@ -0,0 +1,28 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>Projet_e-paper</name> |
||||
<comment></comment> |
||||
<projects> |
||||
<project>peripherals_lib</project> |
||||
<project>utilities_lib</project> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> |
||||
<triggers>clean,full,incremental,</triggers> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> |
||||
<triggers>full,incremental,</triggers> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>org.eclipse.cdt.core.cnature</nature> |
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> |
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -0,0 +1,14 @@ |
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||
<project> |
||||
<configuration id="com.crt.advproject.config.exe.debug.1657942249.304190424" name="flash"> |
||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> |
||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> |
||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser" id="com.crt.advproject.GCCBuildCommandParser" keep-relative-paths="false" name="MCU GCC Build Output Parser" parameter="(arm-none-eabi-gcc)|(arm-none-eabi-[gc]\+\+)|(gcc)|([gc]\+\+)|(clang)" prefer-non-shared="true"/> |
||||
<provider class="com.crt.advproject.specs.MCUGCCBuiltinSpecsDetector" console="false" env-hash="-1432391210850164469" id="com.crt.advproject.GCCBuildSpecCompilerParser" keep-relative-paths="false" name="MCU GCC Built-in Compiler Parser" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> |
||||
<language-scope id="org.eclipse.cdt.core.gcc"/> |
||||
<language-scope id="org.eclipse.cdt.core.g++"/> |
||||
</provider> |
||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> |
||||
</extension> |
||||
</configuration> |
||||
</project> |
@ -0,0 +1,123 @@ |
||||
${ProjName}: |
||||
UART0_Terminal |
||||
|
||||
|
||||
Intended purpose: |
||||
To demonstrate the configuration and use of the USART module, in asynchronous |
||||
mode, while communicating with a terminal emulator. |
||||
|
||||
|
||||
Functional description: |
||||
* In this example UART0 communicates with a terminal emulator running on the PC, via a |
||||
USB-to-RS232 breakout cable or via the NXP LPC11Uxx VCOM serial port. |
||||
* The user is prompted to enter a string (not to exceed 32 characters), terminated by [Enter]. |
||||
* Each character that is entered is echoed back to the terminal by the UART0 |
||||
ISR, and the characters are stored in an array for future use. |
||||
* When the user types [Enter], a NUL character is appended to the array, and |
||||
a handshake flag is set by the ISR for the main routine. |
||||
* Upon seeing the handshake flag, the main routine prints the stored string to |
||||
the terminal, and the process repeats. |
||||
|
||||
|
||||
External connections: |
||||
* To use the NXP LPC11Uxx VCOM Serial Port: |
||||
1. No external connections are necessary. |
||||
2. The Max board must have the necessary solder-bump jumper modifications: |
||||
A. For LPC812 Max board, short pins 1 and 2 of both SJ1 and SJ4 |
||||
B. For LPC824 Max board, short pins 2 and 3 of SJ9 |
||||
C. For LPC845 Max board, no modification is needed. |
||||
C. For LPC802 LPCXpresso board, no modification is needed. |
||||
C. For LPC804 LPCXpresso board, no modification is needed. |
||||
3. The terminal emulator can then be connected to the NXP LPC11Uxx VCOM serial port which |
||||
enumerates when the board is connected. It appears something like this: |
||||
COM13: NXP LPC11Uxx VCOM serial port (COM13) |
||||
|
||||
* To use a USB-to-RS232 breakout cable: |
||||
1. There are three external connections necessary: RXD and TXD based on the SWM |
||||
settings, plus a ground connection. The RXD and TXD pins can be chosen in chip_setup.h. |
||||
The defaults are as follows: |
||||
P0.25 = U0_TXD = breakout cable RXD |
||||
P0.24 = U0_RXD = breakout cable TXD |
||||
Board GND = breakout cable GND |
||||
|
||||
|
||||
|
||||
Notes on the baud rate and FRG: |
||||
* The BRG and FRG settings are calculated in two steps, as follows: |
||||
// For asynchronous mode (UART mode) the formula is: |
||||
// (BRG + 1) * (1 + (m/256)) * (16 * baudrate Hz.) = FRG_in Hz. |
||||
// We proceed in 2 steps. |
||||
// Step 1: Let m = 0, and round (down) to the nearest integer value of BRG for the desired baudrate. |
||||
// Step 2: Plug in the BRG from step 1, and find the nearest integer value of m, (for the FRG fractional part). |
||||
// |
||||
// Step 1 (with m = 0) |
||||
// BRG = ((FRG_in Hz.) / (16 * baudrate Hz.)) - 1 |
||||
// = (30,000,000/(16 * 9600)) - 1 |
||||
// = 194.3 |
||||
// = 194 (rounded) |
||||
// |
||||
// Step 2. |
||||
// m = 256 * [-1 + {(FRG_in Hz.) / (16 * baudrate Hz.)(BRG + 1)}] |
||||
// = 256 * [-1 + {(30,000,000) / (16*9600)(195)}] |
||||
// = 0.002 |
||||
// = 0 (rounded) |
||||
|
||||
|
||||
Program Flow: |
||||
* This example runs with: |
||||
system_ahb_clk = 15 MHz. (main_clk = 15 MHz. FRO direct output) |
||||
UART0CLK = 15 MHz. (FRG0CLKSEL = main_clk, FCLKSEL0 = frg0clk) |
||||
See chip_setup.h and SystemInit() |
||||
|
||||
* main() routine |
||||
1. Clocks to USART0 and the SWM are enabled. |
||||
|
||||
2. The SWM is configured as per above. |
||||
|
||||
3. The UARTCLKDIV and the FRG (both in SYSCON) are configured as per above |
||||
(for 9600 b.p.s.). |
||||
|
||||
4. USART0 is given a peripheral reset. |
||||
|
||||
5. USART0 BRG is configured as per above (for 9600 b.p.s.). |
||||
|
||||
6. USART0 CFG register is configured for: |
||||
8 data bits |
||||
no parity |
||||
one stop bit |
||||
no flow control |
||||
asynchronous mode |
||||
no loop-back |
||||
|
||||
7. USART0 CTL register is configured for: |
||||
no continuous break |
||||
no address detect |
||||
no Tx disable |
||||
no CC |
||||
no CLRCC |
||||
|
||||
8. USART0 Rx Ready interrupt is enabled, and code execution enters the main while(1) |
||||
loop. |
||||
|
||||
9. The user is prompted to enter a string, and each character is echoed by the |
||||
ISR back to the terminal until the NUL terminator is encountered. |
||||
|
||||
10. When the NUL terminator is encountered, the ISR sets a handshake flag for |
||||
main, which prints the entire received string to the terminal, and the process repeats. |
||||
|
||||
|
||||
This example runs from Flash. |
||||
|
||||
|
||||
To run this code: |
||||
1. Build |
||||
2. Program memory, then reset target |
||||
or |
||||
2. Debug |
||||
3. Run or Go |
||||
|
||||
Note: It may be necessary to power-cycle the board in order to regain control of the reset button after programming. |
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,66 @@ |
||||
#include "board.h" |
||||
|
||||
|
||||
//
|
||||
// The following parameters need to be defined for each project's inital clock setup (used in system.c))
|
||||
//
|
||||
#define FRO_FREQ_VAL 2 // 0 = 18 MHz
|
||||
// 1 = 24 MHz (reset value)
|
||||
// 2 = 30 MHz
|
||||
|
||||
#define MAINCLKSEL_VAL 0 // 00 = fro (reset value)
|
||||
// 01 = external_clk
|
||||
// 10 = lposc_clk
|
||||
// 11 = fro_div
|
||||
|
||||
#define SYSAHBCLKDIV_VAL 1 // 0x00 = system_ahb_clk disabled (use with caution)
|
||||
// 0x01 = divide_by_1 (reset value)
|
||||
// 0x02 = divide_by_2
|
||||
// 0xFF = divide_by_255
|
||||
|
||||
#define CLKIN_CLK_VAL 12000000 // External Clock (CLKIN) frequency [Hz] must be in the range of 1 MHz to 25 MHz
|
||||
|
||||
#define EXT_CLOCK_FORCE_ENABLE 0 // Force config. and enable of external_clk for use by other than main_clk
|
||||
// 0 = external_clk will be configured and enabled only if needed by main_clk or sys_pll0_clk.
|
||||
// 1 = external_clk will be configured and enabled (available for other, e.g. clock out).
|
||||
|
||||
// End of clocks configuration section
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
// The following parameters need to be defined for projects that use the debug UART (used in serial.c)
|
||||
//
|
||||
#define DBGUART 0 // Choose the index for the debug UART (0 for UART0, 1 for UART1, etc.)
|
||||
#define DBGBAUDRATE 9600 // Choose the baud rate for the debug UART
|
||||
#define USE_VCOM_PORT 1 // '1' to use VCOM serial port, '0' to use user-defined port pins for debug UART
|
||||
|
||||
#if (USE_VCOM_PORT == 1) |
||||
#define DBGTXPIN TARGET_TX // For VCOM serial port (see board.h)
|
||||
#define DBGRXPIN TARGET_RX // For VCOM serial port (see board.h)
|
||||
#else |
||||
#define DBGTXPIN P0_15 // Use with USB-to-RS232 break-out cable (choose your own favorite TxD pin)
|
||||
#define DBGRXPIN P0_14 // Use with USB-to-RS232 break-out cable (choose your own favorite RxD pin)
|
||||
#endif |
||||
|
||||
//
|
||||
// The following are so the debug UART is selectable from any UART on the device (used in Serial.c)
|
||||
//
|
||||
#define __CONCAT(x,y,z) x##y##z |
||||
#define __XCONCAT(x,y,z) __CONCAT(x,y,z) |
||||
|
||||
#define INDEX DBGUART |
||||
#define pDBGU __XCONCAT(LPC_USART,INDEX,) |
||||
#define DBGU __XCONCAT(UART,INDEX,) |
||||
#define DBGUTXD __XCONCAT(U,INDEX,_TXD) |
||||
#define DBGURXD __XCONCAT(U,INDEX,_RXD) |
||||
#define DBGURST __XCONCAT(UART,INDEX,_RST_N) |
||||
#define DBGUIRQ __XCONCAT(UART,INDEX,_IRQn) |
||||
|
@ -0,0 +1,23 @@ |
||||
/*
|
||||
* lib_ENS_II1_lcd.h |
||||
* |
||||
* Created on: 9 oct. 2018 |
||||
* Modified on sept. 2019 |
||||
* Author: juton |
||||
*/ |
||||
|
||||
#ifndef LIB_ENS_II1_LCD_H_ |
||||
#define LIB_ENS_II1_LCD_H_ |
||||
|
||||
//definitions pour I2C
|
||||
#define I2CBAUD 100000 |
||||
#define LCD_ADDR 0x7C |
||||
#define BUFSIZE 5 |
||||
|
||||
void init_lcd(void); |
||||
void lcd_puts(); |
||||
void lcd_putc(char c); |
||||
void lcd_gohome(); |
||||
void lcd_position(char ligne, char colonne); |
||||
|
||||
#endif /* LIB_ENS_II1_LCD_H_ */ |
@ -0,0 +1,355 @@ |
||||
//*****************************************************************************
|
||||
// LPC84x Microcontroller Startup code for use with MCUXpresso IDE
|
||||
//
|
||||
// Version : 170111
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Copyright(C) NXP Semiconductors, 2017
|
||||
// All rights reserved.
|
||||
//
|
||||
// Software that is described herein is for illustrative purposes only
|
||||
// which provides customers with programming information regarding the
|
||||
// LPC products. This software is supplied "AS IS" without any warranties of
|
||||
// any kind, and NXP Semiconductors and its licensor disclaim any and
|
||||
// all warranties, express or implied, including all implied warranties of
|
||||
// merchantability, fitness for a particular purpose and non-infringement of
|
||||
// intellectual property rights. NXP Semiconductors assumes no responsibility
|
||||
// or liability for the use of the software, conveys no license or rights under any
|
||||
// patent, copyright, mask work right, or any other intellectual property rights in
|
||||
// or to any products. NXP Semiconductors reserves the right to make changes
|
||||
// in the software without notification. NXP Semiconductors also makes no
|
||||
// representation or warranty that such application will be suitable for the
|
||||
// specified use without further testing or modification.
|
||||
//
|
||||
// Permission to use, copy, modify, and distribute this software and its
|
||||
// documentation is hereby granted, under NXP Semiconductors' and its
|
||||
// licensor's relevant copyrights in the software, without fee, provided that it
|
||||
// is used in conjunction with NXP Semiconductors microcontrollers. This
|
||||
// copyright, permission, and disclaimer notice must appear in all copies of
|
||||
// this code.
|
||||
//*****************************************************************************
|
||||
|
||||
#if defined (__cplusplus) |
||||
#ifdef __REDLIB__ |
||||
#error Redlib does not support C++ |
||||
#else |
||||
//*****************************************************************************
|
||||
//
|
||||
// The entry point for the C++ library startup
|
||||
//
|
||||
//*****************************************************************************
|
||||
extern "C" { |
||||
extern void __libc_init_array(void); |
||||
} |
||||
#endif |
||||
#endif |
||||
|
||||
#define WEAK __attribute__ ((weak)) |
||||
#define ALIAS(f) __attribute__ ((weak, alias (#f))) |
||||
|
||||
//*****************************************************************************
|
||||
#if defined (__cplusplus) |
||||
extern "C" { |
||||
#endif |
||||
|
||||
//*****************************************************************************
|
||||
#if defined (__USE_CMSIS) || defined (__USE_LPCOPEN) |
||||
// Declaration of external SystemInit function
|
||||
extern void SystemInit(void); |
||||
#endif |
||||
|
||||
//*****************************************************************************
|
||||
// Patch the AEABI integer divide functions to use MCU's romdivide library
|
||||
#ifdef __USE_ROMDIVIDE |
||||
// Location in memory that holds the address of the ROM Driver table
|
||||
#define PTR_ROM_DRIVER_TABLE ((unsigned int *)(0x0F001FF8)) |
||||
// Variables to store addresses of idiv and udiv functions within MCU ROM
|
||||
unsigned int *pDivRom_idiv; |
||||
unsigned int *pDivRom_uidiv; |
||||
#endif |
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Forward declaration of the default handlers. These are aliased.
|
||||
// When the application defines a handler (with the same name), this will
|
||||
// automatically take precedence over these weak definitions
|
||||
//
|
||||
//*****************************************************************************
|
||||
void ResetISR(void); |
||||
WEAK void NMI_Handler(void); |
||||
WEAK void HardFault_Handler(void); |
||||
WEAK void SVC_Handler(void); |
||||
WEAK void PendSV_Handler(void); |
||||
WEAK void SysTick_Handler(void); |
||||
WEAK void IntDefaultHandler(void); |
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Forward declaration of the specific IRQ handlers. These are aliased
|
||||
// to the IntDefaultHandler, which is a 'forever' loop. When the application
|
||||
// defines a handler (with the same name), this will automatically take
|
||||
// precedence over these weak definitions
|
||||
//
|
||||
//*****************************************************************************
|
||||
void SPI0_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void DAC0_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void UART0_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void UART1_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void I2C1_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void I2C0_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void MRT_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void CMP_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void WDT_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void BOD_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void FLASH_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void WKT_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void ADC_SEQA_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void ADC_SEQB_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void ADC_THCMP_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void ADC_OVR_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void CTIMER0_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void PININT0_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void PININT1_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void PININT2_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void PININT3_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void PININT4_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void PININT5_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void PININT6_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
void PININT7_IRQHandler(void) ALIAS(IntDefaultHandler); |
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// The entry point for the application.
|
||||
// __main() is the entry point for Redlib based applications
|
||||
// main() is the entry point for Newlib based applications
|
||||
//
|
||||
//*****************************************************************************
|
||||
#if defined (__REDLIB__) |
||||
extern void __main(void); |
||||
#else |
||||
extern int main(void); |
||||
#endif |
||||
//*****************************************************************************
|
||||
//
|
||||
// External declaration for the pointer to the stack top from the Linker Script
|
||||
//
|
||||
//*****************************************************************************
|
||||
extern void _vStackTop(void); |
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// External declaration for LPC MCU vector table checksum from Linker Script
|
||||
//
|
||||
//*****************************************************************************
|
||||
WEAK extern void __valid_user_code_checksum(); |
||||
|
||||
//*****************************************************************************
|
||||
#if defined (__cplusplus) |
||||
} // extern "C"
|
||||
#endif |
||||
//*****************************************************************************
|
||||
//
|
||||
// The vector table.
|
||||
// This relies on the linker script to place at correct location in memory.
|
||||
//
|
||||
//*****************************************************************************
|
||||
extern void (* const g_pfnVectors[])(void); |
||||
__attribute__ ((used,section(".isr_vector"))) |
||||
void (* const g_pfnVectors[])(void) = { |
||||
// Core Level - CM0plus
|
||||
&_vStackTop, // The initial stack pointer
|
||||
ResetISR, // The reset handler
|
||||
NMI_Handler, // The NMI handler
|
||||
HardFault_Handler, // The hard fault handler
|
||||
0, // Reserved
|
||||
0, // Reserved
|
||||
0, // Reserved
|
||||
__valid_user_code_checksum, // LPC MCU Checksum
|
||||
0, // Reserved
|
||||
0, // Reserved
|
||||
0, // Reserved
|
||||
SVC_Handler, // SVCall handler
|
||||
0, // Reserved
|
||||
0, // Reserved
|
||||
PendSV_Handler, // The PendSV handler
|
||||
SysTick_Handler, // The SysTick handler
|
||||
|
||||
// Chip Level - LPC80x
|
||||
SPI0_IRQHandler, // 0 - SPI0
|
||||
0, // 1 - Reserved
|
||||
DAC0_IRQHandler, // 2 - DAC0
|
||||
UART0_IRQHandler, // 3 - UART0
|
||||
UART1_IRQHandler, // 4 - UART1
|
||||
0, // 5 - Reserved
|
||||
0, // 6 - Reserved
|
||||
I2C1_IRQHandler, // 7 - I2C1
|
||||
I2C0_IRQHandler, // 8 - I2C0
|
||||
0, // 9 - Reserved
|
||||
MRT_IRQHandler, // 10 - Multi-rate timer
|
||||
CMP_IRQHandler, // 11 - Analog comparator / Cap Touch
|
||||
WDT_IRQHandler, // 12 - Windowed watchdog timer
|
||||
BOD_IRQHandler, // 13 - BOD
|
||||
FLASH_IRQHandler, // 14 - FLASH
|
||||
WKT_IRQHandler, // 15 - Self wake-up timer
|
||||
ADC_SEQA_IRQHandler, // 16 - ADC seq A
|
||||
ADC_SEQB_IRQHandler, // 17 - ADC_seq B
|
||||
ADC_THCMP_IRQHandler, // 18 - ADC threshold compare
|
||||
ADC_OVR_IRQHandler, // 19 - ADC overrun
|
||||
0, // 20 - Reserved
|
||||
0, // 21 - Reserved
|
||||
0, // 22 - Reserved
|
||||
CTIMER0_IRQHandler, // 23 - Timer 0
|
||||
PININT0_IRQHandler, // 24 - PININT0
|
||||
PININT1_IRQHandler, // 25 - PININT1
|
||||
PININT2_IRQHandler, // 26 - PININT2
|
||||
PININT3_IRQHandler, // 27 - PININT3
|
||||
PININT4_IRQHandler, // 28 - PININT4
|
||||
PININT5_IRQHandler, // 29 - PININT5
|
||||
PININT6_IRQHandler, // 30 - PININT6
|
||||
PININT7_IRQHandler // 31 - PININT7
|
||||
}; /* End of g_pfnVectors */ |
||||
|
||||
//*****************************************************************************
|
||||
// Functions to carry out the initialization of RW and BSS data sections. These
|
||||
// are written as separate functions rather than being inlined within the
|
||||
// ResetISR() function in order to cope with MCUs with multiple banks of
|
||||
// memory.
|
||||
//*****************************************************************************
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void data_init(unsigned int romstart, unsigned int start, unsigned int len) { |
||||
unsigned int *pulDest = (unsigned int*) start; |
||||
unsigned int *pulSrc = (unsigned int*) romstart; |
||||
unsigned int loop; |
||||
for (loop = 0; loop < len; loop = loop + 4) |
||||
*pulDest++ = *pulSrc++; |
||||
} |
||||
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void bss_init(unsigned int start, unsigned int len) { |
||||
unsigned int *pulDest = (unsigned int*) start; |
||||
unsigned int loop; |
||||
for (loop = 0; loop < len; loop = loop + 4) |
||||
*pulDest++ = 0; |
||||
} |
||||
|
||||
//*****************************************************************************
|
||||
// The following symbols are constructs generated by the linker, indicating
|
||||
// the location of various points in the "Global Section Table". This table is
|
||||
// created by the linker via the Code Red managed linker script mechanism. It
|
||||
// contains the load address, execution address and length of each RW data
|
||||
// section and the execution and length of each BSS (zero initialized) section.
|
||||
//*****************************************************************************
|
||||
extern unsigned int __data_section_table; |
||||
extern unsigned int __data_section_table_end; |
||||
extern unsigned int __bss_section_table; |
||||
extern unsigned int __bss_section_table_end; |
||||
|
||||
|
||||
//*****************************************************************************
|
||||
// Reset entry point for your code.
|
||||
// Sets up a simple runtime environment and initializes the C/C++
|
||||
// library.
|
||||
//*****************************************************************************
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void |
||||
ResetISR(void) { |
||||
|
||||
//
|
||||
// Copy the data sections from flash to SRAM.
|
||||
//
|
||||
unsigned int LoadAddr, ExeAddr, SectionLen; |
||||
unsigned int *SectionTableAddr; |
||||
|
||||
// Load base address of Global Section Table
|
||||
SectionTableAddr = &__data_section_table; |
||||
|
||||
// Copy the data sections from flash to SRAM.
|
||||
while (SectionTableAddr < &__data_section_table_end) { |
||||
LoadAddr = *SectionTableAddr++; |
||||
ExeAddr = *SectionTableAddr++; |
||||
SectionLen = *SectionTableAddr++; |
||||
data_init(LoadAddr, ExeAddr, SectionLen); |
||||
} |
||||
// At this point, SectionTableAddr = &__bss_section_table;
|
||||
// Zero fill the bss segment
|
||||
while (SectionTableAddr < &__bss_section_table_end) { |
||||
ExeAddr = *SectionTableAddr++; |
||||
SectionLen = *SectionTableAddr++; |
||||
bss_init(ExeAddr, SectionLen); |
||||
} |
||||
|
||||
// Patch the AEABI integer divide functions to use MCU's romdivide library
|
||||
#ifdef __USE_ROMDIVIDE |
||||
// Get address of Integer division routines function table in ROM
|
||||
unsigned int *div_ptr = (unsigned int *)((unsigned int *)*(PTR_ROM_DRIVER_TABLE))[4]; |
||||
// Get addresses of integer divide routines in ROM
|
||||
// These address are then used by the code in aeabi_romdiv_patch.s
|
||||
pDivRom_idiv = (unsigned int *)div_ptr[0]; |
||||
pDivRom_uidiv = (unsigned int *)div_ptr[1]; |
||||
#endif |
||||
|
||||
#if defined (__USE_CMSIS) || defined (__USE_LPCOPEN) |
||||
SystemInit(); |
||||
#endif |
||||
|
||||
#if defined (__cplusplus) |
||||
//
|
||||
// Call C++ library initialisation
|
||||
//
|
||||
__libc_init_array(); |
||||
#endif |
||||
|
||||
#if defined (__REDLIB__) |
||||
// Call the Redlib library, which in turn calls main()
|
||||
__main() ; |
||||
#else |
||||
main(); |
||||
#endif |
||||
|
||||
//
|
||||
// main() shouldn't return, but if it does, we'll just enter an infinite loop
|
||||
//
|
||||
while (1) { |
||||
; |
||||
} |
||||
} |
||||
|
||||
//*****************************************************************************
|
||||
// Default exception handlers. Override the ones here by defining your own
|
||||
// handler routines in your application code.
|
||||
//*****************************************************************************
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void NMI_Handler(void) |
||||
{ while(1) {} |
||||
} |
||||
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void HardFault_Handler(void) |
||||
{ while(1) {} |
||||
} |
||||
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void SVC_Handler(void) |
||||
{ while(1) {} |
||||
} |
||||
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void PendSV_Handler(void) |
||||
{ while(1) {} |
||||
} |
||||
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void SysTick_Handler(void) |
||||
{ while(1) {} |
||||
} |
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Processor ends up here if an unexpected interrupt occurs or a specific
|
||||
// handler is not present in the application code.
|
||||
//
|
||||
//*****************************************************************************
|
||||
__attribute__ ((section(".after_vectors"))) |
||||
void IntDefaultHandler(void) |
||||
{ while(1) {} |
||||
} |
@ -0,0 +1,38 @@ |
||||
//*****************************************************************************
|
||||
// crp.c
|
||||
//
|
||||
// Source file to create CRP word expected by LPCXpresso IDE linker
|
||||
//*****************************************************************************
|
||||
//
|
||||
// Copyright(C) NXP Semiconductors, 2013
|
||||
// All rights reserved.
|
||||
//
|
||||
// Software that is described herein is for illustrative purposes only
|
||||
// which provides customers with programming information regarding the
|
||||
// LPC products. This software is supplied "AS IS" without any warranties of
|
||||
// any kind, and NXP Semiconductors and its licensor disclaim any and
|
||||
// all warranties, express or implied, including all implied warranties of
|
||||
// merchantability, fitness for a particular purpose and non-infringement of
|
||||
// intellectual property rights. NXP Semiconductors assumes no responsibility
|
||||
// or liability for the use of the software, conveys no license or rights under any
|
||||
// patent, copyright, mask work right, or any other intellectual property rights in
|
||||
// or to any products. NXP Semiconductors reserves the right to make changes
|
||||
// in the software without notification. NXP Semiconductors also makes no
|
||||
// representation or warranty that such application will be suitable for the
|
||||
// specified use without further testing or modification.
|
||||
//
|
||||
// Permission to use, copy, modify, and distribute this software and its
|
||||
// documentation is hereby granted, under NXP Semiconductors' and its
|
||||
// licensor's relevant copyrights in the software, without fee, provided that it
|
||||
// is used in conjunction with NXP Semiconductors microcontrollers. This
|
||||
// copyright, permission, and disclaimer notice must appear in all copies of
|
||||
// this code.
|
||||
//*****************************************************************************
|
||||
|
||||
#if defined (__CODE_RED) |
||||
#include <NXP/crp.h> |
||||
// Variable to store CRP value in. Will be placed automatically
|
||||
// by the linker when "Enable Code Read Protect" selected.
|
||||
// See crp.h header for more information
|
||||
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ; |
||||
#endif |
@ -0,0 +1,86 @@ |
||||
//*****************************************************************************
|
||||
// +--+
|
||||
// | ++----+
|
||||
// +-++ |
|
||||
// | |
|
||||
// +-+--+ |
|
||||
// | +--+--+
|
||||
// +----+ Copyright (c) 2013 Code Red Technologies Ltd.
|
||||
//
|
||||
// mtb.c
|
||||
//
|
||||
// Optionally defines an array to be used as a buffer for Micro Trace
|
||||
// Buffer (MTB) instruction trace on Cortex-M0+ parts
|
||||
//
|
||||
// Version : 130502
|
||||
//
|
||||
// Software License Agreement
|
||||
//
|
||||
// The software is owned by Code Red Technologies and/or its suppliers, and is
|
||||
// protected under applicable copyright laws. All rights are reserved. Any
|
||||
// use in violation of the foregoing restrictions may subject the user to criminal
|
||||
// sanctions under applicable laws, as well as to civil liability for the breach
|
||||
// of the terms and conditions of this license.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||
// USE OF THIS SOFTWARE FOR COMMERCIAL DEVELOPMENT AND/OR EDUCATION IS SUBJECT
|
||||
// TO A CURRENT END USER LICENSE AGREEMENT (COMMERCIAL OR EDUCATIONAL) WITH
|
||||
// CODE RED TECHNOLOGIES LTD.
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
/*******************************************************************
|
||||
* Symbols controlling behavior of this code... |
||||
* |
||||
* __MTB_DISABLE |
||||
* If this symbol is defined, then the buffer array for the MTB |
||||
* will not be created. |
||||
* |
||||
* __MTB_BUFFER_SIZE |
||||
* Symbol specifying the sizer of the buffer array for the MTB. |
||||
* This must be a power of 2 in size, and fit into the available |
||||
* RAM. The MTB buffer will also be aligned to its 'size'
|
||||
* boundary and be placed at the start of a RAM bank (which
|
||||
* should ensure minimal or zero padding due to alignment). |
||||
*
|
||||
* __MTB_RAM_BANK |
||||
* Allows MTB Buffer to be placed into specific RAM bank. When
|
||||
* this is not defined, the "default" (first if there are
|
||||
* several) RAM bank is used. |
||||
*******************************************************************/ |
||||
|
||||
// Ignore with none Code Red tools
|
||||
#if defined (__CODE_RED) |
||||
|
||||
// Allow MTB to be removed by setting a define (via command line)
|
||||
#if !defined (__MTB_DISABLE) |
||||
|
||||
// Allow for MTB buffer size being set by define set via command line
|
||||
// Otherwise provide small default buffer
|
||||
#if !defined (__MTB_BUFFER_SIZE) |
||||
#define __MTB_BUFFER_SIZE 128 |
||||
#endif |
||||
|
||||
// Check that buffer size requested is >0 bytes in size
|
||||
#if (__MTB_BUFFER_SIZE > 0) |
||||
// Pull in MTB related macros
|
||||
#include <cr_mtb_buffer.h> |
||||
|
||||
// Check if MYTB buffer is to be placed in specific RAM bank
|
||||
#if defined(__MTB_RAM_BANK) |
||||
// Place MTB buffer into explicit bank of RAM
|
||||
__CR_MTB_BUFFER_EXT(__MTB_BUFFER_SIZE,__MTB_RAM_BANK); |
||||
#else |
||||
// Place MTB buffer into 'default' bank of RAM
|
||||
__CR_MTB_BUFFER(__MTB_BUFFER_SIZE); |
||||
|
||||
#endif // defined(__MTB_RAM_BANK)
|
||||
|
||||
#endif // (__MTB_BUFFER_SIZE > 0)
|
||||
|
||||
#endif // !defined (__MTB_DISABLE)
|
||||
|
||||
#endif // defined (__CODE_RED)
|
||||
|
@ -0,0 +1,155 @@ |
||||
/*
|
||||
* lib_ENS_II1_lcd.c |
||||
* |
||||
* Created on: 9 oct. 2018 |
||||
* Modified on sept 2019 |
||||
* Author: juton |
||||
*/ |
||||
|
||||
#include <stdio.h> |
||||
#include "fro.h" |
||||
#include "rom_api.h" |
||||
#include "syscon.h" |
||||
#include "swm.h" |
||||
#include "i2c.h" |
||||
#include "lib_ENS_II1_lcd.h" |
||||
|
||||
void init_lcd(void){ |
||||
|
||||
uint32_t i; |
||||
uint8_t I2CMasterBuffer[BUFSIZE]; |
||||
uint32_t I2CWriteLength; |
||||
|
||||
// Provide main_clk as function clock to I2C0
|
||||
LPC_SYSCON->I2C0CLKSEL = FCLKSEL_MAIN_CLK; |
||||
|
||||
LPC_SYSCON->SYSAHBCLKCTRL0 |= I2C0|SWM; |
||||
|
||||
//configuration des pins 7 (SDA) et 14 (SCL) en open_drain
|
||||
LPC_IOCON->PIO0_7 = 0x000004A0; |
||||
LPC_IOCON->PIO0_14 = 0x000004A0; |
||||
|
||||
//assignation des pins 7 à SDA et 14 à SCL
|
||||
LPC_SWM->PINASSIGN5 = 0xFFFF0E07; |
||||
|
||||
// Give I2C0 a reset
|
||||
LPC_SYSCON->PRESETCTRL0 &= (I2C0_RST_N); |
||||
LPC_SYSCON->PRESETCTRL0 |= ~(I2C0_RST_N); |
||||
|
||||
//horloge I2c
|
||||
LPC_I2C0->DIV = 1; |
||||
LPC_I2C0->CFG = CFG_MSTENA; |
||||
|
||||
for(i=0;i<8000;i++); |
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CWriteLength = 1; |
||||
I2CMasterBuffer[0] = LCD_ADDR; |
||||
I2CMasterBuffer[1] = 0x00; |
||||
I2CMasterBuffer[2] = 0x38; /* configuration value, no change from default */ |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CWriteLength = 2; |
||||
I2CMasterBuffer[0] = LCD_ADDR; |
||||
I2CMasterBuffer[1] = 0x00; |
||||
I2CMasterBuffer[2] = 0x39; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CMasterBuffer[2] = 0x14; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CMasterBuffer[2] = 0x74; //contrast
|
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CMasterBuffer[2] = 0x54; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CMasterBuffer[2] = 0x6F; //follower
|
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CMasterBuffer[2] = 0x0E; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CMasterBuffer[2] = 0x01; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CMasterBuffer[2] = 0x06; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
|
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CMasterBuffer[2] = 0x02; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
} |
||||
|
||||
void lcd_puts(char* text_input) |
||||
{ |
||||
uint8_t I2CMasterBuffer[BUFSIZE]; |
||||
uint32_t I2CWriteLength; |
||||
int i=0; |
||||
while(text_input[i]!=0) |
||||
{ |
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CWriteLength = 2; |
||||
I2CMasterBuffer[0] = LCD_ADDR; |
||||
I2CMasterBuffer[1] = 0x40; |
||||
I2CMasterBuffer[2] = text_input[i]; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
i++; |
||||
} |
||||
} |
||||
|
||||
void lcd_putc(char c) |
||||
{ |
||||
uint8_t I2CMasterBuffer[BUFSIZE]; |
||||
uint32_t I2CWriteLength; |
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CWriteLength = 2; |
||||
I2CMasterBuffer[0] = LCD_ADDR; |
||||
I2CMasterBuffer[1] = 0x40; |
||||
I2CMasterBuffer[2] = c; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
} |
||||
|
||||
void lcd_gohome(void){ |
||||
uint8_t I2CMasterBuffer[BUFSIZE]; |
||||
uint32_t I2CWriteLength,i; |
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CWriteLength = 2; |
||||
I2CMasterBuffer[0] = LCD_ADDR; |
||||
I2CMasterBuffer[1] = 0x0; |
||||
I2CMasterBuffer[2] = 0x02; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
for(i=0;i<8000;i++); |
||||
} |
||||
|
||||
void lcd_position(char ligne, char colonne){ |
||||
uint8_t I2CMasterBuffer[BUFSIZE]; |
||||
uint32_t I2CWriteLength; |
||||
char cmd; |
||||
if (ligne > 1) ligne=1; |
||||
if (colonne >16) colonne = 16; |
||||
cmd = 0x80+(ligne*0x40)+colonne; |
||||
WaitI2CMasterState(LPC_I2C0, I2C_STAT_MSTST_IDLE); // Wait for the master state to be idle
|
||||
I2CWriteLength = 2; |
||||
I2CMasterBuffer[0] = LCD_ADDR; |
||||
I2CMasterBuffer[1] = 0x0; |
||||
I2CMasterBuffer[2] = cmd; |
||||
I2CmasterWrite( I2CMasterBuffer, I2CWriteLength ); |
||||
} |
@ -0,0 +1,65 @@ |
||||
#include "LPC8xx.h" |
||||
#include "syscon.h" |
||||
#include "swm.h" |
||||
#include "spi.h" |
||||
#include "uart.h" |
||||
#include "utilities.h" |
||||
#include "chip_setup.h" |
||||
#include "lib_ENS_II1_lcd.h" |
||||
|
||||
|
||||
#define SPIBAUD 115200 |
||||
#define SCK_PIN P0_19 |
||||
#define MOSI_PIN P0_18 |
||||
#define SSEL_PIN P0_21 |
||||
|
||||
//
|
||||
// Main routine
|
||||
//
|
||||
int main(void) { |
||||
|
||||
// Enable clocks to relevant peripherals
|
||||
LPC_SYSCON->SYSAHBCLKCTRL[0] |= (SPI0|SWM); |
||||
|
||||
// Configure the SWM (see peripherals_lib and swm.h)
|
||||
ConfigSWM(SPI0_SCK, SCK_PIN); |
||||
ConfigSWM(SPI0_MOSI, MOSI_PIN); |
||||
ConfigSWM(SPI0_SSEL0, SSEL_PIN); |
||||
|
||||
// Give SPI0 a reset
|
||||
LPC_SYSCON->PRESETCTRL[0] &= (SPI0_RST_N); |
||||
LPC_SYSCON->PRESETCTRL[0] |= ~(SPI0_RST_N); |
||||
|
||||
// Enable main_clk as function clock to SPI
|
||||
LPC_SYSCON->SPI0CLKSEL = FCLKSEL_MAIN_CLK; |
||||
|
||||
// Get main_clk frequency
|
||||
SystemCoreClockUpdate(); |
||||
|
||||
// Configure the SPI master's clock divider (value written to DIV divides by value+1)
|
||||
LPC_SPI0->DIV = (main_clk/SPIBAUD) - 1; |
||||
|
||||
// Configure the CFG register:
|
||||
// Enable=true, master, no LSB first, CPHA=0, CPOL=0, no loop-back, SSEL active low
|
||||
LPC_SPI0->CFG = SPI_CFG_ENABLE | SPI_CFG_MASTER; |
||||
|
||||
// Configure the SPI delay register (DLY)
|
||||
// Pre-delay = 0 clocks, post-delay = 0 clocks, frame-delay = 0 clocks, transfer-delay = 0 clocks
|
||||
LPC_SPI0->DLY = 0x0000; |
||||
|
||||
// Configure the SPI control register
|
||||
// Master: End-of-frame true, End-of-transfer true, RXIGNORE true, LEN 8 bits.
|
||||
LPC_SPI0->TXCTL = SPI_CTL_EOF | SPI_CTL_EOT | SPI_CTL_RXIGNORE | SPI_CTL_LEN(8); |
||||
|
||||
// Init LCD Screen
|
||||
init_lcd(); |
||||
lcd_puts("Test e-paper"); |
||||
lcd_position(1, 0); |
||||
lcd_puts("Init ok"); |
||||
|
||||
while(1) { |
||||
|
||||
}; |
||||
|
||||
} // end of main
|
||||
|
@ -0,0 +1,212 @@ |
||||
/**************************************************************************//**
|
||||
* @file system.c |
||||
* @brief CMSIS Device System Source File for |
||||
* NXP LPC80xm Device Series |
||||
* @version V1.0 |
||||
* @date 01. April 2017 |
||||
* |
||||
******************************************************************************/ |
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Important!
|
||||
// Please configure the desired initial clock setup for your project in:
|
||||
// $proj_name/inc/chip_setup.h
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#include <stdint.h> |
||||
#include "LPC8xx.h" |
||||
#include "swm.h" |
||||
#include "syscon.h" |
||||
#include "iocon.h" |
||||
#include "fro.h" |
||||
#include "rom_api.h" |
||||
#include "chip_setup.h" |
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Validate the the user's selctions
|
||||
//----------------------------------------------------------------------------
|
||||
#define CHECK_RANGE(val, min, max) ((val < min) || (val > max)) |
||||
#define CHECK_RSVD(val, mask) (val & mask) |
||||
|
||||
#if (CHECK_RANGE((FRO_FREQ_VAL), 0, 2)) |
||||
#error "FRO_FREQ_VAL: Value out of range." |
||||
#endif |
||||
|
||||
#if (CHECK_RSVD((MAINCLKSEL_VAL), ~0x00000003)) |
||||
#error "MAINCLKSEL: Invalid values of reserved bits!" |
||||
#endif |
||||
|
||||
#if (CHECK_RANGE((SYSAHBCLKDIV_VAL), 0, 255)) |
||||
#error "SYSAHBCLKDIV: Value out of range!" |
||||
#endif |
||||
|
||||
#if (CHECK_RANGE(CLKIN_CLK_VAL, 1000000, 25000000)) |
||||
#error "CLKIN frequency is out of bounds" |
||||
#endif |
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Calculate internal clock node frequency initial values
|
||||
//----------------------------------------------------------------------------
|
||||
#define __LPOSC_CLK (1000000) |
||||
|
||||
// determine output of the FRO_CLKDIV subsystem
|
||||
#if FRO_FREQ_VAL == 0 |
||||
#define __FRO_OSCOUT (18000000) |
||||
#elif FRO_FREQ_VAL == 2 |
||||
#define __FRO_OSCOUT (30000000) |
||||
#else |
||||
#define __FRO_OSCOUT (24000000) |
||||
#endif |
||||
|
||||
#define __FRO_DIVIDERS_OUT (__FRO_OSCOUT / 2) |
||||
|
||||
#define __FRO_CLK __FRO_DIVIDERS_OUT |
||||
|
||||
#define __FRO_DIV_CLK (__FRO_CLK / 2) |
||||
|
||||
// determine external_clk
|
||||
#define __SYS_OSC_CLK (0) |
||||
#define __CLKIN_CLK (CLKIN_CLK_VAL) |
||||
#define __EXTERNAL_CLK __CLKIN_CLK |
||||
|
||||
// determine main_clk
|
||||
#if MAINCLKSEL_VAL == 0 |
||||
#define __MAIN_CLK __FRO_CLK |
||||
#elif MAINCLKSEL_VAL == 1 |
||||
#define __MAIN_CLK __EXTERNAL_CLK |
||||
#elif MAINCLKSEL_VAL == 2 |
||||
#define __MAIN_CLK __LPOSC_CLK |
||||
#else |
||||
#define __MAIN_CLK __FRO_DIV_CLK |
||||
#endif |
||||
|
||||
// determine system_ahb_clk
|
||||
#define __SYSTEM_AHB_CLK (__MAIN_CLK / SYSAHBCLKDIV_VAL) |
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Function name: SystemInit
|
||||
// Sets up the initial chip clocking based on MACROs defined in chip_setup.h.
|
||||
//----------------------------------------------------------------------------
|
||||
void SystemInit (void) { |
||||
|
||||
uint32_t i; |
||||
|
||||
for (i = 1; i < 1; i++) __NOP(); // To avoid a warning if variable i is unused
|
||||
|
||||
// Enable clocks to IOCON and SWM upon entry, disable them upon exit
|
||||
LPC_SYSCON->SYSAHBCLKCTRL[0] |= (SWM | IOCON); |
||||
|
||||
// Step 0. Configure the FRO subsystem (choose the source for clocks fro and fro_div)
|
||||
#if (FRO_FREQ_VAL == 0) |
||||
//temp |= (FRO_18MHZ << FRO_FREQ_SEL);
|
||||
LPC_PWRD_API->set_fro_frequency(18000); |
||||
#elif (FRO_FREQ_VAL == 2) |
||||
//temp |= (FRO_30MHZ << FRO_FREQ_SEL);
|
||||
LPC_PWRD_API->set_fro_frequency(30000); |
||||
#else |
||||
//temp |= (FRO_24MHZ << FRO_FREQ_SEL);
|
||||
LPC_PWRD_API->set_fro_frequency(24000); |
||||
#endif |
||||
//temp = LPC_SYSCON->FROOSCCTRL; // Get the current register contents
|
||||
//temp &= ~(FRO_FREQSEL_MASK); // Preserve all but the bits of interest [1:0]
|
||||
///PC_SYSCON->FROOSCCTRL = temp; // Update the actual register
|
||||
//LPC_SYSCON->FRODIRECTCLKUEN = 0; // Toggle the update register for the output mux
|
||||
//LPC_SYSCON->FRODIRECTCLKUEN = 1;
|
||||
//while (!(LPC_SYSCON->FRODIRECTCLKUEN & 1)) __NOP(); // Wait for update to take effect
|
||||
|
||||
// Configure clk_in, if needed for main_clk or other (e.g. clock out, ADC clk.)
|
||||
#if ((MAINCLKSEL_VAL == 1) || (EXT_CLOCK_FORCE_ENABLE == 1)) |
||||
LPC_IOCON->PIO0_1 &= (IOCON_MODE_MASK | MODE_INACTIVE); // Disable pull-up and pull-down
|
||||
LPC_SWM->PINENABLE0 &= ~(CLKIN); // Enable CLKIN func.
|
||||
#endif |
||||
|
||||
// Step 2. Power up the LP OSC if it's needed for main_clk
|
||||
#if (MAINCLKSEL_VAL == 2) |
||||
LPC_SYSCON->PDRUNCFG &= ~(LPOSC_PD); // Power up the LP OSC
|
||||
for (i = 0; i < 200; i++) __NOP(); // Wait for osc to stabilize
|
||||
#endif |
||||
|
||||
// Step 4. Choose source for main_clk
|
||||
LPC_SYSCON->MAINCLKSEL = MAINCLKSEL_VAL; // Update the actual register
|
||||
LPC_SYSCON->MAINCLKUEN = 0; // Toggle update register
|
||||
LPC_SYSCON->MAINCLKUEN = 1; |
||||
while (!(LPC_SYSCON->MAINCLKUEN & 1)) __NOP(); // Wait until updated
|
||||
|
||||
// Step 6. Configure the main_clock divider
|
||||
LPC_SYSCON->SYSAHBCLKDIV = SYSAHBCLKDIV_VAL; // Update the actual register
|
||||
|
||||
LPC_SYSCON->SYSAHBCLKCTRL[0] &= ~(SWM | IOCON); // Turn off peripheral clocks before leaving
|
||||
|
||||
} // end of SystemInit
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Global clock variable declarations and initial value assignments
|
||||
//----------------------------------------------------------------------------
|
||||
uint32_t main_clk = __MAIN_CLK; |
||||
uint32_t lposc_clk = __LPOSC_CLK; |
||||
uint32_t fro_clk = __FRO_CLK; |
||||
uint32_t fro_div_clk = __FRO_DIV_CLK; |
||||
uint32_t system_ahb_clk = __SYSTEM_AHB_CLK; |
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Function name: SystemCoreClockUpdate
|
||||
// Determines the actual system_ahb_clk (core clock), main_clock,
|
||||
// fro_clk, and fro_div_clk frequencies
|
||||
// based on the current state of the device, and updates the associated
|
||||
// global clock variables.
|
||||
//----------------------------------------------------------------------------
|
||||
void SystemCoreClockUpdate (void) |
||||
{ |
||||
uint32_t external_clk; |
||||
uint32_t fro_oscout, fro_clock; |
||||
uint32_t temp; |
||||
|
||||
// Set the fro_clk and fro_div_clk variables according to current register settings
|
||||
temp = LPC_SYSCON->FROOSCCTRL; |
||||
switch (temp & FRO_FREQSEL_MASK) { |
||||
case 0: fro_oscout = 18000000; break; |
||||
case 1: fro_oscout = 24000000; break; |
||||
default:fro_oscout = 30000000; break; |
||||
} |
||||
fro_clock = 0; |
||||
if ((LPC_SYSCON->PDRUNCFG & (FROOUT_PD | FRO_PD)) == 0x0) { |
||||
fro_clock = fro_oscout; |
||||
} |
||||
fro_clk = fro_clock / 2; |
||||
fro_div_clk = fro_clk / 2; |
||||
|
||||
// Set the external_clk variable according to current register values
|
||||
//if (LPC_SYSCON->EXTCLKSEL == 0)
|
||||
// external_clk = __SYS_OSC_CLK;
|
||||
//else
|
||||
external_clk = __CLKIN_CLK; |
||||
|
||||
// Set the lposc_clk variable
|
||||
if (!(LPC_SYSCON->PDRUNCFG & LPOSC_PD)) { |
||||
lposc_clk = __LPOSC_CLK; |
||||
} |
||||
else { |
||||
lposc_clk = 0; |
||||
} |
||||
|
||||
// Set the main_clk variable according to current register values
|
||||
switch (LPC_SYSCON->MAINCLKSEL & 0x3) { |
||||
case 0: main_clk = fro_clk; break; |
||||
case 1: main_clk = external_clk; break; |
||||
case 2: main_clk = lposc_clk; break; |
||||
case 3: main_clk = fro_div_clk; break; |
||||
} |
||||
|
||||
// Set the system_ahb_clk (a.k.a SystemCoreClock) variable according to current register values
|
||||
system_ahb_clk = main_clk / LPC_SYSCON->SYSAHBCLKDIV; |
||||
|
||||
} // end of SystemCoreClockUpdate
|
Loading…
Reference in new issue