Started working on the fw. Created LTR329 light sensor library. Fixed the error in SHT4x library.
This commit is contained in:
		
							
								
								
									
										192
									
								
								fw/.cproject
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								fw/.cproject
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,192 @@ | ||||
| <?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.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.583977815"> | ||||
| 			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.583977815" moduleId="org.eclipse.cdt.core.settings" name="Debug"> | ||||
| 				<externalSettings/> | ||||
| 				<extensions> | ||||
| 					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> | ||||
| 					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> | ||||
| 					<extension id="org.eclipse.cdt.core.GmakeErrorParser" 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="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.583977815" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug"> | ||||
| 					<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.583977815." name="/" resourcePath=""> | ||||
| 						<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.2029743242" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug"> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1153055369" name="MCU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32L031G6Ux" valueType="string"/> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1505988584" name="CPU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1754745317" name="Core" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.867577247" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1391568853" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.5 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32L031G6Ux || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Drivers/CMSIS/Include | ../Core/Inc | ../Drivers/STM32L0xx_HAL_Driver/Inc | ../Drivers/CMSIS/Device/ST/STM32L0xx/Include ||  ||  || HSE_VALUE=8000000 | HSE_STARTUP_TIMEOUT=100 | HSI_VALUE=16000000 | LSE_STARTUP_TIMEOUT=5000 | LSE_VALUE=32768 | DATA_CACHE_ENABLE=1 | LSI_VALUE=37000 | MSI_VALUE=2097000 | VDD_VALUE=3300 | INSTRUCTION_CACHE_ENABLE=1 | STM32L031xx | USE_FULL_LL_DRIVER | PREFETCH_ENABLE=0 ||  || Drivers | Core/Startup | Core ||  ||  || ${workspace_loc:/${ProjName}/STM32L031G6UX_FLASH.ld} || true || NonSecure ||  || secure_nsclib.o ||  || None || " valueType="string"/> | ||||
| 							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.2062446076" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/> | ||||
| 							<builder buildPath="${workspace_loc:/iaq_wired_sensor}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1773727162" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.606108895" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler"> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.471998169" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/> | ||||
| 								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols.757865890" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols" valueType="definedSymbols"> | ||||
| 									<listOptionValue builtIn="false" value="DEBUG"/> | ||||
| 								</option> | ||||
| 								<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.366934534" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/> | ||||
| 							</tool> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.632390373" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler"> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.1522682025" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1801014298" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false"/> | ||||
| 								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.1372852757" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols"> | ||||
| 									<listOptionValue builtIn="false" value="DEBUG"/> | ||||
| 									<listOptionValue builtIn="false" value="STM32L031xx"/> | ||||
| 									<listOptionValue builtIn="false" value="USE_FULL_LL_DRIVER"/> | ||||
| 									<listOptionValue builtIn="false" value="HSE_VALUE=8000000"/> | ||||
| 									<listOptionValue builtIn="false" value="HSE_STARTUP_TIMEOUT=100"/> | ||||
| 									<listOptionValue builtIn="false" value="LSE_STARTUP_TIMEOUT=5000"/> | ||||
| 									<listOptionValue builtIn="false" value="LSE_VALUE=32768"/> | ||||
| 									<listOptionValue builtIn="false" value="MSI_VALUE=2097000"/> | ||||
| 									<listOptionValue builtIn="false" value="HSI_VALUE=16000000"/> | ||||
| 									<listOptionValue builtIn="false" value="LSI_VALUE=37000"/> | ||||
| 									<listOptionValue builtIn="false" value="VDD_VALUE=3300"/> | ||||
| 									<listOptionValue builtIn="false" value="PREFETCH_ENABLE=0"/> | ||||
| 									<listOptionValue builtIn="false" value="INSTRUCTION_CACHE_ENABLE=1"/> | ||||
| 									<listOptionValue builtIn="false" value="DATA_CACHE_ENABLE=1"/> | ||||
| 								</option> | ||||
| 								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.946149329" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath"> | ||||
| 									<listOptionValue builtIn="false" value="../Core/Inc"/> | ||||
| 									<listOptionValue builtIn="false" value="../Drivers/STM32L0xx_HAL_Driver/Inc"/> | ||||
| 									<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32L0xx/Include"/> | ||||
| 									<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/> | ||||
| 								</option> | ||||
| 								<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1544503170" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/> | ||||
| 							</tool> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.301849200" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler"> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.155930402" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.1962175978" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/> | ||||
| 							</tool> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.2099198825" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker"> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.484597079" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32L031G6UX_FLASH.ld}" valueType="string"/> | ||||
| 								<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.851999185" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input"> | ||||
| 									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | ||||
| 									<additionalInput kind="additionalinput" paths="$(LIBS)"/> | ||||
| 								</inputType> | ||||
| 							</tool> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1133881163" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.652442764" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1866567555" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.107840215" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.775784024" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1006686144" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1872222239" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1071618158" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.2064647262" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/> | ||||
| 						</toolChain> | ||||
| 					</folderInfo> | ||||
| 					<sourceEntries> | ||||
| 						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/> | ||||
| 						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/> | ||||
| 					</sourceEntries> | ||||
| 				</configuration> | ||||
| 			</storageModule> | ||||
| 			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> | ||||
| 		</cconfiguration> | ||||
| 		<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.781650198"> | ||||
| 			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.781650198" moduleId="org.eclipse.cdt.core.settings" name="Release"> | ||||
| 				<externalSettings/> | ||||
| 				<extensions> | ||||
| 					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> | ||||
| 					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> | ||||
| 					<extension id="org.eclipse.cdt.core.GmakeErrorParser" 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="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.781650198" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release"> | ||||
| 					<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.781650198." name="/" resourcePath=""> | ||||
| 						<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.1954020355" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release"> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1791773732" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32L031G6Ux" valueType="string"/> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1379739425" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.892262605" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1892826908" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/> | ||||
| 							<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1537311264" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.5 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32L031G6Ux || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Drivers/CMSIS/Include | ../Core/Inc | ../Drivers/STM32L0xx_HAL_Driver/Inc | ../Drivers/CMSIS/Device/ST/STM32L0xx/Include ||  ||  || HSE_VALUE=8000000 | HSE_STARTUP_TIMEOUT=100 | HSI_VALUE=16000000 | LSE_STARTUP_TIMEOUT=5000 | LSE_VALUE=32768 | DATA_CACHE_ENABLE=1 | LSI_VALUE=37000 | MSI_VALUE=2097000 | VDD_VALUE=3300 | INSTRUCTION_CACHE_ENABLE=1 | STM32L031xx | USE_FULL_LL_DRIVER | PREFETCH_ENABLE=0 ||  || Drivers | Core/Startup | Core ||  ||  || ${workspace_loc:/${ProjName}/STM32L031G6UX_FLASH.ld} || true || NonSecure ||  || secure_nsclib.o ||  || None || " valueType="string"/> | ||||
| 							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1782859951" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/> | ||||
| 							<builder buildPath="${workspace_loc:/iaq_wired_sensor}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1634455695" managedBuildOn="true" name="Gnu Make Builder.Release" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1354085929" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler"> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.375884652" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/> | ||||
| 								<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1707174983" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/> | ||||
| 							</tool> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.35876175" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler"> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.2107783365" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.227778796" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/> | ||||
| 								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.10117233" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols"> | ||||
| 									<listOptionValue builtIn="false" value="STM32L031xx"/> | ||||
| 									<listOptionValue builtIn="false" value="USE_FULL_LL_DRIVER"/> | ||||
| 									<listOptionValue builtIn="false" value="HSE_VALUE=8000000"/> | ||||
| 									<listOptionValue builtIn="false" value="HSE_STARTUP_TIMEOUT=100"/> | ||||
| 									<listOptionValue builtIn="false" value="LSE_STARTUP_TIMEOUT=5000"/> | ||||
| 									<listOptionValue builtIn="false" value="LSE_VALUE=32768"/> | ||||
| 									<listOptionValue builtIn="false" value="MSI_VALUE=2097000"/> | ||||
| 									<listOptionValue builtIn="false" value="HSI_VALUE=16000000"/> | ||||
| 									<listOptionValue builtIn="false" value="LSI_VALUE=37000"/> | ||||
| 									<listOptionValue builtIn="false" value="VDD_VALUE=3300"/> | ||||
| 									<listOptionValue builtIn="false" value="PREFETCH_ENABLE=0"/> | ||||
| 									<listOptionValue builtIn="false" value="INSTRUCTION_CACHE_ENABLE=1"/> | ||||
| 									<listOptionValue builtIn="false" value="DATA_CACHE_ENABLE=1"/> | ||||
| 								</option> | ||||
| 								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.300786558" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath"> | ||||
| 									<listOptionValue builtIn="false" value="../Core/Inc"/> | ||||
| 									<listOptionValue builtIn="false" value="../Drivers/STM32L0xx_HAL_Driver/Inc"/> | ||||
| 									<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32L0xx/Include"/> | ||||
| 									<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/> | ||||
| 								</option> | ||||
| 								<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1160143889" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/> | ||||
| 							</tool> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.543872720" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler"> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.450268074" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.2070767313" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.os" valueType="enumerated"/> | ||||
| 							</tool> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1437191537" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker"> | ||||
| 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.581268614" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32L031G6UX_FLASH.ld}" valueType="string"/> | ||||
| 								<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.1903039419" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input"> | ||||
| 									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | ||||
| 									<additionalInput kind="additionalinput" paths="$(LIBS)"/> | ||||
| 								</inputType> | ||||
| 							</tool> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1009981428" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.107642643" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.588822294" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.40664822" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.260472045" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.583631048" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.599715282" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.419142639" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/> | ||||
| 							<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1187494996" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/> | ||||
| 						</toolChain> | ||||
| 					</folderInfo> | ||||
| 					<sourceEntries> | ||||
| 						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/> | ||||
| 						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/> | ||||
| 					</sourceEntries> | ||||
| 				</configuration> | ||||
| 			</storageModule> | ||||
| 			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> | ||||
| 		</cconfiguration> | ||||
| 	</storageModule> | ||||
| 	<storageModule moduleId="org.eclipse.cdt.core.pathentry"/> | ||||
| 	<storageModule moduleId="cdtBuildSystem" version="4.0.0"> | ||||
| 		<project id="iaq_wired_sensor.null.742915967" name="iaq_wired_sensor"/> | ||||
| 	</storageModule> | ||||
| 	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> | ||||
| 	<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> | ||||
| 	<storageModule moduleId="scannerConfiguration"> | ||||
| 		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> | ||||
| 		<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.781650198;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.781650198.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.35876175;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1160143889"> | ||||
| 			<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/> | ||||
| 		</scannerConfigBuildInfo> | ||||
| 		<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.583977815;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.583977815.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.632390373;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1544503170"> | ||||
| 			<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/> | ||||
| 		</scannerConfigBuildInfo> | ||||
| 	</storageModule> | ||||
| 	<storageModule moduleId="refreshScope"/> | ||||
| 	<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/> | ||||
| </cproject> | ||||
							
								
								
									
										24
									
								
								fw/.mxproject
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								fw/.mxproject
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| [PreviousLibFiles] | ||||
| LibFiles=Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.c;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h;Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h;Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h;Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h;Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates/system_stm32l0xx.c;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/cmsis_version.h; | ||||
|  | ||||
| [PreviousUsedCubeIDEFiles] | ||||
| SourceFiles=Core/Src/main.c;Core/Src/stm32l0xx_it.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.c;Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates/system_stm32l0xx.c;Core/Src/system_stm32l0xx.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.c;Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates/system_stm32l0xx.c;Core/Src/system_stm32l0xx.c;;; | ||||
| HeaderPath=Drivers/STM32L0xx_HAL_Driver/Inc;Drivers/CMSIS/Device/ST/STM32L0xx/Include;Drivers/CMSIS/Include;Core/Inc; | ||||
| CDefines=USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;MSI_VALUE:2097000;HSI_VALUE:16000000;LSI_VALUE:37000;VDD_VALUE:3300;PREFETCH_ENABLE:0;INSTRUCTION_CACHE_ENABLE:1;DATA_CACHE_ENABLE:1;STM32L031xx;USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;MSI_VALUE:2097000;HSI_VALUE:16000000;LSI_VALUE:37000;VDD_VALUE:3300;PREFETCH_ENABLE:0;INSTRUCTION_CACHE_ENABLE:1;DATA_CACHE_ENABLE:1; | ||||
|  | ||||
| [PreviousGenFiles] | ||||
| AdvancedFolderStructure=true | ||||
| HeaderFileListSize=3 | ||||
| HeaderFiles#0=/home/david/VelesLabs/Smart Household/wired_sensors/RHT_Wired_Sensor/fw/Core/Inc/stm32l0xx_it.h | ||||
| HeaderFiles#1=/home/david/VelesLabs/Smart Household/wired_sensors/RHT_Wired_Sensor/fw/Core/Inc/stm32_assert.h | ||||
| HeaderFiles#2=/home/david/VelesLabs/Smart Household/wired_sensors/RHT_Wired_Sensor/fw/Core/Inc/main.h | ||||
| HeaderFolderListSize=1 | ||||
| HeaderPath#0=/home/david/VelesLabs/Smart Household/wired_sensors/RHT_Wired_Sensor/fw/Core/Inc | ||||
| HeaderFiles=; | ||||
| SourceFileListSize=2 | ||||
| SourceFiles#0=/home/david/VelesLabs/Smart Household/wired_sensors/RHT_Wired_Sensor/fw/Core/Src/stm32l0xx_it.c | ||||
| SourceFiles#1=/home/david/VelesLabs/Smart Household/wired_sensors/RHT_Wired_Sensor/fw/Core/Src/main.c | ||||
| SourceFolderListSize=1 | ||||
| SourcePath#0=/home/david/VelesLabs/Smart Household/wired_sensors/RHT_Wired_Sensor/fw/Core/Src | ||||
| SourceFiles=; | ||||
|  | ||||
							
								
								
									
										32
									
								
								fw/.project
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								fw/.project
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <projectDescription> | ||||
| 	<name>rht_wired_sensor</name> | ||||
| 	<comment></comment> | ||||
| 	<projects> | ||||
| 	</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>com.st.stm32cube.ide.mcu.MCUProjectNature</nature> | ||||
| 		<nature>com.st.stm32cube.ide.mcu.MCUCubeProjectNature</nature> | ||||
| 		<nature>org.eclipse.cdt.core.cnature</nature> | ||||
| 		<nature>com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature</nature> | ||||
| 		<nature>com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature</nature> | ||||
| 		<nature>com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature</nature> | ||||
| 		<nature>com.st.stm32cube.ide.mcu.MCURootProjectNature</nature> | ||||
| 		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> | ||||
| 		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> | ||||
| 	</natures> | ||||
| </projectDescription> | ||||
							
								
								
									
										27
									
								
								fw/.settings/language.settings.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								fw/.settings/language.settings.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <project> | ||||
| 	<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.583977815" name="Debug"> | ||||
| 		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> | ||||
| 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> | ||||
| 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> | ||||
| 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> | ||||
| 			<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/> | ||||
| 			<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1241374506400634155" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" 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> | ||||
| 		</extension> | ||||
| 	</configuration> | ||||
| 	<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.781650198" name="Release"> | ||||
| 		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> | ||||
| 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> | ||||
| 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> | ||||
| 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> | ||||
| 			<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/> | ||||
| 			<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1241374506400634155" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" 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> | ||||
| 		</extension> | ||||
| 	</configuration> | ||||
| </project> | ||||
							
								
								
									
										4
									
								
								fw/.settings/stm32cubeide.project.prefs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								fw/.settings/stm32cubeide.project.prefs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| 66BE74F758C12D739921AEA421D593D3=11 | ||||
| 8DF89ED150041C4CBC7CB9A9CAA90856=807411C90E25B050C1E13646B7FEB5AA | ||||
| DC22A860405A8BF2F2C095E5B6529F12=807411C90E25B050C1E13646B7FEB5AA | ||||
| eclipse.preferences.version=1 | ||||
							
								
								
									
										145
									
								
								fw/Core/Inc/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								fw/Core/Inc/config.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,145 @@ | ||||
| /* | ||||
|  * config.h | ||||
|  * | ||||
|  *  Created on: Sep 5, 2021 | ||||
|  *      Author: david | ||||
|  */ | ||||
|  | ||||
| #ifndef INC_CONFIG_H_ | ||||
| #define INC_CONFIG_H_ | ||||
|  | ||||
| /* TODO: add comments to everything */ | ||||
|  | ||||
| /* EXAMPLE of USAGE */ | ||||
| /* | ||||
| config_t new_config; | ||||
| new_config.led_co2_alert_limit1 = 1000; | ||||
| new_config.led_co2_alert_limit2 = 2000; | ||||
| new_config.led_on = 1; | ||||
| new_config.modbus_addr = 0x11; | ||||
| config_write(&new_config); | ||||
|  | ||||
| config_t config; | ||||
| config_read(&config); | ||||
| */ | ||||
|  | ||||
| #include "stdint.h" | ||||
| #include "stm32l0xx.h" | ||||
| /* DESCRIPTION OF THE DATA STRUCTURE */ | ||||
| /* | ||||
|  * Data are divided into two groups: | ||||
|  * A) DEVICE DESCRIPTION | ||||
|  * 		Can not be changed by the user. | ||||
|  * 		These data can be only read. | ||||
|  * 		These data are: | ||||
|  * 		* VENDOR NAME | ||||
|  * 		* PRODUCT CODE | ||||
|  * 		* PRODUCT NAME | ||||
|  * 		* REVISION | ||||
|  * 		* SERIAL NUMBER | ||||
|  * B) DEVICE CONFIGURATION | ||||
|  * 		Can be changed by the user. | ||||
|  * 		These data are: | ||||
|  * 		* MODBUS ADDRESS - Modbus Address of the device. Default is 254 | ||||
|  * 		* LED ON - Whether the CO2 Level Indication LED should be on or off | ||||
|  * 		* LED CO2 ALERT LIMIT 1 - CO2 Level when the LED color changes Green<->Yellow | ||||
|  * 		* LED CO2 ALERT LIMIT 2 - CO2 Level when the LED color changes Yellow<->Red | ||||
|  * | ||||
|  * Device description data can be accessed using direct readout from the memory | ||||
|  * Device configuration data can be accessed using config_t struct. | ||||
|  */ | ||||
| #define CONFIG_DEFAULT_LED_ON					1 | ||||
| #define CONFIG_DEFAULT_LED_BRIGHTNESS			100 | ||||
| #define CONFIG_DEFAULT_LED_ALERT1_LIMIT			1500 | ||||
| #define CONFIG_DEFAULT_LED_ALERT2_LIMIT			3000 | ||||
| #define CONFIG_DEFAULT_LED_SMOOTH				1 | ||||
| #define CONFIG_DEFAULT_SCD4x_T_OFFSET			0 | ||||
| #define CONFIG_DEFAULT_BAUDRATE_INDEX			0 | ||||
|  | ||||
| #define	CONFIG_MODBUS_ADDR_LENGTH				2 | ||||
| #define CONFIG_BAUDRATE_INDEX_LENGTH			2 | ||||
| #define CONFIG_LED_ON_LENGTH					2 | ||||
| #define CONFIG_LED_BRIGHTNESS_LENGTH			2 | ||||
| #define CONFIG_LED_SMOOTH_LENGTH				2 | ||||
| #define CONFIG_LED_ALERT1_LENGTH				2 | ||||
| #define CONFIG_LED_ALERT2_LENGTH				2 | ||||
| #define CONFIG_LED_ALERT2_LENGTH				2 | ||||
| #define CONFIG_SCD4x_T_OFFSET_LENGTH			2 | ||||
| #define VENDOR_NAME_LENGTH						64 | ||||
| #define	PRODUCT_CODE_LENGTH						64 | ||||
| #define	PRODUCT_NAME_LENGTH						64 | ||||
| #define REVISION_LENGTH							16 | ||||
| #define SERIAL_NUMBER_LENGTH					64 | ||||
|  | ||||
| #define EEPROM_EMPTY_BYTE						0x00 | ||||
|  | ||||
| #define EEPROM_ADDR_START 						((uint32_t)0x08080000) | ||||
| #define EEPROM_ADDR_END 						((uint32_t)0x080803FF) | ||||
|  | ||||
| #define CONFIG_EEPROM_ADDR_MODBUS_ADDR			EEPROM_ADDR_START | ||||
| #define CONFIG_EEPROM_ADDR_BAUDRATE_INDEX		(CONFIG_EEPROM_ADDR_MODBUS_ADDR 		+ CONFIG_MODBUS_ADDR_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_LED_ON				(CONFIG_EEPROM_ADDR_BAUDRATE_INDEX 		+ CONFIG_BAUDRATE_INDEX_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_LED_BRIGHTNESS		(CONFIG_EEPROM_ADDR_LED_ON				+ CONFIG_LED_ON_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_LED_SMOOTH			(CONFIG_EEPROM_ADDR_LED_BRIGHTNESS		+ CONFIG_LED_BRIGHTNESS_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_LED_ALERT1			(CONFIG_EEPROM_ADDR_LED_SMOOTH			+ CONFIG_LED_SMOOTH_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_LED_ALERT2			(CONFIG_EEPROM_ADDR_LED_ALERT1 			+ CONFIG_LED_ALERT1_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET		(CONFIG_EEPROM_ADDR_LED_ALERT2 			+ CONFIG_LED_ALERT2_LENGTH) | ||||
|  | ||||
| #define CONFIG_EEPROM_ADDR_VENDOR_NAME			(CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET 		+ CONFIG_SCD4x_T_OFFSET_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_PRODUCT_CODE			(CONFIG_EEPROM_ADDR_VENDOR_NAME 		+ VENDOR_NAME_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_PRODUCT_NAME			(CONFIG_EEPROM_ADDR_PRODUCT_CODE 		+ PRODUCT_CODE_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_REVISION				(CONFIG_EEPROM_ADDR_PRODUCT_NAME 		+ PRODUCT_NAME_LENGTH) | ||||
| #define CONFIG_EEPROM_ADDR_SERIAL_NUMBER		(CONFIG_EEPROM_ADDR_REVISION			+ REVISION_LENGTH) | ||||
|  | ||||
| #define FLASH_PEKEY1							((uint32_t)0x89ABCDEF) | ||||
| #define FLASH_PEKEY2							((uint32_t)0x02030405) | ||||
|  | ||||
| #define CONFIG_OK								0 | ||||
| #define CONFIG_ERROR							-1 | ||||
|  | ||||
| #define EEPROM_OK								0 | ||||
| #define EEPROM_ERROR							-1 | ||||
| #define EEPROM_UNLOCK_ERROR						-2 | ||||
| #define EEPROM_LOCK_ERROR						-3 | ||||
| #define EEPROM_WRITE_ERROR						-4 | ||||
| #define EEPROM_ADDR_ERROR						-5 | ||||
|  | ||||
| #define SYSTICK_FREQ_HZ							12000000 | ||||
| #define EEPROM_TIMEOUT_MAX_MS_INV				200 | ||||
|  | ||||
| /* | ||||
|  * Variables | ||||
|  */ | ||||
|  | ||||
| extern const uint32_t config_baudrates[]; | ||||
| extern const uint8_t config_baudrates_length; | ||||
|  | ||||
| /* | ||||
|  * Type definitions | ||||
|  */ | ||||
|  | ||||
| typedef struct | ||||
| { | ||||
| 	/* LED CONFIG */ | ||||
| 	uint8_t led_on; | ||||
| 	uint16_t led_brightness; | ||||
| 	uint8_t led_smooth; | ||||
| 	uint16_t led_co2_alert_limit1; | ||||
| 	uint16_t led_co2_alert_limit2; | ||||
|  | ||||
| 	/* SCD4x Temperature sensor offset */ | ||||
| 	int16_t scd4x_t_offset; | ||||
|  | ||||
| 	/* MODBUS CONFIG */ | ||||
| 	uint16_t modbus_addr; | ||||
| 	uint32_t baudrate_index; | ||||
| } config_t; | ||||
|  | ||||
|  | ||||
| /* const uint32_t baudrates [] = {19200, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200}; */ | ||||
|  | ||||
| int8_t config_read(config_t *config); | ||||
| int8_t config_write(config_t *config); | ||||
|  | ||||
| #endif /* INC_CONFIG_H_ */ | ||||
|  | ||||
							
								
								
									
										22
									
								
								fw/Core/Inc/crc8.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								fw/Core/Inc/crc8.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| /* | ||||
|  * crc.h | ||||
|  * | ||||
|  *  Created on: Jun 9, 2021 | ||||
|  *      Author: user | ||||
|  */ | ||||
|  | ||||
| #ifndef INC_CRC8_H_ | ||||
| #define INC_CRC8_H_ | ||||
|  | ||||
| #include "stdint.h" | ||||
|  | ||||
| /* | ||||
|  * Definitions & macros | ||||
|  */ | ||||
|  | ||||
| #define CRC8_POLYNOMIAL ((uint8_t)0x31) | ||||
| #define CRC8_INIT ((uint8_t)0xFF) | ||||
|  | ||||
| uint8_t crc8_calculate(const uint8_t *data, uint16_t count); | ||||
|  | ||||
| #endif /* INC_CRC8_H_ */ | ||||
							
								
								
									
										46
									
								
								fw/Core/Inc/i2c.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								fw/Core/Inc/i2c.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| /* | ||||
|  * i2c.h | ||||
|  * | ||||
|  *  Created on: Jun 8, 2021 | ||||
|  *      Author: user | ||||
|  */ | ||||
|  | ||||
| #ifndef INC_I2C_H_ | ||||
| #define INC_I2C_H_ | ||||
|  | ||||
| #include "stdint.h" | ||||
| #include "stm32l0xx_ll_i2c.h" | ||||
|  | ||||
| /* | ||||
|  * Defines & macros | ||||
|  */ | ||||
|  | ||||
| #define NULL 0 | ||||
|  | ||||
| /* | ||||
|  * Return values for I2C functions | ||||
|  */ | ||||
|  | ||||
| #define I2C_OK 0 | ||||
| #define I2C_ERROR -1 // generic error | ||||
| #define I2C_ERROR_NACK -2 // NACK was received during transfer | ||||
| #define I2C_ERROR_TX_INCOMPLETE -3 // number of TXed bytes != buffer length | ||||
| #define I2C_ERROR_RX_INCOMPLETE -4 // number of RXed bytes != buffer length | ||||
|  | ||||
| /* | ||||
|  * Type definitions | ||||
|  */ | ||||
|  | ||||
| typedef struct { | ||||
| 	I2C_TypeDef *i2c; | ||||
| } i2c_context_t; | ||||
|  | ||||
| /* | ||||
|  * Function declarations | ||||
|  */ | ||||
|  | ||||
| int8_t i2c_init(i2c_context_t *context); | ||||
| int8_t i2c_transmit(uint8_t address, uint8_t *buffer, int len); | ||||
| int8_t i2c_receive(uint8_t address, uint8_t *buffer, int len); | ||||
|  | ||||
| #endif /* INC_I2C_H_ */ | ||||
							
								
								
									
										93
									
								
								fw/Core/Inc/ltr329.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								fw/Core/Inc/ltr329.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| /* | ||||
|  * ltr329.h | ||||
|  * | ||||
|  *  Created on: May 22, 2022 | ||||
|  *      Author: david | ||||
|  */ | ||||
|  | ||||
| #ifndef INC_LTR329_H_ | ||||
| #define INC_LTR329_H_ | ||||
|  | ||||
| #include "stdint.h" | ||||
| #include "stm32l0xx_ll_i2c.h" | ||||
| #include "stm32l0xx_ll_utils.h" | ||||
| #include "i2c.h" | ||||
|  | ||||
| #define LTR329_I2C_ADDRESS 0x29 | ||||
|  | ||||
| /* | ||||
|  * Return values | ||||
|  */ | ||||
|  | ||||
| #define LTR329_OK 0 | ||||
| #define LTR329_ERROR -1 // generic error | ||||
|  | ||||
| /* LTR-329ALS-01 Registers */ | ||||
| /* Datasheet: https://optoelectronics.liteon.com/upload/download/DS86-2014-0006/LTR-329ALS-01_DS_V1.pdf */ | ||||
| typedef enum | ||||
| { | ||||
| 	LTR329_ALS_CONTR 			= 0x80,	/* RW */ | ||||
| 	LTR329_ALS_MEAS_RATE 		= 0x85, /* RW */ | ||||
| 	LTR329_PART_ID 				= 0x86, /* R */ | ||||
| 	LTR329_MANUFAC_ID 			= 0x87, /* R */ | ||||
| 	LTR329_ALS_DATA_CH1_0 		= 0x88, /* R */ | ||||
| 	LTR329_ALS_DATA_CH1_1 		= 0x89, /* R */ | ||||
| 	LTR329_ALS_DATA_CH0_0 		= 0x8A, /* R */ | ||||
| 	LTR329_ALS_DATA_CH0_1 		= 0x8B, /* R */ | ||||
| 	LTR329_ALS_STATUS 			= 0x8C /* R */ | ||||
| } ltr329_cmd_t; | ||||
|  | ||||
| /* Bit masks for ALS Mode */ | ||||
| typedef enum | ||||
| { | ||||
| 	LTR329_MODE_STAND_BY		= 0b00000000, /* DEFAULT */ | ||||
| 	LTR329_MODE_ACTIVE			= 0b00000001 | ||||
| } ltr329_als_mode_t; | ||||
|  | ||||
| /* Bit masks for Gain settings */ | ||||
| typedef enum | ||||
| { | ||||
| 	LTR329_GAIN_1X 				= 0b00000000, /* DEFAULT */ | ||||
| 	LTR329_GAIN_2X				= 0b00000100, | ||||
| 	LTR329_GAIN_4X				= 0b00001000, | ||||
| 	LTR329_GAIN_8X				= 0b00001100, | ||||
| 	LTR329_GAIN_48X				= 0b00011000, | ||||
| 	LTR329_GAIN_96X				= 0b00011100, | ||||
| 	LTR329_GAIN_RESERVED1		= 0b00010000, | ||||
| 	LTR329_GAIN_RESERVED2		= 0b00010100 | ||||
| } ltr329_gain_t; | ||||
|  | ||||
| /* Bit masks for Integration Time settings */ | ||||
| typedef enum | ||||
| { | ||||
| 	LTR329_INTEGRATION_50MS		= 0b00001000, | ||||
| 	LTR329_INTEGRATION_100MS 	= 0b00000000, /* DEFAULT */ | ||||
| 	LTR329_INTEGRATION_150MS	= 0b00100000, | ||||
| 	LTR329_INTEGRATION_200MS	= 0b00010000, | ||||
| 	LTR329_INTEGRATION_250MS	= 0b00101000, | ||||
| 	LTR329_INTEGRATION_300MS	= 0b00110000, | ||||
| 	LTR329_INTEGRATION_350MS	= 0b00111000, | ||||
| 	LTR329_INTEGRATION_400MS	= 0b00011000 | ||||
| } ltr329_integration_time_t; | ||||
|  | ||||
| /* Bit masks for Measurement Rate settings */ | ||||
| typedef enum | ||||
| { | ||||
| 	LTR329_MEAS_RATE_50MS		= 0b00000000, | ||||
| 	LTR329_MEAS_RATE_100MS		= 0b00000001, | ||||
| 	LTR329_MEAS_RATE_200MS		= 0b00000010, | ||||
| 	LTR329_MEAS_RATE_500MS		= 0b00000011, /* DEFAULT */ | ||||
| 	LTR329_MEAS_RATE_1000MS		= 0b00000100, | ||||
| 	LTR329_MEAS_RATE_2000MS		= 0b00000111 | ||||
| } ltr329_measurement_rate_t; | ||||
|  | ||||
| static int8_t ltr329_read_register (ltr329_cmd_t register_addr, uint8_t *register_data ); | ||||
| static int8_t ltr329_write_register (ltr329_cmd_t register_addr, uint8_t register_data); | ||||
| int8_t ltr329_write_settings (ltr329_gain_t gain, ltr329_als_mode_t mode, ltr329_integration_time_t integ_time, ltr329_measurement_rate_t meas_rate); | ||||
| int8_t ltr329_read_settings (ltr329_gain_t *gain, ltr329_als_mode_t *mode, ltr329_integration_time_t *integ_time, ltr329_measurement_rate_t *meas_rate); | ||||
| int8_t ltr329_sw_reset( void ); | ||||
| int8_t ltr329_measure (uint16_t *data_ch0, uint16_t *data_ch1); | ||||
| int8_t ltr329_read_status_register(uint8_t *data_valid, uint8_t *new_data, ltr329_gain_t *gain); | ||||
| int8_t ltr329_read_device_info (uint8_t *manufacturer_id, uint8_t *part_id); | ||||
|  | ||||
| #endif /* INC_LTR329_H_ */ | ||||
							
								
								
									
										118
									
								
								fw/Core/Inc/main.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								fw/Core/Inc/main.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,118 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file           : main.h | ||||
|   * @brief          : Header for main.c file. | ||||
|   *                   This file contains the common defines of the application. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2021 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under BSD 3-Clause license, | ||||
|   * the "License"; You may not use this file except in compliance with the | ||||
|   * License. You may obtain a copy of the License at: | ||||
|   *                        opensource.org/licenses/BSD-3-Clause | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
|  | ||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||||
| #ifndef __MAIN_H | ||||
| #define __MAIN_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "stm32l0xx_ll_i2c.h" | ||||
| #include "stm32l0xx_ll_iwdg.h" | ||||
| #include "stm32l0xx_ll_crs.h" | ||||
| #include "stm32l0xx_ll_rcc.h" | ||||
| #include "stm32l0xx_ll_bus.h" | ||||
| #include "stm32l0xx_ll_system.h" | ||||
| #include "stm32l0xx_ll_exti.h" | ||||
| #include "stm32l0xx_ll_cortex.h" | ||||
| #include "stm32l0xx_ll_utils.h" | ||||
| #include "stm32l0xx_ll_pwr.h" | ||||
| #include "stm32l0xx_ll_dma.h" | ||||
| #include "stm32l0xx_ll_tim.h" | ||||
| #include "stm32l0xx_ll_usart.h" | ||||
| #include "stm32l0xx_ll_gpio.h" | ||||
|  | ||||
| #if defined(USE_FULL_ASSERT) | ||||
| #include "stm32_assert.h" | ||||
| #endif /* USE_FULL_ASSERT */ | ||||
|  | ||||
| /* Private includes ----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Includes */ | ||||
| #include "i2c.h" | ||||
| #include "sht4x.h" | ||||
| #include "ltr329.h" | ||||
| #include "modbus.h" | ||||
| #include "config.h" | ||||
| /* USER CODE END Includes */ | ||||
|  | ||||
| /* Exported types ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN ET */ | ||||
|  | ||||
| /* USER CODE END ET */ | ||||
|  | ||||
| /* Exported constants --------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN EC */ | ||||
|  | ||||
| /* USER CODE END EC */ | ||||
|  | ||||
| /* Exported macro ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN EM */ | ||||
|  | ||||
| /* USER CODE END EM */ | ||||
|  | ||||
| /* Exported functions prototypes ---------------------------------------------*/ | ||||
| void Error_Handler(void); | ||||
|  | ||||
| /* USER CODE BEGIN EFP */ | ||||
| int8_t uart_disable_interrupts(void); | ||||
| int8_t uart_enable_interrupts(void); | ||||
|  | ||||
| /* USER CODE END EFP */ | ||||
|  | ||||
| /* Private defines -----------------------------------------------------------*/ | ||||
| #ifndef NVIC_PRIORITYGROUP_0 | ||||
| #define NVIC_PRIORITYGROUP_0         ((uint32_t)0x00000007) /*!< 0 bit  for pre-emption priority, | ||||
|                                                                  4 bits for subpriority */ | ||||
| #define NVIC_PRIORITYGROUP_1         ((uint32_t)0x00000006) /*!< 1 bit  for pre-emption priority, | ||||
|                                                                  3 bits for subpriority */ | ||||
| #define NVIC_PRIORITYGROUP_2         ((uint32_t)0x00000005) /*!< 2 bits for pre-emption priority, | ||||
|                                                                  2 bits for subpriority */ | ||||
| #define NVIC_PRIORITYGROUP_3         ((uint32_t)0x00000004) /*!< 3 bits for pre-emption priority, | ||||
|                                                                  1 bit  for subpriority */ | ||||
| #define NVIC_PRIORITYGROUP_4         ((uint32_t)0x00000003) /*!< 4 bits for pre-emption priority, | ||||
|                                                                  0 bit  for subpriority */ | ||||
| #endif | ||||
| /* USER CODE BEGIN Private defines */ | ||||
| #define SYSTEM_CLOCK_HZ				12000000 | ||||
| #define MEASUREMENT_PERIOD_S		6 | ||||
| #define RESET_MAGIC_NUMBER 			0xABCD | ||||
| #define MODBUS_ASSERT(x)				if (x == 0) return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED | ||||
| #define CELSIUS_TO_FAHRENHEIT(x)		(x * 9 / 5 + 320) | ||||
|  | ||||
| extern uint16_t usart2_rx_message_index; | ||||
| extern uint16_t usart2_rx_message_len; | ||||
| extern uint8_t usart2_rx_done; | ||||
| extern uint8_t usart2_rx_message_too_long; | ||||
|  | ||||
| extern uint8_t tim21_elapsed_period; | ||||
|  | ||||
| /* USER CODE END Private defines */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* __MAIN_H */ | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										231
									
								
								fw/Core/Inc/modbus.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										231
									
								
								fw/Core/Inc/modbus.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,231 @@ | ||||
| /* | ||||
|  * modbus.h | ||||
|  * | ||||
|  *  Created on: Jul 18, 2021 | ||||
|  *      Author: user | ||||
|  * | ||||
|  *  Modbus slave RTU library (does NOT support ASCII and TCP) | ||||
|  * | ||||
|  *  Useful links: | ||||
|  *  https://www.picotech.com/library/oscilloscopes/modbus-serial-protocol-decoding | ||||
|  *  https://ipc2u.com/articles/knowledge-base/modbus-rtu-made-simple-with-detailed-descriptions-and-examples/ | ||||
|  *  https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf | ||||
|  *  https://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf | ||||
|  * | ||||
|  *  Note that byte order is big endian. | ||||
|  * | ||||
|  * USAGE: | ||||
|  * | ||||
|  * 1) Implement functions modbus_callback_function() and modbus_uart_transmit_function() | ||||
|  *      - modbus_uart_transmit_function() sends data via UART | ||||
|  *      - modbus_callback_function() does the real work: read sensors, set outputs... | ||||
|  *        note that when filling buffers (e.g. input_registers[]) user must | ||||
|  *        ensure that all data is big-endian | ||||
|  *    These functions are implementation-specific. | ||||
|  * 2) Set device address (variable modbus_device_address); you can do this either | ||||
|  *      - setting modbus_device_address directly (modbus.h needs to be included, duh) | ||||
|  *      - using modbus_set_device_address(uint8_t address) function | ||||
|  *    Or you can leave address as-is (MODBUS_DEFAULT_SLAVE_ADDRESS) and set it via | ||||
|  *    Modbus during runtime | ||||
|  * 3) Call modbus_process_msg() after message reception; you need to observe Modbus RTU timing: | ||||
|  *      - pauses between chars in frame are less or equal to 1.5 char | ||||
|  *      - pauses between frames are at least 3.5 chars (of silence) | ||||
|  *    For more information see section 2.5.1.1 (MODBUS Message RTU Framing) | ||||
|  *    in "MODBUS over Serial Line: Specification and Implementation Guide" | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef SRC_MODBUS_H_ | ||||
| #define SRC_MODBUS_H_ | ||||
|  | ||||
| #include "stdint.h" | ||||
| #include "stddef.h" | ||||
| #include "string.h" | ||||
|  | ||||
| /* | ||||
|  * Defines & macros | ||||
|  */ | ||||
|  | ||||
| #define MODBUS_BROADCAST_ADDR 0 | ||||
| #define MODBUS_DEFAULT_SLAVE_ADDRESS 247 /* 255 may be used for bridge device */ | ||||
| /* minimal frame length is 4 bytes: 1 B slave address, 1 B function code, 2 B CRC */ | ||||
| #define MODBUS_MINIMAL_FRAME_LEN 4 | ||||
| #define MODBUS_MINIMAL_READWRITE_LEN 4 | ||||
| #define MODBUS_MINIMAL_WRITE_MULTIPLE_LEN 5 | ||||
| #define MODBUS_READ_DEVICE_ID_REQUEST_LEN 4 | ||||
| #define MODBUS_READ_DEVICE_ID_RESPONSE_HEADER_LEN 4 | ||||
| #define MODBUS_READ_DEVICE_ID_RESPONSE_OFFSET 3 | ||||
| #define MODBUS_MAX_RTU_FRAME_SIZE 256 | ||||
| #define MODBUS_BUFFER_SIZE MODBUS_MAX_RTU_FRAME_SIZE /* alias */ | ||||
| #define MODBUS_ERROR_FLAG 0x80 | ||||
| #define MODBUS_MAX_REGISTERS 125 | ||||
| /* read device id constants */ | ||||
| #define MODBUS_MEI 0x0E | ||||
| #define MODBUS_DEVICE_ID_INDIVIDUAL_ACCESS_FLAG 0x80 | ||||
| #define MODBUS_MORE_FOLLOWS 0xFF | ||||
| #define MODBUS_NO_MORE_FOLLOWS 0x00 | ||||
| #define MODBUS_BASIC_OBJECT_COUNT 3 | ||||
| #define MODBUS_REGULAR_OBJECT_COUNT 7 | ||||
|  | ||||
| /* | ||||
|  * Return values | ||||
|  */ | ||||
|  | ||||
| #define MODBUS_OK 0 | ||||
| #define MODBUS_ERROR -1 // generic error | ||||
| #define MODBUS_ERROR_CRC -2 // checksum failed | ||||
| #define MODBUS_ERROR_FRAME_INVALID -3 // invalid frame format / length | ||||
| #define MODBUS_ERROR_OUT_OF_BOUNDS -4 // requested register is out of bounds | ||||
| #define MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED -5 // function not implemented in callback | ||||
| #define MODBUS_ERROR_REGISTER_NOT_IMPLEMENTED -6 // register not implemented in callback | ||||
| #define MODBUS_ERROR_DEVICE_ID_NOT_IMPLEMENTED -7 | ||||
|  | ||||
| /* | ||||
|  * Data types | ||||
|  */ | ||||
|  | ||||
| /* Public functions codes (Modbus Application protocol specification, section 5.1) */ | ||||
| typedef enum { | ||||
| 	/* single bit access functions */ | ||||
| 	MODBUS_READ_COILS = 1, | ||||
| 	MODBUS_READ_DO = 1, // alias | ||||
| 	MODBUS_READ_DISCRETE_INPUTS = 2, | ||||
| 	MODBUS_READ_DI = 2, // alias | ||||
| 	MODBUS_WRITE_SINGLE_COIL = 5, | ||||
| 	MODBUS_WRITE_SINGLE_DO = 5, // alias | ||||
| 	MODBUS_WRITE_MULTIPLE_COILS = 15, | ||||
| 	MODBUS_WRITE_MULTIPLE_DO = 15, // alias | ||||
| 	/* 16-bit access functions */ | ||||
| 	MODBUS_READ_HOLDING_REGISTERS = 3, | ||||
| 	MODBUS_READ_AO = 3, // alias | ||||
| 	MODBUS_READ_INPUT_REGISTERS = 4, | ||||
| 	MODBUS_READ_AI = 4, // alias | ||||
| 	MODBUS_WRITE_SINGLE_REGISTER = 6, | ||||
| 	MODBUS_WRITE_SINGLE_AO = 6, // alias | ||||
| 	MODBUS_WRITE_MULTIPLE_REGISTERS = 16, | ||||
| 	MODBUS_WRITE_MULTIPLE_AO = 16, // alias | ||||
| 	MODBUS_MASK_WRITE_REGISTER = 22, | ||||
| 	MODBUS_READ_WRITE_MULTIPLE_REGISTERS = 23, | ||||
| 	MODBUS_READ_FIFO_QUEUE = 24, | ||||
| 	/* file record access */ | ||||
| 	MODBUS_READ_FILE_RECORD = 20, | ||||
| 	MODBUS_WRITE_FILE_RECORD = 21, | ||||
| 	/* diagnostics */ | ||||
| 	MODBUS_READ_EXCEPTION_STATUS = 7, | ||||
| 	MODBUS_DIAGNOSTIC = 8, /* sub codes: 00-18,20 */ | ||||
| 	MODBUS_GET_COM_EVENT_COUNTER = 11, | ||||
| 	MODBUS_GET_COM_EVENT_LOG = 12, | ||||
| 	MODBUS_REPORT_SLAVE_ID = 17, | ||||
| 	MODBUS_READ_DEVICE_IDENTIFICATION = 43, /* sub codes: 14 */ | ||||
| } modbus_function_code_t; | ||||
|  | ||||
| typedef enum { | ||||
| 	MODBUS_EXCEPTION_ILLEGAL_FUNCTION = 1, | ||||
| 	MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS = 2, | ||||
| 	MODBUS_EXCEPTION_ILLEGAL_REGISTER_QUANTITY = 2, | ||||
| 	MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE = 3, | ||||
| 	MODBUS_EXCEPTION_SLAVE_DEVICE_FAILURE = 4, | ||||
| 	MODBUS_EXCEPTION_ACKNOWLEDGE = 5, | ||||
| 	MODBUS_EXCEPTION_SLAVE_DEVICE_BUSY = 6, | ||||
| 	MODBUS_EXCEPTION_MEMORY_PARITY_ERROR = 8, | ||||
| 	MODBUS_EXCEPTION_GATEWAY_PATH_UNAVAILABLE = 10, | ||||
| 	MODBUS_EXCEPTION_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND = 11, | ||||
| 	MODBUS_EXCEPTION_ILLEGAL_DEVICE_ID_CODE = 3 | ||||
| } modbus_exception_code_t; | ||||
|  | ||||
| typedef struct { | ||||
| 	modbus_function_code_t function_code : 8; | ||||
| 	uint16_t register_address; // e.g. first register of A0: 0 | ||||
| 	uint16_t register_number;  // e.g. first register of A0: 40001 | ||||
| 	uint8_t  register_count; // number of registers to be read/written | ||||
|  | ||||
| 	modbus_exception_code_t exception; | ||||
|  | ||||
| 	uint8_t broadcast; // 1 if broadcast, 0 otherwise | ||||
|  | ||||
| 	union { | ||||
| 		uint8_t buffer8b[MODBUS_MAX_RTU_FRAME_SIZE]; | ||||
| 		uint16_t buffer16b[MODBUS_MAX_RTU_FRAME_SIZE/2]; | ||||
| 		uint16_t input_registers[MODBUS_MAX_REGISTERS]; | ||||
| 		uint16_t holding_registers[MODBUS_MAX_REGISTERS]; | ||||
| 		int16_t  input_registers_signed[MODBUS_MAX_REGISTERS]; | ||||
| 		int16_t  holding_registers_signed[MODBUS_MAX_REGISTERS]; | ||||
| 	}; | ||||
|  | ||||
| 	/* process device id */ | ||||
| 	uint8_t read_device_id_code; | ||||
| 	uint8_t object_id; | ||||
| } modbus_transaction_t; | ||||
|  | ||||
| typedef enum { | ||||
| 	MODBUS_DO_START_NUMBER = 1, // Discrete output coils | ||||
| 	MODBUS_DO_END_NUMBER = 9999, | ||||
| 	MODBUS_DI_START_NUMBER = 10001, // Discrete input contacts | ||||
| 	MODBUS_DI_END_NUMBER = 19999, | ||||
| 	MODBUS_AI_START_NUMBER = 30001, // Analog input registers | ||||
| 	MODBUS_AI_END_NUMBER = 39999, | ||||
| 	MODBUS_AO_START_NUMBER = 40001, // Analog output (holding registers) | ||||
| 	MODBUS_AO_END_NUMBER = 49999 | ||||
| } modbus_register_number_t; | ||||
|  | ||||
| typedef enum { | ||||
| 	MODBUS_CONFORMITY_BASIC = 1, | ||||
| 	MODBUS_CONFORMITY_REGULAR = 2, | ||||
| 	MODBUS_CONFORMITY_EXTENDED = 3, | ||||
| 	MODBUS_INDIVIDUAL_ACCESS = 4 /* not actually part of conformity, but I'll keep it here anyway */ | ||||
| } modbus_conformity_level_t; | ||||
|  | ||||
| /* Device ID datatypes */ | ||||
| #define MODBUS_DEVICE_ID_OBJECT_NUM 7 | ||||
| typedef struct { | ||||
| 	union { | ||||
| 		struct { | ||||
| 			/* Basic category (mandatory part) */ | ||||
| 			char *VendorName; | ||||
| 			char *ProductCode; | ||||
| 			char *MajorMinorRevision; | ||||
| 			/* Regular category (optional part) */ | ||||
| 			char *VendorUrl; | ||||
| 			char *ProductName; | ||||
| 			char *ModelName; | ||||
| 			char *UserApplicationName; | ||||
| 			/* Extended category (optional part) */ | ||||
| 			// Nothing here yet! | ||||
| 		} object_name; | ||||
| 		char *object_id[MODBUS_DEVICE_ID_OBJECT_NUM]; | ||||
| 	}; | ||||
| 	uint8_t conformity_level; | ||||
| } modbus_device_id_t; | ||||
|  | ||||
| /* | ||||
|  * Global variables | ||||
|  */ | ||||
|  | ||||
| /* device address: declared in modbus.c */ | ||||
| extern uint8_t modbus_slave_address; | ||||
|  | ||||
| /* shared modbus buffer; defined in modbus.c; may be used elsewhere in code */ | ||||
| extern uint8_t modbus_buffer[]; | ||||
|  | ||||
| /* modbus device id struct */ | ||||
| extern modbus_device_id_t *modbus_device_id; | ||||
|  | ||||
| /* | ||||
|  * Function prototypes | ||||
|  */ | ||||
|  | ||||
| /* process message: should be called in when modbus message was received (e.g. in main.c) | ||||
|  * modbus_process_msg() may call following functions: | ||||
|  *     - modbus_callback_function() if data readout is requested | ||||
|  *     - modbus_uart_transmit_function() if response is required | ||||
|  * Both functions have to be implemented by user. | ||||
|  */ | ||||
| int8_t modbus_slave_process_msg(const uint8_t *buffer, int len); | ||||
| int8_t modbus_slave_init_device_id(modbus_device_id_t *device_id); | ||||
| int8_t modbus_slave_set_address(uint8_t address); | ||||
| /* modbus callback function type - should be implemented by user (e.g. in main.c) */ | ||||
| int8_t modbus_slave_callback(modbus_transaction_t *transaction); | ||||
| /* UART transmit function type - should be implemented by user (e.g. in main.c) */ | ||||
| int8_t modbus_transmit_function(uint8_t *buffer, uint16_t data_len); | ||||
|  | ||||
| #endif /* SRC_MODBUS_H_ */ | ||||
							
								
								
									
										57
									
								
								fw/Core/Inc/sht4x.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								fw/Core/Inc/sht4x.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| /* | ||||
|  * sht4x.h | ||||
|  * | ||||
|  *  Created on: Jun 8, 2021 | ||||
|  *      Author: user | ||||
|  */ | ||||
|  | ||||
| #ifndef INC_SHT4X_H_ | ||||
| #define INC_SHT4X_H_ | ||||
|  | ||||
| #include "stdint.h" | ||||
| #include "stm32l0xx_ll_i2c.h" | ||||
| #include "stm32l0xx_ll_utils.h" | ||||
| #include "i2c.h" | ||||
| #include "crc8.h" | ||||
|  | ||||
| /* | ||||
|  * Defines & macros | ||||
|  */ | ||||
|  | ||||
| #define SHT4X_I2C_ADDRESS 0x44 | ||||
|  | ||||
| /* | ||||
|  * Return values | ||||
|  */ | ||||
|  | ||||
| #define SHT4X_OK 0 | ||||
| #define SHT4X_ERROR -1 // generic error | ||||
| #define SHT4X_CRC8_ERROR -2 // checksum failed | ||||
|  | ||||
| /* | ||||
|  * Data types | ||||
|  */ | ||||
|  | ||||
| typedef enum { | ||||
| 	SHT4X_START_MEAS_HIGH_PRECISION = 0xFD, | ||||
| 	SHT4X_START_MEAS_MEDIUM_PRECISION = 0xF6, | ||||
| 	SHT4X_START_MEAS_LOW_PRECISION = 0xE0, | ||||
| 	SHT4X_READ_SERIAL = 0x89, | ||||
| 	SHT4X_SOFT_RESET = 0x94, | ||||
| 	SHT4X_HEATER_200_mW_1_s = 0x39, | ||||
| 	SHT4X_HEATER_200_mW_01_s = 0x32, | ||||
| 	SHT4X_HEATER_110_mW_1_s = 0x2F, | ||||
| 	SHT4X_HEATER_110_mW_01_s = 0x24, | ||||
| 	SHT4X_HEATER_20_mW_1_s = 0x1E, | ||||
| 	SHT4X_HEATER_20_mW_01_s = 0x15 | ||||
| } sht4x_cmd_t; | ||||
|  | ||||
| /* | ||||
|  * Function prototypes | ||||
|  */ | ||||
|  | ||||
| int8_t sht4x_send_cmd(sht4x_cmd_t cmd); | ||||
| int8_t sht4x_read_data(uint8_t *buffer, int len); | ||||
| int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity); | ||||
|  | ||||
| #endif /* INC_SHT4X_H_ */ | ||||
							
								
								
									
										53
									
								
								fw/Core/Inc/stm32_assert.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								fw/Core/Inc/stm32_assert.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    stm32_assert.h | ||||
|   * @brief   STM32 assert file. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2018 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under BSD 3-Clause license, | ||||
|   * the "License"; You may not use this file except in compliance with the | ||||
|   * License. You may obtain a copy of the License at: | ||||
|   *                        opensource.org/licenses/BSD-3-Clause | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
|  | ||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||||
| #ifndef __STM32_ASSERT_H | ||||
| #define __STM32_ASSERT_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|  extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* Exported types ------------------------------------------------------------*/ | ||||
| /* Exported constants --------------------------------------------------------*/ | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| /* Exported macro ------------------------------------------------------------*/ | ||||
| #ifdef  USE_FULL_ASSERT | ||||
| /** | ||||
|   * @brief  The assert_param macro is used for function's parameters check. | ||||
|   * @param  expr: If expr is false, it calls assert_failed function | ||||
|   *         which reports the name of the source file and the source | ||||
|   *         line number of the call that failed. | ||||
|   *         If expr is true, it returns no value. | ||||
|   * @retval None | ||||
|   */ | ||||
|  #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) | ||||
| /* Exported functions ------------------------------------------------------- */ | ||||
|   void assert_failed(uint8_t* file, uint32_t line); | ||||
| #else | ||||
|   #define assert_param(expr) ((void)0U) | ||||
| #endif /* USE_FULL_ASSERT */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* __STM32_ASSERT_H */ | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										65
									
								
								fw/Core/Inc/stm32l0xx_it.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								fw/Core/Inc/stm32l0xx_it.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    stm32l0xx_it.h | ||||
|   * @brief   This file contains the headers of the interrupt handlers. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2021 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under BSD 3-Clause license, | ||||
|   * the "License"; You may not use this file except in compliance with the | ||||
|   * License. You may obtain a copy of the License at: | ||||
|   *                        opensource.org/licenses/BSD-3-Clause | ||||
|   * | ||||
|  ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
|  | ||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||||
| #ifndef __STM32L0xx_IT_H | ||||
| #define __STM32L0xx_IT_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|  extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* Private includes ----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Includes */ | ||||
|  | ||||
| /* USER CODE END Includes */ | ||||
|  | ||||
| /* Exported types ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN ET */ | ||||
|  | ||||
| /* USER CODE END ET */ | ||||
|  | ||||
| /* Exported constants --------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN EC */ | ||||
| /* USER CODE END EC */ | ||||
|  | ||||
| /* Exported macro ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN EM */ | ||||
|  | ||||
| /* USER CODE END EM */ | ||||
|  | ||||
| /* Exported functions prototypes ---------------------------------------------*/ | ||||
| void NMI_Handler(void); | ||||
| void HardFault_Handler(void); | ||||
| void SVC_Handler(void); | ||||
| void PendSV_Handler(void); | ||||
| void SysTick_Handler(void); | ||||
| void TIM21_IRQHandler(void); | ||||
| void USART2_IRQHandler(void); | ||||
| /* USER CODE BEGIN EFP */ | ||||
| /* USER CODE END EFP */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* __STM32L0xx_IT_H */ | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										243
									
								
								fw/Core/Src/config.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										243
									
								
								fw/Core/Src/config.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,243 @@ | ||||
| /* | ||||
|  * config.c | ||||
|  * | ||||
|  *  Created on: Sep 5, 2021 | ||||
|  *      Author: david | ||||
|  */ | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| /* | ||||
|  * Variables | ||||
|  */ | ||||
| /* Baudrates - STM32L0xx can do baudrates from 1200 to 115200 | ||||
|  * - default value has index 0 */ | ||||
| const uint32_t config_baudrates[] = { | ||||
| 			19200,	// 0 | ||||
| 			4800,	// 1 | ||||
| 			9600,	// 2 | ||||
| 			14400,	// 3 | ||||
| 			19200,	// 4 | ||||
| 			28800,	// 5 | ||||
| 			38400,	// 6 | ||||
| 			57600,	// 7 | ||||
| 			76800,	// 8 | ||||
| 			115200	// 9 | ||||
| }; | ||||
| const uint8_t config_baudrates_length = 10; | ||||
|  | ||||
| /* Function to lock the EEPROM */ | ||||
| static int8_t eeprom_lock(void); | ||||
| /* Function to unlock the EEPROM */ | ||||
| static int8_t eeprom_unlock(void); | ||||
| /* Function to write one byte to the EEPROM */ | ||||
| /* IMPORTANT: EEPROM must be unlocked first */ | ||||
| static int8_t eeprom_program_byte(uint32_t addr, uint8_t ee_data); | ||||
| /* Function to write two bytes to the EEPROM */ | ||||
| /* IMPORTANT: EEPROM must be unlocked first */ | ||||
| static int8_t eeprom_program_halfword(uint32_t addr, uint16_t ee_data); | ||||
| /* Function to write four bytes to the EEPROM */ | ||||
| /* IMPORTANT: EEPROM must be unlocked first */ | ||||
| static int8_t eeprom_program_word(uint32_t addr, uint32_t ee_data); | ||||
|  | ||||
| int8_t config_read(config_t *config) | ||||
| { | ||||
| 	config->modbus_addr = *(uint16_t *) (CONFIG_EEPROM_ADDR_MODBUS_ADDR); | ||||
| 	config->baudrate_index = *(uint16_t *) (CONFIG_EEPROM_ADDR_BAUDRATE_INDEX); | ||||
| 	config->led_on = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ON); | ||||
| 	config->led_brightness = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_BRIGHTNESS); | ||||
| 	config->led_smooth = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_SMOOTH); | ||||
| 	config->led_co2_alert_limit1 = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ALERT1); | ||||
| 	config->led_co2_alert_limit2 = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ALERT2); | ||||
| 	config->scd4x_t_offset = *(int16_t *) (CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET); | ||||
|  | ||||
| 	/* Check if the EEPROM is initialized - do not check: | ||||
| 	 *  LED ON | ||||
| 	 *  LED SMOOTH | ||||
| 	 *  SCD4x T OFFSET | ||||
| 	 *  BAUDRATE INDEX | ||||
| 	 *  those can be 0 */ | ||||
| 	if ((config->modbus_addr 			== EEPROM_EMPTY_BYTE) || | ||||
| 		(config->led_co2_alert_limit1 	== EEPROM_EMPTY_BYTE) || | ||||
| 		(config->led_co2_alert_limit2 	== EEPROM_EMPTY_BYTE) || | ||||
| 		(config->led_brightness 		== EEPROM_EMPTY_BYTE)) | ||||
| 	{ | ||||
| 		return CONFIG_ERROR; | ||||
| 	} | ||||
| 	return CONFIG_OK; | ||||
| } | ||||
|  | ||||
| int8_t config_write(config_t *config) | ||||
| { | ||||
| 	/* Unlock the EEPROM */ | ||||
| 	if (eeprom_unlock() != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_UNLOCK_ERROR; | ||||
| 	} | ||||
| 	/* Reset the ERASE and DATA bits in the FLASH_PECR register to disable any residual erase */ | ||||
| 	FLASH->PECR = FLASH->PECR & ~(FLASH_PECR_ERASE | FLASH_PECR_DATA); | ||||
|  | ||||
| 	/* Write MODBUS ADDRESS */ | ||||
| 	if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_MODBUS_ADDR, config->modbus_addr)  != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_WRITE_ERROR; | ||||
| 	} | ||||
| 	/* Write BAUDRATE */ | ||||
| 	if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_BAUDRATE_INDEX, config->baudrate_index)  != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_WRITE_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	/* Write LED ON */ | ||||
| 	if (eeprom_program_byte(CONFIG_EEPROM_ADDR_LED_ON, config->led_on)  != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_WRITE_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	/* Write LED BRIGHTNESS */ | ||||
| 	if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_LED_BRIGHTNESS, config->led_brightness)  != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_WRITE_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	/* Write LED SMOOTH */ | ||||
| 	if (eeprom_program_byte(CONFIG_EEPROM_ADDR_LED_SMOOTH, config->led_smooth)  != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_WRITE_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	/* Write LED CO2 ALERT LIMIT 1 */ | ||||
| 	if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_LED_ALERT1, config->led_co2_alert_limit1) != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_WRITE_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	/* Write LED CO2 ALERT LIMIT 2 */ | ||||
| 	if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_LED_ALERT2, config->led_co2_alert_limit2) != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_WRITE_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	/* Write LED SCD4x TEMPERATURE OFFSET */ | ||||
| 	if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET, config->scd4x_t_offset) != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_WRITE_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	/* Lock EEPROM*/ | ||||
| 	if (eeprom_lock() != EEPROM_OK) | ||||
| 	{ | ||||
| 		return EEPROM_LOCK_ERROR; | ||||
| 	} | ||||
| 	return CONFIG_OK; | ||||
| } | ||||
|  | ||||
| static int8_t eeprom_lock(void) | ||||
| { | ||||
| 	uint32_t tick_start = SysTick->VAL; | ||||
|   	while ((FLASH->SR & FLASH_SR_BSY) != 0) /* Wait for FLASH to be free */ | ||||
|   	{ | ||||
|  	   /* Timeout test */ | ||||
|  	   /* The maximum writing time is 3.94ms (half-word) */ | ||||
|   		uint32_t tick_last = SysTick->VAL; | ||||
|   		uint32_t tick_diff; | ||||
|   		if (tick_start <= tick_last) | ||||
|   		{ | ||||
|   			tick_diff = tick_last - tick_start; | ||||
|   		} else | ||||
|   		{ | ||||
|   			tick_diff = (0xFFFFFFFF - tick_last) + tick_start; | ||||
|   		} | ||||
|  | ||||
|  		/* If the time difference is more than 5ms */ | ||||
|   		if (tick_diff >= (uint32_t)((uint32_t)SYSTICK_FREQ_HZ*(uint32_t)EEPROM_TIMEOUT_MAX_MS_INV)) | ||||
|   		{ | ||||
|   			return EEPROM_LOCK_ERROR; | ||||
|   		} | ||||
|   	} | ||||
|  | ||||
|   	FLASH->PECR = FLASH->PECR & ~(FLASH_PECR_ERRIE | FLASH_PECR_EOPIE); /* disable flash interrupts */ | ||||
|   	FLASH->PECR = FLASH->PECR | FLASH_PECR_PELOCK; /* Lock memory with PELOCK */ | ||||
|  | ||||
|   	return EEPROM_OK; | ||||
| } | ||||
|  | ||||
| static int8_t eeprom_unlock(void) | ||||
| { | ||||
| 	uint32_t tick_start = SysTick->VAL; | ||||
|    while ((FLASH->SR & FLASH_SR_BSY) != 0) /* Wait for FLASH to be free */ | ||||
|    { | ||||
| 	   /* Timeout test */ | ||||
| 	   /* The maximum writing time is 3.94ms (half-word) */ | ||||
|  		uint32_t tick_last = SysTick->VAL; | ||||
|  		uint32_t tick_diff; | ||||
|  		if (tick_start <= tick_last) | ||||
|  		{ | ||||
|  			tick_diff = tick_last - tick_start; | ||||
|  		} else | ||||
|  		{ | ||||
|  			tick_diff = (0xFFFFFFFF - tick_last) + tick_start; | ||||
|  		} | ||||
|  | ||||
|  		/* If the time difference is more than 5ms */ | ||||
|   		if (tick_diff >= (uint32_t)((uint32_t)SYSTICK_FREQ_HZ*(uint32_t)EEPROM_TIMEOUT_MAX_MS_INV)) | ||||
|  		{ | ||||
|  			return EEPROM_UNLOCK_ERROR; | ||||
|  		} | ||||
|    } | ||||
|    if ((FLASH->PECR & FLASH_PECR_PELOCK) != 0) /* If PELOCK is locked */ | ||||
|    { | ||||
| 	   /* Unlock PELOCK */ | ||||
|       FLASH->PEKEYR = FLASH_PEKEY1; /* PEKEY1 */ | ||||
|       FLASH->PEKEYR = FLASH_PEKEY2; /* PEKEY2 */ | ||||
|    } | ||||
|    FLASH->PECR = FLASH->PECR | (FLASH_PECR_ERRIE | FLASH_PECR_EOPIE); /* enable flash interrupts */ | ||||
|    return EEPROM_OK; | ||||
| } | ||||
|  | ||||
| static int8_t eeprom_program_byte(uint32_t addr, uint8_t ee_data) | ||||
| { | ||||
| 	if ((EEPROM_ADDR_START <= addr) && (addr <= EEPROM_ADDR_END - 1)) | ||||
| 	{ | ||||
| 		*(uint8_t *)(addr) = ee_data; /* write data to EEPROM */ | ||||
| 		if (*(uint8_t *)(addr) != ee_data) | ||||
| 		{ | ||||
| 			return EEPROM_WRITE_ERROR; | ||||
| 		} | ||||
| 		return EEPROM_OK; | ||||
| 	} else | ||||
| 	{ | ||||
| 		return EEPROM_ADDR_ERROR; | ||||
| 	} | ||||
| } | ||||
| static int8_t eeprom_program_halfword(uint32_t addr, uint16_t ee_data) | ||||
| { | ||||
| 	if ((EEPROM_ADDR_START <= addr) && (addr <= EEPROM_ADDR_END - 2)) | ||||
| 	{ | ||||
| 		*(uint16_t *)(addr) = ee_data; /* write data to EEPROM */ | ||||
| 		if (*(uint16_t *)(addr) != ee_data) | ||||
| 		{ | ||||
| 			return EEPROM_WRITE_ERROR; | ||||
| 		} | ||||
| 		return EEPROM_OK; | ||||
| 	} else | ||||
| 	{ | ||||
| 		return EEPROM_ADDR_ERROR; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static int8_t eeprom_program_word(uint32_t addr, uint32_t ee_data) | ||||
| { | ||||
| 	if ((EEPROM_ADDR_START <= addr) && (addr <= EEPROM_ADDR_END - 4)) | ||||
| 	{ | ||||
| 		*(uint32_t *)(addr) = ee_data; /* write data to EEPROM */ | ||||
| 		if (*(uint32_t *)(addr) != ee_data) | ||||
| 		{ | ||||
| 			return EEPROM_WRITE_ERROR; | ||||
| 		} | ||||
| 		return EEPROM_OK; | ||||
| 	} else | ||||
| 	{ | ||||
| 		return EEPROM_ADDR_ERROR; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										28
									
								
								fw/Core/Src/crc8.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								fw/Core/Src/crc8.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| /* | ||||
|  * crc.c | ||||
|  * | ||||
|  *  Created on: Jun 9, 2021 | ||||
|  *      Author: user | ||||
|  */ | ||||
|  | ||||
| #include "crc8.h" | ||||
|  | ||||
| /* Stolen from Sensirion SCD4x datasheet, section 3.11 */ | ||||
| uint8_t crc8_calculate(const uint8_t *data, uint16_t count) | ||||
| { | ||||
| 	uint16_t current_byte; | ||||
| 	uint8_t crc = CRC8_INIT; | ||||
| 	uint8_t crc_bit; | ||||
| 	/* calculates 8-Bit checksum with given polynomial */ | ||||
| 	for (current_byte = 0; current_byte < count; ++current_byte) { | ||||
| 		crc ^= (data[current_byte]); | ||||
| 		for(crc_bit = 8; crc_bit > 0; --crc_bit) { | ||||
| 			if (crc & 0x80) { | ||||
| 				crc =(crc << 1) ^ CRC8_POLYNOMIAL; | ||||
| 			} else { | ||||
| 				crc = (crc << 1); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return crc; | ||||
| } | ||||
							
								
								
									
										69
									
								
								fw/Core/Src/i2c.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								fw/Core/Src/i2c.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
| /* | ||||
|  * i2c.c | ||||
|  * | ||||
|  *  Created on: Jun 8, 2021 | ||||
|  *      Author: user | ||||
|  */ | ||||
|  | ||||
| #include "i2c.h" | ||||
| #include "stm32l0xx_ll_usart.h" | ||||
|  | ||||
| static i2c_context_t *i2c_context; | ||||
|  | ||||
| int8_t i2c_init(i2c_context_t *context) | ||||
| { | ||||
| 	if (context == NULL) { | ||||
| 		return I2C_ERROR; | ||||
| 	} | ||||
| 	i2c_context = context; | ||||
| 	return I2C_OK; | ||||
| } | ||||
|  | ||||
| int8_t i2c_transmit(uint8_t address, uint8_t *buffer, int len) | ||||
| { | ||||
| 	LL_I2C_HandleTransfer(i2c_context->i2c, address, LL_I2C_ADDRSLAVE_7BIT, len, | ||||
| 			LL_I2C_MODE_AUTOEND, LL_I2C_GENERATE_START_WRITE); | ||||
| 	int i = 0; | ||||
| 	/* Autoend mode will raise STOP flag if NACK is detected | ||||
| 	 * (or if desired number of bytes is transmitted) */ | ||||
| 	while (!LL_I2C_IsActiveFlag_STOP(i2c_context->i2c)) { | ||||
| 		if (LL_I2C_IsActiveFlag_TXE(i2c_context->i2c)) { | ||||
| 			if (i < len) { | ||||
| 				LL_I2C_TransmitData8(i2c_context->i2c, buffer[i++]); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	LL_I2C_ClearFlag_STOP(i2c_context->i2c); | ||||
| 	LL_I2C_ClearFlag_TXE(i2c_context->i2c); | ||||
| 	if (len != i) { | ||||
| 		/* If we detect NACK during transaction (before the end of the last byte) */ | ||||
| 		return I2C_ERROR_TX_INCOMPLETE; | ||||
| 	} | ||||
| 	/* NACK after last byte is ok */ | ||||
| //	if (LL_I2C_IsActiveFlag_NACK(i2c_context->i2c)) { | ||||
| // | ||||
| //		return I2C_ERROR_NACK; | ||||
| //	} | ||||
| 	return I2C_OK; | ||||
| } | ||||
|  | ||||
| int8_t i2c_receive(uint8_t address, uint8_t *buffer, int len) | ||||
| { | ||||
| 	LL_I2C_HandleTransfer(i2c_context->i2c, address, LL_I2C_ADDRSLAVE_7BIT, len, | ||||
| 				LL_I2C_MODE_AUTOEND, LL_I2C_GENERATE_START_READ); | ||||
| 	LL_I2C_ClearFlag_STOP(i2c_context->i2c); | ||||
| 	int i = 0; | ||||
| 	while (!LL_I2C_IsActiveFlag_STOP(i2c_context->i2c)) { | ||||
| 		if (LL_I2C_IsActiveFlag_RXNE(i2c_context->i2c)) { | ||||
| 			if (i < len) { | ||||
| 				buffer[i++] = LL_I2C_ReceiveData8(i2c_context->i2c); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	LL_I2C_ClearFlag_STOP(i2c_context->i2c); | ||||
| 	if (len != i) { | ||||
| 		return I2C_ERROR_RX_INCOMPLETE; | ||||
| 	} | ||||
|  | ||||
| 	return I2C_OK; | ||||
| } | ||||
							
								
								
									
										202
									
								
								fw/Core/Src/ltr329.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								fw/Core/Src/ltr329.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,202 @@ | ||||
| /* | ||||
|  * ltr329.c | ||||
|  * | ||||
|  *  Created on: May 22, 2022 | ||||
|  *      Author: david | ||||
|  */ | ||||
| #include "ltr329.h" | ||||
| #include "main.h" /* for uart_disable_interrupts() */ | ||||
|  | ||||
| static int8_t ltr329_read_register (ltr329_cmd_t register_addr, uint8_t *register_data ) | ||||
| { | ||||
| 	uint8_t tx_buffer[1]; | ||||
| 	uint8_t rx_buffer[1]; | ||||
| 	int result; | ||||
|  | ||||
| 	// start measurement | ||||
| 	tx_buffer[0] = register_addr; | ||||
| 	/* disable interrupts to prevent modbus/i2c conflict */ | ||||
| 	uart_disable_interrupts(); | ||||
| 	result = i2c_transmit(LTR329_I2C_ADDRESS<<1, tx_buffer, 1); | ||||
| 	uart_enable_interrupts(); | ||||
| 	if (result != I2C_OK) { | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	LL_mDelay(10); /* 10 ms should be enough */ | ||||
| 	/* read out */ | ||||
| 	uart_disable_interrupts(); | ||||
| 	result = i2c_receive(LTR329_I2C_ADDRESS<<1, rx_buffer, 1); | ||||
| 	uart_enable_interrupts(); | ||||
| 	if (result != I2C_OK) { | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	*register_data = rx_buffer[0]; | ||||
| 	return LTR329_OK; | ||||
| } | ||||
|  | ||||
| static int8_t ltr329_write_register (ltr329_cmd_t register_addr, uint8_t register_data) | ||||
| { | ||||
| 	uint8_t tx_buffer[2]; | ||||
| 	int result; | ||||
|  | ||||
| 	// start measurement | ||||
| 	tx_buffer[0] = register_addr; | ||||
| 	tx_buffer[1] = register_data; | ||||
| 	/* disable interrupts to prevent modbus/i2c conflict */ | ||||
| 	uart_disable_interrupts(); | ||||
| 	result = i2c_transmit(LTR329_I2C_ADDRESS<<1, tx_buffer, 2); | ||||
| 	uart_enable_interrupts(); | ||||
| 	if (result != I2C_OK) { | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	return LTR329_OK; | ||||
| } | ||||
|  | ||||
| int8_t ltr329_write_settings (ltr329_gain_t gain, ltr329_als_mode_t mode, ltr329_integration_time_t integ_time, ltr329_measurement_rate_t meas_rate) | ||||
| { | ||||
| 	int8_t result; | ||||
| 	/* Write Gain and ALS Mode */ | ||||
| 	result = ltr329_write_register(LTR329_ALS_CONTR, (gain | mode)); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	/* Write Integration Time and Measurement Rate */ | ||||
|  | ||||
| 	result = ltr329_write_register(LTR329_ALS_MEAS_RATE, (integ_time | meas_rate)); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	return LTR329_OK; | ||||
| } | ||||
|  | ||||
| int8_t ltr329_read_settings (ltr329_gain_t *gain, ltr329_als_mode_t *mode, ltr329_integration_time_t *integ_time, ltr329_measurement_rate_t *meas_rate) | ||||
| { | ||||
| 	int8_t result; | ||||
| 	uint8_t control_register_data; | ||||
| 	uint8_t rate_register_data; | ||||
|  | ||||
| 	result = ltr329_read_register(LTR329_ALS_CONTR, &control_register_data); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	result = ltr329_read_register(LTR329_ALS_MEAS_RATE, &rate_register_data); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	uint8_t control_register_gain_mask = 0b00011100; | ||||
| 	uint8_t control_register_mode_mask = 0b00000001; | ||||
| 	uint8_t rate_register_int_time_mask = 0b00111000; | ||||
| 	uint8_t rate_register_rate_mask = 0b00000111; | ||||
|  | ||||
| 	/* Return Registers Values */ | ||||
| 	/* TODO: This might not be safe */ | ||||
| 	*gain = control_register_data & control_register_gain_mask; | ||||
| 	*mode = control_register_data & control_register_mode_mask; | ||||
| 	*integ_time = rate_register_data & rate_register_int_time_mask; | ||||
| 	*meas_rate = rate_register_data & rate_register_rate_mask; | ||||
|  | ||||
| 	return LTR329_OK; | ||||
| } | ||||
|  | ||||
| int8_t ltr329_sw_reset( void ) | ||||
| { | ||||
| 	int8_t result; | ||||
| 	/* Write Gain and ALS Mode */ | ||||
| 	result = ltr329_write_register(LTR329_ALS_CONTR, 0b00000010); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	return LTR329_OK; | ||||
| } | ||||
|  | ||||
| int8_t ltr329_measure (uint16_t *data_ch0, uint16_t *data_ch1) | ||||
| { | ||||
| 	uint8_t ch0_l, ch0_h, ch1_l, ch1_h; | ||||
| 	int result; | ||||
| 	result = ltr329_read_register(LTR329_ALS_DATA_CH0_0, &ch0_l); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	result = ltr329_read_register(LTR329_ALS_DATA_CH0_1, &ch0_h); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	result = ltr329_read_register(LTR329_ALS_DATA_CH1_0, &ch1_l); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	result = ltr329_read_register(LTR329_ALS_DATA_CH1_1, &ch1_h); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	*data_ch0 = (ch0_h << 8) + ch0_l; | ||||
| 	*data_ch1 = (ch1_h << 8) + ch1_l; | ||||
| 	return LTR329_OK; | ||||
| } | ||||
|  | ||||
| int8_t ltr329_read_status_register(uint8_t *data_valid, uint8_t *new_data, ltr329_gain_t *gain) | ||||
| { | ||||
| 	int8_t result; | ||||
| 	uint8_t status_register_data; | ||||
| 	result = ltr329_read_register(LTR329_ALS_STATUS, &status_register_data); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	/* Check data valid */ | ||||
| 	uint8_t data_invalid_mask = 0b10000000; | ||||
| 	if ((status_register_data & data_invalid_mask) == data_invalid_mask) | ||||
| 	{ | ||||
| 		*data_valid = 0; | ||||
| 	} else | ||||
| 	{ | ||||
| 		*data_valid = 1; | ||||
| 	} | ||||
|  | ||||
| 	/* Check if there is new data */ | ||||
| 	uint8_t data_status_mask = 0b00000100; | ||||
| 	if ((status_register_data & data_status_mask) == data_status_mask) | ||||
| 	{ | ||||
| 		*new_data = 1; | ||||
| 	} else | ||||
| 	{ | ||||
| 		*new_data = 0; | ||||
| 	} | ||||
|  | ||||
| 	/* Check Gain */ | ||||
| 	/* TODO: This might not be safe */ | ||||
| 	uint8_t gain_mask = 0b01110000; | ||||
| 	*gain = status_register_data & gain_mask; | ||||
|  | ||||
| 	return LTR329_OK; | ||||
| } | ||||
|  | ||||
| int8_t ltr329_read_device_info (uint8_t *manufacturer_id, uint8_t *part_id) | ||||
| { | ||||
| 	int8_t result; | ||||
| 	result = ltr329_read_register(LTR329_MANUFAC_ID, manufacturer_id); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	result = ltr329_read_register(LTR329_PART_ID, part_id); | ||||
| 	if (result != LTR329_OK) | ||||
| 	{ | ||||
| 		return LTR329_ERROR; | ||||
| 	} | ||||
| 	return LTR329_OK; | ||||
| } | ||||
							
								
								
									
										749
									
								
								fw/Core/Src/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										749
									
								
								fw/Core/Src/main.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,749 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file           : main.c | ||||
|   * @brief          : Main program body | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2021 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under BSD 3-Clause license, | ||||
|   * the "License"; You may not use this file except in compliance with the | ||||
|   * License. You may obtain a copy of the License at: | ||||
|   *                        opensource.org/licenses/BSD-3-Clause | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "main.h" | ||||
|  | ||||
| /* Private includes ----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Includes */ | ||||
|  | ||||
| /* USER CODE END Includes */ | ||||
|  | ||||
| /* Private typedef -----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PTD */ | ||||
|  | ||||
| /* USER CODE END PTD */ | ||||
|  | ||||
| /* Private define ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PD */ | ||||
| /* USER CODE END PD */ | ||||
|  | ||||
| /* Private macro -------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PM */ | ||||
|  | ||||
| /* USER CODE END PM */ | ||||
|  | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
|  | ||||
| /* USER CODE BEGIN PV */ | ||||
| /* | ||||
|  * BASE CLOCK 12MHz | ||||
|  * Desired interrupt period 60s | ||||
|  */ | ||||
| const uint16_t tim21_prescaler = 60000-1; // 100Hz | ||||
| //const uint16_t tim21_period = 12000-1; // 60s | ||||
| //const uint16_t tim21_period = 1200-1; // 6s | ||||
| const uint16_t tim21_period = MEASUREMENT_PERIOD_S * (SYSTEM_CLOCK_HZ / tim21_prescaler) - 1; | ||||
| //const uint16_t tim21_period = 200-1; // 1s | ||||
|  | ||||
| /* Input register memory map | ||||
|  * (All registers are 16-bit) | ||||
|  * ------------------------- | ||||
|  * | ||||
|  * 30010 : CO2  [ppm]        Unsigned value in range [0,40000] | ||||
|  * 30011 : T    [deg_C * 10] From SHT4x; unsigned value in range [0; 1250]; e.g. 21.5 C => 215 | ||||
|  * 30012 : RH   [%]          From SHT4x; unsigned value in range [0; 100] | ||||
|  * | ||||
|  * Backup T and RH sensor: | ||||
|  * 30013 : T    [deg_C * 10] From SCD4x; unsigned value in range [0; 600]; e.g. 21.5 C => 215 | ||||
|  * 30014 : RH   [%]          From SCD4x; unsigned value in range [0; 100] | ||||
|  * | ||||
|  * Extended temperature range (signed values): | ||||
|  * 30015 : T    [deg_C * 10] From SHT4x; signed value (two's complement) in range [-400;1250] | ||||
|  * 30016 : T    [deg_C * 10] From SCD4x; signed value (two's complement) in range [-100;600]; e.g. -12.3 C => -123 | ||||
|  * | ||||
|  */ | ||||
| /* Input registers memory map implementation */ | ||||
| enum | ||||
| { | ||||
| 	REGISTER_NUM_T = 30010, /* deg C */ | ||||
| 	REGISTER_NUM_T_F = 30011, /* deg F */ | ||||
| 	REGISTER_NUM_RH = 30012 /* %, from SHT4x */ | ||||
|  | ||||
| 	/* VOC Index has initial blackout beriod, when the data is not ready. VOC index is 0 during this period */ | ||||
| } data_registers_numbers; | ||||
|  | ||||
| enum | ||||
| { | ||||
| 	REGISTER_NUM_MODBUS_ADDR = 40007, | ||||
| 	REGISTER_NUM_BAUDRATE = 40008, | ||||
| 	REGISTER_NUM_RESET_DEVICE = 40100 | ||||
| } config_registers_numbers; | ||||
|  | ||||
| enum | ||||
| { | ||||
| 	REGISTER_NUM_VENDOR_NAME = 30010, | ||||
| 	REGISTER_NUM_PRODUCT_CODE = 30011, | ||||
| 	REGISTER_NUM_REVISION = 30012, | ||||
| 	REGISTER_NUM_PRODUCT_NAME = 30013, | ||||
| 	REGISTER_NUM_SERIAL_NUMBER = 30014 | ||||
| } identification_registers_numbers; | ||||
|  | ||||
| /* Variables to store the measured data */ | ||||
| int16_t T_SHT4x, TF_SHT4x; | ||||
| uint16_t RH_SHT4x; | ||||
| uint16_t light_ch0, light_ch1; | ||||
|  | ||||
| /* Struct to store the sensor config */ | ||||
| config_t sensor_config; | ||||
| /* Device ID struct */ | ||||
| modbus_device_id_t device_id; | ||||
| uint8_t sensor_config_pending_write = 0; | ||||
| uint8_t baudrate_changed = 0; | ||||
| uint8_t modbus_address_changed = 0; | ||||
| uint8_t co2_valid = 0; | ||||
|  | ||||
|  | ||||
| /* USER CODE END PV */ | ||||
|  | ||||
| /* Private function prototypes -----------------------------------------------*/ | ||||
| void SystemClock_Config(void); | ||||
| static void MX_GPIO_Init(void); | ||||
| static void MX_I2C1_Init(void); | ||||
| static void MX_USART2_UART_Init(void); | ||||
| static void MX_TIM21_Init(void); | ||||
| static void MX_IWDG_Init(void); | ||||
| /* USER CODE BEGIN PFP */ | ||||
| void USART2_TX_Buffer(uint8_t* buffer_tx, uint16_t buffer_tx_len); | ||||
| /* USER CODE END PFP */ | ||||
|  | ||||
| /* Private user code ---------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN 0 */ | ||||
|  | ||||
| /* USER CODE END 0 */ | ||||
|  | ||||
| /** | ||||
|   * @brief  The application entry point. | ||||
|   * @retval int | ||||
|   */ | ||||
| int main(void) | ||||
| { | ||||
|   /* USER CODE BEGIN 1 */ | ||||
|  | ||||
|   /* USER CODE END 1 */ | ||||
|  | ||||
|   /* MCU Configuration--------------------------------------------------------*/ | ||||
|  | ||||
|   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ | ||||
|  | ||||
|   LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG); | ||||
|   LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR); | ||||
|  | ||||
|   /* System interrupt init*/ | ||||
|   /* SysTick_IRQn interrupt configuration */ | ||||
|   NVIC_SetPriority(SysTick_IRQn, 3); | ||||
|  | ||||
|   /* USER CODE BEGIN Init */ | ||||
|  | ||||
|   /* USER CODE END Init */ | ||||
|  | ||||
|   /* Configure the system clock */ | ||||
|   SystemClock_Config(); | ||||
|  | ||||
|   /* USER CODE BEGIN SysInit */ | ||||
|   /* Read config from EEPROM - if unsuccessful, set the default values*/ | ||||
|   int8_t config_read_status = config_read(&sensor_config); | ||||
|   if (config_read_status != CONFIG_OK) | ||||
|   { | ||||
| 	  sensor_config.modbus_addr = MODBUS_DEFAULT_SLAVE_ADDRESS; | ||||
| 	  sensor_config.led_co2_alert_limit1 = CONFIG_DEFAULT_LED_ALERT1_LIMIT; | ||||
| 	  sensor_config.led_co2_alert_limit2 = CONFIG_DEFAULT_LED_ALERT2_LIMIT; | ||||
| 	  sensor_config.led_on = CONFIG_DEFAULT_LED_ON; | ||||
| 	  sensor_config.led_brightness = CONFIG_DEFAULT_LED_BRIGHTNESS; | ||||
| 	  sensor_config.led_smooth = CONFIG_DEFAULT_LED_SMOOTH; | ||||
| 	  sensor_config.scd4x_t_offset = CONFIG_DEFAULT_SCD4x_T_OFFSET; | ||||
| 	  sensor_config.baudrate_index = CONFIG_DEFAULT_BAUDRATE_INDEX; | ||||
|   } | ||||
|   /* USER CODE END SysInit */ | ||||
|  | ||||
|   /* Initialize all configured peripherals */ | ||||
|   MX_GPIO_Init(); | ||||
|   MX_I2C1_Init(); | ||||
|   MX_USART2_UART_Init(); | ||||
|   MX_TIM21_Init(); | ||||
|   MX_IWDG_Init(); | ||||
|   /* USER CODE BEGIN 2 */ | ||||
|  | ||||
|   /* Turn on MAGENTA LED to signal startup state */ | ||||
| //  LL_GPIO_ResetOutputPin(LED_R_GPIO_Port, LED_R_Pin); | ||||
| //  LL_GPIO_ResetOutputPin(LED_G_GPIO_Port, LED_G_Pin); | ||||
| //  LL_GPIO_ResetOutputPin(LED_B_GPIO_Port, LED_B_Pin); | ||||
|  | ||||
|   /* Enable I2C for sensors */ | ||||
|   LL_I2C_Enable(I2C1); | ||||
|  | ||||
|  | ||||
|   /* Set the modbus address */ | ||||
|   modbus_slave_set_address(sensor_config.modbus_addr); | ||||
|  | ||||
|   /* Enable UART for RS485 */ | ||||
|   LL_USART_Enable(USART2); | ||||
|  | ||||
|   /* Start the timer for measurement triggering */ | ||||
|   LL_TIM_EnableCounter(TIM21); | ||||
|   LL_TIM_EnableIT_UPDATE(TIM21); | ||||
|  | ||||
|   /* I2C context init (for SHT4x and SCD4x) */ | ||||
|   i2c_context_t i2c_context; | ||||
|   i2c_context.i2c = I2C1; | ||||
|   i2c_init(&i2c_context); | ||||
|  | ||||
|   /* Fill device ID struct */ | ||||
|   device_id.object_name.VendorName         = "Veles Labs"; | ||||
|   device_id.object_name.ProductCode        = "124C41"; | ||||
|   device_id.object_name.MajorMinorRevision = "1.2"; | ||||
|   device_id.object_name.VendorUrl          = "https://veles-labs.com"; | ||||
|   device_id.object_name.ProductName        = "RHT_Wired"; | ||||
|   device_id.object_name.ModelName          = "Hugo"; | ||||
|   modbus_slave_init_device_id(&device_id); | ||||
|   /* USER CODE END 2 */ | ||||
|  | ||||
|   /* Infinite loop */ | ||||
|   /* USER CODE BEGIN WHILE */ | ||||
|  | ||||
|   /* Wait 1000ms for sensors initialization */ | ||||
|   /* SHT4x Init Time:  max 1 	ms 	(datasheet pg. 8) */ | ||||
|   /* LTR329 Init Time: max 100 	ms 	(datasheet pg. 9) */ | ||||
|   LL_mDelay(1000); | ||||
|  | ||||
|   /* Initiualize LTR329 */ | ||||
|   int8_t ltr_ret; | ||||
|   uint8_t ltr_cont_reg_val; | ||||
|   uint8_t ltr_rate_reg_val; | ||||
|   do | ||||
|   { | ||||
| 	  ltr_ret = ltr329_write_settings(LTR329_GAIN_48X, LTR329_MODE_ACTIVE, LTR329_INTEGRATION_100MS, LTR329_MEAS_RATE_100MS); | ||||
| 	  /* TODO: Check register status */ | ||||
|   } while (ltr_ret != 0); | ||||
|  | ||||
|  | ||||
|   static uint32_t new_baud; | ||||
|   /* Enter the main loop */ | ||||
|   while (1) | ||||
|   { | ||||
| 	  /* Watchdog is set to 28 s (37 kHz, prescaler 256, 4095 reload value) */ | ||||
| 	  LL_IWDG_ReloadCounter(IWDG); | ||||
| 	  if (usart2_rx_done == 1) | ||||
| 	  { | ||||
| 	  /* Process the message */ | ||||
| 		  if (usart2_rx_message_too_long) | ||||
| 		  { | ||||
| 			  /* Do nothing, just delete the buffer and set the flag back to zero*/ | ||||
| 			  usart2_rx_message_too_long = 0; | ||||
| 		  } else | ||||
| 		  { | ||||
| 			  /* Process the message: | ||||
| 			   * message is stored in modbus_buffer[], no copying necessary; | ||||
| 			   * but we need to make sure that modbus_buffer[] will not be used while | ||||
| 			   * processing the message: this can be done by disabling RX interrupt */ | ||||
| 			  LL_USART_DisableIT_RXNE(USART2); | ||||
| 			  modbus_slave_process_msg(modbus_buffer, usart2_rx_message_len); | ||||
| 			  /* Reset the RX DONE flag */ | ||||
| 			  usart2_rx_done = 0; | ||||
| 			  LL_USART_EnableIT_RXNE(USART2); | ||||
| 		  } | ||||
| 		  /* Reset the RX DONE flag */ | ||||
| 		  usart2_rx_done = 0; | ||||
| 	  } | ||||
| 	  /* if config changed (MODBUS write), reflect changes to EEPROM */ | ||||
| 	  if (sensor_config_pending_write) { | ||||
| 		  config_write(&sensor_config); | ||||
| 		  sensor_config_pending_write = 0; | ||||
| 	  } | ||||
| 	  if (modbus_address_changed) | ||||
| 	  { | ||||
| 		  modbus_slave_set_address(sensor_config.modbus_addr); | ||||
| 		  modbus_address_changed = 0; | ||||
| 	  } | ||||
| 	  if (baudrate_changed) | ||||
| 	  { | ||||
| 		  while (!LL_USART_IsActiveFlag_TXE(USART2)); | ||||
| 		  uart_disable_interrupts(); | ||||
|  | ||||
| 		  LL_USART_SetBaudRate(USART2, SYSTICK_FREQ_HZ, LL_USART_OVERSAMPLING_16, config_baudrates[sensor_config.baudrate_index]); | ||||
| 		  uart_enable_interrupts(); | ||||
| 		  LL_USART_EnableDirectionRx(USART2); | ||||
| 		  LL_USART_EnableDirectionTx(USART2); | ||||
| 		  baudrate_changed = 0; | ||||
|  | ||||
| 		  new_baud = LL_USART_GetBaudRate(USART2, SYSTICK_FREQ_HZ, LL_USART_OVERSAMPLING_16); | ||||
| 	  } | ||||
| 	  /* It is time for measurement */ | ||||
| 	  if (tim21_elapsed_period == 1) | ||||
| 	  { | ||||
| 		  /* TODO: Check the data */ | ||||
| 		  /* Read SHT4x data (always connected) */ | ||||
| 		  sht4x_measure(&T_SHT4x, &RH_SHT4x); | ||||
| 		  TF_SHT4x = CELSIUS_TO_FAHRENHEIT(T_SHT4x); | ||||
|  | ||||
| 		  /* Red LTR329 values */ | ||||
| 		  uint8_t data_valid, new_data; | ||||
| 		  ltr329_gain_t set_gain; | ||||
| 		  ltr_ret = ltr329_read_status_register(&data_valid, &new_data, &set_gain); | ||||
| 		  /* TODO: Do something with the flags */ | ||||
| 		  ltr_ret = ltr329_measure(&light_ch0, &light_ch1); | ||||
|  | ||||
| 		  /* Reset the TIM21 Elapsed Period Flag */ | ||||
| 		  tim21_elapsed_period = 0; | ||||
| 	  } | ||||
|     /* USER CODE END WHILE */ | ||||
|  | ||||
|     /* USER CODE BEGIN 3 */ | ||||
|   } | ||||
|   /* USER CODE END 3 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief System Clock Configuration | ||||
|   * @retval None | ||||
|   */ | ||||
| void SystemClock_Config(void) | ||||
| { | ||||
|   LL_FLASH_SetLatency(LL_FLASH_LATENCY_0); | ||||
|   while(LL_FLASH_GetLatency()!= LL_FLASH_LATENCY_0) | ||||
|   { | ||||
|   } | ||||
|   LL_PWR_SetRegulVoltageScaling(LL_PWR_REGU_VOLTAGE_SCALE1); | ||||
|   LL_RCC_HSI_Enable(); | ||||
|  | ||||
|    /* Wait till HSI is ready */ | ||||
|   while(LL_RCC_HSI_IsReady() != 1) | ||||
|   { | ||||
|  | ||||
|   } | ||||
|   LL_RCC_HSI_SetCalibTrimming(16); | ||||
|   LL_RCC_LSI_Enable(); | ||||
|  | ||||
|    /* Wait till LSI is ready */ | ||||
|   while(LL_RCC_LSI_IsReady() != 1) | ||||
|   { | ||||
|  | ||||
|   } | ||||
|   LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI, LL_RCC_PLL_MUL_3, LL_RCC_PLL_DIV_4); | ||||
|   LL_RCC_PLL_Enable(); | ||||
|  | ||||
|    /* Wait till PLL is ready */ | ||||
|   while(LL_RCC_PLL_IsReady() != 1) | ||||
|   { | ||||
|  | ||||
|   } | ||||
|   LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1); | ||||
|   LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1); | ||||
|   LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1); | ||||
|   LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); | ||||
|  | ||||
|    /* Wait till System clock is ready */ | ||||
|   while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) | ||||
|   { | ||||
|  | ||||
|   } | ||||
|  | ||||
|   LL_Init1msTick(12000000); | ||||
|  | ||||
|   LL_SetSystemCoreClock(12000000); | ||||
|   LL_RCC_SetUSARTClockSource(LL_RCC_USART2_CLKSOURCE_PCLK1); | ||||
|   LL_RCC_SetI2CClockSource(LL_RCC_I2C1_CLKSOURCE_PCLK1); | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief I2C1 Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_I2C1_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN I2C1_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END I2C1_Init 0 */ | ||||
|  | ||||
|   LL_I2C_InitTypeDef I2C_InitStruct = {0}; | ||||
|  | ||||
|   LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; | ||||
|  | ||||
|   LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA); | ||||
|   /**I2C1 GPIO Configuration | ||||
|   PA9   ------> I2C1_SCL | ||||
|   PA10   ------> I2C1_SDA | ||||
|   */ | ||||
|   GPIO_InitStruct.Pin = LL_GPIO_PIN_9; | ||||
|   GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; | ||||
|   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; | ||||
|   GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; | ||||
|   GPIO_InitStruct.Alternate = LL_GPIO_AF_1; | ||||
|   LL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||
|  | ||||
|   GPIO_InitStruct.Pin = LL_GPIO_PIN_10; | ||||
|   GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; | ||||
|   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; | ||||
|   GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; | ||||
|   GPIO_InitStruct.Alternate = LL_GPIO_AF_1; | ||||
|   LL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||
|  | ||||
|   /* Peripheral clock enable */ | ||||
|   LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_I2C1); | ||||
|  | ||||
|   /* USER CODE BEGIN I2C1_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END I2C1_Init 1 */ | ||||
|   /** I2C Initialization | ||||
|   */ | ||||
|   LL_I2C_EnableAutoEndMode(I2C1); | ||||
|   LL_I2C_DisableOwnAddress2(I2C1); | ||||
|   LL_I2C_DisableGeneralCall(I2C1); | ||||
|   LL_I2C_EnableClockStretching(I2C1); | ||||
|   I2C_InitStruct.PeripheralMode = LL_I2C_MODE_I2C; | ||||
|   I2C_InitStruct.Timing = 0x40000A0B; | ||||
|   I2C_InitStruct.AnalogFilter = LL_I2C_ANALOGFILTER_ENABLE; | ||||
|   I2C_InitStruct.DigitalFilter = 0; | ||||
|   I2C_InitStruct.OwnAddress1 = 0; | ||||
|   I2C_InitStruct.TypeAcknowledge = LL_I2C_ACK; | ||||
|   I2C_InitStruct.OwnAddrSize = LL_I2C_OWNADDRESS1_7BIT; | ||||
|   LL_I2C_Init(I2C1, &I2C_InitStruct); | ||||
|   LL_I2C_SetOwnAddress2(I2C1, 0, LL_I2C_OWNADDRESS2_NOMASK); | ||||
|   /* USER CODE BEGIN I2C1_Init 2 */ | ||||
|   /* USER CODE END I2C1_Init 2 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief IWDG Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_IWDG_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN IWDG_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END IWDG_Init 0 */ | ||||
|  | ||||
|   /* USER CODE BEGIN IWDG_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END IWDG_Init 1 */ | ||||
|   LL_IWDG_Enable(IWDG); | ||||
|   LL_IWDG_EnableWriteAccess(IWDG); | ||||
|   LL_IWDG_SetPrescaler(IWDG, LL_IWDG_PRESCALER_256); | ||||
|   LL_IWDG_SetReloadCounter(IWDG, 4095); | ||||
|   while (LL_IWDG_IsReady(IWDG) != 1) | ||||
|   { | ||||
|   } | ||||
|  | ||||
|   LL_IWDG_ReloadCounter(IWDG); | ||||
|   /* USER CODE BEGIN IWDG_Init 2 */ | ||||
|  | ||||
|   /* USER CODE END IWDG_Init 2 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief TIM21 Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_TIM21_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN TIM21_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END TIM21_Init 0 */ | ||||
|  | ||||
|   LL_TIM_InitTypeDef TIM_InitStruct = {0}; | ||||
|  | ||||
|   /* Peripheral clock enable */ | ||||
|   LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_TIM21); | ||||
|  | ||||
|   /* TIM21 interrupt Init */ | ||||
|   NVIC_SetPriority(TIM21_IRQn, 0); | ||||
|   NVIC_EnableIRQ(TIM21_IRQn); | ||||
|  | ||||
|   /* USER CODE BEGIN TIM21_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END TIM21_Init 1 */ | ||||
|   TIM_InitStruct.Prescaler = tim21_prescaler; | ||||
|   TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; | ||||
|   TIM_InitStruct.Autoreload = tim21_period; | ||||
|   TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; | ||||
|   LL_TIM_Init(TIM21, &TIM_InitStruct); | ||||
|   LL_TIM_EnableARRPreload(TIM21); | ||||
|   LL_TIM_SetClockSource(TIM21, LL_TIM_CLOCKSOURCE_INTERNAL); | ||||
|   LL_TIM_SetTriggerOutput(TIM21, LL_TIM_TRGO_RESET); | ||||
|   LL_TIM_DisableMasterSlaveMode(TIM21); | ||||
|   /* USER CODE BEGIN TIM21_Init 2 */ | ||||
|  | ||||
|   /* USER CODE END TIM21_Init 2 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief USART2 Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_USART2_UART_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN USART2_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END USART2_Init 0 */ | ||||
|  | ||||
|   LL_USART_InitTypeDef USART_InitStruct = {0}; | ||||
|  | ||||
|   LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; | ||||
|  | ||||
|   /* Peripheral clock enable */ | ||||
|   LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART2); | ||||
|  | ||||
|   LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA); | ||||
|   /**USART2 GPIO Configuration | ||||
|   PA1   ------> USART2_DE | ||||
|   PA2   ------> USART2_TX | ||||
|   PA3   ------> USART2_RX | ||||
|   */ | ||||
|   GPIO_InitStruct.Pin = LL_GPIO_PIN_1; | ||||
|   GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; | ||||
|   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; | ||||
|   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; | ||||
|   GPIO_InitStruct.Alternate = LL_GPIO_AF_4; | ||||
|   LL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||
|  | ||||
|   GPIO_InitStruct.Pin = LL_GPIO_PIN_2; | ||||
|   GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; | ||||
|   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; | ||||
|   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; | ||||
|   GPIO_InitStruct.Alternate = LL_GPIO_AF_4; | ||||
|   LL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||
|  | ||||
|   GPIO_InitStruct.Pin = LL_GPIO_PIN_3; | ||||
|   GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; | ||||
|   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; | ||||
|   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; | ||||
|   GPIO_InitStruct.Alternate = LL_GPIO_AF_4; | ||||
|   LL_GPIO_Init(GPIOA, &GPIO_InitStruct); | ||||
|  | ||||
|   /* USART2 interrupt Init */ | ||||
|   NVIC_SetPriority(USART2_IRQn, 0); | ||||
|   NVIC_EnableIRQ(USART2_IRQn); | ||||
|  | ||||
|   /* USER CODE BEGIN USART2_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END USART2_Init 1 */ | ||||
|   USART_InitStruct.BaudRate = config_baudrates[sensor_config.baudrate_index]; | ||||
|   USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_9B; | ||||
|   USART_InitStruct.StopBits = LL_USART_STOPBITS_1; | ||||
|   USART_InitStruct.Parity = LL_USART_PARITY_EVEN; | ||||
|   USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX; | ||||
|   USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE; | ||||
|   USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16; | ||||
|   LL_USART_Init(USART2, &USART_InitStruct); | ||||
|   LL_USART_EnableDEMode(USART2); | ||||
|   LL_USART_SetDESignalPolarity(USART2, LL_USART_DE_POLARITY_HIGH); | ||||
|   LL_USART_SetDEAssertionTime(USART2, 0); | ||||
|   LL_USART_SetDEDeassertionTime(USART2, 0); | ||||
|   LL_USART_ConfigAsyncMode(USART2); | ||||
|   LL_USART_Enable(USART2); | ||||
|   /* USER CODE BEGIN USART2_Init 2 */ | ||||
|  | ||||
|   /* Enable IDLE Interrupt */ | ||||
|   LL_USART_EnableIT_IDLE(USART2); | ||||
|  | ||||
|   /* Enable RX Not Empty Interrupt */ | ||||
|   LL_USART_EnableIT_RXNE(USART2); | ||||
|  | ||||
|   LL_USART_EnableDirectionRx(USART2); | ||||
|   LL_USART_EnableDirectionTx(USART2); | ||||
|   LL_USART_Enable(USART2); | ||||
|   /* USER CODE END USART2_Init 2 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief GPIO Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_GPIO_Init(void) | ||||
| { | ||||
|  | ||||
|   /* GPIO Ports Clock Enable */ | ||||
|   LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA); | ||||
|  | ||||
| } | ||||
|  | ||||
| /* USER CODE BEGIN 4 */ | ||||
| void USART2_TX_Buffer(uint8_t* buffer_tx, uint16_t buffer_tx_len) | ||||
| { | ||||
| 	__disable_irq(); | ||||
| 	for (uint16_t i = 0; i < buffer_tx_len; i++) | ||||
| 	{ | ||||
| 		  LL_USART_TransmitData9(USART2, buffer_tx[i]); | ||||
| 		  while (!LL_USART_IsActiveFlag_TXE(USART2)); | ||||
| 	} | ||||
| 	__enable_irq(); | ||||
| } | ||||
|  | ||||
| int8_t uart_disable_interrupts(void) | ||||
| { | ||||
| 	LL_USART_Disable(USART2); | ||||
| 	LL_USART_DisableIT_IDLE(USART2); | ||||
| 	LL_USART_EnableIT_RXNE(USART2); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int8_t uart_enable_interrupts(void) | ||||
| { | ||||
| 	LL_USART_Enable(USART2); | ||||
| 	LL_USART_EnableIT_IDLE(USART2); | ||||
| 	LL_USART_EnableIT_RXNE(USART2); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int8_t modbus_slave_callback(modbus_transaction_t *transaction) | ||||
| { | ||||
| 	uint16_t register_number = transaction->register_number; | ||||
| 	switch (transaction->function_code) | ||||
| 	{ | ||||
| 		case MODBUS_READ_INPUT_REGISTERS: | ||||
| 			for (int i = 0; i < transaction->register_count; i++, register_number++) | ||||
| 			{ | ||||
| 				switch (register_number) | ||||
| 				{ | ||||
| 					case REGISTER_NUM_T: | ||||
| 						transaction->input_registers_signed[i] = (int16_t)T_SHT4x; | ||||
| 						break; | ||||
| 					case REGISTER_NUM_T_F: | ||||
| 						transaction->input_registers_signed[i] = (int16_t)TF_SHT4x; | ||||
| 						break; | ||||
| 					case REGISTER_NUM_RH: | ||||
| 						transaction->input_registers[i] = (uint16_t)RH_SHT4x; | ||||
| 						break; | ||||
| 					default: | ||||
| 						return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED; | ||||
| 				} | ||||
| 			} | ||||
| 			return MODBUS_OK; | ||||
| 		case MODBUS_READ_HOLDING_REGISTERS: | ||||
| 			for (int i = 0; i < transaction->register_count; i++, register_number++) | ||||
| 			{ | ||||
| 				switch (register_number) | ||||
| 				{ | ||||
| 					case REGISTER_NUM_MODBUS_ADDR: | ||||
| 						transaction->holding_registers[i] = (uint16_t)(sensor_config.modbus_addr); | ||||
| 						break; | ||||
| 					case REGISTER_NUM_BAUDRATE: | ||||
| 						transaction->holding_registers[i] = (uint16_t)(sensor_config.baudrate_index); | ||||
| 						break; | ||||
| 					default: | ||||
| 						return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED; | ||||
| 				} | ||||
| 			} | ||||
| 			return MODBUS_OK; | ||||
| 		case MODBUS_WRITE_SINGLE_REGISTER: | ||||
| 			transaction->register_count = 1; | ||||
| 		case MODBUS_WRITE_MULTIPLE_REGISTERS: | ||||
| 			for (int i = 0; i < transaction->register_count; i++, register_number++) | ||||
| 			{ | ||||
| 				switch (register_number) | ||||
| 				{ | ||||
| 					case REGISTER_NUM_MODBUS_ADDR: | ||||
| 						/* allowed values: [1, 247] (from 1 to 247) as given in section 2.1 of document | ||||
| 						 * MODBUS over Serial Line: Specification and Implementation Guide (V1.02) */ | ||||
| 						if (transaction->holding_registers[i] < 1 || transaction->holding_registers[i] > 247) { | ||||
| 							return MODBUS_ERROR_OUT_OF_BOUNDS; | ||||
| 						} | ||||
| 						sensor_config.modbus_addr = (uint16_t) transaction->holding_registers[i]; | ||||
| 						modbus_address_changed = 1; | ||||
| 						break; | ||||
| 					case REGISTER_NUM_BAUDRATE: | ||||
| 						/* allowed values: [0, 9] (from 0 to 9, where 9 == config_baudrates_length) */ | ||||
| 						if (transaction->holding_registers[i] >= config_baudrates_length) { | ||||
| 							return MODBUS_ERROR_OUT_OF_BOUNDS; | ||||
| 						} | ||||
| 						sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[i]); | ||||
| 						baudrate_changed = 1; | ||||
| 						break; | ||||
| 					case REGISTER_NUM_RESET_DEVICE: | ||||
| 						if (transaction->holding_registers[i] == 0xABCD) { | ||||
| 							/* software reset */ | ||||
| 							NVIC_SystemReset(); | ||||
| 						} else { | ||||
| 							return MODBUS_ERROR_OUT_OF_BOUNDS; | ||||
| 						} | ||||
| 						break; | ||||
| 					default: | ||||
| 						return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED; | ||||
| 				} | ||||
| 			} | ||||
| 			sensor_config_pending_write = 1; | ||||
| 			return MODBUS_OK; | ||||
| 		default: | ||||
| 			return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED; | ||||
| 	} | ||||
| 	/* Catch-all error */ | ||||
| 	return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED; /* nothing implemented yet! TODO */ | ||||
| } | ||||
|  | ||||
| int8_t modbus_transmit_function(uint8_t *buffer, uint16_t data_len) | ||||
| { | ||||
| 	 /* TODO */ | ||||
| 	USART2_TX_Buffer(buffer, data_len); | ||||
| 	return MODBUS_OK; | ||||
| } | ||||
| /* USER CODE END 4 */ | ||||
|  | ||||
| /** | ||||
|   * @brief  This function is executed in case of error occurrence. | ||||
|   * @retval None | ||||
|   */ | ||||
| void Error_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN Error_Handler_Debug */ | ||||
|   /* User can add his own implementation to report the HAL error return state */ | ||||
|   __disable_irq(); | ||||
|   while (1) | ||||
|   { | ||||
|   } | ||||
|   /* USER CODE END Error_Handler_Debug */ | ||||
| } | ||||
|  | ||||
| #ifdef  USE_FULL_ASSERT | ||||
| /** | ||||
|   * @brief  Reports the name of the source file and the source line number | ||||
|   *         where the assert_param error has occurred. | ||||
|   * @param  file: pointer to the source file name | ||||
|   * @param  line: assert_param error line source number | ||||
|   * @retval None | ||||
|   */ | ||||
| void assert_failed(uint8_t *file, uint32_t line) | ||||
| { | ||||
|   /* USER CODE BEGIN 6 */ | ||||
|   /* User can add his own implementation to report the file name and line number, | ||||
|      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ | ||||
|   /* USER CODE END 6 */ | ||||
| } | ||||
| #endif /* USE_FULL_ASSERT */ | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										431
									
								
								fw/Core/Src/modbus.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										431
									
								
								fw/Core/Src/modbus.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,431 @@ | ||||
| /* | ||||
|  * modbus.c | ||||
|  * | ||||
|  *  Created on: Jul 18, 2021 | ||||
|  *      Author: user | ||||
|  */ | ||||
|  | ||||
| #include "modbus.h" | ||||
|  | ||||
| /* | ||||
|  * Global variables | ||||
|  */ | ||||
|  | ||||
| /* Modbus TX buffer; can be also used for RX in memory constrained systems (e.g. in main.c); | ||||
|  * NOTE if shared buffer is used for TX/RX, care must be taken to prevent writing into buffer | ||||
|  * during execution of modbus_process_message() */ | ||||
| uint8_t modbus_buffer[MODBUS_MAX_RTU_FRAME_SIZE]; | ||||
|  | ||||
| /* MODBUS device address */ | ||||
| uint8_t modbus_slave_address = MODBUS_DEFAULT_SLAVE_ADDRESS; | ||||
|  | ||||
| /* Device ID struct */ | ||||
| modbus_device_id_t *modbus_device_id = NULL; | ||||
|  | ||||
| /* | ||||
|  * CRC16 functions | ||||
|  * see https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf | ||||
|  * section 6.2.2 | ||||
|  */ | ||||
|  | ||||
| /* CRC16 (without memory mapped values) | ||||
|  * taken from https://ctlsys.com/support/how_to_compute_the_modbus_rtu_message_crc/ */ | ||||
| uint16_t modbus_CRC16(const uint8_t *buf, int len) | ||||
| { | ||||
| 	uint16_t crc = 0xFFFF; | ||||
|  | ||||
| 	for (int pos = 0; pos < len; pos++) { | ||||
| 		crc ^= (uint16_t)buf[pos];          // XOR byte into least sig. byte of crc | ||||
|         | ||||
| 		for (int i = 8; i != 0; i--) {    // Loop over each bit | ||||
| 			if ((crc & 0x0001) != 0) {      // If the LSB is set | ||||
| 				crc >>= 1;                    // Shift right and XOR 0xA001 | ||||
| 				crc ^= 0xA001; | ||||
| 			} else {                            // Else LSB is not set | ||||
| 				crc >>= 1;                    // Just shift right | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	// Note, this number has low and high bytes swapped, so use it accordingly (or swap bytes) | ||||
| 	return crc;   | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Private functions | ||||
|  */ | ||||
|  | ||||
| static uint8_t modbus_fill_device_id_objects(uint8_t *buffer, modbus_transaction_t *transaction) | ||||
| { | ||||
| 	/* we assume buffer is 256 - MODBUS_READ_DEVICE_ID_RESPONSE_HEADER_LEN = 252 bytes long */ | ||||
| 	/* find out how many objects we copy to buffer */ | ||||
| 	int len; | ||||
| 	uint8_t object_index = transaction->object_id; | ||||
| 	uint8_t object_count; | ||||
| 	uint8_t more_follows = MODBUS_NO_MORE_FOLLOWS; | ||||
| 	uint8_t next_object_id; | ||||
| 	uint8_t last_object; | ||||
| 	const uint8_t max_len = 256 - MODBUS_READ_DEVICE_ID_RESPONSE_HEADER_LEN; | ||||
|  | ||||
| 	/* last object index */ | ||||
| 	if (transaction->read_device_id_code == MODBUS_CONFORMITY_BASIC) { | ||||
| 		last_object = MODBUS_BASIC_OBJECT_COUNT; | ||||
| 	} else if (transaction->read_device_id_code == MODBUS_CONFORMITY_REGULAR) { | ||||
| 		last_object = MODBUS_REGULAR_OBJECT_COUNT; | ||||
| 	/* extended not implemented */ | ||||
| //	} else if (transaction->read_device_id_code == MODBUS_CONFORMITY_EXTENDED){ | ||||
| //		last_object = MODBUS_EXTENDED_OBJECT_COUNT; | ||||
| 	} else { | ||||
| 		/* fallback: regular */ | ||||
| 		last_object = MODBUS_REGULAR_OBJECT_COUNT; | ||||
| 	} | ||||
| 	last_object--; // we need index | ||||
| 	/* copy as many objects as possible */ | ||||
| 	do { | ||||
| 		/* copy object */ | ||||
| 		int object_len = strlen(modbus_device_id->object_id[object_index]); | ||||
| 		if (len + object_len + 2 > max_len) { | ||||
| 			more_follows = MODBUS_MORE_FOLLOWS; | ||||
| 			next_object_id = object_index; | ||||
| 			break; | ||||
| 		} | ||||
| 		/* offset is for "more follows", "next object id", "object count" */ | ||||
| 		buffer[MODBUS_READ_DEVICE_ID_RESPONSE_OFFSET + len++] = object_index; | ||||
| 		buffer[MODBUS_READ_DEVICE_ID_RESPONSE_OFFSET + len++] = object_len; | ||||
| 		/* note that string copied to buffer is not null-terminated */ | ||||
| 		strncpy((char*)(buffer + len), (char*)modbus_device_id->object_id[object_index++], object_len); | ||||
| 		len += object_len; | ||||
| 		object_count++; | ||||
| 	} while (object_index < last_object); | ||||
| 	buffer[0] = more_follows; | ||||
| 	buffer[1] = next_object_id; | ||||
| 	buffer[2] = object_count; | ||||
| 	return MODBUS_READ_DEVICE_ID_RESPONSE_OFFSET + len; | ||||
| } | ||||
|  | ||||
| /* here we assume buffer has minimal size of MODBUS_MAX_RTU_FRAME_SIZE; | ||||
|  * this function is private, so hopefully it's going to be ok */ | ||||
| static int8_t modbus_transaction_to_buffer(uint8_t *buffer, uint8_t *msg_len, modbus_transaction_t *transaction) | ||||
| { | ||||
| 	uint16_t crc16; | ||||
| 	uint8_t byte_count; | ||||
| 	uint8_t buffer_pos = 0; | ||||
|  | ||||
| 	// TODO use relative indices (increments) instead of absolute | ||||
| 	buffer[buffer_pos++] = modbus_slave_address; | ||||
| 	buffer[buffer_pos++] = transaction->function_code; | ||||
| 	*msg_len = 5; | ||||
|  | ||||
| 	if (transaction->function_code & MODBUS_ERROR_FLAG) { | ||||
| 		/* sending error reply */ | ||||
| 		buffer[buffer_pos++] = transaction->exception; | ||||
| 	} else { | ||||
| 		switch (transaction->function_code) { | ||||
| 			case MODBUS_READ_HOLDING_REGISTERS: | ||||
| 			case MODBUS_READ_INPUT_REGISTERS: | ||||
| 				byte_count = transaction->register_count * 2; | ||||
| 				buffer[buffer_pos++] = byte_count; | ||||
| 				*msg_len = byte_count + 5; | ||||
| 				for (int i = 0; i < transaction->register_count; i++) { | ||||
| 					// TODO endianness handling | ||||
| 					/* buffer16b is alias for both holding and input register buffers */ | ||||
| 					buffer[buffer_pos++] = transaction->buffer16b[i] >> 8; | ||||
| 					buffer[buffer_pos++] = transaction->buffer16b[i] & 0xff; | ||||
| 				} | ||||
| 				break; | ||||
| 			case MODBUS_WRITE_SINGLE_REGISTER: | ||||
| 				buffer[buffer_pos++] = (uint8_t) (transaction->register_address >> 8); | ||||
| 				buffer[buffer_pos++] = (uint8_t) transaction->register_address; | ||||
| 				buffer[buffer_pos++] = (uint8_t) (transaction->holding_registers[0] >> 8); | ||||
| 				buffer[buffer_pos++] = (uint8_t) transaction->holding_registers[0]; | ||||
| 				*msg_len = 8; /* includes 2 bytes for CRC */ | ||||
| 				break; | ||||
| 			case MODBUS_WRITE_MULTIPLE_REGISTERS: | ||||
| 				buffer[buffer_pos++] = (uint8_t) (transaction->register_address >> 8); | ||||
| 				buffer[buffer_pos++] = (uint8_t) transaction->register_address; | ||||
| 				buffer[buffer_pos++] = (uint8_t) (transaction->register_count >> 8); | ||||
| 				buffer[buffer_pos++] = (uint8_t) transaction->register_count; | ||||
| 				*msg_len = 8; /* includes 2 bytes for CRC */ | ||||
| 				break; | ||||
| 			case MODBUS_READ_DEVICE_IDENTIFICATION: | ||||
| 				/* MEI type */ | ||||
| 				buffer[buffer_pos++] = MODBUS_MEI; | ||||
| 				/* read device id */ | ||||
| 				buffer[buffer_pos++] = transaction->read_device_id_code; | ||||
| 				/* conformity level */ | ||||
| 				buffer[buffer_pos++] = modbus_device_id->conformity_level; | ||||
| 				/* fill buffer with as many objects as possible  */ | ||||
| 				*msg_len = modbus_fill_device_id_objects(buffer+buffer_pos, transaction); | ||||
| 				*msg_len += 7; /* includes 2 bytes for CRC */ | ||||
| 				break; | ||||
| 		} | ||||
| 	} | ||||
| 	crc16 = modbus_CRC16(buffer, buffer_pos); /* last two bytes is the checksum itself */ | ||||
| 	buffer[buffer_pos++] = crc16 & 0xff; | ||||
| 	buffer[buffer_pos++] = crc16 >> 8; | ||||
| 	return MODBUS_OK; | ||||
| } | ||||
|  | ||||
| static int8_t modbus_process_device_id_request(const uint8_t *buffer, int len, modbus_transaction_t *transaction) | ||||
| { | ||||
| 	uint8_t MEI_type; | ||||
| 	uint8_t read_device_id_code; | ||||
| 	uint8_t object_id; | ||||
| 	uint8_t buffer_pos = 0; | ||||
|  | ||||
| 	if (transaction->broadcast == 1) { | ||||
| 		/* Read device ID broadcast - invalid; ignore (master will get timeout) */ | ||||
| 		return MODBUS_ERROR; | ||||
| 	} | ||||
| 	if (modbus_device_id == NULL) { | ||||
| 		/* modbus_device_id not initialized; user should use modbus_slave_init_device_id() first */ | ||||
| 		transaction->exception = MODBUS_EXCEPTION_ILLEGAL_DEVICE_ID_CODE; | ||||
| 		return MODBUS_OK; | ||||
| 	} | ||||
| 	if (len < MODBUS_READ_DEVICE_ID_REQUEST_LEN) { | ||||
| 		/* frame too short, ignore */ | ||||
| 		return MODBUS_ERROR; | ||||
| 	} | ||||
| 	/* next byte should be MEI = 0x0E */ | ||||
| 	MEI_type = buffer[buffer_pos++]; | ||||
| 	if (MEI_type != MODBUS_MEI) { | ||||
| 		/* invalid MEI, ignore. I have no idea what MEI does, but it should always be 0x0E */ | ||||
| 		return MODBUS_ERROR; | ||||
| 	} | ||||
| 	/* next byte is read device id code */ | ||||
| 	read_device_id_code = buffer[buffer_pos++]; | ||||
| 	/* read device id code can only have values 1,2,3,4 */ | ||||
| 	if (read_device_id_code < 1 || read_device_id_code > 4) { | ||||
| 		transaction->exception = MODBUS_EXCEPTION_ILLEGAL_DEVICE_ID_CODE; | ||||
| 		return MODBUS_OK; | ||||
| 	} | ||||
| 	transaction->read_device_id_code = read_device_id_code; | ||||
| 	/* next byte is object id */ | ||||
| 	object_id = buffer[buffer_pos++]; | ||||
| 	transaction->object_id = object_id; | ||||
| 	if (object_id > MODBUS_DEVICE_ID_OBJECT_NUM) { | ||||
| 		/* illegal object ID */ | ||||
| 		transaction->exception = MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS; | ||||
| 		return MODBUS_OK; | ||||
| 	} | ||||
| 	/* Message processed */ | ||||
| 	return MODBUS_OK; | ||||
| } | ||||
|  | ||||
| /* returns ERROR only when no response to master is needed */ | ||||
| static int8_t modbus_process_read_write_request(const uint8_t *buffer, int len, modbus_transaction_t *transaction) | ||||
| { | ||||
| 	uint8_t byte_count; | ||||
| 	int8_t callback_result; | ||||
| 	uint8_t buffer_pos = 0; | ||||
|  | ||||
| 	/* set starting register number */ | ||||
| 	switch (transaction->function_code) { | ||||
| 	/* coils */ | ||||
| 	case MODBUS_READ_DO: | ||||
| 	case MODBUS_WRITE_SINGLE_DO: | ||||
| 	case MODBUS_WRITE_MULTIPLE_DO: | ||||
| 		transaction->register_number = MODBUS_DO_START_NUMBER; | ||||
| 		break; | ||||
| 	/* discrete inputs */ | ||||
| 	case MODBUS_READ_DI: | ||||
| 		transaction->register_number = MODBUS_DI_START_NUMBER; | ||||
| 		break; | ||||
| 	/* input registers */ | ||||
| 	case MODBUS_READ_AI: | ||||
| 		transaction->register_number = MODBUS_AI_START_NUMBER; | ||||
| 		break; | ||||
| 	/* holding registers */ | ||||
| 	case MODBUS_READ_AO: | ||||
| 	case MODBUS_WRITE_SINGLE_AO: | ||||
| 	case MODBUS_WRITE_MULTIPLE_AO: | ||||
| 	case MODBUS_READ_WRITE_MULTIPLE_REGISTERS: | ||||
| 		transaction->register_number = MODBUS_AO_START_NUMBER; | ||||
| 		break;	 | ||||
| 	} | ||||
|  | ||||
| 	#define MODBUS_FLAG_WRITE  0x01 | ||||
| 	#define MODBUS_FLAG_SINGLE 0x02 | ||||
| 	uint8_t flags = 0x00; | ||||
|  | ||||
| 	/* process message */ | ||||
| 	switch (transaction->function_code) { | ||||
| 	case MODBUS_WRITE_SINGLE_COIL: | ||||
| 	case MODBUS_WRITE_SINGLE_REGISTER: /* holding register */ | ||||
| 		flags |= MODBUS_FLAG_SINGLE; | ||||
| 	case MODBUS_WRITE_MULTIPLE_COILS: | ||||
| 	case MODBUS_WRITE_MULTIPLE_REGISTERS: | ||||
| 		flags |= MODBUS_FLAG_WRITE; | ||||
| 	case MODBUS_READ_DISCRETE_INPUTS: | ||||
| 	case MODBUS_READ_COILS: | ||||
| 	case MODBUS_READ_INPUT_REGISTERS: | ||||
| 	case MODBUS_READ_HOLDING_REGISTERS: | ||||
| 		if (len < MODBUS_MINIMAL_READWRITE_LEN) { | ||||
| 			/* buffer too short to contain everything we need */ | ||||
| 			return MODBUS_ERROR; | ||||
| 		} | ||||
| 		transaction->register_address = (buffer[buffer_pos] << 8) | buffer[buffer_pos + 1]; | ||||
| 		buffer += 2; | ||||
| 		// TODO check length! | ||||
| 		if (flags & MODBUS_FLAG_WRITE) { | ||||
| 			if (flags & MODBUS_FLAG_SINGLE) { | ||||
| 				transaction->holding_registers[0] = (buffer[buffer_pos] << 8) | buffer[buffer_pos + 1]; | ||||
| 				buffer_pos += 2; | ||||
| 			} else { | ||||
| 				/* Write multiple registers */ | ||||
| 				transaction->register_count = (buffer[buffer_pos] << 8) | buffer[buffer_pos + 1]; | ||||
| 				buffer_pos += 2; | ||||
| 				if (len < MODBUS_MINIMAL_WRITE_MULTIPLE_LEN) { | ||||
| 					return MODBUS_ERROR; | ||||
| 				} | ||||
| 				byte_count = buffer[buffer_pos++]; | ||||
| 				if (transaction->register_count > 123 || 2*transaction->register_count != byte_count) { | ||||
| 					/* Max number of register is defined by Modbus_Application_Protocol_V1_1b, section 6.12 */ | ||||
| 					transaction->exception = MODBUS_EXCEPTION_ILLEGAL_REGISTER_QUANTITY; | ||||
| 				} else { | ||||
| 					if (len < MODBUS_MINIMAL_WRITE_MULTIPLE_LEN + byte_count) { | ||||
| 						return MODBUS_ERROR; | ||||
| 					} | ||||
| 					for (uint8_t i = 0; i < transaction->register_count; i++) { | ||||
| 						transaction->holding_registers[i] = (buffer[buffer_pos] << 8) | buffer[buffer_pos + 1]; | ||||
| 						buffer_pos += 2; | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} else { | ||||
| 			transaction->register_count = (buffer[buffer_pos] << 8) | buffer[buffer_pos + 1]; | ||||
| 			buffer_pos += 2; | ||||
| 			if ( | ||||
| 					transaction->register_count < 1 || | ||||
| 					transaction->register_count > MODBUS_MAX_REGISTERS | ||||
| 			   ) { | ||||
| 				transaction->exception = MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE; | ||||
| 			} | ||||
| 		} | ||||
| 		// add offset to register number | ||||
| 		transaction->register_number += transaction->register_address; | ||||
| 		break; | ||||
| 	default: | ||||
| 		/* function code not known / not implemented, reply with | ||||
| 		 * ExceptionCode 1 */ | ||||
| 		transaction->exception = MODBUS_EXCEPTION_ILLEGAL_FUNCTION; | ||||
| 		break; | ||||
| 	} | ||||
| 	/* data in modbus_buffer have been processed and buffer can be re-used for TX */ | ||||
| 	/* handle reply */ | ||||
| 	if (transaction->exception != 0) { | ||||
| 		/* indicate error */ | ||||
| 		transaction->function_code |= MODBUS_ERROR_FLAG; | ||||
| 	} else { | ||||
| 		callback_result = modbus_slave_callback(transaction); | ||||
| 		/* error handling */ | ||||
| 		if (callback_result != MODBUS_OK) { | ||||
| 			transaction->function_code |= MODBUS_ERROR_FLAG; | ||||
| 			if (callback_result == MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED) { | ||||
| 				transaction->exception = MODBUS_EXCEPTION_ILLEGAL_FUNCTION; | ||||
| 			} else if (callback_result == MODBUS_ERROR_REGISTER_NOT_IMPLEMENTED) { | ||||
| 				transaction->exception = MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return MODBUS_OK; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Public function definitions | ||||
|  */ | ||||
|  | ||||
| int8_t modbus_slave_set_address(uint8_t address) | ||||
| { | ||||
| 	if (address == 0) { | ||||
| 		/* address 0 is broadcast address */ | ||||
| 		return MODBUS_ERROR; | ||||
| 	} | ||||
| 	modbus_slave_address = address; | ||||
| 	return MODBUS_OK; | ||||
| } | ||||
|  | ||||
|  | ||||
| int8_t modbus_slave_process_msg(const uint8_t *buffer, int len) | ||||
| { | ||||
|  | ||||
|  | ||||
| 	/* | ||||
| 	 * TODO list: | ||||
| 	 * | ||||
| 	 * 1) check that errors and exceptions are handled according to Modbus_Application_Protocol_V1_1b.pdf | ||||
| 	 * 2) buffer overflow prevention: for each function code, check that buffer is long enough | ||||
| 	 */ | ||||
|  | ||||
|  | ||||
| 	/* transaction holds message context and content: | ||||
| 	 * it wraps all necessary buffers and variables */ | ||||
| 	modbus_transaction_t transaction; | ||||
| 	uint8_t buffer_pos = 0; | ||||
|  | ||||
| 	if (len < MODBUS_MINIMAL_FRAME_LEN) { | ||||
| 		/* frame too short; return error (no reply needed) */ | ||||
| 		return MODBUS_ERROR_FRAME_INVALID; | ||||
| 	} | ||||
| 	/* check CRC first */ | ||||
| 	uint16_t crc_received = (buffer[len - 1] << 8) | buffer[len - 2]; | ||||
| 	uint16_t crc_calculated = modbus_CRC16(buffer, len - 2); | ||||
| 	if (crc_received != crc_calculated) { | ||||
| 		/* CRC mismatch, return error (no reply needed) */ | ||||
| 		return MODBUS_ERROR_CRC; | ||||
| 	} | ||||
| 	/* check if address matches ours */ | ||||
| 	uint8_t address = buffer[buffer_pos++]; | ||||
| 	transaction.broadcast = (address == MODBUS_BROADCAST_ADDR); | ||||
| 	if (address != modbus_slave_address && transaction.broadcast != 1) { | ||||
| 		/* Message is not for us (no reply needed) */ | ||||
| 		return MODBUS_OK; | ||||
| 	} | ||||
| 	/* get function code */ | ||||
| 	transaction.function_code = buffer[buffer_pos++]; | ||||
| 	transaction.exception = 0; | ||||
| 	uint8_t request_processing_result; | ||||
| 	if (transaction.function_code == MODBUS_READ_DEVICE_IDENTIFICATION) { | ||||
| 		/* Read device ID request is quite complicated, therefore it has its own processing function */ | ||||
| 		request_processing_result = modbus_process_device_id_request(buffer + buffer_pos, len - buffer_pos, &transaction); | ||||
| 	} else { | ||||
| 		/* process other requests: input register read, holding register read/write */ | ||||
| 		request_processing_result = modbus_process_read_write_request(buffer + buffer_pos, len - buffer_pos, &transaction); | ||||
| 	} | ||||
| 	uint8_t msg_len; | ||||
| 	/* reply only if request was processed successfully and message was not broadcast */ | ||||
| 	if (request_processing_result == MODBUS_OK && transaction.broadcast == 0) { | ||||
| 		modbus_transaction_to_buffer(modbus_buffer, &msg_len, &transaction); | ||||
| 		/* send reply */ | ||||
| 		modbus_transmit_function(modbus_buffer, msg_len); | ||||
| 	} | ||||
| 	return MODBUS_OK; | ||||
| } | ||||
|  | ||||
| int8_t modbus_slave_init_device_id(modbus_device_id_t *device_id) | ||||
| { | ||||
| 	if (device_id == NULL) { | ||||
| 		return MODBUS_ERROR; | ||||
| 	} | ||||
| 	/* at least basic category objects have to be implemented */ | ||||
| 	if (	device_id->object_name.VendorName == NULL  || | ||||
| 			device_id->object_name.ProductCode == NULL || | ||||
| 			device_id->object_name.MajorMinorRevision == NULL | ||||
| 	) { | ||||
| 		return MODBUS_ERROR; | ||||
| 	} | ||||
| 	/* set conformity level: currently only "basic" and "regular" is implemented */ | ||||
| 	if ( 	device_id->object_id[3] != NULL && | ||||
| 			device_id->object_id[4] != NULL && | ||||
| 			device_id->object_id[5] != NULL | ||||
|  | ||||
| 	) { | ||||
| 		/* strings are present in regular category (optional) */ | ||||
| 		device_id->conformity_level = MODBUS_CONFORMITY_REGULAR; | ||||
| 	} else { | ||||
| 		device_id->conformity_level = MODBUS_CONFORMITY_BASIC; | ||||
| 	} | ||||
| 	/* we support both stream and individual access to objects */ | ||||
| 	device_id->conformity_level |= MODBUS_DEVICE_ID_INDIVIDUAL_ACCESS_FLAG; | ||||
| 	modbus_device_id = device_id; | ||||
| 	return MODBUS_OK; | ||||
| } | ||||
							
								
								
									
										67
									
								
								fw/Core/Src/sht4x.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								fw/Core/Src/sht4x.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| /* | ||||
|  * sht4x.c | ||||
|  * | ||||
|  *  Created on: Jun 8, 2021 | ||||
|  *      Author: user | ||||
|  */ | ||||
|  | ||||
| #include "sht4x.h" | ||||
| #include "main.h" /* for uart_disable_interrupts() */ | ||||
|  | ||||
| int8_t sht4x_send_cmd(sht4x_cmd_t cmd) | ||||
| { | ||||
| 	return SHT4X_OK; | ||||
| } | ||||
|  | ||||
| int8_t sht4x_read_data(uint8_t *buffer, int len) | ||||
| { | ||||
| 	return SHT4X_OK; | ||||
| } | ||||
|  | ||||
| int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity) | ||||
| { | ||||
| 	uint8_t buffer[32]; | ||||
| 	int result; | ||||
|  | ||||
| 	/* disable interrupts to prevent modbus/i2c conflict */ | ||||
| 	// start measurement | ||||
| 	buffer[0] = SHT4X_START_MEAS_HIGH_PRECISION; | ||||
| 	uart_disable_interrupts(); | ||||
| 	result = i2c_transmit(SHT4X_I2C_ADDRESS<<1, buffer, 1); | ||||
| 	uart_enable_interrupts(); | ||||
| 	if (result != I2C_OK) { | ||||
| 		return SHT4X_ERROR; | ||||
| 	} | ||||
| 	LL_mDelay(10); /* 10 ms should be enough */ | ||||
| 	/* read out */ | ||||
| 	uart_disable_interrupts(); | ||||
| 	result = i2c_receive(SHT4X_I2C_ADDRESS<<1, buffer, 6); | ||||
| 	uart_enable_interrupts(); | ||||
| 	if (result != I2C_OK) { | ||||
| 		return SHT4X_ERROR; | ||||
| 	} | ||||
| 	/* Convert to T and RH; taken directly from pseudocode in SHT4x datasheet, page 3 */ | ||||
| 	uint32_t t_ticks = (buffer[0] << 8) + buffer[1]; | ||||
| 	uint8_t t_crc = buffer[2]; | ||||
| 	uint32_t rh_ticks = (buffer[3] << 8) + buffer[4]; | ||||
| 	uint8_t rh_crc = buffer[5]; | ||||
| 	/* check CRC-8 checksum */ | ||||
| 	uint8_t crc_correct = crc8_calculate(buffer, 2) == t_crc; | ||||
| 	crc_correct &= crc8_calculate(buffer + 3, 2) == rh_crc; | ||||
| 	if (!crc_correct) { | ||||
| 		return SHT4X_CRC8_ERROR; | ||||
| 	} | ||||
| 	/* copy data to output variables */ | ||||
| 	int t_degC = -450 + 10 * 175 * t_ticks / 65535; /* temperature * 10 */ | ||||
| 	int rh_pRH = -6 + 125 * rh_ticks / 65535; | ||||
| 	if (rh_pRH > 100) { | ||||
| 			rh_pRH = 100; | ||||
| 	} | ||||
| 	if (rh_pRH < 0) { | ||||
| 		rh_pRH = 0; | ||||
| 	} | ||||
| 	*temperature = t_degC; | ||||
| 	*relative_humidity = rh_pRH; | ||||
|  | ||||
| 	return SHT4X_OK; | ||||
| } | ||||
							
								
								
									
										207
									
								
								fw/Core/Src/stm32l0xx_it.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								fw/Core/Src/stm32l0xx_it.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,207 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    stm32l0xx_it.c | ||||
|   * @brief   Interrupt Service Routines. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2021 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under BSD 3-Clause license, | ||||
|   * the "License"; You may not use this file except in compliance with the | ||||
|   * License. You may obtain a copy of the License at: | ||||
|   *                        opensource.org/licenses/BSD-3-Clause | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "main.h" | ||||
| #include "stm32l0xx_it.h" | ||||
| /* Private includes ----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Includes */ | ||||
| #include "modbus.h" | ||||
| /* USER CODE END Includes */ | ||||
|  | ||||
| /* Private typedef -----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN TD */ | ||||
|  | ||||
| /* USER CODE END TD */ | ||||
|  | ||||
| /* Private define ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PD */ | ||||
|  | ||||
| /* USER CODE END PD */ | ||||
|  | ||||
| /* Private macro -------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PM */ | ||||
|  | ||||
| /* USER CODE END PM */ | ||||
|  | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PV */ | ||||
| uint16_t usart2_rx_message_index = 0; | ||||
| uint16_t usart2_rx_message_len = 0; | ||||
| uint8_t usart2_rx_done = 0; | ||||
| uint8_t usart2_rx_message_too_long = 0; | ||||
|  | ||||
| uint8_t tim21_elapsed_period = 0; | ||||
| /* USER CODE END PV */ | ||||
|  | ||||
| /* Private function prototypes -----------------------------------------------*/ | ||||
| /* USER CODE BEGIN PFP */ | ||||
| void USART2_CharReception_Callback( void ); | ||||
| /* USER CODE END PFP */ | ||||
|  | ||||
| /* Private user code ---------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN 0 */ | ||||
|  | ||||
| /* USER CODE END 0 */ | ||||
|  | ||||
| /* External variables --------------------------------------------------------*/ | ||||
|  | ||||
| /* USER CODE BEGIN EV */ | ||||
|  | ||||
| /* USER CODE END EV */ | ||||
|  | ||||
| /******************************************************************************/ | ||||
| /*           Cortex-M0+ Processor Interruption and Exception Handlers          */ | ||||
| /******************************************************************************/ | ||||
| /** | ||||
|   * @brief This function handles Non maskable Interrupt. | ||||
|   */ | ||||
| void NMI_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END NonMaskableInt_IRQn 0 */ | ||||
|   /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ | ||||
|   while (1) | ||||
|   { | ||||
|   } | ||||
|   /* USER CODE END NonMaskableInt_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles Hard fault interrupt. | ||||
|   */ | ||||
| void HardFault_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN HardFault_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END HardFault_IRQn 0 */ | ||||
|   while (1) | ||||
|   { | ||||
|     /* USER CODE BEGIN W1_HardFault_IRQn 0 */ | ||||
|     /* USER CODE END W1_HardFault_IRQn 0 */ | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles System service call via SWI instruction. | ||||
|   */ | ||||
| void SVC_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN SVC_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END SVC_IRQn 0 */ | ||||
|   /* USER CODE BEGIN SVC_IRQn 1 */ | ||||
|  | ||||
|   /* USER CODE END SVC_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles Pendable request for system service. | ||||
|   */ | ||||
| void PendSV_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN PendSV_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END PendSV_IRQn 0 */ | ||||
|   /* USER CODE BEGIN PendSV_IRQn 1 */ | ||||
|  | ||||
|   /* USER CODE END PendSV_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles System tick timer. | ||||
|   */ | ||||
| void SysTick_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN SysTick_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END SysTick_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE BEGIN SysTick_IRQn 1 */ | ||||
|   /* USER CODE END SysTick_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /******************************************************************************/ | ||||
| /* STM32L0xx Peripheral Interrupt Handlers                                    */ | ||||
| /* Add here the Interrupt Handlers for the used peripherals.                  */ | ||||
| /* For the available peripheral interrupt handler names,                      */ | ||||
| /* please refer to the startup file (startup_stm32l0xx.s).                    */ | ||||
| /******************************************************************************/ | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles TIM21 global interrupt. | ||||
|   */ | ||||
| void TIM21_IRQHandler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN TIM21_IRQn 0 */ | ||||
| 	LL_TIM_ClearFlag_UPDATE(TIM21); | ||||
| 	tim21_elapsed_period = 1; | ||||
|   /* USER CODE END TIM21_IRQn 0 */ | ||||
|   /* USER CODE BEGIN TIM21_IRQn 1 */ | ||||
|  | ||||
|   /* USER CODE END TIM21_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles USART2 global interrupt / USART2 wake-up interrupt through EXTI line 26. | ||||
|   */ | ||||
| void USART2_IRQHandler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN USART2_IRQn 0 */ | ||||
|     /* Check RXNE flag value in SR register */ | ||||
| 	if(LL_USART_IsActiveFlag_RXNE(USART2) && LL_USART_IsEnabledIT_RXNE(USART2)) | ||||
| 	{ | ||||
| 		/* RXNE flag will be cleared by reading of DR register (done in call) */ | ||||
| 		/* Call function in charge of handling Character reception */ | ||||
| 		USART2_CharReception_Callback(); | ||||
| 	} | ||||
|   /* USER CODE END USART2_IRQn 0 */ | ||||
|   /* USER CODE BEGIN USART2_IRQn 1 */ | ||||
| 	/* If the IDLE flag is active */ | ||||
| 	if (LL_USART_IsActiveFlag_IDLE(USART2) && LL_USART_IsEnabledIT_IDLE(USART2)) | ||||
| 	{ | ||||
| 		/* Clear the IDLE flag */ | ||||
| 		LL_USART_ClearFlag_IDLE(USART2); | ||||
|  | ||||
| 		/* Reset the buffer index */ | ||||
| 		usart2_rx_message_len = usart2_rx_message_index; | ||||
| 		usart2_rx_message_index = 0; | ||||
| 		usart2_rx_done = 1; | ||||
| 		if (usart2_rx_message_len > MODBUS_MAX_RTU_FRAME_SIZE) | ||||
| 		{ | ||||
| 			usart2_rx_message_too_long = 1; | ||||
| 		} | ||||
| 	} | ||||
|   /* USER CODE END USART2_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /* USER CODE BEGIN 1 */ | ||||
| void USART2_CharReception_Callback( void ) | ||||
| { | ||||
| 	uint16_t usart2_rx_bit = LL_USART_ReceiveData9(USART2); | ||||
| 	if (usart2_rx_message_index < MODBUS_MAX_RTU_FRAME_SIZE) | ||||
| 	{ | ||||
| 		modbus_buffer[usart2_rx_message_index] = (uint8_t)usart2_rx_bit; | ||||
| 	} | ||||
|     usart2_rx_message_index++; | ||||
| } | ||||
| /* USER CODE END 1 */ | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										159
									
								
								fw/Core/Src/syscalls.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								fw/Core/Src/syscalls.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,159 @@ | ||||
| /** | ||||
|  ****************************************************************************** | ||||
|  * @file      syscalls.c | ||||
|  * @author    Auto-generated by STM32CubeIDE | ||||
|  * @brief     STM32CubeIDE Minimal System calls file | ||||
|  * | ||||
|  *            For more information about which c-functions | ||||
|  *            need which of these lowlevel functions | ||||
|  *            please consult the Newlib libc-manual | ||||
|  ****************************************************************************** | ||||
|  * @attention | ||||
|  * | ||||
|  * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|  * All rights reserved.</center></h2> | ||||
|  * | ||||
|  * This software component is licensed by ST under BSD 3-Clause license, | ||||
|  * the "License"; You may not use this file except in compliance with the | ||||
|  * License. You may obtain a copy of the License at: | ||||
|  *                        opensource.org/licenses/BSD-3-Clause | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| /* Includes */ | ||||
| #include <sys/stat.h> | ||||
| #include <stdlib.h> | ||||
| #include <errno.h> | ||||
| #include <stdio.h> | ||||
| #include <signal.h> | ||||
| #include <time.h> | ||||
| #include <sys/time.h> | ||||
| #include <sys/times.h> | ||||
|  | ||||
|  | ||||
| /* Variables */ | ||||
| //#undef errno | ||||
| extern int errno; | ||||
| extern int __io_putchar(int ch) __attribute__((weak)); | ||||
| extern int __io_getchar(void) __attribute__((weak)); | ||||
|  | ||||
| register char * stack_ptr asm("sp"); | ||||
|  | ||||
| char *__env[1] = { 0 }; | ||||
| char **environ = __env; | ||||
|  | ||||
|  | ||||
| /* Functions */ | ||||
| void initialise_monitor_handles() | ||||
| { | ||||
| } | ||||
|  | ||||
| int _getpid(void) | ||||
| { | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| int _kill(int pid, int sig) | ||||
| { | ||||
| 	errno = EINVAL; | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
| void _exit (int status) | ||||
| { | ||||
| 	_kill(status, -1); | ||||
| 	while (1) {}		/* Make sure we hang here */ | ||||
| } | ||||
|  | ||||
| __attribute__((weak)) int _read(int file, char *ptr, int len) | ||||
| { | ||||
| 	int DataIdx; | ||||
|  | ||||
| 	for (DataIdx = 0; DataIdx < len; DataIdx++) | ||||
| 	{ | ||||
| 		*ptr++ = __io_getchar(); | ||||
| 	} | ||||
|  | ||||
| return len; | ||||
| } | ||||
|  | ||||
| __attribute__((weak)) int _write(int file, char *ptr, int len) | ||||
| { | ||||
| 	int DataIdx; | ||||
|  | ||||
| 	for (DataIdx = 0; DataIdx < len; DataIdx++) | ||||
| 	{ | ||||
| 		__io_putchar(*ptr++); | ||||
| 	} | ||||
| 	return len; | ||||
| } | ||||
|  | ||||
| int _close(int file) | ||||
| { | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
|  | ||||
| int _fstat(int file, struct stat *st) | ||||
| { | ||||
| 	st->st_mode = S_IFCHR; | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int _isatty(int file) | ||||
| { | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| int _lseek(int file, int ptr, int dir) | ||||
| { | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int _open(char *path, int flags, ...) | ||||
| { | ||||
| 	/* Pretend like we always fail */ | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
| int _wait(int *status) | ||||
| { | ||||
| 	errno = ECHILD; | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
| int _unlink(char *name) | ||||
| { | ||||
| 	errno = ENOENT; | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
| int _times(struct tms *buf) | ||||
| { | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
| int _stat(char *file, struct stat *st) | ||||
| { | ||||
| 	st->st_mode = S_IFCHR; | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int _link(char *old, char *new) | ||||
| { | ||||
| 	errno = EMLINK; | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
| int _fork(void) | ||||
| { | ||||
| 	errno = EAGAIN; | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
| int _execve(char *name, char **argv, char **env) | ||||
| { | ||||
| 	errno = ENOMEM; | ||||
| 	return -1; | ||||
| } | ||||
							
								
								
									
										80
									
								
								fw/Core/Src/sysmem.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								fw/Core/Src/sysmem.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| /** | ||||
|  ****************************************************************************** | ||||
|  * @file      sysmem.c | ||||
|  * @author    Generated by STM32CubeIDE | ||||
|  * @brief     STM32CubeIDE System Memory calls file | ||||
|  * | ||||
|  *            For more information about which C functions | ||||
|  *            need which of these lowlevel functions | ||||
|  *            please consult the newlib libc manual | ||||
|  ****************************************************************************** | ||||
|  * @attention | ||||
|  * | ||||
|  * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|  * All rights reserved.</center></h2> | ||||
|  * | ||||
|  * This software component is licensed by ST under BSD 3-Clause license, | ||||
|  * the "License"; You may not use this file except in compliance with the | ||||
|  * License. You may obtain a copy of the License at: | ||||
|  *                        opensource.org/licenses/BSD-3-Clause | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| /* Includes */ | ||||
| #include <errno.h> | ||||
| #include <stdint.h> | ||||
|  | ||||
| /** | ||||
|  * Pointer to the current high watermark of the heap usage | ||||
|  */ | ||||
| static uint8_t *__sbrk_heap_end = NULL; | ||||
|  | ||||
| /** | ||||
|  * @brief _sbrk() allocates memory to the newlib heap and is used by malloc | ||||
|  *        and others from the C library | ||||
|  * | ||||
|  * @verbatim | ||||
|  * ############################################################################ | ||||
|  * #  .data  #  .bss  #       newlib heap       #          MSP stack          # | ||||
|  * #         #        #                         # Reserved by _Min_Stack_Size # | ||||
|  * ############################################################################ | ||||
|  * ^-- RAM start      ^-- _end                             _estack, RAM end --^ | ||||
|  * @endverbatim | ||||
|  * | ||||
|  * This implementation starts allocating at the '_end' linker symbol | ||||
|  * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack | ||||
|  * The implementation considers '_estack' linker symbol to be RAM end | ||||
|  * NOTE: If the MSP stack, at any point during execution, grows larger than the | ||||
|  * reserved size, please increase the '_Min_Stack_Size'. | ||||
|  * | ||||
|  * @param incr Memory size | ||||
|  * @return Pointer to allocated memory | ||||
|  */ | ||||
| void *_sbrk(ptrdiff_t incr) | ||||
| { | ||||
|   extern uint8_t _end; /* Symbol defined in the linker script */ | ||||
|   extern uint8_t _estack; /* Symbol defined in the linker script */ | ||||
|   extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ | ||||
|   const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; | ||||
|   const uint8_t *max_heap = (uint8_t *)stack_limit; | ||||
|   uint8_t *prev_heap_end; | ||||
|  | ||||
|   /* Initialize heap end at first call */ | ||||
|   if (NULL == __sbrk_heap_end) | ||||
|   { | ||||
|     __sbrk_heap_end = &_end; | ||||
|   } | ||||
|  | ||||
|   /* Protect heap from growing into the reserved MSP stack */ | ||||
|   if (__sbrk_heap_end + incr > max_heap) | ||||
|   { | ||||
|     errno = ENOMEM; | ||||
|     return (void *)-1; | ||||
|   } | ||||
|  | ||||
|   prev_heap_end = __sbrk_heap_end; | ||||
|   __sbrk_heap_end += incr; | ||||
|  | ||||
|   return (void *)prev_heap_end; | ||||
| } | ||||
							
								
								
									
										275
									
								
								fw/Core/Src/system_stm32l0xx.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										275
									
								
								fw/Core/Src/system_stm32l0xx.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,275 @@ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    system_stm32l0xx.c | ||||
|   * @author  MCD Application Team | ||||
|   * @brief   CMSIS Cortex-M0+ Device Peripheral Access Layer System Source File. | ||||
|   * | ||||
|   *   This file provides two functions and one global variable to be called from | ||||
|   *   user application: | ||||
|   *      - SystemInit(): This function is called at startup just after reset and | ||||
|   *                      before branch to main program. This call is made inside | ||||
|   *                      the "startup_stm32l0xx.s" file. | ||||
|   * | ||||
|   *      - SystemCoreClock variable: Contains the core clock (HCLK), it can be used | ||||
|   *                                  by the user application to setup the SysTick | ||||
|   *                                  timer or configure other parameters. | ||||
|   * | ||||
|   *      - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must | ||||
|   *                                 be called whenever the core clock is changed | ||||
|   *                                 during program execution. | ||||
|   * | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright(c) 2016 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under BSD 3-Clause license, | ||||
|   * the "License"; You may not use this file except in compliance with the | ||||
|   * License. You may obtain a copy of the License at: | ||||
|   *                        opensource.org/licenses/BSD-3-Clause | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup CMSIS | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup stm32l0xx_system | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32L0xx_System_Private_Includes | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| #include "stm32l0xx.h" | ||||
|  | ||||
| #if !defined  (HSE_VALUE) | ||||
|   #define HSE_VALUE    ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */ | ||||
| #endif /* HSE_VALUE */ | ||||
|  | ||||
| #if !defined  (MSI_VALUE) | ||||
|   #define MSI_VALUE    ((uint32_t)2097152U) /*!< Value of the Internal oscillator in Hz*/ | ||||
| #endif /* MSI_VALUE */ | ||||
|  | ||||
| #if !defined  (HSI_VALUE) | ||||
|   #define HSI_VALUE    ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ | ||||
| #endif /* HSI_VALUE */ | ||||
|  | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32L0xx_System_Private_TypesDefinitions | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32L0xx_System_Private_Defines | ||||
|   * @{ | ||||
|   */ | ||||
| /************************* Miscellaneous Configuration ************************/ | ||||
|  | ||||
| /* Note: Following vector table addresses must be defined in line with linker | ||||
|          configuration. */ | ||||
| /*!< Uncomment the following line if you need to relocate the vector table | ||||
|      anywhere in Flash or Sram, else the vector table is kept at the automatic | ||||
|      remap of boot address selected */ | ||||
| /* #define USER_VECT_TAB_ADDRESS */ | ||||
|  | ||||
| #if defined(USER_VECT_TAB_ADDRESS) | ||||
| /*!< Uncomment the following line if you need to relocate your vector Table | ||||
|      in Sram else user remap will be done in Flash. */ | ||||
| /* #define VECT_TAB_SRAM */ | ||||
| #if defined(VECT_TAB_SRAM) | ||||
| #define VECT_TAB_BASE_ADDRESS   SRAM_BASE       /*!< Vector Table base address field. | ||||
|                                                      This value must be a multiple of 0x200. */ | ||||
| #define VECT_TAB_OFFSET         0x00000000U     /*!< Vector Table base offset field. | ||||
|                                                      This value must be a multiple of 0x200. */ | ||||
| #else | ||||
| #define VECT_TAB_BASE_ADDRESS   FLASH_BASE      /*!< Vector Table base address field. | ||||
|                                                      This value must be a multiple of 0x200. */ | ||||
| #define VECT_TAB_OFFSET         0x00000000U     /*!< Vector Table base offset field. | ||||
|                                                      This value must be a multiple of 0x200. */ | ||||
| #endif /* VECT_TAB_SRAM */ | ||||
| #endif /* USER_VECT_TAB_ADDRESS */ | ||||
|  | ||||
| /******************************************************************************/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32L0xx_System_Private_Macros | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32L0xx_System_Private_Variables | ||||
|   * @{ | ||||
|   */ | ||||
|   /* This variable is updated in three ways: | ||||
|       1) by calling CMSIS function SystemCoreClockUpdate() | ||||
|       2) by calling HAL API function HAL_RCC_GetHCLKFreq() | ||||
|       3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency | ||||
|          Note: If you use this function to configure the system clock; then there | ||||
|                is no need to call the 2 first functions listed above, since SystemCoreClock | ||||
|                variable is updated automatically. | ||||
|   */ | ||||
|   uint32_t SystemCoreClock = 2097152U; /* 32.768 kHz * 2^6 */ | ||||
|   const uint8_t AHBPrescTable[16] = {0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U, 6U, 7U, 8U, 9U}; | ||||
|   const uint8_t APBPrescTable[8] = {0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U}; | ||||
|   const uint8_t PLLMulTable[9] = {3U, 4U, 6U, 8U, 12U, 16U, 24U, 32U, 48U}; | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32L0xx_System_Private_FunctionPrototypes | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32L0xx_System_Private_Functions | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @brief  Setup the microcontroller system. | ||||
|   * @param  None | ||||
|   * @retval None | ||||
|   */ | ||||
| void SystemInit (void) | ||||
| { | ||||
|   /* Configure the Vector Table location add offset address ------------------*/ | ||||
| #if defined (USER_VECT_TAB_ADDRESS) | ||||
|   SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ | ||||
| #endif /* USER_VECT_TAB_ADDRESS */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief  Update SystemCoreClock variable according to Clock Register Values. | ||||
|   *         The SystemCoreClock variable contains the core clock (HCLK), it can | ||||
|   *         be used by the user application to setup the SysTick timer or configure | ||||
|   *         other parameters. | ||||
|   * | ||||
|   * @note   Each time the core clock (HCLK) changes, this function must be called | ||||
|   *         to update SystemCoreClock variable value. Otherwise, any configuration | ||||
|   *         based on this variable will be incorrect. | ||||
|   * | ||||
|   * @note   - The system frequency computed by this function is not the real | ||||
|   *           frequency in the chip. It is calculated based on the predefined | ||||
|   *           constant and the selected clock source: | ||||
|   * | ||||
|   *           - If SYSCLK source is MSI, SystemCoreClock will contain the MSI | ||||
|   *             value as defined by the MSI range. | ||||
|   * | ||||
|   *           - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) | ||||
|   * | ||||
|   *           - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) | ||||
|   * | ||||
|   *           - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) | ||||
|   *             or HSI_VALUE(*) multiplied/divided by the PLL factors. | ||||
|   * | ||||
|   *         (*) HSI_VALUE is a constant defined in stm32l0xx_hal.h file (default value | ||||
|   *             16 MHz) but the real value may vary depending on the variations | ||||
|   *             in voltage and temperature. | ||||
|   * | ||||
|   *         (**) HSE_VALUE is a constant defined in stm32l0xx_hal.h file (default value | ||||
|   *              8 MHz), user has to ensure that HSE_VALUE is same as the real | ||||
|   *              frequency of the crystal used. Otherwise, this function may | ||||
|   *              have wrong result. | ||||
|   * | ||||
|   *         - The result of this function could be not correct when using fractional | ||||
|   *           value for HSE crystal. | ||||
|   * @param  None | ||||
|   * @retval None | ||||
|   */ | ||||
| void SystemCoreClockUpdate (void) | ||||
| { | ||||
|   uint32_t tmp = 0U, pllmul = 0U, plldiv = 0U, pllsource = 0U, msirange = 0U; | ||||
|  | ||||
|   /* Get SYSCLK source -------------------------------------------------------*/ | ||||
|   tmp = RCC->CFGR & RCC_CFGR_SWS; | ||||
|  | ||||
|   switch (tmp) | ||||
|   { | ||||
|     case 0x00U:  /* MSI used as system clock */ | ||||
|       msirange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE) >> RCC_ICSCR_MSIRANGE_Pos; | ||||
|       SystemCoreClock = (32768U * (1U << (msirange + 1U))); | ||||
|       break; | ||||
|     case 0x04U:  /* HSI used as system clock */ | ||||
|       if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) | ||||
|       { | ||||
|         SystemCoreClock = HSI_VALUE / 4U; | ||||
|       } | ||||
|       else | ||||
|       { | ||||
|         SystemCoreClock = HSI_VALUE; | ||||
|       } | ||||
|       break; | ||||
|     case 0x08U:  /* HSE used as system clock */ | ||||
|       SystemCoreClock = HSE_VALUE; | ||||
|       break; | ||||
|     default:  /* PLL used as system clock */ | ||||
|       /* Get PLL clock source and multiplication factor ----------------------*/ | ||||
|       pllmul = RCC->CFGR & RCC_CFGR_PLLMUL; | ||||
|       plldiv = RCC->CFGR & RCC_CFGR_PLLDIV; | ||||
|       pllmul = PLLMulTable[(pllmul >> RCC_CFGR_PLLMUL_Pos)]; | ||||
|       plldiv = (plldiv >> RCC_CFGR_PLLDIV_Pos) + 1U; | ||||
|  | ||||
|       pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; | ||||
|  | ||||
|       if (pllsource == 0x00U) | ||||
|       { | ||||
|         /* HSI oscillator clock selected as PLL clock entry */ | ||||
|         if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) | ||||
|         { | ||||
|           SystemCoreClock = (((HSI_VALUE / 4U) * pllmul) / plldiv); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|           SystemCoreClock = (((HSI_VALUE) * pllmul) / plldiv); | ||||
|         } | ||||
|       } | ||||
|       else | ||||
|       { | ||||
|         /* HSE selected as PLL clock entry */ | ||||
|         SystemCoreClock = (((HSE_VALUE) * pllmul) / plldiv); | ||||
|       } | ||||
|       break; | ||||
|   } | ||||
|   /* Compute HCLK clock frequency --------------------------------------------*/ | ||||
|   /* Get HCLK prescaler */ | ||||
|   tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; | ||||
|   /* HCLK clock frequency */ | ||||
|   SystemCoreClock >>= tmp; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										261
									
								
								fw/Core/Startup/startup_stm32l031g6ux.s
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								fw/Core/Startup/startup_stm32l031g6ux.s
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,261 @@ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file      startup_stm32l031xx.s | ||||
|   * @author    MCD Application Team | ||||
|   * @brief     STM32L031xx Devices vector table for GCC toolchain. | ||||
|   *            This module performs: | ||||
|   *                - Set the initial SP | ||||
|   *                - Set the initial PC == Reset_Handler, | ||||
|   *                - Set the vector table entries with the exceptions ISR address | ||||
|   *                - Branches to main in the C library (which eventually | ||||
|   *                  calls main()). | ||||
|   *            After Reset the Cortex-M0+ processor is in Thread mode, | ||||
|   *            priority is Privileged, and the Stack is set to Main. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2016 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under BSD 3-Clause license, | ||||
|   * the "License"; You may not use this file except in compliance with the | ||||
|   * License. You may obtain a copy of the License at: | ||||
|   *                        opensource.org/licenses/BSD-3-Clause | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
|  | ||||
|   .syntax unified | ||||
|   .cpu cortex-m0plus | ||||
|   .fpu softvfp | ||||
|   .thumb | ||||
|  | ||||
| .global  g_pfnVectors | ||||
| .global  Default_Handler | ||||
|  | ||||
| /* start address for the initialization values of the .data section. | ||||
| defined in linker script */ | ||||
| .word  _sidata | ||||
| /* start address for the .data section. defined in linker script */ | ||||
| .word  _sdata | ||||
| /* end address for the .data section. defined in linker script */ | ||||
| .word  _edata | ||||
| /* start address for the .bss section. defined in linker script */ | ||||
| .word  _sbss | ||||
| /* end address for the .bss section. defined in linker script */ | ||||
| .word  _ebss | ||||
|  | ||||
|     .section  .text.Reset_Handler | ||||
|   .weak  Reset_Handler | ||||
|   .type  Reset_Handler, %function | ||||
| Reset_Handler:   | ||||
|    ldr   r0, =_estack | ||||
|    mov   sp, r0          /* set stack pointer */ | ||||
|  | ||||
| /* Copy the data segment initializers from flash to SRAM */ | ||||
|   ldr r0, =_sdata | ||||
|   ldr r1, =_edata | ||||
|   ldr r2, =_sidata | ||||
|   movs r3, #0 | ||||
|   b LoopCopyDataInit | ||||
|  | ||||
| CopyDataInit: | ||||
|   ldr r4, [r2, r3] | ||||
|   str r4, [r0, r3] | ||||
|   adds r3, r3, #4 | ||||
|  | ||||
| LoopCopyDataInit: | ||||
|   adds r4, r0, r3 | ||||
|   cmp r4, r1 | ||||
|   bcc CopyDataInit | ||||
|    | ||||
| /* Zero fill the bss segment. */ | ||||
|   ldr r2, =_sbss | ||||
|   ldr r4, =_ebss | ||||
|   movs r3, #0 | ||||
|   b LoopFillZerobss | ||||
|  | ||||
| FillZerobss: | ||||
|   str  r3, [r2] | ||||
|   adds r2, r2, #4 | ||||
|  | ||||
| LoopFillZerobss: | ||||
|   cmp r2, r4 | ||||
|   bcc FillZerobss | ||||
|  | ||||
| /* Call the clock system intitialization function.*/ | ||||
|   bl  SystemInit | ||||
| /* Call static constructors */ | ||||
|     bl __libc_init_array | ||||
| /* Call the application's entry point.*/ | ||||
|   bl  main | ||||
|  | ||||
| LoopForever: | ||||
|     b LoopForever | ||||
|  | ||||
|  | ||||
| .size  Reset_Handler, .-Reset_Handler | ||||
|  | ||||
| /** | ||||
|  * @brief  This is the code that gets called when the processor receives an | ||||
|  *         unexpected interrupt.  This simply enters an infinite loop, preserving | ||||
|  *         the system state for examination by a debugger. | ||||
|  * | ||||
|  * @param  None | ||||
|  * @retval : None | ||||
| */ | ||||
|     .section  .text.Default_Handler,"ax",%progbits | ||||
| Default_Handler: | ||||
| Infinite_Loop: | ||||
|   b  Infinite_Loop | ||||
|   .size  Default_Handler, .-Default_Handler | ||||
| /****************************************************************************** | ||||
| * | ||||
| * The minimal vector table for a Cortex M0.  Note that the proper constructs | ||||
| * must be placed on this to ensure that it ends up at physical address | ||||
| * 0x0000.0000. | ||||
| * | ||||
| ******************************************************************************/ | ||||
|    .section  .isr_vector,"a",%progbits | ||||
|   .type  g_pfnVectors, %object | ||||
|   .size  g_pfnVectors, .-g_pfnVectors | ||||
|  | ||||
|  | ||||
| g_pfnVectors: | ||||
|   .word  _estack | ||||
|   .word  Reset_Handler | ||||
|   .word  NMI_Handler | ||||
|   .word  HardFault_Handler | ||||
|   .word  0 | ||||
|   .word  0 | ||||
|   .word  0 | ||||
|   .word  0 | ||||
|   .word  0 | ||||
|   .word  0 | ||||
|   .word  0 | ||||
|   .word  SVC_Handler | ||||
|   .word  0 | ||||
|   .word  0 | ||||
|   .word  PendSV_Handler | ||||
|   .word  SysTick_Handler | ||||
|   .word     WWDG_IRQHandler                   /* Window WatchDog              */ | ||||
|   .word     PVD_IRQHandler                    /* PVD through EXTI Line detection */ | ||||
|   .word     RTC_IRQHandler                    /* RTC through the EXTI line     */ | ||||
|   .word     FLASH_IRQHandler                  /* FLASH                        */ | ||||
|   .word     RCC_IRQHandler                    /* RCC                          */ | ||||
|   .word     EXTI0_1_IRQHandler                /* EXTI Line 0 and 1            */ | ||||
|   .word     EXTI2_3_IRQHandler                /* EXTI Line 2 and 3            */ | ||||
|   .word     EXTI4_15_IRQHandler               /* EXTI Line 4 to 15            */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     DMA1_Channel1_IRQHandler          /* DMA1 Channel 1               */ | ||||
|   .word     DMA1_Channel2_3_IRQHandler        /* DMA1 Channel 2 and Channel 3 */ | ||||
|   .word     DMA1_Channel4_5_6_7_IRQHandler    /* DMA1 Channel 4, Channel 5, Channel 6 and Channel 7*/ | ||||
|   .word     ADC1_COMP_IRQHandler              /* ADC1, COMP1 and COMP2        */ | ||||
|   .word     LPTIM1_IRQHandler                 /* LPTIM1                       */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     TIM2_IRQHandler                   /* TIM2                         */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     TIM21_IRQHandler                  /* TIM21                        */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     TIM22_IRQHandler                  /* TIM22                        */ | ||||
|   .word     I2C1_IRQHandler                   /* I2C1                         */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     SPI1_IRQHandler                   /* SPI1                         */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     USART2_IRQHandler                 /* USART2                       */ | ||||
|   .word     LPUART1_IRQHandler                /* LPUART1                      */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|   .word     0                                 /* Reserved                     */ | ||||
|  | ||||
| /******************************************************************************* | ||||
| * | ||||
| * Provide weak aliases for each Exception handler to the Default_Handler. | ||||
| * As they are weak aliases, any function with the same name will override | ||||
| * this definition. | ||||
| * | ||||
| *******************************************************************************/ | ||||
|  | ||||
|    .weak      NMI_Handler | ||||
|    .thumb_set NMI_Handler,Default_Handler | ||||
|  | ||||
|    .weak      HardFault_Handler | ||||
|    .thumb_set HardFault_Handler,Default_Handler | ||||
|  | ||||
|    .weak      SVC_Handler | ||||
|    .thumb_set SVC_Handler,Default_Handler | ||||
|  | ||||
|    .weak      PendSV_Handler | ||||
|    .thumb_set PendSV_Handler,Default_Handler | ||||
|  | ||||
|    .weak      SysTick_Handler | ||||
|    .thumb_set SysTick_Handler,Default_Handler | ||||
|  | ||||
|    .weak      WWDG_IRQHandler | ||||
|    .thumb_set WWDG_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      PVD_IRQHandler | ||||
|    .thumb_set PVD_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      RTC_IRQHandler | ||||
|    .thumb_set RTC_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      FLASH_IRQHandler | ||||
|    .thumb_set FLASH_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      RCC_IRQHandler | ||||
|    .thumb_set RCC_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      EXTI0_1_IRQHandler | ||||
|    .thumb_set EXTI0_1_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      EXTI2_3_IRQHandler | ||||
|    .thumb_set EXTI2_3_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      EXTI4_15_IRQHandler | ||||
|    .thumb_set EXTI4_15_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      DMA1_Channel1_IRQHandler | ||||
|    .thumb_set DMA1_Channel1_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      DMA1_Channel2_3_IRQHandler | ||||
|    .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      DMA1_Channel4_5_6_7_IRQHandler | ||||
|    .thumb_set DMA1_Channel4_5_6_7_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      ADC1_COMP_IRQHandler | ||||
|    .thumb_set ADC1_COMP_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      LPTIM1_IRQHandler | ||||
|    .thumb_set LPTIM1_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      TIM2_IRQHandler | ||||
|    .thumb_set TIM2_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      TIM21_IRQHandler | ||||
|    .thumb_set TIM21_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      TIM22_IRQHandler | ||||
|    .thumb_set TIM22_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      I2C1_IRQHandler | ||||
|    .thumb_set I2C1_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      SPI1_IRQHandler | ||||
|    .thumb_set SPI1_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      USART2_IRQHandler | ||||
|    .thumb_set USART2_IRQHandler,Default_Handler | ||||
|  | ||||
|    .weak      LPUART1_IRQHandler | ||||
|    .thumb_set LPUART1_IRQHandler,Default_Handler | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
|  | ||||
							
								
								
									
										24
									
								
								fw/Debug/Core/Src/config.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								fw/Debug/Core/Src/config.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| Core/Src/config.o: ../Core/Src/config.c ../Core/Inc/config.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h | ||||
|  | ||||
| ../Core/Inc/config.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/config.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/config.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										7
									
								
								fw/Debug/Core/Src/config.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								fw/Debug/Core/Src/config.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| config.c:43:8:config_read	16	static | ||||
| config.c:70:8:config_write	16	static | ||||
| config.c:135:15:eeprom_lock	24	static | ||||
| config.c:165:15:eeprom_unlock	24	static | ||||
| config.c:198:15:eeprom_program_byte	16	static | ||||
| config.c:213:15:eeprom_program_halfword	16	static | ||||
| config.c:229:15:eeprom_program_word	16	static | ||||
							
								
								
									
										3
									
								
								fw/Debug/Core/Src/crc8.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								fw/Debug/Core/Src/crc8.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| Core/Src/crc8.o: ../Core/Src/crc8.c ../Core/Inc/crc8.h | ||||
|  | ||||
| ../Core/Inc/crc8.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/crc8.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/crc8.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1
									
								
								fw/Debug/Core/Src/crc8.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								fw/Debug/Core/Src/crc8.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| crc8.c:11:9:crc8_calculate	24	static | ||||
							
								
								
									
										30
									
								
								fw/Debug/Core/Src/i2c.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								fw/Debug/Core/Src/i2c.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| Core/Src/i2c.o: ../Core/Src/i2c.c ../Core/Inc/i2c.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h | ||||
|  | ||||
| ../Core/Inc/i2c.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/i2c.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/i2c.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										11
									
								
								fw/Debug/Core/Src/i2c.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								fw/Debug/Core/Src/i2c.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| stm32l0xx_ll_i2c.h:1553:26:LL_I2C_IsActiveFlag_TXE	16	static | ||||
| stm32l0xx_ll_i2c.h:1579:26:LL_I2C_IsActiveFlag_RXNE	16	static | ||||
| stm32l0xx_ll_i2c.h:1618:26:LL_I2C_IsActiveFlag_STOP	16	static | ||||
| stm32l0xx_ll_i2c.h:1775:22:LL_I2C_ClearFlag_STOP	16	static | ||||
| stm32l0xx_ll_i2c.h:1787:22:LL_I2C_ClearFlag_TXE	16	static | ||||
| stm32l0xx_ll_i2c.h:2134:22:LL_I2C_HandleTransfer	24	static | ||||
| stm32l0xx_ll_i2c.h:2219:25:LL_I2C_ReceiveData8	16	static | ||||
| stm32l0xx_ll_i2c.h:2231:22:LL_I2C_TransmitData8	16	static | ||||
| i2c.c:13:8:i2c_init	16	static | ||||
| i2c.c:22:8:i2c_transmit	40	static | ||||
| i2c.c:50:8:i2c_receive	48	static | ||||
							
								
								
									
										83
									
								
								fw/Debug/Core/Src/ltr329.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								fw/Debug/Core/Src/ltr329.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| Core/Src/ltr329.o: ../Core/Src/ltr329.c ../Core/Inc/ltr329.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h \ | ||||
|  ../Core/Inc/i2c.h ../Core/Inc/main.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h \ | ||||
|  ../Core/Inc/sht4x.h ../Core/Inc/crc8.h ../Core/Inc/ltr329.h \ | ||||
|  ../Core/Inc/modbus.h ../Core/Inc/config.h | ||||
|  | ||||
| ../Core/Inc/ltr329.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h: | ||||
|  | ||||
| ../Core/Inc/i2c.h: | ||||
|  | ||||
| ../Core/Inc/main.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h: | ||||
|  | ||||
| ../Core/Inc/sht4x.h: | ||||
|  | ||||
| ../Core/Inc/crc8.h: | ||||
|  | ||||
| ../Core/Inc/ltr329.h: | ||||
|  | ||||
| ../Core/Inc/modbus.h: | ||||
|  | ||||
| ../Core/Inc/config.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/ltr329.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/ltr329.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										8
									
								
								fw/Debug/Core/Src/ltr329.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								fw/Debug/Core/Src/ltr329.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| ltr329.c:10:15:ltr329_read_register	40	static | ||||
| ltr329.c:38:15:ltr329_write_register	32	static | ||||
| ltr329.c:56:8:ltr329_write_settings	32	static | ||||
| ltr329.c:75:8:ltr329_read_settings	48	static | ||||
| ltr329.c:108:8:ltr329_sw_reset	24	static | ||||
| ltr329.c:120:8:ltr329_measure	24	static | ||||
| ltr329.c:150:8:ltr329_read_status_register	40	static | ||||
| ltr329.c:188:8:ltr329_read_device_info	32	static | ||||
							
								
								
									
										80
									
								
								fw/Debug/Core/Src/main.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								fw/Debug/Core/Src/main.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h \ | ||||
|  ../Core/Inc/i2c.h ../Core/Inc/sht4x.h ../Core/Inc/crc8.h \ | ||||
|  ../Core/Inc/ltr329.h ../Core/Inc/modbus.h ../Core/Inc/config.h | ||||
|  | ||||
| ../Core/Inc/main.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h: | ||||
|  | ||||
| ../Core/Inc/i2c.h: | ||||
|  | ||||
| ../Core/Inc/sht4x.h: | ||||
|  | ||||
| ../Core/Inc/crc8.h: | ||||
|  | ||||
| ../Core/Inc/ltr329.h: | ||||
|  | ||||
| ../Core/Inc/modbus.h: | ||||
|  | ||||
| ../Core/Inc/config.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/main.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/main.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										72
									
								
								fw/Debug/Core/Src/main.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								fw/Debug/Core/Src/main.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| core_cm0plus.h:741:22:__NVIC_EnableIRQ	16	static | ||||
| core_cm0plus.h:848:22:__NVIC_SetPriority	24	static | ||||
| core_cm0plus.h:983:34:__NVIC_SystemReset	8	static,ignoring_inline_asm | ||||
| stm32l0xx_ll_i2c.h:430:22:LL_I2C_Enable	16	static | ||||
| stm32l0xx_ll_i2c.h:645:22:LL_I2C_EnableClockStretching	16	static | ||||
| stm32l0xx_ll_i2c.h:765:22:LL_I2C_DisableGeneralCall	16	static | ||||
| stm32l0xx_ll_i2c.h:876:22:LL_I2C_SetOwnAddress2	24	static | ||||
| stm32l0xx_ll_i2c.h:898:22:LL_I2C_DisableOwnAddress2	16	static | ||||
| stm32l0xx_ll_i2c.h:1880:22:LL_I2C_EnableAutoEndMode	16	static | ||||
| stm32l0xx_ll_iwdg.h:142:22:LL_IWDG_Enable	16	static | ||||
| stm32l0xx_ll_iwdg.h:153:22:LL_IWDG_ReloadCounter	16	static | ||||
| stm32l0xx_ll_iwdg.h:164:22:LL_IWDG_EnableWriteAccess	16	static | ||||
| stm32l0xx_ll_iwdg.h:194:22:LL_IWDG_SetPrescaler	16	static | ||||
| stm32l0xx_ll_iwdg.h:224:22:LL_IWDG_SetReloadCounter	16	static | ||||
| stm32l0xx_ll_iwdg.h:312:26:LL_IWDG_IsReady	16	static | ||||
| stm32l0xx_ll_rcc.h:782:22:LL_RCC_HSI_Enable	8	static | ||||
| stm32l0xx_ll_rcc.h:802:26:LL_RCC_HSI_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:893:22:LL_RCC_HSI_SetCalibTrimming	16	static | ||||
| stm32l0xx_ll_rcc.h:1125:22:LL_RCC_LSI_Enable	8	static | ||||
| stm32l0xx_ll_rcc.h:1145:26:LL_RCC_LSI_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:1275:22:LL_RCC_SetSysClkSource	16	static | ||||
| stm32l0xx_ll_rcc.h:1289:26:LL_RCC_GetSysClkSource	8	static | ||||
| stm32l0xx_ll_rcc.h:1309:22:LL_RCC_SetAHBPrescaler	16	static | ||||
| stm32l0xx_ll_rcc.h:1325:22:LL_RCC_SetAPB1Prescaler	16	static | ||||
| stm32l0xx_ll_rcc.h:1341:22:LL_RCC_SetAPB2Prescaler	16	static | ||||
| stm32l0xx_ll_rcc.h:1481:22:LL_RCC_SetUSARTClockSource	16	static | ||||
| stm32l0xx_ll_rcc.h:1515:22:LL_RCC_SetI2CClockSource	16	static | ||||
| stm32l0xx_ll_rcc.h:1784:22:LL_RCC_PLL_Enable	8	static | ||||
| stm32l0xx_ll_rcc.h:1805:26:LL_RCC_PLL_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:1834:22:LL_RCC_PLL_ConfigDomain_SYS	24	static | ||||
| stm32l0xx_ll_bus.h:440:22:LL_APB1_GRP1_EnableClock	24	static | ||||
| stm32l0xx_ll_bus.h:786:22:LL_APB2_GRP1_EnableClock	24	static | ||||
| stm32l0xx_ll_bus.h:987:22:LL_IOP_GRP1_EnableClock	24	static | ||||
| stm32l0xx_ll_system.h:912:22:LL_FLASH_SetLatency	16	static | ||||
| stm32l0xx_ll_system.h:924:26:LL_FLASH_GetLatency	8	static | ||||
| stm32l0xx_ll_pwr.h:272:22:LL_PWR_SetRegulVoltageScaling	16	static | ||||
| stm32l0xx_ll_tim.h:910:22:LL_TIM_EnableCounter	16	static | ||||
| stm32l0xx_ll_tim.h:1090:22:LL_TIM_EnableARRPreload	16	static | ||||
| stm32l0xx_ll_tim.h:2228:22:LL_TIM_SetClockSource	16	static | ||||
| stm32l0xx_ll_tim.h:2274:22:LL_TIM_SetTriggerOutput	16	static | ||||
| stm32l0xx_ll_tim.h:2340:22:LL_TIM_DisableMasterSlaveMode	16	static | ||||
| stm32l0xx_ll_tim.h:2808:22:LL_TIM_EnableIT_UPDATE	16	static | ||||
| stm32l0xx_ll_usart.h:536:22:LL_USART_Enable	16	static | ||||
| stm32l0xx_ll_usart.h:550:22:LL_USART_Disable	16	static | ||||
| stm32l0xx_ll_usart.h:649:22:LL_USART_EnableDirectionRx	32	static,ignoring_inline_asm | ||||
| stm32l0xx_ll_usart.h:671:22:LL_USART_EnableDirectionTx	32	static,ignoring_inline_asm | ||||
| stm32l0xx_ll_usart.h:1608:22:LL_USART_SetBaudRate	32	static | ||||
| stm32l0xx_ll_usart.h:1640:26:LL_USART_GetBaudRate	32	static | ||||
| stm32l0xx_ll_usart.h:2140:22:LL_USART_SetDEDeassertionTime	16	static | ||||
| stm32l0xx_ll_usart.h:2167:22:LL_USART_SetDEAssertionTime	16	static | ||||
| stm32l0xx_ll_usart.h:2193:22:LL_USART_EnableDEMode	16	static | ||||
| stm32l0xx_ll_usart.h:2235:22:LL_USART_SetDESignalPolarity	16	static | ||||
| stm32l0xx_ll_usart.h:2288:22:LL_USART_ConfigAsyncMode	16	static | ||||
| stm32l0xx_ll_usart.h:2630:26:LL_USART_IsActiveFlag_TXE	16	static | ||||
| stm32l0xx_ll_usart.h:2985:22:LL_USART_EnableIT_IDLE	32	static,ignoring_inline_asm | ||||
| stm32l0xx_ll_usart.h:2996:22:LL_USART_EnableIT_RXNE	32	static,ignoring_inline_asm | ||||
| stm32l0xx_ll_usart.h:3145:22:LL_USART_DisableIT_IDLE	32	static,ignoring_inline_asm | ||||
| stm32l0xx_ll_usart.h:3156:22:LL_USART_DisableIT_RXNE	32	static,ignoring_inline_asm | ||||
| stm32l0xx_ll_usart.h:3639:22:LL_USART_TransmitData9	16	static | ||||
| main.c:135:5:main	32	static | ||||
| main.c:316:6:SystemClock_Config	8	static | ||||
| main.c:369:13:MX_I2C1_Init	72	static | ||||
| main.c:432:13:MX_IWDG_Init	8	static | ||||
| main.c:462:13:MX_TIM21_Init	24	static | ||||
| main.c:501:13:MX_USART2_UART_Init	72	static | ||||
| main.c:586:13:MX_GPIO_Init	8	static | ||||
| main.c:595:6:USART2_TX_Buffer	24	static,ignoring_inline_asm | ||||
| main.c:606:8:uart_disable_interrupts	8	static | ||||
| main.c:615:8:uart_enable_interrupts	8	static | ||||
| main.c:624:8:modbus_slave_callback	32	static | ||||
| main.c:709:8:modbus_transmit_function	16	static | ||||
| main.c:721:6:Error_Handler	8	static,ignoring_inline_asm | ||||
							
								
								
									
										3
									
								
								fw/Debug/Core/Src/modbus.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								fw/Debug/Core/Src/modbus.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| Core/Src/modbus.o: ../Core/Src/modbus.c ../Core/Inc/modbus.h | ||||
|  | ||||
| ../Core/Inc/modbus.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/modbus.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/modbus.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										8
									
								
								fw/Debug/Core/Src/modbus.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								fw/Debug/Core/Src/modbus.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| modbus.c:33:10:modbus_CRC16	32	static | ||||
| modbus.c:57:16:modbus_fill_device_id_objects	40	static | ||||
| modbus.c:107:15:modbus_transaction_to_buffer	56	static | ||||
| modbus.c:168:15:modbus_process_device_id_request	32	static | ||||
| modbus.c:215:15:modbus_process_read_write_request	40	static | ||||
| modbus.c:337:8:modbus_slave_set_address	16	static | ||||
| modbus.c:348:8:modbus_slave_process_msg	312	static | ||||
| modbus.c:404:8:modbus_slave_init_device_id	16	static | ||||
							
								
								
									
										9
									
								
								fw/Debug/Core/Src/rgbled.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								fw/Debug/Core/Src/rgbled.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| stm32l0xx_ll_tim.h:1687:22:LL_TIM_OC_SetCompareCH1	16	static | ||||
| stm32l0xx_ll_tim.h:1701:22:LL_TIM_OC_SetCompareCH2	16	static | ||||
| stm32l0xx_ll_tim.h:1715:22:LL_TIM_OC_SetCompareCH3	16	static | ||||
| stm32l0xx_ll_tim.h:1729:22:LL_TIM_OC_SetCompareCH4	16	static | ||||
| rgbled.c:13:8:rgbled_init	16	static | ||||
| rgbled.c:23:8:rgbled_set_color	32	static | ||||
| rgbled.c:57:8:rgbled_set_intensity	16	static | ||||
| rgbled.c:65:8:rgbled_get_intensity	16	static | ||||
| rgbled.c:73:8:rgbled_off	8	static | ||||
							
								
								
									
										7
									
								
								fw/Debug/Core/Src/scd4x.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								fw/Debug/Core/Src/scd4x.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| scd4x.c:11:8:scd4x_send_cmd	56	static | ||||
| scd4x.c:28:8:scd4x_get_serial	40	static | ||||
| scd4x.c:41:8:scd4x_read_data	16	static | ||||
| scd4x.c:46:8:scd4x_start_periodic_measurement	8	static | ||||
| scd4x.c:51:8:scd4x_stop_periodic_measurement	8	static | ||||
| scd4x.c:56:8:scd4x_perform_factory_reset	8	static | ||||
| scd4x.c:61:8:scd4x_read_measurement	112	static | ||||
							
								
								
									
										29
									
								
								fw/Debug/Core/Src/sensirion_gas_index_algorithm.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								fw/Debug/Core/Src/sensirion_gas_index_algorithm.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| sensirion_gas_index_algorithm.c:44:23:fix16_from_int	16	static | ||||
| sensirion_gas_index_algorithm.c:48:23:fix16_cast_to_int	16	static | ||||
| sensirion_gas_index_algorithm.c:64:16:fix16_mul	72	static | ||||
| sensirion_gas_index_algorithm.c:119:16:fix16_div	40	static | ||||
| sensirion_gas_index_algorithm.c:188:16:fix16_sqrt	32	static | ||||
| sensirion_gas_index_algorithm.c:245:16:fix16_exp	32	static | ||||
| sensirion_gas_index_algorithm.c:321:6:GasIndexAlgorithm_init	16	static | ||||
| sensirion_gas_index_algorithm.c:353:6:GasIndexAlgorithm_reset	16	static | ||||
| sensirion_gas_index_algorithm.c:360:13:GasIndexAlgorithm__init_instances	24	static | ||||
| sensirion_gas_index_algorithm.c:380:6:GasIndexAlgorithm_get_states	24	static | ||||
| sensirion_gas_index_algorithm.c:388:6:GasIndexAlgorithm_set_states	32	static | ||||
| sensirion_gas_index_algorithm.c:400:6:GasIndexAlgorithm_set_tuning_parameters	24	static | ||||
| sensirion_gas_index_algorithm.c:416:6:GasIndexAlgorithm_get_tuning_parameters	24	static | ||||
| sensirion_gas_index_algorithm.c:433:6:GasIndexAlgorithm_process	32	static | ||||
| sensirion_gas_index_algorithm.c:477:13:GasIndexAlgorithm__mean_variance_estimator__set_parameters	16	static | ||||
| sensirion_gas_index_algorithm.c:523:13:GasIndexAlgorithm__mean_variance_estimator__set_states	24	static | ||||
| sensirion_gas_index_algorithm.c:533:16:GasIndexAlgorithm__mean_variance_estimator__get_std	16	static | ||||
| sensirion_gas_index_algorithm.c:539:16:GasIndexAlgorithm__mean_variance_estimator__get_mean	16	static | ||||
| sensirion_gas_index_algorithm.c:546:13:GasIndexAlgorithm__mean_variance_estimator__is_initialized	16	static | ||||
| sensirion_gas_index_algorithm.c:552:13:GasIndexAlgorithm__mean_variance_estimator___calculate_gamma	64	static | ||||
| sensirion_gas_index_algorithm.c:647:13:GasIndexAlgorithm__mean_variance_estimator__process	48	static | ||||
| sensirion_gas_index_algorithm.c:711:1:GasIndexAlgorithm__mean_variance_estimator___sigmoid__set_parameters	24	static | ||||
| sensirion_gas_index_algorithm.c:718:16:GasIndexAlgorithm__mean_variance_estimator___sigmoid__process	24	static | ||||
| sensirion_gas_index_algorithm.c:734:13:GasIndexAlgorithm__mox_model__set_parameters	24	static | ||||
| sensirion_gas_index_algorithm.c:742:1:GasIndexAlgorithm__mox_model__process	16	static | ||||
| sensirion_gas_index_algorithm.c:758:13:GasIndexAlgorithm__sigmoid_scaled__set_parameters	24	static | ||||
| sensirion_gas_index_algorithm.c:768:1:GasIndexAlgorithm__sigmoid_scaled__process	32	static | ||||
| sensirion_gas_index_algorithm.c:804:13:GasIndexAlgorithm__adaptive_lowpass__set_parameters	16	static | ||||
| sensirion_gas_index_algorithm.c:817:1:GasIndexAlgorithm__adaptive_lowpass__process	40	static | ||||
							
								
								
									
										7
									
								
								fw/Debug/Core/Src/sgp40.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								fw/Debug/Core/Src/sgp40.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| sgp40.c:10:8:sgp40_send_cmd	56	static | ||||
| sgp40.c:27:8:sgp40_measure_raw_signal	64	static | ||||
| sgp40.c:66:8:sgp40_measure_raw_signal_compensated	72	static | ||||
| sgp40.c:106:8:SGP40_execute_self_test	48	static | ||||
| sgp40.c:133:8:SGP40_get_serial_number	56	static | ||||
| sgp40.c:162:8:SGP40_turn_heater_off	8	static | ||||
| sgp40.c:166:8:SGP40_soft_reset	8	static | ||||
							
								
								
									
										7
									
								
								fw/Debug/Core/Src/sgp4x.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								fw/Debug/Core/Src/sgp4x.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| sgp4x.c:10:8:sgp4x_send_cmd	56	static | ||||
| sgp4x.c:27:8:sgp4x_measure_raw_signal	64	static | ||||
| sgp4x.c:67:8:sgp4x_measure_raw_signal_compensated	72	static | ||||
| sgp4x.c:107:8:sgp4x_execute_self_test	48	static | ||||
| sgp4x.c:134:8:sgp4x_get_serial_number	56	static | ||||
| sgp4x.c:163:8:sgp4x_turn_heater_off	8	static | ||||
| sgp4x.c:167:8:sgp4x_soft_reset	8	static | ||||
							
								
								
									
										83
									
								
								fw/Debug/Core/Src/sht4x.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								fw/Debug/Core/Src/sht4x.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| Core/Src/sht4x.o: ../Core/Src/sht4x.c ../Core/Inc/sht4x.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h \ | ||||
|  ../Core/Inc/i2c.h ../Core/Inc/crc8.h ../Core/Inc/main.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h \ | ||||
|  ../Core/Inc/sht4x.h ../Core/Inc/ltr329.h ../Core/Inc/modbus.h \ | ||||
|  ../Core/Inc/config.h | ||||
|  | ||||
| ../Core/Inc/sht4x.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h: | ||||
|  | ||||
| ../Core/Inc/i2c.h: | ||||
|  | ||||
| ../Core/Inc/crc8.h: | ||||
|  | ||||
| ../Core/Inc/main.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h: | ||||
|  | ||||
| ../Core/Inc/sht4x.h: | ||||
|  | ||||
| ../Core/Inc/ltr329.h: | ||||
|  | ||||
| ../Core/Inc/modbus.h: | ||||
|  | ||||
| ../Core/Inc/config.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/sht4x.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/sht4x.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								fw/Debug/Core/Src/sht4x.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								fw/Debug/Core/Src/sht4x.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| sht4x.c:11:8:sht4x_send_cmd	16	static | ||||
| sht4x.c:16:8:sht4x_read_data	16	static | ||||
| sht4x.c:21:8:sht4x_measure	96	static | ||||
							
								
								
									
										10
									
								
								fw/Debug/Core/Src/sps30.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								fw/Debug/Core/Src/sps30.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| sps30.c:10:8:sps30_send_cmd	56	static | ||||
| sps30.c:27:8:sps30_start_measurement	16	static | ||||
| sps30.c:46:8:sps30_stop_measurement	8	static | ||||
| sps30.c:51:8:sps30_read_measured_values	88	static | ||||
| sps30.c:99:8:sps30_sleep	8	static | ||||
| sps30.c:104:8:sps30_wake_up	8	static | ||||
| sps30.c:109:8:sps30_start_fan_cleaning	8	static | ||||
| sps30.c:114:8:sps30_reset	8	static | ||||
| sps30.c:119:8:sps30_read_status_register	16	static | ||||
| sps30.c:140:8:sps30_read_firmware_version	32	static | ||||
							
								
								
									
										85
									
								
								fw/Debug/Core/Src/stm32l0xx_it.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								fw/Debug/Core/Src/stm32l0xx_it.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| Core/Src/stm32l0xx_it.o: ../Core/Src/stm32l0xx_it.c ../Core/Inc/main.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h \ | ||||
|  ../Core/Inc/i2c.h ../Core/Inc/sht4x.h ../Core/Inc/crc8.h \ | ||||
|  ../Core/Inc/ltr329.h ../Core/Inc/modbus.h ../Core/Inc/config.h \ | ||||
|  ../Core/Inc/stm32l0xx_it.h ../Core/Inc/modbus.h | ||||
|  | ||||
| ../Core/Inc/main.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h: | ||||
|  | ||||
| ../Core/Inc/i2c.h: | ||||
|  | ||||
| ../Core/Inc/sht4x.h: | ||||
|  | ||||
| ../Core/Inc/crc8.h: | ||||
|  | ||||
| ../Core/Inc/ltr329.h: | ||||
|  | ||||
| ../Core/Inc/modbus.h: | ||||
|  | ||||
| ../Core/Inc/config.h: | ||||
|  | ||||
| ../Core/Inc/stm32l0xx_it.h: | ||||
|  | ||||
| ../Core/Inc/modbus.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/stm32l0xx_it.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/stm32l0xx_it.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										15
									
								
								fw/Debug/Core/Src/stm32l0xx_it.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								fw/Debug/Core/Src/stm32l0xx_it.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| stm32l0xx_ll_tim.h:2577:22:LL_TIM_ClearFlag_UPDATE	16	static | ||||
| stm32l0xx_ll_usart.h:2597:26:LL_USART_IsActiveFlag_IDLE	16	static | ||||
| stm32l0xx_ll_usart.h:2608:26:LL_USART_IsActiveFlag_RXNE	16	static | ||||
| stm32l0xx_ll_usart.h:2867:22:LL_USART_ClearFlag_IDLE	16	static | ||||
| stm32l0xx_ll_usart.h:3305:26:LL_USART_IsEnabledIT_IDLE	16	static | ||||
| stm32l0xx_ll_usart.h:3316:26:LL_USART_IsEnabledIT_RXNE	16	static | ||||
| stm32l0xx_ll_usart.h:3615:26:LL_USART_ReceiveData9	16	static | ||||
| stm32l0xx_it.c:76:6:NMI_Handler	8	static | ||||
| stm32l0xx_it.c:91:6:HardFault_Handler	8	static | ||||
| stm32l0xx_it.c:106:6:SVC_Handler	8	static | ||||
| stm32l0xx_it.c:119:6:PendSV_Handler	8	static | ||||
| stm32l0xx_it.c:132:6:SysTick_Handler	8	static | ||||
| stm32l0xx_it.c:152:6:TIM21_IRQHandler	8	static | ||||
| stm32l0xx_it.c:166:6:USART2_IRQHandler	8	static | ||||
| stm32l0xx_it.c:197:6:USART2_CharReception_Callback	24	static | ||||
							
								
								
									
										57
									
								
								fw/Debug/Core/Src/subdir.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								fw/Debug/Core/Src/subdir.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| ################################################################################ | ||||
| # Automatically-generated file. Do not edit! | ||||
| # Toolchain: GNU Tools for STM32 (9-2020-q2-update) | ||||
| ################################################################################ | ||||
|  | ||||
| # Add inputs and outputs from these tool invocations to the build variables  | ||||
| C_SRCS += \ | ||||
| ../Core/Src/config.c \ | ||||
| ../Core/Src/crc8.c \ | ||||
| ../Core/Src/i2c.c \ | ||||
| ../Core/Src/ltr329.c \ | ||||
| ../Core/Src/main.c \ | ||||
| ../Core/Src/modbus.c \ | ||||
| ../Core/Src/sht4x.c \ | ||||
| ../Core/Src/stm32l0xx_it.c \ | ||||
| ../Core/Src/syscalls.c \ | ||||
| ../Core/Src/sysmem.c \ | ||||
| ../Core/Src/system_stm32l0xx.c  | ||||
|  | ||||
| OBJS += \ | ||||
| ./Core/Src/config.o \ | ||||
| ./Core/Src/crc8.o \ | ||||
| ./Core/Src/i2c.o \ | ||||
| ./Core/Src/ltr329.o \ | ||||
| ./Core/Src/main.o \ | ||||
| ./Core/Src/modbus.o \ | ||||
| ./Core/Src/sht4x.o \ | ||||
| ./Core/Src/stm32l0xx_it.o \ | ||||
| ./Core/Src/syscalls.o \ | ||||
| ./Core/Src/sysmem.o \ | ||||
| ./Core/Src/system_stm32l0xx.o  | ||||
|  | ||||
| C_DEPS += \ | ||||
| ./Core/Src/config.d \ | ||||
| ./Core/Src/crc8.d \ | ||||
| ./Core/Src/i2c.d \ | ||||
| ./Core/Src/ltr329.d \ | ||||
| ./Core/Src/main.d \ | ||||
| ./Core/Src/modbus.d \ | ||||
| ./Core/Src/sht4x.d \ | ||||
| ./Core/Src/stm32l0xx_it.d \ | ||||
| ./Core/Src/syscalls.d \ | ||||
| ./Core/Src/sysmem.d \ | ||||
| ./Core/Src/system_stm32l0xx.d  | ||||
|  | ||||
|  | ||||
| # Each subdirectory must supply rules for building sources it contributes | ||||
| Core/Src/%.o: ../Core/Src/%.c Core/Src/subdir.mk | ||||
| 	arm-none-eabi-gcc "$<" -mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG -DSTM32L031xx -DUSE_FULL_LL_DRIVER -DHSE_VALUE=8000000 -DHSE_STARTUP_TIMEOUT=100 -DLSE_STARTUP_TIMEOUT=5000 -DLSE_VALUE=32768 -DMSI_VALUE=2097000 -DHSI_VALUE=16000000 -DLSI_VALUE=37000 -DVDD_VALUE=3300 -DPREFETCH_ENABLE=0 -DINSTRUCTION_CACHE_ENABLE=1 -DDATA_CACHE_ENABLE=1 -c -I../Core/Inc -I../Drivers/STM32L0xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32L0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" | ||||
|  | ||||
| clean: clean-Core-2f-Src | ||||
|  | ||||
| clean-Core-2f-Src: | ||||
| 	-$(RM) ./Core/Src/config.d ./Core/Src/config.o ./Core/Src/crc8.d ./Core/Src/crc8.o ./Core/Src/i2c.d ./Core/Src/i2c.o ./Core/Src/ltr329.d ./Core/Src/ltr329.o ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/modbus.d ./Core/Src/modbus.o ./Core/Src/sht4x.d ./Core/Src/sht4x.o ./Core/Src/stm32l0xx_it.d ./Core/Src/stm32l0xx_it.o ./Core/Src/syscalls.d ./Core/Src/syscalls.o ./Core/Src/sysmem.d ./Core/Src/sysmem.o ./Core/Src/system_stm32l0xx.d ./Core/Src/system_stm32l0xx.o | ||||
|  | ||||
| .PHONY: clean-Core-2f-Src | ||||
|  | ||||
							
								
								
									
										1
									
								
								fw/Debug/Core/Src/syscalls.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								fw/Debug/Core/Src/syscalls.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| Core/Src/syscalls.o: ../Core/Src/syscalls.c | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/syscalls.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/syscalls.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										18
									
								
								fw/Debug/Core/Src/syscalls.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								fw/Debug/Core/Src/syscalls.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| syscalls.c:48:6:initialise_monitor_handles	8	static | ||||
| syscalls.c:52:5:_getpid	8	static | ||||
| syscalls.c:57:5:_kill	16	static | ||||
| syscalls.c:63:6:_exit	16	static | ||||
| syscalls.c:69:27:_read	32	static | ||||
| syscalls.c:81:27:_write	32	static | ||||
| syscalls.c:92:5:_close	16	static | ||||
| syscalls.c:98:5:_fstat	16	static | ||||
| syscalls.c:104:5:_isatty	16	static | ||||
| syscalls.c:109:5:_lseek	24	static | ||||
| syscalls.c:114:5:_open	20	static | ||||
| syscalls.c:120:5:_wait	16	static | ||||
| syscalls.c:126:5:_unlink	16	static | ||||
| syscalls.c:132:5:_times	16	static | ||||
| syscalls.c:137:5:_stat	16	static | ||||
| syscalls.c:143:5:_link	16	static | ||||
| syscalls.c:149:5:_fork	8	static | ||||
| syscalls.c:155:5:_execve	24	static | ||||
							
								
								
									
										1
									
								
								fw/Debug/Core/Src/sysmem.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								fw/Debug/Core/Src/sysmem.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| Core/Src/sysmem.o: ../Core/Src/sysmem.c | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/sysmem.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/sysmem.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1
									
								
								fw/Debug/Core/Src/sysmem.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								fw/Debug/Core/Src/sysmem.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| sysmem.c:54:7:_sbrk	32	static | ||||
							
								
								
									
										22
									
								
								fw/Debug/Core/Src/system_stm32l0xx.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								fw/Debug/Core/Src/system_stm32l0xx.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| Core/Src/system_stm32l0xx.o: ../Core/Src/system_stm32l0xx.c \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/system_stm32l0xx.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Src/system_stm32l0xx.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										2
									
								
								fw/Debug/Core/Src/system_stm32l0xx.su
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								fw/Debug/Core/Src/system_stm32l0xx.su
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| system_stm32l0xx.c:154:6:SystemInit	8	static | ||||
| system_stm32l0xx.c:200:6:SystemCoreClockUpdate	32	static | ||||
							
								
								
									
										2
									
								
								fw/Debug/Core/Startup/startup_stm32l031g6ux.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								fw/Debug/Core/Startup/startup_stm32l031g6ux.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| Core/Startup/startup_stm32l031g6ux.o: \ | ||||
|  ../Core/Startup/startup_stm32l031g6ux.s | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Core/Startup/startup_stm32l031g6ux.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Core/Startup/startup_stm32l031g6ux.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										27
									
								
								fw/Debug/Core/Startup/subdir.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								fw/Debug/Core/Startup/subdir.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| ################################################################################ | ||||
| # Automatically-generated file. Do not edit! | ||||
| # Toolchain: GNU Tools for STM32 (9-2020-q2-update) | ||||
| ################################################################################ | ||||
|  | ||||
| # Add inputs and outputs from these tool invocations to the build variables  | ||||
| S_SRCS += \ | ||||
| ../Core/Startup/startup_stm32l031g6ux.s  | ||||
|  | ||||
| OBJS += \ | ||||
| ./Core/Startup/startup_stm32l031g6ux.o  | ||||
|  | ||||
| S_DEPS += \ | ||||
| ./Core/Startup/startup_stm32l031g6ux.d  | ||||
|  | ||||
|  | ||||
| # Each subdirectory must supply rules for building sources it contributes | ||||
| Core/Startup/%.o: ../Core/Startup/%.s Core/Startup/subdir.mk | ||||
| 	arm-none-eabi-gcc -mcpu=cortex-m0plus -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" "$<" | ||||
|  | ||||
| clean: clean-Core-2f-Startup | ||||
|  | ||||
| clean-Core-2f-Startup: | ||||
| 	-$(RM) ./Core/Startup/startup_stm32l031g6ux.d ./Core/Startup/startup_stm32l031g6ux.o | ||||
|  | ||||
| .PHONY: clean-Core-2f-Startup | ||||
|  | ||||
							
								
								
									
										29
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,17 @@ | ||||
| stm32l0xx_ll_dma.h:580:22:LL_DMA_ConfigTransfer	24	static | ||||
| stm32l0xx_ll_dma.h:933:22:LL_DMA_SetDataLength	24	static | ||||
| stm32l0xx_ll_dma.h:1018:22:LL_DMA_SetMemoryAddress	24	static | ||||
| stm32l0xx_ll_dma.h:1040:22:LL_DMA_SetPeriphAddress	24	static | ||||
| stm32l0xx_ll_dma.h:1207:22:LL_DMA_SetPeriphRequest	24	static | ||||
| stm32l0xx_ll_dma.h:1593:22:LL_DMA_ClearFlag_GI1	16	static | ||||
| stm32l0xx_ll_dma.h:1604:22:LL_DMA_ClearFlag_GI2	16	static | ||||
| stm32l0xx_ll_dma.h:1615:22:LL_DMA_ClearFlag_GI3	16	static | ||||
| stm32l0xx_ll_dma.h:1626:22:LL_DMA_ClearFlag_GI4	16	static | ||||
| stm32l0xx_ll_dma.h:1637:22:LL_DMA_ClearFlag_GI5	16	static | ||||
| stm32l0xx_ll_dma.h:1649:22:LL_DMA_ClearFlag_GI6	16	static | ||||
| stm32l0xx_ll_dma.h:1662:22:LL_DMA_ClearFlag_GI7	16	static | ||||
| stm32l0xx_ll_bus.h:301:22:LL_AHB1_GRP1_ForceReset	16	static | ||||
| stm32l0xx_ll_bus.h:326:22:LL_AHB1_GRP1_ReleaseReset	16	static | ||||
| stm32l0xx_ll_dma.c:150:13:LL_DMA_DeInit	24	static | ||||
| stm32l0xx_ll_dma.c:275:13:LL_DMA_Init	24	static | ||||
| stm32l0xx_ll_dma.c:343:6:LL_DMA_StructInit	16	static | ||||
| @@ -0,0 +1,26 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,11 @@ | ||||
| stm32l0xx_ll_exti.h:274:22:LL_EXTI_EnableIT_0_31	16	static | ||||
| stm32l0xx_ll_exti.h:322:22:LL_EXTI_DisableIT_0_31	16	static | ||||
| stm32l0xx_ll_exti.h:425:22:LL_EXTI_EnableEvent_0_31	16	static | ||||
| stm32l0xx_ll_exti.h:472:22:LL_EXTI_DisableEvent_0_31	16	static | ||||
| stm32l0xx_ll_exti.h:572:22:LL_EXTI_EnableRisingTrig_0_31	16	static | ||||
| stm32l0xx_ll_exti.h:618:22:LL_EXTI_DisableRisingTrig_0_31	16	static | ||||
| stm32l0xx_ll_exti.h:710:22:LL_EXTI_EnableFallingTrig_0_31	16	static | ||||
| stm32l0xx_ll_exti.h:754:22:LL_EXTI_DisableFallingTrig_0_31	16	static | ||||
| stm32l0xx_ll_exti.c:80:10:LL_EXTI_DeInit	8	static | ||||
| stm32l0xx_ll_exti.c:105:10:LL_EXTI_Init	24	static | ||||
| stm32l0xx_ll_exti.c:186:6:LL_EXTI_StructInit	16	static | ||||
| @@ -0,0 +1,29 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,11 @@ | ||||
| stm32l0xx_ll_gpio.h:270:22:LL_GPIO_SetPinMode	24	static | ||||
| stm32l0xx_ll_gpio.h:338:22:LL_GPIO_SetPinOutputType	24	static | ||||
| stm32l0xx_ll_gpio.h:409:22:LL_GPIO_SetPinSpeed	24	static | ||||
| stm32l0xx_ll_gpio.h:478:22:LL_GPIO_SetPinPull	24	static | ||||
| stm32l0xx_ll_gpio.h:541:22:LL_GPIO_SetAFPin_0_7	24	static | ||||
| stm32l0xx_ll_gpio.h:602:22:LL_GPIO_SetAFPin_8_15	24	static | ||||
| stm32l0xx_ll_bus.h:1064:22:LL_IOP_GRP1_ForceReset	16	static | ||||
| stm32l0xx_ll_bus.h:1089:22:LL_IOP_GRP1_ReleaseReset	16	static | ||||
| stm32l0xx_ll_gpio.c:96:13:LL_GPIO_DeInit	24	static | ||||
| stm32l0xx_ll_gpio.c:157:13:LL_GPIO_Init	24	static | ||||
| stm32l0xx_ll_gpio.c:231:6:LL_GPIO_StructInit	16	static | ||||
							
								
								
									
										29
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,14 @@ | ||||
| stm32l0xx_ll_i2c.h:430:22:LL_I2C_Enable	16	static | ||||
| stm32l0xx_ll_i2c.h:444:22:LL_I2C_Disable	16	static | ||||
| stm32l0xx_ll_i2c.h:476:22:LL_I2C_ConfigFilters	24	static | ||||
| stm32l0xx_ll_i2c.h:820:22:LL_I2C_SetOwnAddress1	24	static | ||||
| stm32l0xx_ll_i2c.h:831:22:LL_I2C_EnableOwnAddress1	16	static | ||||
| stm32l0xx_ll_i2c.h:842:22:LL_I2C_DisableOwnAddress1	16	static | ||||
| stm32l0xx_ll_i2c.h:923:22:LL_I2C_SetTiming	16	static | ||||
| stm32l0xx_ll_i2c.h:997:22:LL_I2C_SetMode	16	static | ||||
| stm32l0xx_ll_i2c.h:1978:22:LL_I2C_AcknowledgeNextData	16	static | ||||
| stm32l0xx_ll_bus.h:595:22:LL_APB1_GRP1_ForceReset	16	static | ||||
| stm32l0xx_ll_bus.h:646:22:LL_APB1_GRP1_ReleaseReset	16	static | ||||
| stm32l0xx_ll_i2c.c:87:13:LL_I2C_DeInit	24	static | ||||
| stm32l0xx_ll_i2c.c:139:13:LL_I2C_Init	16	static | ||||
| stm32l0xx_ll_i2c.c:207:6:LL_I2C_StructInit	16	static | ||||
							
								
								
									
										29
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,3 @@ | ||||
| stm32l0xx_ll_bus.h:595:22:LL_APB1_GRP1_ForceReset	16	static | ||||
| stm32l0xx_ll_bus.h:646:22:LL_APB1_GRP1_ReleaseReset	16	static | ||||
| stm32l0xx_ll_pwr.c:56:13:LL_PWR_DeInit	8	static | ||||
							
								
								
									
										26
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,35 @@ | ||||
| stm32l0xx_ll_rcc.h:705:22:LL_RCC_HSE_DisableBypass	8	static | ||||
| stm32l0xx_ll_rcc.h:802:26:LL_RCC_HSI_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:893:22:LL_RCC_HSI_SetCalibTrimming	16	static | ||||
| stm32l0xx_ll_rcc.h:1097:26:LL_RCC_LSE_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:1145:26:LL_RCC_LSI_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:1163:22:LL_RCC_MSI_Enable	8	static | ||||
| stm32l0xx_ll_rcc.h:1183:26:LL_RCC_MSI_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:1201:22:LL_RCC_MSI_SetRange	16	static | ||||
| stm32l0xx_ll_rcc.h:1218:26:LL_RCC_MSI_GetRange	8	static | ||||
| stm32l0xx_ll_rcc.h:1242:22:LL_RCC_MSI_SetCalibTrimming	16	static | ||||
| stm32l0xx_ll_rcc.h:1289:26:LL_RCC_GetSysClkSource	8	static | ||||
| stm32l0xx_ll_rcc.h:1360:26:LL_RCC_GetAHBPrescaler	8	static | ||||
| stm32l0xx_ll_rcc.h:1375:26:LL_RCC_GetAPB1Prescaler	8	static | ||||
| stm32l0xx_ll_rcc.h:1390:26:LL_RCC_GetAPB2Prescaler	8	static | ||||
| stm32l0xx_ll_rcc.h:1586:26:LL_RCC_GetUSARTClockSource	16	static | ||||
| stm32l0xx_ll_rcc.h:1604:26:LL_RCC_GetLPUARTClockSource	16	static | ||||
| stm32l0xx_ll_rcc.h:1625:26:LL_RCC_GetI2CClockSource	16	static | ||||
| stm32l0xx_ll_rcc.h:1641:26:LL_RCC_GetLPTIMClockSource	16	static | ||||
| stm32l0xx_ll_rcc.h:1805:26:LL_RCC_PLL_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:1859:26:LL_RCC_PLL_GetMainSource	8	static | ||||
| stm32l0xx_ll_rcc.h:1878:26:LL_RCC_PLL_GetMultiplicator	8	static | ||||
| stm32l0xx_ll_rcc.h:1891:26:LL_RCC_PLL_GetDivider	8	static | ||||
| stm32l0xx_ll_rcc.h:2097:26:LL_RCC_IsActiveFlag_HSIDIV	8	static | ||||
| stm32l0xx_ll_rcc.h:2189:22:LL_RCC_ClearResetFlags	8	static | ||||
| stm32l0xx_ll_rcc.c:112:13:LL_RCC_DeInit	16	static,ignoring_inline_asm | ||||
| stm32l0xx_ll_rcc.c:222:6:LL_RCC_GetSystemClocksFreq	16	static | ||||
| stm32l0xx_ll_rcc.c:247:10:LL_RCC_GetUSARTClockFreq	24	static | ||||
| stm32l0xx_ll_rcc.c:344:10:LL_RCC_GetI2CClockFreq	24	static | ||||
| stm32l0xx_ll_rcc.c:423:10:LL_RCC_GetLPUARTClockFreq	24	static | ||||
| stm32l0xx_ll_rcc.c:474:10:LL_RCC_GetLPTIMClockFreq	24	static | ||||
| stm32l0xx_ll_rcc.c:579:17:RCC_GetSystemClockFreq	16	static | ||||
| stm32l0xx_ll_rcc.c:622:17:RCC_GetHCLKClockFreq	16	static | ||||
| stm32l0xx_ll_rcc.c:633:17:RCC_GetPCLK1ClockFreq	16	static | ||||
| stm32l0xx_ll_rcc.c:644:17:RCC_GetPCLK2ClockFreq	16	static | ||||
| stm32l0xx_ll_rcc.c:654:17:RCC_PLL_GetFreqDomain_SYS	24	static | ||||
							
								
								
									
										29
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.d
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.d
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,29 @@ | ||||
| stm32l0xx_ll_tim.h:1201:22:LL_TIM_SetPrescaler	16	static | ||||
| stm32l0xx_ll_tim.h:1226:22:LL_TIM_SetAutoReload	16	static | ||||
| stm32l0xx_ll_tim.h:1687:22:LL_TIM_OC_SetCompareCH1	16	static | ||||
| stm32l0xx_ll_tim.h:1701:22:LL_TIM_OC_SetCompareCH2	16	static | ||||
| stm32l0xx_ll_tim.h:1715:22:LL_TIM_OC_SetCompareCH3	16	static | ||||
| stm32l0xx_ll_tim.h:1729:22:LL_TIM_OC_SetCompareCH4	16	static | ||||
| stm32l0xx_ll_tim.h:2245:22:LL_TIM_SetEncoderMode	16	static | ||||
| stm32l0xx_ll_tim.h:3218:22:LL_TIM_GenerateEvent_UPDATE	16	static | ||||
| stm32l0xx_ll_bus.h:595:22:LL_APB1_GRP1_ForceReset	16	static | ||||
| stm32l0xx_ll_bus.h:646:22:LL_APB1_GRP1_ReleaseReset	16	static | ||||
| stm32l0xx_ll_bus.h:873:22:LL_APB2_GRP1_ForceReset	16	static | ||||
| stm32l0xx_ll_bus.h:900:22:LL_APB2_GRP1_ReleaseReset	16	static | ||||
| stm32l0xx_ll_tim.c:146:13:LL_TIM_DeInit	24	static | ||||
| stm32l0xx_ll_tim.c:205:6:LL_TIM_StructInit	16	static | ||||
| stm32l0xx_ll_tim.c:223:13:LL_TIM_Init	24	static | ||||
| stm32l0xx_ll_tim.c:268:6:LL_TIM_OC_StructInit	16	static | ||||
| stm32l0xx_ll_tim.c:291:13:LL_TIM_OC_Init	40	static | ||||
| stm32l0xx_ll_tim.c:323:6:LL_TIM_IC_StructInit	16	static | ||||
| stm32l0xx_ll_tim.c:346:13:LL_TIM_IC_Init	40	static | ||||
| stm32l0xx_ll_tim.c:377:6:LL_TIM_ENCODER_StructInit	16	static | ||||
| stm32l0xx_ll_tim.c:400:13:LL_TIM_ENCODER_Init	24	static | ||||
| stm32l0xx_ll_tim.c:476:20:OC1Config	32	static | ||||
| stm32l0xx_ll_tim.c:535:20:OC2Config	32	static | ||||
| stm32l0xx_ll_tim.c:594:20:OC3Config	32	static | ||||
| stm32l0xx_ll_tim.c:653:20:OC4Config	32	static | ||||
| stm32l0xx_ll_tim.c:713:20:IC1Config	16	static | ||||
| stm32l0xx_ll_tim.c:746:20:IC2Config	16	static | ||||
| stm32l0xx_ll_tim.c:779:20:IC3Config	16	static | ||||
| stm32l0xx_ll_tim.c:812:20:IC4Config	16	static | ||||
| @@ -0,0 +1,32 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,12 @@ | ||||
| stm32l0xx_ll_usart.h:561:26:LL_USART_IsEnabled	16	static | ||||
| stm32l0xx_ll_usart.h:1016:22:LL_USART_DisableSCLKOutput	16	static | ||||
| stm32l0xx_ll_usart.h:1045:22:LL_USART_SetStopBitsLength	16	static | ||||
| stm32l0xx_ll_usart.h:1470:22:LL_USART_SetHWFlowCtrl	16	static | ||||
| stm32l0xx_ll_usart.h:1608:22:LL_USART_SetBaudRate	32	static | ||||
| stm32l0xx_ll_bus.h:595:22:LL_APB1_GRP1_ForceReset	16	static | ||||
| stm32l0xx_ll_bus.h:646:22:LL_APB1_GRP1_ReleaseReset	16	static | ||||
| stm32l0xx_ll_usart.c:116:13:LL_USART_DeInit	24	static | ||||
| stm32l0xx_ll_usart.c:187:13:LL_USART_Init	24	static | ||||
| stm32l0xx_ll_usart.c:303:6:LL_USART_StructInit	16	static | ||||
| stm32l0xx_ll_usart.c:329:13:LL_USART_ClockInit	24	static | ||||
| stm32l0xx_ll_usart.c:387:6:LL_USART_ClockStructInit	16	static | ||||
| @@ -0,0 +1,35 @@ | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.o: \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.c \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ | ||||
|  ../Drivers/CMSIS/Include/core_cm0plus.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_version.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_compiler.h \ | ||||
|  ../Drivers/CMSIS/Include/cmsis_gcc.h \ | ||||
|  ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h \ | ||||
|  ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/core_cm0plus.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_version.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_compiler.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Include/cmsis_gcc.h: | ||||
|  | ||||
| ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h: | ||||
|  | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h: | ||||
							
								
								
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,27 @@ | ||||
| stm32l0xx_ll_rcc.h:695:22:LL_RCC_HSE_EnableBypass	8	static | ||||
| stm32l0xx_ll_rcc.h:705:22:LL_RCC_HSE_DisableBypass	8	static | ||||
| stm32l0xx_ll_rcc.h:715:22:LL_RCC_HSE_Enable	8	static | ||||
| stm32l0xx_ll_rcc.h:735:26:LL_RCC_HSE_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:782:22:LL_RCC_HSI_Enable	8	static | ||||
| stm32l0xx_ll_rcc.h:802:26:LL_RCC_HSI_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:1275:22:LL_RCC_SetSysClkSource	16	static | ||||
| stm32l0xx_ll_rcc.h:1289:26:LL_RCC_GetSysClkSource	8	static | ||||
| stm32l0xx_ll_rcc.h:1309:22:LL_RCC_SetAHBPrescaler	16	static | ||||
| stm32l0xx_ll_rcc.h:1325:22:LL_RCC_SetAPB1Prescaler	16	static | ||||
| stm32l0xx_ll_rcc.h:1341:22:LL_RCC_SetAPB2Prescaler	16	static | ||||
| stm32l0xx_ll_rcc.h:1784:22:LL_RCC_PLL_Enable	8	static | ||||
| stm32l0xx_ll_rcc.h:1805:26:LL_RCC_PLL_IsReady	8	static | ||||
| stm32l0xx_ll_rcc.h:1834:22:LL_RCC_PLL_ConfigDomain_SYS	24	static | ||||
| stm32l0xx_ll_utils.h:220:22:LL_InitTick	16	static | ||||
| stm32l0xx_ll_system.h:912:22:LL_FLASH_SetLatency	16	static | ||||
| stm32l0xx_ll_system.h:924:26:LL_FLASH_GetLatency	8	static | ||||
| stm32l0xx_ll_pwr.h:285:26:LL_PWR_GetRegulVoltageScaling	8	static | ||||
| stm32l0xx_ll_utils.c:147:6:LL_Init1msTick	16	static | ||||
| stm32l0xx_ll_utils.c:163:6:LL_mDelay	24	static | ||||
| stm32l0xx_ll_utils.c:225:6:LL_SetSystemCoreClock	16	static | ||||
| stm32l0xx_ll_utils.c:239:13:LL_SetFlashLatency	32	static | ||||
| stm32l0xx_ll_utils.c:338:13:LL_PLL_ConfigSystemClock_HSI	32	static | ||||
| stm32l0xx_ll_utils.c:397:13:LL_PLL_ConfigSystemClock_HSE	40	static | ||||
| stm32l0xx_ll_utils.c:467:17:UTILS_GetPLLOutputFrequency	24	static | ||||
| stm32l0xx_ll_utils.c:497:20:UTILS_PLL_IsBusy	16	static | ||||
| stm32l0xx_ll_utils.c:521:20:UTILS_EnablePLLAndSwitchSystem	32	static | ||||
							
								
								
									
										51
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/subdir.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								fw/Debug/Drivers/STM32L0xx_HAL_Driver/Src/subdir.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| ################################################################################ | ||||
| # Automatically-generated file. Do not edit! | ||||
| # Toolchain: GNU Tools for STM32 (9-2020-q2-update) | ||||
| ################################################################################ | ||||
|  | ||||
| # Add inputs and outputs from these tool invocations to the build variables  | ||||
| C_SRCS += \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.c \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.c \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.c \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.c \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.c \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.c \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.c \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.c \ | ||||
| ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.c  | ||||
|  | ||||
| OBJS += \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.o \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.o \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.o \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.o \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.o \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.o \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.o \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.o \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.o  | ||||
|  | ||||
| C_DEPS += \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.d \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.d \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.d \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.d \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.d \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.d \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.d \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.d \ | ||||
| ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.d  | ||||
|  | ||||
|  | ||||
| # Each subdirectory must supply rules for building sources it contributes | ||||
| Drivers/STM32L0xx_HAL_Driver/Src/%.o: ../Drivers/STM32L0xx_HAL_Driver/Src/%.c Drivers/STM32L0xx_HAL_Driver/Src/subdir.mk | ||||
| 	arm-none-eabi-gcc "$<" -mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG -DSTM32L031xx -DUSE_FULL_LL_DRIVER -DHSE_VALUE=8000000 -DHSE_STARTUP_TIMEOUT=100 -DLSE_STARTUP_TIMEOUT=5000 -DLSE_VALUE=32768 -DMSI_VALUE=2097000 -DHSI_VALUE=16000000 -DLSI_VALUE=37000 -DVDD_VALUE=3300 -DPREFETCH_ENABLE=0 -DINSTRUCTION_CACHE_ENABLE=1 -DDATA_CACHE_ENABLE=1 -c -I../Core/Inc -I../Drivers/STM32L0xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32L0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" | ||||
|  | ||||
| clean: clean-Drivers-2f-STM32L0xx_HAL_Driver-2f-Src | ||||
|  | ||||
| clean-Drivers-2f-STM32L0xx_HAL_Driver-2f-Src: | ||||
| 	-$(RM) ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.o ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.o ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.o ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.o ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.o ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.o ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.o ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.o ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.o | ||||
|  | ||||
| .PHONY: clean-Drivers-2f-STM32L0xx_HAL_Driver-2f-Src | ||||
|  | ||||
							
								
								
									
										99
									
								
								fw/Debug/makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								fw/Debug/makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,99 @@ | ||||
| ################################################################################ | ||||
| # Automatically-generated file. Do not edit! | ||||
| # Toolchain: GNU Tools for STM32 (9-2020-q2-update) | ||||
| ################################################################################ | ||||
|  | ||||
| -include ../makefile.init | ||||
|  | ||||
| RM := rm -rf | ||||
|  | ||||
| # All of the sources participating in the build are defined here | ||||
| -include sources.mk | ||||
| -include Drivers/STM32L0xx_HAL_Driver/Src/subdir.mk | ||||
| -include Core/Startup/subdir.mk | ||||
| -include Core/Src/subdir.mk | ||||
| -include objects.mk | ||||
|  | ||||
| ifneq ($(MAKECMDGOALS),clean) | ||||
| ifneq ($(strip $(S_DEPS)),) | ||||
| -include $(S_DEPS) | ||||
| endif | ||||
| ifneq ($(strip $(S_UPPER_DEPS)),) | ||||
| -include $(S_UPPER_DEPS) | ||||
| endif | ||||
| ifneq ($(strip $(C_DEPS)),) | ||||
| -include $(C_DEPS) | ||||
| endif | ||||
| endif | ||||
|  | ||||
| -include ../makefile.defs | ||||
|  | ||||
| OPTIONAL_TOOL_DEPS := \ | ||||
| $(wildcard ../makefile.defs) \ | ||||
| $(wildcard ../makefile.init) \ | ||||
| $(wildcard ../makefile.targets) \ | ||||
|  | ||||
|  | ||||
| BUILD_ARTIFACT_NAME := rht_wired_sensor | ||||
| BUILD_ARTIFACT_EXTENSION := elf | ||||
| BUILD_ARTIFACT_PREFIX := | ||||
| BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),) | ||||
|  | ||||
| # Add inputs and outputs from these tool invocations to the build variables  | ||||
| EXECUTABLES += \ | ||||
| rht_wired_sensor.elf \ | ||||
|  | ||||
| SIZE_OUTPUT += \ | ||||
| default.size.stdout \ | ||||
|  | ||||
| OBJDUMP_LIST += \ | ||||
| rht_wired_sensor.list \ | ||||
|  | ||||
| OBJCOPY_BIN += \ | ||||
| rht_wired_sensor.bin \ | ||||
|  | ||||
|  | ||||
| # All Target | ||||
| all: main-build | ||||
|  | ||||
| # Main-build Target | ||||
| main-build: rht_wired_sensor.elf secondary-outputs | ||||
|  | ||||
| # Tool invocations | ||||
| rht_wired_sensor.elf: $(OBJS) $(USER_OBJS) /home/david/VelesLabs/Smart\ Household/wired_sensors/RHT_Wired_Sensor/fw/STM32L031G6UX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) | ||||
| 	arm-none-eabi-gcc -o "rht_wired_sensor.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m0plus -T"/home/david/VelesLabs/Smart Household/wired_sensors/RHT_Wired_Sensor/fw/STM32L031G6UX_FLASH.ld" --specs=nosys.specs -Wl,-Map="rht_wired_sensor.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group | ||||
| 	@echo 'Finished building target: $@' | ||||
| 	@echo ' ' | ||||
|  | ||||
| default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) | ||||
| 	arm-none-eabi-size  $(EXECUTABLES) | ||||
| 	@echo 'Finished building: $@' | ||||
| 	@echo ' ' | ||||
|  | ||||
| rht_wired_sensor.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) | ||||
| 	arm-none-eabi-objdump -h -S $(EXECUTABLES) > "rht_wired_sensor.list" | ||||
| 	@echo 'Finished building: $@' | ||||
| 	@echo ' ' | ||||
|  | ||||
| rht_wired_sensor.bin: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) | ||||
| 	arm-none-eabi-objcopy  -O binary $(EXECUTABLES) "rht_wired_sensor.bin" | ||||
| 	@echo 'Finished building: $@' | ||||
| 	@echo ' ' | ||||
|  | ||||
| # Other Targets | ||||
| clean: | ||||
| 	-$(RM) default.size.stdout rht_wired_sensor.bin rht_wired_sensor.elf rht_wired_sensor.list | ||||
| 	-@echo ' ' | ||||
|  | ||||
| secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) $(OBJCOPY_BIN) | ||||
|  | ||||
| fail-specified-linker-script-missing: | ||||
| 	@echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' | ||||
| 	@exit 2 | ||||
|  | ||||
| warn-no-linker-script-specified: | ||||
| 	@echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' | ||||
|  | ||||
| .PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified | ||||
|  | ||||
| -include ../makefile.targets | ||||
							
								
								
									
										21
									
								
								fw/Debug/objects.list
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								fw/Debug/objects.list
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| "./Core/Src/config.o" | ||||
| "./Core/Src/crc8.o" | ||||
| "./Core/Src/i2c.o" | ||||
| "./Core/Src/ltr329.o" | ||||
| "./Core/Src/main.o" | ||||
| "./Core/Src/modbus.o" | ||||
| "./Core/Src/sht4x.o" | ||||
| "./Core/Src/stm32l0xx_it.o" | ||||
| "./Core/Src/syscalls.o" | ||||
| "./Core/Src/sysmem.o" | ||||
| "./Core/Src/system_stm32l0xx.o" | ||||
| "./Core/Startup/startup_stm32l031g6ux.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.o" | ||||
| "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.o" | ||||
							
								
								
									
										9
									
								
								fw/Debug/objects.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								fw/Debug/objects.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| ################################################################################ | ||||
| # Automatically-generated file. Do not edit! | ||||
| # Toolchain: GNU Tools for STM32 (9-2020-q2-update) | ||||
| ################################################################################ | ||||
|  | ||||
| USER_OBJS := | ||||
|  | ||||
| LIBS := | ||||
|  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 David Žaitlík
					David Žaitlík