From 8f074b6f72aa54460cbe94bb95243ebbb5f7966c Mon Sep 17 00:00:00 2001 From: kachelto100370 Date: Wed, 8 Apr 2026 12:55:28 +0200 Subject: [PATCH] =?UTF-8?q?sachen=20f=C3=BCr=20task1=20und=20task2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .metadata/.log | 227 ++ .metadata/.plugins/org.eclipse.cdt.core/.log | 2 + .../task1.1727452765701.pdom | Bin 1667072 -> 1667072 bytes .../org.eclipse.cdt.ui/global-build.log | 90 + .../org.eclipse.cdt.ui/task1.build.log | 18 +- .../org.eclipse.cdt.ui/task2.build.log | 4 +- .../2f/50fbddf6e22c0011128bbffc38f97768 | 328 ++ .../47/706dec45f82c001115858a4760126e8b | 347 ++ .../6e/900cdd1dfd2c001115858a4760126e8b | 764 +++++ .../b4/f0b45aa6f82c001115858a4760126e8b | 36 + .../e3/303306b5f82c001115858a4760126e8b | 0 .../.projects/task1/.indexes/c4/history.index | Bin 0 -> 70 bytes .../.projects/task1/.markers.snap | Bin 2605 -> 3060 bytes .../.projects/task1/.syncinfo.snap | Bin 16 -> 64 bytes .../.projects/task2/.indexes/history.index | Bin 0 -> 41 bytes .../.projects/task2/.indexes/properties.index | Bin 569 -> 490 bytes .../.projects/task2/.markers | Bin 694 -> 0 bytes .../.projects/task2/.markers.snap | Bin 16 -> 64 bytes .../.projects/task2/.syncinfo.snap | Bin 16 -> 64 bytes .../.projects/task3/.markers | Bin 723 -> 723 bytes .../.projects/task3/.markers.snap | Bin 249 -> 64 bytes .../.projects/task3/.syncinfo.snap | Bin 16 -> 64 bytes .../.projects/task4/.markers | Bin 723 -> 723 bytes .../.projects/task4/.markers.snap | Bin 249 -> 64 bytes .../.projects/task4/.syncinfo.snap | Bin 16 -> 64 bytes .../org.eclipse.core.resources/.root/.markers | Bin 533 -> 533 bytes .../.root/.markers.snap | Bin 565 -> 64 bytes .../.root/{67.tree => 69.tree} | Bin 7154 -> 6351 bytes .../.safetable/org.eclipse.core.resources | Bin 932 -> 1208 bytes .../org.eclipse.core.resources/67.snap | Bin 803 -> 0 bytes .../org.eclipse.core.resources/69.snap | Bin 0 -> 1974 bytes .../org.eclipse.e4.workbench/workbench.xmi | 2905 ++++++++--------- .../.workspace/2026/3/13/refactorings.history | 4 + .../.workspace/2026/3/13/refactorings.index | 1 + .../dialog_settings.xml | 30 +- .../org.eclipse.ui.ide/dialog_settings.xml | 2 +- .metadata/version.ini | 2 +- task1/Debug/Src/sketch.cyclo | 0 task1/Debug/Src/sketch.d | 1 + task1/Debug/Src/sketch.o | Bin 0 -> 19940 bytes task1/Debug/Src/sketch.su | 0 task1/Debug/Src/subdir.mk | 5 +- task1/Debug/Src/task1.cyclo | 0 task1/Debug/Src/task1.d | 11 + task1/Debug/Src/task1.su | 0 task1/Debug/Src/task1_it.cyclo | 2 + task1/Debug/Src/task1_it.d | 11 + task1/Debug/Src/task1_it.o | Bin 0 -> 637952 bytes task1/Debug/Src/task1_it.su | 2 + task1/Debug/Startup/startup_stm32g431kbtx.d | 1 + task1/Debug/Startup/startup_stm32g431kbtx.o | Bin 0 -> 2540 bytes task1/Debug/Startup/syscalls.cyclo | 18 + task1/Debug/Startup/syscalls.d | 1 + task1/Debug/Startup/syscalls.o | Bin 0 -> 83072 bytes task1/Debug/Startup/syscalls.su | 18 + task1/Debug/Startup/sysmem.cyclo | 1 + task1/Debug/Startup/sysmem.d | 1 + task1/Debug/Startup/sysmem.o | Bin 0 -> 47856 bytes task1/Debug/Startup/sysmem.su | 1 + task1/Debug/objects.list | 1 + task2/G431_addr.s | 17 + task2/task2.als | 672 ++-- task2/task2.elf | Bin 23672 -> 23880 bytes task2/task2.lst | 222 +- task2/task2.map | 60 +- task2/task2.o | Bin 16208 -> 16708 bytes task2/task2.s | 205 +- task2/task2_tobi.s | 325 -- 68 files changed, 4009 insertions(+), 2326 deletions(-) create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/2f/50fbddf6e22c0011128bbffc38f97768 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/47/706dec45f82c001115858a4760126e8b create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/6e/900cdd1dfd2c001115858a4760126e8b create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/b4/f0b45aa6f82c001115858a4760126e8b create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e3/303306b5f82c001115858a4760126e8b create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/history.index create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task2/.indexes/history.index delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/task2/.markers rename .metadata/.plugins/org.eclipse.core.resources/.root/{67.tree => 69.tree} (64%) delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/67.snap create mode 100644 .metadata/.plugins/org.eclipse.core.resources/69.snap create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/13/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/13/refactorings.index create mode 100644 task1/Debug/Src/sketch.cyclo create mode 100644 task1/Debug/Src/sketch.d create mode 100644 task1/Debug/Src/sketch.o create mode 100644 task1/Debug/Src/sketch.su create mode 100644 task1/Debug/Src/task1.cyclo create mode 100644 task1/Debug/Src/task1.d create mode 100644 task1/Debug/Src/task1.su create mode 100644 task1/Debug/Src/task1_it.cyclo create mode 100644 task1/Debug/Src/task1_it.d create mode 100644 task1/Debug/Src/task1_it.o create mode 100644 task1/Debug/Src/task1_it.su create mode 100644 task1/Debug/Startup/startup_stm32g431kbtx.d create mode 100644 task1/Debug/Startup/startup_stm32g431kbtx.o create mode 100644 task1/Debug/Startup/syscalls.cyclo create mode 100644 task1/Debug/Startup/syscalls.d create mode 100644 task1/Debug/Startup/syscalls.o create mode 100644 task1/Debug/Startup/syscalls.su create mode 100644 task1/Debug/Startup/sysmem.cyclo create mode 100644 task1/Debug/Startup/sysmem.d create mode 100644 task1/Debug/Startup/sysmem.o create mode 100644 task1/Debug/Startup/sysmem.su delete mode 100644 task2/task2_tobi.s diff --git a/.metadata/.log b/.metadata/.log index ec8277e..a935fed 100644 --- a/.metadata/.log +++ b/.metadata/.log @@ -9328,3 +9328,230 @@ Command-line arguments: -os linux -ws gtk -arch x86_64 !ENTRY com.st.stm32cube.ide.mcu.debug 4 0 2026-03-24 14:18:01.013 !MESSAGE Existing sessions are: +!SESSION 2026-03-24 14:21:01.018 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2026-03-24 14:21:05.958 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2026-03-24 14:21:05.959 +!MESSAGE Log4j2 initialized with config file /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2026-03-24 14:21:11.141 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2026-03-31 11:20:25.522 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2026-03-31 11:20:29.815 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2026-03-31 11:20:29.816 +!MESSAGE Log4j2 initialized with config file /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2026-03-31 11:20:33.229 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2026-03-31 13:41:50.718 ----------------------------------------------- +eclipse.buildId=Version 1.16.0 +java.version=17.0.11 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY org.eclipse.core.resources 2 10035 2026-03-31 13:41:52.576 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2026-03-31 13:41:55.091 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2026-03-31 13:41:55.092 +!MESSAGE Log4j2 initialized with config file /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2026-03-31 13:41:58.079 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2026-03-31 13:42:20.010 +!MESSAGE Unable to connect to repository https://sw-center.st.com/stm32cubeide/openstlinux/updatesite1/compositeContent.xml +!STACK 0 +java.net.ConnectException + at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1055) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) + at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) + at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) + at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:126) + at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) + at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) + at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) + at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) + at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) + at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) + at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) + at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:840) +Caused by: java.nio.channels.UnresolvedAddressException + at java.base/sun.nio.ch.Net.checkAddress(Net.java:149) + at java.base/sun.nio.ch.Net.checkAddress(Net.java:157) + at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) + at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) + ... 21 more + +!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2026-03-31 13:42:20.015 +!MESSAGE Unable to connect to repository https://sw-center.st.com/stm32cubeide/updatesite1/compositeContent.xml +!STACK 0 +java.net.ConnectException + at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1055) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) + at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) + at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) + at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:126) + at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) + at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) + at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) + at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) + at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) + at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) + at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) + at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:840) +Caused by: java.nio.channels.UnresolvedAddressException + at java.base/sun.nio.ch.Net.checkAddress(Net.java:149) + at java.base/sun.nio.ch.Net.checkAddress(Net.java:157) + at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) + at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) + ... 21 more + +!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2026-03-31 13:42:20.022 +!MESSAGE Unable to connect to repository https://download.eclipse.org/tools/cdt/releases/latest/compositeContent.xml +!STACK 0 +java.net.ConnectException + at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1055) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) + at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) + at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) + at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:126) + at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) + at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) + at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) + at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) + at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) + at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) + at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) + at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:840) +Caused by: java.nio.channels.UnresolvedAddressException + at java.base/sun.nio.ch.Net.checkAddress(Net.java:149) + at java.base/sun.nio.ch.Net.checkAddress(Net.java:157) + at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) + at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) + ... 21 more + +!ENTRY org.eclipse.equinox.p2.transport.ecf 4 1002 2026-03-31 13:42:20.028 +!MESSAGE Unable to connect to repository https://download.eclipse.org/releases/2023-12/compositeContent.xml +!STACK 0 +java.net.ConnectException + at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1055) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) + at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) + at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) + at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:126) + at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) + at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) + at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) + at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) + at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) + at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) + at java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) + at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) + at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) + at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) + at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) + at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:840) +Caused by: java.nio.channels.UnresolvedAddressException + at java.base/sun.nio.ch.Net.checkAddress(Net.java:149) + at java.base/sun.nio.ch.Net.checkAddress(Net.java:157) + at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) + at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) + at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) + ... 21 more + +!ENTRY org.eclipse.cdt.dsf.gdb 4 104 2026-03-31 13:56:39.797 +!MESSAGE Program file does not exist +!STACK 0 +java.io.FileNotFoundException: /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/Debug/task1.elf not found + at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.verifyProgramPath(LaunchUtils.java:130) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.checkBinaryDetails(GdbLaunchDelegate.java:330) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:152) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:334) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 104 2026-03-31 13:56:39.797 +!MESSAGE /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/Debug/task1.elf not found +!STACK 0 +java.io.FileNotFoundException: /home/tobii/02_Uni/09_Mikrocomputertechnik/praktikum/mct_bei_workspace_25w/task1/Debug/task1.elf not found + at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.verifyProgramPath(LaunchUtils.java:130) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.checkBinaryDetails(GdbLaunchDelegate.java:330) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:152) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:109) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:97) + at com.st.stm32cube.ide.mcu.debug.launch.DSFDelegate.launch(DSFDelegate.java:334) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:805) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:716) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1040) + at org.eclipse.debug.internal.ui.DebugUIPlugin$1.run(DebugUIPlugin.java:1243) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) diff --git a/.metadata/.plugins/org.eclipse.cdt.core/.log b/.metadata/.plugins/org.eclipse.cdt.core/.log index 3dfd0d5..2eeec00 100644 --- a/.metadata/.plugins/org.eclipse.cdt.core/.log +++ b/.metadata/.plugins/org.eclipse.cdt.core/.log @@ -52,3 +52,5 @@ *** SESSION März 13, 2026 10:49:11.272 ----------------------------------------- *** SESSION März 16, 2026 12:55:55.445 ----------------------------------------- *** SESSION März 24, 2026 14:01:49.132 ----------------------------------------- +*** SESSION März 24, 2026 14:11:29.704 ----------------------------------------- +*** SESSION März 24, 2026 14:21:04.465 ----------------------------------------- diff --git a/.metadata/.plugins/org.eclipse.cdt.core/task1.1727452765701.pdom b/.metadata/.plugins/org.eclipse.cdt.core/task1.1727452765701.pdom index aa128eb34489937d18a97db2022dd75b39d53bec..87b15272ef864cddf2ebdb205d53e83c931c2d8f 100644 GIT binary patch delta 635 zcmYjP&uddb5T3lvPhV@NHi_9tt5_|OY+tYkksJ+#8t~@1LPAKyn=KSiwugaUTPP2N z`~iCKAjpFriZtL!N8Oql7WSON2Jz7~weKWx@$U=1&q{A)F$N6DA0ggje5V zs&itg?&jUN`(|2Bd5P0hNJW>QRaYu?r{dk5m9K0|9lN`ZOpO&j{QUtCXcRui9(sq4 zyq8PE4c5iV)IU~r1Y$nTF_Qq?g(dkSB2?F0-Yv;uiOGhfzUUm2gG@d)F+2j>GWbvC zeDC8k-#Gr<$5$a}aCNS0cn_Y)a-_sWp$-5R9n)3Z*#Jm3AOvFWSI=j^zV-{T2(3&X zp*VjXLSldm)#6;&-LJ`OFFQIM458CJNN<$NPlvc~%E8_!ZUzUzy7e*IweDdn?~GVjSV$H~v9L$TD=Sg5G8U&SEM)U5#UEf{ zp>)~U_y-h)OiakD$w~;tx%W;(EbcwG^F6=M@6+kV5~H!iC_)?nL`@xt>R}K@auEq# zgls-sttEg;lDEUgT)(Ok8 zo_-A?QsR6YpQ>p<&ihk=+8&S{-Kk+~(C$Y(cC}wU5OAmSJ0~wcXXueLGY6h@ZhV^U zgL2rvV4U(Y4gtENTyH?sF9C$s!3(1H0V=o`=jRxpbB^mh=gWU`wr2+P-EvJj7lrnI zoo6O9pf>^{eD*Kzx1mPD5eQ$T1bzdO47hOw^pBLlPi_${hAmLH;#{DeI07m*F57a` zJ2|ixte(bXY5rS!*Fv}2cj|pyw)pf*hP|nl3AyFg57gs?jQB-(!}@1b>$4U%yC&tX F?;D1%jA#G= diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log index b81bd4b..18c43ae 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log +++ b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log @@ -553,3 +553,93 @@ Target all ready 14:19:07 **** Incremental Build of configuration Debug for project task2 **** make -j12 all Target all ready +14:56:35 **** Incremental Build of configuration Debug for project task2 **** +make -j12 all +Target all ready +14:57:35 **** Clean-only build of configuration Debug for project task2 **** +make -j12 clean +14:57:51 **** Build of configuration Debug for project task2 **** +make -j12 all +arm-none-eabi-as -o task2.o task2.s -march=armv7-m -mcpu=cortex-m4 -adglns -g -mthumb --warn > task2.als +arm-none-eabi-ld -o task2.elf -T ldscript_rom.ld task2.o -g -Map task2.map --cref -static +arm-none-eabi-objdump -htdr -j .text -j .data -j .bss -j .vectortable -j .exhand task2.elf > task2.lst +arm-none-eabi-size task2.elf + text data bss dec hex filename + 648 0 0 648 288 task2.elf +Target all ready +14:58:02 **** Incremental Build of configuration Debug for project task2 **** +make -j12 all +Target all ready +14:58:10 **** Incremental Build of configuration Debug for project task2 **** +make -j12 all +Target all ready +13:53:05 **** Incremental Build of configuration Debug for project task2 **** +make -j12 all +arm-none-eabi-as -o task2.o task2.s -march=armv7-m -mcpu=cortex-m4 -adglns -g -mthumb --warn > task2.als +task2.s: Assembler messages: +task2.s:346: Error: junk at end of line, first unrecognized character is `h' +make: *** [makefile:74: task2.o] Error 1 +"make -j12 all" terminated with exit code 2. Build might be incomplete. +13:53:51 **** Incremental Build of configuration Debug for project task2 **** +make -j12 all +arm-none-eabi-as -o task2.o task2.s -march=armv7-m -mcpu=cortex-m4 -adglns -g -mthumb --warn > task2.als +arm-none-eabi-ld -o task2.elf -T ldscript_rom.ld task2.o -g -Map task2.map --cref -static +arm-none-eabi-objdump -htdr -j .text -j .data -j .bss -j .vectortable -j .exhand task2.elf > task2.lst +arm-none-eabi-size task2.elf + text data bss dec hex filename + 532 0 0 532 214 task2.elf +Target all ready +13:56:03 **** Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"Startup/startup_stm32g431kbtx.d" -MT"Startup/startup_stm32g431kbtx.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/startup_stm32g431kbtx.o" "../Startup/startup_stm32g431kbtx.s" +arm-none-eabi-gcc "../Startup/syscalls.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Startup/syscalls.d" -MT"Startup/syscalls.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/syscalls.o" +arm-none-eabi-gcc "../Startup/sysmem.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Startup/sysmem.d" -MT"Startup/sysmem.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Startup/sysmem.o" +arm-none-eabi-gcc "../Src/sketch.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/sketch.d" -MT"Src/sketch.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/sketch.o" +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +arm-none-eabi-gcc "../Src/task1_it.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1_it.d" -MT"Src/task1_it.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1_it.o" +../Src/sketch.c: In function 'main': +../Src/sketch.c:11:42: error: expected expression before ')' token + 11 | while(/*schalter nicht gedrückt*/){} + | ^ +../Src/sketch.c:12:9: warning: implicit declaration of function 'delay' [-Wimplicit-function-declaration] + 12 | delay(10); + | ^~~~~ +../Src/sketch.c:13:39: error: expected expression before ')' token + 13 | while(/*schalter losgelassen*/){} + | ^ +../Src/sketch.c:18:39: error: request for member 'length' in something not a structure or union + 18 | for(int i; i < reihenfolge.length - 1 && aktiv = 1; i ++){ + | ^ +../Src/sketch.c:20:20: warning: suggest parentheses around assignment used as truth value [-Wparentheses] + 20 | if(i = 0){/*alles bis auf LED0 auschalten*/} + | ^ +../Src/sketch.c:21:20: warning: suggest parentheses around assignment used as truth value [-Wparentheses] + 21 | if(i = 1){/*..*/} + | ^ +../Src/sketch.c:24:44: error: expected expression before ')' token + 24 | if(/*schalter gerückt*/){ + | ^ +../Src/sketch.c:32:42: error: expected expression before ')' token + 32 | while(/*Taster gedrückt*/){} + | ^ +make: *** [Src/subdir.mk:25: Src/sketch.o] Error 1 +make: *** Waiting for unfinished jobs.... +../Src/task1.c: In function 'GPIO_init': +../Src/task1.c:169:22: error: expected expression before '<<' token + 169 | GPIOA->MODER &= ~(3 ^<< 2); // Versuch: LED 1 Mode löschen :klappt so + | ^~ +make: *** [Src/subdir.mk:25: Src/task1.o] Error 1 +"make -j12 all" terminated with exit code 2. Build might be incomplete. +13:56:35 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc "../Src/sketch.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/sketch.d" -MT"Src/sketch.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/sketch.o" +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +../Src/task1.c: In function 'GPIO_init': +../Src/task1.c:169:22: error: expected expression before '<<' token + 169 | GPIOA->MODER &= ~(3 ^<< 2); // Versuch: LED 1 Mode löschen :klappt so + | ^~ +make: *** [Src/subdir.mk:25: Src/task1.o] Error 1 +"make -j12 all" terminated with exit code 2. Build might be incomplete. +14:02:22 **** Incremental Build of configuration Debug for project task2 **** +make -j12 all +Target all ready diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/task1.build.log b/.metadata/.plugins/org.eclipse.cdt.ui/task1.build.log index 4dc73d1..165ee68 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/task1.build.log +++ b/.metadata/.plugins/org.eclipse.cdt.ui/task1.build.log @@ -1,9 +1,13 @@ -14:13:43 **** Clean-only build of configuration Debug for project task1 **** -make -j12 clean -rm -rf ./Startup/startup_stm32g431kbtx.d ./Startup/startup_stm32g431kbtx.o ./Startup/syscalls.cyclo ./Startup/syscalls.d ./Startup/syscalls.o ./Startup/syscalls.su ./Startup/sysmem.cyclo ./Startup/sysmem.d ./Startup/sysmem.o ./Startup/sysmem.su -rm -rf ./Src/task1.cyclo ./Src/task1.d ./Src/task1.o ./Src/task1.su ./Src/task1_it.cyclo ./Src/task1_it.d ./Src/task1_it.o ./Src/task1_it.su -rm -rf default.size.stdout task1.elf task1.list task1.map - +13:56:35 **** Incremental Build of configuration Debug for project task1 **** +make -j12 all +arm-none-eabi-gcc "../Src/sketch.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/sketch.d" -MT"Src/sketch.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/sketch.o" +arm-none-eabi-gcc "../Src/task1.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DSTM32G431KBTx -DSTM32 -DSTM32G4 -DNUCLEO_G431KB -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Src/task1.d" -MT"Src/task1.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/task1.o" +../Src/task1.c: In function 'GPIO_init': +../Src/task1.c:169:22: error: expected expression before '<<' token + 169 | GPIOA->MODER &= ~(3 ^<< 2); // Versuch: LED 1 Mode löschen :klappt so + | ^~ +make: *** [Src/subdir.mk:25: Src/task1.o] Error 1 +"make -j12 all" terminated with exit code 2. Build might be incomplete. -14:13:44 Build Finished. 0 errors, 0 warnings. (took 187ms) +13:56:35 Build Failed. 2 errors, 0 warnings. (took 166ms) diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/task2.build.log b/.metadata/.plugins/org.eclipse.cdt.ui/task2.build.log index 5ed8344..2eb54bd 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/task2.build.log +++ b/.metadata/.plugins/org.eclipse.cdt.ui/task2.build.log @@ -1,6 +1,6 @@ -14:19:07 **** Incremental Build of configuration Debug for project task2 **** +14:02:22 **** Incremental Build of configuration Debug for project task2 **** make -j12 all Target all ready -14:19:07 Build Finished. 0 errors, 0 warnings. (took 182ms) +14:02:22 Build Finished. 0 errors, 0 warnings. (took 121ms) diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50fbddf6e22c0011128bbffc38f97768 b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50fbddf6e22c0011128bbffc38f97768 new file mode 100644 index 0000000..66920da --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50fbddf6e22c0011128bbffc38f97768 @@ -0,0 +1,328 @@ +#****************************************************************************************# +# Project: task2 - ASM: Interrupts +# File: task2.s +# Hardware: STefi Light v1.1 +# Processor: STM32G431KBT6U +#****************************************************************************************# + + .include "G431_addr.s" + + // Zusätzliche und benötigte Adressen + .equ RCC_AHB2ENR, 0x4002104C + .equ RCC_APB2ENR, 0x40021060 + + .equ GPIOA_MODER, 0x48000000 + .equ GPIOA_ODR, 0x48000014 + + .equ GPIOC_MODER, 0x48000800 + .equ GPIOC_PUPDR, 0x4800080C + .equ GPIOC_IDR, 0x48000810 + + .equ SYSCFG_BASE, 0x40010000 + .equ SYSCFG_EXTICR4, (SYSCFG_BASE + 0x14) + + .equ EXTI_BASE, 0x40010400 + .equ EXTI_IMR1, (EXTI_BASE + 0x00) + .equ EXTI_FTSR1, (EXTI_BASE + 0x0C) + .equ EXTI_PR1, (EXTI_BASE + 0x14) + + .equ NVIC_ISER1, 0xE000E104 + +#----------------------------------------------------------------------------------------# + .section .vectortable,"a" // vector table at begin of ROM +#----------------------------------------------------------------------------------------# + + .align 2 + + .word 0x20004000 // initial Stack Pointer + .word 0x08000401 // initial Program Counter + .word _ISR_NMI // non-masking interrupt + .word _ISR_HARDF // hard fault interrupt + + .space 0xD0 // padding 208 Bytes bis Offset 0xE0 (EXTI15_10 IRQ 40) + .word _ISR_S0_S1 // gemeinsamer Interrupt für PC13 (S0) und PC14 (S1) + +#----------------------------------------------------------------------------------------# + .text // section .text (default section for program code) +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global init + .type init, %function +init: + CPSID i // disable interrupts globally + + MOVS r0, #0 // safely initialize the GPRs + MOVS r1, #0 + MOVS r2, #0 + MOVS r3, #0 + MOVS r4, #0 + MOVS r5, #0 + MOVS r6, #0 + MOVS r7, #0 + MOV r8, r0 + MOV r9, r0 + MOV r10, r0 + MOV r11, r0 + MOV r12, r0 + +#--- enable port clocking + LDR r1, =RCC_AHB2ENR + MOVS r2, #0x05 // Bit 0 (GPIOA) und Bit 2 (GPIOC) + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + +#--- port init +#- LEDs (PA0-PA3) + LDR r1, =GPIOA_MODER + LDR r2, =0x000000FF // Maske PA0-PA3 + LDR r0, [r1, #0] + BICS r0, r2 + LDR r2, =0x00000055 // Maske Output 0101 0101 + ORRS r0, r2 + STR r0, [r1, #0] + +#- switch LED off + LDR r1, =GPIOA_ODR + MOVS r2, #0x0F // Maske LED0-3 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + +#- buttons (PC13, PC14 als Input) + LDR r1, =GPIOC_MODER + LDR r2, =0x3C000000 // Maske Bits 26-29 + LDR r0, [r1, #0] + BICS r0, r2 + STR r0, [r1, #0] + +#- Pull-Up für PC13, PC14 + LDR r1, =GPIOC_PUPDR + LDR r2, =0x3C000000 + LDR r0, [r1, #0] + BICS r0, r2 + LDR r2, =0x14000000 // 01 = Pull-Up für PC13 (Bits 27:26) und PC14 (Bits 29:28) + ORRS r0, r2 + STR r0, [r1, #0] + +#--- button interrupt config + +#- enable clock for SYSCFG module + LDR r1, =RCC_APB2ENR + MOVS r2, #0x01 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + +#- connect GPIO pins of the buttons to EXTended Interrupt controller lines (EXTI) + LDR r1, =SYSCFG_EXTICR4 + LDR r2, =0x00000FF0 // Maske für EXTI13 (Bits 7:4) und EXTI14 (Bits 11:8) + LDR r0, [r1, #0] + BICS r0, r2 + LDR r2, =0x00000220 // Port C (0010) für EXTI13 und EXTI14 + ORRS r0, r2 + STR r0, [r1, #0] + +#- configure lines in EXTI module (EXTI_* registers) + LDR r1, =EXTI_FTSR1 // Fallende Flanke + LDR r2, =0x00006000 // Bits 13 und 14 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =EXTI_IMR1 // Maskierung aufheben + LDR r2, =0x00006000 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + +#- NVIC: set interrupt priority, clear pending bits + LDR r1, =NVIC_ISER1 + LDR r2, =0x00000100 // Bit 8 für IRQ 40 (EXTI15_10) + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + + CPSIE i // enable interrupts globally + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global main + .type main, %function +main: + WFI + B main + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global delay + .type delay, %function +delay: + LDR r0, =106000 // Entprell-Zeit ~20ms +.L1: + SUBS r0, r0, #1 + BNE .L1 + BX lr + +#----------------------------------------------------------------------------------------# + + .align 2 + .global stop +stop: + NOP + B stop + +#----------------------------------------------------------------------------------------# +.lp1: + .ltorg +#----------------------------------------------------------------------------------------# + +#----------------------------------------------------------------------------------------# + .section .exhand,"ax" // section for exception handlers +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_NMI, %function +_ISR_NMI: + LDR r1, =RCC_AHB2ENR + MOV r2, #0x01 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =GPIOA_MODER + MOVS r2, #0xFF + LDR r0, [r1, #0] + BICS r0, r2 + MOVS r2, #0x44 + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =GPIOA_ODR + MOVS r2, #0x0A + LDR r0, [r1, #0] + BICS r0, r2 + STR r0, [r1, #0] + + B _ISR_NMI + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_HARDF, %function +_ISR_HARDF: + LDR r1, =RCC_AHB2ENR + MOV r2, #0x01 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =GPIOA_MODER + MOVS r2, #0xFF + LDR r0, [r1, #0] + BICS r0, r2 + MOVS r2, #0x11 + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =GPIOA_ODR + MOVS r2, #0x05 + LDR r0, [r1, #0] + BICS r0, r2 + STR r0, [r1, #0] + + B _ISR_HARDF + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_S0_S1, %function +_ISR_S0_S1: + PUSH {r4, r5, lr} // Wichtig: Register sichern gemäß AAPCS + +_check_S0: + LDR r4, =EXTI_PR1 + LDR r5, [r4, #0] + LDR r2, =0x2000 // Maske für S0 (PC13 / Bit 13) + TST r5, r2 + BEQ _check_S1 // Wenn Bit 13 nicht gesetzt, überspringen + +#--- do the work S0 + BL delay // Entprellen + + LDR r0, =GPIOC_IDR + LDR r1, [r0, #0] + LDR r2, =0x2000 + TST r1, r2 + BNE _clear_S0 // Abbruch, wenn High (Taster prellt / schon losgelassen) + + LDR r0, =GPIOA_ODR + LDR r1, [r0, #0] + MOVS r2, #0x09 // LED0 & LED3 toggeln (1001) + EORS r1, r2 + STR r1, [r0, #0] + +_clear_S0: +#--- clear interrupt flag S0 + LDR r4, =EXTI_PR1 + LDR r5, =0x2000 + STR r5, [r4, #0] + +_check_S1: + LDR r4, =EXTI_PR1 + LDR r5, [r4, #0] + LDR r2, =0x4000 // Maske für S1 (PC14 / Bit 14) + TST r5, r2 + BEQ _leave_ISR // Wenn Bit 14 nicht gesetzt, Ende + +#--- do the work S1 + BL delay + + LDR r0, =GPIOC_IDR + LDR r1, [r0, #0] + LDR r2, =0x4000 + TST r1, r2 + BNE _clear_S1 // Abbruch, wenn High + + LDR r0, =GPIOA_ODR + LDR r1, [r0, #0] + MOVS r2, #0x06 // LED1 & LED2 toggeln (0110) + EORS r1, r2 + STR r1, [r0, #0] + +_clear_S1: +#--- clear interrupt flag S1 + LDR r4, =EXTI_PR1 + LDR r5, =0x4000 + STR r5, [r4, #0] + +_leave_ISR: +#--- leave ISR + POP {r4, r5, pc} // Register wiederherstellen und zurückkehren + +#----------------------------------------------------------------------------------------# +.lp2: + .ltorg +#----------------------------------------------------------------------------------------# + + .end + +#************************************** E O F *******************************************# diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/47/706dec45f82c001115858a4760126e8b b/.metadata/.plugins/org.eclipse.core.resources/.history/47/706dec45f82c001115858a4760126e8b new file mode 100644 index 0000000..5cbf4b1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/47/706dec45f82c001115858a4760126e8b @@ -0,0 +1,347 @@ +#****************************************************************************************# +# Project: task2 - ASM: Interrupts +# File: task2.s +# Hardware: STefi Light v1.1 +# Processor: STM32G431KBT6U +#****************************************************************************************# + + .include "G431_addr.s" + + // Falls in G431_addr.s vorhanden, diesen Block löschen um Fehler zu vermeiden: + .equ RCC_AHB2ENR, 0x4002104C + .equ RCC_APB2ENR, 0x40021060 + + .equ GPIOA_MODER, 0x48000000 + .equ GPIOA_ODR, 0x48000014 + + .equ GPIOB_MODER, 0x48000400 + .equ GPIOB_PUPDR, 0x4800040C + .equ GPIOB_IDR, 0x48000410 + + .equ SYSCFG_BASE, 0x40010000 + .equ SYSCFG_EXTICR1, (SYSCFG_BASE + 0x08) + .equ SYSCFG_EXTICR2, (SYSCFG_BASE + 0x0C) + + .equ EXTI_BASE, 0x40010400 + .equ EXTI_IMR1, (EXTI_BASE + 0x00) + .equ EXTI_FTSR1, (EXTI_BASE + 0x0C) + .equ EXTI_PR1, (EXTI_BASE + 0x14) + + .equ NVIC_ISER0, 0xE000E100 + + .equ DBGMCU_CR, 0xE0042004 // Adresse des Debug Configuration Registers + +#----------------------------------------------------------------------------------------# + .section .vectortable,"a" +#----------------------------------------------------------------------------------------# + + .align 2 + + .word 0x20004000 // initial Stack Pointer + .word init // initial Program Counter + .word _ISR_NMI // non-masking interrupt + .word _ISR_HARDF // hard fault interrupt + + .space 0x48 // Padding 72 Bytes (Offset 0x10 -> 0x58) + .word _ISR_EXTI0 // EXTI0_IRQHandler (PB0 / S0) - IRQ 6 + + .space 0x0C // Padding 12 Bytes (Offset 0x5C -> 0x68) + .word _ISR_EXTI4 // EXTI4_IRQHandler (PB4 / S1) - IRQ 10 + +#----------------------------------------------------------------------------------------# + .text +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global init + .type init, %function +init: + CPSID i + + MOVS r0, #0 + MOVS r1, #0 + MOVS r2, #0 + MOVS r3, #0 + MOVS r4, #0 + MOVS r5, #0 + MOVS r6, #0 + MOVS r7, #0 + MOV r8, r0 + MOV r9, r0 + MOV r10, r0 + MOV r11, r0 + MOV r12, r0 + +#--- enable port clocking (GPIOA, GPIOB) + LDR r1, =RCC_AHB2ENR + MOVS r2, #0x03 // Bit 0 (GPIOA) und Bit 1 (GPIOB) + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + +#--- port init +#- LEDs (PA0 - PA3) als Output + LDR r1, =GPIOA_MODER + LDR r2, =0x000000FF + LDR r0, [r1, #0] + BICS r0, r2 + LDR r2, =0x00000055 + ORRS r0, r2 + STR r0, [r1, #0] + +#- switch LED off + LDR r1, =GPIOA_ODR + MOVS r2, #0x0F + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + +#- buttons (PB0, PB4) als Input + LDR r1, =GPIOB_MODER + LDR r2, =0x00000303 // Maske Bits 0:1 (PB0) und 8:9 (PB4) + LDR r0, [r1, #0] + BICS r0, r2 + STR r0, [r1, #0] + +#- Pull-Up für PB0, PB4 + LDR r1, =GPIOB_PUPDR + LDR r2, =0x00000303 + LDR r0, [r1, #0] + BICS r0, r2 + LDR r2, =0x00000101 // 01 = Pull-Up für PB0 und PB4 + ORRS r0, r2 + STR r0, [r1, #0] + +#--- button interrupt config + +#- enable clock for SYSCFG module + LDR r1, =RCC_APB2ENR + MOVS r2, #0x01 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + +#- connect GPIO pins to EXTI lines + LDR r1, =SYSCFG_EXTICR1 // EXTI0 (PB0) + LDR r2, =0x000F // Maske EXTI0 (Bits 3:0) + LDR r0, [r1, #0] + BICS r0, r2 + MOVS r2, #0x0001 // Port B (0001) + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =SYSCFG_EXTICR2 // EXTI4 (PB4) + LDR r2, =0x000F // Maske EXTI4 (Bits 3:0) + LDR r0, [r1, #0] + BICS r0, r2 + MOVS r2, #0x0001 // Port B (0001) + ORRS r0, r2 + STR r0, [r1, #0] + +#- configure EXTI lines (falling edge, unmask) + LDR r1, =EXTI_FTSR1 + MOVS r2, #0x11 // Bit 0 (EXTI0) und Bit 4 (EXTI4) + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =EXTI_IMR1 + MOVS r2, #0x11 // Bit 0 und Bit 4 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + +#- NVIC: enable interrupts EXTI0 (IRQ 6) & EXTI4 (IRQ 10) + LDR r1, =NVIC_ISER0 + LDR r2, =0x00000440 // Bit 6 (EXTI0) und Bit 10 (EXTI4) + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + + #--- wachhalten während WFI + LDR r1, =DBGMCU_CR + LDR r0, [r1, #0] + MOVS r2, #0x07 // Setzt DBG_SLEEP, DBG_STOP und DBG_STANDBY Bits + ORRS r0, r2 + STR r0, [r1, #0] + + CPSIE i + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global main + .type main, %function +main: + WFI + B main + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .thumb_func + .global delay + .type delay, %function +delay: + LDR r0, =106000 +.L1: + SUBS r0, r0, #1 + BNE .L1 + BX lr + +#----------------------------------------------------------------------------------------# + + .align 2 + .global stop +stop: + NOP + B stop + +#----------------------------------------------------------------------------------------# +.lp1: + .ltorg +#----------------------------------------------------------------------------------------# + +#----------------------------------------------------------------------------------------# + .section .exhand,"ax" +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_NMI, %function +_ISR_NMI: + LDR r1, =RCC_AHB2ENR + MOV r2, #0x01 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =GPIOA_MODER + MOVS r2, #0xFF + LDR r0, [r1, #0] + BICS r0, r2 + MOVS r2, #0x44 + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =GPIOA_ODR + MOVS r2, #0x0A + LDR r0, [r1, #0] + BICS r0, r2 + STR r0, [r1, #0] + + B _ISR_NMI + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_HARDF, %function +_ISR_HARDF: + LDR r1, =RCC_AHB2ENR + MOV r2, #0x01 + LDR r0, [r1, #0] + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =GPIOA_MODER + MOVS r2, #0xFF + LDR r0, [r1, #0] + BICS r0, r2 + MOVS r2, #0x11 + ORRS r0, r2 + STR r0, [r1, #0] + + LDR r1, =GPIOA_ODR + MOVS r2, #0x05 + LDR r0, [r1, #0] + BICS r0, r2 + STR r0, [r1, #0] + + B _ISR_HARDF + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_EXTI0, %function +_ISR_EXTI0: + PUSH {lr} + +#--- Entprellen + BL delay + +#--- Überprüfen, ob Taster noch gedrückt ist (PB0) + LDR r0, =GPIOB_IDR + LDR r1, [r0, #0] + MOVS r2, #0x01 + TST r1, r2 + BNE _clear_exti0 + +#--- LED0 & LED3 toggeln (1001 = 0x09) + LDR r0, =GPIOA_ODR + LDR r1, [r0, #0] + MOVS r2, #0x09 + EORS r1, r2 + STR r1, [r0, #0] + +_clear_exti0: +#--- Interrupt Flag löschen + LDR r0, =EXTI_PR1 + MOVS r1, #0x01 + STR r1, [r0, #0] + + POP {pc} + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_EXTI4, %function +_ISR_EXTI4: + PUSH {lr} + +#--- Entprellen + BL delay + +#--- Überprüfen, ob Taster noch gedrückt ist (PB4) + LDR r0, =GPIOB_IDR + LDR r1, [r0, #0] + MOVS r2, #0x10 + TST r1, r2 + BNE _clear_exti4 + +#--- LED1 & LED2 toggeln (0110 = 0x06) + LDR r0, =GPIOA_ODR + LDR r1, [r0, #0] + MOVS r2, #0x06 + EORS r1, r2 + STR r1, [r0, #0] + +_clear_exti4: +#--- Interrupt Flag löschen + LDR r0, =EXTI_PR1 + MOVS r1, #0x10 + STR r1, [r0, #0] + + POP {pc} + +#----------------------------------------------------------------------------------------# +.lp2: + .ltorg +#----------------------------------------------------------------------------------------# + + .end +hu diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6e/900cdd1dfd2c001115858a4760126e8b b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/900cdd1dfd2c001115858a4760126e8b new file mode 100644 index 0000000..d3723f4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/900cdd1dfd2c001115858a4760126e8b @@ -0,0 +1,764 @@ +#***************************************************************************************** +# Project: task2 - switch triggered LEDs +# File: G431_addr.s +# +# Language: ASM +# +# Hardware: STefi v1.1 +# Processor: STM32G431KBT6U +# +# Author: Manuel Lederhofer +# Datum: 20.08.2015 +# +# Version: 3.0 +# History: +# 20.08.2015 ML create file +# 07.12.2018 ML port from MKL05Z32VLC4 to STM32L476RG +# 27.02.2019 ML change from absolute addresses to BASE + OFFSET notation and +# add more timer modules +# 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U +# +# Status: working +# +# Description: +# Connects assembly addresses for STM32G431 MCU to symbolic register names +# used in the datasheets. +# +# Notes: +# - default MCU speed at startup is 16 MHz. +# +# ToDo: +# - none - +#***************************************************************************************** + + +#----------------------------------------------------------------------------------------# +# MCU Bus Base Addresses +#----------------------------------------------------------------------------------------# + + .equ APB1_BASE, 0x40000000 + .equ APB2_BASE, 0x40010000 + .equ AHB1_BASE, 0x40020000 + .equ AHB2_BASE, 0x48000000 + .equ AHB3_BASE, 0xA0000000 //!!! FSMC + QSPI registers = AHB3 ? + .equ PPB_BASE, 0xE0000000 /* Cortex M4 with FPU Internal Peripherals */ + +#----------------------------------------------------------------------------------------# +# System Configuration Controller +# +# address space: 0x4001_0000 .. 0x4001_0029 +#----------------------------------------------------------------------------------------# + + .equ SYSCFG_BASE, APB2_BASE + + .equ SYSCFG_MEMRMP, SYSCFG_BASE + 0x00 + .equ SYSCFG_CFGR1, SYSCFG_BASE + 0x04 + .equ SYSCFG_EXTICR1, SYSCFG_BASE + 0x08 + .equ SYSCFG_EXTICR2, SYSCFG_BASE + 0x0C + .equ SYSCFG_EXTICR3, SYSCFG_BASE + 0x10 + .equ SYSCFG_EXTICR4, SYSCFG_BASE + 0x14 + .equ SYSCFG_SCSR, SYSCFG_BASE + 0x18 + .equ SYSCFG_CFGR2, SYSCFG_BASE + 0x1C + .equ SYSCFG_SWPR, SYSCFG_BASE + 0x20 + .equ SYSCFG_SKR, SYSCFG_BASE + 0x24 + +#----------------------------------------------------------------------------------------# +# Extended Interrupts And Events Controller +# +# address space: 0x4001_0400 .. 0x4001_07FF +#----------------------------------------------------------------------------------------# + + .equ EXTI_BASE, APB2_BASE + 0x400 + + .equ EXTI_IMR1, EXTI_BASE + 0x00 + .equ EXTI_EMR1, EXTI_BASE + 0x04 + .equ EXTI_RTSR1, EXTI_BASE + 0x08 + .equ EXTI_FTSR1, EXTI_BASE + 0x0C + .equ EXTI_SWIER1, EXTI_BASE + 0x10 + .equ EXTI_PR1, EXTI_BASE + 0x14 + + .equ EXTI_IMR2, EXTI_BASE + 0x20 + .equ EXTI_EMR2, EXTI_BASE + 0x24 + .equ EXTI_RTSR2, EXTI_BASE + 0x28 + .equ EXTI_FTSR2, EXTI_BASE + 0x2C + .equ EXTI_SWIER2, EXTI_BASE + 0x30 + .equ EXTI_PR2, EXTI_BASE + 0x34 + +#----------------------------------------------------------------------------------------# +# TIM module common configuration +# +# Every timer has 1 KB address space: +# +# TIM2 .. TIM7: 0x4000_0000 .. 0x4000_17FF (APB1) +# TIM1: 0x4001_2C00 .. 0x4001_2FFF (APB2) +# TIM8: 0x4001_3400 .. 0x4001_37FF (APB2) +# TIM15 .. TIM17: 0x4001_4000 .. 0x4001_4BFF (APB2) +# TIM20: 0x4001_5000 .. 0x4001_53FF (APB2) +# +# note: +# TIM2 + TIM5 are 32 bit timers. All others have a width of 16 bit. +# Below, the timers on one line share a common register set description. +# +# TIM 1, 8, 20 advances control timers +# TIM 2, 3, 4, 5 general purpose timers (TIM2/5 = 32 bit) +# TIM 15 general purpose timers +# TIM 16, 17 general purpose timers +# TIM 6, 7 basic timers +#----------------------------------------------------------------------------------------# + + .equ TIM_CR1_OFFSET, 0x00 + .equ TIM_CR2_OFFSET, 0x04 + .equ TIM_SMCR_OFFSET, 0x08 + .equ TIM_DIER_OFFSET, 0x0C + .equ TIM_SR_OFFSET, 0x10 + .equ TIM_EGR_OFFSET, 0x14 + .equ TIM_CCMR1_OFFSET, 0x18 + .equ TIM_CCMR2_OFFSET, 0x1C + .equ TIM_CCER_OFFSET, 0x20 + .equ TIM_CNT_OFFSET, 0x24 + .equ TIM_PSC_OFFSET, 0x28 + .equ TIM_ARR_OFFSET, 0x2C + .equ TIM_RCR_OFFSET, 0x30 + .equ TIM_CCR1_OFFSET, 0x34 + .equ TIM_CCR2_OFFSET, 0x38 + .equ TIM_CCR3_OFFSET, 0x3C + .equ TIM_CCR4_OFFSET, 0x40 + .equ TIM_BDTR_OFFSET, 0x44 + .equ TIM_CCR5_OFFSET, 0x48 + .equ TIM_CCR6_OFFSET, 0x4C + .equ TIM_CCMR3_OFFSET, 0x50 + .equ TIM_DTR2_OFFSET, 0x54 + .equ TIM_ECR_OFFSET, 0x58 + .equ TIM_TISEL_OFFSET, 0x5C + .equ TIM_AF1_OFFSET, 0x60 + .equ TIM_AF2_OFFSET, 0x64 + .equ TIM_OR1_OFFSET, 0x68 + + .equ TIM_DCR_OFFSET, 0x3DC + .equ TIM_DMAR_OFFSET, 0x3E0 + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # + +#--- Genral Purpose Timer - TIM2 / address space: 0x4000_0000 .. 0x4000_03FF + + .equ TIM2_BASE, APB1_BASE + + .equ TIM2_CR1, TIM2_BASE + TIM_CR1_OFFSET + .equ TIM2_CR2, TIM2_BASE + TIM_CR2_OFFSET + .equ TIM2_SMCR, TIM2_BASE + TIM_SMCR_OFFSET + .equ TIM2_DIER, TIM2_BASE + TIM_DIER_OFFSET + .equ TIM2_SR, TIM2_BASE + TIM_SR_OFFSET + .equ TIM2_EGR, TIM2_BASE + TIM_EGR_OFFSET + .equ TIM2_CCMR1, TIM2_BASE + TIM_CCMR1_OFFSET + .equ TIM2_CCMR2, TIM2_BASE + TIM_CCMR2_OFFSET + .equ TIM2_CCER, TIM2_BASE + TIM_CCER_OFFSET + .equ TIM2_CNT, TIM2_BASE + TIM_CNT_OFFSET + .equ TIM2_PSC, TIM2_BASE + TIM_PSC_OFFSET + .equ TIM2_ARR, TIM2_BASE + TIM_ARR_OFFSET + + .equ TIM2_CCR1, TIM2_BASE + TIM_CCR1_OFFSET + .equ TIM2_CCR2, TIM2_BASE + TIM_CCR2_OFFSET + .equ TIM2_CCR3, TIM2_BASE + TIM_CCR3_OFFSET + .equ TIM2_CCR4, TIM2_BASE + TIM_CCR4_OFFSET + + .equ TIM2_ECR, TIM2_BASE + TIM_ECR_OFFSET + .equ TIM2_TISEL, TIM2_BASE + TIM_TISEL_OFFSET + .equ TIM2_AF1, TIM2_BASE + TIM_ECR_OFFSET + .equ TIM2_AF2, TIM2_BASE + TIM_ECR_OFFSET + + .equ TIM2_DCR, TIM2_BASE + TIM_DCR_OFFSET + .equ TIM2_DMAR, TIM2_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM3 / address space: 0x4000_0400 .. 0x4000_07FF + + .equ TIM3_BASE, APB1_BASE + 0x400 + + .equ TIM3_CR1, TIM3_BASE + TIM_CR1_OFFSET + .equ TIM3_CR2, TIM3_BASE + TIM_CR2_OFFSET + .equ TIM3_SMCR, TIM3_BASE + TIM_SMCR_OFFSET + .equ TIM3_DIER, TIM3_BASE + TIM_DIER_OFFSET + .equ TIM3_SR, TIM3_BASE + TIM_SR_OFFSET + .equ TIM3_EGR, TIM3_BASE + TIM_EGR_OFFSET + .equ TIM3_CCMR1, TIM3_BASE + TIM_CCMR1_OFFSET + .equ TIM3_CCMR2, TIM3_BASE + TIM_CCMR2_OFFSET + .equ TIM3_CCER, TIM3_BASE + TIM_CCER_OFFSET + .equ TIM3_CNT, TIM3_BASE + TIM_CNT_OFFSET + .equ TIM3_PSC, TIM3_BASE + TIM_PSC_OFFSET + .equ TIM3_ARR, TIM3_BASE + TIM_ARR_OFFSET + + .equ TIM3_CCR1, TIM3_BASE + TIM_CCR1_OFFSET + .equ TIM3_CCR2, TIM3_BASE + TIM_CCR2_OFFSET + .equ TIM3_CCR3, TIM3_BASE + TIM_CCR3_OFFSET + .equ TIM3_CCR4, TIM3_BASE + TIM_CCR4_OFFSET + + .equ TIM3_ECR, TIM3_BASE + TIM_ECR_OFFSET + .equ TIM3_TISEL, TIM3_BASE + TIM_TISEL_OFFSET + .equ TIM3_AF1, TIM3_BASE + TIM_ECR_OFFSET + .equ TIM3_AF2, TIM3_BASE + TIM_ECR_OFFSET + + .equ TIM3_DCR, TIM3_BASE + TIM_DCR_OFFSET + .equ TIM3_DMAR, TIM3_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM4 / address space: 0x4000_0800 .. 0x4000_0BFF + + .equ TIM4_BASE, APB1_BASE + 0x800 + + .equ TIM4_CR1, TIM4_BASE + TIM_CR1_OFFSET + .equ TIM4_CR2, TIM4_BASE + TIM_CR2_OFFSET + .equ TIM4_SMCR, TIM4_BASE + TIM_SMCR_OFFSET + .equ TIM4_DIER, TIM4_BASE + TIM_DIER_OFFSET + .equ TIM4_SR, TIM4_BASE + TIM_SR_OFFSET + .equ TIM4_EGR, TIM4_BASE + TIM_EGR_OFFSET + .equ TIM4_CCMR1, TIM4_BASE + TIM_CCMR1_OFFSET + .equ TIM4_CCMR2, TIM4_BASE + TIM_CCMR2_OFFSET + .equ TIM4_CCER, TIM4_BASE + TIM_CCER_OFFSET + .equ TIM4_CNT, TIM4_BASE + TIM_CNT_OFFSET + .equ TIM4_PSC, TIM4_BASE + TIM_PSC_OFFSET + .equ TIM4_ARR, TIM4_BASE + TIM_ARR_OFFSET + + .equ TIM4_CCR1, TIM4_BASE + TIM_CCR1_OFFSET + .equ TIM4_CCR2, TIM4_BASE + TIM_CCR2_OFFSET + .equ TIM4_CCR3, TIM4_BASE + TIM_CCR3_OFFSET + .equ TIM4_CCR4, TIM4_BASE + TIM_CCR4_OFFSET + + .equ TIM4_ECR, TIM4_BASE + TIM_ECR_OFFSET + .equ TIM4_TISEL, TIM4_BASE + TIM_TISEL_OFFSET + .equ TIM4_AF1, TIM4_BASE + TIM_ECR_OFFSET + .equ TIM4_AF2, TIM4_BASE + TIM_ECR_OFFSET + + .equ TIM4_DCR, TIM4_BASE + TIM_DCR_OFFSET + .equ TIM4_DMAR, TIM4_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM5 / address space: 0x4000_0C00 .. 0x4000_0FFF + + .equ TIM5_BASE, APB1_BASE + 0xC00 + + .equ TIM5_CR1, TIM5_BASE + TIM_CR1_OFFSET + .equ TIM5_CR2, TIM5_BASE + TIM_CR2_OFFSET + .equ TIM5_SMCR, TIM5_BASE + TIM_SMCR_OFFSET + .equ TIM5_DIER, TIM5_BASE + TIM_DIER_OFFSET + .equ TIM5_SR, TIM5_BASE + TIM_SR_OFFSET + .equ TIM5_EGR, TIM5_BASE + TIM_EGR_OFFSET + .equ TIM5_CCMR1, TIM5_BASE + TIM_CCMR1_OFFSET + .equ TIM5_CCMR2, TIM5_BASE + TIM_CCMR2_OFFSET + .equ TIM5_CCER, TIM5_BASE + TIM_CCER_OFFSET + .equ TIM5_CNT, TIM5_BASE + TIM_CNT_OFFSET + .equ TIM5_PSC, TIM5_BASE + TIM_PSC_OFFSET + .equ TIM5_ARR, TIM5_BASE + TIM_ARR_OFFSET + + .equ TIM5_CCR1, TIM5_BASE + TIM_CCR1_OFFSET + .equ TIM5_CCR2, TIM5_BASE + TIM_CCR2_OFFSET + .equ TIM5_CCR3, TIM5_BASE + TIM_CCR3_OFFSET + .equ TIM5_CCR4, TIM5_BASE + TIM_CCR4_OFFSET + + .equ TIM5_ECR, TIM5_BASE + TIM_ECR_OFFSET + .equ TIM5_TISEL, TIM5_BASE + TIM_TISEL_OFFSET + .equ TIM5_AF1, TIM5_BASE + TIM_ECR_OFFSET + .equ TIM5_AF2, TIM5_BASE + TIM_ECR_OFFSET + + .equ TIM5_DCR, TIM5_BASE + TIM_DCR_OFFSET + .equ TIM5_DMAR, TIM5_BASE + TIM_DMAR_OFFSET + +#--- Basic Timer - TIM6 / address space: 0x4000_1000 .. 0x4000_13FF + + .equ TIM6_BASE, APB1_BASE + 0x1000 + + .equ TIM6_CR1, TIM6_BASE + TIM_CR1_OFFSET + .equ TIM6_CR2, TIM6_BASE + TIM_CR2_OFFSET + + .equ TIM6_DIER, TIM6_BASE + TIM_DIER_OFFSET + .equ TIM6_SR, TIM6_BASE + TIM_SR_OFFSET + .equ TIM6_EGR, TIM6_BASE + TIM_EGR_OFFSET + + .equ TIM6_CNT, TIM6_BASE + TIM_CNT_OFFSET + .equ TIM6_PSC, TIM6_BASE + TIM_PSC_OFFSET + .equ TIM6_ARR, TIM6_BASE + TIM_ARR_OFFSET + +#--- Basic Timer - TIM7 / address space: 0x4000_1400 .. 0x4000_17FF + + .equ TIM7_BASE, APB1_BASE + 0x1400 + + .equ TIM7_CR1, TIM7_BASE + TIM_CR1_OFFSET + .equ TIM7_CR2, TIM7_BASE + TIM_CR2_OFFSET + + .equ TIM7_DIER, TIM7_BASE + TIM_DIER_OFFSET + .equ TIM7_SR, TIM7_BASE + TIM_SR_OFFSET + .equ TIM7_EGR, TIM7_BASE + TIM_EGR_OFFSET + + .equ TIM7_CNT, TIM7_BASE + TIM_CNT_OFFSET + .equ TIM7_PSC, TIM7_BASE + TIM_PSC_OFFSET + .equ TIM7_ARR, TIM7_BASE + TIM_ARR_OFFSET + +#--- Advanced Control Timer - TIM1 / address space: 0x4001_2C00 .. 0x4001_2FFF + + .equ TIM1_BASE, APB2_BASE + 0x2C00 + + .equ TIM1_CR1, TIM1_BASE + TIM_CR1_OFFSET + .equ TIM1_CR2, TIM1_BASE + TIM_CR2_OFFSET + .equ TIM1_SMCR, TIM1_BASE + TIM_SMCR_OFFSET + .equ TIM1_DIER, TIM1_BASE + TIM_DIER_OFFSET + .equ TIM1_SR, TIM1_BASE + TIM_SR_OFFSET + .equ TIM1_EGR, TIM1_BASE + TIM_EGR_OFFSET + .equ TIM1_CCMR1, TIM1_BASE + TIM_CCMR1_OFFSET + .equ TIM1_CCMR2, TIM1_BASE + TIM_CCMR2_OFFSET + .equ TIM1_CCER, TIM1_BASE + TIM_CCER_OFFSET + .equ TIM1_CNT, TIM1_BASE + TIM_CNT_OFFSET + .equ TIM1_PSC, TIM1_BASE + TIM_PSC_OFFSET + .equ TIM1_ARR, TIM1_BASE + TIM_ARR_OFFSET + .equ TIM1_RCR, TIM1_BASE + TIM_RCR_OFFSET + .equ TIM1_CCR1, TIM1_BASE + TIM_CCR1_OFFSET + .equ TIM1_CCR2, TIM1_BASE + TIM_CCR2_OFFSET + .equ TIM1_CCR3, TIM1_BASE + TIM_CCR3_OFFSET + .equ TIM1_CCR4, TIM1_BASE + TIM_CCR4_OFFSET + .equ TIM1_BDTR, TIM1_BASE + TIM_BDTR_OFFSET + .equ TIM1_CCR5, TIM1_BASE + TIM_CCR5_OFFSET + .equ TIM1_CCR6, TIM1_BASE + TIM_CCR6_OFFSET + .equ TIM1_CCMR3, TIM1_BASE + TIM_CCMR3_OFFSET + .equ TIM1_DTR2, TIM1_BASE + TIM_DTR2_OFFSET + .equ TIM1_ECR, TIM1_BASE + TIM_ECR_OFFSET + .equ TIM1_TISEL, TIM1_BASE + TIM_TISEL_OFFSET + .equ TIM1_AF1, TIM1_BASE + TIM_AF1_OFFSET + .equ TIM1_AF2, TIM1_BASE + TIM_AF2_OFFSET + + .equ TIM1_DCR, TIM1_BASE + TIM_DCR_OFFSET + .equ TIM1_DMAR, TIM1_BASE + TIM_DMAR_OFFSET + +#--- Advanced Control Timer - TIM8 / address space: 0x4001_3400 .. 0x4001_37FF + + .equ TIM8_BASE, APB2_BASE + 0x3400 + + .equ TIM8_CR1, TIM8_BASE + TIM_CR1_OFFSET + .equ TIM8_CR2, TIM8_BASE + TIM_CR2_OFFSET + .equ TIM8_SMCR, TIM8_BASE + TIM_SMCR_OFFSET + .equ TIM8_DIER, TIM8_BASE + TIM_DIER_OFFSET + .equ TIM8_SR, TIM8_BASE + TIM_SR_OFFSET + .equ TIM8_EGR, TIM8_BASE + TIM_EGR_OFFSET + .equ TIM8_CCMR1, TIM8_BASE + TIM_CCMR1_OFFSET + .equ TIM8_CCMR2, TIM8_BASE + TIM_CCMR2_OFFSET + .equ TIM8_CCER, TIM8_BASE + TIM_CCER_OFFSET + .equ TIM8_CNT, TIM8_BASE + TIM_CNT_OFFSET + .equ TIM8_PSC, TIM8_BASE + TIM_PSC_OFFSET + .equ TIM8_ARR, TIM8_BASE + TIM_ARR_OFFSET + .equ TIM8_RCR, TIM8_BASE + TIM_RCR_OFFSET + .equ TIM8_CCR1, TIM8_BASE + TIM_CCR1_OFFSET + .equ TIM8_CCR2, TIM8_BASE + TIM_CCR2_OFFSET + .equ TIM8_CCR3, TIM8_BASE + TIM_CCR3_OFFSET + .equ TIM8_CCR4, TIM8_BASE + TIM_CCR4_OFFSET + .equ TIM8_BDTR, TIM8_BASE + TIM_BDTR_OFFSET + .equ TIM8_CCR5, TIM8_BASE + TIM_CCR5_OFFSET + .equ TIM8_CCR6, TIM8_BASE + TIM_CCR6_OFFSET + .equ TIM8_CCMR3, TIM8_BASE + TIM_CCMR3_OFFSET + .equ TIM8_DTR2, TIM8_BASE + TIM_DTR2_OFFSET + .equ TIM8_ECR, TIM8_BASE + TIM_ECR_OFFSET + .equ TIM8_TISEL, TIM8_BASE + TIM_TISEL_OFFSET + .equ TIM8_AF1, TIM8_BASE + TIM_AF1_OFFSET + .equ TIM8_AF2, TIM8_BASE + TIM_AF2_OFFSET + + .equ TIM8_DCR, TIM8_BASE + TIM_DCR_OFFSET + .equ TIM8_DMAR, TIM8_BASE + TIM_DMAR_OFFSET + +#--- Advanced Control Timer - TIM20 / address space: 0x4001_5000 .. 0x4001_53FF + + .equ TIM20_BASE, APB2_BASE + 0x5000 + + .equ TIM20_CR1, TIM20_BASE + TIM_CR1_OFFSET + .equ TIM20_CR2, TIM20_BASE + TIM_CR2_OFFSET + .equ TIM20_SMCR, TIM20_BASE + TIM_SMCR_OFFSET + .equ TIM20_DIER, TIM20_BASE + TIM_DIER_OFFSET + .equ TIM20_SR, TIM20_BASE + TIM_SR_OFFSET + .equ TIM20_EGR, TIM20_BASE + TIM_EGR_OFFSET + .equ TIM20_CCMR1, TIM20_BASE + TIM_CCMR1_OFFSET + .equ TIM20_CCMR2, TIM20_BASE + TIM_CCMR2_OFFSET + .equ TIM20_CCER, TIM20_BASE + TIM_CCER_OFFSET + .equ TIM20_CNT, TIM20_BASE + TIM_CNT_OFFSET + .equ TIM20_PSC, TIM20_BASE + TIM_PSC_OFFSET + .equ TIM20_ARR, TIM20_BASE + TIM_ARR_OFFSET + .equ TIM20_RCR, TIM20_BASE + TIM_RCR_OFFSET + .equ TIM20_CCR1, TIM20_BASE + TIM_CCR1_OFFSET + .equ TIM20_CCR2, TIM20_BASE + TIM_CCR2_OFFSET + .equ TIM20_CCR3, TIM20_BASE + TIM_CCR3_OFFSET + .equ TIM20_CCR4, TIM20_BASE + TIM_CCR4_OFFSET + .equ TIM20_BDTR, TIM20_BASE + TIM_BDTR_OFFSET + .equ TIM20_CCR5, TIM20_BASE + TIM_CCR5_OFFSET + .equ TIM20_CCR6, TIM20_BASE + TIM_CCR6_OFFSET + .equ TIM20_CCMR3, TIM20_BASE + TIM_CCMR3_OFFSET + .equ TIM20_DTR2, TIM20_BASE + TIM_DTR2_OFFSET + .equ TIM20_ECR, TIM20_BASE + TIM_ECR_OFFSET + .equ TIM20_TISEL, TIM20_BASE + TIM_TISEL_OFFSET + .equ TIM20_AF1, TIM20_BASE + TIM_AF1_OFFSET + .equ TIM20_AF2, TIM20_BASE + TIM_AF2_OFFSET + + .equ TIM20_DCR, TIM20_BASE + TIM_DCR_OFFSET + .equ TIM20_DMAR, TIM20_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM15 / address space: 0x4001_4000 .. 0x4001_43FF + + .equ TIM15_BASE, APB2_BASE + 0x4000 + + .equ TIM15_CR1, TIM15_BASE + TIM_CR1_OFFSET + .equ TIM15_CR2, TIM15_BASE + TIM_CR2_OFFSET + .equ TIM15_SMCR, TIM15_BASE + TIM_SMCR_OFFSET + .equ TIM15_DIER, TIM15_BASE + TIM_DIER_OFFSET + .equ TIM15_SR, TIM15_BASE + TIM_SR_OFFSET + .equ TIM15_EGR, TIM15_BASE + TIM_EGR_OFFSET + .equ TIM15_CCMR1, TIM15_BASE + TIM_CCMR1_OFFSET + + .equ TIM15_CCER, TIM15_BASE + TIM_CCER_OFFSET + .equ TIM15_CNT, TIM15_BASE + TIM_CNT_OFFSET + .equ TIM15_PSC, TIM15_BASE + TIM_PSC_OFFSET + .equ TIM15_ARR, TIM15_BASE + TIM_ARR_OFFSET + .equ TIM15_RCR, TIM15_BASE + TIM_RCR_OFFSET + .equ TIM15_CCR1, TIM15_BASE + TIM_CCR1_OFFSET + .equ TIM15_CCR2, TIM15_BASE + TIM_CCR2_OFFSET + + .equ TIM15_BDTR, TIM15_BASE + TIM_BDTR_OFFSET + + .equ TIM15_DTR2, TIM15_BASE + TIM_DTR2_OFFSET + + .equ TIM15_TISEL, TIM15_BASE + TIM_TISEL_OFFSET + .equ TIM15_AF1, TIM15_BASE + TIM_AF1_OFFSET + .equ TIM15_AF2, TIM15_BASE + TIM_AF2_OFFSET + + .equ TIM15_DCR, TIM15_BASE + TIM_DCR_OFFSET + .equ TIM15_DMAR, TIM15_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM16 / address space: 0x4001_4400 .. 0x4001_47FF + + .equ TIM16_BASE, APB2_BASE + 0x4400 + + .equ TIM16_CR1, TIM16_BASE + TIM_CR1_OFFSET + .equ TIM16_CR2, TIM16_BASE + TIM_CR2_OFFSET + + .equ TIM16_DIER, TIM16_BASE + TIM_DIER_OFFSET + .equ TIM16_SR, TIM16_BASE + TIM_SR_OFFSET + .equ TIM16_EGR, TIM16_BASE + TIM_EGR_OFFSET + .equ TIM16_CCMR1, TIM16_BASE + TIM_CCMR1_OFFSET + + .equ TIM16_CCER, TIM16_BASE + TIM_CCER_OFFSET + .equ TIM16_CNT, TIM16_BASE + TIM_CNT_OFFSET + .equ TIM16_PSC, TIM16_BASE + TIM_PSC_OFFSET + .equ TIM16_ARR, TIM16_BASE + TIM_ARR_OFFSET + .equ TIM16_RCR, TIM16_BASE + TIM_RCR_OFFSET + .equ TIM16_CCR1, TIM16_BASE + TIM_CCR1_OFFSET + + .equ TIM16_BDTR, TIM16_BASE + TIM_BDTR_OFFSET + + .equ TIM16_DTR2, TIM16_BASE + TIM_DTR2_OFFSET + + .equ TIM16_TISEL, TIM16_BASE + TIM_TISEL_OFFSET + .equ TIM16_AF1, TIM16_BASE + TIM_AF1_OFFSET + .equ TIM16_AF2, TIM16_BASE + TIM_AF2_OFFSET + .equ TIM16_OR1, TIM16_BASE + TIM_OR1_OFFSET + + .equ TIM16_DCR, TIM16_BASE + TIM_DCR_OFFSET + .equ TIM16_DMAR, TIM16_BASE + TIM_DMAR_OFFSET + +#--- Genral Purpose Timer - TIM17 / address space: 0x4001_4800 .. 0x4001_4BFF + + .equ TIM17_BASE, APB2_BASE + 0x4800 + + .equ TIM17_CR1, TIM17_BASE + TIM_CR1_OFFSET + .equ TIM17_CR2, TIM17_BASE + TIM_CR2_OFFSET + + .equ TIM17_DIER, TIM17_BASE + TIM_DIER_OFFSET + .equ TIM17_SR, TIM17_BASE + TIM_SR_OFFSET + .equ TIM17_EGR, TIM17_BASE + TIM_EGR_OFFSET + .equ TIM17_CCMR1, TIM17_BASE + TIM_CCMR1_OFFSET + + .equ TIM17_CCER, TIM17_BASE + TIM_CCER_OFFSET + .equ TIM17_CNT, TIM17_BASE + TIM_CNT_OFFSET + .equ TIM17_PSC, TIM17_BASE + TIM_PSC_OFFSET + .equ TIM17_ARR, TIM17_BASE + TIM_ARR_OFFSET + .equ TIM17_RCR, TIM17_BASE + TIM_RCR_OFFSET + .equ TIM17_CCR1, TIM17_BASE + TIM_CCR1_OFFSET + + .equ TIM17_BDTR, TIM17_BASE + TIM_BDTR_OFFSET + + .equ TIM17_DTR2, TIM17_BASE + TIM_DTR2_OFFSET + + .equ TIM17_TISEL, TIM17_BASE + TIM_TISEL_OFFSET + .equ TIM17_AF1, TIM17_BASE + TIM_AF1_OFFSET + .equ TIM17_AF2, TIM17_BASE + TIM_AF2_OFFSET + .equ TIM17_OR1, TIM17_BASE + TIM_OR1_OFFSET + + .equ TIM17_DCR, TIM17_BASE + TIM_DCR_OFFSET + .equ TIM17_DMAR, TIM17_BASE + TIM_DMAR_OFFSET + +#----------------------------------------------------------------------------------------# +# Reset and Clock Control +# +# address space: 0x4002_1000 .. 0x4002_13FF +#----------------------------------------------------------------------------------------# + + .equ RCC_BASE, AHB1_BASE + 0x1000 + + .equ RCC_CR, RCC_BASE + 0x00 + .equ RCC_ICSCR, RCC_BASE + 0x04 + .equ RCC_CFGR, RCC_BASE + 0x08 + .equ RCC_PLLCFGR, RCC_BASE + 0x0C + + .equ RCC_CIER, RCC_BASE + 0x18 + .equ RCC_CIFR, RCC_BASE + 0x1C + .equ RCC_CICR, RCC_BASE + 0x20 + + .equ RCC_AHB1RSTR, RCC_BASE + 0x28 + .equ RCC_AHB2RSTR, RCC_BASE + 0x2C + .equ RCC_AHB3RSTR, RCC_BASE + 0x30 + + .equ RCC_APB1RSTR1, RCC_BASE + 0x38 + .equ RCC_APB1RSTR2, RCC_BASE + 0x3C + .equ RCC_APB2RSTR, RCC_BASE + 0x40 + + .equ RCC_AHB1ENR, RCC_BASE + 0x48 + .equ RCC_AHB2ENR, RCC_BASE + 0x4C + .equ RCC_AHB3ENR, RCC_BASE + 0x50 + + .equ RCC_APB1ENR1, RCC_BASE + 0x58 + .equ RCC_APB1ENR2, RCC_BASE + 0x5C + .equ RCC_APB2ENR, RCC_BASE + 0x60 + + .equ RCC_AHB1SMENR, RCC_BASE + 0x68 + .equ RCC_AHB2SMENR, RCC_BASE + 0x6C + .equ RCC_AHB3SMENR, RCC_BASE + 0x70 + + .equ RCC_APB1SMENR1, RCC_BASE + 0x78 + .equ RCC_APB1SMENR2, RCC_BASE + 0x7C + .equ RCC_APB2SMENR, RCC_BASE + 0x80 + + .equ RCC_CCIPR, RCC_BASE + 0x88 + + .equ RCC_BDCR, RCC_BASE + 0x90 + .equ RCC_CSR, RCC_BASE + 0x94 + .equ RCC_CRRCR, RCC_BASE + 0x98 + .equ RCC_CCIPR2, RCC_BASE + 0x9C + +#----------------------------------------------------------------------------------------# +# GPIO module common configuration +# +# address space: 0x4800_0000 .. 0x4800_1FFF +#----------------------------------------------------------------------------------------# + + .equ GPIO_BASE, AHB2_BASE + + .equ GPIO_MODER_OFFSET, 0x00 + .equ GPIO_OTYPER_OFFSET, 0x04 + .equ GPIO_OSPEEDR_OFFSET, 0x08 + .equ GPIO_PUPDR_OFFSET, 0x0C + .equ GPIO_IDR_OFFSET, 0x10 + .equ GPIO_ODR_OFFSET, 0x14 + .equ GPIO_BSRR_OFFSET, 0x18 + .equ GPIO_LCKR_OFFSET, 0x1C + .equ GPIO_AFRL_OFFSET, 0x20 + .equ GPIO_AFRH_OFFSET, 0x24 + .equ GPIO_BRR_OFFSET, 0x28 + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # + +#--- Port A GPIO configuration / address space: 0x4800_0000 .. 0x4800_03FF + + .equ GPIOA_BASE, GPIO_BASE + + .equ GPIOA_MODER, GPIOA_BASE + GPIO_MODER_OFFSET + .equ GPIOA_OTYPER, GPIOA_BASE + GPIO_OTYPER_OFFSET + .equ GPIOA_OSPEEDR, GPIOA_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOA_PUPDR, GPIOA_BASE + GPIO_PUPDR_OFFSET + .equ GPIOA_IDR, GPIOA_BASE + GPIO_IDR_OFFSET + .equ GPIOA_ODR, GPIOA_BASE + GPIO_ODR_OFFSET + .equ GPIOA_BSRR, GPIOA_BASE + GPIO_BSRR_OFFSET + .equ GPIOA_LCKR, GPIOA_BASE + GPIO_LCKR_OFFSET + .equ GPIOA_AFRL, GPIOA_BASE + GPIO_AFRL_OFFSET + .equ GPIOA_AFRH, GPIOA_BASE + GPIO_AFRH_OFFSET + .equ GPIOA_BRR, GPIOA_BASE + GPIO_BRR_OFFSET + +#--- Port B GPIO configuration / address space: 0x4800_0400 .. 0x4800_07FF + + .equ GPIOB_BASE, GPIO_BASE + 0x400 + + .equ GPIOB_MODER, GPIOB_BASE + GPIO_MODER_OFFSET + .equ GPIOB_OTYPER, GPIOB_BASE + GPIO_OTYPER_OFFSET + .equ GPIOB_OSPEEDR, GPIOB_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOB_PUPDR, GPIOB_BASE + GPIO_PUPDR_OFFSET + .equ GPIOB_IDR, GPIOB_BASE + GPIO_IDR_OFFSET + .equ GPIOB_ODR, GPIOB_BASE + GPIO_ODR_OFFSET + .equ GPIOB_BSRR, GPIOB_BASE + GPIO_BSRR_OFFSET + .equ GPIOB_LCKR, GPIOB_BASE + GPIO_LCKR_OFFSET + .equ GPIOB_AFRL, GPIOB_BASE + GPIO_AFRL_OFFSET + .equ GPIOB_AFRH, GPIOB_BASE + GPIO_AFRH_OFFSET + .equ GPIOB_BRR, GPIOB_BASE + GPIO_BRR_OFFSET + +#--- Port C GPIO configuration / address space: 0x4800_0800 .. 0x4800_0BFF + + .equ GPIOC_BASE, GPIO_BASE + 0x800 + + .equ GPIOC_MODER, GPIOC_BASE + GPIO_MODER_OFFSET + .equ GPIOC_OTYPER, GPIOC_BASE + GPIO_OTYPER_OFFSET + .equ GPIOC_OSPEEDR, GPIOC_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOC_PUPDR, GPIOC_BASE + GPIO_PUPDR_OFFSET + .equ GPIOC_IDR, GPIOC_BASE + GPIO_IDR_OFFSET + .equ GPIOC_ODR, GPIOC_BASE + GPIO_ODR_OFFSET + .equ GPIOC_BSRR, GPIOC_BASE + GPIO_BSRR_OFFSET + .equ GPIOC_LCKR, GPIOC_BASE + GPIO_LCKR_OFFSET + .equ GPIOC_AFRL, GPIOC_BASE + GPIO_AFRL_OFFSET + .equ GPIOC_AFRH, GPIOC_BASE + GPIO_AFRH_OFFSET + .equ GPIOC_BRR, GPIOC_BASE + GPIO_BRR_OFFSET + +#--- Port D GPIO configuration / address space: 0x4800_0C00 .. 0x4800_0FFF + + .equ GPIOD_BASE, GPIO_BASE + 0xC00 + + .equ GPIOD_MODER, GPIOD_BASE + GPIO_MODER_OFFSET + .equ GPIOD_OTYPER, GPIOD_BASE + GPIO_OTYPER_OFFSET + .equ GPIOD_OSPEEDR, GPIOD_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOD_PUPDR, GPIOD_BASE + GPIO_PUPDR_OFFSET + .equ GPIOD_IDR, GPIOD_BASE + GPIO_IDR_OFFSET + .equ GPIOD_ODR, GPIOD_BASE + GPIO_ODR_OFFSET + .equ GPIOD_BSRR, GPIOD_BASE + GPIO_BSRR_OFFSET + .equ GPIOD_LCKR, GPIOD_BASE + GPIO_LCKR_OFFSET + .equ GPIOD_AFRL, GPIOD_BASE + GPIO_AFRL_OFFSET + .equ GPIOD_AFRH, GPIOD_BASE + GPIO_AFRH_OFFSET + .equ GPIOD_BRR, GPIOD_BASE + GPIO_BRR_OFFSET + +#--- Port E GPIO configuration / address space: 0x4800_1000 .. 0x4800_13FF + + .equ GPIOE_BASE, GPIO_BASE + 0x1000 + + .equ GPIOE_MODER, GPIOE_BASE + GPIO_MODER_OFFSET + .equ GPIOE_OTYPER, GPIOE_BASE + GPIO_OTYPER_OFFSET + .equ GPIOE_OSPEEDR, GPIOE_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOE_PUPDR, GPIOE_BASE + GPIO_PUPDR_OFFSET + .equ GPIOE_IDR, GPIOE_BASE + GPIO_IDR_OFFSET + .equ GPIOE_ODR, GPIOE_BASE + GPIO_ODR_OFFSET + .equ GPIOE_BSRR, GPIOE_BASE + GPIO_BSRR_OFFSET + .equ GPIOE_LCKR, GPIOE_BASE + GPIO_LCKR_OFFSET + .equ GPIOE_AFRL, GPIOE_BASE + GPIO_AFRL_OFFSET + .equ GPIOE_AFRH, GPIOE_BASE + GPIO_AFRH_OFFSET + .equ GPIOE_BRR, GPIOE_BASE + GPIO_BRR_OFFSET + +#--- Port F GPIO configuration / address space: 0x4800_1400 .. 0x4800_17FF + + .equ GPIOF_BASE, GPIO_BASE + 0x1400 + + .equ GPIOF_MODER, GPIOF_BASE + GPIO_MODER_OFFSET + .equ GPIOF_OTYPER, GPIOF_BASE + GPIO_OTYPER_OFFSET + .equ GPIOF_OSPEEDR, GPIOF_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOF_PUPDR, GPIOF_BASE + GPIO_PUPDR_OFFSET + .equ GPIOF_IDR, GPIOF_BASE + GPIO_IDR_OFFSET + .equ GPIOF_ODR, GPIOF_BASE + GPIO_ODR_OFFSET + .equ GPIOF_BSRR, GPIOF_BASE + GPIO_BSRR_OFFSET + .equ GPIOF_LCKR, GPIOF_BASE + GPIO_LCKR_OFFSET + .equ GPIOF_AFRL, GPIOF_BASE + GPIO_AFRL_OFFSET + .equ GPIOF_AFRH, GPIOF_BASE + GPIO_AFRH_OFFSET + .equ GPIOF_BRR, GPIOF_BASE + GPIO_BRR_OFFSET + +#--- Port G GPIO configuration / address space: 0x4800_1800 .. 0x4800_1BFF + + .equ GPIOG_BASE, GPIO_BASE + 0x1800 + + .equ GPIOG_MODER, GPIOG_BASE + GPIO_MODER_OFFSET + .equ GPIOG_OTYPER, GPIOG_BASE + GPIO_OTYPER_OFFSET + .equ GPIOG_OSPEEDR, GPIOG_BASE + GPIO_OSPEEDR_OFFSET + .equ GPIOG_PUPDR, GPIOG_BASE + GPIO_PUPDR_OFFSET + .equ GPIOG_IDR, GPIOG_BASE + GPIO_IDR_OFFSET + .equ GPIOG_ODR, GPIOG_BASE + GPIO_ODR_OFFSET + .equ GPIOG_BSRR, GPIOG_BASE + GPIO_BSRR_OFFSET + .equ GPIOG_LCKR, GPIOG_BASE + GPIO_LCKR_OFFSET + .equ GPIOG_AFRL, GPIOG_BASE + GPIO_AFRL_OFFSET + .equ GPIOG_AFRH, GPIOG_BASE + GPIO_AFRH_OFFSET + .equ GPIOG_BRR, GPIOG_BASE + GPIO_BRR_OFFSET + +#----------------------------------------------------------------------------------------# +# System Control Space +# +# address space: 0xE000_E000 .. 0xE000_EFFF +#----------------------------------------------------------------------------------------# + + .equ SCS_BASE, PPB_BASE + 0xE000 + +#----------------------------------------------------------------------------------------# +# System Timer (SysTick) +# +# address space: 0xE000_E010 .. 0xE000_E01F +#----------------------------------------------------------------------------------------# + + .equ STK_BASE, SCS_BASE + 10 // 0xE000_E010 + + .equ STK_CTRL, SCS_BASE + 0x00 + .equ STK_LOAD, SCS_BASE + 0x04 + .equ STK_VAL, SCS_BASE + 0x08 + .equ STK_CALIB, SCS_BASE + 0x0C + +#----------------------------------------------------------------------------------------# +# Nested Vector Interrupt Controller +# +# address space: 0xE000_E100 .. 0xE000_E4EF +#----------------------------------------------------------------------------------------# + + .equ NVIC_BASE, SCS_BASE + 0x100 // 0xE000_E100 + + .equ NVIC_ISER0, NVIC_BASE + 0x00 + .equ NVIC_ISER1, NVIC_BASE + 0x04 + .equ NVIC_ISER2, NVIC_BASE + 0x08 + .equ NVIC_ISER3, NVIC_BASE + 0x0C + + .equ NVIC_ICER0, NVIC_BASE + 0x80 + .equ NVIC_ICER1, NVIC_BASE + 0x84 + .equ NVIC_ICER2, NVIC_BASE + 0x88 + .equ NVIC_ICER3, NVIC_BASE + 0x8C + + .equ NVIC_ISPR0, NVIC_BASE + 0x100 + .equ NVIC_ISPR1, NVIC_BASE + 0x104 + .equ NVIC_ISPR2, NVIC_BASE + 0x108 + .equ NVIC_ISPR3, NVIC_BASE + 0x10C + + .equ NVIC_ICPR0, NVIC_BASE + 0x180 + .equ NVIC_ICPR1, NVIC_BASE + 0x184 + .equ NVIC_ICPR2, NVIC_BASE + 0x188 + .equ NVIC_ICPR3, NVIC_BASE + 0x18C + + .equ NVIC_IABR0, NVIC_BASE + 0x200 + .equ NVIC_IABR1, NVIC_BASE + 0x204 + .equ NVIC_IABR2, NVIC_BASE + 0x208 + .equ NVIC_IABR3, NVIC_BASE + 0x20C + + .equ NVIC_IPR0, NVIC_BASE + 0x300 + .equ NVIC_IPR1, NVIC_BASE + 0x304 + .equ NVIC_IPR2, NVIC_BASE + 0x308 + .equ NVIC_IPR3, NVIC_BASE + 0x30C + .equ NVIC_IPR4, NVIC_BASE + 0x310 + .equ NVIC_IPR5, NVIC_BASE + 0x314 + .equ NVIC_IPR6, NVIC_BASE + 0x318 + .equ NVIC_IPR7, NVIC_BASE + 0x31C + .equ NVIC_IPR8, NVIC_BASE + 0x320 + .equ NVIC_IPR9, NVIC_BASE + 0x324 + .equ NVIC_IPR10, NVIC_BASE + 0x328 + .equ NVIC_IPR11, NVIC_BASE + 0x32C + .equ NVIC_IPR12, NVIC_BASE + 0x330 + .equ NVIC_IPR13, NVIC_BASE + 0x334 + .equ NVIC_IPR14, NVIC_BASE + 0x338 + .equ NVIC_IPR15, NVIC_BASE + 0x33C + .equ NVIC_IPR16, NVIC_BASE + 0x340 + .equ NVIC_IPR17, NVIC_BASE + 0x344 + .equ NVIC_IPR18, NVIC_BASE + 0x348 + .equ NVIC_IPR19, NVIC_BASE + 0x34C + .equ NVIC_IPR20, NVIC_BASE + 0x350 + .equ NVIC_IPR21, NVIC_BASE + 0x354 + .equ NVIC_IPR22, NVIC_BASE + 0x358 + .equ NVIC_IPR23, NVIC_BASE + 0x35C + .equ NVIC_IPR24, NVIC_BASE + 0x360 + .equ NVIC_IPR25, NVIC_BASE + 0x364 + + .equ STIR, NVIC_BASE + 0xE00 + +#----------------------------------------------------------------------------------------# +# MCU Debug Component +# +# address space: 0xE004_2000 .. 0xE004_2013 +#----------------------------------------------------------------------------------------# + + .equ DBGMCU_BASE, PPB_BASE + 0x42000 + + .equ DBGMCU_IDCODE, DBGMCU_BASE + 0x00 + .equ DBGMCU_CR, DBGMCU_BASE + 0x04 + .equ DBGMCU_APB1FZR1, DBGMCU_BASE + 0x08 + .equ DBGMCU_APB1FZR2, DBGMCU_BASE + 0x0C + .equ DBGMCU_APB2DZR, DBGMCU_BASE + 0x10 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b4/f0b45aa6f82c001115858a4760126e8b b/.metadata/.plugins/org.eclipse.core.resources/.history/b4/f0b45aa6f82c001115858a4760126e8b new file mode 100644 index 0000000..c6da3cc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b4/f0b45aa6f82c001115858a4760126e8b @@ -0,0 +1,36 @@ +/* + * sketch.c + * + * Created on: Mar 18, 2026 + * Author: tobii + */ +int reihenfolge[6] = {0, 1, 2, 3, 2, 1}; + +int main(){ + while(1){ + while(/*schalter nicht gedrückt*/){} + delay(10); + while(/*schalter losgelassen*/){} + delay(150); + + int aktiv = 1; + while(aktiv){ + for(int i; i < reihenfolge.length - 1 && aktiv = 1; i ++){ + //alle LED einschalten + if(i = 0){/*alles bis auf LED0 auschalten*/} + if(i = 1){/*..*/} + //... + for(int zähler = 0; zähler < 333 && aktiv == 1; zähler++){ + if(/*schalter gerückt*/){ + aktiv = 0; + break; + } + else{ + delay(1); + } + } + while(/*Taster gedrückt*/){} + } + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e3/303306b5f82c001115858a4760126e8b b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/303306b5f82c001115858a4760126e8b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task1/.indexes/c4/history.index new file mode 100644 index 0000000000000000000000000000000000000000..f2f9ef956454b6ce75451e003f716c02754de8b8 GIT binary patch literal 70 zcmZQ#U|?Wm;METfUgkVP))5UNKGzDO;G?cjEaE1 r%goPHNJ>ou2Bdi_@% literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task2/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/task2/.indexes/properties.index index 17d25700db2178416cfe9e374dce23d980cc1598..82844e3f6771e510377e14aac23f2ad767cc49a8 100644 GIT binary patch delta 14 VcmdnV@`{<2k%57MX(Q`XMgSUI15W?| delta 40 tcmaFGypx5Mk%57Mc_ZsnMll9n{gTAuY@_&+{G?31Vg^Q#6vIS+O901V2~Yq4 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/task2/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/task2/.markers deleted file mode 100644 index e620ef2905d7c9531e41a3f9f7c58aeb11c77817..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmcgpJxjzu5S?5KK~b;})Iw4mip}QkK*1}uvG8nE5JbXeGvtO%cH@2!{4o~R{z*4? zaK;0#wAdYX=gqu%ZvY^Mz0`3lC(D~z0Eoir!q)&s+LR1MMU6!!3dah}eaVD2;dw_2 zuMKk9Xi{#*jYI=GaK51?U%?;W8yqZnPB-AGRDtS7d*znkU4w5Pt;3>Y@BTjFq~D-7 zAS#|$SVR$=^$}|_NLk0LYQ+)3b`@IR`#MLnB-pCaT3%ud!;UriQ87&x<}sVRbVbu- zd^vuFgVm4^+8cqlToqNQeop7Q#?>3*Cl$g~HX~`Y&~@V-8i!)8NT!Y9(vkFa zS__xuNLj0mv<(-SO)lECr5*JJ_AHT6l&%Ky4>bK}ili~wc03Ss~N delta 21 dcmcc2dYN^C8e`Q&^|h>XRW~ZiQ=A;6p7=ai> ztzlx2$uCOROHIznEGSOZOHL`#OU^G!)hj5jUp7bm6zRce8pV5Oj?rKONt znp2Wlkdvwa)RmrEqEL`nQj%JfSFER?5L}X9pvST6l&%Ky4JVdKqTi~wX`3L5|b delta 21 dcmcc2dYN^C8e{cD^|h>XRW~ZiQ=A;6p7=ai> ztz}}6$uCOROHIznEGSOZOHL`#OU^G!)hj5jUp7bm6zRce8pV5Oj?rKONt znp2Wlkdvwa)RmrEqEL`nQj%JfSFER?5L}X9pvSb5FQewfIO&N?H!?Cz4rg?oyq3{oqOXk*S59VLs$XetQfd(s0|SFMg9=d9 IWJV?t0K}>fK>z>% delta 54 zcmbQrGL>b5@8lVbHjJ7R-%C%-+{nl@S(?#RfGa06FV(L!Hz~DtzPG3F%p+dkv diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/67.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/69.tree similarity index 64% rename from .metadata/.plugins/org.eclipse.core.resources/.root/67.tree rename to .metadata/.plugins/org.eclipse.core.resources/.root/69.tree index 4e78ca4668fc7e4b5ae1a7860b5b6f9d3f51f332..05eeedb8f69e7e8d0317302c353deb47849cacc6 100644 GIT binary patch delta 608 zcmexle%?@qg_((o0SwfoAvBC+TsKihv7U*6wIs1P+lav^zbIWVH904kF*_A11~v(*-GUhH!O4kvd8tLt`FUxX=}sVn zc~Xl&rZBQFGcYl3bb8Im$TnGzNqzDJanZ?HOwyBoGi!m_n^>eLyR+@t+{eC}m62t# z74Ot~1!WU1h+ovjAT)?n7iVDL1p7!YH7AXMkwJhF=zqq!K-IiZ)j$<6pf16{zynd8 zlUSOUoB`Cp0MpQQ1)_{m3rIIW*{fm3*X!jJmjIOu!IYZ_L6m^ZgaLI)m~von7NDr+ zhpGmufB|(W1_pMBYw}TC4)Z5a9tPBPfzb(7Tntn!0&#}?*Mrj`O4O#nlrk`=P2K#9 p?+cF~$a9R0&=_ZCMD;pQf(7Q6+)jvQu-EIM>{UQ(fcoLa0st)>a$*1g delta 1438 zcmZ{k%Wu;_5XQ$&Li3_+BBTmY32?NjgoII2ByPN4>46Ip*Wx&7sp>$49YRmO^auy! zYY`Gh1QMv+xpIPk01D#DB?@m^31&R&ja`BdJ8Stj-+nuu-M6*jiP>~Y*CBkWX^zpT zJ$*2HI0Krl!Hd_QH7yss)aP(~ryuhRp5?CAOnc3CZh;2V8fs_{i`@fTIId6g3LzU>bdWU-822+9H)J8?egzsj;CsT`dF;5w3{*bd@$ zPIDfO0{Mxno^{*n1?5!5FTji&zI7K}uQOj?K0aStZF+ajxYI%74J(j2W%LjHFL%6a zTv@q32at1n%~tS9F9%mrGybHz=GvCyxc^qQ@q-r^XF1X+P#~{Tl3sr@W}v^wD|N&O zA7jsFN#*YXR#nL-tE%jr=XGcl$QP0Cv^!(`Z!t(v^ayOltV|&HJ~u!9w8jT!D%4A| zCn|eJbkh7B!z8D?U#8l!mtD>yBbPXfMuBv;V+GgtO$Ghb6FKitH z5!4Q4o>%iyv~DIGBaJ7O9zoqu3a3DHk@iuRb!QksD9WA4T%M z>4aM>N4T-fh@hhz=@%m0hw^ZGX{nOY!>8#0WRFCdeuuDHc+PL%m WJqyEgjQ4n6dc1kR@UEudA-N_%ASSO}vahRDIn3!4^8BcsDH*t%`WGm(fM$5?! zOg2brW04h2{=?V|R$;+!Y^Y#pXk}z(WoV+{>>50|hEWS>>LMgrV=Ge&D+4oRSs_cV V0};PJEAL?tkqZ3WQ@y+V7y#$OFarPp delta 138 zcmdnNxrBX!HoJ+Hp`n$b#pDV`-N_%ASSO}vahRH0m|IvHm`rYDl$fl*qBmKENn>&; ziy@==JX;uRJPx!BlQ_y;77UAUYvhHOm8?x`V_wdvIO02>8M z(ZVVs+W0T5{Q*Hi0^;m5q;NRy=J9HV<1)3e7R4mKbjoyy|KpUoZ1RB2xSl68SQ$!vddDHm+_x zvbwcob!*A$X)qg=hNUL7Er>=Jw50Y+Qd0F^p*s*!%@JB-T;Now;kUq$6ZT-D((4hQ zGK|p-%pT$E#nIY>x)=A%+z&!-U+3@$qzCl0ML%gYAdI-@2&F|uk5E6{3wD8kG~svl zN5Sw4e7jn|v*{`06Necngh*+`y|8F#Xaa2x0|+DTrQQ{fG$#&j+Jv|fv6ynNJR(Mt z(`WvA)79NmgM^X5cvO=m-YnM$g9VOev#lX<; zjo&Ma&4Y0}78A)^O+q^q4EV8zZ&OPAl6Tv%8TqM(Rc-Y6jSxv4Ij9+- zSqBho5~i9AYWc!U)hU;tit%x(V(aJ^V&ZjpC-rzih(4@%y2~sZ#GqKns!T#gwL)pf zoaB4`JNhttA0|n$J7jZUl+W<85d8|y&4in^WS{H!5R*+V3(*_77;>^N2ttHSKG=vG zRnM*wgb15_$dy4s<^&=&z_7^`sLW*OR>Rt?-75wI8s>tqJerw0GMX;s!?R}5vggSe zUD@O#v6ZhW`J(m(o=w6|>ksAw&-MMFOAWc~dPAa{d;&#@T+ABs<^qIG!uD+ArXVc@ z5jOb@Y8XZDs3EHXhE2jMr+_aP%U$GOAq*il3G1BD4yO348rB;DzvRm{Y)W6$FaT`w z6&@p!(jlC60KtZhAXUkqE_z|$_%lHW=PnkVyKjWWv5WD!yC$g1SW(mP@T~5R!HH;0 zwEq4gpW#37PS9AU1h>f^k;ILkaan6Q;$DxO8+0@9cbGC literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi index 977dc6b..bb79319 100644 --- a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi +++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -1,8 +1,8 @@ - - + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration - + @@ -11,9 +11,9 @@ topLevel shellMaximized - - - + + + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 persp.actionSet:org.eclipse.ui.cheatsheets.actionSet @@ -67,71 +67,72 @@ persp.viewSC:com.st.stm32cube.ide.mcu.buildanalyzer.view persp.viewSC:com.st.stm32cube.ide.mcu.stackanalyzer.stackanalyzer.view persp.viewSC:com.st.stm32cube.ide.mcu.sfrview - - - active - + + + View categoryTag:General - + View categoryTag:C/C++ - + View categoryTag:General - - - - - - + + + + + + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + General - + View categoryTag:C/C++ - + View categoryTag:C/C++ - + View categoryTag:General - - + + active + noFocus + View categoryTag:General - + View categoryTag:General - + View categoryTag:Make @@ -139,7 +140,7 @@ - + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 persp.actionSet:org.eclipse.ui.cheatsheets.actionSet @@ -193,121 +194,121 @@ persp.editorOnboardingCommand:Step Over$$$F6 persp.editorOnboardingCommand:Step Return$$$F7 persp.editorOnboardingCommand:Resume$$$F8 - - - + + + org.eclipse.e4.primaryNavigationStack - + View categoryTag:Debug - + View categoryTag:General - - + + View categoryTag:Debug - - - - + + + + org.eclipse.e4.secondaryNavigationStack - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + Debug noFocus - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug @@ -316,2193 +317,2163 @@ - - + + View categoryTag:Help - + View categoryTag:General - + View categoryTag:Help - + View categoryTag:Help - + View categoryTag:General - + ViewMenu menuContribution:menu - + - + View categoryTag:Help - - + + org.eclipse.e4.primaryDataStack EditorStack - - + + Editor removeOnHide org.eclipse.cdt.ui.editor.asm.AsmEditor - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.CEditor - - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.asm.AsmEditor - - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.asm.AsmEditor - - - - Editor - removeOnHide - org.eclipse.ui.genericeditor.GenericEditor - - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.asm.AsmEditor - - - + + Editor removeOnHide org.eclipse.cdt.ui.editor.asm.AsmEditor - + View categoryTag:General - active - + ViewMenu menuContribution:menu - + - + View categoryTag:C/C++ - + View categoryTag:General - + View categoryTag:General - + ViewMenu menuContribution:menu - + - + View categoryTag:General - + ViewMenu menuContribution:menu - + - + View categoryTag:General - + ViewMenu menuContribution:menu - + - + View categoryTag:General - + ViewMenu menuContribution:menu - + - + View categoryTag:General - + active + ViewMenu menuContribution:menu - + - + View categoryTag:General - + View categoryTag:Make - + ViewMenu menuContribution:menu - + - + View categoryTag:C/C++ - + ViewMenu menuContribution:menu - + - + View categoryTag:C/C++ - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:General - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:General - + View categoryTag:Debug - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug activeOnClose - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:General - + ViewMenu menuContribution:menu - + - - + + toolbarSeparator - + - + Draggable - + - + toolbarSeparator - + - + Draggable - - + + - + toolbarSeparator - + - + Draggable - + Draggable - + Draggable - + Draggable - + toolbarSeparator - + - + Draggable - + - + Draggable - + Draggable - + toolbarSeparator - + - + toolbarSeparator - + - + Draggable - + stretch SHOW_RESTORE_MENU - + Draggable HIDEABLE SHOW_RESTORE_MENU - - + + stretch - + Draggable - + Draggable - - + + TrimStack Draggable - + TrimStack Draggable - + TrimStack Draggable - - + + TrimStack Draggable - + TrimStack Draggable - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + platform:gtk - + platform:gtk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + type:user - + type:user - - + + - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor removeOnHide - + View categoryTag:Device Configuration Tool - + View categoryTag:C/C++ - + View categoryTag:SWV - + View categoryTag:SWV - + View categoryTag:SWV - + View categoryTag:SWV - + View categoryTag:SWV - + View categoryTag:SWV - + View categoryTag:Debug - + View categoryTag:FreeRTOS - + View categoryTag:FreeRTOS - + View categoryTag:FreeRTOS - + View categoryTag:FreeRTOS - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:C/C++ - + View categoryTag:ThreadX - + View categoryTag:ThreadX - + View categoryTag:ThreadX - + View categoryTag:ThreadX - + View categoryTag:ThreadX - + View categoryTag:ThreadX - + View categoryTag:ThreadX - + View categoryTag:ThreadX - + View categoryTag:C/C++ - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Make - + View categoryTag:C/C++ - + View categoryTag:C/C++ - + View categoryTag:C/C++ - + View categoryTag:C/C++ - + View categoryTag:C/C++ - + View categoryTag:General - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Help - + View categoryTag:Connections - + View categoryTag:General - + View categoryTag:Version Control (Team) - + View categoryTag:Version Control (Team) - + View categoryTag:General - + View categoryTag:General - + View categoryTag:Help - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:C/C++ - + View categoryTag:Debug - + View categoryTag:Other - - + + glue move_after:PerspectiveSpacer SHOW_RESTORE_MENU - + move_after:Spacer Glue HIDEABLE SHOW_RESTORE_MENU - + glue move_after:SearchField SHOW_RESTORE_MENU - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + - - + + - - - - - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/13/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/13/refactorings.history new file mode 100644 index 0000000..2593818 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/13/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/13/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/13/refactorings.index new file mode 100644 index 0000000..7f86c8b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2026/3/13/refactorings.index @@ -0,0 +1 @@ +1774360637158 Delete resource 'task2/task2_tobi.s' diff --git a/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml index 0bed10e..5bd5ea0 100644 --- a/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml +++ b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml @@ -1,15 +1,15 @@ - -
-
- - -
-
- -
-
- - - -
-
+ +
+
+ + +
+
+ +
+
+ + + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml index c503e2b..04862e5 100644 --- a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -17,7 +17,7 @@
- + diff --git a/.metadata/version.ini b/.metadata/version.ini index 4ec6510..d9c1224 100644 --- a/.metadata/version.ini +++ b/.metadata/version.ini @@ -1,3 +1,3 @@ -#Tue Mar 24 14:11:27 CET 2026 +#Tue Mar 31 13:41:52 CEST 2026 org.eclipse.core.runtime=2 org.eclipse.platform=4.30.0.v20231201-0110 diff --git a/task1/Debug/Src/sketch.cyclo b/task1/Debug/Src/sketch.cyclo new file mode 100644 index 0000000..e69de29 diff --git a/task1/Debug/Src/sketch.d b/task1/Debug/Src/sketch.d new file mode 100644 index 0000000..10e19f4 --- /dev/null +++ b/task1/Debug/Src/sketch.d @@ -0,0 +1 @@ +Src/sketch.o: ../Src/sketch.c diff --git a/task1/Debug/Src/sketch.o b/task1/Debug/Src/sketch.o new file mode 100644 index 0000000000000000000000000000000000000000..1f91cccd61bd88f6fd6db0db3d90a4cfd9f97394 GIT binary patch literal 19940 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⪼cYC`%`MMN>M5`i;&`aiKPF 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 H>$LlS40zE+ literal 0 HcmV?d00001 diff --git a/task1/Debug/Src/sketch.su b/task1/Debug/Src/sketch.su new file mode 100644 index 0000000..e69de29 diff --git a/task1/Debug/Src/subdir.mk b/task1/Debug/Src/subdir.mk index b942426..94c896a 100644 --- a/task1/Debug/Src/subdir.mk +++ b/task1/Debug/Src/subdir.mk @@ -5,14 +5,17 @@ # Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ +../Src/sketch.c \ ../Src/task1.c \ ../Src/task1_it.c OBJS += \ +./Src/sketch.o \ ./Src/task1.o \ ./Src/task1_it.o C_DEPS += \ +./Src/sketch.d \ ./Src/task1.d \ ./Src/task1_it.d @@ -24,7 +27,7 @@ Src/%.o Src/%.su Src/%.cyclo: ../Src/%.c Src/subdir.mk clean: clean-Src clean-Src: - -$(RM) ./Src/task1.cyclo ./Src/task1.d ./Src/task1.o ./Src/task1.su ./Src/task1_it.cyclo ./Src/task1_it.d ./Src/task1_it.o ./Src/task1_it.su + -$(RM) ./Src/sketch.cyclo ./Src/sketch.d ./Src/sketch.o ./Src/sketch.su ./Src/task1.cyclo ./Src/task1.d ./Src/task1.o ./Src/task1.su ./Src/task1_it.cyclo ./Src/task1_it.d ./Src/task1_it.o ./Src/task1_it.su .PHONY: clean-Src diff --git a/task1/Debug/Src/task1.cyclo b/task1/Debug/Src/task1.cyclo new file mode 100644 index 0000000..e69de29 diff --git a/task1/Debug/Src/task1.d b/task1/Debug/Src/task1.d new file mode 100644 index 0000000..88b76a7 --- /dev/null +++ b/task1/Debug/Src/task1.d @@ -0,0 +1,11 @@ +Src/task1.o: ../Src/task1.c ../Inc/stm32g431xx.h ../Inc/core_cm4.h \ + ../Inc/cmsis_version.h ../Inc/cmsis_compiler.h ../Inc/cmsis_gcc.h \ + ../Inc/mpu_armv7.h ../Inc/system_stm32g4xx.h ../Inc/STefi-Light.h +../Inc/stm32g431xx.h: +../Inc/core_cm4.h: +../Inc/cmsis_version.h: +../Inc/cmsis_compiler.h: +../Inc/cmsis_gcc.h: +../Inc/mpu_armv7.h: +../Inc/system_stm32g4xx.h: +../Inc/STefi-Light.h: diff --git a/task1/Debug/Src/task1.su b/task1/Debug/Src/task1.su new file mode 100644 index 0000000..e69de29 diff --git a/task1/Debug/Src/task1_it.cyclo b/task1/Debug/Src/task1_it.cyclo new file mode 100644 index 0000000..98e7272 --- /dev/null +++ b/task1/Debug/Src/task1_it.cyclo @@ -0,0 +1,2 @@ +../Src/task1_it.c:56:6:ISR_error 1 +../Src/task1_it.c:76:6:ISR_default 1 diff --git a/task1/Debug/Src/task1_it.d b/task1/Debug/Src/task1_it.d new file mode 100644 index 0000000..77538df --- /dev/null +++ b/task1/Debug/Src/task1_it.d @@ -0,0 +1,11 @@ +Src/task1_it.o: ../Src/task1_it.c ../Inc/stm32g431xx.h ../Inc/core_cm4.h \ + ../Inc/cmsis_version.h ../Inc/cmsis_compiler.h ../Inc/cmsis_gcc.h \ + ../Inc/mpu_armv7.h ../Inc/system_stm32g4xx.h ../Inc/STefi-Light.h +../Inc/stm32g431xx.h: +../Inc/core_cm4.h: +../Inc/cmsis_version.h: +../Inc/cmsis_compiler.h: +../Inc/cmsis_gcc.h: +../Inc/mpu_armv7.h: +../Inc/system_stm32g4xx.h: +../Inc/STefi-Light.h: diff --git a/task1/Debug/Src/task1_it.o b/task1/Debug/Src/task1_it.o new file mode 100644 index 0000000000000000000000000000000000000000..21c0e1ec7b0f0d2314cd3a177e7fff6b8958acbb GIT binary patch literal 637952 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≧pP_#v>A^Mzy?zP2xc(J;o*dd&3&7gKdz7 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
PSsQP;hwwf-`#< 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 clMO?}C+{V2;!jnA5uXuw$@E-r*Q^uMb$mew? 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 XAf{jVcimWrLkoia{p%*KjH&y7>i?23 literal 0 HcmV?d00001 diff --git a/task1/Debug/Src/task1_it.su b/task1/Debug/Src/task1_it.su new file mode 100644 index 0000000..e608c86 --- /dev/null +++ b/task1/Debug/Src/task1_it.su @@ -0,0 +1,2 @@ +../Src/task1_it.c:56:6:ISR_error 4 static +../Src/task1_it.c:76:6:ISR_default 4 static diff --git a/task1/Debug/Startup/startup_stm32g431kbtx.d b/task1/Debug/Startup/startup_stm32g431kbtx.d new file mode 100644 index 0000000..11b27a3 --- /dev/null +++ b/task1/Debug/Startup/startup_stm32g431kbtx.d @@ -0,0 +1 @@ +Startup/startup_stm32g431kbtx.o: ../Startup/startup_stm32g431kbtx.s diff --git a/task1/Debug/Startup/startup_stm32g431kbtx.o b/task1/Debug/Startup/startup_stm32g431kbtx.o new file mode 100644 index 0000000000000000000000000000000000000000..c80d4e0333ece4ebc315abc3fa641fa235b7413f GIT binary patch literal 2540 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 literal 0 HcmV?d00001 diff --git a/task1/Debug/Startup/syscalls.su b/task1/Debug/Startup/syscalls.su new file mode 100644 index 0000000..db376b7 --- /dev/null +++ b/task1/Debug/Startup/syscalls.su @@ -0,0 +1,18 @@ +../Startup/syscalls.c:44:6:initialise_monitor_handles 4 static +../Startup/syscalls.c:48:5:_getpid 4 static +../Startup/syscalls.c:53:5:_kill 16 static +../Startup/syscalls.c:61:6:_exit 16 static +../Startup/syscalls.c:67:27:_read 32 static +../Startup/syscalls.c:80:27:_write 32 static +../Startup/syscalls.c:92:5:_close 16 static +../Startup/syscalls.c:99:5:_fstat 16 static +../Startup/syscalls.c:106:5:_isatty 16 static +../Startup/syscalls.c:112:5:_lseek 24 static +../Startup/syscalls.c:120:5:_open 12 static +../Startup/syscalls.c:128:5:_wait 16 static +../Startup/syscalls.c:135:5:_unlink 16 static +../Startup/syscalls.c:142:5:_times 16 static +../Startup/syscalls.c:148:5:_stat 16 static +../Startup/syscalls.c:155:5:_link 16 static +../Startup/syscalls.c:163:5:_fork 8 static +../Startup/syscalls.c:169:5:_execve 24 static diff --git a/task1/Debug/Startup/sysmem.cyclo b/task1/Debug/Startup/sysmem.cyclo new file mode 100644 index 0000000..4092bc6 --- /dev/null +++ b/task1/Debug/Startup/sysmem.cyclo @@ -0,0 +1 @@ +../Startup/sysmem.c:53:7:_sbrk 3 diff --git a/task1/Debug/Startup/sysmem.d b/task1/Debug/Startup/sysmem.d new file mode 100644 index 0000000..17ffda1 --- /dev/null +++ b/task1/Debug/Startup/sysmem.d @@ -0,0 +1 @@ +Startup/sysmem.o: ../Startup/sysmem.c diff --git a/task1/Debug/Startup/sysmem.o b/task1/Debug/Startup/sysmem.o new file mode 100644 index 0000000000000000000000000000000000000000..c167de85d3d3c6942b093e9d72e663d88c5d8ce1 GIT binary patch literal 47856 zcmdVDd3;=D^*?^^OeWn+OM%jsWhhHq+N85(G64!qlF34|kx9C+IGs!;ZEVw&BwY|u z7G+TuL1YyH*+fJXWfKulmJj0kQ9gWCT=@vNAfhNLD&P0}Jm;CYGg+#y-}euH^Gfdf zF3)|I^PK0L^PK10d*7dGYjR!Ju|L;Y?i7z4=OdqyD}k86a_2PXRJnc>j+fz|X_w=F zh3+2>T&er3fK|F*4P34JAz)bdBfzNcvy2+uj{|FUKLM=M{bPW~>i%)SHM)O1@C4mI z5t!8ddSHX@Hv&_--vn&d{T5)W?waObMD=9 zU;DkqXJyYCJT|*v?UF6dO5bUA*P2Eejft8N9xJ+JC?E)<56zH_cwU zcvI)^--*un*>t3Rd($*c6F6zXrnk2o*mPj+qfO^LitI~%{UCI}aVvOoT41*09Q=j# zjx+aNj)VP@-}H*W;Px@cx8+dB@m;Z)9pY9@y9h*crw0~+?(X!8^FR{Ut$b;JBspV_ zw|m}fe7`Z|Iya4Op8`lhv>3aAKtZ64BnZz4^j6&h zDe%@t$2n%-CnWip|8msw*nOFi?}{D%M|&LSxY?|X?}}|s#pkf&xJNj%W*tAvKNlwt zaQt(RnRV=}x>>CYQ1=)Q4|C12??BXbA7|EK6}*Pw;kkCgqT?2!!ACi~G;O|nh4bBc3(s8WIMcP1>7X7mnFShDJ0~o%#VuRZx`0{Cs&-3H&Ug2%Jn_KyE^?9a z?0~0wtd4UKTf#;-6|&`qq_e+$uoKX0pc^j+%nfqncU=F0m1cKFATZ;cC1~`lX@Ob) z4VwGsOb<-I45QFLb4Fm=rR15JGbL?>+4^VA3iyr%Mg0}C^-N%nH-Vm<>(iZm=E{!$ zKzm}zK7q=gVGR4H`Arhd*(6&!&zv+zU-!@V&zSB_p!*g6Mf>_^EC|f};_1j~&VJ@5 z|J;(KfjNH$g(@o0eEjVXo)0)0LUIM1Es}E&7$o34fjS4ABhUu{=N`zrfYY!qw;M2uQ6kyU z`H`f_HgmsO@_b!dv;ZR_;4GF_+}FbWAxYmR^*>bT&;?oroGTy!1I`Yq!@GmrKOM3? z;AGZw`lgOvOBDLiuxBx=C9ZxgpO(R%@>UGjfG$~r-4^6mLN|Dx0?T*LjVg|;mi z>;dP@jof}lsL=zS3ph_f(gvI#$oA8RaQ`i^V8E%79Bz=Z_80n}3_%ufHVRdv5E=pJ zIjPlA7zZd313ln8ej2xDfn@{EDN@6IrFH)!J^Mn8=kwBQZ%P~gYc|hxNIr4NXP#`2 zmU350+t&!4w{AXxTR_(&r=5loK;fdUD9hw>A^;!?GCwm=Q5@_ zAF3eW+%G+~Tzcd*;rW@u8#Tg>9~b((Px#?|(ieZ5$Gg5eliME)P1Zvy2Ar3KbABed z9VBP&kv{$A3|?J)JhwjKnV(CqO&2=cENz()=G9mgw_D|Elk~-O=~=(DE-rPrR$Bd% z@WW*?3a*v?UrJkE6e`UG5duz1D6r;4?tkZSZfo1P?UMeA3CCuH!XX()KNJewD?D>a znkg5b%5B{-+#WZd+h>Jtzm_u}Ihbd9rLTV`e35J1PhbM#& z4-uO0kNOYhI{-a0w6R%FE!lEax&haJ+=cS|W>l6$8KUp+0<__Va;9O0ZRrL61Y z%x#14!E%t*(pRKK*RJJV&n@Bhe$$(u;r1s-aQmGTxV>>PxBE!nT`x3$pGdZC($cr2*KQR$ zd`Ia2kfga^@(E1my)t3wPu9Eck1$jO!y*w!GeWHeERti77 zOK84XIOKNGJ3kY?y+m5HQcAg3`1vPNw{GF&Z9?;>CH<|CmX*$VQj@olrqVg8f!ix& z|J?Q5k1u11ha%@nXEDZgrPB`HsC3p!FML9H`$x#F()o!{{%Yyjhfm~PdvI^1bGoU6 zv@4P1ncqu~|5{qK4kQjZf0tG~xIgzlApO{ZdR98sLV;sYD_Ame*XcM@>9p4H%)3D0 zN~cL`^)1PHCfZo(TndU+I+sJLS2_3YFvYUNYq4E<0L!XAiqw9|cOe<>W#9AU!Qc8890GXV_g;>)KlrLxkw5v?kW2sK zJB*dP!rzks+~7ahX5IcrGX1HSoPurNJ!Gle1;=1}enk~8Tu|`|G+Ziiz_aYO!`k=3 zcKHdtAi??WGi>Dt-0Mh?i`;Y2Pl1cwL3Y}Q+{K%4^kMgl?4(b)E#$|W++VQxx7>42 z1pLE&fereg?-Lx|AM)Lc4i0?Gw~`dN&ew@@12_5JqJ+BFhblRN$9(sY_nz~e1CToX z%zYj?Rle-D&BcjdyK%x_Tsjs4e|H}sobS8$K)}VmZ9KZ#_mOpgPx^G=JAp%2uf>UA z{7`HU`#>GGN517^yYf$@Y3l4**tWhrAKR1S82eJ}vOKRXPjfULy=FDGA8?=IVZbH6QPTWU z-;?Z}%Y3i0DVO_>B+)+N`+OX5g>M>O0ljM@;*G4KoDA9qt#&DPMMDtnatnx&+F4)4dl- zq-O8`AjVzbN_PXL)m3gc+2{-I!}|dqalcD=+#O}!&$>@zgh^HA|DFZ!f39t_ub=ci z{B;hKBlnP1mwkgG;plIWKUO{bE^MnSLCZks)}yhFyw0H)n{zO>@%OMPiQBn;-+Gi9xZBr4J^LBo=MMnfujq#_0V48R{FpzAnHweZM3TKjpvp zRKQpLcYxqRsafBt#m>A(Ih+>1&Hbu-tpI(_e+PT#dH*Np0)FC;gJS}}@Q2BMulVl* z3k3e){|qbnC;!1q0dM=apd$kR^mo?)&aJqPoPAA2hBd#w;y0}1jTJcxzfV+DatPg2 z@lSTf%@sqe-7OWbu~wg~*mMfu){0JEyRD-BP{8dKYuI0RRQ!%v-&t|r3c#l-e#-v8 ztKtT*WZ=^kpJmFsEB0^*eWv0Il&|+xe31@j>GbAfn!Ofb1J)!09;zxL%#S(<=JGLD=UK(3U5??3*-?7 z*|(k@e)vMR;>b;`+EE>3k7e(WWXq2VV!L99)Hu4GUA)p|QL9{XMAa%1r1}^NwAC#v zE%ZmWIQ(&Rcp&lzvTOXq7$$+*W_Eev7LvN|fzz-(=2=$Y*sht_9=C_}Uh_#-`}ib> zzzH8DQ=T|NW=?*e>&pn(67r5`| z-50vAv6&aSr?8zDyG@Wj5dKG#0v~oiMABU1{x|c!)EyyzT;?uh?w7k~l2jjYKeY;Q zm3s=g^JDJGq{`LqYwYK1+$H4IYu*1k8E~DunuG0ncMi+D!Tl!T>w&0+Zo zcMi#Ole>l$yxAQjm)+)`LrUE4{;URYhr2JSaHsoT-tZ~+;u8S(xR;WkpLH)~uiook zUk`ZD-Is&uA@@Xf(ZlW$?3XXOuW*b$;@(VA^qAYs+n;dHu|sy|)1=nCKjO~Hm2X3a zR<5G(tE{3My0ZGC=vCipdciA0V`xof_^xBHjaM>)ie8Uz<*T6}SuzKCU+l1}uZ9KE(D2|*ne!w2y6Cnqk>%PgZy2yQl z{Q6P%b&~uVciN$VPr9Ebb?|akpEUIL8E;*ay?XV^6up@6K(=OYe%u?0EG~utZVbLG3 z$LscG2dvpZhCE?kR<>~$$A9aa&DeJQlzpAPzg0_Gcq++oa6=H=!(XN-S#bf&sCkvd zJ7EYl3bZ~%qNcZ!A%aMNaly!*I4|+?ySQBUvi&h^PY77J{$0qyXFwU)9!bf zX z90<6`SIf3v?K_YxevR+0;{ezC<}uGZd{d%pa*ZO}&VqNFIm0f+C|1TYY+x@SynV@>^tA}@ttsdpyP&AU; z*_R*e&u7Bb;dpgu^^R>jHxF(fU7Z^qsvaG~pC+kBn(Cq4&g%T0vHZyP?6$Gt;ccVU zo44<*lD(>d;gKpyT^){8N2^Ej+rrh`2Dk6r6OSS9P<154|41wp4@V>6NOZN_wtCxO z-|Ee|-0JMeP}TO~?fI&Fwr_B?WD&-Q&u!b;pZ|}laA`%ghO39Nxh;d+|Nl_a(KAQ? z^Xd7YU&Gbg^Si;jRok=MhaCq*9m)??=Nyc*(Xsyi{6O^(i?Om_R|AQIrLDG~dX$iy6EcI8J#2Zy(t1i9hu z1B07QZiD%JeqaaoQQ|;8JGOH~%14ofx_I}IYTIybtGPEjI+`D01yN|BvS>|VALlb@ z!st#GfNY$A3%>>Bn7_si1UmvX!N9)3)q&ZOKxK7c|4?AziGj+K0)gWLvyKbQULBZ! zLSVs~z|1WH_b}gV2&wh09X*-$){fxvOvdhKGAo=+rZLsf+MaC7G`2QpGQn^yPW84V zGfnlaJvdI_Fuks|F|)2U-CEz43Wjk46^n#|DI4pMUAPB z&hB=Wh74lWbr483@mNhF7LLT?HL-kEG!koy$B@3cp&^s(>1=Op$gFQ@Np@#?GHsm= zYcoyVsZ=n61ah*sBi-8Ek!oc19OT{8*xDV8gbL-gB-5GJj;7X*)}D=$CWG72-0oyY zV=R$LHa0HbF*dRyxLly>_{>Nwfo-YXe*O9EYGb7=2&D~8_pJaBN*x}rYg@^^B=%H zsfNyuj_y=bZ#vZ&42Q`dJtt>c4f_;3X#zHDYpicmE{Rk}A~m7fXrd+oh=juAl28IQ zGF?dq0FMe)BjB91L)ksS<)ee|$qx@0%#5uF9(P_Z`1N!S@3}O zBG0S}X2`?Bp$2V*+fcnAUG-9 z)f|k}I;qB!dpmoA(9*?3(owQ8gHC9J{t1UNsSRDYALKx4Gs4=F$kGhhnkdh9CmUpV zBOO?@x~5w;tZ`Rox^+Wg^uk0)gz9j*H?3@KIA%i=eqB|G-j=nvm^S%oBPkJ-S=P5U z_Ozf3GPa>mdwsgQr*nNnI+N~6_N2-N+R)%=4kK--Z**jAcz13Tf;l^uXSI?L5KXCM zPj7cBQ{RLkm~Ke6K>#GXTYFmCQ$4K>tVanSb#^zVx-(skU71uzV{4MaB?^(kbf9yl zXJc0irwSs8a{(Ea>${U(s9htwp(TjqpkanGL**2uinK6c^B5=8q7mg&m~gc@M)q+Iv^YsrQk*0zEe>Ma(=rJ6lFE!^xA#MH?-@fHWPWyV_m;tJ z`QY*pna+^BWbBYBnv&@3{X*wMn;6IYwK#`bCsiTP)|jph4&{v&DQNYvAu1D9Q%5hC`!P&QlCMzBqC!{o2n4c- z<8IciOGuPyYEMGa2-(;XXiq`m7qw2RwXwTB7>(n;?T`bR-89WI5QVmhkWK}O6RBC@ zq(hCz9HGskZPkEkFmEs)|uF0UegTJ6DuriEvQ0Q(3~P?kllJq831BZMeE9< zVL&snK=T5ll4hAPN^5XIW*|E{1|d2|V;^(C{&Lpw=p_&aHE3AA2fCh|p$D`ZQyWqZ z#-KH9nd(ZnLgRu}LVLnpRkbZ3c8{?!P_8vj%Ik)V(p?R~2(__MNzm#=l@!C&8&{yZ ztc`%fR9kCf5+)cb)YjUOf*j9|4dzh6!R?s9=Q9~ch8E=sH3bwQIsv)#wiL1n$DQ)g zN2V@6Cv-Pln`%#WH>WxpHku|yYMkbd-e5x*gPiVzFihx3G!&1-gH=Ph9Xr?LAj0x{ zs)k}X9>DRyj$N^;(H&L&VWt?^Hk=)+g6Cij_^BT!#H}s+a$DA5%D$^MUp2IH zU`McOb2M1h84AKz(Z2@X3lvy2FtBrbZVc0?s?ogQD9-g~$FkmIP$jpuYUgNna~@Z7 zXXdsI50Oq)@RaP>mftftb|z?Ihq3K*qkGZQGDs2=3<+E_3LLhP@C1*FlD%NR$=pad zT^YCo5)37(&8H?U%41<71*J3)`FDbI6EgDBlBumQ8K)z)zOA)BLt9FX536!) zDmKfSSYlyKr3Qxj#J(yj0jV8i#nNp{*#I4eW=19kVq2S-hyadLG{`GWiqi)%AV@3> zkqOS?R$)M^K|LCQ5~;UHDad!3eVPt1wBos9H+W?&1?8&UTe4%TIICYpVX$g&`yfpG zy_rFSm=4es;?2P|Yl7^;6|kI&=Yq?b=Zc~1Hi%)FLacxVkr9(BW9H?B9B_rj(vB## zBruX1GF{!N?$pW4hqCWpH8i-L^GnD~UdV7J5{|D3u0+Oi25s-`#`)u6uki+%tC$qa zd9MgduN6=8k+NU(C5_dSds|aInGP{~A*x$Dpb4A1Q|UD3TrelK2TR3=ngZkI$0^QK zVL5f9`Va=-!1P9#8Dd3?iHu@8(Kl_7_`;v?p$tQbc*JjGs=l|`UW0!I7QIZ9Rp>!O zr+PN@)TcKFBUDA4&Vt0-^4Zb+avo4RkL2Mk-JBnr;3{tEH5uxtgZT5<1d<(lW|F+* z(os?la^i3$hZgv)$jer5$~aeYm740}5V5)dv#aH10=;6g87q6zL-*2dD_kn79_AB@ z#p0n@9cI8V3d8xTa2$Gm4>A(vN1}~EHF(KiY*b;=BGytzr)ro?CObAZGT66s4BACF zbNjGWHip|83qBr^phn>$ElCfGaby;K14a<)e6|aP^k6E+IjyOP3PWoQm-vJ{Rz!Vg zXIq(rhx5RW6qT^3H|TpXQJ@w~Pa|ML zGQZ^<*Z#Vy;xQ!R5R(B4v73TjlxpbhX+>=)u+uW$+Ec-$y**9vS+%7oOQlQTPU;^V z7(kb70ljqKcojGAhnDf0w51c%60^3c3*Eae)zAYO;hg}RxqCw<-PzmS0Ed`N-l>tu zkF9Wer5ZBvP)$u8S`Bqkl*I)F7ZU5-$YNo>arDzZRnJ4LRALv5x>A9S-cZ%lg`G5K zduz*Q{yR7w&5zPEyA{SZymqPfuAYs-I$C~OsPRjo@>Gc&rK+~zg))8ya%O{=ojsnJ zJp}Ja2?xU9OyBgly}ISuw#bE>Ho z_L}v2hMZJ8PXy_FvfA75zp&3#oRc8i^!5~n8>T_2c9?-{gHf_7gvB`TK&rd5DGiSg zE{mC^T=B|Z@#-Y7YHla|{JZv| zoyyZ88}y$lmcmTIxav~f-O!>m@sNsLM;(NAdYQXEjhVO6yN%#DI=QU?w#ik7l!*@! zLn^Z=gUs|Bf+~X&j11I4*3{OSH2%ke_W73_^hN`bJIOD_wsEY&t7`rBT0JvYR|`gr zy3mGN2-~iza1Dj5r~T!ei>tZ@kcMNRA>9*1hjyoujhXdu2BxqJFJXtsQt_~G$-

q=VV^57bYI%~Z7bjq@*+PIa%N-!AB+>XVJALy$~OQ%yam zX&P(A8K7Z9t2@VuY%6s=!&^jessjXu2S3@+0$Y;ut*blP+@1vC4WXeIdpeRBbre^+ zPBW3S)d*R7+?$i_Wde3{c4#Oou6FFLaNxerY{_SLIJ$5I->F?PfTf2XmK6)r=Y*=<%LV7$sYOAiOGj4*K-PvTrg8e#7uw-=Y^#C6r!h4nMI5KLAw_@dRZ zP$U6?8INO4C6Y+Q;bTlRnKY0Pdo>D z5@dp#iY8@YZKssm!=Oo#k+9~&rJK^_yW)Zkbx^N$oCyuZ?M{JX4NIm#(O$m*PKoT# z=FZqTIFc`y>A~`u$t3Btp25uE&87wtUl%q>STjcpCbwq0j_`&SwI_Z+$x0B zYi#7q%p_%wtJ@T5IT$DsgyDsqjex+QH_9G%b6cuI`mr!_ioB0KBOhgvwAkOKA9+XSoT0m6ng~a*T22y*i)^L%reJ9O{v!=o{g@fkD9BLGWkL-g=uL)3W}sJ^db4F$e3Qy zTVPMG|2f@)wUiS3P-*EALWV`jm4#BsDdnXUxW_K*=t`*Sduo5rl(h$*60<&n*&tT; zQ|ppu;i4VO2ZiYY49g}VVl53zbOP!!-f3fml3n#|PxfGSi&}<7cGjmm+fuN0aJnT} zc1(jOiCLC*SFn~;E_jAYLLUm!xXc*v`ad|vJkt@ZPuWq7HOKZYv&ykIN1LoS3g6pV z9#-7!nxE%9*Xp=5X@>}p>6Ft|J2^c7=i9cyQLfqPwNh_eff-?lWLg_r*D0gX!wO1| zp*>#xB?F1BUhhd!i_+yK+)<|LEpvcGh9)M8Aelx~2d0}-g%M;&;n=n-KxB4L9D%)` zM&zm>;+RJBV};eAk{d&X*aPo9^w@B!pvITX5xlEH7r-v?EjJ-w$x*nm9&`ONz;0 zSrtXBHM3N6Z7g#Yg?qEXTI=|%v0UDk+F+`WMX{wYAqwivENm7W@tDb?jqFtBs#9?t zzM^17Nf--D-I>Nx6ans;iIjJYasCzgxWpkn-jUqKZk}NI$E^Oy;*U9kP}&i&fvzz0b)eOoc2^YikF3mMkH1 zAX_udjXj-7j!Dii*jF%}Iy0%0dy{Pp9o3~1vIMd*HmOJM+VxK(bq5&x2;S*J=o?Bj zmamtSB&ux!r#>A4oKvs}hNG!%XPx}iR>pwz1o_Dv(wr^v-Ayvh0m+9424G_h4=iUh zSGA|w>r>rabL-nVh(ML?8GAiw5(G5`3MVUzw6}4gqF>~6fh5Z3GV~@Ie|Appv8heq zPa)!B;$<(W_6~;lKzDaRv`eI-M9yy#;`DoRBcgIzN5FRbo{`y&g3vD+rD#$jLuR~Y%LOq;yCA(tPsX67aR&fCTJx3 z+f1HCNKX-b_uIa5(lovz|_OcuF7Zf zW|19m0^%NFu&oFMj{#Sk1Q`aIkj`SEWMD~W7;Tf0y<{536@2i$9Sy63hi8zL%1$s; zsbvR#FZb{!5rNJzi?J$W)@!z<+Q6*AI*`EhQkv`LSU_a-v4nk#_y$chG(aL&bu3HB zJv;;E&h-rv@Hf?be|Jv8{fZNQapqbTO;OvUlLR=8J329{;j>2B>SM4zZ4^1$H?ox% zOjC>YgxJMkmTp`uEd5Y3^fL9y9v-*LVAj6lN(ZHvXTVDBN(ZZrpa#b?SGYUqXF=%j z224I1H^Opwq!8d416elQs z3jfaRdz?*QoIsm7w++AEmfvnzrW(RxcqfFDXRba`qFvc-JM&14dXG=KJI9dIy=7RI zYRVjk`igF>sj66#YA-pC{7a24Nwv2eONyVAj-F5~v}G@OmITI6)%5a&Q|4PDCMM6d zJlS6IED1H9D%bLaQ|7xZ9?LRp)`XBRJ1w-#x`qs6B0va%g82+ao?*pO-;jzJJmq4g zpiETE%2lHsctOWJ*kas0c3(W$8j5F~%}Zm5jSSH@Oao2Tv)VhxzBN+-J8+GlFT`4! z;j4pMu1PFgFq0q3Bi3nq?#yuynH267VP&F$Q8r^=Y?CP1OXO;qV1@q?i+Bjdpip7J zl@Th|g*1K%#p82=I5Vjsr;}}|aY9e#8}iJCC@oA`MRHFP|6~G}OonPIF^0cv4r9VC z817GDY77wCJ0%vJoh=trOj$6y-6Km$3|T%+&>op!l4LsAOJSLjB0#>iqebQ}RP33a zP8bpOpp0?*qOL*!Q&T*&!4PVr54_+zFVlY-e1bd1G=V(3M(Q7UAEPOw2kC%BpM#t7u5M)ue~!Hif*ST0Ppwqd;;4%(tDI}m*_ zVW9lb4n)U$dsTBJ$;YiQmUyPb646-}`pSfZ<0-d2_?NZP2~XB|t)$ zgHRy*&=HC@)?3kLns}W>1}%k!#J4qdIk2&NTDm*egCS{9(gsI(2rL5F>?s7Ylse)$ z{!c+55Mq_&$+ff0lRmKbWuXkR5Dx;5QfwaUy)wL$%H3QFmtHaw)Le?-(%EQ=+J7Fy zFvE$A9ve}Lg-Xxtpx|(t%mQQQfXgKUVw`bpqER?1f)Y`Vw6sJe7$750zwq8jh<#*O zslC3NtCUkdURKoNES&SflDS8r%9Bk(a949%XFZ(HQf6@ZQFc+6G3v6QWM(KD7htC= zxKF3c-YJ!y!eFwKzGC`Pr;u8wR#}P7PA7UW&S9&X3G!BAhru39Z(PMjW{zKDV%eBa zs^7+Qg#0kEnRs?soFzte-Lvp~V8N&Ek#V)Db~W{jwNQGS832W(c{)*6Jx!s-;bNy4 zFpRBuE6zu))&=J%0ZY$NXJcu3#00_^7U3Y0QCZ^HqBjd-!bGfjy^l7-M5%riXEh_J zP_(qeqrXf9S|}7MNPD{|(bm{amvD*LE12=#(^l}os_}?E93lPy&!SH(|8Tin0@}>M zdxbeSo6otK4qHle6JTQek)=#$CNK11BFr(3q@1v+Ulb&hr7Q7@ShumEorH50RyL>@ z)T>?4N}w8aaPhF%sa_>g9tYu_N^xyZB)1V02}&<;PZJrQi=>9 zF81**OpQk>S&p?XI@Bz+zO$E;P%h}0r7+T=1&#%4NN|)-H9!6gvd%&uW%6@1=>$FVq~#|s-}?}7n4&UP#qy%fu;pNqx{=FAg%AFyx+ z_R7oSK)kQGfPxy!y9!bry|P$f*N8wvdAc2`QB%6|JPK@Fe z1{vbfCM)eE+O=GcNqD1_Du$t#c6{X02!{2D?MArG6iUoHT_&|!)18@OfB{#|3eu9D zXeJ>T!@3TUY(oHiN0RRzz*XtVy^}ze`DBhm1y$yPv^vWM3t9fM{%Q}O!L!mVaT0Ba z{cGo|7bK*c1G69vSZS;dt3H8YASQuHF zF3vpFY%auNdsYar#K4FV#EpuNNn;tg@5m~VWf1ZIfLPYn^Tr6Q3Zf~D{)0RJXi2bw zk1QF^vNw8dMVfXLa;%rf60nD8lA3+m8+H*a3LhC(iufSENMU5bWgjjC;GS__QR@&D z?JG`r$d1Cq$UMznATuT;9nBD32!5}}o8Itv6tm=`#POK%(#v?yY#SUJ9K$8#gDs6g zFk;E9qZs*8Vsx0tn!6D4-iBd-XE@TyCIs*&+j>o7O2d5U2qb@+yC!@XIz}28A~U#x zp5t)>4r_}tpAz{t?mZz`{*}cbAgxC!p!g{%Y;|W){ zWOwDUXuW+i{~^Z6{_JV^ZA`$TiD8muZBL-?B;hFIQkcml`n`0)&gv@5m|bp|*ezFhg+>W02)D>`O*dlA@V*t4#p$ixH|DB$4b&)3Sq7ibNC9p4 zBJ+yDK_oYMjyHH0FFnuCa9DVQz(jY@k-&x6R2t6)VcEB!?2#JTLBf?}r;BH}Sf6S} zi=p94Lx1^Vsy3{EmiaSFq8JfC*4oKuSmenyygF;#vuk|%md?2-M}BYV+mbw1J=vKI zXggdC6t!|G}e0NufgUh>^m_jsS3NQFc^5qkF zO@zE4LG8d`Cha}MowB4TmQUdkx01JOc~W@K^G+2$I&%`wYe7sJK{JWYk%>ZZ`O#Q9 z<{RafLzxt%pm3`7_Sm_l^pOmr(ia)YLNHX2_3BtDMy*tCJ{5~78!M&yu*7b~9eJW^AETrmXx2d^OZj#ZszfwL^g+?YFuK@tvWzjhA;>uHN+L={h?oL{ zlbBv&{)i`4f)wyTKT4WpzHW>Hqg!-T>f%d0Q;V)QSK8vSRe+$Sg3sLVdH#r@0y2ja!k0#im5ir`M$V~A3^L4KES=3f&ODiD zXGCOoRv64xm_C8#wBaWj<9J5KYjg@jXnZN`?N0Q%iDQ8r8|HVoFh zNfAL#$qg_vAz}*=+ROPifKdj3mAn?foMq#@Qxkc~5>9d~$m&@k8yo0Nb}P*KCWr_1 z2BRA;F3gP!B16Pch$15&k0XLAg*Q0z0c+?)!!KqH$p{!TE%shecPdsAi{4aPF0sUf zo>ZhObEIm(p2cj5Z=F=lNoC3oH&K#7)BA;x zNeN;pJ{e?JD8{{a)7uN_B$jefPQk{MH$S0>f_CxvYt)%(7}XKvWW2DCP)GX`Jk&dz{24K-p2l9f=kO@D#R6ZYq$ujq|cUosiI!UeB<;czm{VP6D;XFCQ(;g@*2zzx>y@D6it z(;K=Qj8oV8W{Z`Q)e`%%3O2GO@o;ynm>4FXL}Z%Ms)k0w+y z1A}=R1N6XhOOR#1jfHk1-xe~sxj zvuun+1qx9>g7p{|#=tO%mZi`)E^YOKbKC{bl4xRaj+x!Fu~tmB=ej1D+XjEgOFC4h ztm|PgMESFdmCxiSVBPvEg0w7Xmv~<%IMY>gg4eg1*3swp`+Sl?}SV$z()zjzX{j-023;1 zIlbVP=>D(?^|B@H3>ML7B zQ=q2TpD3dKSe$jp;p$t7Eeo-|!L-k_hbw8TWENr;Is5>1nW$JM+a1w%$12#i$5+byCT zNS-$y;vHfgox&9bj*DfI-eH&J0V>C@TBDrd#b{X!plRR}RaS++ai-K{+ zXq+~#-(rO072}jbMa^b2D4sE1FOD{OF1mEhS?1C!vEYFfE`8M~9g>B&lGFBuC!~)R z5&5AW6A3Ah;N{{|A_Z|-Hd@Wx663La5~}aBG;D~Vy^^=yuHG^{l*i{G`UVGAha#EY z?SQ&W`{34*VZLh-FAc-1Aah%`4{lw(VwvUPMvHkZ#t zYId(4%Z_dhuWrou?W7rEEIvE-VA7--JMlKssCirfbV#mCwjz>FUI7H!Vn7xqNF}o% zGt5>}eu~QC8{PK$qK2|Wg%`jT7d*haZ8DuK@t<2e)p7%vfQA-z0v>LNbBW$|xyR`C z8a&447HdWPBw{A32h!nN`#N=@mT$*}?JVzGkUY)ApPXe&F=q^C86o0X$(>@hZicIk z`J{m6yZ4YQXKOI4?AtHpP{f_7b?IBiKyWfW2U_`HD-1e$^2ta|P^R!6a@zn-bIoWg zJ!6_=od^ZJZ(42(vrk!}9=uzmIWqLxRURLeci3Q>j#&!KD!w`#_a@9s9vmqDV}i?} zE`vS%ph^&*Q3>kebKx^8`q`9772dyBvjY5C@`6-+IUXNgcn3e%@x6EM>^V*l$M&}k zJIT4zFZ5mJCg%o|bEXZ>ot~UC$4N$UAE`etriZ>GAyh4!&yT`S~4u?#J``m*E3vg4+*V|!rm*?kq@L?^_&+p9e9I?Ko(!}rJ3uB(2U!-R7guftd z%sIbA{QS-W&k^s(N6I`uzq7yRh}RErHljaBRm$*v zA@4Gt{$c5x%Z`W3j`78_!cS^jn5iFu7x|ZkHXkwO>>i5YLtWu4-pP|lWaE8_L^v0# z4dH75_&yGzOJj8dSv(ZRWU|Usy`?%*-Ioo8R5HWAMabp_C@k_HL+-{FCLHe)kG8FntV+zk<0aEqv}X) zbvRKQ?~8={ay8*-Z6Cf&kjqDF5_rOOU?7^Sfzif_+3y}z*Vb0o_2=TXk;Fg*e%C~{ z1|RpS&4qH=zWhMAFP?+l#~X?tN5Z>qt7{Xr$U0hw_YKv>5(BmU+5X%>G#(G-axlkjR_#nA^)Yq^hHJ)zN$?7O9Cx>cVw3+1x-V5zW=r#KX85 z??>;8nJU?jI^h#*)&2dU{!pwxmyM#+vZ4M+HjYrvzC`UnG~3_T7m*qjN(k2^s%r+2 zRZRrf^4U;LAJ#Z?;l93n9%M-5>gwuD8_K?ARUNOctHEo5W4VEvflys-G?vfS)`a7^ zL|s0CtipX|Rl~Oos-u1V1NrCx8k&vthw2hFeW7T7U9K+=S|vhx(PkY@k0Ei}q);b=hox0#DjAJ>7@$?XBu?s5+MD%MSFR z5z)F(O)iF{v6^^IHc^w!=ldcEWt2P6-MER32vz66f7xhuAljD;V|2&k=y<$!BATrW z)#kyKa!28YNVK}YCK`&>X5)#081fC*)(#{>eX&TSza~@R*haks6GMA_b*991rU;?FC*xTk$-_k0@TFc(dZ|iVrA0qxd}{+Vf*Q z{+;4qiBMb9A=FvULPc8EJg!nqC^jkfC{iQ(pvEZ6nGfw_A~h@NfL+H2Vo}rhu)!B7 zCEp_zs}*Y%Par}KrHD{Joq8T0=yZG__9i0C_yHo63H6Wc$ninPDCd@O+4IjzCk>~aehbyJ$^w%<$psw%5mNx zE_0l}==FdiH9OPePY_iWPNR2E|szPQ_luQx&s{n-zx?M-|Uh ze81uc6+f(ah2k}eH!9w$c$eb6iuWr%qWFa3Gm76-{GQ?u6o0DtOU2(PzM=S*;y)Dq zK10_Tiu)+;uee0i$dQ;KU9PgY#7c)DUvaZqtsai`*0isvd`sCcR3 zM-{JAyh-tP#k&iq9+lNb%>2uPDBz_(#RRD!!u_@Ef|$Qk<{2 zQ1M{J!xdL3u2!s3JXSHO*sR#Dm{#1Vm{H6tZdE)(akt{xisvg{ta!QN#}sc+yhZU& z#d{RLp!l%jV~S5HKBxFy#TOKRtoV}RuM}Tb{FCC_iZ134GX53kC@xT3qUZ{Af;zt#)Q@ly>cE!6DKd<#W70*|^Sn+bjk15`uc#GnliuWjfLGfY5#}uDZd`|JZiZ3YsSn(yr zUn#z>_$S4;72Rn%{uSpaE>K*gc&Or$iYpbvinWSs6dM#<6+0Ds6;D;nDsEOBQXEx0 zQ}O+ZA5{FX;uVV5DBh@etKwaX_bT46_=w^Yiq9y1Q}KI>KT!Os;x83{qxgp6TZ;cs z^usWh@vpd#;{J+D6c1BerdXvIRjgAyK{2JcR`F!T^@^t}<`f4NhZT1!o~3xM;)RNr zDt=V)I>nn5Z&$oq@$-rgDn6?CHN|HYzpePZ;*S)6uK0@LYl?qV{Hx+SiUGL%NY`14 z^A#5=9;|q{;tIvpiZzPIDkc@1726fliW?O(ih0GYif1V9Rys@SR6t9YtnR&lf9km9J~nTqdM{Gj586|YddM)5|)TNUq8yjSsl z#YYsORt!HWmLG#Oa=mn z_@d%VioaHTL(%$M-qGVqo!46bz;7NS?f+{%{#E^N<;^B- z|7OMQiaQnGt7zrShxGUg#cLIBQoKXa%9k(d@gs^~ReVm;G#CAD&5b zJXf=L_;7O`xiSNjXap~Yz*mh*&JAUABgmzgXxrfSyv-Fgb*d47J%sncdD9GxWQULl z!LHSX$2XDd=8@r@JJ9BT@kd^o?@1fOKJ8zQ1&(KsRQ}7;orv=`-O*E|YxAUAIYqh+ zo^-3GNZ0R4S2aaClEBuF_U>fu;8?clDDNjrcabMuXo_@KdD4ZaNO!X*U1W-MpYf!N zPLYnX-?oE&I9WTM^rWMFo-7?@kj;}|_%og!{;=~hjUj&-s>yPv`d=FK@7e=K*K*_EwLm&DNw{GTXi9p~ehI1*`1 zxxqFv9qZMLe_L1VI-kP97S9R0dor$h^LrBcu}_#E=M^@;EcWd^*mdTi;a}#C{_M3; z9NT?f`UcVkxuZXOZ5YSia$mgE#QCt?ApUK+7hvDsgI(vh$Zr96^k=V~hhuMkzeRqe z1M^#of1BU+*thp!*Ler|y~7>-*=twh*qh&*$nP&W$NY}K|G4~=f&PgLkIzH`{f)~{ z)BW}`$LX4D@;eG?C(G|E`xv_HEx+S#EYffJ6#0D%`H>#>H(CAKkRS75d##=!Jqz^H zcKjasooX`!PL|&o^4o&z%#UMYvi7c>XUano`AwGJi^z}qfcaTHGg19^B0uT|`Ea z{|f!~yQN4!t7j(4uMhdHx0M4?P}Zh8G~gR_ga3G-{4BES0= zInKLr-To%a@B5!}oQsf%`E}rbvicpm*l`%YXMc9Lynd(M1$nRS?egSzH}>s4%;TRh zG9F}M`m@*Q%k%2X58y_Q2iC6}|F(V)VxRYf@Xz1^gk literal 0 HcmV?d00001 diff --git a/task1/Debug/Startup/sysmem.su b/task1/Debug/Startup/sysmem.su new file mode 100644 index 0000000..718d300 --- /dev/null +++ b/task1/Debug/Startup/sysmem.su @@ -0,0 +1 @@ +../Startup/sysmem.c:53:7:_sbrk 32 static diff --git a/task1/Debug/objects.list b/task1/Debug/objects.list index 5a6acde..1284c96 100644 --- a/task1/Debug/objects.list +++ b/task1/Debug/objects.list @@ -1,3 +1,4 @@ +"./Src/sketch.o" "./Src/task1.o" "./Src/task1_it.o" "./Startup/startup_stm32g431kbtx.o" diff --git a/task2/G431_addr.s b/task2/G431_addr.s index d3723f4..738a57d 100644 --- a/task2/G431_addr.s +++ b/task2/G431_addr.s @@ -172,6 +172,23 @@ #--- Genral Purpose Timer - TIM3 / address space: 0x4000_0400 .. 0x4000_07FF .equ TIM3_BASE, APB1_BASE + 0x400 +sketch.c + * + * Created on: Mar 18, 2026 + * Author: tobii + */ +int reihenfolge[6] = {0, 1, 2, 3, 2, 1}; + +int main(){ + while(1){ + while(/*schalter nicht gedrückt*/){} + delay(10); + while(/*schalter losgelassen*/){} + delay(150); + + int aktiv = 1; + while(aktiv){ + for(int i; i < reihenfolge.length - 1 && aktiv = 1; i ++){ .equ TIM3_CR1, TIM3_BASE + TIM_CR1_OFFSET .equ TIM3_CR2, TIM3_BASE + TIM_CR2_OFFSET diff --git a/task2/task2.als b/task2/task2.als index 8dd4b29..3b96009 100644 --- a/task2/task2.als +++ b/task2/task2.als @@ -4,49 +4,16 @@ input file : task2.s output file : task2.o target : arm-none-eabi - time stamp : 2026-03-24T14:14:11.000+0100 + time stamp : 2026-03-31T13:53:51.000+0200 1 #****************************************************************************************# 2 # Project: task2 - ASM: Interrupts 3 # File: task2.s - 4 # - 5 # Language: ASM - 6 # - 7 # Hardware: STefi Light v1.1 - 8 # Processor: STM32G431KBT6U - 9 # - 10 # Author: Manuel Lederhofer - 11 # Datum: 31.10.2014 - 12 # - 13 # Version: 6.0 - 14 # History: - 15 # 31.10.2014 ML create file - 16 # 27.09.2018 ML edit comments, extend vector table - 17 # 18.12.2018 ML port from MKL05Z32VLC4 to STM32L476RG - 18 # 27.02.2019 ML move section of exception handlers to bottom of file - 19 # 25.09.2019 ML minor changes for a better code and comment understanding - 20 # 04.09.2020 HL port from STM32L476RG to STM32F411xE - 21 # 21.09.2020 ML tidy up, comments and formatting - 22 # 29.09.2021 ML port from STM32F411xE to STM32F042K6T6 - 23 # 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U - 24 # 10.02.2025 TK remove ASM:Polling,move ASM:Interrupts to task2 - 25 # 24.06.2025 TK remove /* ... place your code here ... */ - 26 # - 27 # Status: working - 28 # - 29 # Description: - 30 # See the description and requirements of the requested application - 31 # in the lab exercise guide. - 32 # - 33 # Notes: - 34 # - MCU speed at startup is 16 MHz - 35 # - 36 # ToDo: - 37 # - Change the example code to match the description and requirements - 38 # of the requested application in the lab exercise guide. - 39 #****************************************************************************************# - 40 - 41 .include "G431_addr.s" + 4 # Hardware: STefi Light v1.1 + 5 # Processor: STM32G431KBT6U + 6 #****************************************************************************************# + 7 + 8 .include "G431_addr.s" 1 #***************************************************************************************** 2 # Project: task2 - switch triggered LEDs 3 # File: G431_addr.s @@ -811,286 +778,351 @@ 762 .equ DBGMCU_APB1FZR1, DBGMCU_BASE + 0x08 763 .equ DBGMCU_APB1FZR2, DBGMCU_BASE + 0x0C 764 .equ DBGMCU_APB2DZR, DBGMCU_BASE + 0x10 - 42 - 43 - 44 #----------------------------------------------------------------------------------------# - 45 .section .vectortable,"a" // vector table at begin of ROM - 46 #----------------------------------------------------------------------------------------# + 9 + 10 // Falls in G431_addr.s vorhanden, diesen Block löschen um Fehler zu vermeiden: + 11 .equ RCC_AHB2ENR, 0x4002104C + 12 .equ RCC_APB2ENR, 0x40021060 + 13 + 14 .equ GPIOA_MODER, 0x48000000 + 15 .equ GPIOA_ODR, 0x48000014 + 16 + 17 .equ GPIOB_MODER, 0x48000400 + 18 .equ GPIOB_PUPDR, 0x4800040C + 19 .equ GPIOB_IDR, 0x48000410 + 20 + 21 .equ SYSCFG_BASE, 0x40010000 + 22 .equ SYSCFG_EXTICR1, (SYSCFG_BASE + 0x08) + 23 .equ SYSCFG_EXTICR2, (SYSCFG_BASE + 0x0C) + 24 + 25 .equ EXTI_BASE, 0x40010400 + 26 .equ EXTI_IMR1, (EXTI_BASE + 0x00) + 27 .equ EXTI_FTSR1, (EXTI_BASE + 0x0C) + 28 .equ EXTI_PR1, (EXTI_BASE + 0x14) + 29 + 30 .equ NVIC_ISER0, 0xE000E100 + 31 + 32 .equ DBGMCU_CR, 0xE0042004 // Adresse des Debug Configuration Registers + 33 + 34 #----------------------------------------------------------------------------------------# + 35 .section .vectortable,"a" + 36 #----------------------------------------------------------------------------------------# + 37 + 38 .align 2 + 39 + 40 0000 00400020 .word 0x20004000 // initial Stack Pointer + 41 0004 00000000 .word init // initial Program Counter + 42 0008 00000000 .word _ISR_NMI // non-masking interrupt + 43 000c 00000000 .word _ISR_HARDF // hard fault interrupt + 44 + 45 0010 00000000 .space 0x48 // Padding 72 Bytes (Offset 0x10 -> 0x58) + 45 00000000 + 45 00000000 + 45 00000000 + 45 00000000 + 46 0058 00000000 .word _ISR_EXTI0 // EXTI0_IRQHandler (PB0 / S0) - IRQ 6 47 - 48 .align 2 - 49 - 50 0000 00400020 .word 0x20004000 // initial Stack Pointer: 0x20000000 (RAM base) + 0x4000 (16K SRA - 51 0004 01040008 .word 0x08000401 // initial Program Counter - 52 0008 00000000 .word _ISR_NMI // non-masking interrupt - 53 000c 00000000 .word _ISR_HARDF // hard fault interrupt + 48 005c 00000000 .space 0x0C // Padding 12 Bytes (Offset 0x5C -> 0x68) + 48 00000000 + 48 00000000 + 49 0068 00000000 .word _ISR_EXTI4 // EXTI4_IRQHandler (PB4 / S1) - IRQ 10 + 50 + 51 #----------------------------------------------------------------------------------------# + 52 .text + 53 #----------------------------------------------------------------------------------------# 54 - 55 - 56 - 57 /* N.B. - 58 Look at the .space or the .org assembler directive to insert the address of the - 59 ISRs at the right place in the vector table. Verify your settings by the help of - 60 the list file. */ - 61 - 62 0010 00000000 .word _ISR_S0 + 55 .align 2 + 56 .syntax unified + 57 .thumb + 58 .thumb_func + 59 .global init + 61 init: + 62 0000 72B6 CPSID i 63 - 64 - 65 #----------------------------------------------------------------------------------------# - 66 .text // section .text (default section for program code) - 67 #----------------------------------------------------------------------------------------# - 68 - 69 .align 2 - 70 .syntax unified - 71 .thumb - 72 .thumb_func - 73 .global init - 75 init: - 76 0000 72B6 CPSID i // disable interrupts globally + 64 0002 0020 MOVS r0, #0 + 65 0004 0021 MOVS r1, #0 + 66 0006 0022 MOVS r2, #0 + 67 0008 0023 MOVS r3, #0 + 68 000a 0024 MOVS r4, #0 + 69 000c 0025 MOVS r5, #0 + 70 000e 0026 MOVS r6, #0 + 71 0010 0027 MOVS r7, #0 + 72 0012 8046 MOV r8, r0 + 73 0014 8146 MOV r9, r0 + 74 0016 8246 MOV r10, r0 + 75 0018 8346 MOV r11, r0 + 76 001a 8446 MOV r12, r0 77 - 78 0002 0020 MOVS r0, #0 // safely initialize the GPRs - 79 0004 0021 MOVS r1, #0 - 80 0006 0022 MOVS r2, #0 - 81 0008 0023 MOVS r3, #0 - 82 000a 0024 MOVS r4, #0 - 83 000c 0025 MOVS r5, #0 - 84 000e 0026 MOVS r6, #0 - 85 0010 0027 MOVS r7, #0 - 86 0012 8046 MOV r8, r0 - 87 0014 8146 MOV r9, r0 - 88 0016 8246 MOV r10, r0 - 89 0018 8346 MOV r11, r0 - 90 001a 8446 MOV r12, r0 - 91 - 92 #--- enable port clocking - 93 001c 1249 LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR - 94 001e 4FF00102 MOV r2, #0x01 // load mask for adjusting port clock gating (A: LEDs) - 95 0022 0868 LDR r0, [r1, #0] // get current value of RCC_AHB2ENR - 96 0024 1043 ORRS r0, r0, r2 // configure clock gating for ports - 97 0026 0860 STR r0, [r1, #0] // apply settings - 98 - 99 #--- port init - 100 #- LEDs - 101 0028 4FF09041 LDR r1, =GPIOA_MODER // load port A mode register address - 102 002c 0322 MOVS r2, #0x03 // prepare mask - 103 002e 0868 LDR r0, [r1, #0] // get current value of port A mode register - 104 0030 9043 BICS r0, r2 // delete bits - 105 0032 0122 MOVS r2, #0x01 // load configuration mask - 106 0034 1043 ORRS r0, r0, r2 // apply mask - 107 0036 0860 STR r0, [r1, #0] // apply result to port A mode register + 78 #--- enable port clocking (GPIOA, GPIOB) + 79 001c 2C49 LDR r1, =RCC_AHB2ENR + 80 001e 0322 MOVS r2, #0x03 // Bit 0 (GPIOA) und Bit 1 (GPIOB) + 81 0020 0868 LDR r0, [r1, #0] + 82 0022 1043 ORRS r0, r2 + 83 0024 0860 STR r0, [r1, #0] + 84 + 85 #--- port init + 86 #- LEDs (PA0 - PA3) als Output + 87 0026 4FF09041 LDR r1, =GPIOA_MODER + 88 002a 4FF0FF02 LDR r2, =0x000000FF + 89 002e 0868 LDR r0, [r1, #0] + 90 0030 9043 BICS r0, r2 + 91 0032 4FF05502 LDR r2, =0x00000055 + 92 0036 1043 ORRS r0, r2 + 93 0038 0860 STR r0, [r1, #0] + 94 + 95 #- switch LED off + 96 003a 2649 LDR r1, =GPIOA_ODR + 97 003c 0F22 MOVS r2, #0x0F + 98 003e 0868 LDR r0, [r1, #0] + 99 0040 1043 ORRS r0, r2 + 100 0042 0860 STR r0, [r1, #0] + 101 + 102 #- buttons (PB0, PB4) als Input + 103 0044 2449 LDR r1, =GPIOB_MODER + 104 0046 40F20332 LDR r2, =0x00000303 // Maske Bits 0:1 (PB0) und 8:9 (PB4) + 105 004a 0868 LDR r0, [r1, #0] + 106 004c 9043 BICS r0, r2 + 107 004e 0860 STR r0, [r1, #0] 108 - 109 # LDR r1, =GPIOB_MODER - 110 # MOVS r3, #0x03 - 111 # LDR r0, [r1, #1] - 112 # BICS r0, r3 - 113 # MOVS r3, #0x01 - 114 # ORRS r0, r0, r3 - 115 # STR r0, [r1, #1] - 116 - 117 #- switch LED off - 118 0038 0C49 LDR r1, =GPIOA_ODR // load port A output data register - 119 003a 0122 MOVS r2, #0x01 // load mask for LED - 120 003c 0868 LDR r0, [r1, #0] // get current value of GPIOA - 121 003e 1043 ORRS r0, r0, r2 // configure pin state - 122 0040 0860 STR r0, [r1, #0] // apply settings - 123 - 124 #- buttons - 125 - 126 /* ... place your code here ... */ - 127 - 128 - 129 #--- button interrupt config - 130 - 131 #- enable clock for SYSCFG module - 132 - 133 - 134 #- connect GPIO pins of the buttons to EXTended Interrupt controller lines (EXTI) - 135 # in SYSCFG module (SYSCFG_* registers) - 136 - 137 - 138 - 139 - 140 #- configure lines in EXTI module (EXTI_* registers) - 141 - 142 + 109 #- Pull-Up für PB0, PB4 + 110 0050 2249 LDR r1, =GPIOB_PUPDR + 111 0052 40F20332 LDR r2, =0x00000303 + 112 0056 0868 LDR r0, [r1, #0] + 113 0058 9043 BICS r0, r2 + 114 005a 40F20112 LDR r2, =0x00000101 // 01 = Pull-Up für PB0 und PB4 + 115 005e 1043 ORRS r0, r2 + 116 0060 0860 STR r0, [r1, #0] + 117 + 118 #--- button interrupt config + 119 + 120 #- enable clock for SYSCFG module + 121 0062 1F49 LDR r1, =RCC_APB2ENR + 122 0064 0122 MOVS r2, #0x01 + 123 0066 0868 LDR r0, [r1, #0] + 124 0068 1043 ORRS r0, r2 + 125 006a 0860 STR r0, [r1, #0] + 126 + 127 #- connect GPIO pins to EXTI lines + 128 006c 1D49 LDR r1, =SYSCFG_EXTICR1 // EXTI0 (PB0) + 129 006e 4FF00F02 LDR r2, =0x000F // Maske EXTI0 (Bits 3:0) + 130 0072 0868 LDR r0, [r1, #0] + 131 0074 9043 BICS r0, r2 + 132 0076 0122 MOVS r2, #0x0001 // Port B (0001) + 133 0078 1043 ORRS r0, r2 + 134 007a 0860 STR r0, [r1, #0] + 135 + 136 007c 1A49 LDR r1, =SYSCFG_EXTICR2 // EXTI4 (PB4) + 137 007e 4FF00F02 LDR r2, =0x000F // Maske EXTI4 (Bits 3:0) + 138 0082 0868 LDR r0, [r1, #0] + 139 0084 9043 BICS r0, r2 + 140 0086 0122 MOVS r2, #0x0001 // Port B (0001) + 141 0088 1043 ORRS r0, r2 + 142 008a 0860 STR r0, [r1, #0] 143 - 144 #- NVIC: set interrupt priority, clear pending bits - 145 # and enable interrupts for buttons (see: PM, ch. 4.3, NVIC) - 146 - 147 - 148 - 149 0042 62B6 CPSIE i // enable interrupts globally + 144 #- configure EXTI lines (falling edge, unmask) + 145 008c 1749 LDR r1, =EXTI_FTSR1 + 146 008e 1122 MOVS r2, #0x11 // Bit 0 (EXTI0) und Bit 4 (EXTI4) + 147 0090 0868 LDR r0, [r1, #0] + 148 0092 1043 ORRS r0, r2 + 149 0094 0860 STR r0, [r1, #0] 150 - 151 - 152 #----------------------------------------------------------------------------------------# - 153 - 154 .align 2 - 155 .syntax unified - 156 .thumb - 157 .thumb_func - 158 .global main - 160 main: - 161 0044 0949 LDR r1, =GPIOA_ODR - 162 0046 5040 EORS r0, r0, r2 + 151 0096 1649 LDR r1, =EXTI_IMR1 + 152 0098 1122 MOVS r2, #0x11 // Bit 0 und Bit 4 + 153 009a 0868 LDR r0, [r1, #0] + 154 009c 1043 ORRS r0, r2 + 155 009e 0860 STR r0, [r1, #0] + 156 + 157 #- NVIC: enable interrupts EXTI0 (IRQ 6) & EXTI4 (IRQ 10) + 158 00a0 1449 LDR r1, =NVIC_ISER0 + 159 00a2 4FF48862 LDR r2, =0x00000440 // Bit 6 (EXTI0) und Bit 10 (EXTI4) + 160 00a6 0868 LDR r0, [r1, #0] + 161 00a8 1043 ORRS r0, r2 + 162 00aa 0860 STR r0, [r1, #0] 163 - 164 0048 0860 STR r0, [r1, #0] - 165 - 166 - 167 - 168 004a FFF7FEFF BL delay - 169 + 164 #--- wachhalten während WFI + 165 00ac 1249 LDR r1, =DBGMCU_CR + 166 00ae 0868 LDR r0, [r1, #0] + 167 00b0 0722 MOVS r2, #0x07 // Setzt DBG_SLEEP, DBG_STOP und DBG_STANDBY Bits + 168 00b2 1043 ORRS r0, r2 + 169 00b4 0860 STR r0, [r1, #0] 170 - 171 004e FFF7FEBF B main + 171 00b6 62B6 CPSIE i 172 - 173 - 174 #----------------------------------------------------------------------------------------# - 175 - 176 0052 00BF .align 2 - 177 .syntax unified - 178 .thumb - 179 .thumb_func - 180 .global delay - 182 delay: - 183 0054 0026 MOVS r6, #0 // ... - 184 0056 064F LDR r7, =2000000 // ... - 185 .L1: - 186 0058 0136 ADDS r6, r6, #1 // ... - 187 005a BE42 CMP r6, r7 // ... - 188 005c FCD1 BNE .L1 // ... - 189 005e 7047 BX lr // ... - 190 - 191 - 192 #----------------------------------------------------------------------------------------# - 193 - 194 .align 2 - 195 .global stop - 196 stop: - 197 0060 00BF NOP // do nothing (NOP is here to avoid a debugger crash, only) - 198 0062 FFF7FEBF B stop // if this line is reached, something went wrong + 173 #----------------------------------------------------------------------------------------# + 174 + 175 .align 2 + 176 .syntax unified + 177 .thumb + 178 .thumb_func + 179 .global main + 181 main: + 182 00b8 30BF WFI + 183 00ba FFF7FEBF B main + 184 + 185 #----------------------------------------------------------------------------------------# + 186 + 187 00be 00BF .align 2 + 188 .syntax unified + 189 .thumb + 190 .thumb_func + 191 .global delay + 193 delay: + 194 00c0 0E48 LDR r0, =106000 + 195 .L1: + 196 00c2 0138 SUBS r0, r0, #1 + 197 00c4 FDD1 BNE .L1 + 198 00c6 7047 BX lr 199 - 200 - 201 #----------------------------------------------------------------------------------------# - 202 .lp1: // this label is only to nicify the line up in the .lst file - 203 0066 00004C10 .ltorg - 203 02401400 - 203 00488084 - 203 1E00 - 204 #----------------------------------------------------------------------------------------# - 205 - 206 - 207 #----------------------------------------------------------------------------------------# - 208 .section .exhand,"ax" // section for exception handlers - 209 #----------------------------------------------------------------------------------------# - 210 - 211 .align 2 - 212 .syntax unified - 213 .thumb - 215 _ISR_NMI: - 216 #--- enable clock - 217 0000 1749 LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR - 218 0002 4FF00102 MOV r2, #0x01 // load mask - 219 0006 0868 LDR r0, [r1, #0] // get current value of RCC_AHB2ENR - 220 0008 1043 ORRS r0, r0, r2 // configure clock gating for port - 221 000a 0860 STR r0, [r1, #0] // apply settings - 222 - 223 #--- init pins - 224 000c 4FF09041 LDR r1, =GPIOA_MODER // load port A mode register address - 225 0010 FF22 MOVS r2, #0xFF // prepare mask - 226 0012 0868 LDR r0, [r1, #0] // get current value of port A mode register - 227 0014 9043 BICS r0, r0, r2 // delete bits - 228 0016 4422 MOVS r2, #0x44 // load configuration mask - 229 0018 1043 ORRS r0, r0, r2 // configure pins - 230 001a 0860 STR r0, [r1, #0] // apply settings to port A mode register - 231 - 232 #--- switch some LEDs on - 233 001c 1149 LDR r1, =GPIOA_ODR // load port A data output register address - 234 001e 0A22 MOVS r2, #0x0A // load mask for blue and yellow LED - 235 0020 0868 LDR r0, [r1, #0] - 236 0022 9043 BICS r0, r0, r2 - 237 0024 0860 STR r0, [r1, #0] // switch LEDs on - 238 - 239 0026 EBE7 B _ISR_NMI - 240 + 200 #----------------------------------------------------------------------------------------# + 201 + 202 .align 2 + 203 .global stop + 204 stop: + 205 00c8 00BF NOP + 206 00ca FFF7FEBF B stop + 207 + 208 #----------------------------------------------------------------------------------------# + 209 .lp1: + 210 00ce 00004C10 .ltorg + 210 02401400 + 210 00480004 + 210 00480C04 + 210 00486010 + 211 #----------------------------------------------------------------------------------------# + 212 + 213 #----------------------------------------------------------------------------------------# + 214 .section .exhand,"ax" + 215 #----------------------------------------------------------------------------------------# + 216 + 217 .align 2 + 218 .syntax unified + 219 .thumb + 221 _ISR_NMI: + 222 0000 2549 LDR r1, =RCC_AHB2ENR + 223 0002 4FF00102 MOV r2, #0x01 + 224 0006 0868 LDR r0, [r1, #0] + 225 0008 1043 ORRS r0, r2 + 226 000a 0860 STR r0, [r1, #0] + 227 + 228 000c 4FF09041 LDR r1, =GPIOA_MODER + 229 0010 FF22 MOVS r2, #0xFF + 230 0012 0868 LDR r0, [r1, #0] + 231 0014 9043 BICS r0, r2 + 232 0016 4422 MOVS r2, #0x44 + 233 0018 1043 ORRS r0, r2 + 234 001a 0860 STR r0, [r1, #0] + 235 + 236 001c 1F49 LDR r1, =GPIOA_ODR + 237 001e 0A22 MOVS r2, #0x0A + 238 0020 0868 LDR r0, [r1, #0] + 239 0022 9043 BICS r0, r2 + 240 0024 0860 STR r0, [r1, #0] 241 - 242 #----------------------------------------------------------------------------------------# + 242 0026 EBE7 B _ISR_NMI 243 - 244 .align 2 - 245 .syntax unified - 246 .thumb - 248 _ISR_HARDF: - 249 #--- enable clock - 250 0028 0D49 LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR - 251 002a 4FF00102 MOV r2, #0x01 // load mask - 252 002e 0868 LDR r0, [r1, #0] // get current value of RCC_AHB2ENR - 253 0030 1043 ORRS r0, r0, r2 // configure clock gating for port - 254 0032 0860 STR r0, [r1, #0] // apply settings - 255 - 256 #--- init pins - 257 0034 4FF09041 LDR r1, =GPIOA_MODER // load port A mode register address - 258 0038 FF22 MOVS r2, #0xFF // prepare mask - 259 003a 0868 LDR r0, [r1, #0] // get current value of port A mode register - 260 003c 9043 BICS r0, r0, r2 // delete bits - 261 003e 1122 MOVS r2, #0x11 // load configuration mask - 262 0040 1043 ORRS r0, r0, r2 // configure pins - 263 0042 0860 STR r0, [r1, #0] // apply settings to port A mode register + 244 #----------------------------------------------------------------------------------------# + 245 + 246 .align 2 + 247 .syntax unified + 248 .thumb + 250 _ISR_HARDF: + 251 0028 1B49 LDR r1, =RCC_AHB2ENR + 252 002a 4FF00102 MOV r2, #0x01 + 253 002e 0868 LDR r0, [r1, #0] + 254 0030 1043 ORRS r0, r2 + 255 0032 0860 STR r0, [r1, #0] + 256 + 257 0034 4FF09041 LDR r1, =GPIOA_MODER + 258 0038 FF22 MOVS r2, #0xFF + 259 003a 0868 LDR r0, [r1, #0] + 260 003c 9043 BICS r0, r2 + 261 003e 1122 MOVS r2, #0x11 + 262 0040 1043 ORRS r0, r2 + 263 0042 0860 STR r0, [r1, #0] 264 - 265 #--- switch some LEDs on - 266 0044 0749 LDR r1, =GPIOA_ODR // load port A data output register address - 267 0046 0522 MOVS r2, #0x05 // load mask for red and green LED - 268 0048 0868 LDR r0, [r1, #0] - 269 004a 9043 BICS r0, r0, r2 - 270 004c 0860 STR r0, [r1, #0] // switch LEDs on - 271 - 272 004e EBE7 B _ISR_HARDF - 273 + 265 0044 1549 LDR r1, =GPIOA_ODR + 266 0046 0522 MOVS r2, #0x05 + 267 0048 0868 LDR r0, [r1, #0] + 268 004a 9043 BICS r0, r2 + 269 004c 0860 STR r0, [r1, #0] + 270 + 271 004e EBE7 B _ISR_HARDF + 272 + 273 #----------------------------------------------------------------------------------------# 274 - 275 #----------------------------------------------------------------------------------------# - 276 - 277 .align 2 - 278 .syntax unified - 279 .thumb - 281 _ISR_S0: - 282 0050 00B5 PUSH {lr} // save special content - 283 - 284 #--- do the work - 285 - 286 - 287 #--- clear interrupt flag - 288 - 289 - 290 #--- leave ISR - 291 0052 02BC POP {r1} // get special content back - 292 0054 0847 BX r1 // go back to where we came from - 293 - 294 - 295 #----------------------------------------------------------------------------------------# - 296 - 297 0056 00BF .align 2 - 298 .syntax unified - 299 .thumb - 301 _ISR_S1: - 302 0058 00B5 PUSH {lr} // save special content - 303 - 304 #--- do the work - 305 + 275 .align 2 + 276 .syntax unified + 277 .thumb + 279 _ISR_EXTI0: + 280 0050 00B5 PUSH {lr} + 281 + 282 #--- Entprellen + 283 0052 FFF7FEFF BL delay + 284 + 285 #--- Überprüfen, ob Taster noch gedrückt ist (PB0) + 286 0056 1248 LDR r0, =GPIOB_IDR + 287 0058 0168 LDR r1, [r0, #0] + 288 005a 0122 MOVS r2, #0x01 + 289 005c 1142 TST r1, r2 + 290 005e 04D1 BNE _clear_exti0 + 291 + 292 #--- LED0 & LED3 toggeln (1001 = 0x09) + 293 0060 0E48 LDR r0, =GPIOA_ODR + 294 0062 0168 LDR r1, [r0, #0] + 295 0064 0922 MOVS r2, #0x09 + 296 0066 5140 EORS r1, r2 + 297 0068 0160 STR r1, [r0, #0] + 298 + 299 _clear_exti0: + 300 #--- Interrupt Flag löschen + 301 006a 0E48 LDR r0, =EXTI_PR1 + 302 006c 0121 MOVS r1, #0x01 + 303 006e 0160 STR r1, [r0, #0] + 304 + 305 0070 00BD POP {pc} 306 - 307 + 307 #----------------------------------------------------------------------------------------# 308 - 309 #--- clear interrupt flag - 310 - 311 - 312 - 313 #--- leave ISR - 314 005a 02BC POP {r1} // get special content back - 315 005c 0847 BX r1 // go back to where we came from - 316 - 317 - 318 #----------------------------------------------------------------------------------------# - 319 .lp2: // this label is only to nicify the line up in the .lst file - 320 005e 00004C10 .ltorg - 320 02401400 - 320 0048 - 321 #----------------------------------------------------------------------------------------# - 322 - 323 .end + 309 0072 00BF .align 2 + 310 .syntax unified + 311 .thumb + 313 _ISR_EXTI4: + 314 0074 00B5 PUSH {lr} + 315 + 316 #--- Entprellen + 317 0076 FFF7FEFF BL delay + 318 + 319 #--- Überprüfen, ob Taster noch gedrückt ist (PB4) + 320 007a 0948 LDR r0, =GPIOB_IDR + 321 007c 0168 LDR r1, [r0, #0] + 322 007e 1022 MOVS r2, #0x10 + 323 0080 1142 TST r1, r2 + 324 0082 04D1 BNE _clear_exti4 + 325 + 326 #--- LED1 & LED2 toggeln (0110 = 0x06) + 327 0084 0548 LDR r0, =GPIOA_ODR + 328 0086 0168 LDR r1, [r0, #0] + 329 0088 0622 MOVS r2, #0x06 + 330 008a 5140 EORS r1, r2 + 331 008c 0160 STR r1, [r0, #0] + 332 + 333 _clear_exti4: + 334 #--- Interrupt Flag löschen + 335 008e 0548 LDR r0, =EXTI_PR1 + 336 0090 1021 MOVS r1, #0x10 + 337 0092 0160 STR r1, [r0, #0] + 338 + 339 0094 00BD POP {pc} + 340 + 341 #----------------------------------------------------------------------------------------# + 342 .lp2: + 343 0096 00004C10 .ltorg + 343 02401400 + 343 00481004 + 343 00481404 + 343 0140 + 344 #----------------------------------------------------------------------------------------# + 345 + 346 .end DEFINED SYMBOLS G431_addr.s:39 *ABS*:40000000 APB1_BASE G431_addr.s:40 *ABS*:40010000 APB2_BASE @@ -1599,22 +1631,24 @@ DEFINED SYMBOLS G431_addr.s:762 *ABS*:e0042008 DBGMCU_APB1FZR1 G431_addr.s:763 *ABS*:e004200c DBGMCU_APB1FZR2 G431_addr.s:764 *ABS*:e0042010 DBGMCU_APB2DZR - task2.s:48 .vectortable:00000000 $d - task2.s:215 .exhand:00000000 _ISR_NMI - task2.s:248 .exhand:00000028 _ISR_HARDF - task2.s:281 .exhand:00000050 _ISR_S0 - task2.s:69 .text:00000000 $t - task2.s:75 .text:00000000 init - task2.s:160 .text:00000044 main - task2.s:182 .text:00000054 delay - task2.s:196 .text:00000060 stop - task2.s:202 .text:00000066 .lp1 - task2.s:203 .text:00000066 $d - task2.s:203 .text:00000068 $d - task2.s:211 .exhand:00000000 $t - task2.s:301 .exhand:00000058 _ISR_S1 - task2.s:319 .exhand:0000005e .lp2 - task2.s:320 .exhand:0000005e $d - task2.s:320 .exhand:00000060 $d + task2.s:38 .vectortable:00000000 $d + task2.s:61 .text:00000000 init + task2.s:221 .exhand:00000000 _ISR_NMI + task2.s:250 .exhand:00000028 _ISR_HARDF + task2.s:279 .exhand:00000050 _ISR_EXTI0 + task2.s:313 .exhand:00000074 _ISR_EXTI4 + task2.s:55 .text:00000000 $t + task2.s:181 .text:000000b8 main + task2.s:193 .text:000000c0 delay + task2.s:204 .text:000000c8 stop + task2.s:209 .text:000000ce .lp1 + task2.s:210 .text:000000ce $d + task2.s:210 .text:000000d0 $d + task2.s:217 .exhand:00000000 $t + task2.s:299 .exhand:0000006a _clear_exti0 + task2.s:333 .exhand:0000008e _clear_exti4 + task2.s:342 .exhand:00000096 .lp2 + task2.s:343 .exhand:00000096 $d + task2.s:343 .exhand:00000098 $d NO UNDEFINED SYMBOLS diff --git a/task2/task2.elf b/task2/task2.elf index a008f0bb1a6204dafab29b3f9a13c134cf34cac9..6474390d2697da2bc2cb87bc7865b73d3b1f8710 100755 GIT binary patch delta 1146 zcmZvcUr1AN6vxl+-feDey1TJ0afO4^a`tkiZhe&hPFrhxmiv<@-73d(ZjZdk^>T z6SDM-%*aA*a+Xqa767udn%@Eh6`38YGv`s{7p`4#GLIB<4MNN=EnYwMfTXPvsA6FxKYmXNHb9K0M47X;@ROz=4KW;5-u5A>cP!l5^8_VPUP+~YJ z2~iI~3``Jn;7%i3fkYjAn@AM+{sJo|*|Z|vCkqdVoisBd`>PwZUD%#K#LsVjjCk38 z*)rnQ%;hLN+FXmQyJI9nsH?}cjJ-29IuIpkR0>JMb0~06VBLlpN%xphS#*y%CY3zp zGfH?q51xl*WJRbUY+6=xU4$wXE5LPAON*kkD7p@yK&1zoc~aMkLV1W2F1>FbgLE$3gr|2rozVlBIG~w8=Zg0&Tow z>6pBgP2C=u&Z%OJDuz|j$@-Li?2_WK>BESf^6Z|Hvw;~$P$!o}7yIcQIrq^EFlkJt z03v)v#!qTYssP`S-&OFF9r%4kUccX{2UzbH`o}7G9r^ke=b*|5Ft-%|-e5c5uE;yk zPmG3c5Wt1}w1R!euPV46dC6c2{V*|f;Y?UP3*Co$+ER-zdf#}%2aX@rS|Oz!Ih^9M z9hxRU&5pN0>Qr`g=zMDQ;>2mpZ$UeoJMo)j+2uqCzbAW`2$DSekO<)QUm|3AD+9O* z3nnS~#I$6HY_N05kRVZZHyIQlzHy PP9*?tmj4&{*oOWO(4F97 delta 755 zcmZvYKWI}y9LIlm*Tk3fg{C1vYeerZA#w59EG`yljeq(?h#G>ldD`Gm9;HKv%qD{% z9fYJOh>MUx=x8WP6*cIjbaIf2OUDjYiA!6dQh)an%7glYyZe29f4+CW`}BtFu960) zlhaKp191R|H|=DwicS@pbH@WNdTx91;n2X%C>ZV57F&v+xE-?#T|x~vnl~ziZexN; z!)@e=)NI-WNqhHRh3p&SMg_WTcYo(k2Re`m7Rb5x7x%s_T!qg5&fgBe^(Y<3izn+3 zPPSW*2FX!Hcrr301L;`saa;TIPbj1GUDj+8Pik ze3lYtg-GK(t7+e9CL<2`teG z&nSFHp7rtSf7tcqy?zwz^)uMO`l&usV6cgN*O%9NKE47vQ1KOPA(Q?EF`)1p`Ld6< zkxM?_)BP)@OB;z;aTL;3u;v$XFk=^Q%@lKLcKR2It5P{jtDx?eGsIQT%PHJHm$Sh| z4)6igc3F~ZYQ)Ksc{Sl=XWZs$M(U$fyLU3jh=6jH{ncGVmgg?^KaH QsblRafXBW0y`A*^e+o;K2mk;8 diff --git a/task2/task2.lst b/task2/task2.lst index e83ec7d..22e8591 100644 --- a/task2/task2.lst +++ b/task2/task2.lst @@ -3,11 +3,11 @@ task2.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn - 0 .vectortable 00000014 08000000 08000000 00001000 2**2 + 0 .vectortable 0000006c 08000000 08000000 00001000 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 00000074 08000400 08000400 00001400 2**2 + 1 .text 00000100 08000400 08000400 00001400 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .exhand 00000068 08001000 08001000 00002000 2**2 + 2 .exhand 000000a8 08001000 08001000 00002000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE SYMBOL TABLE: 08000000 l d .vectortable 00000000 .vectortable @@ -15,14 +15,16 @@ SYMBOL TABLE: 08001000 l d .exhand 00000000 .exhand 08001000 l F .exhand 00000000 _ISR_NMI 08001028 l F .exhand 00000000 _ISR_HARDF -08001050 l F .exhand 00000000 _ISR_S0 -08000466 l .text 00000000 .lp1 -08001058 l F .exhand 00000000 _ISR_S1 -0800105e l .exhand 00000000 .lp2 +08001050 l F .exhand 00000000 _ISR_EXTI0 +08001074 l F .exhand 00000000 _ISR_EXTI4 +080004ce l .text 00000000 .lp1 +0800106a l .exhand 00000000 _clear_exti0 +0800108e l .exhand 00000000 _clear_exti4 +08001096 l .exhand 00000000 .lp2 08000400 g F .text 00000000 init -08000444 g F .text 00000000 main -08000454 g F .text 00000000 delay -08000460 g .text 00000000 stop +080004b8 g F .text 00000000 main +080004c0 g F .text 00000000 delay +080004c8 g .text 00000000 stop @@ -33,7 +35,10 @@ Disassembly of section .vectortable: 8000004: 08000401 .word 0x08000401 8000008: 08001001 .word 0x08001001 800000c: 08001029 .word 0x08001029 - 8000010: 08001051 .word 0x08001051 + ... + 8000058: 08001051 .word 0x08001051 + ... + 8000068: 08001075 .word 0x08001075 Disassembly of section .text: @@ -52,55 +57,110 @@ Disassembly of section .text: 8000416: 4682 mov sl, r0 8000418: 4683 mov fp, r0 800041a: 4684 mov ip, r0 - 800041c: 4912 ldr r1, [pc, #72] @ (8000468 <.lp1+0x2>) - 800041e: f04f 0201 mov.w r2, #1 - 8000422: 6808 ldr r0, [r1, #0] - 8000424: 4310 orrs r0, r2 - 8000426: 6008 str r0, [r1, #0] - 8000428: f04f 4190 mov.w r1, #1207959552 @ 0x48000000 - 800042c: 2203 movs r2, #3 + 800041c: 492c ldr r1, [pc, #176] @ (80004d0 <.lp1+0x2>) + 800041e: 2203 movs r2, #3 + 8000420: 6808 ldr r0, [r1, #0] + 8000422: 4310 orrs r0, r2 + 8000424: 6008 str r0, [r1, #0] + 8000426: f04f 4190 mov.w r1, #1207959552 @ 0x48000000 + 800042a: f04f 02ff mov.w r2, #255 @ 0xff 800042e: 6808 ldr r0, [r1, #0] 8000430: 4390 bics r0, r2 - 8000432: 2201 movs r2, #1 - 8000434: 4310 orrs r0, r2 - 8000436: 6008 str r0, [r1, #0] - 8000438: 490c ldr r1, [pc, #48] @ (800046c <.lp1+0x6>) - 800043a: 2201 movs r2, #1 - 800043c: 6808 ldr r0, [r1, #0] - 800043e: 4310 orrs r0, r2 - 8000440: 6008 str r0, [r1, #0] - 8000442: b662 cpsie i + 8000432: f04f 0255 mov.w r2, #85 @ 0x55 + 8000436: 4310 orrs r0, r2 + 8000438: 6008 str r0, [r1, #0] + 800043a: 4926 ldr r1, [pc, #152] @ (80004d4 <.lp1+0x6>) + 800043c: 220f movs r2, #15 + 800043e: 6808 ldr r0, [r1, #0] + 8000440: 4310 orrs r0, r2 + 8000442: 6008 str r0, [r1, #0] + 8000444: 4924 ldr r1, [pc, #144] @ (80004d8 <.lp1+0xa>) + 8000446: f240 3203 movw r2, #771 @ 0x303 + 800044a: 6808 ldr r0, [r1, #0] + 800044c: 4390 bics r0, r2 + 800044e: 6008 str r0, [r1, #0] + 8000450: 4922 ldr r1, [pc, #136] @ (80004dc <.lp1+0xe>) + 8000452: f240 3203 movw r2, #771 @ 0x303 + 8000456: 6808 ldr r0, [r1, #0] + 8000458: 4390 bics r0, r2 + 800045a: f240 1201 movw r2, #257 @ 0x101 + 800045e: 4310 orrs r0, r2 + 8000460: 6008 str r0, [r1, #0] + 8000462: 491f ldr r1, [pc, #124] @ (80004e0 <.lp1+0x12>) + 8000464: 2201 movs r2, #1 + 8000466: 6808 ldr r0, [r1, #0] + 8000468: 4310 orrs r0, r2 + 800046a: 6008 str r0, [r1, #0] + 800046c: 491d ldr r1, [pc, #116] @ (80004e4 <.lp1+0x16>) + 800046e: f04f 020f mov.w r2, #15 + 8000472: 6808 ldr r0, [r1, #0] + 8000474: 4390 bics r0, r2 + 8000476: 2201 movs r2, #1 + 8000478: 4310 orrs r0, r2 + 800047a: 6008 str r0, [r1, #0] + 800047c: 491a ldr r1, [pc, #104] @ (80004e8 <.lp1+0x1a>) + 800047e: f04f 020f mov.w r2, #15 + 8000482: 6808 ldr r0, [r1, #0] + 8000484: 4390 bics r0, r2 + 8000486: 2201 movs r2, #1 + 8000488: 4310 orrs r0, r2 + 800048a: 6008 str r0, [r1, #0] + 800048c: 4917 ldr r1, [pc, #92] @ (80004ec <.lp1+0x1e>) + 800048e: 2211 movs r2, #17 + 8000490: 6808 ldr r0, [r1, #0] + 8000492: 4310 orrs r0, r2 + 8000494: 6008 str r0, [r1, #0] + 8000496: 4916 ldr r1, [pc, #88] @ (80004f0 <.lp1+0x22>) + 8000498: 2211 movs r2, #17 + 800049a: 6808 ldr r0, [r1, #0] + 800049c: 4310 orrs r0, r2 + 800049e: 6008 str r0, [r1, #0] + 80004a0: 4914 ldr r1, [pc, #80] @ (80004f4 <.lp1+0x26>) + 80004a2: f44f 6288 mov.w r2, #1088 @ 0x440 + 80004a6: 6808 ldr r0, [r1, #0] + 80004a8: 4310 orrs r0, r2 + 80004aa: 6008 str r0, [r1, #0] + 80004ac: 4912 ldr r1, [pc, #72] @ (80004f8 <.lp1+0x2a>) + 80004ae: 6808 ldr r0, [r1, #0] + 80004b0: 2207 movs r2, #7 + 80004b2: 4310 orrs r0, r2 + 80004b4: 6008 str r0, [r1, #0] + 80004b6: b662 cpsie i -08000444
: - 8000444: 4909 ldr r1, [pc, #36] @ (800046c <.lp1+0x6>) - 8000446: 4050 eors r0, r2 - 8000448: 6008 str r0, [r1, #0] - 800044a: f000 f803 bl 8000454 - 800044e: f7ff bff9 b.w 8000444
- 8000452: bf00 nop +080004b8
: + 80004b8: bf30 wfi + 80004ba: f7ff bffd b.w 80004b8
+ 80004be: bf00 nop -08000454 : - 8000454: 2600 movs r6, #0 - 8000456: 4f06 ldr r7, [pc, #24] @ (8000470 <.lp1+0xa>) - 8000458: 3601 adds r6, #1 - 800045a: 42be cmp r6, r7 - 800045c: d1fc bne.n 8000458 - 800045e: 4770 bx lr +080004c0 : + 80004c0: 480e ldr r0, [pc, #56] @ (80004fc <.lp1+0x2e>) + 80004c2: 3801 subs r0, #1 + 80004c4: d1fd bne.n 80004c2 + 80004c6: 4770 bx lr -08000460 : - 8000460: bf00 nop - 8000462: f7ff bffd b.w 8000460 +080004c8 : + 80004c8: bf00 nop + 80004ca: f7ff bffd b.w 80004c8 -08000466 <.lp1>: - 8000466: 0000 .short 0x0000 - 8000468: 4002104c .word 0x4002104c - 800046c: 48000014 .word 0x48000014 - 8000470: 001e8480 .word 0x001e8480 +080004ce <.lp1>: + 80004ce: 0000 .short 0x0000 + 80004d0: 4002104c .word 0x4002104c + 80004d4: 48000014 .word 0x48000014 + 80004d8: 48000400 .word 0x48000400 + 80004dc: 4800040c .word 0x4800040c + 80004e0: 40021060 .word 0x40021060 + 80004e4: 40010008 .word 0x40010008 + 80004e8: 4001000c .word 0x4001000c + 80004ec: 4001040c .word 0x4001040c + 80004f0: 40010400 .word 0x40010400 + 80004f4: e000e100 .word 0xe000e100 + 80004f8: e0042004 .word 0xe0042004 + 80004fc: 00019e10 .word 0x00019e10 Disassembly of section .exhand: 08001000 <_ISR_NMI>: - 8001000: 4917 ldr r1, [pc, #92] @ (8001060 <.lp2+0x2>) + 8001000: 4925 ldr r1, [pc, #148] @ (8001098 <.lp2+0x2>) 8001002: f04f 0201 mov.w r2, #1 8001006: 6808 ldr r0, [r1, #0] 8001008: 4310 orrs r0, r2 @@ -112,7 +172,7 @@ Disassembly of section .exhand: 8001016: 2244 movs r2, #68 @ 0x44 8001018: 4310 orrs r0, r2 800101a: 6008 str r0, [r1, #0] - 800101c: 4911 ldr r1, [pc, #68] @ (8001064 <.lp2+0x6>) + 800101c: 491f ldr r1, [pc, #124] @ (800109c <.lp2+0x6>) 800101e: 220a movs r2, #10 8001020: 6808 ldr r0, [r1, #0] 8001022: 4390 bics r0, r2 @@ -120,7 +180,7 @@ Disassembly of section .exhand: 8001026: e7eb b.n 8001000 <_ISR_NMI> 08001028 <_ISR_HARDF>: - 8001028: 490d ldr r1, [pc, #52] @ (8001060 <.lp2+0x2>) + 8001028: 491b ldr r1, [pc, #108] @ (8001098 <.lp2+0x2>) 800102a: f04f 0201 mov.w r2, #1 800102e: 6808 ldr r0, [r1, #0] 8001030: 4310 orrs r0, r2 @@ -132,25 +192,57 @@ Disassembly of section .exhand: 800103e: 2211 movs r2, #17 8001040: 4310 orrs r0, r2 8001042: 6008 str r0, [r1, #0] - 8001044: 4907 ldr r1, [pc, #28] @ (8001064 <.lp2+0x6>) + 8001044: 4915 ldr r1, [pc, #84] @ (800109c <.lp2+0x6>) 8001046: 2205 movs r2, #5 8001048: 6808 ldr r0, [r1, #0] 800104a: 4390 bics r0, r2 800104c: 6008 str r0, [r1, #0] 800104e: e7eb b.n 8001028 <_ISR_HARDF> -08001050 <_ISR_S0>: +08001050 <_ISR_EXTI0>: 8001050: b500 push {lr} - 8001052: bc02 pop {r1} - 8001054: 4708 bx r1 - 8001056: bf00 nop + 8001052: f7ff fa35 bl 80004c0 + 8001056: 4812 ldr r0, [pc, #72] @ (80010a0 <.lp2+0xa>) + 8001058: 6801 ldr r1, [r0, #0] + 800105a: 2201 movs r2, #1 + 800105c: 4211 tst r1, r2 + 800105e: d104 bne.n 800106a <_clear_exti0> + 8001060: 480e ldr r0, [pc, #56] @ (800109c <.lp2+0x6>) + 8001062: 6801 ldr r1, [r0, #0] + 8001064: 2209 movs r2, #9 + 8001066: 4051 eors r1, r2 + 8001068: 6001 str r1, [r0, #0] -08001058 <_ISR_S1>: - 8001058: b500 push {lr} - 800105a: bc02 pop {r1} - 800105c: 4708 bx r1 +0800106a <_clear_exti0>: + 800106a: 480e ldr r0, [pc, #56] @ (80010a4 <.lp2+0xe>) + 800106c: 2101 movs r1, #1 + 800106e: 6001 str r1, [r0, #0] + 8001070: bd00 pop {pc} + 8001072: bf00 nop -0800105e <.lp2>: - 800105e: 0000 .short 0x0000 - 8001060: 4002104c .word 0x4002104c - 8001064: 48000014 .word 0x48000014 +08001074 <_ISR_EXTI4>: + 8001074: b500 push {lr} + 8001076: f7ff fa23 bl 80004c0 + 800107a: 4809 ldr r0, [pc, #36] @ (80010a0 <.lp2+0xa>) + 800107c: 6801 ldr r1, [r0, #0] + 800107e: 2210 movs r2, #16 + 8001080: 4211 tst r1, r2 + 8001082: d104 bne.n 800108e <_clear_exti4> + 8001084: 4805 ldr r0, [pc, #20] @ (800109c <.lp2+0x6>) + 8001086: 6801 ldr r1, [r0, #0] + 8001088: 2206 movs r2, #6 + 800108a: 4051 eors r1, r2 + 800108c: 6001 str r1, [r0, #0] + +0800108e <_clear_exti4>: + 800108e: 4805 ldr r0, [pc, #20] @ (80010a4 <.lp2+0xe>) + 8001090: 2110 movs r1, #16 + 8001092: 6001 str r1, [r0, #0] + 8001094: bd00 pop {pc} + +08001096 <.lp2>: + 8001096: 0000 .short 0x0000 + 8001098: 4002104c .word 0x4002104c + 800109c: 48000014 .word 0x48000014 + 80010a0: 48000410 .word 0x48000410 + 80010a4: 40010414 .word 0x40010414 diff --git a/task2/task2.map b/task2/task2.map index 0f272fa..55ed5a7 100644 --- a/task2/task2.map +++ b/task2/task2.map @@ -11,61 +11,61 @@ RAM 0x20000000 0x00001800 rw Linker script and memory map -.vectortable 0x08000000 0x14 +.vectortable 0x08000000 0x6c 0x08000000 . = ALIGN (0x4) *(.vectortable) - .vectortable 0x08000000 0x14 task2.o - 0x08000014 . = ALIGN (0x4) + .vectortable 0x08000000 0x6c task2.o + 0x0800006c . = ALIGN (0x4) -.text 0x08000400 0x74 +.text 0x08000400 0x100 *(.text) - .text 0x08000400 0x74 task2.o + .text 0x08000400 0x100 task2.o 0x08000400 init - 0x08000444 main - 0x08000454 delay - 0x08000460 stop + 0x080004b8 main + 0x080004c0 delay + 0x080004c8 stop -.glue_7 0x08000474 0x0 - .glue_7 0x08000474 0x0 linker stubs +.glue_7 0x08000500 0x0 + .glue_7 0x08000500 0x0 linker stubs -.glue_7t 0x08000474 0x0 - .glue_7t 0x08000474 0x0 linker stubs +.glue_7t 0x08000500 0x0 + .glue_7t 0x08000500 0x0 linker stubs -.vfp11_veneer 0x08000474 0x0 - .vfp11_veneer 0x08000474 0x0 linker stubs +.vfp11_veneer 0x08000500 0x0 + .vfp11_veneer 0x08000500 0x0 linker stubs -.v4_bx 0x08000474 0x0 - .v4_bx 0x08000474 0x0 linker stubs +.v4_bx 0x08000500 0x0 + .v4_bx 0x08000500 0x0 linker stubs -.iplt 0x08000474 0x0 - .iplt 0x08000474 0x0 task2.o +.iplt 0x08000500 0x0 + .iplt 0x08000500 0x0 task2.o -.exhand 0x08001000 0x68 +.exhand 0x08001000 0xa8 *(.exhand) - .exhand 0x08001000 0x68 task2.o + .exhand 0x08001000 0xa8 task2.o LOAD task2.o OUTPUT(task2.elf elf32-littlearm) LOAD linker stubs -.rel.dyn 0x08001068 0x0 - .rel.iplt 0x08001068 0x0 task2.o +.rel.dyn 0x080010a8 0x0 + .rel.iplt 0x080010a8 0x0 task2.o -.data 0x08001068 0x0 - .data 0x08001068 0x0 task2.o +.data 0x080010a8 0x0 + .data 0x080010a8 0x0 task2.o -.igot.plt 0x08001068 0x0 - .igot.plt 0x08001068 0x0 task2.o +.igot.plt 0x080010a8 0x0 + .igot.plt 0x080010a8 0x0 task2.o -.bss 0x08001068 0x0 - .bss 0x08001068 0x0 task2.o +.bss 0x080010a8 0x0 + .bss 0x080010a8 0x0 task2.o .ARM.attributes 0x00000000 0x21 .ARM.attributes 0x00000000 0x21 task2.o -.debug_line 0x00000000 0xc1 - .debug_line 0x00000000 0xc1 task2.o +.debug_line 0x00000000 0x112 + .debug_line 0x00000000 0x112 task2.o .debug_info 0x00000000 0x22 .debug_info 0x00000000 0x22 task2.o diff --git a/task2/task2.o b/task2/task2.o index e2ae9de9d273b1101a6fe4f863144188f93cfba5..beb3f2115539f03be4c1fcba67a7889b9951dbf8 100644 GIT binary patch delta 1982 zcmZuyUuaup6hGg0lO=bpX_BUYwz@U0BWh-BxOq z4aMuG4+BA3FNi)UJ`NNdl#QvBq9}+DQho7h*gc33zJwz9r15vYdv9_LJ8*J-zjMz0 zo$tH(zGU~!?{0{Vy!-havBgU&9HSu`q_w-0Cxc8X&=`$VktW_+xV~^>;q8TY7LGfb znXIQzC2Q5@#>r~4C6o1yQ`P2+l5<6;FQ|?=_P#dFwPej~V|!m@xo^}Fe&4y;5vSVh zQzF9T(%~*Xk+L)2)ScKjY4m9*-K107I3 z@k-k7p=Z;w&(0B5(%3={OHK)|C@gnQm`213jK?M?4P(+!xBvj8660J{*f2~^F@q_E zppmK8lQ*=UGSU-#=4Y*L14{c*K&DgrK;5iI0kQUkH{nm836cYI^=* zxxxva=r5B;=~j2EK@mUCdM9-?Vu`P!5S7wyur+I^fQqeZiTc zMd$f5iwsLNwocZ{>IqtWd1ZNNZE^YPdIR+iDRFt48kZaEbZMz^nJz4^EM22l)~~Gc zh_B#Bhb8^U@vy{oB$7jtk{pGkUXD0dXE|!pr8vj|2jUBkx}*af zGl4)>62BJNFA2AWWKPm>5FZVq>Q4uK&{1{h_zNL_Ap$B&2n8jid&Svjw6*0GuQ9uY z)9)QEoBCAQ@5*^jc~q8!cd=aL@P4@%FF|_6+b$Pe8(qgRoOR-G-Z>AOhoebt0D(RQ zxy2wb?qfR%=d)nL+3Mj`-~>F>I}OZwp;aVNR#4|yg~jL45f!`|5#)R*xC9(N!=mRj z!aqUB!W#byMD=b$Zwfiya1YN91ur2HJ_JZ_KrqW7u&~BU4l$QD(8q5uG=6(*ufwB* z?_n^1ojjOtgPO}?d}~>dSH*S@f^{FNPp+|l97L7GM;;3KkRXPGKLU;p-o;?<8+^(fZeqmO?Lz1M F{0CVZ_`3iA delta 1430 zcmZuxUr1A76hGhhId`{a&grJIuzT;;5`v|X2DZ(awVYT+=0gwZl!^^Zr3O(!GxMc- z5k8`N33|$xK$7gGvZA-bte1MK9*VF)41@?GJLm4sZmR?5p7T3@e&_q{&fT+dws3w@ z&3)JjB)08_sRti;;p8l+pn(nn2*M@^!RE2Vg~WK`VqzlUNp>$YuB6@VN~(K#vQ6kp zda|AAgk4F7h`hmBNAf^iNv(eWwTe0ia}X-+X3dXw{d_gL7v_u@bh&w5yb7RWY@!Yz z4k{}F#W;ugsFt^wzpNtZG=?atub;~>;+5}MX~>?mtwrG;f1n_(X^Gh2eF(CXhjY(? z>6%3X+Ez^qqN0d(s$u-9aH*OeY!t4DM%DG2xR#5E+OT*EVa|auuyHz4pkE_XPCIf&0JWx3qdqm9s?>^a!q(@0<& zWQH?YI5ChJhNH)Z2F}2#?8qp!cA`3~IqXMU=i@L)wuT$a$Qd`T$#DnhHe7JnLKY8s zmaM{|lx(?K=jJ=|g%uodxq*8))R=aIX^n>UCLt0Tc}31gsvSsYbSZKvvRgJs@A53j zFHzkw){?KQl-}4zJ_WKb=9679cis)zrjWZzUWx^JuNNvYVnZ!KrSGZ@m0m4PCwYLH zHoW|U>PYsXQe8oU2%gA+SYMorPY85_fp*c#@E92y zFh&ftT?K{=`c?)zetRBb@SH2ks9Y|!`dUt7*h;)?c?q;-1>(zQI}Ii2;4&8Xd2gU= zoi~m1RQav7GI|v=R$>MJF;$GwiRtbI;@jv8fKfDtEFgnMCzdbb?y?m`lN$a)nDffT VxW9BF2=K!zoo%|U9x3lr>2D)nw%z~$ diff --git a/task2/task2.s b/task2/task2.s index 66920da..6e284dd 100644 --- a/task2/task2.s +++ b/task2/task2.s @@ -7,43 +7,49 @@ .include "G431_addr.s" - // Zusätzliche und benötigte Adressen + // Falls in G431_addr.s vorhanden, diesen Block löschen um Fehler zu vermeiden: .equ RCC_AHB2ENR, 0x4002104C .equ RCC_APB2ENR, 0x40021060 .equ GPIOA_MODER, 0x48000000 .equ GPIOA_ODR, 0x48000014 - .equ GPIOC_MODER, 0x48000800 - .equ GPIOC_PUPDR, 0x4800080C - .equ GPIOC_IDR, 0x48000810 + .equ GPIOB_MODER, 0x48000400 + .equ GPIOB_PUPDR, 0x4800040C + .equ GPIOB_IDR, 0x48000410 .equ SYSCFG_BASE, 0x40010000 - .equ SYSCFG_EXTICR4, (SYSCFG_BASE + 0x14) + .equ SYSCFG_EXTICR1, (SYSCFG_BASE + 0x08) + .equ SYSCFG_EXTICR2, (SYSCFG_BASE + 0x0C) .equ EXTI_BASE, 0x40010400 .equ EXTI_IMR1, (EXTI_BASE + 0x00) .equ EXTI_FTSR1, (EXTI_BASE + 0x0C) .equ EXTI_PR1, (EXTI_BASE + 0x14) - .equ NVIC_ISER1, 0xE000E104 + .equ NVIC_ISER0, 0xE000E100 + + .equ DBGMCU_CR, 0xE0042004 // Adresse des Debug Configuration Registers #----------------------------------------------------------------------------------------# - .section .vectortable,"a" // vector table at begin of ROM + .section .vectortable,"a" #----------------------------------------------------------------------------------------# .align 2 .word 0x20004000 // initial Stack Pointer - .word 0x08000401 // initial Program Counter + .word init // initial Program Counter .word _ISR_NMI // non-masking interrupt .word _ISR_HARDF // hard fault interrupt - .space 0xD0 // padding 208 Bytes bis Offset 0xE0 (EXTI15_10 IRQ 40) - .word _ISR_S0_S1 // gemeinsamer Interrupt für PC13 (S0) und PC14 (S1) + .space 0x48 // Padding 72 Bytes (Offset 0x10 -> 0x58) + .word _ISR_EXTI0 // EXTI0_IRQHandler (PB0 / S0) - IRQ 6 + + .space 0x0C // Padding 12 Bytes (Offset 0x5C -> 0x68) + .word _ISR_EXTI4 // EXTI4_IRQHandler (PB4 / S1) - IRQ 10 #----------------------------------------------------------------------------------------# - .text // section .text (default section for program code) + .text #----------------------------------------------------------------------------------------# .align 2 @@ -53,9 +59,9 @@ .global init .type init, %function init: - CPSID i // disable interrupts globally + CPSID i - MOVS r0, #0 // safely initialize the GPRs + MOVS r0, #0 MOVS r1, #0 MOVS r2, #0 MOVS r3, #0 @@ -69,43 +75,43 @@ init: MOV r11, r0 MOV r12, r0 -#--- enable port clocking +#--- enable port clocking (GPIOA, GPIOB) LDR r1, =RCC_AHB2ENR - MOVS r2, #0x05 // Bit 0 (GPIOA) und Bit 2 (GPIOC) + MOVS r2, #0x03 // Bit 0 (GPIOA) und Bit 1 (GPIOB) LDR r0, [r1, #0] ORRS r0, r2 STR r0, [r1, #0] #--- port init -#- LEDs (PA0-PA3) +#- LEDs (PA0 - PA3) als Output LDR r1, =GPIOA_MODER - LDR r2, =0x000000FF // Maske PA0-PA3 + LDR r2, =0x000000FF LDR r0, [r1, #0] BICS r0, r2 - LDR r2, =0x00000055 // Maske Output 0101 0101 + LDR r2, =0x00000055 ORRS r0, r2 STR r0, [r1, #0] #- switch LED off LDR r1, =GPIOA_ODR - MOVS r2, #0x0F // Maske LED0-3 + MOVS r2, #0x0F LDR r0, [r1, #0] ORRS r0, r2 STR r0, [r1, #0] -#- buttons (PC13, PC14 als Input) - LDR r1, =GPIOC_MODER - LDR r2, =0x3C000000 // Maske Bits 26-29 +#- buttons (PB0, PB4) als Input + LDR r1, =GPIOB_MODER + LDR r2, =0x00000303 // Maske Bits 0:1 (PB0) und 8:9 (PB4) LDR r0, [r1, #0] BICS r0, r2 STR r0, [r1, #0] -#- Pull-Up für PC13, PC14 - LDR r1, =GPIOC_PUPDR - LDR r2, =0x3C000000 +#- Pull-Up für PB0, PB4 + LDR r1, =GPIOB_PUPDR + LDR r2, =0x00000303 LDR r0, [r1, #0] BICS r0, r2 - LDR r2, =0x14000000 // 01 = Pull-Up für PC13 (Bits 27:26) und PC14 (Bits 29:28) + LDR r2, =0x00000101 // 01 = Pull-Up für PB0 und PB4 ORRS r0, r2 STR r0, [r1, #0] @@ -118,36 +124,51 @@ init: ORRS r0, r2 STR r0, [r1, #0] -#- connect GPIO pins of the buttons to EXTended Interrupt controller lines (EXTI) - LDR r1, =SYSCFG_EXTICR4 - LDR r2, =0x00000FF0 // Maske für EXTI13 (Bits 7:4) und EXTI14 (Bits 11:8) +#- connect GPIO pins to EXTI lines + LDR r1, =SYSCFG_EXTICR1 // EXTI0 (PB0) + LDR r2, =0x000F // Maske EXTI0 (Bits 3:0) LDR r0, [r1, #0] BICS r0, r2 - LDR r2, =0x00000220 // Port C (0010) für EXTI13 und EXTI14 + MOVS r2, #0x0001 // Port B (0001) ORRS r0, r2 STR r0, [r1, #0] -#- configure lines in EXTI module (EXTI_* registers) - LDR r1, =EXTI_FTSR1 // Fallende Flanke - LDR r2, =0x00006000 // Bits 13 und 14 + LDR r1, =SYSCFG_EXTICR2 // EXTI4 (PB4) + LDR r2, =0x000F // Maske EXTI4 (Bits 3:0) + LDR r0, [r1, #0] + BICS r0, r2 + MOVS r2, #0x0001 // Port B (0001) + ORRS r0, r2 + STR r0, [r1, #0] + +#- configure EXTI lines (falling edge, unmask) + LDR r1, =EXTI_FTSR1 + MOVS r2, #0x11 // Bit 0 (EXTI0) und Bit 4 (EXTI4) LDR r0, [r1, #0] ORRS r0, r2 STR r0, [r1, #0] - LDR r1, =EXTI_IMR1 // Maskierung aufheben - LDR r2, =0x00006000 + LDR r1, =EXTI_IMR1 + MOVS r2, #0x11 // Bit 0 und Bit 4 LDR r0, [r1, #0] ORRS r0, r2 STR r0, [r1, #0] -#- NVIC: set interrupt priority, clear pending bits - LDR r1, =NVIC_ISER1 - LDR r2, =0x00000100 // Bit 8 für IRQ 40 (EXTI15_10) +#- NVIC: enable interrupts EXTI0 (IRQ 6) & EXTI4 (IRQ 10) + LDR r1, =NVIC_ISER0 + LDR r2, =0x00000440 // Bit 6 (EXTI0) und Bit 10 (EXTI4) LDR r0, [r1, #0] ORRS r0, r2 STR r0, [r1, #0] - CPSIE i // enable interrupts globally + #--- wachhalten während WFI + LDR r1, =DBGMCU_CR + LDR r0, [r1, #0] + MOVS r2, #0x07 // Setzt DBG_SLEEP, DBG_STOP und DBG_STANDBY Bits + ORRS r0, r2 + STR r0, [r1, #0] + + CPSIE i #----------------------------------------------------------------------------------------# @@ -170,7 +191,7 @@ main: .global delay .type delay, %function delay: - LDR r0, =106000 // Entprell-Zeit ~20ms + LDR r0, =106000 .L1: SUBS r0, r0, #1 BNE .L1 @@ -190,7 +211,7 @@ stop: #----------------------------------------------------------------------------------------# #----------------------------------------------------------------------------------------# - .section .exhand,"ax" // section for exception handlers + .section .exhand,"ax" #----------------------------------------------------------------------------------------# .align 2 @@ -254,69 +275,68 @@ _ISR_HARDF: .align 2 .syntax unified .thumb - .type _ISR_S0_S1, %function -_ISR_S0_S1: - PUSH {r4, r5, lr} // Wichtig: Register sichern gemäß AAPCS + .type _ISR_EXTI0, %function +_ISR_EXTI0: + PUSH {lr} -_check_S0: - LDR r4, =EXTI_PR1 - LDR r5, [r4, #0] - LDR r2, =0x2000 // Maske für S0 (PC13 / Bit 13) - TST r5, r2 - BEQ _check_S1 // Wenn Bit 13 nicht gesetzt, überspringen - -#--- do the work S0 - BL delay // Entprellen - - LDR r0, =GPIOC_IDR - LDR r1, [r0, #0] - LDR r2, =0x2000 - TST r1, r2 - BNE _clear_S0 // Abbruch, wenn High (Taster prellt / schon losgelassen) - - LDR r0, =GPIOA_ODR - LDR r1, [r0, #0] - MOVS r2, #0x09 // LED0 & LED3 toggeln (1001) - EORS r1, r2 - STR r1, [r0, #0] - -_clear_S0: -#--- clear interrupt flag S0 - LDR r4, =EXTI_PR1 - LDR r5, =0x2000 - STR r5, [r4, #0] - -_check_S1: - LDR r4, =EXTI_PR1 - LDR r5, [r4, #0] - LDR r2, =0x4000 // Maske für S1 (PC14 / Bit 14) - TST r5, r2 - BEQ _leave_ISR // Wenn Bit 14 nicht gesetzt, Ende - -#--- do the work S1 +#--- Entprellen BL delay - LDR r0, =GPIOC_IDR +#--- Überprüfen, ob Taster noch gedrückt ist (PB0) + LDR r0, =GPIOB_IDR LDR r1, [r0, #0] - LDR r2, =0x4000 + MOVS r2, #0x01 TST r1, r2 - BNE _clear_S1 // Abbruch, wenn High + BNE _clear_exti0 +#--- LED0 & LED3 toggeln (1001 = 0x09) LDR r0, =GPIOA_ODR LDR r1, [r0, #0] - MOVS r2, #0x06 // LED1 & LED2 toggeln (0110) + MOVS r2, #0x09 EORS r1, r2 STR r1, [r0, #0] -_clear_S1: -#--- clear interrupt flag S1 - LDR r4, =EXTI_PR1 - LDR r5, =0x4000 - STR r5, [r4, #0] +_clear_exti0: +#--- Interrupt Flag löschen + LDR r0, =EXTI_PR1 + MOVS r1, #0x01 + STR r1, [r0, #0] -_leave_ISR: -#--- leave ISR - POP {r4, r5, pc} // Register wiederherstellen und zurückkehren + POP {pc} + +#----------------------------------------------------------------------------------------# + + .align 2 + .syntax unified + .thumb + .type _ISR_EXTI4, %function +_ISR_EXTI4: + PUSH {lr} + +#--- Entprellen + BL delay + +#--- Überprüfen, ob Taster noch gedrückt ist (PB4) + LDR r0, =GPIOB_IDR + LDR r1, [r0, #0] + MOVS r2, #0x10 + TST r1, r2 + BNE _clear_exti4 + +#--- LED1 & LED2 toggeln (0110 = 0x06) + LDR r0, =GPIOA_ODR + LDR r1, [r0, #0] + MOVS r2, #0x06 + EORS r1, r2 + STR r1, [r0, #0] + +_clear_exti4: +#--- Interrupt Flag löschen + LDR r0, =EXTI_PR1 + MOVS r1, #0x10 + STR r1, [r0, #0] + + POP {pc} #----------------------------------------------------------------------------------------# .lp2: @@ -325,4 +345,3 @@ _leave_ISR: .end -#************************************** E O F *******************************************# diff --git a/task2/task2_tobi.s b/task2/task2_tobi.s deleted file mode 100644 index 52617cb..0000000 --- a/task2/task2_tobi.s +++ /dev/null @@ -1,325 +0,0 @@ -#****************************************************************************************# -# Project: task2 - ASM: Interrupts -# File: task2.s -# -# Language: ASM -# -# Hardware: STefi Light v1.1 -# Processor: STM32G431KBT6U -# -# Author: Manuel Lederhofer -# Datum: 31.10.2014 -# -# Version: 6.0 -# History: -# 31.10.2014 ML create file -# 27.09.2018 ML edit comments, extend vector table -# 18.12.2018 ML port from MKL05Z32VLC4 to STM32L476RG -# 27.02.2019 ML move section of exception handlers to bottom of file -# 25.09.2019 ML minor changes for a better code and comment understanding -# 04.09.2020 HL port from STM32L476RG to STM32F411xE -# 21.09.2020 ML tidy up, comments and formatting -# 29.09.2021 ML port from STM32F411xE to STM32F042K6T6 -# 09.03.2022 ML port from STM32F042K6T6 to STM32G431KBT6U -# 10.02.2025 TK remove ASM:Polling,move ASM:Interrupts to task2 -# 24.06.2025 TK remove /* ... place your code here ... */ -# -# Status: working -# -# Description: -# See the description and requirements of the requested application -# in the lab exercise guide. -# -# Notes: -# - MCU speed at startup is 16 MHz -# -# ToDo: -# - Change the example code to match the description and requirements -# of the requested application in the lab exercise guide. -#****************************************************************************************# - - .include "G431_addr.s" - - -#----------------------------------------------------------------------------------------# - .section .vectortable,"a" // vector table at begin of ROM -#----------------------------------------------------------------------------------------# - - .align 2 - - .word 0x20004000 // initial Stack Pointer: 0x20000000 (RAM base) + 0x4000 (16K SRAM1 length) - .word 0x08000401 // initial Program Counter - .word _ISR_NMI // non-masking interrupt - .word _ISR_HARDF // hard fault interrupt - - - - /* N.B. - Look at the .space or the .org assembler directive to insert the address of the - ISRs at the right place in the vector table. Verify your settings by the help of - the list file. */ - - .word _ISR_S0 - - -#----------------------------------------------------------------------------------------# - .text // section .text (default section for program code) -#----------------------------------------------------------------------------------------# - - .align 2 - .syntax unified - .thumb - .thumb_func - .global init - .type init, %function -init: - CPSID i // disable interrupts globally - - MOVS r0, #0 // safely initialize the GPRs - MOVS r1, #0 - MOVS r2, #0 - MOVS r3, #0 - MOVS r4, #0 - MOVS r5, #0 - MOVS r6, #0 - MOVS r7, #0 - MOV r8, r0 - MOV r9, r0 - MOV r10, r0 - MOV r11, r0 - MOV r12, r0 - -#--- enable port clocking - LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR - MOV r2, #0x01 // load mask for adjusting port clock gating (A: LEDs) - LDR r0, [r1, #0] // get current value of RCC_AHB2ENR - ORRS r0, r0, r2 // configure clock gating for ports - STR r0, [r1, #0] // apply settings - -#--- port init -#- LEDs - LDR r1, =GPIOA_MODER // load port A mode register address - MOVS r2, #0x03 // prepare mask - LDR r0, [r1, #0] // get current value of port A mode register - BICS r0, r2 // delete bits - MOVS r2, #0x01 // load configuration mask - ORRS r0, r0, r2 // apply mask - STR r0, [r1, #0] // apply result to port A mode register - -# LDR r1, =GPIOB_MODER -# MOVS r3, #0x03 -# LDR r0, [r1, #1] -# BICS r0, r3 -# MOVS r3, #0x01 -# ORRS r0, r0, r3 -# STR r0, [r1, #1] - -#- switch LED off - LDR r1, =GPIOA_ODR // load port A output data register - MOVS r2, #0x01 // load mask for LED - LDR r0, [r1, #0] // get current value of GPIOA - ORRS r0, r0, r2 // configure pin state - STR r0, [r1, #0] // apply settings - -#- buttons - - /* ... place your code here ... */ - - -#--- button interrupt config - -#- enable clock for SYSCFG module - - -#- connect GPIO pins of the buttons to EXTended Interrupt controller lines (EXTI) -# in SYSCFG module (SYSCFG_* registers) - - - - -#- configure lines in EXTI module (EXTI_* registers) - - - -#- NVIC: set interrupt priority, clear pending bits -# and enable interrupts for buttons (see: PM, ch. 4.3, NVIC) - - - - CPSIE i // enable interrupts globally - - -#----------------------------------------------------------------------------------------# - - .align 2 - .syntax unified - .thumb - .thumb_func - .global main - .type main, %function -main: - LDR r1, =GPIOA_ODR - EORS r0, r0, r2 - - STR r0, [r1, #0] - - - - BL delay - - - B main - - -#----------------------------------------------------------------------------------------# - - .align 2 - .syntax unified - .thumb - .thumb_func - .global delay - .type delay, %function -delay: - MOVS r6, #0 // ... - LDR r7, =2000000 // ... -.L1: - ADDS r6, r6, #1 // ... - CMP r6, r7 // ... - BNE .L1 // ... - BX lr // ... - - -#----------------------------------------------------------------------------------------# - - .align 2 - .global stop -stop: - NOP // do nothing (NOP is here to avoid a debugger crash, only) - B stop // if this line is reached, something went wrong - - -#----------------------------------------------------------------------------------------# -.lp1: // this label is only to nicify the line up in the .lst file - .ltorg -#----------------------------------------------------------------------------------------# - - -#----------------------------------------------------------------------------------------# - .section .exhand,"ax" // section for exception handlers -#----------------------------------------------------------------------------------------# - - .align 2 - .syntax unified - .thumb - .type _ISR_NMI, %function -_ISR_NMI: -#--- enable clock - LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR - MOV r2, #0x01 // load mask - LDR r0, [r1, #0] // get current value of RCC_AHB2ENR - ORRS r0, r0, r2 // configure clock gating for port - STR r0, [r1, #0] // apply settings - -#--- init pins - LDR r1, =GPIOA_MODER // load port A mode register address - MOVS r2, #0xFF // prepare mask - LDR r0, [r1, #0] // get current value of port A mode register - BICS r0, r0, r2 // delete bits - MOVS r2, #0x44 // load configuration mask - ORRS r0, r0, r2 // configure pins - STR r0, [r1, #0] // apply settings to port A mode register - -#--- switch some LEDs on - LDR r1, =GPIOA_ODR // load port A data output register address - MOVS r2, #0x0A // load mask for blue and yellow LED - LDR r0, [r1, #0] - BICS r0, r0, r2 - STR r0, [r1, #0] // switch LEDs on - - B _ISR_NMI - - -#----------------------------------------------------------------------------------------# - - .align 2 - .syntax unified - .thumb - .type _ISR_HARDF, %function -_ISR_HARDF: -#--- enable clock - LDR r1, =RCC_AHB2ENR // load address of RCC_AHB2ENR - MOV r2, #0x01 // load mask - LDR r0, [r1, #0] // get current value of RCC_AHB2ENR - ORRS r0, r0, r2 // configure clock gating for port - STR r0, [r1, #0] // apply settings - -#--- init pins - LDR r1, =GPIOA_MODER // load port A mode register address - MOVS r2, #0xFF // prepare mask - LDR r0, [r1, #0] // get current value of port A mode register - BICS r0, r0, r2 // delete bits - MOVS r2, #0x11 // load configuration mask - ORRS r0, r0, r2 // configure pins - STR r0, [r1, #0] // apply settings to port A mode register - -#--- switch some LEDs on - LDR r1, =GPIOA_ODR // load port A data output register address - MOVS r2, #0x05 // load mask for red and green LED - LDR r0, [r1, #0] - BICS r0, r0, r2 - STR r0, [r1, #0] // switch LEDs on - - B _ISR_HARDF - - -#----------------------------------------------------------------------------------------# - - .align 2 - .syntax unified - .thumb - .type _ISR_S0, %function -_ISR_S0: - PUSH {lr} // save special content - -#--- do the work - - -#--- clear interrupt flag - - -#--- leave ISR - POP {r1} // get special content back - BX r1 // go back to where we came from - - -#----------------------------------------------------------------------------------------# - - .align 2 - .syntax unified - .thumb - .type _ISR_S1, %function -_ISR_S1: - PUSH {lr} // save special content - -#--- do the work - - - - -#--- clear interrupt flag - - - -#--- leave ISR - POP {r1} // get special content back - BX r1 // go back to where we came from - - -#----------------------------------------------------------------------------------------# -.lp2: // this label is only to nicify the line up in the .lst file - .ltorg -#----------------------------------------------------------------------------------------# - - .end - -#************************************** E O F *******************************************#