From ecd65b11b4ef3e07479315b050ef63cf3b8a9e89 Mon Sep 17 00:00:00 2001 From: Trevor Barnes Date: Sun, 24 Nov 2019 23:51:24 -0600 Subject: [PATCH] class done --- .metadata/.log | 1343 ++++++ .metadata/.plugins/org.eclipse.cdt.core/.log | 1 + .../org.eclipse.cdt.ui/dialog_settings.xml | 3 + .../org.eclipse.cdt.ui/global-build.log | 592 +++ .../RemoteSystemsTempFiles/.markers.snap | Bin 1712 -> 0 bytes .../RemoteSystemsTempFiles/.syncinfo.snap | Bin 1712 -> 0 bytes .../.root/.markers.snap | Bin 1712 -> 0 bytes .../.safetable/org.eclipse.core.resources | Bin 89892 -> 1186 bytes .../org.eclipse.launchbar.core.prefs | 2 +- .../launchConfigurationHistory.xml | 4 +- .../org.eclipse.e4.workbench/workbench.xmi | 3603 ++++++++--------- lab6lock/Debug/Src/main.o | Bin 2892 -> 2976 bytes lab6lock/Debug/lab6lock.elf | Bin 143516 -> 143608 bytes lab6lock/Debug/lab6lock.list | 37 +- lab6lock/Debug/lab6lock.map | 6 +- lab6lock/src/buzzer.s | 26 +- lab6lock/src/main.s | 53 +- lab7interrupts/Debug/Src/delay.o | Bin 0 -> 1524 bytes lab7interrupts/Debug/Src/keypad.o | Bin 0 -> 2812 bytes lab7interrupts/Debug/Src/lcd.o | Bin 0 -> 3684 bytes lab7interrupts/Debug/Src/main.o | Bin 0 -> 1588 bytes lab7interrupts/Debug/Src/subdir.mk | 16 + lab7interrupts/Debug/Src/timer.o | Bin 0 -> 1632 bytes lab7interrupts/Debug/lab7interrupts.elf | Bin 0 -> 141904 bytes lab7interrupts/Debug/lab7interrupts.list | 1420 +++++++ lab7interrupts/Debug/lab7interrupts.map | 440 +- lab7interrupts/Debug/objects.list | 5 + lab7interrupts/Debug/sources.mk | 2 +- lab7interrupts/Src/delay.s | 59 + lab7interrupts/Src/keypad.s | 259 ++ lab7interrupts/Src/lcd.s | 476 +++ lab7interrupts/Src/main.s | 67 + lab7interrupts/Src/timer.s | 40 + lab7interrupts/lab7interrupts Debug.launch | 1 + lab8adc/Debug/Src/bad.o | Bin 0 -> 1864 bytes lab8adc/Debug/Src/delay.o | Bin 0 -> 1520 bytes lab8adc/Debug/Src/keypad.o | Bin 0 -> 2804 bytes lab8adc/Debug/Src/lcd.o | Bin 0 -> 3676 bytes lab8adc/Debug/Src/main.o | Bin 0 -> 2592 bytes lab8adc/Debug/Src/subdir.mk | 6 + lab8adc/Debug/Src/timer.o | Bin 0 -> 1628 bytes lab8adc/Debug/lab8adc.elf | Bin 0 -> 142540 bytes lab8adc/Debug/lab8adc.list | 1641 ++++++++ lab8adc/Debug/lab8adc.map | 461 +++ lab8adc/Debug/objects.list | 3 + lab8adc/Src/delay.s | 59 + lab8adc/Src/keypad.s | 280 ++ lab8adc/Src/lcd.s | 476 +++ lab8adc/Src/main.s | 169 +- lab8adc/Src/timer.s | 33 +- 50 files changed, 9495 insertions(+), 2088 deletions(-) delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.markers.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.syncinfo.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap create mode 100644 lab7interrupts/Debug/Src/delay.o create mode 100644 lab7interrupts/Debug/Src/keypad.o create mode 100644 lab7interrupts/Debug/Src/lcd.o create mode 100644 lab7interrupts/Debug/Src/main.o create mode 100644 lab7interrupts/Debug/Src/timer.o create mode 100644 lab7interrupts/Debug/lab7interrupts.elf create mode 100644 lab7interrupts/Debug/lab7interrupts.list create mode 100644 lab7interrupts/Src/delay.s create mode 100644 lab7interrupts/Src/keypad.s create mode 100644 lab7interrupts/Src/lcd.s create mode 100644 lab7interrupts/Src/main.s create mode 100644 lab7interrupts/Src/timer.s create mode 100644 lab8adc/Debug/Src/bad.o create mode 100644 lab8adc/Debug/Src/delay.o create mode 100644 lab8adc/Debug/Src/keypad.o create mode 100644 lab8adc/Debug/Src/lcd.o create mode 100644 lab8adc/Debug/Src/main.o create mode 100644 lab8adc/Debug/Src/timer.o create mode 100644 lab8adc/Debug/lab8adc.elf create mode 100644 lab8adc/Debug/lab8adc.list create mode 100644 lab8adc/Debug/lab8adc.map create mode 100644 lab8adc/Src/delay.s create mode 100644 lab8adc/Src/keypad.s create mode 100644 lab8adc/Src/lcd.s diff --git a/.metadata/.log b/.metadata/.log index 6c1704a..c46e406 100644 --- a/.metadata/.log +++ b/.metadata/.log @@ -4517,3 +4517,1346 @@ java.lang.NullPointerException at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.core.runtime 4 0 2019-11-15 12:28:28.686 +!MESSAGE Invalid input url:platform:/plugin/org.eclipse.mylyn.tasks.ui/icons/eview16/task-list.gif +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.eclipse.mylyn.tasks.ui". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:64) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:293) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:206) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:228) + at org.eclipse.jface.resource.URLImageDescriptor.access$2(URLImageDescriptor.java:220) + at org.eclipse.jface.resource.URLImageDescriptor$URLImageFileNameProvider.getImagePath(URLImageDescriptor.java:57) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:419) + at org.eclipse.swt.graphics.Image.(Image.java:687) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:263) + at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:242) + at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:220) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.getImage(TrimStack.java:798) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.updateTrimStackItems(TrimStack.java:863) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.createWidget(TrimStack.java:618) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:998) + at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:139) + at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:408) + at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:345) + at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:227) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:94) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:60) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:37) + at org.eclipse.e4.ui.workbench.renderers.swt.ToolControlRenderer.createWidget(ToolControlRenderer.java:129) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:1002) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.subscribeChildrenHandler(PartRenderingEngine.java:312) + at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier$DIEventHandler.handleEvent(EventObjectSupplier.java:92) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:294) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.createTrim(MinMaxAddon.java:996) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.minimize(MinMaxAddon.java:622) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.subscribeTopicTagsChanged(MinMaxAddon.java:381) + at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:67) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:146) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:4622) + at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:219) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:64) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:304) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.maximize(MinMaxAddon.java:706) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.subscribeTopicTagsChanged(MinMaxAddon.java:383) + at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:67) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:146) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:4622) + at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:219) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:64) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:304) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.setState(MinMaxAddon.java:204) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.access$1(MinMaxAddon.java:198) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon$2.mouseDoubleClick(MinMaxAddon.java:190) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:200) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.jface 4 0 2019-11-15 12:28:28.688 +!MESSAGE Unable to resolve plug-in "org.eclipse.mylyn.tasks.ui". +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.eclipse.mylyn.tasks.ui". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:64) + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.resolve(PlatformURLPluginConnection.java:73) + at org.eclipse.core.internal.boot.PlatformURLHandler.openConnection(PlatformURLHandler.java:69) + at org.eclipse.osgi.internal.url.URLStreamHandlerProxy.openConnection(URLStreamHandlerProxy.java:123) + at java.net.URL.openConnection(URL.java:979) + at org.eclipse.core.internal.runtime.PlatformURLConverter.toFileURL(PlatformURLConverter.java:34) + at org.eclipse.core.runtime.FileLocator.toFileURL(FileLocator.java:261) + at org.eclipse.jface.resource.URLImageDescriptor.getFilePath(URLImageDescriptor.java:232) + at org.eclipse.jface.resource.URLImageDescriptor.access$2(URLImageDescriptor.java:220) + at org.eclipse.jface.resource.URLImageDescriptor$URLImageFileNameProvider.getImagePath(URLImageDescriptor.java:57) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImagePathAtZoom(DPIUtil.java:419) + at org.eclipse.swt.graphics.Image.(Image.java:687) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:263) + at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:242) + at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:220) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.getImage(TrimStack.java:798) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.updateTrimStackItems(TrimStack.java:863) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.createWidget(TrimStack.java:618) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:998) + at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:139) + at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:408) + at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:345) + at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:227) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:94) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:60) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:37) + at org.eclipse.e4.ui.workbench.renderers.swt.ToolControlRenderer.createWidget(ToolControlRenderer.java:129) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:1002) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.subscribeChildrenHandler(PartRenderingEngine.java:312) + at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier$DIEventHandler.handleEvent(EventObjectSupplier.java:92) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:294) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.createTrim(MinMaxAddon.java:996) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.minimize(MinMaxAddon.java:622) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.subscribeTopicTagsChanged(MinMaxAddon.java:381) + at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:67) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:146) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:4622) + at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:219) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:64) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:304) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.maximize(MinMaxAddon.java:706) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.subscribeTopicTagsChanged(MinMaxAddon.java:383) + at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:67) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:146) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:4622) + at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:219) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:64) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:304) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.setState(MinMaxAddon.java:204) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.access$1(MinMaxAddon.java:198) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon$2.mouseDoubleClick(MinMaxAddon.java:190) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:200) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.core.runtime 4 0 2019-11-15 12:28:28.689 +!MESSAGE Invalid input url:platform:/plugin/org.eclipse.mylyn.tasks.ui/icons/eview16/task-list.gif +!STACK 0 +java.io.IOException: Unable to resolve plug-in "org.eclipse.mylyn.tasks.ui". + at org.eclipse.core.internal.runtime.PlatformURLPluginConnection.parse(PlatformURLPluginConnection.java:64) + at org.eclipse.core.internal.runtime.FindSupport.find(FindSupport.java:293) + at org.eclipse.core.runtime.FileLocator.find(FileLocator.java:206) + at org.eclipse.jface.resource.URLImageDescriptor.getStream(URLImageDescriptor.java:155) + at org.eclipse.jface.resource.URLImageDescriptor.getImageData(URLImageDescriptor.java:123) + at org.eclipse.jface.resource.URLImageDescriptor.access$3(URLImageDescriptor.java:121) + at org.eclipse.jface.resource.URLImageDescriptor$URLImageDataProvider.getImageData(URLImageDescriptor.java:77) + at org.eclipse.swt.internal.DPIUtil.validateAndGetImageDataAtZoom(DPIUtil.java:404) + at org.eclipse.swt.graphics.Image.(Image.java:732) + at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:271) + at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:242) + at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:220) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.getImage(TrimStack.java:798) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.updateTrimStackItems(TrimStack.java:863) + at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.createWidget(TrimStack.java:618) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:998) + at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:139) + at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:408) + at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:345) + at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:227) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:94) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:60) + at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:37) + at org.eclipse.e4.ui.workbench.renderers.swt.ToolControlRenderer.createWidget(ToolControlRenderer.java:129) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:1002) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.subscribeChildrenHandler(PartRenderingEngine.java:312) + at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.core.di.internal.extensions.EventObjectSupplier$DIEventHandler.handleEvent(EventObjectSupplier.java:92) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:294) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.createTrim(MinMaxAddon.java:996) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.minimize(MinMaxAddon.java:622) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.subscribeTopicTagsChanged(MinMaxAddon.java:381) + at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:67) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:146) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:4622) + at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:219) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:64) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:304) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.maximize(MinMaxAddon.java:706) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.subscribeTopicTagsChanged(MinMaxAddon.java:383) + at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:67) + at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236) + at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:146) + at org.eclipse.swt.widgets.Display.syncExec(Display.java:4622) + at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:219) + at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:64) + at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203) + at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) + at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) + at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132) + at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75) + at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44) + at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55) + at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63) + at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424) + at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249) + at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:304) + at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:304) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.setState(MinMaxAddon.java:204) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon.access$1(MinMaxAddon.java:198) + at org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon$2.mouseDoubleClick(MinMaxAddon.java:190) + at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:200) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 12:28:58.254 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 12:29:01.347 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 14:10:53.139 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 14:11:00.484 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 14:11:06.385 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY com.st.stm32cube.ide.mcu.debug.launch 2 0 2019-11-15 14:11:11.531 +!MESSAGE Won't launch debug session since we failed to locate the binary. + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 14:16:29.272 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.navigator 4 2 2019-11-15 14:16:31.100 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.navigator". +!STACK 0 +java.lang.NullPointerException + at org.eclipse.core.internal.resources.Project.internalGetActiveBuildConfig(Project.java:747) + at org.eclipse.core.internal.resources.Project.getActiveBuildConfig(Project.java:352) + at org.eclipse.ui.actions.BuildAction.getBuildConfigurationsToBuild(BuildAction.java:192) + at org.eclipse.ui.actions.BuildAction.getProjectsToBuild(BuildAction.java:169) + at org.eclipse.ui.actions.BuildAction.updateSelection(BuildAction.java:318) + at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128) + at org.eclipse.ui.internal.navigator.resources.actions.ResourceMgmtActionProvider.updateActionBars(ResourceMgmtActionProvider.java:280) + at org.eclipse.ui.internal.navigator.resources.actions.ResourceMgmtActionProvider.fillActionBars(ResourceMgmtActionProvider.java:92) + at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:268) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:261) + at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:182) + at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48) + at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:797) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:47) + at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174) + at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:794) + at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110) + at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:454) + at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275) + at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:270) + at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:310) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.navigator 4 0 2019-11-15 14:16:31.203 +!MESSAGE java.lang.NullPointerException +!STACK 0 +java.lang.NullPointerException + at org.eclipse.core.internal.resources.Project.internalGetActiveBuildConfig(Project.java:747) + at org.eclipse.core.internal.resources.Project.getActiveBuildConfig(Project.java:352) + at org.eclipse.ui.actions.BuildAction.getBuildConfigurationsToBuild(BuildAction.java:192) + at org.eclipse.ui.actions.BuildAction.getProjectsToBuild(BuildAction.java:169) + at org.eclipse.ui.actions.BuildAction.updateSelection(BuildAction.java:318) + at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:128) + at org.eclipse.ui.internal.navigator.resources.actions.ResourceMgmtActionProvider.updateActionBars(ResourceMgmtActionProvider.java:280) + at org.eclipse.ui.internal.navigator.resources.actions.ResourceMgmtActionProvider.fillActionBars(ResourceMgmtActionProvider.java:92) + at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:268) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:261) + at org.eclipse.ui.navigator.CommonNavigatorManager$1.open(CommonNavigatorManager.java:182) + at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48) + at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:797) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:47) + at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174) + at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:794) + at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1110) + at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:454) + at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275) + at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:270) + at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:310) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 14:31:33.451 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.cdt.make.core 4 0 2019-11-15 14:31:36.269 +!MESSAGE ConcurrentModificationException +!STACK 0 +java.util.ConcurrentModificationException + at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445) + at java.util.HashMap$EntryIterator.next(HashMap.java:1479) + at java.util.HashMap$EntryIterator.next(HashMap.java:1477) + at java.util.HashMap.putMapEntries(HashMap.java:512) + at java.util.HashMap.clone(HashMap.java:1333) + at org.eclipse.cdt.internal.core.settings.model.CConfigurationSpecSettings.(CConfigurationSpecSettings.java:193) + at org.eclipse.cdt.internal.core.settings.model.CConfigurationSpecSettings.(CConfigurationSpecSettings.java:166) + at org.eclipse.cdt.internal.core.settings.model.CConfigurationDescription.getSpecSettings(CConfigurationDescription.java:411) + at org.eclipse.cdt.internal.core.CConfigBasedDescriptor.updateConfiguration(CConfigBasedDescriptor.java:355) + at org.eclipse.cdt.internal.core.CConfigBasedDescriptor.(CConfigBasedDescriptor.java:239) + at org.eclipse.cdt.internal.core.CConfigBasedDescriptor.(CConfigBasedDescriptor.java:235) + at org.eclipse.cdt.internal.core.CConfigBasedDescriptorManager.loadDescriptor(CConfigBasedDescriptorManager.java:403) + at org.eclipse.cdt.internal.core.CConfigBasedDescriptorManager.findDescriptor(CConfigBasedDescriptorManager.java:339) + at org.eclipse.cdt.internal.core.CConfigBasedDescriptorManager.getDescriptor(CConfigBasedDescriptorManager.java:232) + at org.eclipse.cdt.core.CCorePlugin.getCProjectDescription(CCorePlugin.java:881) + at org.eclipse.cdt.make.internal.core.ProjectTargets.(ProjectTargets.java:74) + at org.eclipse.cdt.make.internal.core.MakeTargetManager.readTargets(MakeTargetManager.java:320) + at org.eclipse.cdt.make.internal.core.MakeTargetManager.getTargets(MakeTargetManager.java:161) + at org.eclipse.cdt.make.internal.ui.MakeNavContentProvider.getContainer(MakeNavContentProvider.java:62) + at org.eclipse.cdt.make.internal.ui.MakeNavContentProvider.getChildren(MakeNavContentProvider.java:50) + at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:98) + at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:241) + at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:96) + at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider$1.run(NavigatorContentServiceContentProvider.java:160) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.internalGetChildren(NavigatorContentServiceContentProvider.java:146) + at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.getChildren(NavigatorContentServiceContentProvider.java:132) + at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1414) + at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:350) + at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:847) + at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:621) + at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2661) + at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1951) + at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:677) + at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1957) + at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:677) + at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1927) + at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1884) + at org.eclipse.ui.navigator.CommonViewer.internalRefresh(CommonViewer.java:532) + at org.eclipse.jface.viewers.StructuredViewer.lambda$3(StructuredViewer.java:1477) + at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1393) + at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:363) + at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1354) + at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1477) + at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:538) + at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:352) + at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:495) + at org.eclipse.cdt.ui.CElementContentProvider$RefreshElement.refresh(CElementContentProvider.java:367) + at org.eclipse.cdt.ui.CElementContentProvider.lambda$0(CElementContentProvider.java:450) + at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) + at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) + at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3961) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3588) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 14:43:53.135 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 14:47:51.554 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 14:47:55.216 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.cdt.dsf.gdb 4 104 2019-11-15 15:29:19.847 +!MESSAGE Program file does not exist +!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 104 2019-11-15 15:29:19.847 +!MESSAGE + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 15:29:31.859 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 15:29:49.868 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.cdt.dsf.gdb 4 104 2019-11-15 15:30:50.813 +!MESSAGE Program file does not exist +!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 104 2019-11-15 15:30:50.813 +!MESSAGE + +!ENTRY org.eclipse.cdt.dsf.gdb 4 104 2019-11-15 15:31:01.711 +!MESSAGE Program file does not exist +!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 104 2019-11-15 15:31:01.711 +!MESSAGE + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 15:44:09.516 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY com.st.stm32cube.ide.mcu.debug.stlink 4 4 2019-11-15 15:44:39.015 +!MESSAGE ST-LINK GDB server failed to start (exit code = 2) + +!ENTRY org.eclipse.cdt.dsf.gdb 4 5012 2019-11-15 15:44:39.081 +!MESSAGE Error in final launch sequence: + +Error in initializing ST-LINK device. +Reason: (2) ST-LINK DLL error. +!STACK 1 +org.eclipse.core.runtime.CoreException: Error in initializing ST-LINK device. +Reason: (2) ST-LINK DLL error. + at org.eclipse.cdt.dsf.concurrent.Query.get(Query.java:112) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:242) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:106) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:94) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:860) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:719) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1017) + at org.eclipse.debug.internal.ui.DebugUIPlugin$2.run(DebugUIPlugin.java:1220) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 com.st.stm32cube.ide.mcu.debug.launch 4 0 2019-11-15 15:44:39.083 +!MESSAGE Error in initializing ST-LINK device. +Reason: (2) ST-LINK DLL error. + +!ENTRY com.st.stm32cube.ide.mcu.debug.stlink 4 4 2019-11-15 15:44:51.926 +!MESSAGE ST-LINK GDB server failed to start (exit code = 2) + +!ENTRY org.eclipse.cdt.dsf.gdb 4 5012 2019-11-15 15:44:52.002 +!MESSAGE Error in final launch sequence: + +Error in initializing ST-LINK device. +Reason: (2) ST-LINK DLL error. +!STACK 1 +org.eclipse.core.runtime.CoreException: Error in initializing ST-LINK device. +Reason: (2) ST-LINK DLL error. + at org.eclipse.cdt.dsf.concurrent.Query.get(Query.java:112) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:242) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:106) + at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:94) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:860) + at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:719) + at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1017) + at org.eclipse.debug.internal.ui.DebugUIPlugin$2.run(DebugUIPlugin.java:1220) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SUBENTRY 1 com.st.stm32cube.ide.mcu.debug.launch 4 0 2019-11-15 15:44:52.003 +!MESSAGE Error in initializing ST-LINK device. +Reason: (2) ST-LINK DLL error. + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 15:50:20.700 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 16:56:52.340 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) + +!ENTRY org.eclipse.ui.workbench.texteditor 4 0 2019-11-15 16:56:55.543 +!MESSAGE +!STACK 0 +java.lang.NullPointerException + at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.isDirty(AbstractTextEditor.java:7196) + at org.eclipse.ui.internal.Workbench.getFilteredSaveables(Workbench.java:3472) + at org.eclipse.ui.internal.Workbench.saveAll(Workbench.java:3445) + at org.eclipse.ui.ide.IDE$1.run(IDE.java:1495) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.ide.IDE.saveAllEditors(IDE.java:1483) + at org.eclipse.ui.actions.CloseResourceAction.run(CloseResourceAction.java:190) + at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:171) + at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) + at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:412) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4173) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3986) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3585) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) + at org.eclipse.equinox.launcher.Main.run(Main.java:1468) diff --git a/.metadata/.plugins/org.eclipse.cdt.core/.log b/.metadata/.plugins/org.eclipse.cdt.core/.log index cdc943c..89c4e4b 100644 --- a/.metadata/.plugins/org.eclipse.cdt.core/.log +++ b/.metadata/.plugins/org.eclipse.cdt.core/.log @@ -6,3 +6,4 @@ *** SESSION Nov 05, 2019 16:03:14.62 ------------------------------------------- *** SESSION Nov 09, 2019 15:08:10.41 ------------------------------------------- *** SESSION Nov 11, 2019 15:08:25.37 ------------------------------------------- +*** SESSION Nov 14, 2019 00:25:00.78 ------------------------------------------- diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml index 8e47957..f468fc7 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml +++ b/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml @@ -4,4 +4,7 @@
+
+ +
diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log index af1f8aa..5d40468 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log +++ b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log @@ -2679,3 +2679,595 @@ Finished building: default.size.stdout Finished building: lab6lock.list +12:21:07 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +12:21:09 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Startup/startup_stm32f446retx.o: In function `LoopFillZerobss': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Startup/startup_stm32f446retx.s:83: undefined reference to `main' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:39: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +12:21:11 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/main.s: Assembler messages: +../Src/main.s:4: Error: missing name +make: *** [Src/subdir.mk:17: Src/main.o] Error 1 +make: *** Waiting for unfinished jobs.... +../Src/timer.s: Assembler messages: +../Src/timer.s:4: Error: missing name +../Src/timer.s:30: Error: bad instruction `pop{r0, r4}' +../Src/timer.s:13: Error: undefined symbol AFRL_TIM3_CH1_EN used as an immediate value +../Src/timer.s:21: Error: undefined symbol CCMR_OCC1M_PWM used as an immediate value +../Src/timer.s:22: Error: undefined symbol CCMR_OCC1PE used as an immediate value +make: *** [Src/subdir.mk:17: Src/timer.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +12:21:54 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +12:21:56 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Startup/startup_stm32f446retx.o: In function `LoopFillZerobss': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Startup/startup_stm32f446retx.s:83: undefined reference to `main' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:39: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +12:21:58 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/timer.s: Assembler messages: +../Src/timer.s:4: Error: missing name +../Src/timer.s:30: Error: bad instruction `pop{r0, r4}' +../Src/timer.s:13: Error: undefined symbol AFRL_TIM3_CH1_EN used as an immediate value +../Src/timer.s:21: Error: undefined symbol CCMR_OCC1M_PWM used as an immediate value +../Src/timer.s:22: Error: undefined symbol CCMR_OCC1PE used as an immediate value +make: *** [Src/subdir.mk:17: Src/timer.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +12:22:39 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +12:22:41 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Startup/startup_stm32f446retx.o: In function `LoopFillZerobss': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Startup/startup_stm32f446retx.s:83: undefined reference to `main' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +12:22:44 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/timer.s: Assembler messages: +../Src/timer.s:32: Error: bad instruction `pop{r0, r4}' +../Src/timer.s:15: Error: undefined symbol AFRL_TIM3_CH1_EN used as an immediate value +../Src/timer.s:23: Error: undefined symbol CCMR_OCC1M_PWM used as an immediate value +../Src/timer.s:24: Error: undefined symbol CCMR_OCC1PE used as an immediate value +make: *** [Src/subdir.mk:17: Src/timer.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +14:11:24 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +../Src/main.s: Assembler messages: +../Src/main.s:15: Error: bad expression +../Src/main.s:15: Error: junk at end of line, first unrecognized character is `2' +../Src/main.s:16: Error: bad expression +../Src/main.s:16: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:17: Error: bad expression +../Src/main.s:17: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:18: Error: bad expression +../Src/main.s:18: Error: junk at end of line, first unrecognized character is `1' +make: *** [Src/subdir.mk:25: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +14:12:48 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +../Src/main.s: Assembler messages: +../Src/main.s:15: Error: bad expression +../Src/main.s:15: Error: junk at end of line, first unrecognized character is `2' +../Src/main.s:16: Error: bad expression +../Src/main.s:16: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:17: Error: bad expression +../Src/main.s:17: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:18: Error: bad expression +../Src/main.s:18: Error: junk at end of line, first unrecognized character is `1' +make: *** [Src/subdir.mk:25: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +14:13:15 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +../Src/main.s: Assembler messages: +../Src/main.s:15: Error: bad expression +../Src/main.s:15: Error: junk at end of line, first unrecognized character is `2' +../Src/main.s:16: Error: bad expression +../Src/main.s:16: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:17: Error: bad expression +../Src/main.s:17: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:18: Error: bad expression +../Src/main.s:18: Error: junk at end of line, first unrecognized character is `1' +make: *** [Src/subdir.mk:25: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +14:13:56 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +../Src/main.s: Assembler messages: +../Src/main.s:15: Error: bad expression +../Src/main.s:15: Error: junk at end of line, first unrecognized character is `2' +../Src/main.s:16: Error: bad expression +../Src/main.s:16: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:17: Error: bad expression +../Src/main.s:17: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:18: Error: bad expression +../Src/main.s:18: Error: junk at end of line, first unrecognized character is `1' +../Src/main.s:44: Error: undefined symbol cOne used as an immediate value +../Src/main.s:53: Error: undefined symbol cTwo used as an immediate value +../Src/main.s:62: Error: undefined symbol cThree used as an immediate value +../Src/main.s:71: Error: undefined symbol cFour used as an immediate value +make: *** [Src/subdir.mk:25: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +14:14:26 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +../Src/main.s: Assembler messages: +../Src/main.s:44: Error: undefined symbol cOne used as an immediate value +../Src/main.s:53: Error: undefined symbol cTwo used as an immediate value +../Src/main.s:62: Error: undefined symbol cThree used as an immediate value +../Src/main.s:71: Error: undefined symbol cFour used as an immediate value +make: *** [Src/subdir.mk:25: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +14:14:53 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -o "lab6lock.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab6lock\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab6lock.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: lab6lock.elf + +arm-none-eabi-objdump -h -S lab6lock.elf > "lab6lock.list" +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout +Finished building: lab6lock.list + + +15:00:24 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/keypad.o" "../Src/keypad.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/main.o: In function `main': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:14: undefined reference to `lcdInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:15: undefined reference to `keyInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:16: undefined reference to `timerInit' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:00:28 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/bad.o" "../Src/bad.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/main.s: Assembler messages: +../Src/main.s:61: Error: backward ref to unknown label "1:" +C:\Users\barnestr\AppData\Local\Temp\cc6quWwB.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:19: Src/main.o] Error 1 +make: *** Waiting for unfinished jobs.... +../Src/timer.s: Assembler messages: +../Src/timer.s:32: Error: bad instruction `pop{r0, r4}' +../Src/timer.s:15: Error: undefined symbol AFRL_TIM3_CH1_EN used as an immediate value +../Src/timer.s:23: Error: undefined symbol CCMR_OCC1M_PWM used as an immediate value +../Src/timer.s:24: Error: undefined symbol CCMR_OCC1PE used as an immediate value +make: *** [Src/subdir.mk:19: Src/timer.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:14:30 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/main.o: In function `main': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:14: undefined reference to `lcdInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:15: undefined reference to `keyInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:16: undefined reference to `timerInit' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:14:33 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/main.s: Assembler messages: +../Src/main.s:61: Error: backward ref to unknown label "1:" +C:\Users\barnestr\AppData\Local\Temp\cc3Yifzy.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:19: Src/main.o] Error 1 +make: *** Waiting for unfinished jobs.... +../Src/timer.s: Assembler messages: +../Src/timer.s:11: Error: expected symbol name +../Src/timer.s:18: Error: undefined symbol AFRL_TIM3_CH1_EN used as an immediate value +make: *** [Src/subdir.mk:19: Src/timer.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:17:31 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/main.o: In function `main': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:14: undefined reference to `lcdInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:15: undefined reference to `keyInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:16: undefined reference to `timerInit' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:17:34 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/main.s: Assembler messages: +../Src/main.s:61: Error: backward ref to unknown label "1:" +C:\Users\barnestr\AppData\Local\Temp\ccGa4zYw.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:19: Src/main.o] Error 1 +make: *** Waiting for unfinished jobs.... +../Src/timer.s: Assembler messages: +../Src/timer.s:17: Error: cannot represent T32_OFFSET_IMM relocation in this object file format +../Src/timer.s:20: Error: cannot represent T32_OFFSET_IMM relocation in this object file format +../Src/timer.s:25: Error: cannot represent T32_OFFSET_IMM relocation in this object file format +../Src/timer.s:30: Error: cannot represent T32_OFFSET_IMM relocation in this object file format +make: *** [Src/subdir.mk:19: Src/timer.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:18:14 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/main.o: In function `main': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:14: undefined reference to `lcdInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:15: undefined reference to `keyInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:16: undefined reference to `timerInit' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:18:16 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/main.s: Assembler messages: +../Src/main.s:61: Error: backward ref to unknown label "1:" +C:\Users\barnestr\AppData\Local\Temp\cceD8Zcr.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:19: Src/main.o] Error 1 +make: *** Waiting for unfinished jobs.... +../Src/timer.s: Assembler messages: +../Src/timer.s:12: Error: unknown pseudo-op: `.eqe' +make: *** [Src/subdir.mk:19: Src/timer.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:18:33 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/main.o: In function `main': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:14: undefined reference to `lcdInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:15: undefined reference to `keyInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:16: undefined reference to `timerInit' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:18:35 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/main.s: Assembler messages: +../Src/main.s:61: Error: backward ref to unknown label "1:" +C:\Users\barnestr\AppData\Local\Temp\ccU1pF6U.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:19: Src/main.o] Error 1 +make: *** Waiting for unfinished jobs.... +../Src/timer.s: Assembler messages: +../Src/timer.s:26: Error: cannot represent T32_OFFSET_IMM relocation in this object file format +../Src/timer.s:31: Error: cannot represent T32_OFFSET_IMM relocation in this object file format +make: *** [Src/subdir.mk:19: Src/timer.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:23:13 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/main.o: In function `main': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:14: undefined reference to `lcdInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:15: undefined reference to `keyInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:16: undefined reference to `timerInit' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:23:15 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +../Src/main.s: Assembler messages: +../Src/main.s:61: Error: backward ref to unknown label "1:" +C:\Users\barnestr\AppData\Local\Temp\ccFJTWYk.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:19: Src/main.o] Error 1 +make: *** Waiting for unfinished jobs.... +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:23:47 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/main.o: In function `main': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:14: undefined reference to `lcdInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:15: undefined reference to `keyInit' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/main.s:16: undefined reference to `timerInit' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:23:49 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +C:\Users\barnestr\AppData\Local\Temp\cc2GqGKM.s: Assembler messages: +C:\Users\barnestr\AppData\Local\Temp\cc2GqGKM.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:19: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:27:07 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +15:27:09 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/lcd.o" "../Src/lcd.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/keypad.o: In function `KeyGetKey': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/keypad.s:170: undefined reference to `usDelay' +Src/keypad.o: In function `keypadScan': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/keypad.s:238: undefined reference to `usDelay' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/keypad.s:262: undefined reference to `usDelay' +Src/lcd.o: In function `WriteInstruction': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:122: undefined reference to `usDelay' +Src/lcd.o: In function `WriteData': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:157: undefined reference to `usDelay' +Src/lcd.o: In function `lcdInit': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:168: undefined reference to `msDelay' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:173: undefined reference to `usDelay' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:178: undefined reference to `usDelay' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:183: undefined reference to `usDelay' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:188: undefined reference to `msDelay' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:195: undefined reference to `usDelay' +Src/lcd.o: In function `lcdClear': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:208: undefined reference to `msDelay' +Src/lcd.o: In function `lcdHome': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:221: undefined reference to `msDelay' +Src/lcd.o: In function `writeByte': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:280: undefined reference to `msDelay' +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/lcd.s:289: undefined reference to `msDelay' +Src/timer.o: In function `timerInit': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/timer.s:26: undefined reference to `TIM3_BASE' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:27:13 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/keypad.o" "../Src/keypad.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/lcd.o" "../Src/lcd.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +C:\Users\barnestr\AppData\Local\Temp\ccNWvgbU.s: Assembler messages: +C:\Users\barnestr\AppData\Local\Temp\ccNWvgbU.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:23: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:27:49 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +15:27:51 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/delay.o" "../Src/delay.s" +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/timer.o: In function `timerInit': +C:/Users/barnestr/Documents/CE2801/workspace/lab7interrupts/Debug/../Src/timer.s:26: undefined reference to `TIM3_BASE' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab7interrupts.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:27:54 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/delay.o" "../Src/delay.s" +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +C:\Users\barnestr\AppData\Local\Temp\ccAvND8E.s: Assembler messages: +C:\Users\barnestr\AppData\Local\Temp\ccAvND8E.s: Error: unaligned opcodes detected in executable segment +make: *** [Src/subdir.mk:25: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +15:29:15 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: lab7interrupts.elf + +arm-none-eabi-size lab7interrupts.elf +arm-none-eabi-objdump -h -S lab7interrupts.elf > "lab7interrupts.list" + text data bss dec hex filename + 1956 12 1564 3532 dcc lab7interrupts.elf +Finished building: default.size.stdout + +Finished building: lab7interrupts.list + +15:30:49 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-size lab7interrupts.elf + text data bss dec hex filename + 1956 12 1564 3532 dcc lab7interrupts.elf +Finished building: default.size.stdout + +15:31:00 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-size lab7interrupts.elf + text data bss dec hex filename + 1956 12 1564 3532 dcc lab7interrupts.elf +Finished building: default.size.stdout + +15:44:33 **** Incremental Build of configuration Debug for project lab5keypad **** +make -j8 all +arm-none-eabi-size lab5keypad.elf + text data bss dec hex filename + 1980 16 1568 3564 dec lab5keypad.elf +Finished building: default.size.stdout + +15:44:47 **** Incremental Build of configuration Debug for project lab5keypad **** +make -j8 all +arm-none-eabi-size lab5keypad.elf + text data bss dec hex filename + 1980 16 1568 3564 dec lab5keypad.elf +Finished building: default.size.stdout + +15:45:07 **** Incremental Build of configuration Debug for project lab5keypad **** +make -j8 all +arm-none-eabi-size lab5keypad.elf + text data bss dec hex filename + 1980 16 1568 3564 dec lab5keypad.elf +Finished building: default.size.stdout + +15:45:21 **** Incremental Build of configuration Debug for project lab5keypad **** +make -j8 all +arm-none-eabi-size lab5keypad.elf + text data bss dec hex filename + 1980 16 1568 3564 dec lab5keypad.elf +Finished building: default.size.stdout + +15:50:25 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +16:11:42 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +16:11:45 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -o "lab7interrupts.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab7interrupts\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab7interrupts.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: lab7interrupts.elf + +arm-none-eabi-objdump -h -S lab7interrupts.elf > "lab7interrupts.list" +arm-none-eabi-size lab7interrupts.elf + text data bss dec hex filename + 1956 12 1564 3532 dcc lab7interrupts.elf +Finished building: default.size.stdout +Finished building: lab7interrupts.list + + +16:11:49 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +../Src/main.s: Assembler messages: +../Src/main.s:110: Error: PC not allowed in register list -- `push {r0,r1,pc}' +make: *** [Src/subdir.mk:23: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +16:12:19 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +16:12:21 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-size lab7interrupts.elf + text data bss dec hex filename + 1956 12 1564 3532 dcc lab7interrupts.elf +Finished building: default.size.stdout + +16:12:22 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +../Src/main.s: Assembler messages: +../Src/main.s:39: Error: cannot represent T32_OFFSET_IMM relocation in this object file format +../Src/main.s:41: Error: cannot represent T32_OFFSET_IMM relocation in this object file format +make: *** [Src/subdir.mk:23: Src/main.o] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +16:12:52 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +16:12:54 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-size lab7interrupts.elf + text data bss dec hex filename + 1956 12 1564 3532 dcc lab7interrupts.elf +Finished building: default.size.stdout + +16:12:55 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -o "lab8adc.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab8adc\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab8adc.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Startup/startup_stm32f446retx.o: In function `LoopFillZerobss': +C:/Users/barnestr/Documents/CE2801/workspace/lab8adc/Debug/../Startup/startup_stm32f446retx.s:83: undefined reference to `main' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab8adc.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +16:14:04 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +16:14:05 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-size lab7interrupts.elf + text data bss dec hex filename + 1956 12 1564 3532 dcc lab7interrupts.elf +Finished building: default.size.stdout + +16:14:07 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/main.o" "../Src/main.s" +arm-none-eabi-gcc -o "lab8adc.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab8adc\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab8adc.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Src/timer.o: In function `timerInit': +C:/Users/barnestr/Documents/CE2801/workspace/lab8adc/Debug/../Src/timer.s:26: undefined reference to `TIM3_BASE' +collect2.exe: error: ld returned 1 exit status +make: *** [makefile:40: lab8adc.elf] Error 1 +"make -j8 all" terminated with exit code 2. Build might be incomplete. +16:14:49 **** Incremental Build of configuration Debug for project lab6lock **** +make -j8 all +arm-none-eabi-size lab6lock.elf + text data bss dec hex filename + 2524 44 1564 4132 1024 lab6lock.elf +Finished building: default.size.stdout + +16:14:51 **** Incremental Build of configuration Debug for project lab7interrupts **** +make -j8 all +arm-none-eabi-size lab7interrupts.elf + text data bss dec hex filename + 1956 12 1564 3532 dcc lab7interrupts.elf +Finished building: default.size.stdout + +16:14:53 **** Incremental Build of configuration Debug for project lab8adc **** +make -j8 all +arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Src/timer.o" "../Src/timer.s" +arm-none-eabi-gcc -o "lab8adc.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\barnestr\Documents\CE2801\workspace\lab8adc\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="lab8adc.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: lab8adc.elf + +arm-none-eabi-size lab8adc.elf +arm-none-eabi-objdump -h -S lab8adc.elf > "lab8adc.list" + text data bss dec hex filename + 2140 12 1564 3716 e84 lab8adc.elf +Finished building: default.size.stdout + +Finished building: lab8adc.list + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.markers.snap b/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.markers.snap deleted file mode 100644 index 1ebb4998deb10fc06e8b6fecc7e9a0bf023cad12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1712 rcmZ?R*xjhShe1S2b=vdAllRFvjPggrV>CUC=7-VpV6;3Og!KUc9IVla diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.syncinfo.snap b/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.syncinfo.snap deleted file mode 100644 index 1ebb4998deb10fc06e8b6fecc7e9a0bf023cad12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1712 rcmZ?R*xjhShe1S2b=vdAllRFvjPggrV>CUC=7-VpV6;3Og!KUc9IVla diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap b/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap deleted file mode 100644 index 1ebb4998deb10fc06e8b6fecc7e9a0bf023cad12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1712 rcmZ?R*xjhShe1S2b=vdAllRFvjPggrV>CUC=7-VpV6;3Og!KUc9IVla diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources index ea7413162d7ed524d937d8f062df2fc137e884b0..39fe81a7ee848643054b00b72b4ce1e57cbb7eb6 100644 GIT binary patch delta 189 zcmZ3ok985}1O?&X(mVyf{4xb269pqjG8v5~FVvQt{=khfY5EK! zMybgTd{UEp7>zki%*+fdO-;-VCKrl}aU1b+>FbpgrKZ|iPA)7>VKkh)G22)O)7Z&1 fOtTP1s!tAQwk6isgEC5!%Q@vHZzxp-8!rq1gGDzU literal 89892 zcmeI5yN=sN6oy?JaOcWJAYhSJCWjnd23Wv=9i)l@!wbZnK}obDtX5i3lpVoU>bMJ# z7swN&wh_3>tK9yYl9tAGAVmF!3MUKl^DmZ9Sj8YuR?o=ECj>hqs=-yl64Y?mxIcocLbw%%6nb z>sj!&?GGp8>$%?^`GdvV_HY*X=V7p*r^&cqK=&{gz47H>HeNqoKBK+r7_D%k^9Q^6Kl&Ejcf4K7RQ0{@*7@ zCMkX=IbY>1N_X5X!BXO*9UP|ocd?==@fK=~Q~rlN5l?;L_7ln^e@`i3cl_!yU@EF# zJ3m_PbFLL6QZ4$irhfSu56=)1`jmSsUP5sT>zGvPVoDh#eqoW$$QRl11IzfJDUqtC zGRziM4^*ryWX3g5+2O`h!Gr@U)|Om;-~7^FUVC>tG^U~A2*-witOR5yDv2A}nks0G zjF^}sTn7L}0I|s1+0q&SlpS(2E;s;+Wd#83A8E6WVDNSTkWBKGO4SfRP8TK&Cag3- zU124&#?ssyo11|N+uwva3;?Z;GXPL2fEW}AK2T{Nh!hBUpl=7NP@obDshZ?xL;w_i?eQ4IBF|S;seHx ze9UXl8x0e;L_XR{nz`sQR%^46NTm-qy5lJoH3p08aQ>rr<*z?k#y3{f83J$nbrLp_ zH*O0j-RuS4@_KRCeP^Vk(6_ysRr`W>1-DW@7kC42iT2%OJ!3U{$}C~`1Osoy`c2`# zomc0Lny1sX1<*I>+p+YG+OloaKr}?m4nFXxEYEF5Y>a& z+g@dxa8ppBjSB5!Ma@Yckt!ZK+Y2cHqQaiM#Ko^utAM+ItH3sh@Da5(&2eLt-px~o z0Fj|fxq%?kQO7CUNvng{7YvFB5UU0&l|i(r3=DnE08u%Jj9~$T=4Z|2e8jq$X4b>x za)4O9=%KP{cBuLW^@uRd%1yJ}$qgS7ASwXyXMYq`-#9J1PaENIveE$4EImS+%#_$R zqQ8&038G8mZ%~g|dqr#jh*-0vdp%;2sJQ_k(pfY1eL)eG`-t2UE(XIM0z?w7jHZvP z z+DV~^RZTPBzYHt|Vh0KB!=!J_R>aN$Ky;DN)>;wch&Z<%QF+vS5D*cpG!R5O{5@qo zVs#L4)_kBm;?YcVIYq1$h%_$NqP}M25uu1xgOzHEC>Q=v`UdT!08u%JRDFYlw%&O} zGfcDF7cSOYKoONIBIlSGt9c&L1Vyxk1s@Sn^Lh1Ffr`Njf!Gm9Xv0Sg6q{y>RH#TB zJ|cWXe(e7aL6ckYdMPxKX8;S@; zRIZ2)o$_HC7(i4HB78*T5!K`oH+@8x_N<`j0g9+x5h;&op=SjkDhHABhzvuR0HR_L z>4=Z|no$@F5Y>a&K|&jOMCExz8hk^h8E4HA?_1q=i3-nrp9! zG}OQ5Q8UBlDczf=V#soR#72O~aI&JcB9;SDKB^rCzJK1!T!}Rth3(-i@RfJ*$=nTf z3*f97ASw@594Z4t)C>@ngGhbN=;G5mYBs|((=d0AlNBgpRYmOXzXEOZtXYC+LOUr9 zqRv=i8#FU&K5?*88ANKZH==n8AO_F;N$9JB1J9WkK{tl=P1KDp+mnW}Fr6V95c-oD94e2oCn z2-6G@H8;&J1uG`BlLAEDLF@^~gs2%H9v4LFNBB}<8W?4>sju0D`G^2fcMyBDDc6Ac zhyYP{5Dhuvt1*c2sYz}-sq(0~x@jg5p@>?aHJ1ZXKI(++q}4#A!8dY=eI46LX;84t z;POj - - - + diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi index 534dfae..fc25686 100644 --- a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi +++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -1,9 +1,9 @@ - - + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration ModelMigrationProcessor.001 - + @@ -12,9 +12,9 @@ topLevel shellMaximized - - - + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation @@ -73,34 +73,34 @@ persp.newWizSC:org.eclipse.mylyn.tasks.ui.wizards.new.repository.task persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 persp.actionSet:org.eclipse.text.quicksearch.actionSet - - - - - - + + + + + + - - - - - - - + + + + + + + - + Debug - - - - - + + + + + - + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 persp.actionSet:org.eclipse.ui.cheatsheets.actionSet @@ -146,111 +146,111 @@ persp.viewSC:com.st.stm32cube.ide.mcu.livewatch.LiveExpressionsView persp.viewSC:com.st.stm32cube.ide.mcu.faultanalyzer.view persp.viewSC:com.st.stm32cube.ide.mcu.sfrview - - - + + + 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 - - + + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug @@ -258,7 +258,7 @@ - + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 persp.actionSet:org.eclipse.ui.cheatsheets.actionSet @@ -274,24 +274,24 @@ persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet persp.actionSet:org.eclipse.debug.ui.launchActionSet persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard - - - + + + View categoryTag:General - - - - - + + + + + General - + View categoryTag:Device Configuration Tool - + View categoryTag:General @@ -301,2550 +301,2537 @@ - - - - + + + + - + View categoryTag:Help - + View categoryTag:General - + ViewMenu menuContribution:menu - + - + View categoryTag:Help - - + + active - noFocus - - + + Editor removeOnHide org.eclipse.cdt.ui.editor.asm.AsmEditor - - + + Editor removeOnHide org.eclipse.cdt.ui.editor.asm.AsmEditor - - + + Editor removeOnHide org.eclipse.cdt.ui.editor.asm.AsmEditor - - + + Editor removeOnHide org.eclipse.cdt.ui.editor.asm.AsmEditor active + activeOnClose + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.asm.AsmEditor - + View categoryTag:General - + ViewMenu menuContribution:menu - - menuContribution:popup - popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu - - + - + View categoryTag:C/C++ - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + ViewMenu menuContribution:menu - - menuContribution:popup - popup:org.eclipse.ui.views.ProblemView - popup:org.eclipse.ui.ide.MarkersView - - + - + 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:Make - + ViewMenu menuContribution:menu - + - + View categoryTag:Mylyn - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + menuContribution:popup popup:org.eclipse.debug.ui.DebugView - + menuContribution:popup popup:org.eclipse.debug.ui.DebugView - - menuContribution:popup - popup:org.eclipse.debug.ui.DebugView - - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - - menuContribution:popup - popup:org.eclipse.debug.ui.VariableView.detail - - - menuContribution:popup - popup:org.eclipse.debug.ui.VariableView - - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - - menuContribution:popup - popup:org.eclipse.debug.ui.VariableView.detail - - - menuContribution:popup - popup:org.eclipse.debug.ui.BreakpointView - - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - - menuContribution:popup - popup:org.eclipse.debug.ui.VariableView.detail - - + - + View categoryTag:Debug active - + ViewMenu menuContribution:menu - + - + 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 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.2 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.2 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.2 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.2 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.2 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.2 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + menuContribution:popup popup:org.eclipse.debug.ui.MemoryView.RenderingViewPane.1 - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Device Configuration Tool - + View categoryTag:General - + View categoryTag:General - + View categoryTag:General - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - + View categoryTag:Debug - + ViewMenu menuContribution:menu - + - - + + toolbarSeparator - + - + Draggable - + - + toolbarSeparator - + - + Draggable - + Draggable - + Draggable - + Draggable - + toolbarSeparator - + - + Draggable - + - - Draggable - - + toolbarSeparator - + - + toolbarSeparator - + - + Draggable - + 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:cocoa - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - + - - - - + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + platform:cocoa - + platform:cocoa - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - + + + + - - - - - + + + + + platform:cocoa - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - + + + platform:win32 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + platform:win32 - - - - - - + + + + + + - - - + + + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor removeOnHide - + 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: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:Remote Systems - + View categoryTag:Remote Systems - + View categoryTag:Remote Systems - + View categoryTag:Remote Systems - + View categoryTag:Remote Systems - + View categoryTag:Remote Systems - + View categoryTag:Remote Systems - + View categoryTag:General - + View categoryTag:General - + View categoryTag:Team - + View categoryTag: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: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:SWV - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:Debug - + View categoryTag:C/C++ - + View categoryTag:General - - + + 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/lab6lock/Debug/Src/main.o b/lab6lock/Debug/Src/main.o index 65c6839bfff2c0694da3c0418fab270fee1d0a9e..f5978b24f95e2ec24839ff9f3077fc6c42c68c99 100644 GIT binary patch delta 1055 zcmZ9LO=uHQ6ot>5X_}caR$GHnlWH=VHmSCm{1pm2ihuQZ9c$B>gaM|}_6vjF3^xG7U_+E^T;~b@C`%{<% z>NwwFE^v5cdX+PcfJY? zc+P&nXC2GzZT|=qmT9qPzP^{**`IN_}J(i1>@lzh(7d;3(6g>ny7Uk!*BrilJcqt8>@IjRMv#0Cc z!0)1CKvR?p{SoCt|GfTQJ^{&#iE^E|$9qJ1qLe7-JFFW2C-R<-DtZ@9nuF~vYy0VI zG_m(U`&DYJX|6BYE1IG{qp8KB)N5W*&uG!iYAJ(Wn8Rv}R?VE|7}R7qLxWaM)#xP0 tDVpPWlOAwfqZKQ+-OzzGUcnBoXj8*VM%E*|F6!Twja)E*+f*`l{RbWxb#VXy delta 1022 zcmZ9K&ubGw6vw}_ny2;!lhD;nZ)Rt9_RYf1k2?mgdiln? zs?>9RUrnEyP*D_hqsZ%aBnBRFB>Djp!>1AXX2l)Oj=WCS?=)X`AD1^JII< zoYtXn+5p~OHXPMQ+7$NE*D~y-UW|zYjLkHs5Yb=D@Co`O89qy2Puavd`ZFmj%mRI! z&m=C<|IV;1emBEC`iB{wr?*o!ahrZIWrch6+fz0%p!d~QLXq`S;d)oO9TeC4u=fK6PO@FV5@qSC zqCPMw8UVXR8*v3~mU1fLW1?iKmW@_1CKG>(9t74!xzL6v7urn5i>!>iR~6+tlLLy$ib@aToZoDh%i{)GDmHtu=jOCKvC^uE4Jv%f$mGq3= zRI~b~9jY7pDWj#|GY<3*##KF02@lsy-V%P&I9J@qUSOB6D6?}YZHr?-Nnfc1j$;82 K(mZ(U;`R>^17F$z diff --git a/lab6lock/Debug/lab6lock.elf b/lab6lock/Debug/lab6lock.elf index ab3ef61f2fff7a0b5b4a0f029d7826594b708624..e2518dd044114194a5515fcb43dc39e3bd6d6d64 100644 GIT binary patch delta 2778 zcmZA3e`r-@7zgm@yyyOOyYuc>D^_~X-3%Oa=iY6S+B64h38^{k9~JZ3thAP3MP)xu z5)pw}Qt(15j`AO&Kc*;G%0OX4Hh%;S3BBMC21Sl!HE2P4`@ZMgd(L~FGdOpj=Xu|A z-}ian^KOT3C1!3VKF=6i_gWuW#wkneHRDH!NKm_68xar6bEar{yv49>J8#=oKG%(V zy9I{s*){~+pLRPt&uwd4xqLR4mCX^6sr~!?F0;PNT-4QT_7wXgVvk`=$um)Lw74ZE zF4rvl$y8riy{5`P!?UWSsq$60PIC!1q}3o=o!j_zGENCEE9ed!Abm9_j_xI6Fwbs%s#2v9G)P4hB%r{+!=bMe1mCA?3|56D!bu#Js! zsro3$A@#9T9&Qv*Tiip?Dyu7v{V~Y$uZQdi`Y;p_ z^ab-Vc%o8B^}ypSf0p?oTrGT>qVy}vV@C!RcTl2x2#jbYi(ASJqfPpuqC4!OQ)M%%Zp9X0%^adEUpY z{lSW{|Gfcx%NmR_kHgc#e{ZS8@^_id8h?%53AQr#cy|1QX9WWK44z>fwleQx{sivR zmgoSCLb;cEZHM7OR78c;!88J26izUs(+KFV-6iG{^E7j$7KgP~p$B07dGnbUD?61D zsn>2jYcL4Er9E(nBg_|IM<3yJ1WJ{^m#RcJS%(?snpAj(EpS8| zumullp3mAZNs&W8XuEnjYp{`dC-WY7gqYclGdCWC%s z9cJL*AWBl1k1{*sEHKGj zhQHGGL}GS$MlJ9wT7E9eKgRrI*u}Aj#h5wg`Iid2^Q7+G?!Cvo_tH>d$E#28D$0!b zvbNZ{KujCP8`82xTl4}pT1@sY5RG!PEz-snIb@5maZ&105i+%}mBX^OMib7q{B&`3LJ3IHx|6Z8O?>x_( zIp;a&%)L3?ba1-q-LjS0&m6VO&L0vHB|X7o8MQF@+E$&L=UJ}n)?C-AdHPy) zz|^%;MML!MaVvI9Im&h&uU7GTJhxJ*xSq4bt?87i>n(}HHT3D(fA8$I+k5R5y?u6n zIFM0qTGqATL{=RMH{{erOE5fNmHgAT$e(#>!qB48oq;nV<%m*{bFgY^#HZl3hA+cy zhOfc6Il2F)wh>q8{Jw_QOA!rc8V%A3zi8Njw-|1R+l&X?4UZb}{$OZ4`=Ko?#m=4%#g2>i~00`7n2`=^(yO6Nv{02j^a??UW)u7}x z@+f>UE~M^oAH@%oKY`~8Uy`hRLGek`K1y@}4P!>hE}IF6=dgjzC0a~g4*!r0P{{z? z6YrvuG|L*wf8MaK*L<7Np#2tkKYXIGX7VA$L-IKJXY!SX{bx~>d(sYDy4ARCZ4YP5YF}&k&b{ioWxXEka8=bB4-UC%sdYB^(N*JxtsQuy bVOhQk-uKj9*@-SCtAmps^4fxFPj&te*x&qL diff --git a/lab6lock/Debug/lab6lock.list b/lab6lock/Debug/lab6lock.list index 6c38c61..1dbc1d6 100644 --- a/lab6lock/Debug/lab6lock.list +++ b/lab6lock/Debug/lab6lock.list @@ -27,11 +27,11 @@ Idx Name Size VMA LMA File off Algn ALLOC 11 .ARM.attributes 00000030 00000000 00000000 00020024 2**0 CONTENTS, READONLY - 12 .debug_line 00000477 00000000 00000000 00020054 2**0 + 12 .debug_line 00000475 00000000 00000000 00020054 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_info 00000106 00000000 00000000 000204cb 2**0 + 13 .debug_info 00000106 00000000 00000000 000204c9 2**0 CONTENTS, READONLY, DEBUGGING - 14 .debug_abbrev 0000008a 00000000 00000000 000205d1 2**0 + 14 .debug_abbrev 0000008a 00000000 00000000 000205cf 2**0 CONTENTS, READONLY, DEBUGGING 15 .debug_aranges 000000e8 00000000 00000000 00020660 2**3 CONTENTS, READONLY, DEBUGGING @@ -1517,9 +1517,9 @@ main: bl piezoInit 80007e8: f7ff fd0c bl 8000204 -080007ec : +080007ec : -top: +mainLoop: mov r0, #200 80007ec: f04f 00c8 mov.w r0, #200 ; 0xc8 bl msDelay @@ -1538,18 +1538,20 @@ top: 08000802 : +# Coded as '2' button firstchar: bl KeyGetKey 8000802: f7ff fdda bl 80003ba add r8, r8, #1 8000806: f108 0801 add.w r8, r8, #1 - cmp r0, #2 //2 + cmp r0, #char1 800080a: 2802 cmp r0, #2 beq correctchar 800080c: d01b beq.n 8000846 0800080e : +# Coded as '8' button secondchar: ldr r0, =star 800080e: 483d ldr r0, [pc, #244] ; (8000904 ) @@ -1559,13 +1561,14 @@ secondchar: 8000814: f7ff fdd1 bl 80003ba add r8, r8, #1 8000818: f108 0801 add.w r8, r8, #1 - cmp r0, #10 //'8' + cmp r0, #char2 800081c: 280a cmp r0, #10 beq correctchar 800081e: d012 beq.n 8000846 08000820 : +# Coded as '0' button thirdchar: ldr r0, =star 8000820: 4838 ldr r0, [pc, #224] ; (8000904 ) @@ -1575,13 +1578,14 @@ thirdchar: 8000826: f7ff fdc8 bl 80003ba add r8, r8, #1 800082a: f108 0801 add.w r8, r8, #1 - cmp r0, #14 //'0' + cmp r0, #char3 800082e: 280e cmp r0, #14 beq correctchar 8000830: d009 beq.n 8000846 08000832 : +# Coded as '1' button fourthchar: ldr r0, =star 8000832: 4834 ldr r0, [pc, #208] ; (8000904 ) @@ -1591,7 +1595,7 @@ fourthchar: 8000838: f7ff fdbf bl 80003ba add r8, r8, #1 800083c: f108 0801 add.w r8, r8, #1 - cmp r0, #1 //'1" + cmp r0, #char4 8000840: 2801 cmp r0, #1 beq correctchar 8000842: d000 beq.n 8000846 @@ -1634,9 +1638,8 @@ determine: 8000868: e031 b.n 80008ce 0800086a : - @ ldr r1, [r0, #BSRR] - @ orr r1, r1, r2 - @ str r1, [r0, #BSRR] + +unlock: #Buzz buzzer mov r0, 1000 @@ -1672,8 +1675,6 @@ scroll_right: # Read current data ldr r2, [r1, #GPIO_ODR] 8000892: 694a ldr r2, [r1, #20] - # Clear previous ON bit, default 0 - @ bic r2, r4 # Write new data orr r2, r2, r3 8000894: ea42 0203 orr.w r2, r2, r3 @@ -1725,8 +1726,8 @@ scroll_right: bl piezoOff 80008c8: f7ff fcd6 bl 8000278 - b top - 80008cc: e78e b.n 80007ec + b mainLoop + 80008cc: e78e b.n 80007ec 080008ce : @@ -1764,8 +1765,8 @@ incorrect: bl piezoOff 80008f8: f7ff fcbe bl 8000278 - b top - 80008fc: e776 b.n 80007ec + b mainLoop + 80008fc: e776 b.n 80007ec 80008fe: 0000 .short 0x0000 ldr r0, =msg 8000900: 20000004 .word 0x20000004 diff --git a/lab6lock/Debug/lab6lock.map b/lab6lock/Debug/lab6lock.map index 019d113..bf680ba 100644 --- a/lab6lock/Debug/lab6lock.map +++ b/lab6lock/Debug/lab6lock.map @@ -413,14 +413,14 @@ LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.exte 0x0000000000000189 0x22 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o OUTPUT(lab6lock.elf elf32-littlearm) -.debug_line 0x0000000000000000 0x477 +.debug_line 0x0000000000000000 0x475 .debug_line 0x0000000000000000 0x8e Src/buzzer.o .debug_line 0x000000000000008e 0x52 Src/delay.o .debug_line 0x00000000000000e0 0xcf Src/keypad.o .debug_line 0x00000000000001af 0x13c Src/lcd.o .debug_line 0x00000000000002eb 0x63 Src/led.o - .debug_line 0x000000000000034e 0xa5 Src/main.o - .debug_line 0x00000000000003f3 0x84 Startup/startup_stm32f446retx.o + .debug_line 0x000000000000034e 0xa3 Src/main.o + .debug_line 0x00000000000003f1 0x84 Startup/startup_stm32f446retx.o .debug_info 0x0000000000000000 0x106 .debug_info 0x0000000000000000 0x26 Src/buzzer.o diff --git a/lab6lock/src/buzzer.s b/lab6lock/src/buzzer.s index 006a4b7..f2cf473 100644 --- a/lab6lock/src/buzzer.s +++ b/lab6lock/src/buzzer.s @@ -2,10 +2,10 @@ # Trevor Barnes # CE2801-031 - .syntax unified - .cpu cortex-m4 - .thumb - .section .text +.syntax unified +.cpu cortex-m4 +.thumb +.section .text .equ RCC_BASE, 0x40023800 .equ RCC_AHB1ENR, 0x30 @@ -20,7 +20,6 @@ .equ AFRL_OFFSET, 0x20 .equ AFRL_TIM_3_CH_1_EN, 1<<17 - .equ CCMR_OFFSET, 0x18 .equ CCMR_OCC1PE, 1<<3 .equ CCMR_OCC1M_PWM, 0b1110000 @@ -41,8 +40,7 @@ .equ mil, 1000000 - # Configures the piezo buzzer timer in pwm mode - .global piezoInit +.global piezoInit piezoInit: push {r0-r2} @@ -55,20 +53,20 @@ piezoInit: orr r1, r1, #TIM3_EN str r1, [r0, #APB1ENR_OFFSET] - #Set Mode to alternate function + # Set Mode to alternate function ldr r0, =GPIOB_BASE ldr r1,[r0, #GPIO_MODER] bic r1, r1, #1<<8 orr r1, r1, #PB4_ALT_FUNCTION str r1, [r0, #GPIO_MODER] - #Set Alternate function low register to timer 3. + # Set Alternate function low register to timer 3. ldr r1, [r0, #AFRL_OFFSET] bic r1, #16, #4 orr r1, r1, #AFRL_TIM_3_CH_1_EN str r1, [r0, #AFRL_OFFSET] - #Configure CCMR1 to enable preload and set to pwm + # Configure CCMR1 to enable preload and set to pwm ldr r0, =TIM3_BASE ldr r1, [r0, #CCMR_OFFSET] bfc r1, #4, #3 @@ -77,13 +75,13 @@ piezoInit: orr r1, r1, r2 str r1, [r0, #CCMR_OFFSET] - #Configure CCER to enable timer 3 as output capture + #C onfigure CCER to enable timer 3 as output capture ldr r1, [r0, #CCER_OFFSET] mov r2, #CCER_CC1E orr r1, r1, r2 str r1, [r0, #CCER_OFFSET] - #Configure control register to enable preload + # Configure control register to enable preload ldr r1, [r0, #CR1_OFFSET] mov r2, #CR_ARPE_EN orr r1, r1, r2 @@ -116,13 +114,11 @@ piezoOff: pop {r0-r2} bx lr - # Set's a given frequency to the piezo buzzer - #r0 contains frequency in hz + # r0 contains frequency (hz) .global piezoSetFrequency piezoSetFrequency: push {r0-r3} ldr r3, =TIM3_BASE - #bring clock rate down to 1mhz or 1,000,000 hz mov r1, #15 str r1, [r3, #PSC_OFFSET] ldr r1, =mil diff --git a/lab6lock/src/main.s b/lab6lock/src/main.s index f1be8e0..5fd5e9b 100644 --- a/lab6lock/src/main.s +++ b/lab6lock/src/main.s @@ -9,7 +9,13 @@ .equ GPIOB_BASE, 0x40020400 .equ GPIO_ODR, 0x14 - .equ BSRR, 0x18 + .equ GPIO_BSRR, 0x18 + + # Code is '2801' + .equ char1, 2 // 2 + .equ char2, 10 // 8 + .equ char3, 14 // 0 + .equ char4, 1 // 1 .global main @@ -20,7 +26,7 @@ main: bl ledInit bl piezoInit -top: +mainLoop: mov r0, #200 bl msDelay ldr r0, =msg @@ -31,34 +37,38 @@ top: # How many characters are correct mov r9, #0 +# Coded as '2' button firstchar: bl KeyGetKey add r8, r8, #1 - cmp r0, #2 //2 + cmp r0, #char1 beq correctchar +# Coded as '8' button secondchar: ldr r0, =star bl lcdPrintString bl KeyGetKey add r8, r8, #1 - cmp r0, #10 //'8' + cmp r0, #char2 beq correctchar +# Coded as '0' button thirdchar: ldr r0, =star bl lcdPrintString bl KeyGetKey add r8, r8, #1 - cmp r0, #14 //'0' + cmp r0, #char3 beq correctchar +# Coded as '1' button fourthchar: ldr r0, =star bl lcdPrintString bl KeyGetKey add r8, r8, #1 - cmp r0, #1 //'1" + cmp r0, #char4 beq correctchar b incorrect @@ -75,26 +85,18 @@ correctchar: beq determine determine: - #Check if the number of correct bits is 4 cmp r9, #4 beq unlock b incorrect unlock: - #Turn open LED - @ ldr r0, =GPIOB_BASE - @ mov r2, #0xC060 - @ ldr r1, [r0, #BSRR] - @ orr r1, r1, r2 - @ str r1, [r0, #BSRR] - #Buzz buzzer + # Correct buzzer sound mov r0, 1000 bl piezoSetFrequency bl piezoOn - #Print CORRECT bl lcdClear mov r0, #20 bl msDelay @@ -109,8 +111,6 @@ scroll_right: lsr r3, r3, #1 # Read current data ldr r2, [r1, #GPIO_ODR] - # Clear previous ON bit, default 0 - @ bic r2, r4 # Write new data orr r2, r2, r3 # Skip if PB11 "pin" @@ -127,48 +127,41 @@ scroll_right: cmp r3, 0x0020 bne scroll_right - - - #Wait and show message and leds mov r0, #1000 bl msDelay - #Turn off leds + # Turn off leds ldr r0, =GPIOB_BASE mov r2, #0xF7F0 - ldr r1, [r0, #BSRR] + ldr r1, [r0, #GPIO_BSRR] bfi r1, r2, #16, #16 - str r1, [r0, #BSRR] + str r1, [r0, #GPIO_BSRR] - #Clear bl lcdClear bl piezoOff - b top + b mainLoop incorrect: - #Buzz buzzer + # Incorrect buzzer sound mov r0, 300 bl piezoSetFrequency bl piezoOn - #Print INCORRECT bl lcdClear mov r1, #20 bl msDelay ldr r0, =invalid bl lcdPrintString - #Wait to show message mov r0, #1000 bl msDelay - #Clear bl lcdClear bl piezoOff - b top + b mainLoop .section .data diff --git a/lab7interrupts/Debug/Src/delay.o b/lab7interrupts/Debug/Src/delay.o new file mode 100644 index 0000000000000000000000000000000000000000..ba1632bf79990bf1bb060447948b7a9316923e88 GIT binary patch literal 1524 zcma)6OHUI~6h3!`7Eu_BkA#ROEibFlnNmq4#s#E+8y*qD#)ae#T(PkaGIJ}CnCQ|U z!9tCHfh8vX1okdmxH2Zf!o)H7^Ap{u`RHRcxr0vL) znTSM@a&(cLeS2={C}%Al{Sohvk$mgq@WZjN==QI}cgM&s{yZF*a}H>K>HFt)1RX4* zhDD?N6ems}p)a=r3)l5lf_0(|Rg=4J7>|&#xT&2Jh2iqJR~U+ag|Q)kVM`!?h-+~W zb+w0{j4)wNqQ_wIM)XrI+b=E&+Zl95oy!?muY;3JXfc^gM)5$NnWyr=TMbnZdcF)A zD%62D(_C-WRYQkfWwtz78uzxF!HaN9t}Cx5{rlC1Rzc9(f`3N&txbBgxSF3{$(P-G zCAUP=Bj_QO^s6MULCsW}fmST*ka7xMBm^d4jvjqfo z!O0xcS+7l5fu^+#!zN>_tZ)x z;>uvGIhxGsChBF3v2uz1N+JhXqJ6Ye$b5qNjVwG&Jh|a+T}vNQ2eEu^G#tJrcSCAP zt{;Zv2CC+6@aEQP)rLyrYU5cGp^;DeexP2ay)uxEO@#t+0P2%Fy}aN`t%IuH(s2DR z4I+@YWH!U!VET^6_m`-U#KoT~Q4KgvT!ZN*n78_`xDsMa4%DdLGAjug-yLAy`cz`y z!$4f0_ipYQ<0-Jofl8miW2_`(d=G)s^**8=zc1J0GvJzBZys!Npwc%m-vvX)_Y?-B zv+p-J&q_jEi|GkC-S-Rn@}1$nY&U)D(77I;57Pj^TC7G-_A&2(amHJb5sz&c`Crcv v$1t%(t2XVy@D<1b^Ihk@JO|HUb_SJRA?XGy37LBR!0EUjh52Wx!5gutUD5O7yaFfnoc&YhXv3zDd(z4LwF zIp?1HH*>RZr4NoMib8=Yq*GlHJ>McCjlBYN+DIMLd_FrG$`6$r)X?nI=+*h+{dP6| zTXtgTHmO%umy0>CFO9=$gP|dUdU3q-iyL9y6j$ zIiyq{{8i;f`h&IjXlOoD&T6w*Lue*+3OV4K8d`2US?>Dv$1qmIxt~@PQb(Q|J@YD8 z+U)hBnSb!mHG;4p0jkEZN;N*t>hr zP+$Mv)XqeFn7)Tor5*fK{tT}t92%b!nqnB{lru||w^x>|IiutqV55pKX+26T7B%D1 zxM`X(J(fr$qA~OT{l{ZkC=yMWW+EDoMo~tzsMZ>RKW3WIXl%O_fP?e>L=UxAL;LJ> zWVd!sF;o?kkMTlyg49rZ-R69@0p3Y8|WIH7@XE_DCBxF;#S2`}nT0UTRw3Jl3j) znmTI>;|V>+w1>VloE83L)2PAA;P*mUr5XYzJb`DWx*5*~N%Ou2?-0j#)nZI4)qXsm zsQD_@L2%x0&nndeAnO8&{4DquNl$~{lXMRJuB2`7JCdFUza{BB_)SR{z;8(Ub@1zw zcEPVn`WX0SNxuocD(TbUmn8iT_ytM72hKU3RjTiUoC+k?`vLd~Nq-2=V|rGpejHGN z3Y}xD9kfE9KNPROuk6;Sk-h>RlJezrjl9b?@M*-ST{n%I>H9NdkdQy0&Gs8X^4ah`xBA`Q4larKBQoft=J(TaI{BFwcp?n|Z`zgN{p#&P@NhBnZ zkwi)oImtb=&Gj$8sadPQG&OHICE7Meuh=W2g$0*!pY7r~Ud$~PXY+LjEtiJvMQg?P za8IoH3R@bL!uWRzBpx>gS8Iv&mk%&`{@+%+y4bCzq7kt>zRaEhMb;2d9A(~AoQ z8~&PJC>$=Li-=jdoMXQsM=i%H9I;WzOTbuU3{H+2mg_nTxn&oj|7u&2h^5xvR{rfE z-_5~&)d_zq+5j5cmS*p6YX|54oX1}Twn^yVc09{L$pVRE5&8d?mp~r(QT-ZRufyjI zLA{qG&i*eD_<@OUK_1_!@;dfo9XxMd2cK)Oj)UMqA5c1u3G86vTM*k1E!UesJsyMW zaowQaA@HCND1Cx@^}D?ud+m|Di^z*`2j93R+hH_$+%p)L-$x#oZuJx_mS;q z)SD5^dvJ`~yJ$FzCC`gBK=4@x#yM<^C{eQ+6}~gGaa=puwcA1fSMfd^Y$xi>+62{9721c_j@=~ddJ|lgz-DGWNw!(< zY-eWESc+&`0e^rB5gzJ~R;>yMkoZ$!(I2s7Bvc`RP%42GiH9PARJ0P+&TdpAkUD(l z&cl-+5O;m=`Mz_`J@?$l+$+COI=LVS0t<@3rq~{1?B+1H>^siI6dPqDEdH~bOGB3n zT|peGk&HpUy)<;G)MJ&M-dU;8k;LT>SZ1g96DbWmbp9<^b3G>Q^ghC^9`5+o_|4Yh zfvq1em%G=k8)~`BczeADe3!Q!Vf6JUpQ#)D;Rg#HL3~DijeN=8JtDZfAG!y&4{yD) z4DbKi|C{&pfBC-thqt9IclU-{?oKg^SMJUs?iQpM-{U`x@C58Xh;RY?RdA8#Q|=Bx zekZg`h+poK&)3L@k0EV~(2@U(p-zO~>yE(Qa0H>;xjvHX2n;h7@*M`h4OiMupbryY zJjbSEx7^(?yP_kAyYCGyB(}%5SU3HTrxhqK&Me9pKt-pViB53{LRIQ(wq27p^uk{Z-MLo6tm|E+P zKPTN;?8&KL_ROaS7vfljM{uIB68tokKVa5Q&-G8!q2L_d<>$ydLA*^o`SE%p-1!kv z=!lrv=%_IL{;k3Pd43byY);HEhB`>nD|7fzM3w;&g@45lGJHq$>7WX-tW?YzV~yIn zY1@jDODGK`50v79#!O9Sq~T;bbwp8SFmML$h<#5po1V#L z!@q1snN3Zm5sObENE`}GkGcl)%BH2?UrS2EvXqdeUkS1(Vx`iwYP29M7G5_oi7VJa zh%%~hUBGoSFe*GKNb#}wk@!RVJO{Lop!)qoUC^Ht-UcY%`WGKp&RV)@DVl0Fb;~xD zd85|e(3`fU6ic&n*%{?|!@O*@)S9j|RPC{P)7DM1-GY5y*V-4^;_0)=d?h(6e<~|y zS$+Z|sJg1vneYj~eMQ5x^{bDbI?e_T?mzW_I5aR8&Wf`6&m!G(%i>(%7cCNtc^>@S zk;QR`&}Ks?$Nebq-Y||!YZ{B#Wsb$1r*hoS5D3q&`HIDlNac@%r9QUi9-PbtoH;9K5ble-B z-PbtoD<1b-fxUSj{~`F9P$#gT1AjZhe*yebn4iGj0smHn{~G*Ggx?PP5|G$m(0)H+ z|2z1Va6SV2CwMPn9{|op><7U=8{tXtFGcuK@V6pd0lypJ2p<-S?GG^lDY7#j-}{z4 zet<++q{z;ZQo>g`i}8NvdyHTs9|sQ#os+_Sd>Q<>uOt5o@QDcjJn*>)e-`*!gl__W zH^RRH{Kp9Y9`H;4{3$+LEf%YVe5J%e{zPG>bb6KJ#g(OUzH~aoMPRP;+zI+U306;) z=S!>Hp<15z!BPMUl~n|-u+=rR)k^6MiQ-A<);zYxS&5Sp$1AuVD!Scnu?d^4nRQ!V zYT_1Z*X+8{^c3@|t+Iw;wAi}Q)LFB=QMHX~zEWITB67x9F>xue=c#jH)7F{MwyVa4 zs;M?F>dd-SzhGBuo3)0{^k&UiC$V0=qMP*#o7HAr(;B+PRbE7`ZEdoNb$XtbnsuAC zt$DqnZn6zuLSJm?s!0wfj18S6Ca_{yb)GUP&!=J|tBYji^mKcJaItM#hI!Jcsey9= z!(u zJT&~i6rmeHTycsqI_2WDcdwEDVd9WR+aB80(cG>gUR{TQ?hDf z&9%0T{rrE+I2p;Bq#@@_%KQK>)q(S3i!=fR6L2N1-7 ziTjc~hD!c{-xC2KBMQZ&Liq%kIQcyhQ3R0QzG!}TkRQdT{OC3d@|y<^`T(-4Fnp4L zUjkbWJR0wBh&Klv#iQFZh_?b9^Z{hA!9eFGD1l9bBEV#O8-7UwexY2cd=WJ|ZW8}v z(fvu|B86~VdM_y+&6~(^b literal 0 HcmV?d00001 diff --git a/lab7interrupts/Debug/Src/main.o b/lab7interrupts/Debug/Src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..f2795a91b61e770c179af0b7de4ab05acc7630cc GIT binary patch literal 1588 zcma)5%}x_h6h1RUi&RRpsOhFQfCJF*7QIH5tTuElyD^6^ucxS4TnBW8O z0KR~Gmo9x2AHkgq6Y=||bIVW{`ZcHL|7Xs<_h9wO1Ix0+z>*m`)m85ePrkk?6yqt-}+T43u-YPWVx=lr5hq`KaAYCSG8cXjx%a`o^2!e3KMCPp?=rV zR2Qj$Z-T6k7P=P4tqIGiOjf2VXA4;b*dtwOQ|7N578u{D$&cesC*{5~X!_5B?Puba&<9M!mYURh@Hh*4&yb z@xy)P2ccLOAr_W9I#KU$tj|laJiI<)mx`19@8URr!8x&QtOmb492pvjI9bn;;e0r< zM+WrVvfyzfza8qOf%q~y9%BsM^A*S78b5a9Hi%pp(62%-XSNAWKb54HKw6FFS`;So zSna1g3EN7i((3c=wVnI*?d_)tvP z&t?2PIg--*0bb4YG!H8=@#4n&?Zgkj6W!yljHFe|#c3wuHvPmGH;7|#X>9T;?6ks2 z<@GRn*+FRP^MgREw|TFx{b*OAKraA2#9ex}?)pih!=RhM^}o1`KzwSt1Lp8;=1;Zv z9z-T#=h-cSh)-~EFML?c=We;z=}b2_ZxMPPj3usv82_(0&SP>Qrv2|x$Y6Xm==u4+ zU_RF8e7v=0z7@zO2cjH+u2INfe2dWY^}eFs0&J|uS7PdILN+-NrEc zH&7L1z*&hGpnTsS=*#=XzIZU@qg5YG k8bD{jPJ`H&b8t3uW)P)`B%YChsmFJnkE3#Eg1}AOALciYDgXcg literal 0 HcmV?d00001 diff --git a/lab7interrupts/Debug/Src/subdir.mk b/lab7interrupts/Debug/Src/subdir.mk index 1957028..c8f9dc1 100644 --- a/lab7interrupts/Debug/Src/subdir.mk +++ b/lab7interrupts/Debug/Src/subdir.mk @@ -3,6 +3,22 @@ ################################################################################ # Add inputs and outputs from these tool invocations to the build variables +S_SRCS += \ +../Src/delay.s \ +../Src/keypad.s \ +../Src/lcd.s \ +../Src/main.s \ +../Src/timer.s + +OBJS += \ +./Src/delay.o \ +./Src/keypad.o \ +./Src/lcd.o \ +./Src/main.o \ +./Src/timer.o + # Each subdirectory must supply rules for building sources it contributes +Src/%.o: ../Src/%.s + arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" "$<" diff --git a/lab7interrupts/Debug/Src/timer.o b/lab7interrupts/Debug/Src/timer.o new file mode 100644 index 0000000000000000000000000000000000000000..c8e1bb99dde1b0e79a969c73f2194bdc6b3c6ab6 GIT binary patch literal 1632 zcma)6%}x_h6h3!KD=5@fTo5s_kc!0UOba9uA#?DFT7hoP@13)bH3P&JZPRi{ zT!WZ2nyzmj->ocAYV1N~M7fxn>>rE!8KlIySHT@cr;&aMXgI-yR8Y5JqP zj_&~HLL=60ZxL%eeg&BO4yoJQlwz=-Z#O}ybJhe658$Bzd}#oW4B*k=Nu@Hwr!$Po zPHoFDij~^-}ytkzXhWKFfNwM0r1)z4eCU z6V0Iz<}5gcGD?IWDP!S%vHogg=lfC86wVX&T!i`b3Xa70%l@Q#@9Ms3VfWo|e<>wA zyie+Z>6@flo=2){AE^gCHMJwBVaKu4c+rGwU^6Ytwco_8rfW71Z6pXCke^h2r=ps^ z?>bi7hv|QbXM@|8ugKqf{QC&M9ipkoFZ^2|dJY^X&cSpG%oFf0zXE(@48$PcLlz>E zHl9_UkflgJjKrKDPeeRf%#4@7G6o`j2G6h%k+eMkj_1oDAJ0GM<2#V~HXzFwi1Z!I zvmi;@_#ULpwx8e}3lVW|Oi#h_x@)M*GsAURFYDGJb3VQwreT0uCNH+ScC0+KtCjqa11;8DimiwButQGT@oKfQ6-m2d zca>O;1I~f)C^X68)zC)>kPu2kOK1fIA~2k!1e)g92U?PXL*V3KFc2g=#4ZnSzrQ;( z(w#}1^c+t4qy3IOGxvLczx(>!-@UV%-M6;wZnrE;c}GaqC{ZVhRmm3Izi@d-sUo#( zi;Ac)Y-`nPwOu*a61bE+xLheY@gIlf+EGra2=YscB!ROSr)Q6-kmN-^1G~ zv&(i@A8L5GXxGIL6?OjO8Fj>}uAZuxD^e;V8n);|>P3Tu1GoaC3lF1E7S zaC`53MW}cFSJp=tEK6PS>*F6=utMs}Umm}A!BVQ`7suDNm(8i!-cw&)^iXrlXNS5< z$D8MiLZ!)pu5TX9oGA~rogV6IKBYq6+`oLTcvj6%p6i`g*3mQJHRV^n@tB3$pRakn zzW=;tyT1Rlra|9N*2MJvnVPHg{Y1@XegAGvwZ4C+W`n+exn{k-&(*Be_b=64tnZ(% zDcAS6)U4F^TWgl<`znWhYE$W4;EC-*<;mRr3ZWG zhr&sWp>%)gt?)rQ94eh&d3gS+UmP#PXbNY4P!JxW_Sbd2>jtUmwN5Fu|0ShLKy(>e zNENL1m4`19zZX8W)9^zXsonG21HY2PJ5PlbI5&oNs*=#oyJT+u`4P?70%MQ$7f@T< zX*F>4^ia6@R5*0)i>mtQ=}(2LkS^W-Sy*?TR^g+kU!$!~`jl%edt|EPqS?Q@ws-zW z?)?djQeTfGk$yp6Pg$$)-F5v~=FG}9&8Mu;^@)4LSM2kfFrMF@zi95V*$-a}?+cc{ z%UAvmU-=W~FPjU4|dNB;e;o`bfa{}wug z`$wURasQxe|MdAV>UVtJBR**3PUMA?S1yqfy6pyaMbWXs*|!%$SQBSYmb918Z9rsKoxASZiv3tO7Ft6qPZf$V=aSlY zKGI&&e*A{Q*&7%0x{()Nu);-Gp-rpks^^YxK%YX0Ayw1yU0utmqv%T*ec7q|q^^h@ z!@6lMx-xtsv=9yrpSgG^bpMiG+Xp?oq}T6<&MxTFk~otoriVOLdeh9ZkJ2s@&1j z1vi@3dU5oEjw2_6^tF7~>&D6#XTBn2oeE)Ot5;iBJb$d@72~(uiGSs+0c=x|!r334 zFPwe+w`yLU+c0b0m_eVLz}*_|o!_W#L#!6B?wwy3YQ`Scgm!LAtVWb8wW{;>_Enu_ zU1is*>d>>_zV6Y!qJ~G;y|?+lzP0k&mAh57_3Xv_i|Rkt{OfPYo~h@vB+I`>p`zq9?`(*Jf^HoNG{vnR@<$LS1s>e5h^WSQ*?>-8f$HMo%ILS zdh1fF%IbknNQr02`gPeVW#NFpX+@*4foxK#k<>(DCYqBx)E6oWsgiJoRasphk5yJV z|0^%Af~XEzDF3fgm%3c87pieQH8YhMS*r34Qe}fxRaF_QuB?v5VpTO&b#--K?TgL4 zTB5otTpFpYi^b|Ht1Bx}jXo>GDW8Pft+A1Nh$M;i`rZ%*BUq?jjFZB=Bm0%r>vx^km&%>H)*qSb9H!Sq^fdLEEY#s zs^KoM%u9V$ysmEXe_eH~zH)OF>OyOEZWpUD2#gKg6VC1ctHS?&I1*kN4VOp5kGt$% zuR~$uE3unQjHQgH2Mx*{1sy}KQ@`lE|vd`lwWPhyl=#Kaa>-hgYt;3 zYR83ol22sw(^E?2oP?drPd3z#ZrQReo5~+rs{VUY{Z$BkP?n4HA2<91wD8_YeJln5 zPWQ1^u3nA;&nZjyp-T4w7geN}k}M>Ne90-txd*3p#PPZW=_0EiSMiXTvXKsY)o8Cu z)FvJRFY_{9Z_r+U5>iS$1kvG_@#@oFe*-V^_)naF?(@0~Dx^lV*GYKE@nM`xeX>@o zisIGQ8Y^73zHC$3#miv*U&$LPHd;UF?ITyz+JCb7;q$7F?O#ALd zyTB|8J2tsG<+F=+!FbV<*|p!jXcvH28g{(^)R!0S5=MesqQfPry`2p==IysF*TjZ$ zscbGboXDnAxqLR(nn_MirqcObtfj5Ku`V9FIg=gFO(l}4*hFG@`&c@k%4VmhU~f$g zPajYnJwuVEfk=I{p)Ojd-0BxMUspT3mn+=m=qhh@iF8&*>_RI<22j8ucNw3IP0lDz z$&*8viI1g1hs!QnrPk?OrRw0*iF8w0#oLQ+55FUHhcP*>k9*T~g`G!{den024!g5| zm)llYIg@waqITweNlR#AIV{?X1A4jEpIo#r4k03juv($*sMXb_T0^*crPkghtVixC zDZgq-AQe_+0WFJa=?JTeC4p2}tq$ll0e!Jc$jL5J3x!G~WnP?|kdm03H*^j3DMN3C z4!Pr()g@c!dBffYy~eQ1<|Xru8;+2Y_Dn6?*CmF1Slrx0`ZtO6A=i%h(B-}PmHLjr z{+K)8A!w=Zd#)DyhoEIXEZmhU)pl?G6uNakay>1@q<=p)%0B`9lR*9F4Es~CV{j2C zW}W)I_)%)PdJc9^ThP)!=?`u=N>$kDm{#6=$Udbr(EoDSu^BAtbpiiPq8mdy9sh+w z6uQn4xGof~fku1ou~29i|B}#7Cu59McG0j4ZXC-Efi*; zz4a>Xy$$+#uQ>EOpnq=YcSHZw(C>vlY3MtlpE30Npidb3gV5hK^xe?kG4x+U%Z}c;_r*FzX8t; z$0a1Os=WP3R;i5jQ}ACZ^3wT!P8&lzojQN_`47(bFHpZbI5e?P zI1TOWg3{tb;rn=yIlG{ve<}UZeRA|~oV1&>PzcL|Z}H)`P$+fMZq7nswWJmUdZDn^ zvA8)4g+GM8*Wg(RcT;bM{RP9`2)(7q8$w7mLsuJsDglh;3a&Ub#iGcm#fPNyNp9|<01G-E;GJ%mC72t{3^^GqI{g4|EYta511NNSP{?mZYLqF)w zpVWUiV1G|Q|0T3HKNV`3`gp+p`G9^L`p52mAbgGm?9T`Ea(pB-=Pv^7&A*i23=JF+ zhexUS`uy7i`b`0SV?f^ujWwv_N9uoP!2Xed{-=QcT0lP?&_4@kX~`VlI%sn|mphT{ zj&Fsk4fy{N^p);@EB)<+zQO4Kn*#om0sW4E{t)zUjQP1gV1F3eobRs(?B9ouBYrwD zArgNJ0ecZ1Ugmf&3FynAXWaOc@>d7!e+&&6E{{^x3Vj0c-iY>OefJ0aM+5rifW9-J zKLUNV!S8{9{fhzpWI+EYpw9<%IUd$#|JOsCJgy4pYXW)@I&aL+4bT|2K4iU)L(AuX z$&z@u1={<(EBbBFW_x!B^aBC?6=?7IBIUmkusX*dNyAo%&Xz{J#Y3 zPeXs(h_@dG?7s?Vyvp{Ce?vfT59rQ-zCNHQ0{U=3e;}YA2DyzEEqhs(%*-}bv98t+^ zK9`>!9gQZHZMSvW?fp&NZFX~8M^}$+BWomMADGAtCnoHXd?uT-6Vr!OGBY_fk;5jgx-j=o=rSFc5B<=3r*0z3~ zYxlOgi7qeEH`M1Pn+N*))p%Tu*Q@acHNHiSZ&l;l)cAHa-l)cRz*L75_Bb5k@QA}D z4xc!j^p_h0$wXR`Ee8|XobI)}XLGtNU1@TA*W?ahK=toa{R8$u+o0T9c4Hv>9JNoY zHZ9t8x-XN>52WOc^}Z~ov@4C5gVV|USSIacNI<9wndgyAI;GOnlXgC1Hx0COb%_|v z^kwm`P~9wrn`iPVm6^`lnNd5NNFPY4+`+NYyq%m$PNY;Soy?5LZNx?pjg8LO>9OJA ziBwK!IW-PX=VtT>^~=MIPC9Q6GpePfyWj3@X^D5+efzpS8SiUTP3`@=?ZK|@2D_y* zZi9x-=xuKo0!}d}t$p+?ON1a=lh@!aB>v+SeR6s@H8zs61gT@-j=2l6ZuSLA{RZ7p03rY+R;q5R(nUc*Vfm?8*ATOUpqZD zlE|l`H;<(o>d_e9rbc1fQMV=D7~dAJi|LZF;jwfKuSzGzhGPek$yg#gS(^s`TKP6E zwmsSqjmPo_rzeMFH*HVVPR2&3ZrW0tn~EVqMq*fvV+fD`t7A)JY_@-ik04_zoANDt z$ulza%jTE3Il29VEq2oc7~5U_dpZ;8kqK;aZPyKU)teazo<Icco^!WWz=E@j&%^rV}G@H@#cCo9b=UluAr) zHS;?$@$HG}iTq--@QlBlr`+VtakFCSNQ0RHke!*yl#pt)2m3qhmfmhz_HiFi&2gwt8|uvB?cIG{^(}E5-)m&D zroqNj=ulqSIeE_M%H86=)={>>ZtFJ-N)LTaz^C4B+iUt@dOK2iT$M2)zPQ5J;~2ZI zqV~Qavy$Gy4!d)}-nR=KGawJ;5(iTLS=S&3TG~uEBW8RJ+cpM_?r7|#_(GH5E9$If-%6D}?y!BOG0J9qBH5R~{wxoP-~z;A z@lkQtX%VJsSseel4bFwm8?;RR6 zo8PyuwZqh)_%$KMRHJg~R+o5PT9Po%IjA#}W_qOWGnF|Zr9 z?`|6CG;1*m`=Dax{d=qKps#+Hk}+UJgl|C^LG7#DS?s>iw08%WgEuDMI>%1t>x0pP zuVod@%}nMK!?@?O&i$a58p~zz8Cfk!P% z$@^{Za9>-iT4Z?j$-CUUmRrVmqDx<2$#>!6C#Sq~Eb@8)Er-|cPB;B(er@oR?_T69 zj0@E#eH_FozYOsF?nD2)z9U=NExrM7Ria_wed_H#F*+^75s=I#1y4`N_|TytJ6Nz;E2` ztZ2`6zmb;wkKoJ1XC>htp5H^zURq3V#S6%rTpzi4wyzjz$v+3b$0gw&GDbO`#3^OG zz8_r{QjdtiJ;WyG)9&5PR!53MD&h&;z4}ffE&kqdFZ{0d1nwSZ@o{5bTc3cR`~>7R tP=De2Nj%{duQ#_yDfI-tG<^~8mAu1iOMX3KU{zn+6jCpEPPlu1{|$>9*{=Wq literal 0 HcmV?d00001 diff --git a/lab7interrupts/Debug/lab7interrupts.list b/lab7interrupts/Debug/lab7interrupts.list new file mode 100644 index 0000000..f301217 --- /dev/null +++ b/lab7interrupts/Debug/lab7interrupts.list @@ -0,0 +1,1420 @@ + +lab7interrupts.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 000001c4 08000000 08000000 00010000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 000005cc 080001c4 080001c4 000101c4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 00000014 08000790 08000790 00010790 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 080007a4 080007a4 00020004 2**0 + CONTENTS + 4 .ARM 00000000 080007a4 080007a4 00020004 2**0 + CONTENTS + 5 .preinit_array 00000000 080007a4 080007a4 00020004 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 080007a4 080007a4 000107a4 2**2 + CONTENTS, ALLOC, LOAD, DATA + 7 .fini_array 00000004 080007a8 080007a8 000107a8 2**2 + CONTENTS, ALLOC, LOAD, DATA + 8 .data 00000004 20000000 080007ac 00020000 2**0 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 0000001c 20000004 080007b0 00020004 2**2 + ALLOC + 10 ._user_heap_stack 00000600 20000020 080007b0 00020020 2**0 + ALLOC + 11 .ARM.attributes 00000030 00000000 00000000 00020004 2**0 + CONTENTS, READONLY + 12 .debug_line 0000036b 00000000 00000000 00020034 2**0 + CONTENTS, READONLY, DEBUGGING + 13 .debug_info 000000e0 00000000 00000000 0002039f 2**0 + CONTENTS, READONLY, DEBUGGING + 14 .debug_abbrev 00000076 00000000 00000000 0002047f 2**0 + CONTENTS, READONLY, DEBUGGING + 15 .debug_aranges 000000c8 00000000 00000000 000204f8 2**3 + CONTENTS, READONLY, DEBUGGING + 16 .debug_str 000000bc 00000000 00000000 000205c0 2**0 + CONTENTS, READONLY, DEBUGGING + 17 .debug_ranges 00000020 00000000 00000000 00020680 2**3 + CONTENTS, READONLY, DEBUGGING + 18 .debug_frame 0000002c 00000000 00000000 000206a0 2**2 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +080001c4 <__do_global_dtors_aux>: + 80001c4: b510 push {r4, lr} + 80001c6: 4c05 ldr r4, [pc, #20] ; (80001dc <__do_global_dtors_aux+0x18>) + 80001c8: 7823 ldrb r3, [r4, #0] + 80001ca: b933 cbnz r3, 80001da <__do_global_dtors_aux+0x16> + 80001cc: 4b04 ldr r3, [pc, #16] ; (80001e0 <__do_global_dtors_aux+0x1c>) + 80001ce: b113 cbz r3, 80001d6 <__do_global_dtors_aux+0x12> + 80001d0: 4804 ldr r0, [pc, #16] ; (80001e4 <__do_global_dtors_aux+0x20>) + 80001d2: f3af 8000 nop.w + 80001d6: 2301 movs r3, #1 + 80001d8: 7023 strb r3, [r4, #0] + 80001da: bd10 pop {r4, pc} + 80001dc: 20000004 .word 0x20000004 + 80001e0: 00000000 .word 0x00000000 + 80001e4: 08000778 .word 0x08000778 + +080001e8 : + 80001e8: b508 push {r3, lr} + 80001ea: 4b03 ldr r3, [pc, #12] ; (80001f8 ) + 80001ec: b11b cbz r3, 80001f6 + 80001ee: 4903 ldr r1, [pc, #12] ; (80001fc ) + 80001f0: 4803 ldr r0, [pc, #12] ; (8000200 ) + 80001f2: f3af 8000 nop.w + 80001f6: bd08 pop {r3, pc} + 80001f8: 00000000 .word 0x00000000 + 80001fc: 20000008 .word 0x20000008 + 8000200: 08000778 .word 0x08000778 + +08000204 : +# A subroutine to create a delay of a certain number of milliseconds +# Input: +# r0: Length of delay (ms) +msDelay: + + push {r1,r2,r3,lr} + 8000204: b50e push {r1, r2, r3, lr} + mov r3,r0 + 8000206: 4603 mov r3, r0 + +08000208 : +ms_delay: + # 250 iterations = 1/16 of a millisecond + mov r2, #0x10 + 8000208: f04f 0210 mov.w r2, #16 +# Loop 16 times +1: + # 250 + mov r1, #0xFA + 800020c: f04f 01fa mov.w r1, #250 ; 0xfa +# Loop 250 times +2: + sub r1, #1 + 8000210: f1a1 0101 sub.w r1, r1, #1 + cmp r1, #0 + 8000214: 2900 cmp r1, #0 + bne 2b + 8000216: d1fb bne.n 8000210 + + sub r2, #1 + 8000218: f1a2 0201 sub.w r2, r2, #1 + cmp r2, #0 + 800021c: 2a00 cmp r2, #0 + bne 1b + 800021e: d1f5 bne.n 800020c + + sub r0, #1 + 8000220: f1a0 0001 sub.w r0, r0, #1 + cmp r0, #0 + 8000224: 2800 cmp r0, #0 + bne ms_delay + 8000226: d1ef bne.n 8000208 + + mov r0,r3 + 8000228: 4618 mov r0, r3 + pop {r1,r2,r3,pc} + 800022a: bd0e pop {r1, r2, r3, pc} + +0800022c : + +.global usDelay +# about r1 mircoseonds +usDelay: + # stack + push {lr} + 800022c: b500 push {lr} + + lsl r1, r1, #3 + 800022e: ea4f 01c1 mov.w r1, r1, lsl #3 + +1: + sub r1, r1, #1 + 8000232: f1a1 0101 sub.w r1, r1, #1 + cmp r1, #0 + 8000236: 2900 cmp r1, #0 + bne 1b + 8000238: d1fb bne.n 8000232 + + # return + pop {pc} + 800023a: bd00 pop {pc} + +0800023c : +# Initialize the keypad GPIO port.   +# Depending on your scanning algorithm, +# there may not be any work to do in this method +KeyInit: + + push {r0,r1,r2,lr} + 800023c: b507 push {r0, r1, r2, lr} + + ldr r1, =RCC_BASE + 800023e: 4955 ldr r1, [pc, #340] ; (8000394 ) + + ldr r2, [r1, #RCC_AHB1ENR] + 8000240: 6b0a ldr r2, [r1, #48] ; 0x30 + orr r2, r2, #RCC_GPIOCEN + 8000242: f042 0204 orr.w r2, r2, #4 + str r2, [r1, #RCC_AHB1ENR] + 8000246: 630a str r2, [r1, #48] ; 0x30 + + # Read current PUPDR state + ldr r1, =GPIOC_BASE + 8000248: 4953 ldr r1, [pc, #332] ; (8000398 ) + ldr r2, [r1, #GPIO_PUPDR] + 800024a: 68ca ldr r2, [r1, #12] + + # Modify and write rows and columns to be "Pull-Up" + bfc r2, #0, #16 + 800024c: f36f 020f bfc r2, #0, #16 + ldr r0, =0x5555 + 8000250: f245 5055 movw r0, #21845 ; 0x5555 + orr r2, r2, r0 + 8000254: ea42 0200 orr.w r2, r2, r0 + str r2, [r1, #GPIO_PUPDR] + 8000258: 60ca str r2, [r1, #12] + + pop {r0,r1,r2,pc} + 800025a: bd07 pop {r0, r1, r2, pc} + +0800025c : +# Returns in r0 a numeric code representing +# the button on the keypad that was pressed (1 to 16), +# or 0 if no button is pressed +KeyGetKeyNoblock: + + push {r1,r2,lr} + 800025c: b506 push {r1, r2, lr} + + bl keypadScan + 800025e: f000 f86d bl 800033c + + mov r1, #0 + 8000262: f04f 0100 mov.w r1, #0 + + ubfx r2, r0, #4, #4 + 8000266: f3c0 1203 ubfx r2, r0, #4, #4 + + cmp r2, #0xF + 800026a: 2a0f cmp r2, #15 + beq 1f + 800026c: d03f beq.n 80002ee + + add r1, #1 + 800026e: f101 0101 add.w r1, r1, #1 + cmp r0, #k1 + 8000272: 28ee cmp r0, #238 ; 0xee + beq 1f + 8000274: d03b beq.n 80002ee + + add r1, #1 + 8000276: f101 0101 add.w r1, r1, #1 + cmp r0, #k2 + 800027a: 28ed cmp r0, #237 ; 0xed + beq 1f + 800027c: d037 beq.n 80002ee + + add r1, #1 + 800027e: f101 0101 add.w r1, r1, #1 + cmp r0, #k3 + 8000282: 28eb cmp r0, #235 ; 0xeb + beq 1f + 8000284: d033 beq.n 80002ee + + add r1, #1 + 8000286: f101 0101 add.w r1, r1, #1 + cmp r0, #k4 + 800028a: 28e7 cmp r0, #231 ; 0xe7 + beq 1f + 800028c: d02f beq.n 80002ee + + add r1, #1 + 800028e: f101 0101 add.w r1, r1, #1 + cmp r0, #k5 + 8000292: 28de cmp r0, #222 ; 0xde + beq 1f + 8000294: d02b beq.n 80002ee + + add r1, #1 + 8000296: f101 0101 add.w r1, r1, #1 + cmp r0, #k6 + 800029a: 28dd cmp r0, #221 ; 0xdd + beq 1f + 800029c: d027 beq.n 80002ee + + add r1, #1 + 800029e: f101 0101 add.w r1, r1, #1 + cmp r0, #k7 + 80002a2: 28db cmp r0, #219 ; 0xdb + beq 1f + 80002a4: d023 beq.n 80002ee + + add r1, #1 + 80002a6: f101 0101 add.w r1, r1, #1 + cmp r0, #k8 + 80002aa: 28d7 cmp r0, #215 ; 0xd7 + beq 1f + 80002ac: d01f beq.n 80002ee + + add r1, #1 + 80002ae: f101 0101 add.w r1, r1, #1 + cmp r0, #k9 + 80002b2: 28be cmp r0, #190 ; 0xbe + beq 1f + 80002b4: d01b beq.n 80002ee + + add r1, #1 + 80002b6: f101 0101 add.w r1, r1, #1 + cmp r0, #k10 + 80002ba: 28bd cmp r0, #189 ; 0xbd + beq 1f + 80002bc: d017 beq.n 80002ee + + add r1, #1 + 80002be: f101 0101 add.w r1, r1, #1 + cmp r0, #k11 + 80002c2: 28bb cmp r0, #187 ; 0xbb + beq 1f + 80002c4: d013 beq.n 80002ee + + add r1, #1 + 80002c6: f101 0101 add.w r1, r1, #1 + cmp r0, #k12 + 80002ca: 28b7 cmp r0, #183 ; 0xb7 + beq 1f + 80002cc: d00f beq.n 80002ee + + add r1, #1 + 80002ce: f101 0101 add.w r1, r1, #1 + cmp r0, #k13 + 80002d2: 287e cmp r0, #126 ; 0x7e + beq 1f + 80002d4: d00b beq.n 80002ee + + add r1, #1 + 80002d6: f101 0101 add.w r1, r1, #1 + cmp r0, #k14 + 80002da: 287d cmp r0, #125 ; 0x7d + beq 1f + 80002dc: d007 beq.n 80002ee + + add r1, #1 + 80002de: f101 0101 add.w r1, r1, #1 + cmp r0, #k15 + 80002e2: 287b cmp r0, #123 ; 0x7b + beq 1f + 80002e4: d003 beq.n 80002ee + + add r1, #1 + 80002e6: f101 0101 add.w r1, r1, #1 + cmp r0, #k16 + 80002ea: 2877 cmp r0, #119 ; 0x77 + beq 1f + 80002ec: d0ff beq.n 80002ee + +1: + mov r0, r1 + 80002ee: 4608 mov r0, r1 + + pop {r1,r2,pc} + 80002f0: bd06 pop {r1, r2, pc} + +080002f2 : +# waits until a key is pressed and then returns the key code.   +# Per discussion in lecture, you may wish to return after said key +# is released +KeyGetKey: + + push {r1,r2,r3,lr} + 80002f2: b50e push {r1, r2, r3, lr} + mov r0, #0 + 80002f4: f04f 0000 mov.w r0, #0 +1: + mov r1, #10 + 80002f8: f04f 010a mov.w r1, #10 + bl usDelay + 80002fc: f7ff ff96 bl 800022c + bl KeyGetKeyNoblock + 8000300: f7ff ffac bl 800025c + + cmp r0, #0 + 8000304: 2800 cmp r0, #0 + beq 1b + 8000306: d0f7 beq.n 80002f8 +2: +# Row = Input | Col = Output + ldr r1, =GPIOC_BASE + 8000308: 4923 ldr r1, [pc, #140] ; (8000398 ) + ldr r2, [r1, #GPIO_MODER] + 800030a: 680a ldr r2, [r1, #0] + mov r3, #0x0055 + 800030c: f04f 0355 mov.w r3, #85 ; 0x55 + bfi r2, r3, #0, #16 + 8000310: f363 020f bfi r2, r3, #0, #16 + str r2, [r1, #GPIO_MODER] + 8000314: 600a str r2, [r1, #0] +# "0000" -> ODR (Col) + ldrb r2, [r1, #GPIO_ODR] + 8000316: 7d0a ldrb r2, [r1, #20] + mov r3, #0x0 + 8000318: f04f 0300 mov.w r3, #0 + bfi r2, r3, #0, #4 + 800031c: f363 0203 bfi r2, r3, #0, #4 + strb r2, [r1, #GPIO_ODR] + 8000320: 750a strb r2, [r1, #20] +# Store input data in r3 + ldrb r3, [r1, #GPIO_IDR] + 8000322: 7c0b ldrb r3, [r1, #16] + cmp r3, #0xF0 + 8000324: 2bf0 cmp r3, #240 ; 0xf0 + bne 2b + 8000326: d1ef bne.n 8000308 + @ ldr r2, [r1, #GPIO_MODER] + @ mov r3, #0x0000 + @ bfi r2, r3, #0, #16 + @ str r2, [r1, #GPIO_MODER] + + pop {r1,r2,r3,pc} + 8000328: bd0e pop {r1, r2, r3, pc} + +0800032a : +# to the key press.  +# This method blocks. You should use a data structure in .rodata +# to map keys to characters +KeyGetChar: + + push {r1,r2,lr} + 800032a: b506 push {r1, r2, lr} + + bl KeyGetKey + 800032c: f7ff ffe1 bl 80002f2 + sub r0, #1 + 8000330: f1a0 0001 sub.w r0, r0, #1 + mov r2, r0 + 8000334: 4602 mov r2, r0 + ldr r1, =keyChars + 8000336: 4919 ldr r1, [pc, #100] ; (800039c ) + ldrb r0, [r1, r2] + 8000338: 5c88 ldrb r0, [r1, r2] + + pop {r1,r2,pc} + 800033a: bd06 pop {r1, r2, pc} + +0800033c : + +# Waits for input on keypad and returns that value in r0 +keypadScan: + + push {r1,r2,r3,lr} + 800033c: b50e push {r1, r2, r3, lr} +2: +# Row = Input | Col = Output + ldr r1, =GPIOC_BASE + 800033e: 4916 ldr r1, [pc, #88] ; (8000398 ) + ldr r2, [r1, #GPIO_MODER] + 8000340: 680a ldr r2, [r1, #0] + mov r0, #0x0055 + 8000342: f04f 0055 mov.w r0, #85 ; 0x55 + bfi r2, r0, #0, #16 + 8000346: f360 020f bfi r2, r0, #0, #16 + str r2, [r1, #GPIO_MODER] + 800034a: 600a str r2, [r1, #0] +# "0000" -> ODR (Col) + ldrb r2, [r1, #GPIO_ODR] + 800034c: 7d0a ldrb r2, [r1, #20] + mov r3, #0x0 + 800034e: f04f 0300 mov.w r3, #0 + bfi r2, r3, #0, #4 + 8000352: f363 0203 bfi r2, r3, #0, #4 + strb r2, [r1, #GPIO_ODR] + 8000356: 750a strb r2, [r1, #20] +# Store input data in r3 + mov r0, r1 + 8000358: 4608 mov r0, r1 + mov r1, #5 + 800035a: f04f 0105 mov.w r1, #5 + bl usDelay + 800035e: f7ff ff65 bl 800022c + mov r1, r0 + 8000362: 4601 mov r1, r0 + ldrb r3, [r1, #GPIO_IDR] + 8000364: 7c0b ldrb r3, [r1, #16] +# orr r2, r2, r3 +# strb r2, [r1, #GPIO_ODR] +# Delay + +# Row = Output | Col = Input + ldr r1, =GPIOC_BASE + 8000366: 490c ldr r1, [pc, #48] ; (8000398 ) + ldr r2, [r1, #GPIO_MODER] + 8000368: 680a ldr r2, [r1, #0] + mov r0, #0x5500 + 800036a: f44f 40aa mov.w r0, #21760 ; 0x5500 + bfi r2, r0, #0, #16 + 800036e: f360 020f bfi r2, r0, #0, #16 + str r2, [r1, #GPIO_MODER] + 8000372: 600a str r2, [r1, #0] +# "0000" -> ODR (Row) + ldrb r2, [r1, #GPIO_ODR] + 8000374: 7d0a ldrb r2, [r1, #20] + mov r0, #0x0 + 8000376: f04f 0000 mov.w r0, #0 + bfi r2, r0, #0, #4 + 800037a: f360 0203 bfi r2, r0, #0, #4 + strb r2, [r1, #GPIO_ODR] + 800037e: 750a strb r2, [r1, #20] + mov r0, r1 + 8000380: 4608 mov r0, r1 + mov r1, #5 + 8000382: f04f 0105 mov.w r1, #5 + bl usDelay + 8000386: f7ff ff51 bl 800022c + mov r1, r0 + 800038a: 4601 mov r1, r0 +# Read IDR (Row & Col) + ldrb r0, [r1, #GPIO_IDR] + 800038c: 7c08 ldrb r0, [r1, #16] + orr r0, r0, r3 + 800038e: ea40 0003 orr.w r0, r0, r3 + @ ldr r2, [r1, #GPIO_MODER] + @ mov r3, #0x0000 + @ bfi r2, r3, #0, #16 + @ str r2, [r1, #GPIO_MODER] +1: + pop {r1,r2,r3,pc} + 8000392: bd0e pop {r1, r2, r3, pc} + ldr r1, =RCC_BASE + 8000394: 40023800 .word 0x40023800 + ldr r1, =GPIOC_BASE + 8000398: 40020800 .word 0x40020800 + ldr r1, =keyChars + 800039c: 08000790 .word 0x08000790 + +080003a0 : +#Globally exposed functions +.global lcdInit + +#Local helper function +PortSetup: + push {r1,r2,r3} + 80003a0: b40e push {r1, r2, r3} + #Turn on Ports in RCC + ldr r1, =RCC_BASE + 80003a2: 49bc ldr r1, [pc, #752] ; (8000694 ) + + ldr r2, [r1, #RCC_AHB1ENR] + 80003a4: 6b0a ldr r2, [r1, #48] ; 0x30 + orr r2, r2, #RCC_GPIOAEN + 80003a6: f042 0201 orr.w r2, r2, #1 + str r2, [r1, #RCC_AHB1ENR] + 80003aa: 630a str r2, [r1, #48] ; 0x30 + + ldr r2, [r1, #RCC_AHB1ENR] + 80003ac: 6b0a ldr r2, [r1, #48] ; 0x30 + orr r2, r2, #RCC_GPIOCEN + 80003ae: f042 0204 orr.w r2, r2, #4 + str r2, [r1, #RCC_AHB1ENR] + 80003b2: 630a str r2, [r1, #48] ; 0x30 + + #Set DB Pins to Outputs + ldr r1, =GPIOA_BASE + 80003b4: 49b8 ldr r1, [pc, #736] ; (8000698 ) + ldr r2, [r1, #GPIO_MODER] + 80003b6: 680a ldr r2, [r1, #0] + + movw r3, 0x5500 + 80003b8: f245 5300 movw r3, #21760 ; 0x5500 + movt r3, 0x0055 + 80003bc: f2c0 0355 movt r3, #85 ; 0x55 + + orr r2,r2, r3 + 80003c0: ea42 0203 orr.w r2, r2, r3 + + movw r3, 0xAA00 + 80003c4: f64a 2300 movw r3, #43520 ; 0xaa00 + movt r3, 0x00AA + 80003c8: f2c0 03aa movt r3, #170 ; 0xaa + bic r2, r2, r3 + 80003cc: ea22 0203 bic.w r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + 80003d0: 600a str r2, [r1, #0] + + #Set RS RW E Pins to Outputs + ldr r1, =GPIOC_BASE + 80003d2: 49b2 ldr r1, [pc, #712] ; (800069c ) + ldr r2, [r1, #GPIO_MODER] + 80003d4: 680a ldr r2, [r1, #0] + + movw r3, 0x0000 + 80003d6: f240 0300 movw r3, #0 + movt r3, 0x0015 + 80003da: f2c0 0315 movt r3, #21 + + orr r2,r2, r3 + 80003de: ea42 0203 orr.w r2, r2, r3 + + movw r3, 0x0000 + 80003e2: f240 0300 movw r3, #0 + movt r3, 0x00EA + 80003e6: f2c0 03ea movt r3, #234 ; 0xea + bic r2, r2, r3 + 80003ea: ea22 0203 bic.w r2, r2, r3 + str r2, [r1, #GPIO_MODER] + 80003ee: 600a str r2, [r1, #0] + + pop {r1,r2,r3} + 80003f0: bc0e pop {r1, r2, r3} + bx lr + 80003f2: 4770 bx lr + +080003f4 : + +#Writes instruction +#RS=0 RW=0 R1-Arg +#No returns +WriteInstruction: + push {r2,r3,lr} + 80003f4: b50c push {r2, r3, lr} + + #Set RS=0,RW=0,E=0 + + ldr r2, =GPIOC_BASE + 80003f6: 4aa9 ldr r2, [pc, #676] ; (800069c ) + + mov r3, RS_CLR + 80003f8: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + str r3, [r2, #GPIO_BSRR] + 80003fc: 6193 str r3, [r2, #24] + mov r3, RW_CLR + 80003fe: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + str r3, [r2, #GPIO_BSRR] + 8000402: 6193 str r3, [r2, #24] + mov r3, E_CLR + 8000404: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000408: 6193 str r3, [r2, #24] + + #Set E=1 + mov r3, E_SET + 800040a: f44f 6380 mov.w r3, #1024 ; 0x400 + str r3, [r2, #GPIO_BSRR] + 800040e: 6193 str r3, [r2, #24] + + #Set R1 -> DataBus + lsl r1, #4 + 8000410: ea4f 1101 mov.w r1, r1, lsl #4 + ldr r3, =GPIOA_BASE + 8000414: 4ba0 ldr r3, [pc, #640] ; (8000698 ) + ldr r2, [r3, #GPIO_ODR] + 8000416: 695a ldr r2, [r3, #20] + bfc r2, #4, #8 + 8000418: f36f 120b bfc r2, #4, #8 + orr r2, r2, r1 + 800041c: ea42 0201 orr.w r2, r2, r1 + str r2, [r3, #GPIO_ODR ] + 8000420: 615a str r2, [r3, #20] + #Set E=0 + ldr r2, =GPIOC_BASE + 8000422: 4a9e ldr r2, [pc, #632] ; (800069c ) + mov r3, E_CLR + 8000424: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000428: 6193 str r3, [r2, #24] + + #Wait for appropriate delay + mov r1, #37 + 800042a: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 800042e: f7ff fefd bl 800022c + pop {r2,r3,pc} + 8000432: bd0c pop {r2, r3, pc} + +08000434 : + +#Writes data +#RS=0 RW=0 R1-Arg +#No returns +WriteData: + push {r1,r2,r3,r4,lr} + 8000434: b51e push {r1, r2, r3, r4, lr} + + #Set RS=1,RW=0,E=0 + ldr r2, =GPIOC_BASE + 8000436: 4a99 ldr r2, [pc, #612] ; (800069c ) + + mov r3, #RS_SET + 8000438: f44f 7380 mov.w r3, #256 ; 0x100 + str r3, [r2, #GPIO_BSRR] + 800043c: 6193 str r3, [r2, #24] + mov r3, #RW_CLR + 800043e: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + str r3, [r2, #GPIO_BSRR] + 8000442: 6193 str r3, [r2, #24] + mov r3, #E_CLR + 8000444: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000448: 6193 str r3, [r2, #24] + #Set E=1 + mov r3, #E_SET + 800044a: f44f 6380 mov.w r3, #1024 ; 0x400 + str r3, [r2, #GPIO_BSRR] + 800044e: 6193 str r3, [r2, #24] + #Set R1 -> DataBus + lsl r1, #4 + 8000450: ea4f 1101 mov.w r1, r1, lsl #4 + ldr r3, =GPIOA_BASE + 8000454: 4b90 ldr r3, [pc, #576] ; (8000698 ) + ldr r2, [r3, #GPIO_ODR] + 8000456: 695a ldr r2, [r3, #20] + bfc r2, #4, #8 + 8000458: f36f 120b bfc r2, #4, #8 + orr r2, r2, r1 + 800045c: ea42 0201 orr.w r2, r2, r1 + str r2, [r3, #GPIO_ODR ] + 8000460: 615a str r2, [r3, #20] + #Set E=0 + ldr r2, =GPIOC_BASE + 8000462: 4a8e ldr r2, [pc, #568] ; (800069c ) + mov r3, #E_CLR + 8000464: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000468: 6193 str r3, [r2, #24] + #Wait for appropriate delay + mov r1, #37 + 800046a: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 800046e: f7ff fedd bl 800022c + pop {r1,r2,r3,r4,pc} + 8000472: bd1e pop {r1, r2, r3, r4, pc} + +08000474 : + +#Code to intialize the lcd +lcdInit: + push {r0,r1,lr} + 8000474: b503 push {r0, r1, lr} + + #Set up Ports + bl PortSetup + 8000476: f7ff ff93 bl 80003a0 + #Wait 40ms + mov r0, #40 + 800047a: f04f 0028 mov.w r0, #40 ; 0x28 + bl msDelay + 800047e: f7ff fec1 bl 8000204 + #Write Function Set (0x38) + mov r1, 0x38 + 8000482: f04f 0138 mov.w r1, #56 ; 0x38 + bl WriteInstruction + 8000486: f7ff ffb5 bl 80003f4 + mov r1, #37 + 800048a: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 800048e: f7ff fecd bl 800022c + #Write Function Set (0x38) + mov r1, 0x38 + 8000492: f04f 0138 mov.w r1, #56 ; 0x38 + bl WriteInstruction + 8000496: f7ff ffad bl 80003f4 + mov r1, #37 + 800049a: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 800049e: f7ff fec5 bl 800022c + #Write Display On/Off(0x0F) + mov r1, 0x0F + 80004a2: f04f 010f mov.w r1, #15 + bl WriteInstruction + 80004a6: f7ff ffa5 bl 80003f4 + mov r1, #37 + 80004aa: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 80004ae: f7ff febd bl 800022c + #Write Display Clear (0x01) + mov r1, 0x01 + 80004b2: f04f 0101 mov.w r1, #1 + bl WriteInstruction + 80004b6: f7ff ff9d bl 80003f4 + mov r1, #2 + 80004ba: f04f 0102 mov.w r1, #2 + bl msDelay + 80004be: f7ff fea1 bl 8000204 + + #Write Entry Mode Set (0x06) + mov r1, 0x06 + 80004c2: f04f 0106 mov.w r1, #6 + bl WriteInstruction + 80004c6: f7ff ff95 bl 80003f4 + + mov r1, #37 + 80004ca: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 80004ce: f7ff fead bl 800022c + pop {r0,r1,pc} + 80004d2: bd03 pop {r0, r1, pc} + +080004d4 : +.global lcdClear + # clears the display + # no arguments or return + # includes necessary delay +lcdClear: + push {r0,r1,lr} + 80004d4: b503 push {r0, r1, lr} + mov r1, 0x01 + 80004d6: f04f 0101 mov.w r1, #1 + bl WriteInstruction + 80004da: f7ff ff8b bl 80003f4 + # Delay for at least 1.52ms + mov r0, #2 + 80004de: f04f 0002 mov.w r0, #2 + bl msDelay + 80004e2: f7ff fe8f bl 8000204 + pop {r0,r1,pc} + 80004e6: bd03 pop {r0, r1, pc} + +080004e8 : +.global lcdHome + # moves cursor to the home position + # no arguments or return + # includes necessary delay +lcdHome: + push {r1,lr} + 80004e8: b502 push {r1, lr} + mov r1, #0x02 + 80004ea: f04f 0102 mov.w r1, #2 + bl WriteInstruction + 80004ee: f7ff ff81 bl 80003f4 + mov r0, #2 + 80004f2: f04f 0002 mov.w r0, #2 + bl msDelay + 80004f6: f7ff fe85 bl 8000204 + pop {r1,pc} + 80004fa: bd02 pop {r1, pc} + +080004fc : +.global lcdSetPosition + # moves cursor to the position indicated + # r0 is the zero-based row and r1 is the zero-based column, no return value + # includes necessary delay +lcdSetPosition: + push {r0,r1,lr} + 80004fc: b503 push {r0, r1, lr} + # Sub values to "actual" positions + sub r0, r0, #1 + 80004fe: f1a0 0001 sub.w r0, r0, #1 + sub r1, r1, #1 + 8000502: f1a1 0101 sub.w r1, r1, #1 + # Shift row to actual + lsl r0, r0, #6 + 8000506: ea4f 1080 mov.w r0, r0, lsl #6 + orr r0, r0, r1 + 800050a: ea40 0001 orr.w r0, r0, r1 + + mov r1, #0x80 + 800050e: f04f 0180 mov.w r1, #128 ; 0x80 + orr r1, r1, r0 + 8000512: ea41 0100 orr.w r1, r1, r0 + bl WriteInstruction + 8000516: f7ff ff6d bl 80003f4 + pop {r0,r1,pc} + 800051a: bd03 pop {r0, r1, pc} + +0800051c : +.global lcdPrintString + # prints a null terminated string to the display + # r0 contains the address of the null terminated string (usually located in .data or .rodata), returns the number of characters written to display in r0 + # includes necessary delay +lcdPrintString: + push {r0,r1,r2,r3,lr} + 800051c: b50f push {r0, r1, r2, r3, lr} + + mov r2, #0 + 800051e: f04f 0200 mov.w r2, #0 + +08000522 : +loop: + ldrb r1, [r0, r2] + 8000522: 5c81 ldrb r1, [r0, r2] + cmp r1, #0x00 + 8000524: 2900 cmp r1, #0 + beq done + 8000526: d004 beq.n 8000532 + bl WriteData + 8000528: f7ff ff84 bl 8000434 + add r2, r2, #1 + 800052c: f102 0201 add.w r2, r2, #1 + b loop + 8000530: e7f7 b.n 8000522 + +08000532 : +done: + mov r0, r1 + 8000532: 4608 mov r0, r1 + pop {r0,r1,r2,r3,pc} + 8000534: bd0f pop {r0, r1, r2, r3, pc} + +08000536 : +.global lcdPrintNum + # prints a (decimal) number to the display + # the number to be printed is in r0, values of 0 to 9999 will print, anything above 9999 should print Err. + # includes necessary delay +lcdPrintNum: + push {r0,r1,r2,r3,r4,lr} + 8000536: b51f push {r0, r1, r2, r3, r4, lr} + + bl num_to_ASCII + 8000538: f000 f822 bl 8000580 + # Store num in memory + ldr r2, =numToPrint + 800053c: 4a58 ldr r2, [pc, #352] ; (80006a0 ) + str r0, [r2] + 800053e: 6010 str r0, [r2, #0] + # Move cursor to right-most position + mov r1, #16 + 8000540: f04f 0110 mov.w r1, #16 + +08000544 : +writeByte: + mov r0, #1 + 8000544: f04f 0001 mov.w r0, #1 + bl lcdSetPosition + 8000548: f7ff ffd8 bl 80004fc + + mov r4, r0 + 800054c: 4604 mov r4, r0 + mov r0, #1 + 800054e: f04f 0001 mov.w r0, #1 + bl msDelay + 8000552: f7ff fe57 bl 8000204 + mov r0, r4 + 8000556: 4620 mov r0, r4 + + mov r0, r1 + 8000558: 4608 mov r0, r1 + ldrb r1, [r2, r3] + 800055a: 5cd1 ldrb r1, [r2, r3] + bl WriteData + 800055c: f7ff ff6a bl 8000434 + + mov r4, r0 + 8000560: 4604 mov r4, r0 + mov r0, #1 + 8000562: f04f 0001 mov.w r0, #1 + bl msDelay + 8000566: f7ff fe4d bl 8000204 + mov r0, r4 + 800056a: 4620 mov r0, r4 + + add r3, r3, #1 + 800056c: f103 0301 add.w r3, r3, #1 + cmp r3, #4 + 8000570: 2b04 cmp r3, #4 + sub r1, r0, #1 + 8000572: f1a0 0101 sub.w r1, r0, #1 + cmp r3, #4 + 8000576: 2b04 cmp r3, #4 + bne writeByte + 8000578: d1e4 bne.n 8000544 + pop {r0,r1,r2,r3,r4,pc} + 800057a: bd1f pop {r0, r1, r2, r3, r4, pc} + +0800057c : + +.global lcdCursorLocation + # Returns the location of the cursor on the LCD (1-32) + # Location of cursor is returned in r0 +lcdCursorLocation: + push {r1,lr} + 800057c: b502 push {r1, lr} + + + pop {r1,pc} + 800057e: bd02 pop {r1, pc} + +08000580 : +# r0: Input binary value + +num_to_ASCII: + + # If outside of range, return ASCII "Err." + push {r1,r2,r3,lr} + 8000580: b50e push {r1, r2, r3, lr} + + cmp r0,#0 + 8000582: 2800 cmp r0, #0 + blt out_of_range + 8000584: db47 blt.n 8000616 + # cmp r0,#9999 + # bgt out_of_range + +# Normal conversion behavior + mov r1, #16 + 8000586: f04f 0110 mov.w r1, #16 + lsl r0, #3 + 800058a: ea4f 00c0 mov.w r0, r0, lsl #3 + sub r1, #3 + 800058e: f1a1 0103 sub.w r1, r1, #3 + +08000592 : +shift_cycle: + + lsl r0, #1 + 8000592: ea4f 0040 mov.w r0, r0, lsl #1 + sub r1, #1 + 8000596: f1a1 0101 sub.w r1, r1, #1 + cmp r1, #0 + 800059a: 2900 cmp r1, #0 + # Branch to encode section if shifted 16 times + beq encode + 800059c: d020 beq.n 80005e0 + +# Verify Each Nibble is less than or equal to 4 + ubfx r2, r0, #16, #4 + 800059e: f3c0 4203 ubfx r2, r0, #16, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + 80005a2: 2a04 cmp r2, #4 + ble 2f + 80005a4: dd03 ble.n 80005ae + add r2, #3 + 80005a6: f102 0203 add.w r2, r2, #3 + bfi r0, r2, #16, #4 + 80005aa: f362 4013 bfi r0, r2, #16, #4 +2: ubfx r2, r0, #20, #4 + 80005ae: f3c0 5203 ubfx r2, r0, #20, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + 80005b2: 2a04 cmp r2, #4 + ble 3f + 80005b4: dd03 ble.n 80005be + add r2, #3 + 80005b6: f102 0203 add.w r2, r2, #3 + bfi r0, r2, #20, #4 + 80005ba: f362 5017 bfi r0, r2, #20, #4 +3: ubfx r2, r0, #24, #4 + 80005be: f3c0 6203 ubfx r2, r0, #24, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + 80005c2: 2a04 cmp r2, #4 + ble 4f + 80005c4: dd03 ble.n 80005ce + add r2, #3 + 80005c6: f102 0203 add.w r2, r2, #3 + bfi r0, r2, #24, #4 + 80005ca: f362 601b bfi r0, r2, #24, #4 +4: ubfx r2, r0, #28, #4 + 80005ce: f3c0 7203 ubfx r2, r0, #28, #4 + # If value is less than or equal to 4 skip to end + cmp r2, #4 + 80005d2: 2a04 cmp r2, #4 + ble end_verify_nibbles + 80005d4: dd03 ble.n 80005de + add r2, #3 + 80005d6: f102 0203 add.w r2, r2, #3 + bfi r0, r2, #28, #4 + 80005da: f362 701f bfi r0, r2, #28, #4 + +080005de : +end_verify_nibbles: + + + b shift_cycle + 80005de: e7d8 b.n 8000592 + +080005e0 : +encode: + mov r3, #3 + 80005e0: f04f 0303 mov.w r3, #3 +# Encode BCD numbers to ASCII + # Extract ones nibble + ubfx r2, r0, #16, #4 + 80005e4: f3c0 4203 ubfx r2, r0, #16, #4 + # Insert ones nibble + bfi r1, r2, #0, #4 + 80005e8: f362 0103 bfi r1, r2, #0, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #4, #4 + 80005ec: f363 1107 bfi r1, r3, #4, #4 + + # Extract tens nibble + ubfx r2, r0, #20, #4 + 80005f0: f3c0 5203 ubfx r2, r0, #20, #4 + # Insert tens nibble + bfi r1, r2, #8, #4 + 80005f4: f362 210b bfi r1, r2, #8, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #12, #4 + 80005f8: f363 310f bfi r1, r3, #12, #4 + + # Extract hundreds nibble + ubfx r2, r0, #24, #4 + 80005fc: f3c0 6203 ubfx r2, r0, #24, #4 + # Insert hundreds nibble + bfi r1, r2, #16, #4 + 8000600: f362 4113 bfi r1, r2, #16, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #20, #4 + 8000604: f363 5117 bfi r1, r3, #20, #4 + + # Extract thousands nibble + ubfx r2, r0, #28, #4 + 8000608: f3c0 7203 ubfx r2, r0, #28, #4 + # Insert thousands nibble + bfi r1, r2, #24, #4 + 800060c: f362 611b bfi r1, r2, #24, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #28, #4 + 8000610: f363 711f bfi r1, r3, #28, #4 + + b end_ASCII + 8000614: e003 b.n 800061e + +08000616 : +out_of_range: + # Insert ASCII "Err." + movw r1, #0x722E + 8000616: f247 212e movw r1, #29230 ; 0x722e + movt r1, #0x4572 + 800061a: f2c4 5172 movt r1, #17778 ; 0x4572 + +0800061e : + +end_ASCII: + # Return value in r0 + mov r0, r1 + 800061e: 4608 mov r0, r1 + pop {r1,r2,r3,pc} + 8000620: bd0e pop {r1, r2, r3, pc} + +08000622 : + +.global lcdBusyWait +# Loops until the busy flag is 0 +lcdBusyWait: + + push {r0,r1,r2,r3,lr} + 8000622: b50f push {r0, r1, r2, r3, lr} + + ldr r1, =GPIOA_BASE + 8000624: 491c ldr r1, [pc, #112] ; (8000698 ) + ldr r2, [r1, #GPIO_MODER] + 8000626: 680a ldr r2, [r1, #0] + + mov r3, #0 + 8000628: f04f 0300 mov.w r3, #0 + + orr r2, r2, r3 + 800062c: ea42 0203 orr.w r2, r2, r3 + + movw r3, 0xFF00 + 8000630: f64f 7300 movw r3, #65280 ; 0xff00 + movt r3, 0x00FF + 8000634: f2c0 03ff movt r3, #255 ; 0xff + bic r2, r2, r3 + 8000638: ea22 0203 bic.w r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + 800063c: 600a str r2, [r1, #0] + + #Set RS=0, RW=1, E=1 + ldr r2, =GPIOC_BASE + 800063e: 4a17 ldr r2, [pc, #92] ; (800069c ) + + mov r3, #RS_CLR + 8000640: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + str r3, [r2, #GPIO_BSRR] + 8000644: 6193 str r3, [r2, #24] + mov r3, #RW_SET + 8000646: f44f 7300 mov.w r3, #512 ; 0x200 + str r3, [r2, #GPIO_BSRR] + 800064a: 6193 str r3, [r2, #24] + mov r3, #E_SET + 800064c: f44f 6380 mov.w r3, #1024 ; 0x400 + str r3, [r2, #GPIO_BSRR] + 8000650: 6193 str r3, [r2, #24] + +08000652 : +busy: + #Set E= + mov r3, #E_SET + 8000652: f44f 6380 mov.w r3, #1024 ; 0x400 + str r3, [r2, #GPIO_BSRR] + 8000656: 6193 str r3, [r2, #24] + #Set Databus -> R1 + ldr r3, =GPIOA_BASE + 8000658: 4b0f ldr r3, [pc, #60] ; (8000698 ) + ldr r1, [r3, #GPIO_IDR] + 800065a: 6919 ldr r1, [r3, #16] + #Set E=0 + ldr r2, =GPIOC_BASE + 800065c: 4a0f ldr r2, [pc, #60] ; (800069c ) + mov r3, #E_CLR + 800065e: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000662: 6193 str r3, [r2, #24] + + mov r2, #0x0010 + 8000664: f04f 0210 mov.w r2, #16 + and r1, r2 + 8000668: ea01 0102 and.w r1, r1, r2 + lsr r1, #4 + 800066c: ea4f 1111 mov.w r1, r1, lsr #4 + # Are we still busy? + cmp r1, #1 + 8000670: 2901 cmp r1, #1 + beq busy + 8000672: d0ee beq.n 8000652 + +# Return DB port to original mode + ldr r1, =GPIOA_BASE + 8000674: 4908 ldr r1, [pc, #32] ; (8000698 ) + ldr r2, [r1, #GPIO_MODER] + 8000676: 680a ldr r2, [r1, #0] + + movw r3, 0x5500 + 8000678: f245 5300 movw r3, #21760 ; 0x5500 + movt r3, 0x0055 + 800067c: f2c0 0355 movt r3, #85 ; 0x55 + + orr r2,r2, r3 + 8000680: ea42 0203 orr.w r2, r2, r3 + + movw r3, 0xAA00 + 8000684: f64a 2300 movw r3, #43520 ; 0xaa00 + movt r3, 0x00AA + 8000688: f2c0 03aa movt r3, #170 ; 0xaa + bic r2, r2, r3 + 800068c: ea22 0203 bic.w r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + 8000690: 600a str r2, [r1, #0] + + pop {r0,r1,r2,r3,pc} + 8000692: bd0f pop {r0, r1, r2, r3, pc} + ldr r1, =RCC_BASE + 8000694: 40023800 .word 0x40023800 + ldr r1, =GPIOA_BASE + 8000698: 40020000 .word 0x40020000 + ldr r1, =GPIOC_BASE + 800069c: 40020800 .word 0x40020800 + ldr r2, =numToPrint + 80006a0: 20000000 .word 0x20000000 + +080006a4
: +.section .text + +.global main +main: + + bl lcdInit + 80006a4: f7ff fee6 bl 8000474 + bl KeyInit + 80006a8: f7ff fdc8 bl 800023c + bl timerInit + 80006ac: f000 f800 bl 80006b0 + +080006b0 : + .equ CCMR_OFFSET, 0x18 + .equ TIM3_BASE, 0x24 + +.global timerInit +timerInit: + push {r0-r4, lr} + 80006b0: b51f push {r0, r1, r2, r3, r4, lr} + #Alt func low reg for TIM3 + ldr r1, [r0, #AFRL_OFFSET] + 80006b2: 6a01 ldr r1, [r0, #32] + bfc r1, #16, #4 + 80006b4: f36f 4113 bfc r1, #16, #4 + orr r1, r1, #AFRL_TIM3_CH1_EN + 80006b8: f041 0110 orr.w r1, r1, #16 + str r1, [r0, #AFRL_OFFSET] + 80006bc: 6201 str r1, [r0, #32] + + #Enable CCMR1 for preload and set pwm + #Allows for the modification of the pulse + ldr r0, =TIM3_BASE + 80006be: f04f 0024 mov.w r0, #36 ; 0x24 + ldr r1, [r0, #CCMR_OFFSET] + 80006c2: 6981 ldr r1, [r0, #24] + bfc r1, #4, #3 + 80006c4: f36f 1106 bfc r1, #4, #3 + mov r2, #CCMR_OCC1M_PWM + 80006c8: f04f 0218 mov.w r2, #24 + orr r2, r2, #CCMR_OC1PE + 80006cc: f042 0210 orr.w r2, r2, #16 + orr r1, r1, r2 + 80006d0: ea41 0102 orr.w r1, r1, r2 + str r1, [r0, #CCMR_OFFSET] + 80006d4: 6181 str r1, [r0, #24] + + #Enable CCER to for TIM3 (TIC) + #Every 10 seconds, sample + + + pop {r0, r4} + 80006d6: bc11 pop {r0, r4} + bx lr + 80006d8: 4770 bx lr + ... + +080006dc : + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + 80006dc: 480d ldr r0, [pc, #52] ; (8000714 ) + mov sp, r0 /* set stack pointer */ + 80006de: 4685 mov sp, r0 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 80006e0: 480d ldr r0, [pc, #52] ; (8000718 ) + ldr r1, =_edata + 80006e2: 490e ldr r1, [pc, #56] ; (800071c ) + ldr r2, =_sidata + 80006e4: 4a0e ldr r2, [pc, #56] ; (8000720 ) + movs r3, #0 + 80006e6: 2300 movs r3, #0 + b LoopCopyDataInit + 80006e8: e002 b.n 80006f0 + +080006ea : + +CopyDataInit: + ldr r4, [r2, r3] + 80006ea: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 80006ec: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 80006ee: 3304 adds r3, #4 + +080006f0 : + +LoopCopyDataInit: + adds r4, r0, r3 + 80006f0: 18c4 adds r4, r0, r3 + cmp r4, r1 + 80006f2: 428c cmp r4, r1 + bcc CopyDataInit + 80006f4: d3f9 bcc.n 80006ea + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 80006f6: 4a0b ldr r2, [pc, #44] ; (8000724 ) + ldr r4, =_ebss + 80006f8: 4c0b ldr r4, [pc, #44] ; (8000728 ) + movs r3, #0 + 80006fa: 2300 movs r3, #0 + b LoopFillZerobss + 80006fc: e001 b.n 8000702 + +080006fe : + +FillZerobss: + str r3, [r2] + 80006fe: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000700: 3204 adds r2, #4 + +08000702 : + +LoopFillZerobss: + cmp r2, r4 + 8000702: 42a2 cmp r2, r4 + bcc FillZerobss + 8000704: d3fb bcc.n 80006fe + +/* Call the clock system intitialization function.*/ + bl SystemInit + 8000706: f3af 8000 nop.w +/* Call static constructors */ + bl __libc_init_array + 800070a: f000 f811 bl 8000730 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 800070e: f7ff ffc9 bl 80006a4
+ +08000712 : + +LoopForever: + b LoopForever + 8000712: e7fe b.n 8000712 + ldr r0, =_estack + 8000714: 20020000 .word 0x20020000 + ldr r0, =_sdata + 8000718: 20000000 .word 0x20000000 + ldr r1, =_edata + 800071c: 20000004 .word 0x20000004 + ldr r2, =_sidata + 8000720: 080007ac .word 0x080007ac + ldr r2, =_sbss + 8000724: 20000004 .word 0x20000004 + ldr r4, =_ebss + 8000728: 20000020 .word 0x20000020 + +0800072c : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 800072c: e7fe b.n 800072c + ... + +08000730 <__libc_init_array>: + 8000730: b570 push {r4, r5, r6, lr} + 8000732: 4e0d ldr r6, [pc, #52] ; (8000768 <__libc_init_array+0x38>) + 8000734: 4c0d ldr r4, [pc, #52] ; (800076c <__libc_init_array+0x3c>) + 8000736: 1ba4 subs r4, r4, r6 + 8000738: 10a4 asrs r4, r4, #2 + 800073a: 2500 movs r5, #0 + 800073c: 42a5 cmp r5, r4 + 800073e: d109 bne.n 8000754 <__libc_init_array+0x24> + 8000740: 4e0b ldr r6, [pc, #44] ; (8000770 <__libc_init_array+0x40>) + 8000742: 4c0c ldr r4, [pc, #48] ; (8000774 <__libc_init_array+0x44>) + 8000744: f000 f818 bl 8000778 <_init> + 8000748: 1ba4 subs r4, r4, r6 + 800074a: 10a4 asrs r4, r4, #2 + 800074c: 2500 movs r5, #0 + 800074e: 42a5 cmp r5, r4 + 8000750: d105 bne.n 800075e <__libc_init_array+0x2e> + 8000752: bd70 pop {r4, r5, r6, pc} + 8000754: f856 3025 ldr.w r3, [r6, r5, lsl #2] + 8000758: 4798 blx r3 + 800075a: 3501 adds r5, #1 + 800075c: e7ee b.n 800073c <__libc_init_array+0xc> + 800075e: f856 3025 ldr.w r3, [r6, r5, lsl #2] + 8000762: 4798 blx r3 + 8000764: 3501 adds r5, #1 + 8000766: e7f2 b.n 800074e <__libc_init_array+0x1e> + 8000768: 080007a4 .word 0x080007a4 + 800076c: 080007a4 .word 0x080007a4 + 8000770: 080007a4 .word 0x080007a4 + 8000774: 080007a8 .word 0x080007a8 + +08000778 <_init>: + 8000778: b5f8 push {r3, r4, r5, r6, r7, lr} + 800077a: bf00 nop + 800077c: bcf8 pop {r3, r4, r5, r6, r7} + 800077e: bc08 pop {r3} + 8000780: 469e mov lr, r3 + 8000782: 4770 bx lr + +08000784 <_fini>: + 8000784: b5f8 push {r3, r4, r5, r6, r7, lr} + 8000786: bf00 nop + 8000788: bcf8 pop {r3, r4, r5, r6, r7} + 800078a: bc08 pop {r3} + 800078c: 469e mov lr, r3 + 800078e: 4770 bx lr diff --git a/lab7interrupts/Debug/lab7interrupts.map b/lab7interrupts/Debug/lab7interrupts.map index 4fc3427..c1be61a 100644 --- a/lab7interrupts/Debug/lab7interrupts.map +++ b/lab7interrupts/Debug/lab7interrupts.map @@ -24,6 +24,15 @@ Discarded input sections .ARM.exidx 0x0000000000000000 0x8 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o .ARM.attributes 0x0000000000000000 0x20 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .data 0x0000000000000000 0x0 Src/delay.o + .bss 0x0000000000000000 0x0 Src/delay.o + .data 0x0000000000000000 0x0 Src/keypad.o + .bss 0x0000000000000000 0x0 Src/keypad.o + .bss 0x0000000000000000 0x0 Src/lcd.o + .data 0x0000000000000000 0x0 Src/main.o + .bss 0x0000000000000000 0x0 Src/main.o + .data 0x0000000000000000 0x0 Src/timer.o + .bss 0x0000000000000000 0x0 Src/timer.o .text 0x0000000000000000 0x14 Startup/startup_stm32f446retx.o .data 0x0000000000000000 0x0 Startup/startup_stm32f446retx.o .bss 0x0000000000000000 0x0 Startup/startup_stm32f446retx.o @@ -84,6 +93,11 @@ Linker script and memory map LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o +LOAD Src/delay.o +LOAD Src/keypad.o +LOAD Src/lcd.o +LOAD Src/main.o +LOAD Src/timer.o LOAD Startup/startup_stm32f446retx.o START GROUP LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a @@ -116,216 +130,241 @@ LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.exte 0x0000000008000000 g_pfnVectors 0x00000000080001c4 . = ALIGN (0x4) -.text 0x00000000080001c4 0xf4 +.text 0x00000000080001c4 0x5cc 0x00000000080001c4 . = ALIGN (0x4) *(.text) .text 0x00000000080001c4 0x40 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .text 0x0000000008000204 0x38 Src/delay.o + 0x0000000008000204 msDelay + 0x000000000800022c usDelay + .text 0x000000000800023c 0x164 Src/keypad.o + 0x000000000800023c KeyInit + 0x000000000800025c KeyGetKeyNoblock + 0x00000000080002f2 KeyGetKey + 0x000000000800032a KeyGetChar + .text 0x00000000080003a0 0x304 Src/lcd.o + 0x0000000008000474 lcdInit + 0x00000000080004d4 lcdClear + 0x00000000080004e8 lcdHome + 0x00000000080004fc lcdSetPosition + 0x000000000800051c lcdPrintString + 0x0000000008000536 lcdPrintNum + 0x000000000800057c lcdCursorLocation + 0x0000000008000622 lcdBusyWait + .text 0x00000000080006a4 0xc Src/main.o + 0x00000000080006a4 main + 0x00000000080006b0 EXTI_BUTTON_PUSH + .text 0x00000000080006b0 0x2a Src/timer.o + 0x00000000080006b0 timerInit *(.text*) + *fill* 0x00000000080006da 0x2 .text.Reset_Handler - 0x0000000008000204 0x50 Startup/startup_stm32f446retx.o - 0x0000000008000204 Reset_Handler + 0x00000000080006dc 0x50 Startup/startup_stm32f446retx.o + 0x00000000080006dc Reset_Handler .text.Default_Handler - 0x0000000008000254 0x2 Startup/startup_stm32f446retx.o - 0x0000000008000254 RTC_Alarm_IRQHandler - 0x0000000008000254 EXTI2_IRQHandler - 0x0000000008000254 TIM8_CC_IRQHandler - 0x0000000008000254 SPDIF_Rx_IRQHandler - 0x0000000008000254 DebugMon_Handler - 0x0000000008000254 SPI4_IRQHandler - 0x0000000008000254 TIM1_CC_IRQHandler - 0x0000000008000254 QuadSPI_IRQHandler - 0x0000000008000254 DMA2_Stream5_IRQHandler - 0x0000000008000254 HardFault_Handler - 0x0000000008000254 DMA1_Stream5_IRQHandler - 0x0000000008000254 SysTick_Handler - 0x0000000008000254 PVD_IRQHandler - 0x0000000008000254 SDIO_IRQHandler - 0x0000000008000254 TAMP_STAMP_IRQHandler - 0x0000000008000254 PendSV_Handler - 0x0000000008000254 NMI_Handler - 0x0000000008000254 CAN2_RX1_IRQHandler - 0x0000000008000254 EXTI3_IRQHandler - 0x0000000008000254 TIM8_TRG_COM_TIM14_IRQHandler - 0x0000000008000254 TIM1_UP_TIM10_IRQHandler - 0x0000000008000254 FMPI2C1_error_IRQHandler - 0x0000000008000254 TIM8_UP_TIM13_IRQHandler - 0x0000000008000254 I2C3_ER_IRQHandler - 0x0000000008000254 EXTI0_IRQHandler - 0x0000000008000254 I2C2_EV_IRQHandler - 0x0000000008000254 DMA1_Stream2_IRQHandler - 0x0000000008000254 CAN1_RX0_IRQHandler - 0x0000000008000254 FPU_IRQHandler - 0x0000000008000254 OTG_HS_WKUP_IRQHandler - 0x0000000008000254 UsageFault_Handler - 0x0000000008000254 CAN2_SCE_IRQHandler - 0x0000000008000254 DMA2_Stream2_IRQHandler - 0x0000000008000254 SPI1_IRQHandler - 0x0000000008000254 TIM6_DAC_IRQHandler - 0x0000000008000254 TIM1_BRK_TIM9_IRQHandler - 0x0000000008000254 DCMI_IRQHandler - 0x0000000008000254 CAN2_RX0_IRQHandler - 0x0000000008000254 DMA2_Stream3_IRQHandler - 0x0000000008000254 FMPI2C1_IRQHandler - 0x0000000008000254 SAI2_IRQHandler - 0x0000000008000254 USART6_IRQHandler - 0x0000000008000254 USART3_IRQHandler - 0x0000000008000254 CAN1_RX1_IRQHandler - 0x0000000008000254 UART5_IRQHandler - 0x0000000008000254 DMA2_Stream0_IRQHandler - 0x0000000008000254 TIM4_IRQHandler - 0x0000000008000254 I2C1_EV_IRQHandler - 0x0000000008000254 HDMI_CEC_IRQHandler - 0x0000000008000254 DMA1_Stream6_IRQHandler - 0x0000000008000254 DMA1_Stream1_IRQHandler - 0x0000000008000254 UART4_IRQHandler - 0x0000000008000254 TIM3_IRQHandler - 0x0000000008000254 RCC_IRQHandler - 0x0000000008000254 TIM8_BRK_TIM12_IRQHandler - 0x0000000008000254 Default_Handler - 0x0000000008000254 EXTI15_10_IRQHandler - 0x0000000008000254 ADC_IRQHandler - 0x0000000008000254 DMA1_Stream7_IRQHandler - 0x0000000008000254 TIM7_IRQHandler - 0x0000000008000254 CAN2_TX_IRQHandler - 0x0000000008000254 TIM5_IRQHandler - 0x0000000008000254 DMA2_Stream7_IRQHandler - 0x0000000008000254 I2C3_EV_IRQHandler - 0x0000000008000254 EXTI9_5_IRQHandler - 0x0000000008000254 RTC_WKUP_IRQHandler - 0x0000000008000254 SPI2_IRQHandler - 0x0000000008000254 OTG_HS_EP1_IN_IRQHandler - 0x0000000008000254 MemManage_Handler - 0x0000000008000254 DMA1_Stream0_IRQHandler - 0x0000000008000254 CAN1_TX_IRQHandler - 0x0000000008000254 SVC_Handler - 0x0000000008000254 EXTI4_IRQHandler - 0x0000000008000254 OTG_HS_EP1_OUT_IRQHandler - 0x0000000008000254 WWDG_IRQHandler - 0x0000000008000254 TIM2_IRQHandler - 0x0000000008000254 OTG_FS_WKUP_IRQHandler - 0x0000000008000254 TIM1_TRG_COM_TIM11_IRQHandler - 0x0000000008000254 OTG_HS_IRQHandler - 0x0000000008000254 EXTI1_IRQHandler - 0x0000000008000254 USART2_IRQHandler - 0x0000000008000254 I2C2_ER_IRQHandler - 0x0000000008000254 DMA2_Stream1_IRQHandler - 0x0000000008000254 CAN1_SCE_IRQHandler - 0x0000000008000254 FLASH_IRQHandler - 0x0000000008000254 DMA2_Stream4_IRQHandler - 0x0000000008000254 BusFault_Handler - 0x0000000008000254 USART1_IRQHandler - 0x0000000008000254 OTG_FS_IRQHandler - 0x0000000008000254 SPI3_IRQHandler - 0x0000000008000254 DMA1_Stream4_IRQHandler - 0x0000000008000254 I2C1_ER_IRQHandler - 0x0000000008000254 FMC_IRQHandler - 0x0000000008000254 DMA2_Stream6_IRQHandler - 0x0000000008000254 SAI1_IRQHandler - 0x0000000008000254 DMA1_Stream3_IRQHandler - *fill* 0x0000000008000256 0x2 + 0x000000000800072c 0x2 Startup/startup_stm32f446retx.o + 0x000000000800072c RTC_Alarm_IRQHandler + 0x000000000800072c EXTI2_IRQHandler + 0x000000000800072c TIM8_CC_IRQHandler + 0x000000000800072c SPDIF_Rx_IRQHandler + 0x000000000800072c DebugMon_Handler + 0x000000000800072c SPI4_IRQHandler + 0x000000000800072c TIM1_CC_IRQHandler + 0x000000000800072c QuadSPI_IRQHandler + 0x000000000800072c DMA2_Stream5_IRQHandler + 0x000000000800072c HardFault_Handler + 0x000000000800072c DMA1_Stream5_IRQHandler + 0x000000000800072c SysTick_Handler + 0x000000000800072c PVD_IRQHandler + 0x000000000800072c SDIO_IRQHandler + 0x000000000800072c TAMP_STAMP_IRQHandler + 0x000000000800072c PendSV_Handler + 0x000000000800072c NMI_Handler + 0x000000000800072c CAN2_RX1_IRQHandler + 0x000000000800072c EXTI3_IRQHandler + 0x000000000800072c TIM8_TRG_COM_TIM14_IRQHandler + 0x000000000800072c TIM1_UP_TIM10_IRQHandler + 0x000000000800072c FMPI2C1_error_IRQHandler + 0x000000000800072c TIM8_UP_TIM13_IRQHandler + 0x000000000800072c I2C3_ER_IRQHandler + 0x000000000800072c EXTI0_IRQHandler + 0x000000000800072c I2C2_EV_IRQHandler + 0x000000000800072c DMA1_Stream2_IRQHandler + 0x000000000800072c CAN1_RX0_IRQHandler + 0x000000000800072c FPU_IRQHandler + 0x000000000800072c OTG_HS_WKUP_IRQHandler + 0x000000000800072c UsageFault_Handler + 0x000000000800072c CAN2_SCE_IRQHandler + 0x000000000800072c DMA2_Stream2_IRQHandler + 0x000000000800072c SPI1_IRQHandler + 0x000000000800072c TIM6_DAC_IRQHandler + 0x000000000800072c TIM1_BRK_TIM9_IRQHandler + 0x000000000800072c DCMI_IRQHandler + 0x000000000800072c CAN2_RX0_IRQHandler + 0x000000000800072c DMA2_Stream3_IRQHandler + 0x000000000800072c FMPI2C1_IRQHandler + 0x000000000800072c SAI2_IRQHandler + 0x000000000800072c USART6_IRQHandler + 0x000000000800072c USART3_IRQHandler + 0x000000000800072c CAN1_RX1_IRQHandler + 0x000000000800072c UART5_IRQHandler + 0x000000000800072c DMA2_Stream0_IRQHandler + 0x000000000800072c TIM4_IRQHandler + 0x000000000800072c I2C1_EV_IRQHandler + 0x000000000800072c HDMI_CEC_IRQHandler + 0x000000000800072c DMA1_Stream6_IRQHandler + 0x000000000800072c DMA1_Stream1_IRQHandler + 0x000000000800072c UART4_IRQHandler + 0x000000000800072c TIM3_IRQHandler + 0x000000000800072c RCC_IRQHandler + 0x000000000800072c TIM8_BRK_TIM12_IRQHandler + 0x000000000800072c Default_Handler + 0x000000000800072c EXTI15_10_IRQHandler + 0x000000000800072c ADC_IRQHandler + 0x000000000800072c DMA1_Stream7_IRQHandler + 0x000000000800072c TIM7_IRQHandler + 0x000000000800072c CAN2_TX_IRQHandler + 0x000000000800072c TIM5_IRQHandler + 0x000000000800072c DMA2_Stream7_IRQHandler + 0x000000000800072c I2C3_EV_IRQHandler + 0x000000000800072c EXTI9_5_IRQHandler + 0x000000000800072c RTC_WKUP_IRQHandler + 0x000000000800072c SPI2_IRQHandler + 0x000000000800072c OTG_HS_EP1_IN_IRQHandler + 0x000000000800072c MemManage_Handler + 0x000000000800072c DMA1_Stream0_IRQHandler + 0x000000000800072c CAN1_TX_IRQHandler + 0x000000000800072c SVC_Handler + 0x000000000800072c EXTI4_IRQHandler + 0x000000000800072c OTG_HS_EP1_OUT_IRQHandler + 0x000000000800072c WWDG_IRQHandler + 0x000000000800072c TIM2_IRQHandler + 0x000000000800072c OTG_FS_WKUP_IRQHandler + 0x000000000800072c TIM1_TRG_COM_TIM11_IRQHandler + 0x000000000800072c OTG_HS_IRQHandler + 0x000000000800072c EXTI1_IRQHandler + 0x000000000800072c USART2_IRQHandler + 0x000000000800072c I2C2_ER_IRQHandler + 0x000000000800072c DMA2_Stream1_IRQHandler + 0x000000000800072c CAN1_SCE_IRQHandler + 0x000000000800072c FLASH_IRQHandler + 0x000000000800072c DMA2_Stream4_IRQHandler + 0x000000000800072c BusFault_Handler + 0x000000000800072c USART1_IRQHandler + 0x000000000800072c OTG_FS_IRQHandler + 0x000000000800072c SPI3_IRQHandler + 0x000000000800072c DMA1_Stream4_IRQHandler + 0x000000000800072c I2C1_ER_IRQHandler + 0x000000000800072c FMC_IRQHandler + 0x000000000800072c DMA2_Stream6_IRQHandler + 0x000000000800072c SAI1_IRQHandler + 0x000000000800072c DMA1_Stream3_IRQHandler + *fill* 0x000000000800072e 0x2 .text.__libc_init_array - 0x0000000008000258 0x48 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) - 0x0000000008000258 __libc_init_array + 0x0000000008000730 0x48 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + 0x0000000008000730 __libc_init_array *(.glue_7) - .glue_7 0x00000000080002a0 0x0 linker stubs + .glue_7 0x0000000008000778 0x0 linker stubs *(.glue_7t) - .glue_7t 0x00000000080002a0 0x0 linker stubs + .glue_7t 0x0000000008000778 0x0 linker stubs *(.eh_frame) - .eh_frame 0x00000000080002a0 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .eh_frame 0x0000000008000778 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o *(.init) - .init 0x00000000080002a0 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o - 0x00000000080002a0 _init - .init 0x00000000080002a4 0x8 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + .init 0x0000000008000778 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + 0x0000000008000778 _init + .init 0x000000000800077c 0x8 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o *(.fini) - .fini 0x00000000080002ac 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o - 0x00000000080002ac _fini - .fini 0x00000000080002b0 0x8 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o - 0x00000000080002b8 . = ALIGN (0x4) - 0x00000000080002b8 _etext = . + .fini 0x0000000008000784 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + 0x0000000008000784 _fini + .fini 0x0000000008000788 0x8 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + 0x0000000008000790 . = ALIGN (0x4) + 0x0000000008000790 _etext = . -.vfp11_veneer 0x00000000080002b8 0x0 - .vfp11_veneer 0x00000000080002b8 0x0 linker stubs +.vfp11_veneer 0x0000000008000790 0x0 + .vfp11_veneer 0x0000000008000790 0x0 linker stubs -.v4_bx 0x00000000080002b8 0x0 - .v4_bx 0x00000000080002b8 0x0 linker stubs +.v4_bx 0x0000000008000790 0x0 + .v4_bx 0x0000000008000790 0x0 linker stubs -.iplt 0x00000000080002b8 0x0 - .iplt 0x00000000080002b8 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o +.iplt 0x0000000008000790 0x0 + .iplt 0x0000000008000790 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o -.rel.dyn 0x00000000080002b8 0x0 - .rel.iplt 0x00000000080002b8 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o - -.rodata 0x00000000080002b8 0x0 - 0x00000000080002b8 . = ALIGN (0x4) +.rodata 0x0000000008000790 0x14 + 0x0000000008000790 . = ALIGN (0x4) *(.rodata) + .rodata 0x0000000008000790 0x11 Src/keypad.o *(.rodata*) - 0x00000000080002b8 . = ALIGN (0x4) + 0x00000000080007a4 . = ALIGN (0x4) + *fill* 0x00000000080007a1 0x3 -.ARM.extab 0x00000000080002b8 0x0 - 0x00000000080002b8 . = ALIGN (0x4) +.rel.dyn 0x00000000080007a4 0x0 + .rel.iplt 0x00000000080007a4 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + +.ARM.extab 0x00000000080007a4 0x0 + 0x00000000080007a4 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x00000000080002b8 . = ALIGN (0x4) + 0x00000000080007a4 . = ALIGN (0x4) -.ARM 0x00000000080002b8 0x0 - 0x00000000080002b8 . = ALIGN (0x4) - 0x00000000080002b8 __exidx_start = . +.ARM 0x00000000080007a4 0x0 + 0x00000000080007a4 . = ALIGN (0x4) + 0x00000000080007a4 __exidx_start = . *(.ARM.exidx*) - 0x00000000080002b8 __exidx_end = . - 0x00000000080002b8 . = ALIGN (0x4) + 0x00000000080007a4 __exidx_end = . + 0x00000000080007a4 . = ALIGN (0x4) -.preinit_array 0x00000000080002b8 0x0 - 0x00000000080002b8 . = ALIGN (0x4) - 0x00000000080002b8 PROVIDE (__preinit_array_start = .) +.preinit_array 0x00000000080007a4 0x0 + 0x00000000080007a4 . = ALIGN (0x4) + 0x00000000080007a4 PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x00000000080002b8 PROVIDE (__preinit_array_end = .) - 0x00000000080002b8 . = ALIGN (0x4) + 0x00000000080007a4 PROVIDE (__preinit_array_end = .) + 0x00000000080007a4 . = ALIGN (0x4) -.init_array 0x00000000080002b8 0x4 - 0x00000000080002b8 . = ALIGN (0x4) - 0x00000000080002b8 PROVIDE (__init_array_start = .) +.init_array 0x00000000080007a4 0x4 + 0x00000000080007a4 . = ALIGN (0x4) + 0x00000000080007a4 PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x00000000080002b8 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o - 0x00000000080002bc PROVIDE (__init_array_end = .) - 0x00000000080002bc . = ALIGN (0x4) + .init_array 0x00000000080007a4 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + 0x00000000080007a8 PROVIDE (__init_array_end = .) + 0x00000000080007a8 . = ALIGN (0x4) -.fini_array 0x00000000080002bc 0x4 - 0x00000000080002bc . = ALIGN (0x4) +.fini_array 0x00000000080007a8 0x4 + 0x00000000080007a8 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x00000000080002bc 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .fini_array 0x00000000080007a8 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x00000000080002c0 . = ALIGN (0x4) - 0x00000000080002c0 _sidata = LOADADDR (.data) + 0x00000000080007ac . = ALIGN (0x4) + 0x00000000080007ac _sidata = LOADADDR (.data) -.data 0x0000000020000000 0x0 load address 0x00000000080002c0 +.data 0x0000000020000000 0x4 load address 0x00000000080007ac 0x0000000020000000 . = ALIGN (0x4) 0x0000000020000000 _sdata = . *(.data) + .data 0x0000000020000000 0x4 Src/lcd.o *(.data*) - 0x0000000020000000 . = ALIGN (0x4) - 0x0000000020000000 _edata = . + 0x0000000020000004 . = ALIGN (0x4) + 0x0000000020000004 _edata = . -.igot.plt 0x0000000020000000 0x0 load address 0x00000000080002c0 - .igot.plt 0x0000000020000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o - 0x0000000020000000 . = ALIGN (0x4) +.igot.plt 0x0000000020000004 0x0 load address 0x00000000080007b0 + .igot.plt 0x0000000020000004 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + 0x0000000020000004 . = ALIGN (0x4) -.bss 0x0000000020000000 0x1c load address 0x00000000080002c0 - 0x0000000020000000 _sbss = . - 0x0000000020000000 __bss_start__ = _sbss +.bss 0x0000000020000004 0x1c load address 0x00000000080007b0 + 0x0000000020000004 _sbss = . + 0x0000000020000004 __bss_start__ = _sbss *(.bss) - .bss 0x0000000020000000 0x1c c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .bss 0x0000000020000004 0x1c c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o *(.bss*) *(COMMON) - 0x000000002000001c . = ALIGN (0x4) - 0x000000002000001c _ebss = . - 0x000000002000001c __bss_end__ = _ebss + 0x0000000020000020 . = ALIGN (0x4) + 0x0000000020000020 _ebss = . + 0x0000000020000020 __bss_end__ = _ebss ._user_heap_stack - 0x000000002000001c 0x604 load address 0x00000000080002c0 + 0x0000000020000020 0x600 load address 0x00000000080007b0 0x0000000020000020 . = ALIGN (0x8) - *fill* 0x000000002000001c 0x4 [!provide] PROVIDE (end = .) [!provide] PROVIDE (_end = .) 0x0000000020000220 . = (. + _Min_Heap_Size) @@ -347,28 +386,73 @@ LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.exte .ARM.attributes 0x0000000000000022 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o .ARM.attributes - 0x0000000000000056 0x21 Startup/startup_stm32f446retx.o + 0x0000000000000056 0x25 Src/delay.o .ARM.attributes - 0x0000000000000077 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + 0x000000000000007b 0x25 Src/keypad.o .ARM.attributes - 0x00000000000000ab 0x22 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + 0x00000000000000a0 0x25 Src/lcd.o + .ARM.attributes + 0x00000000000000c5 0x25 Src/main.o + .ARM.attributes + 0x00000000000000ea 0x25 Src/timer.o + .ARM.attributes + 0x000000000000010f 0x21 Startup/startup_stm32f446retx.o + .ARM.attributes + 0x0000000000000130 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .ARM.attributes + 0x0000000000000164 0x22 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o OUTPUT(lab7interrupts.elf elf32-littlearm) -.debug_line 0x0000000000000000 0x84 - .debug_line 0x0000000000000000 0x84 Startup/startup_stm32f446retx.o +.debug_line 0x0000000000000000 0x36b + .debug_line 0x0000000000000000 0x52 Src/delay.o + .debug_line 0x0000000000000052 0xcf Src/keypad.o + .debug_line 0x0000000000000121 0x13c Src/lcd.o + .debug_line 0x000000000000025d 0x3f Src/main.o + .debug_line 0x000000000000029c 0x4b Src/timer.o + .debug_line 0x00000000000002e7 0x84 Startup/startup_stm32f446retx.o -.debug_info 0x0000000000000000 0x22 - .debug_info 0x0000000000000000 0x22 Startup/startup_stm32f446retx.o +.debug_info 0x0000000000000000 0xe0 + .debug_info 0x0000000000000000 0x26 Src/delay.o + .debug_info 0x0000000000000026 0x26 Src/keypad.o + .debug_info 0x000000000000004c 0x26 Src/lcd.o + .debug_info 0x0000000000000072 0x26 Src/main.o + .debug_info 0x0000000000000098 0x26 Src/timer.o + .debug_info 0x00000000000000be 0x22 Startup/startup_stm32f446retx.o -.debug_abbrev 0x0000000000000000 0x12 - .debug_abbrev 0x0000000000000000 0x12 Startup/startup_stm32f446retx.o +.debug_abbrev 0x0000000000000000 0x76 + .debug_abbrev 0x0000000000000000 0x14 Src/delay.o + .debug_abbrev 0x0000000000000014 0x14 Src/keypad.o + .debug_abbrev 0x0000000000000028 0x14 Src/lcd.o + .debug_abbrev 0x000000000000003c 0x14 Src/main.o + .debug_abbrev 0x0000000000000050 0x14 Src/timer.o + .debug_abbrev 0x0000000000000064 0x12 Startup/startup_stm32f446retx.o -.debug_aranges 0x0000000000000000 0x28 +.debug_aranges 0x0000000000000000 0xc8 .debug_aranges - 0x0000000000000000 0x28 Startup/startup_stm32f446retx.o + 0x0000000000000000 0x20 Src/delay.o + .debug_aranges + 0x0000000000000020 0x20 Src/keypad.o + .debug_aranges + 0x0000000000000040 0x20 Src/lcd.o + .debug_aranges + 0x0000000000000060 0x20 Src/main.o + .debug_aranges + 0x0000000000000080 0x20 Src/timer.o + .debug_aranges + 0x00000000000000a0 0x28 Startup/startup_stm32f446retx.o -.debug_str 0x0000000000000000 0x73 - .debug_str 0x0000000000000000 0x73 Startup/startup_stm32f446retx.o +.debug_str 0x0000000000000000 0xbc + .debug_str 0x0000000000000000 0x5f Src/delay.o + .debug_str 0x000000000000005f 0x10 Src/keypad.o + 0x60 (size before relaxing) + .debug_str 0x000000000000006f 0xd Src/lcd.o + 0x5d (size before relaxing) + .debug_str 0x000000000000007c 0xe Src/main.o + 0x5e (size before relaxing) + .debug_str 0x000000000000008a 0xf Src/timer.o + 0x5f (size before relaxing) + .debug_str 0x0000000000000099 0x23 Startup/startup_stm32f446retx.o + 0x73 (size before relaxing) .debug_ranges 0x0000000000000000 0x20 .debug_ranges 0x0000000000000000 0x20 Startup/startup_stm32f446retx.o diff --git a/lab7interrupts/Debug/objects.list b/lab7interrupts/Debug/objects.list index 5958e22..bcd36a4 100644 --- a/lab7interrupts/Debug/objects.list +++ b/lab7interrupts/Debug/objects.list @@ -1 +1,6 @@ +"Src/delay.o" +"Src/keypad.o" +"Src/lcd.o" +"Src/main.o" +"Src/timer.o" "Startup/startup_stm32f446retx.o" diff --git a/lab7interrupts/Debug/sources.mk b/lab7interrupts/Debug/sources.mk index 694ef6c..7f6d674 100644 --- a/lab7interrupts/Debug/sources.mk +++ b/lab7interrupts/Debug/sources.mk @@ -16,6 +16,6 @@ C_DEPS := # Every subdirectory with source files must be described here SUBDIRS := \ -Startup \ Src \ +Startup \ diff --git a/lab7interrupts/Src/delay.s b/lab7interrupts/Src/delay.s new file mode 100644 index 0000000..466bce0 --- /dev/null +++ b/lab7interrupts/Src/delay.s @@ -0,0 +1,59 @@ +# delay.s +# Trevor Barnes +# CE2801-031 +# Description: A file for handling delay routines + +.syntax unified +.cpu cortex-m4 +.thumb +.section .text + +.global msDelay +# A subroutine to create a delay of a certain number of milliseconds +# Input: +# r0: Length of delay (ms) +msDelay: + + push {r1,r2,r3,lr} + mov r3,r0 +ms_delay: + # 250 iterations = 1/16 of a millisecond + mov r2, #0x10 +# Loop 16 times +1: + # 250 + mov r1, #0xFA +# Loop 250 times +2: + sub r1, #1 + cmp r1, #0 + bne 2b + + sub r2, #1 + cmp r2, #0 + bne 1b + + sub r0, #1 + cmp r0, #0 + bne ms_delay + + mov r0,r3 + pop {r1,r2,r3,pc} + +.global usDelay +# about r1 mircoseonds +usDelay: + # stack + push {lr} + + lsl r1, r1, #3 + +1: + sub r1, r1, #1 + cmp r1, #0 + bne 1b + + # return + pop {pc} + + diff --git a/lab7interrupts/Src/keypad.s b/lab7interrupts/Src/keypad.s new file mode 100644 index 0000000..2006c2e --- /dev/null +++ b/lab7interrupts/Src/keypad.s @@ -0,0 +1,259 @@ +# keypad.s +# Trevor Barnes +# CE2801-031 +# Description: Contains routines for the keypad component + +.syntax unified +.cpu cortex-m4 +.thumb +.section .text + + .equ RCC_BASE, 0x40023800 + .equ RCC_AHB1ENR, 0x30 + .equ RCC_GPIOCEN, 1<<2 + + .equ GPIOC_BASE, 0x40020800 + .equ GPIO_MODER, 0x00 + .equ GPIO_ODR, 0x14 + .equ GPIO_IDR, 0x10 + .equ GPIO_PUPDR, 0x0C + .equ GPIO_BSRR, 0x18 + + # Row 1 + .equ k1, 0xEE + .equ k2, 0xED + .equ k3, 0xEB + .equ k4, 0xE7 + + # Row 2 + .equ k5, 0xDE + .equ k6, 0xDD + .equ k7, 0xDB + .equ k8, 0xD7 + + # Row 3 + .equ k9, 0xBE + .equ k10, 0xBD + .equ k11, 0xBB + .equ k12, 0xB7 + + # Row 4 + .equ k13, 0x7E + .equ k14, 0x7D + .equ k15, 0x7B + .equ k16, 0x77 + +.global KeyInit +# Initialize the keypad GPIO port.   +# Depending on your scanning algorithm, +# there may not be any work to do in this method +KeyInit: + + push {r0,r1,r2,lr} + + ldr r1, =RCC_BASE + + ldr r2, [r1, #RCC_AHB1ENR] + orr r2, r2, #RCC_GPIOCEN + str r2, [r1, #RCC_AHB1ENR] + + # Read current PUPDR state + ldr r1, =GPIOC_BASE + ldr r2, [r1, #GPIO_PUPDR] + + # Modify and write rows and columns to be "Pull-Up" + bfc r2, #0, #16 + ldr r0, =0x5555 + orr r2, r2, r0 + str r2, [r1, #GPIO_PUPDR] + + pop {r0,r1,r2,pc} + +.global KeyGetKeyNoblock +# Returns in r0 a numeric code representing +# the button on the keypad that was pressed (1 to 16), +# or 0 if no button is pressed +KeyGetKeyNoblock: + + push {r1,r2,lr} + + bl keypadScan + + mov r1, #0 + + ubfx r2, r0, #4, #4 + + cmp r2, #0xF + beq 1f + + add r1, #1 + cmp r0, #k1 + beq 1f + + add r1, #1 + cmp r0, #k2 + beq 1f + + add r1, #1 + cmp r0, #k3 + beq 1f + + add r1, #1 + cmp r0, #k4 + beq 1f + + add r1, #1 + cmp r0, #k5 + beq 1f + + add r1, #1 + cmp r0, #k6 + beq 1f + + add r1, #1 + cmp r0, #k7 + beq 1f + + add r1, #1 + cmp r0, #k8 + beq 1f + + add r1, #1 + cmp r0, #k9 + beq 1f + + add r1, #1 + cmp r0, #k10 + beq 1f + + add r1, #1 + cmp r0, #k11 + beq 1f + + add r1, #1 + cmp r0, #k12 + beq 1f + + add r1, #1 + cmp r0, #k13 + beq 1f + + add r1, #1 + cmp r0, #k14 + beq 1f + + add r1, #1 + cmp r0, #k15 + beq 1f + + add r1, #1 + cmp r0, #k16 + beq 1f + +1: + mov r0, r1 + + pop {r1,r2,pc} + + +.global KeyGetKey +# Same as KeyGetkeyNoblock, but blocks – that is, +# waits until a key is pressed and then returns the key code.   +# Per discussion in lecture, you may wish to return after said key +# is released +KeyGetKey: + + push {r1,r2,r3,lr} + mov r0, #0 +1: + mov r1, #10 + bl usDelay + bl KeyGetKeyNoblock + + cmp r0, #0 + beq 1b +2: +# Row = Input | Col = Output + ldr r1, =GPIOC_BASE + ldr r2, [r1, #GPIO_MODER] + mov r3, #0x0055 + bfi r2, r3, #0, #16 + str r2, [r1, #GPIO_MODER] +# "0000" -> ODR (Col) + ldrb r2, [r1, #GPIO_ODR] + mov r3, #0x0 + bfi r2, r3, #0, #4 + strb r2, [r1, #GPIO_ODR] +# Store input data in r3 + ldrb r3, [r1, #GPIO_IDR] + cmp r3, #0xF0 + bne 2b + + pop {r1,r2,r3,pc} + + +.global KeyGetChar +# Similar to KeyGetkey, but returns the ASCII code corresponding +# to the key press.  +# This method blocks. You should use a data structure in .rodata +# to map keys to characters +KeyGetChar: + + push {r1,r2,lr} + + bl KeyGetKey + sub r0, #1 + mov r2, r0 + ldr r1, =keyChars + ldrb r0, [r1, r2] + + pop {r1,r2,pc} + +# Waits for input on keypad and returns that value in r0 +keypadScan: + + push {r1,r2,r3,lr} +2: +# Row = Input | Col = Output + ldr r1, =GPIOC_BASE + ldr r2, [r1, #GPIO_MODER] + mov r0, #0x0055 + bfi r2, r0, #0, #16 + str r2, [r1, #GPIO_MODER] +# "0000" -> ODR (Col) + ldrb r2, [r1, #GPIO_ODR] + mov r3, #0x0 + bfi r2, r3, #0, #4 + strb r2, [r1, #GPIO_ODR] +# Store input data in r3 + mov r0, r1 + mov r1, #5 + bl usDelay + mov r1, r0 + ldrb r3, [r1, #GPIO_IDR] + +# Row = Output | Col = Input + ldr r1, =GPIOC_BASE + ldr r2, [r1, #GPIO_MODER] + mov r0, #0x5500 + bfi r2, r0, #0, #16 + str r2, [r1, #GPIO_MODER] +# "0000" -> ODR (Row) + ldrb r2, [r1, #GPIO_ODR] + mov r0, #0x0 + bfi r2, r0, #0, #4 + strb r2, [r1, #GPIO_ODR] + mov r0, r1 + mov r1, #5 + bl usDelay + mov r1, r0 +# Read IDR (Row & Col) + ldrb r0, [r1, #GPIO_IDR] + orr r0, r0, r3 + + pop {r1,r2,r3,pc} + + +.section .rodata +keyChars: + .asciz "123A456B789C*0#D" diff --git a/lab7interrupts/Src/lcd.s b/lab7interrupts/Src/lcd.s new file mode 100644 index 0000000..762318a --- /dev/null +++ b/lab7interrupts/Src/lcd.s @@ -0,0 +1,476 @@ +# lcd.s +# Trevor Barnes +# CE2801-031 +# Description: Contains routines for the LCD component + +.syntax unified +.cpu cortex-m4 +.thumb +.section .text + +#Fill in addresses + .equ RCC_BASE, 0x40023800 + .equ RCC_AHB1ENR, 0x30 + .equ RCC_GPIOAEN, 1<<0 + .equ RCC_GPIOCEN, 1<<2 + + .equ GPIOA_BASE, 0x40020000 + .equ GPIOC_BASE, 0x40020800 + .equ GPIO_MODER, 0x00 + .equ GPIO_ODR, 0x14 + .equ GPIO_IDR, 0x10 + .equ GPIO_BSRR, 0x18 + +#What pin is each of these? + .equ RS, 8 // PC8 + .equ RW, 9 // PC9 + .equ E, 10 // PC10 + +#Commands for BSRR + .equ RS_SET, 1< DataBus + lsl r1, #4 + ldr r3, =GPIOA_BASE + ldr r2, [r3, #GPIO_ODR] + bfc r2, #4, #8 + orr r2, r2, r1 + str r2, [r3, #GPIO_ODR ] + #Set E=0 + ldr r2, =GPIOC_BASE + mov r3, E_CLR + str r3, [r2, #GPIO_BSRR] + + #Wait for appropriate delay + mov r1, #37 + bl usDelay + pop {r2,r3,pc} + + +#Writes data +#RS=0 RW=0 R1-Arg +#No returns +WriteData: + push {r1,r2,r3,r4,lr} + + #Set RS=1,RW=0,E=0 + ldr r2, =GPIOC_BASE + + mov r3, #RS_SET + str r3, [r2, #GPIO_BSRR] + mov r3, #RW_CLR + str r3, [r2, #GPIO_BSRR] + mov r3, #E_CLR + str r3, [r2, #GPIO_BSRR] + #Set E=1 + mov r3, #E_SET + str r3, [r2, #GPIO_BSRR] + #Set R1 -> DataBus + lsl r1, #4 + ldr r3, =GPIOA_BASE + ldr r2, [r3, #GPIO_ODR] + bfc r2, #4, #8 + orr r2, r2, r1 + str r2, [r3, #GPIO_ODR ] + #Set E=0 + ldr r2, =GPIOC_BASE + mov r3, #E_CLR + str r3, [r2, #GPIO_BSRR] + #Wait for appropriate delay + mov r1, #37 + bl usDelay + pop {r1,r2,r3,r4,pc} + +#Code to intialize the lcd +lcdInit: + push {r0,r1,lr} + + #Set up Ports + bl PortSetup + #Wait 40ms + mov r0, #40 + bl msDelay + #Write Function Set (0x38) + mov r1, 0x38 + bl WriteInstruction + mov r1, #37 + bl usDelay + #Write Function Set (0x38) + mov r1, 0x38 + bl WriteInstruction + mov r1, #37 + bl usDelay + #Write Display On/Off(0x0F) + mov r1, 0x0F + bl WriteInstruction + mov r1, #37 + bl usDelay + #Write Display Clear (0x01) + mov r1, 0x01 + bl WriteInstruction + mov r1, #2 + bl msDelay + + #Write Entry Mode Set (0x06) + mov r1, 0x06 + bl WriteInstruction + + mov r1, #37 + bl usDelay + pop {r0,r1,pc} + +.global lcdClear + # clears the display + # no arguments or return + # includes necessary delay +lcdClear: + push {r0,r1,lr} + mov r1, 0x01 + bl WriteInstruction + # Delay for at least 1.52ms + mov r0, #2 + bl msDelay + pop {r0,r1,pc} + + +.global lcdHome + # moves cursor to the home position + # no arguments or return + # includes necessary delay +lcdHome: + push {r1,lr} + mov r1, #0x02 + bl WriteInstruction + mov r0, #2 + bl msDelay + pop {r1,pc} + +.global lcdSetPosition + # moves cursor to the position indicated + # r0 is the zero-based row and r1 is the zero-based column, no return value + # includes necessary delay +lcdSetPosition: + push {r0,r1,lr} + # Sub values to "actual" positions + sub r0, r0, #1 + sub r1, r1, #1 + # Shift row to actual + lsl r0, r0, #6 + orr r0, r0, r1 + + mov r1, #0x80 + orr r1, r1, r0 + bl WriteInstruction + pop {r0,r1,pc} + +.global lcdPrintString + # prints a null terminated string to the display + # r0 contains the address of the null terminated string (usually located in .data or .rodata), returns the number of characters written to display in r0 + # includes necessary delay +lcdPrintString: + push {r0,r1,r2,r3,lr} + + mov r2, #0 +loop: + ldrb r1, [r0, r2] + cmp r1, #0x00 + beq done + bl WriteData + add r2, r2, #1 + b loop +done: + mov r0, r1 + pop {r0,r1,r2,r3,pc} + +.global lcdPrintNum + # prints a (decimal) number to the display + # the number to be printed is in r0, values of 0 to 9999 will print, anything above 9999 should print Err. + # includes necessary delay +lcdPrintNum: + push {r0,r1,r2,r3,r4,lr} + + bl num_to_ASCII + # Store num in memory + ldr r2, =numToPrint + str r0, [r2] + # Move cursor to right-most position + mov r1, #16 +writeByte: + mov r0, #1 + bl lcdSetPosition + + mov r4, r0 + mov r0, #1 + bl msDelay + mov r0, r4 + + mov r0, r1 + ldrb r1, [r2, r3] + bl WriteData + + mov r4, r0 + mov r0, #1 + bl msDelay + mov r0, r4 + + add r3, r3, #1 + cmp r3, #4 + sub r1, r0, #1 + cmp r3, #4 + bne writeByte + pop {r0,r1,r2,r3,r4,pc} + + +.global lcdCursorLocation + # Returns the location of the cursor on the LCD (1-32) + # Location of cursor is returned in r0 +lcdCursorLocation: + push {r1,lr} + + + pop {r1,pc} + + + +# Takes in a value from 0-9999 and converts it to ASCII +# Input: +# r0: Input binary value + +num_to_ASCII: + + # If outside of range, return ASCII "Err." + push {r1,r2,r3,lr} + + cmp r0,#0 + blt out_of_range + # cmp r0,#9999 + # bgt out_of_range + +# Normal conversion behavior + mov r1, #16 + lsl r0, #3 + sub r1, #3 +shift_cycle: + + lsl r0, #1 + sub r1, #1 + cmp r1, #0 + # Branch to encode section if shifted 16 times + beq encode + +# Verify Each Nibble is less than or equal to 4 + ubfx r2, r0, #16, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + ble 2f + add r2, #3 + bfi r0, r2, #16, #4 +2: ubfx r2, r0, #20, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + ble 3f + add r2, #3 + bfi r0, r2, #20, #4 +3: ubfx r2, r0, #24, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + ble 4f + add r2, #3 + bfi r0, r2, #24, #4 +4: ubfx r2, r0, #28, #4 + # If value is less than or equal to 4 skip to end + cmp r2, #4 + ble end_verify_nibbles + add r2, #3 + bfi r0, r2, #28, #4 +end_verify_nibbles: + + + b shift_cycle +encode: + mov r3, #3 +# Encode BCD numbers to ASCII + # Extract ones nibble + ubfx r2, r0, #16, #4 + # Insert ones nibble + bfi r1, r2, #0, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #4, #4 + + # Extract tens nibble + ubfx r2, r0, #20, #4 + # Insert tens nibble + bfi r1, r2, #8, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #12, #4 + + # Extract hundreds nibble + ubfx r2, r0, #24, #4 + # Insert hundreds nibble + bfi r1, r2, #16, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #20, #4 + + # Extract thousands nibble + ubfx r2, r0, #28, #4 + # Insert thousands nibble + bfi r1, r2, #24, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #28, #4 + + b end_ASCII +out_of_range: + # Insert ASCII "Err." + movw r1, #0x722E + movt r1, #0x4572 + +end_ASCII: + # Return value in r0 + mov r0, r1 + pop {r1,r2,r3,pc} + + +.global lcdBusyWait +# Loops until the busy flag is 0 +lcdBusyWait: + + push {r0,r1,r2,r3,lr} + + ldr r1, =GPIOA_BASE + ldr r2, [r1, #GPIO_MODER] + + mov r3, #0 + + orr r2, r2, r3 + + movw r3, 0xFF00 + movt r3, 0x00FF + bic r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + + #Set RS=0, RW=1, E=1 + ldr r2, =GPIOC_BASE + + mov r3, #RS_CLR + str r3, [r2, #GPIO_BSRR] + mov r3, #RW_SET + str r3, [r2, #GPIO_BSRR] + mov r3, #E_SET + str r3, [r2, #GPIO_BSRR] +busy: + #Set E= + mov r3, #E_SET + str r3, [r2, #GPIO_BSRR] + #Set Databus -> R1 + ldr r3, =GPIOA_BASE + ldr r1, [r3, #GPIO_IDR] + #Set E=0 + ldr r2, =GPIOC_BASE + mov r3, #E_CLR + str r3, [r2, #GPIO_BSRR] + + mov r2, #0x0010 + and r1, r2 + lsr r1, #4 + # Are we still busy? + cmp r1, #1 + beq busy + +# Return DB port to original mode + ldr r1, =GPIOA_BASE + ldr r2, [r1, #GPIO_MODER] + + movw r3, 0x5500 + movt r3, 0x0055 + + orr r2,r2, r3 + + movw r3, 0xAA00 + movt r3, 0x00AA + bic r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + + pop {r0,r1,r2,r3,pc} + + +.section .data +numToPrint: + .word 0 diff --git a/lab7interrupts/Src/main.s b/lab7interrupts/Src/main.s new file mode 100644 index 0000000..dc10930 --- /dev/null +++ b/lab7interrupts/Src/main.s @@ -0,0 +1,67 @@ +# main.s +# Trevor Barnes +# CE2801-031 + +.syntax unified +.cpu cortex-m4 +.thumb +.section .text + +.global main +main: + + bl lcdInit + bl KeyInit + bl timerInit + + # Round count + mov r6, #0 +mainLoop: + + add r6, #1 + beq showFastest + + # Start timer + + # Prompt user to push button to start (for random seed) + + # Store random hex value + + # Count down on lcd + + # Print random hex value + + # Start Timer + + # Wait for button push interrupt + + # Compare time with previous time, if faster than store it + + + b mainLoop + +showFastest: + + # Load fastTime + + # Print the fastest time on LCD + + # Wait for button push back to go back to reset round counter and branch back to mainLoop + + mov r6, #0 + + +.global EXTI_BUTTON_PUSH + +.thumb_func +EXTI_BUTTON_PUSH: + + # Compare button pushed value and stored random + + # If they are equal, stop timer else branch past + + bx lr + +.section .data +fastTime: + .word 0 diff --git a/lab7interrupts/Src/timer.s b/lab7interrupts/Src/timer.s new file mode 100644 index 0000000..7b3e94d --- /dev/null +++ b/lab7interrupts/Src/timer.s @@ -0,0 +1,40 @@ +# main.s +# Trevor Barnes +# CE2801-031 +.syntax unified +.cpu cortex-m4 +.thumb +.section .text + + .equ CCMR_OCC1M_PWM, 0x18 + .equ CCMR_OC1PE, 1<<4 + .equ AFRL_TIM3_CH1_EN, 1<<4 + .equ AFRL_OFFSET, 0x20 + .equ CCMR_OFFSET, 0x18 + .equ TIM3_BASE, 0x24 + +.global timerInit +timerInit: + push {r0-r4, lr} + #Alt func low reg for TIM3 + ldr r1, [r0, #AFRL_OFFSET] + bfc r1, #16, #4 + orr r1, r1, #AFRL_TIM3_CH1_EN + str r1, [r0, #AFRL_OFFSET] + + #Enable CCMR1 for preload and set pwm + #Allows for the modification of the pulse + ldr r0, =TIM3_BASE + ldr r1, [r0, #CCMR_OFFSET] + bfc r1, #4, #3 + mov r2, #CCMR_OCC1M_PWM + orr r2, r2, #CCMR_OC1PE + orr r1, r1, r2 + str r1, [r0, #CCMR_OFFSET] + + #Enable CCER to for TIM3 (TIC) + #Every 10 seconds, sample + + + pop {r0, r4} + bx lr diff --git a/lab7interrupts/lab7interrupts Debug.launch b/lab7interrupts/lab7interrupts Debug.launch index 4fcac22..619760c 100644 --- a/lab7interrupts/lab7interrupts Debug.launch +++ b/lab7interrupts/lab7interrupts Debug.launch @@ -59,4 +59,5 @@ + diff --git a/lab8adc/Debug/Src/bad.o b/lab8adc/Debug/Src/bad.o new file mode 100644 index 0000000000000000000000000000000000000000..23088e76da81a60429a5248650f4e64100ff5fab GIT binary patch literal 1864 zcma)6QEv=U6h5=NZCTy5RT5MvN*ZFORgs1Vs;!c!h^j}-?B3Ss>`cwvMMc7sCqKeJ z@a7kI^b@>G#DfQk2MNCK&R#p#17~yYIo~v}6` zQzYBEIz$-&Me%)$Vv{BHKF!6G$C)^c7rXm)VK+2xe$WA$V8 z(E(TwfV(@Pd7Tr`|%+?6g&^GjD$J^z78M_c%#6vQ59K zyvPq`{Z`XkP(f#1maeak&#jD~c4wyCDVduD*tgSI2rtkRF+C##Gm=fGE@x5?(Kb;r_-ad4EF%EvQ+zU4HbLTK=oqA z23#XOH>O5pUmxZySfW3lvD`v@-Z~+Pm-_H(AHLUzANOII(9-t9SfXa@Y8-0WP+Lao zu&q*SSyCGI>q!tL%?$}UYilZ%OzEq!R_P-@qJGI(SHh=Cbh5r4savYODXlQujQp+K zsaiKx)`@f`%_P=g+(|mwa?(=Wo~k%ro?jK?x{b0f=ESQzMRozt;Dh&4;t&r~!pI?- z85KD}xm#q4a!)StEMyS4goQU(!gce^Xh*1#%vVA&^9CTtyV&f*_1k!Hv#qxF14y0b z^1jtl6}gyPEpE%#zPLe_iA!UPV}CaaV^zdqyp|x;`1~M9)uW=3*$yum>Ajkotb;fKuGkYXU_S~d+xc@w+l;)LI~0%s6Z!(sBK1` z)N~{Yl%>mL?U{?KhgoCw@Q?U#gycKN2Op1wL3e*0>>eSz@bh4J(b}iI)gPaG5wyR8 z8U{`9Qyg0vLSJqL7PjrI`xT<9SC`v%5RZ^DxT%>H`LWWJlOK(L`N>g$F+(7KlxuMi z_4S6Hi7;VKq95!Tn8>F8)F&|sS#{O=L@CGd#8?)h%14y z;%G9XpJy)DH6@2xqJ6Ya$ehCbMg|@_p6p<|5lR;_^kex_YdHUq?5YeU*=`V! z?R#~*%FElV*P31u*P1U{2#tKwb$#!3(kp%0-11N$4nTdf=hl{O8HRq%?SydsFO49O zx1=}2-(T{6#&?$}uj1m*l&B7zB(A}98_Zk%S6mS>ItOZ0Z;cg2+IJ6_w?3=vI~a)T z^WODcV>}DiIZ){nc#;)G+V==JS#KBh_LGBOYxS`5#Xc$1t%( rs~+vZ@D<1c^Ihk@JO|I9cLtTZNV>&}B3*9?I2rdHaqo2yq>lRwCM%Ob literal 0 HcmV?d00001 diff --git a/lab8adc/Debug/Src/keypad.o b/lab8adc/Debug/Src/keypad.o new file mode 100644 index 0000000000000000000000000000000000000000..ed2785bf4c5bbdf8b17873ca2a0252cb73ed674f GIT binary patch literal 2804 zcmb7GU2GIp6h1T4-z{ugF!)mw_NU+oVP>~2P}Ib3w_8}C-KNbZn3%M)+kw_CySO_Q zDnAlqjPb!3V~oBS6MfOd#218wlm=JiB1Oo1g2_`14-?=lhdw~b_wD*4B zIp@3Q&b@c$X5UC199I;Dd{aoLrbpD@Au_E)0(9Cyz0`g#n+_C4t1W6EKa;+)P`cNx zrhd;(jou>l%3S+u+c~Np{WDV~E4uf#>yZfoJqCfv5F$fhToM;Bmda)-m3;8a#(5 zqD(cQ)bIaY=SKSdwP-r9kf~<1Jk}7H3!H`qTvG$fU8kzsfBPwj)v)%nnnLRMlj(O} z=1QB~Q8f3+sE+YWwN=cZjCY+{$GShh8j*Au!_{S7$ElH98UTBYGqji-jZR|ND!{NvlDS-g%J)w(Qr=fj* zCbU!gL@`tq4my<8_<&SP!BH(3G=EFZHzbDjO6n*caRq+}O$kgguSk8}CJk z{P7%c_rz>$N%A=}Td~U(GiQ~HcEu^1W2OA^QM>3=%w%d{I2JdLm&%38F)MGIOIB{! zn$MeKc5e9y?VZeq5;LIzV=!jKDAAAVmTl!0NqGviHCZY<_K6)6L)5mueWFthwDmPs z#82|5X%Bp1I3xVYrcsNl;P*jTtsVfzTnBxvz6pJcV!iKypOpL$z%eA-RZsIBRMX|(-iN0femZ-|OjVOXG;P`$I=YVR6Xb^c7oKHxNy5EqBD}wisGG|PP7p;ww`wPZtDi;@vP%70^1~f|91SClal!^jz#GIO&5cX$EaQnuGi~v2EX15 z66g4rNc_meGhfGds=SU7tb?DM*TLuNuj3%NKL(Ue-~qNW@yyTdgD=Scz|bIlkG5?Jnvb|%kLx4%QuTZ?+Q52%lpXo3+lb( zQqgmc+goTji(?{)E)Iv!(l^$yF``7n4nenu0MD(X@x09W+5EEwB^{glD-+NBdVH3$ O?tQG|Ltg~+b^ib(U8oKK literal 0 HcmV?d00001 diff --git a/lab8adc/Debug/Src/lcd.o b/lab8adc/Debug/Src/lcd.o new file mode 100644 index 0000000000000000000000000000000000000000..49bf40d9be0fa064d4eb1c516058f77a2d6163d1 GIT binary patch literal 3676 zcma)9ZD<_F8J^ue%Zg;*Nl99#Rj}?ujwGAxo>W8C5Xyb%BulYA)@&afdU}}0>yy_3~7s@g}_0>?VX8A0@*(A z?1$DaEuGWM`#kU0yt6Yqi=HVRpA!Uu1x;WRY?m?i)*!d+Im*QZ8)ic+{?`x6Vl7?@jpa(0`}iVxB&huaFN$j?({+a zGPFy`U+$34PsoSQA#I7!k^i%yPK4j9j=+BH2tv7ibtu;s7*;Ce+YEkduC$dv3=^L{ z!zN?b-JKu0q9ceqpZ3oswnjHuC;hL-7l+Q4J3|6yq$bbw|AH_XuZKyt(TahXk^XTdIuh*NUb-b)_S8) zNjK-aa_YUV`Dp)K98ckXoG3gAewxakGi$r+`lsnYaE@;AbL5>MJ|-UdMm-Vk{E#TL zMXYRiSeX3mdjJ1Czlkk2Bjy-G??JxNiD}g}VhQJ`z6^zh{r`Gx!?EeTKNVnE;OaW6$nu9QS9$!v#9-HP7yA9QS39 z`=h{KyMwcLD;6I4)!{Bd5xB`AF!jV2~65AVM0#amWJihx5d3+y ze+l?GfBlr7Ef|gzg$-M0M$4`m=c=aKJg+nB zLj9awt!>mAI@6mqW0k~e^^$JZ&uvtjbxmvN7FT&0wU)KP##ZUGw9u^EtYyvW4RwR9 z`4akKLsw05IA*NrB(Z=c!>aR=L3uqD8&#brE2k%0YlMp}(=yECMokTz3z%<3#YF6R zoRa}uOn>s_-$*KqedhD8d>O}flHWm+u**KDGe-O|U%o+d8t;YA-}fb5r})6|`%;9i z4|&B2#^{ublis~X`g@5((!C}g_P-~PNuTq$@m+r=TN`V(szKVOCocrZ)EhFs0ydLZ zX*XrfvY1TDRr-Wf8+B}Kgx8zr47hTes%fTvDQZ>u&LV;5fH|0)Up^tLHlDfGvaz54 zZySXpmdKw0#T-SCej|e`bp(34zjNr+F5vQBhm50BJo(Xmf5_*-7i$I}$N>}gC3ys$ z`~$y-13*SJ%1Mpt2{3W;dpM#9AbtCy_1!>yl%MLO+bpPW7C49jWS3!hfPmiuTMj&$ z?=hX3+ypJKX;1{1Y;VIaNx*MZE4A;VN9Vl{|69@hN%NwF za9;XeQa)NYwHwIym5`&C~L3Cru*q!fpkNO77UcNlYA%nYj+6 zAex}6NGwVi!L3y=`%59pR1J6NGuAW zcNbT$Ynnz%G#aNSBiif?BJEcLGfwAdko>>?_LW{<)^@Gqgr*g&vi0ZTJ67@HvbM8v ztS9n+pziI|^3jfUtZ7HLt=)~|E_mBCt3b#7Pq;$w`1!~E&@Sizv<=z={ry+{;f0{* zp>=dy+Zn_NCy(_X=pp^P-Z-d=WY*rRmPK-2D`u1Q0fGriajTv5^%7>zn*h}e!_2w`qCLA*F}!eZ+7k$pKBSrE z)bOx5%D=;A&;Xk$b8>jJ`I8z6b4JEeP0{b&?YgF)HC|36Fxm)@%r&X4vH6bzPSgjx z0@V(+K^o{7)Xr&o-%#IJ-&5`IJ_n6@0)?V_G7G0~Mzc@Pnm0Y+dS>2sE5ehmx!@FP zd!iyeGrc%9Gcjqt>$tmK)h-CLZ0Bd}V!>Px`Pw!ut=~*q+2oWlJz-3c#d~E7J6|I0 zS-|$R<4W<~m9?wX(c8IpCeht7)L046qgC`%Ul}$NKXK8iEzICE3#9IM!%l<*ZQZ|s zb|J=_yU5PE{}P+VEb9I=^R~ns8;-vgf~c+gyvt8Fe04v=7~e|hs{6M>5Vdt5Uj=nF ze06^pIJ_t9tost}D#JkP{`(3BR-+GL=NmqaJ_atv_?N(UV*D#$?h}eeUjuxkC>HuH z@ckJ73HXy3{~7qx82=6UvlxHU!cV|IkHs4hK&N)py>r6FuL;$6C1A!YPwZ=jN^KVgRh=`N_rgOo%t< zrx-77u58Tb7T3vINKdj29YG(4xwVaj#V{?mv5*PVf+#xVvVkL)&P;J2mwh8M9RMVz zWbnYOI!=}FUhU(KmYhmJ^R=xl;gTn$de|7x2i|Pyjv(o5Z
XjCkD)v|pM21PL= zyjod$Tv3)PHK*pSIYmKX#b!8Fq*C-|W`!hA+OAylwu2c_xlmlGlq9__4gxDnd%{(o zB_ZKock*SYz+XR6_eESWw&UU5=)OdBo%v;=N!SGToKHG2Ow_{`mv$iX^WEe4Gi*nr zw+%KK@t_}w$|u7+*pqf1R=T0xQOFf#0}qlUqi9Q;jJ)TO;W{DVV3A+7T)9*c@Hcp= zvgM#l5VP}nSM0~5wrf|m1qy`;7>f)mvu4;*x}|(gBJ_Xd1temrjjx{HjYqN0yoW49 z&@<3ED9b7~Aqm?L<^G(FA%jR%Yz92OjxyH4^Wb&xxvF*Wd#U;W(tVH@8APID%i!^P5=D3nuE%v%y|;i> zA3%Bl!rz$^6?+>Fg*o;kNRmM$T$5!B8Xxxo#^vvk$K@AFje7vh^>`myegSzigh9(O z)_YK#MKy4uc?BEJXQ_m9SlFtwV15ha8z_&>`@`ch=DDe}1*9JQlQ5@>fGarIlJ`B< L@dbB?MCJVhHVJ5T literal 0 HcmV?d00001 diff --git a/lab8adc/Debug/Src/subdir.mk b/lab8adc/Debug/Src/subdir.mk index 5cbd011..c8f9dc1 100644 --- a/lab8adc/Debug/Src/subdir.mk +++ b/lab8adc/Debug/Src/subdir.mk @@ -4,10 +4,16 @@ # Add inputs and outputs from these tool invocations to the build variables S_SRCS += \ +../Src/delay.s \ +../Src/keypad.s \ +../Src/lcd.s \ ../Src/main.s \ ../Src/timer.s OBJS += \ +./Src/delay.o \ +./Src/keypad.o \ +./Src/lcd.o \ ./Src/main.o \ ./Src/timer.o diff --git a/lab8adc/Debug/Src/timer.o b/lab8adc/Debug/Src/timer.o new file mode 100644 index 0000000000000000000000000000000000000000..3136c865af8decd6b994523b16b6d657b35812ff GIT binary patch literal 1628 zcma)6%}x_h6h3!KD=5@fTo5s_kb=bMObaZCaltTc5v3F164+(LPP2E1d~trIS+h--jB4|gG-5B?^9oKeT%`%;q?Rt(@Xx9&$cFS`$ zqd32m%WEIn&O7(OtlQeYX)T$%b**4qhkLZTv6IoOnR#^~r{+k{BDrasR)fS1h;gIs zc=pk~@**Y1E|o`=%ZbVUdAN}aD0c2ea6jQmq-zWs&M_es)a|7pGY8b|O+tv`yTF;i zh_%~W!WxY)0CVdBb$c69^!M`}$0%{m8l&L>JT!o>4B(LgJW5X@niQYTFv?rCieco- zwauqx3G!F?RM@dpJOV~3Z=F=-U65lWTlj?qKdZvZlbAtVil<@W*sk^3U zl4`jwsgAv`?(*Q&_8TobiW{xhZMgb2)3O}|81pLb{2Ok*&(a-mog^;9;XO$;p zIn)m!G3Un<5l`9_hC=b!WO9mss^kYx-+`T^!ykR)w< z4^n2^FK~v1khnLd=iq4F0_yV2a9!5Rx=qNOkMDcqt5^U literal 0 HcmV?d00001 diff --git a/lab8adc/Debug/lab8adc.elf b/lab8adc/Debug/lab8adc.elf new file mode 100644 index 0000000000000000000000000000000000000000..af5110215a7b9e66e57e44bb382026e5bd2bf981 GIT binary patch literal 142540 zcmeI24{#h;eaGM4$+qG@vYe2_;50t{ajZD_PAB<~oQA1R|12ezCF_r!rlzaYX>AKh zcjE4pSj8dEkWd)Xz=VXtbQ(fP7@7ht8AK?F!E{2Kra}yQO_chh# zm8nIWR7^!-yHs7G?aDot!=-!#N7_QlwxoWzf*h~&i%z%IFB z^zB;nKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wnN1Odt}wXNf9*{&n_nMSLI0_tXC$&pwymwe4n{H%p8C zeAla-S+t|(VB_DFU3bwJ%R2w&v^s3n)J#?$DN`yY@<}6EH`O5M8=d6g@@XO=(%~?v-{o?rQj*25{rsw20<~`Jr zB{PFvOUGJf%OXoN{asHU$emspX+JgC+j3Gxo*Y_oWbureojBVwtE{7^qZh8+@CU~% zM1QI7_x1V3x~=;Bv${roK2ev@=V$7!(&wk^*6Z_+>T2})2X$-p`D=A+^!Z5LrTYA6 z-9`HRNZm?(esA3}eZIMFi9WxlE~?Kr)s>EwcPu_qF@qYZp4p{V>CDGUr8A!^sk$@A zYPyyl=$RdiX3&PELrZUl57N=d(y3*KX0Q6i@d~u2bmqq;;SuS0Yu5+%N~BBNQflZm zrOH8c5w75rtd3=emW$uZ4>cQpC?nB*zg_SvKh%6Os=&D^(yYoO&7IOWUwTY4w!qkD z{S`!OKc)JQo*Im{oQy`U{gtXYdg`HQHPTCm9)`8~l!_ibb+NX(>64zd;<3r?%V+-T z+Me0Ng^#AuN_{+>LHcEVJZY`E@46dCbElVG*mBZ}+>pLke8oPy4()mM-0~xr&wS!q zc%QfYM*`*V43vNR+~r52Ao&N**||SiukV2hr|ch_%QM!$P@oty}aAcMc^mBDI>n;dLZXr8BpcBA63rPLy}7JhB!eyZY?)*H#W;-dMOAuJTl= z41F%CJ?CN_`PeS%9HAD9;=u3N{hZppkA?W;qUOV~JiJsYLRH6)@j#`=1 zOIAsQ;nT~iFwT=w8c|c3)0gg&lEbIhq%)`2zB~Ht_EYhy$4}*Vm1EYgoViSoa-~O8 z&#zSB=&6!7nlAOn(aU-qxg$s)S6=tl(UtQ(Um3AZM$ocVtE?+uI#&LM<9DSy{*^li zuuR2DXMS?7bmoay)$HE08#=AA6nfIiq{dS(AAWagWPPWFnJauO%NnZfy!Ai|Bjnbh z)L74KIdaRaR7TCNJX<>R$g3;rE>}A-OV}I#HbmkIW@^I?bA?v^@T;Y{t zQLK3C_4k44Nhj8yo|qhWVqMvylfN-N9;-`k+!iZ1nOt_HaOKsgxy<7->@ll(?Tq!V z99X9?UaaAs*;;ig=Gfv@J+rGLEm(U~;B#ww6=tVWD>`rQSkYP0RdKDVi9Gwg>mTne zYkYk59WDR)-DTG<+o5W#XD=EmYq-DVmG8=0uVz=FZ4;$)CzOiBaMhTs`y*I8|C+qfi(|Qs&x;xTyT8Z&gDDQ?CP_A&Z6U!M|PiGSO4+t*5;Q^_^DGT_9BkI z4hewsQ4#`DZ+c$Qr#VeL{Ul3Wk_`PPPxR+AN{u+<>FIbu@(?dl7E$HVN~@}-A(^PEcK@rcsD`MCSSbI`5=&hn z$MZ!TbEYTLBMTv~k&um6b#+yurm7~9NL1HV*Votk(dRGoW{H~W=+anKeIij`RZ~@k zFnX_wUJyfmbs|w!RlUwIAVd5;NB11PARhhndt;lUpRnSQ2%6J`W=B-b8#QMRD;Gy0(Dwn3u^eQ!Jl_=w0V7vn_Hd0*{u?4Tw7D0kW%KJ6t%ue zj&*QE8lknv`s(^Bx2&Y9k?8`^C%I7h{jM(ifiquGUl@W5ig zTVo|~Q5g#ON7dwjbfPwq#O3DyYOCG+>UFgXTlBVD%CA8!HtW9IuCM=wgS$97;p7)8 za9{~4u*#BwQww0&uBg(Z`mheQ?R-rsrt`(ANu>&I!Y&ji8XNX)+O#F_6b~+hzgxmz zg}H-nl7sv2wh7duyJHQB1PCT{^)cC=lLF5vOV^=V*8vArrstx}M4390vl9EY*sa5^ z*ISS-v-)rp4;hr#BOUgt(_U4GCLTin!0UKjqrKi4QA&HDN>i`n)vLXphL=FR3;X*5 zUYA2f)QI+~i{gasF6;|+vR0|e#jC6ft!TxXiggtiErRvGC2w%CaRsF=!*x(?Y-R2d z#F})Xl-w3s!t|v z%H_ujlj)3;7*7v3rAIP}HfMNhzuLZYFqZ0%HN+e1r`BmGyj=Su6!kfpQ@@JJu zcSa=6H#1Q05;m#7v`g9~`%kb-o@~ppi;txuhboq@P^)#WQZK-#6X{e%$2;j*QTG<69=F`sQLooK%YE&3+TMBX_Q!&j5vkOIUL4X(v>uu-Ki`Cy7^3O| zZAVm3FVz~t)62B>4^iE6UrG5D3j(RAst9SBOAA|6RW1mmqH0x0Ul`ICd4$~TGBsDK zLQ?w0&57u-_*p~O!EnE!H$#8b(6VBF+0gCKPa1j`wDdPl*dj`iVa8_!mw)_33P^|}%>uV_{^?Si6 z|1IdBhT@+!>`%dt#>Lz*>&ExTk5Wt2bFll`f|mOE<3s8bbt{Hk$#?rh)_t9U`mcl? zi@>~I9r9l%x+&7^`p=c((DkmsajtYVG_L1ubEOXPFOM|48FQswqUX1{(q3q}x47F} z$$?%NWpkx0w9HrEJ`L^9SGnH%pkMOM(C>$S(a;}+{+XfgfIea94?{m==)0hwHuOEv zKQi>kp?_fLzkrsN)ZOMv_d*}>CF*lO^rMFU4D=(0ehB)#hW-Nd&4zv$`aOpJGW1P` zu0qJXy>CKgv zx@j+GuCz*0^8j{h-!hZUbLXMLpK{~0F@GkzY0f16(b{q>K~3nAu8$3%F&BmMc5=(0#Nj@aIO{rC^@k6F#)E&eYq z1lRgyXmkAh26~hBb^RA%{K%7+ySeM5JYTswqL#z{6GLANU2fb@YN0PT^i|N+hTaN& zg`wM_HyFAXI&SFw&<%#Z5qgWEr9Vvle%QB$?0XG;7wrBf{dF(2xt@L=+FXCX64L(! z9rFXA{P#oUe+*q~*kwM*^QW5?Q9py--~9WJJa_qaX-~|%|H{ZX^*a9k{aNf1{~E*p zJKoHccz*m%hF$!d4K05DCjJlMk!)z*zC=9=?cYz8TCDyhpqHqB59q~ueGRX-h#zyW zae=lY?X}lZXHounv|om4HQKWRkASAeTny-BNVkXdZs^Or`CN&3PRKq5?cXoNesjqF zk&ym$NIx3V-wx^Lq5bu;5|YA$Z-+EKSIpmErTmM~7=kfSz&u*2PKW%Lqvy@`uMKI8 z?SQ=%`jq!PCh@yNb|<8#L;3?D{mGDiIHdm}q@RH{+w*g1Y%w`h;{J0wAlduG5TjLWWNR4?C(Dd*&l@dDdtxv>U$yT^GL}4WJv!o zq<;>b^v0i*KNYf<;b8+X@bC8bQs{edy(Vax&#R%$_P#x&-x1P-A?-lF-QYJ7vL6oV zyF>bOA^mtre;*o^$G=QTRLe(B@1863H3==Bza&e>Lkime zydk;^+Kl(dAw3b&w?q5)6Dj}Uko}V({cuSCeMtW>q+bka`S4Ng-S6dk%c0Hs#zMM2 zq`N};kD&eM35hopvL6iT4~6ufhxBKm-(if;FNEw*g!EG({Q~qM<9_k$kbMc3`tFc^Af(kBzwgSa+M?Q#%T2cCCa2rd z#dKG8)XnG^9Us5J$>)X(1?|w0%R4tZdDWHOHwquemQt#AL}l{DLUC%}zIaC2c6+DY z(UTlPHRA)=FeP^FeZ}08uX>H%B^x1Whq}|=q*50Rc?VdI-(d8$42YdZw zOMhRV8cV9N1~t~G#x|+3&1!6m8r!PIn$*}fnCh{^o`gdZ9!a<);gf`u{!*$xlg>)A z^*}mb(6yG=oNkq+Dk-maDX#(js&9|#>$m&c2jtYc0}a{Zsy$k@YtgRLy}5j`-;pm0 z_T<)lE{kWxD97 z+*Hxd?X&ag?0!cT4vg+A+L`IhxTBnGCO0Cd5gUVObl zUMyfhXN#lRsoYedTiWSHTrh)@jtkhjh3@<4oN8_D?z4MZTa(>(@1Aa7CVSges-tg* zJ%<#QsbskB+tmuUtzq)&CTr_Xth)0U~G5w?dnWtN5(P2+piz!YA`b}c$#c1euhtf zZ(CP~-FMK;(_g}L=d!jR2y2j@`u#;L0Q*&cZ`UT%|2k*7OYS2GpA3cHHI*KLyXoE5 zoocWV$w^OaHuF2t@f~SQuldWuGx>U+cK2u&`RUA;a(Tct|Dv#d8g5H}ejOtsaHv$3_{1M_#N~0Np zjDraFTd0iF&HHd(L8EDiu z&?95=4pE`dSItn zt!`(cJDtUBonQUramrj00%Y{~3O1~Nck6svscEoFVo0iZ;2}!IG0eP=hbq4C2~)-0!m?1t z?J4|B#XcZQg4^FZX1a)no#Ck>KC{F}azIal{0ql6SG4Hn* z_4DhFY@HT8gk64hBJt#Vn4$Cdjl(W=6F+P*A!)|*+abS_l2_K^2YXD~E5DEOH@}R0 zr|$d3;1?4v24_Fs2jPcUlMCe|#_t~%_Hnall@=4 zv(CifEAWf?0%t$o38cl}-=2cs+kJtv&sluDF|Vy: + 80001c4: b510 push {r4, lr} + 80001c6: 4c05 ldr r4, [pc, #20] ; (80001dc <__do_global_dtors_aux+0x18>) + 80001c8: 7823 ldrb r3, [r4, #0] + 80001ca: b933 cbnz r3, 80001da <__do_global_dtors_aux+0x16> + 80001cc: 4b04 ldr r3, [pc, #16] ; (80001e0 <__do_global_dtors_aux+0x1c>) + 80001ce: b113 cbz r3, 80001d6 <__do_global_dtors_aux+0x12> + 80001d0: 4804 ldr r0, [pc, #16] ; (80001e4 <__do_global_dtors_aux+0x20>) + 80001d2: f3af 8000 nop.w + 80001d6: 2301 movs r3, #1 + 80001d8: 7023 strb r3, [r4, #0] + 80001da: bd10 pop {r4, pc} + 80001dc: 20000004 .word 0x20000004 + 80001e0: 00000000 .word 0x00000000 + 80001e4: 08000830 .word 0x08000830 + +080001e8 : + 80001e8: b508 push {r3, lr} + 80001ea: 4b03 ldr r3, [pc, #12] ; (80001f8 ) + 80001ec: b11b cbz r3, 80001f6 + 80001ee: 4903 ldr r1, [pc, #12] ; (80001fc ) + 80001f0: 4803 ldr r0, [pc, #12] ; (8000200 ) + 80001f2: f3af 8000 nop.w + 80001f6: bd08 pop {r3, pc} + 80001f8: 00000000 .word 0x00000000 + 80001fc: 20000008 .word 0x20000008 + 8000200: 08000830 .word 0x08000830 + +08000204 : +# A subroutine to create a delay of a certain number of milliseconds +# Input: +# r0: Length of delay (ms) +msDelay: + + push {r1,r2,r3,lr} + 8000204: b50e push {r1, r2, r3, lr} + mov r3,r0 + 8000206: 4603 mov r3, r0 + +08000208 : +ms_delay: + # 250 iterations = 1/16 of a millisecond + mov r2, #0x10 + 8000208: f04f 0210 mov.w r2, #16 +# Loop 16 times +1: + # 250 + mov r1, #0xFA + 800020c: f04f 01fa mov.w r1, #250 ; 0xfa +# Loop 250 times +2: + sub r1, #1 + 8000210: f1a1 0101 sub.w r1, r1, #1 + cmp r1, #0 + 8000214: 2900 cmp r1, #0 + bne 2b + 8000216: d1fb bne.n 8000210 + + sub r2, #1 + 8000218: f1a2 0201 sub.w r2, r2, #1 + cmp r2, #0 + 800021c: 2a00 cmp r2, #0 + bne 1b + 800021e: d1f5 bne.n 800020c + + sub r0, #1 + 8000220: f1a0 0001 sub.w r0, r0, #1 + cmp r0, #0 + 8000224: 2800 cmp r0, #0 + bne ms_delay + 8000226: d1ef bne.n 8000208 + + mov r0,r3 + 8000228: 4618 mov r0, r3 + pop {r1,r2,r3,pc} + 800022a: bd0e pop {r1, r2, r3, pc} + +0800022c : + +.global usDelay +# about r1 mircoseonds +usDelay: + # stack + push {lr} + 800022c: b500 push {lr} + + lsl r1, r1, #3 + 800022e: ea4f 01c1 mov.w r1, r1, lsl #3 + +1: + sub r1, r1, #1 + 8000232: f1a1 0101 sub.w r1, r1, #1 + cmp r1, #0 + 8000236: 2900 cmp r1, #0 + bne 1b + 8000238: d1fb bne.n 8000232 + + # return + pop {pc} + 800023a: bd00 pop {pc} + +0800023c : +# Initialize the keypad GPIO port.   +# Depending on your scanning algorithm, +# there may not be any work to do in this method +KeyInit: + + push {r0,r1,r2,lr} + 800023c: b507 push {r0, r1, r2, lr} + + ldr r1, =RCC_BASE + 800023e: 4955 ldr r1, [pc, #340] ; (8000394 ) + + ldr r2, [r1, #RCC_AHB1ENR] + 8000240: 6b0a ldr r2, [r1, #48] ; 0x30 + orr r2, r2, #RCC_GPIOCEN + 8000242: f042 0204 orr.w r2, r2, #4 + str r2, [r1, #RCC_AHB1ENR] + 8000246: 630a str r2, [r1, #48] ; 0x30 + + # Read current PUPDR state + ldr r1, =GPIOC_BASE + 8000248: 4953 ldr r1, [pc, #332] ; (8000398 ) + ldr r2, [r1, #GPIO_PUPDR] + 800024a: 68ca ldr r2, [r1, #12] + + # Modify and write rows and columns to be "Pull-Up" + bfc r2, #0, #16 + 800024c: f36f 020f bfc r2, #0, #16 + ldr r0, =0x5555 + 8000250: f245 5055 movw r0, #21845 ; 0x5555 + orr r2, r2, r0 + 8000254: ea42 0200 orr.w r2, r2, r0 + str r2, [r1, #GPIO_PUPDR] + 8000258: 60ca str r2, [r1, #12] + + pop {r0,r1,r2,pc} + 800025a: bd07 pop {r0, r1, r2, pc} + +0800025c : +# Returns in r0 a numeric code representing +# the button on the keypad that was pressed (1 to 16), +# or 0 if no button is pressed +KeyGetKeyNoblock: + + push {r1,r2,lr} + 800025c: b506 push {r1, r2, lr} + + bl keypadScan + 800025e: f000 f86d bl 800033c + + mov r1, #0 + 8000262: f04f 0100 mov.w r1, #0 + + ubfx r2, r0, #4, #4 + 8000266: f3c0 1203 ubfx r2, r0, #4, #4 + + cmp r2, #0xF + 800026a: 2a0f cmp r2, #15 + beq 1f + 800026c: d03f beq.n 80002ee + + add r1, #1 + 800026e: f101 0101 add.w r1, r1, #1 + cmp r0, #k1 + 8000272: 28ee cmp r0, #238 ; 0xee + beq 1f + 8000274: d03b beq.n 80002ee + + add r1, #1 + 8000276: f101 0101 add.w r1, r1, #1 + cmp r0, #k2 + 800027a: 28ed cmp r0, #237 ; 0xed + beq 1f + 800027c: d037 beq.n 80002ee + + add r1, #1 + 800027e: f101 0101 add.w r1, r1, #1 + cmp r0, #k3 + 8000282: 28eb cmp r0, #235 ; 0xeb + beq 1f + 8000284: d033 beq.n 80002ee + + add r1, #1 + 8000286: f101 0101 add.w r1, r1, #1 + cmp r0, #k4 + 800028a: 28e7 cmp r0, #231 ; 0xe7 + beq 1f + 800028c: d02f beq.n 80002ee + + add r1, #1 + 800028e: f101 0101 add.w r1, r1, #1 + cmp r0, #k5 + 8000292: 28de cmp r0, #222 ; 0xde + beq 1f + 8000294: d02b beq.n 80002ee + + add r1, #1 + 8000296: f101 0101 add.w r1, r1, #1 + cmp r0, #k6 + 800029a: 28dd cmp r0, #221 ; 0xdd + beq 1f + 800029c: d027 beq.n 80002ee + + add r1, #1 + 800029e: f101 0101 add.w r1, r1, #1 + cmp r0, #k7 + 80002a2: 28db cmp r0, #219 ; 0xdb + beq 1f + 80002a4: d023 beq.n 80002ee + + add r1, #1 + 80002a6: f101 0101 add.w r1, r1, #1 + cmp r0, #k8 + 80002aa: 28d7 cmp r0, #215 ; 0xd7 + beq 1f + 80002ac: d01f beq.n 80002ee + + add r1, #1 + 80002ae: f101 0101 add.w r1, r1, #1 + cmp r0, #k9 + 80002b2: 28be cmp r0, #190 ; 0xbe + beq 1f + 80002b4: d01b beq.n 80002ee + + add r1, #1 + 80002b6: f101 0101 add.w r1, r1, #1 + cmp r0, #k10 + 80002ba: 28bd cmp r0, #189 ; 0xbd + beq 1f + 80002bc: d017 beq.n 80002ee + + add r1, #1 + 80002be: f101 0101 add.w r1, r1, #1 + cmp r0, #k11 + 80002c2: 28bb cmp r0, #187 ; 0xbb + beq 1f + 80002c4: d013 beq.n 80002ee + + add r1, #1 + 80002c6: f101 0101 add.w r1, r1, #1 + cmp r0, #k12 + 80002ca: 28b7 cmp r0, #183 ; 0xb7 + beq 1f + 80002cc: d00f beq.n 80002ee + + add r1, #1 + 80002ce: f101 0101 add.w r1, r1, #1 + cmp r0, #k13 + 80002d2: 287e cmp r0, #126 ; 0x7e + beq 1f + 80002d4: d00b beq.n 80002ee + + add r1, #1 + 80002d6: f101 0101 add.w r1, r1, #1 + cmp r0, #k14 + 80002da: 287d cmp r0, #125 ; 0x7d + beq 1f + 80002dc: d007 beq.n 80002ee + + add r1, #1 + 80002de: f101 0101 add.w r1, r1, #1 + cmp r0, #k15 + 80002e2: 287b cmp r0, #123 ; 0x7b + beq 1f + 80002e4: d003 beq.n 80002ee + + add r1, #1 + 80002e6: f101 0101 add.w r1, r1, #1 + cmp r0, #k16 + 80002ea: 2877 cmp r0, #119 ; 0x77 + beq 1f + 80002ec: d0ff beq.n 80002ee + +1: + mov r0, r1 + 80002ee: 4608 mov r0, r1 + + pop {r1,r2,pc} + 80002f0: bd06 pop {r1, r2, pc} + +080002f2 : +# waits until a key is pressed and then returns the key code.   +# Per discussion in lecture, you may wish to return after said key +# is released +KeyGetKey: + + push {r1,r2,r3,lr} + 80002f2: b50e push {r1, r2, r3, lr} + mov r0, #0 + 80002f4: f04f 0000 mov.w r0, #0 +1: + mov r1, #10 + 80002f8: f04f 010a mov.w r1, #10 + bl usDelay + 80002fc: f7ff ff96 bl 800022c + bl KeyGetKeyNoblock + 8000300: f7ff ffac bl 800025c + + cmp r0, #0 + 8000304: 2800 cmp r0, #0 + beq 1b + 8000306: d0f7 beq.n 80002f8 +2: +# Row = Input | Col = Output + ldr r1, =GPIOC_BASE + 8000308: 4923 ldr r1, [pc, #140] ; (8000398 ) + ldr r2, [r1, #GPIO_MODER] + 800030a: 680a ldr r2, [r1, #0] + mov r3, #0x0055 + 800030c: f04f 0355 mov.w r3, #85 ; 0x55 + bfi r2, r3, #0, #16 + 8000310: f363 020f bfi r2, r3, #0, #16 + str r2, [r1, #GPIO_MODER] + 8000314: 600a str r2, [r1, #0] +# "0000" -> ODR (Col) + ldrb r2, [r1, #GPIO_ODR] + 8000316: 7d0a ldrb r2, [r1, #20] + mov r3, #0x0 + 8000318: f04f 0300 mov.w r3, #0 + bfi r2, r3, #0, #4 + 800031c: f363 0203 bfi r2, r3, #0, #4 + strb r2, [r1, #GPIO_ODR] + 8000320: 750a strb r2, [r1, #20] +# Store input data in r3 + ldrb r3, [r1, #GPIO_IDR] + 8000322: 7c0b ldrb r3, [r1, #16] + cmp r3, #0xF0 + 8000324: 2bf0 cmp r3, #240 ; 0xf0 + bne 2b + 8000326: d1ef bne.n 8000308 + @ ldr r2, [r1, #GPIO_MODER] + @ mov r3, #0x0000 + @ bfi r2, r3, #0, #16 + @ str r2, [r1, #GPIO_MODER] + + pop {r1,r2,r3,pc} + 8000328: bd0e pop {r1, r2, r3, pc} + +0800032a : +# to the key press.  +# This method blocks. You should use a data structure in .rodata +# to map keys to characters +KeyGetChar: + + push {r1,r2,lr} + 800032a: b506 push {r1, r2, lr} + + bl KeyGetKey + 800032c: f7ff ffe1 bl 80002f2 + sub r0, #1 + 8000330: f1a0 0001 sub.w r0, r0, #1 + mov r2, r0 + 8000334: 4602 mov r2, r0 + ldr r1, =keyChars + 8000336: 4919 ldr r1, [pc, #100] ; (800039c ) + ldrb r0, [r1, r2] + 8000338: 5c88 ldrb r0, [r1, r2] + + pop {r1,r2,pc} + 800033a: bd06 pop {r1, r2, pc} + +0800033c : + +# Waits for input on keypad and returns that value in r0 +keypadScan: + + push {r1,r2,r3,lr} + 800033c: b50e push {r1, r2, r3, lr} +2: +# Row = Input | Col = Output + ldr r1, =GPIOC_BASE + 800033e: 4916 ldr r1, [pc, #88] ; (8000398 ) + ldr r2, [r1, #GPIO_MODER] + 8000340: 680a ldr r2, [r1, #0] + mov r0, #0x0055 + 8000342: f04f 0055 mov.w r0, #85 ; 0x55 + bfi r2, r0, #0, #16 + 8000346: f360 020f bfi r2, r0, #0, #16 + str r2, [r1, #GPIO_MODER] + 800034a: 600a str r2, [r1, #0] +# "0000" -> ODR (Col) + ldrb r2, [r1, #GPIO_ODR] + 800034c: 7d0a ldrb r2, [r1, #20] + mov r3, #0x0 + 800034e: f04f 0300 mov.w r3, #0 + bfi r2, r3, #0, #4 + 8000352: f363 0203 bfi r2, r3, #0, #4 + strb r2, [r1, #GPIO_ODR] + 8000356: 750a strb r2, [r1, #20] +# Store input data in r3 + mov r0, r1 + 8000358: 4608 mov r0, r1 + mov r1, #5 + 800035a: f04f 0105 mov.w r1, #5 + bl usDelay + 800035e: f7ff ff65 bl 800022c + mov r1, r0 + 8000362: 4601 mov r1, r0 + ldrb r3, [r1, #GPIO_IDR] + 8000364: 7c0b ldrb r3, [r1, #16] +# orr r2, r2, r3 +# strb r2, [r1, #GPIO_ODR] +# Delay + +# Row = Output | Col = Input + ldr r1, =GPIOC_BASE + 8000366: 490c ldr r1, [pc, #48] ; (8000398 ) + ldr r2, [r1, #GPIO_MODER] + 8000368: 680a ldr r2, [r1, #0] + mov r0, #0x5500 + 800036a: f44f 40aa mov.w r0, #21760 ; 0x5500 + bfi r2, r0, #0, #16 + 800036e: f360 020f bfi r2, r0, #0, #16 + str r2, [r1, #GPIO_MODER] + 8000372: 600a str r2, [r1, #0] +# "0000" -> ODR (Row) + ldrb r2, [r1, #GPIO_ODR] + 8000374: 7d0a ldrb r2, [r1, #20] + mov r0, #0x0 + 8000376: f04f 0000 mov.w r0, #0 + bfi r2, r0, #0, #4 + 800037a: f360 0203 bfi r2, r0, #0, #4 + strb r2, [r1, #GPIO_ODR] + 800037e: 750a strb r2, [r1, #20] + mov r0, r1 + 8000380: 4608 mov r0, r1 + mov r1, #5 + 8000382: f04f 0105 mov.w r1, #5 + bl usDelay + 8000386: f7ff ff51 bl 800022c + mov r1, r0 + 800038a: 4601 mov r1, r0 +# Read IDR (Row & Col) + ldrb r0, [r1, #GPIO_IDR] + 800038c: 7c08 ldrb r0, [r1, #16] + orr r0, r0, r3 + 800038e: ea40 0003 orr.w r0, r0, r3 + @ ldr r2, [r1, #GPIO_MODER] + @ mov r3, #0x0000 + @ bfi r2, r3, #0, #16 + @ str r2, [r1, #GPIO_MODER] +1: + pop {r1,r2,r3,pc} + 8000392: bd0e pop {r1, r2, r3, pc} + ldr r1, =RCC_BASE + 8000394: 40023800 .word 0x40023800 + ldr r1, =GPIOC_BASE + 8000398: 40020800 .word 0x40020800 + ldr r1, =keyChars + 800039c: 08000848 .word 0x08000848 + +080003a0 : +#Globally exposed functions +.global lcdInit + +#Local helper function +PortSetup: + push {r1,r2,r3} + 80003a0: b40e push {r1, r2, r3} + #Turn on Ports in RCC + ldr r1, =RCC_BASE + 80003a2: 49bc ldr r1, [pc, #752] ; (8000694 ) + + ldr r2, [r1, #RCC_AHB1ENR] + 80003a4: 6b0a ldr r2, [r1, #48] ; 0x30 + orr r2, r2, #RCC_GPIOAEN + 80003a6: f042 0201 orr.w r2, r2, #1 + str r2, [r1, #RCC_AHB1ENR] + 80003aa: 630a str r2, [r1, #48] ; 0x30 + + ldr r2, [r1, #RCC_AHB1ENR] + 80003ac: 6b0a ldr r2, [r1, #48] ; 0x30 + orr r2, r2, #RCC_GPIOCEN + 80003ae: f042 0204 orr.w r2, r2, #4 + str r2, [r1, #RCC_AHB1ENR] + 80003b2: 630a str r2, [r1, #48] ; 0x30 + + #Set DB Pins to Outputs + ldr r1, =GPIOA_BASE + 80003b4: 49b8 ldr r1, [pc, #736] ; (8000698 ) + ldr r2, [r1, #GPIO_MODER] + 80003b6: 680a ldr r2, [r1, #0] + + movw r3, 0x5500 + 80003b8: f245 5300 movw r3, #21760 ; 0x5500 + movt r3, 0x0055 + 80003bc: f2c0 0355 movt r3, #85 ; 0x55 + + orr r2,r2, r3 + 80003c0: ea42 0203 orr.w r2, r2, r3 + + movw r3, 0xAA00 + 80003c4: f64a 2300 movw r3, #43520 ; 0xaa00 + movt r3, 0x00AA + 80003c8: f2c0 03aa movt r3, #170 ; 0xaa + bic r2, r2, r3 + 80003cc: ea22 0203 bic.w r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + 80003d0: 600a str r2, [r1, #0] + + #Set RS RW E Pins to Outputs + ldr r1, =GPIOC_BASE + 80003d2: 49b2 ldr r1, [pc, #712] ; (800069c ) + ldr r2, [r1, #GPIO_MODER] + 80003d4: 680a ldr r2, [r1, #0] + + movw r3, 0x0000 + 80003d6: f240 0300 movw r3, #0 + movt r3, 0x0015 + 80003da: f2c0 0315 movt r3, #21 + + orr r2,r2, r3 + 80003de: ea42 0203 orr.w r2, r2, r3 + + movw r3, 0x0000 + 80003e2: f240 0300 movw r3, #0 + movt r3, 0x00EA + 80003e6: f2c0 03ea movt r3, #234 ; 0xea + bic r2, r2, r3 + 80003ea: ea22 0203 bic.w r2, r2, r3 + str r2, [r1, #GPIO_MODER] + 80003ee: 600a str r2, [r1, #0] + + pop {r1,r2,r3} + 80003f0: bc0e pop {r1, r2, r3} + bx lr + 80003f2: 4770 bx lr + +080003f4 : + +#Writes instruction +#RS=0 RW=0 R1-Arg +#No returns +WriteInstruction: + push {r2,r3,lr} + 80003f4: b50c push {r2, r3, lr} + + #Set RS=0,RW=0,E=0 + + ldr r2, =GPIOC_BASE + 80003f6: 4aa9 ldr r2, [pc, #676] ; (800069c ) + + mov r3, RS_CLR + 80003f8: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + str r3, [r2, #GPIO_BSRR] + 80003fc: 6193 str r3, [r2, #24] + mov r3, RW_CLR + 80003fe: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + str r3, [r2, #GPIO_BSRR] + 8000402: 6193 str r3, [r2, #24] + mov r3, E_CLR + 8000404: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000408: 6193 str r3, [r2, #24] + + #Set E=1 + mov r3, E_SET + 800040a: f44f 6380 mov.w r3, #1024 ; 0x400 + str r3, [r2, #GPIO_BSRR] + 800040e: 6193 str r3, [r2, #24] + + #Set R1 -> DataBus + lsl r1, #4 + 8000410: ea4f 1101 mov.w r1, r1, lsl #4 + ldr r3, =GPIOA_BASE + 8000414: 4ba0 ldr r3, [pc, #640] ; (8000698 ) + ldr r2, [r3, #GPIO_ODR] + 8000416: 695a ldr r2, [r3, #20] + bfc r2, #4, #8 + 8000418: f36f 120b bfc r2, #4, #8 + orr r2, r2, r1 + 800041c: ea42 0201 orr.w r2, r2, r1 + str r2, [r3, #GPIO_ODR ] + 8000420: 615a str r2, [r3, #20] + #Set E=0 + ldr r2, =GPIOC_BASE + 8000422: 4a9e ldr r2, [pc, #632] ; (800069c ) + mov r3, E_CLR + 8000424: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000428: 6193 str r3, [r2, #24] + + #Wait for appropriate delay + mov r1, #37 + 800042a: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 800042e: f7ff fefd bl 800022c + pop {r2,r3,pc} + 8000432: bd0c pop {r2, r3, pc} + +08000434 : + +#Writes data +#RS=0 RW=0 R1-Arg +#No returns +WriteData: + push {r1,r2,r3,r4,lr} + 8000434: b51e push {r1, r2, r3, r4, lr} + + #Set RS=1,RW=0,E=0 + ldr r2, =GPIOC_BASE + 8000436: 4a99 ldr r2, [pc, #612] ; (800069c ) + + mov r3, #RS_SET + 8000438: f44f 7380 mov.w r3, #256 ; 0x100 + str r3, [r2, #GPIO_BSRR] + 800043c: 6193 str r3, [r2, #24] + mov r3, #RW_CLR + 800043e: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + str r3, [r2, #GPIO_BSRR] + 8000442: 6193 str r3, [r2, #24] + mov r3, #E_CLR + 8000444: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000448: 6193 str r3, [r2, #24] + #Set E=1 + mov r3, #E_SET + 800044a: f44f 6380 mov.w r3, #1024 ; 0x400 + str r3, [r2, #GPIO_BSRR] + 800044e: 6193 str r3, [r2, #24] + #Set R1 -> DataBus + lsl r1, #4 + 8000450: ea4f 1101 mov.w r1, r1, lsl #4 + ldr r3, =GPIOA_BASE + 8000454: 4b90 ldr r3, [pc, #576] ; (8000698 ) + ldr r2, [r3, #GPIO_ODR] + 8000456: 695a ldr r2, [r3, #20] + bfc r2, #4, #8 + 8000458: f36f 120b bfc r2, #4, #8 + orr r2, r2, r1 + 800045c: ea42 0201 orr.w r2, r2, r1 + str r2, [r3, #GPIO_ODR ] + 8000460: 615a str r2, [r3, #20] + #Set E=0 + ldr r2, =GPIOC_BASE + 8000462: 4a8e ldr r2, [pc, #568] ; (800069c ) + mov r3, #E_CLR + 8000464: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000468: 6193 str r3, [r2, #24] + #Wait for appropriate delay + mov r1, #37 + 800046a: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 800046e: f7ff fedd bl 800022c + pop {r1,r2,r3,r4,pc} + 8000472: bd1e pop {r1, r2, r3, r4, pc} + +08000474 : + +#Code to intialize the lcd +lcdInit: + push {r0,r1,lr} + 8000474: b503 push {r0, r1, lr} + + #Set up Ports + bl PortSetup + 8000476: f7ff ff93 bl 80003a0 + #Wait 40ms + mov r0, #40 + 800047a: f04f 0028 mov.w r0, #40 ; 0x28 + bl msDelay + 800047e: f7ff fec1 bl 8000204 + #Write Function Set (0x38) + mov r1, 0x38 + 8000482: f04f 0138 mov.w r1, #56 ; 0x38 + bl WriteInstruction + 8000486: f7ff ffb5 bl 80003f4 + mov r1, #37 + 800048a: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 800048e: f7ff fecd bl 800022c + #Write Function Set (0x38) + mov r1, 0x38 + 8000492: f04f 0138 mov.w r1, #56 ; 0x38 + bl WriteInstruction + 8000496: f7ff ffad bl 80003f4 + mov r1, #37 + 800049a: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 800049e: f7ff fec5 bl 800022c + #Write Display On/Off(0x0F) + mov r1, 0x0F + 80004a2: f04f 010f mov.w r1, #15 + bl WriteInstruction + 80004a6: f7ff ffa5 bl 80003f4 + mov r1, #37 + 80004aa: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 80004ae: f7ff febd bl 800022c + #Write Display Clear (0x01) + mov r1, 0x01 + 80004b2: f04f 0101 mov.w r1, #1 + bl WriteInstruction + 80004b6: f7ff ff9d bl 80003f4 + mov r1, #2 + 80004ba: f04f 0102 mov.w r1, #2 + bl msDelay + 80004be: f7ff fea1 bl 8000204 + + #Write Entry Mode Set (0x06) + mov r1, 0x06 + 80004c2: f04f 0106 mov.w r1, #6 + bl WriteInstruction + 80004c6: f7ff ff95 bl 80003f4 + + mov r1, #37 + 80004ca: f04f 0125 mov.w r1, #37 ; 0x25 + bl usDelay + 80004ce: f7ff fead bl 800022c + pop {r0,r1,pc} + 80004d2: bd03 pop {r0, r1, pc} + +080004d4 : +.global lcdClear + # clears the display + # no arguments or return + # includes necessary delay +lcdClear: + push {r0,r1,lr} + 80004d4: b503 push {r0, r1, lr} + mov r1, 0x01 + 80004d6: f04f 0101 mov.w r1, #1 + bl WriteInstruction + 80004da: f7ff ff8b bl 80003f4 + # Delay for at least 1.52ms + mov r0, #2 + 80004de: f04f 0002 mov.w r0, #2 + bl msDelay + 80004e2: f7ff fe8f bl 8000204 + pop {r0,r1,pc} + 80004e6: bd03 pop {r0, r1, pc} + +080004e8 : +.global lcdHome + # moves cursor to the home position + # no arguments or return + # includes necessary delay +lcdHome: + push {r1,lr} + 80004e8: b502 push {r1, lr} + mov r1, #0x02 + 80004ea: f04f 0102 mov.w r1, #2 + bl WriteInstruction + 80004ee: f7ff ff81 bl 80003f4 + mov r0, #2 + 80004f2: f04f 0002 mov.w r0, #2 + bl msDelay + 80004f6: f7ff fe85 bl 8000204 + pop {r1,pc} + 80004fa: bd02 pop {r1, pc} + +080004fc : +.global lcdSetPosition + # moves cursor to the position indicated + # r0 is the zero-based row and r1 is the zero-based column, no return value + # includes necessary delay +lcdSetPosition: + push {r0,r1,lr} + 80004fc: b503 push {r0, r1, lr} + # Sub values to "actual" positions + sub r0, r0, #1 + 80004fe: f1a0 0001 sub.w r0, r0, #1 + sub r1, r1, #1 + 8000502: f1a1 0101 sub.w r1, r1, #1 + # Shift row to actual + lsl r0, r0, #6 + 8000506: ea4f 1080 mov.w r0, r0, lsl #6 + orr r0, r0, r1 + 800050a: ea40 0001 orr.w r0, r0, r1 + + mov r1, #0x80 + 800050e: f04f 0180 mov.w r1, #128 ; 0x80 + orr r1, r1, r0 + 8000512: ea41 0100 orr.w r1, r1, r0 + bl WriteInstruction + 8000516: f7ff ff6d bl 80003f4 + pop {r0,r1,pc} + 800051a: bd03 pop {r0, r1, pc} + +0800051c : +.global lcdPrintString + # prints a null terminated string to the display + # r0 contains the address of the null terminated string (usually located in .data or .rodata), returns the number of characters written to display in r0 + # includes necessary delay +lcdPrintString: + push {r0,r1,r2,r3,lr} + 800051c: b50f push {r0, r1, r2, r3, lr} + + mov r2, #0 + 800051e: f04f 0200 mov.w r2, #0 + +08000522 : +loop: + ldrb r1, [r0, r2] + 8000522: 5c81 ldrb r1, [r0, r2] + cmp r1, #0x00 + 8000524: 2900 cmp r1, #0 + beq done + 8000526: d004 beq.n 8000532 + bl WriteData + 8000528: f7ff ff84 bl 8000434 + add r2, r2, #1 + 800052c: f102 0201 add.w r2, r2, #1 + b loop + 8000530: e7f7 b.n 8000522 + +08000532 : +done: + mov r0, r1 + 8000532: 4608 mov r0, r1 + pop {r0,r1,r2,r3,pc} + 8000534: bd0f pop {r0, r1, r2, r3, pc} + +08000536 : +.global lcdPrintNum + # prints a (decimal) number to the display + # the number to be printed is in r0, values of 0 to 9999 will print, anything above 9999 should print Err. + # includes necessary delay +lcdPrintNum: + push {r0,r1,r2,r3,r4,lr} + 8000536: b51f push {r0, r1, r2, r3, r4, lr} + + bl num_to_ASCII + 8000538: f000 f822 bl 8000580 + # Store num in memory + ldr r2, =numToPrint + 800053c: 4a58 ldr r2, [pc, #352] ; (80006a0 ) + str r0, [r2] + 800053e: 6010 str r0, [r2, #0] + # Move cursor to right-most position + mov r1, #16 + 8000540: f04f 0110 mov.w r1, #16 + +08000544 : +writeByte: + mov r0, #1 + 8000544: f04f 0001 mov.w r0, #1 + bl lcdSetPosition + 8000548: f7ff ffd8 bl 80004fc + + mov r4, r0 + 800054c: 4604 mov r4, r0 + mov r0, #1 + 800054e: f04f 0001 mov.w r0, #1 + bl msDelay + 8000552: f7ff fe57 bl 8000204 + mov r0, r4 + 8000556: 4620 mov r0, r4 + + mov r0, r1 + 8000558: 4608 mov r0, r1 + ldrb r1, [r2, r3] + 800055a: 5cd1 ldrb r1, [r2, r3] + bl WriteData + 800055c: f7ff ff6a bl 8000434 + + mov r4, r0 + 8000560: 4604 mov r4, r0 + mov r0, #1 + 8000562: f04f 0001 mov.w r0, #1 + bl msDelay + 8000566: f7ff fe4d bl 8000204 + mov r0, r4 + 800056a: 4620 mov r0, r4 + + add r3, r3, #1 + 800056c: f103 0301 add.w r3, r3, #1 + cmp r3, #4 + 8000570: 2b04 cmp r3, #4 + sub r1, r0, #1 + 8000572: f1a0 0101 sub.w r1, r0, #1 + cmp r3, #4 + 8000576: 2b04 cmp r3, #4 + bne writeByte + 8000578: d1e4 bne.n 8000544 + pop {r0,r1,r2,r3,r4,pc} + 800057a: bd1f pop {r0, r1, r2, r3, r4, pc} + +0800057c : + +.global lcdCursorLocation + # Returns the location of the cursor on the LCD (1-32) + # Location of cursor is returned in r0 +lcdCursorLocation: + push {r1,lr} + 800057c: b502 push {r1, lr} + + + pop {r1,pc} + 800057e: bd02 pop {r1, pc} + +08000580 : +# r0: Input binary value + +num_to_ASCII: + + # If outside of range, return ASCII "Err." + push {r1,r2,r3,lr} + 8000580: b50e push {r1, r2, r3, lr} + + cmp r0,#0 + 8000582: 2800 cmp r0, #0 + blt out_of_range + 8000584: db47 blt.n 8000616 + # cmp r0,#9999 + # bgt out_of_range + +# Normal conversion behavior + mov r1, #16 + 8000586: f04f 0110 mov.w r1, #16 + lsl r0, #3 + 800058a: ea4f 00c0 mov.w r0, r0, lsl #3 + sub r1, #3 + 800058e: f1a1 0103 sub.w r1, r1, #3 + +08000592 : +shift_cycle: + + lsl r0, #1 + 8000592: ea4f 0040 mov.w r0, r0, lsl #1 + sub r1, #1 + 8000596: f1a1 0101 sub.w r1, r1, #1 + cmp r1, #0 + 800059a: 2900 cmp r1, #0 + # Branch to encode section if shifted 16 times + beq encode + 800059c: d020 beq.n 80005e0 + +# Verify Each Nibble is less than or equal to 4 + ubfx r2, r0, #16, #4 + 800059e: f3c0 4203 ubfx r2, r0, #16, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + 80005a2: 2a04 cmp r2, #4 + ble 2f + 80005a4: dd03 ble.n 80005ae + add r2, #3 + 80005a6: f102 0203 add.w r2, r2, #3 + bfi r0, r2, #16, #4 + 80005aa: f362 4013 bfi r0, r2, #16, #4 +2: ubfx r2, r0, #20, #4 + 80005ae: f3c0 5203 ubfx r2, r0, #20, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + 80005b2: 2a04 cmp r2, #4 + ble 3f + 80005b4: dd03 ble.n 80005be + add r2, #3 + 80005b6: f102 0203 add.w r2, r2, #3 + bfi r0, r2, #20, #4 + 80005ba: f362 5017 bfi r0, r2, #20, #4 +3: ubfx r2, r0, #24, #4 + 80005be: f3c0 6203 ubfx r2, r0, #24, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + 80005c2: 2a04 cmp r2, #4 + ble 4f + 80005c4: dd03 ble.n 80005ce + add r2, #3 + 80005c6: f102 0203 add.w r2, r2, #3 + bfi r0, r2, #24, #4 + 80005ca: f362 601b bfi r0, r2, #24, #4 +4: ubfx r2, r0, #28, #4 + 80005ce: f3c0 7203 ubfx r2, r0, #28, #4 + # If value is less than or equal to 4 skip to end + cmp r2, #4 + 80005d2: 2a04 cmp r2, #4 + ble end_verify_nibbles + 80005d4: dd03 ble.n 80005de + add r2, #3 + 80005d6: f102 0203 add.w r2, r2, #3 + bfi r0, r2, #28, #4 + 80005da: f362 701f bfi r0, r2, #28, #4 + +080005de : +end_verify_nibbles: + + + b shift_cycle + 80005de: e7d8 b.n 8000592 + +080005e0 : +encode: + mov r3, #3 + 80005e0: f04f 0303 mov.w r3, #3 +# Encode BCD numbers to ASCII + # Extract ones nibble + ubfx r2, r0, #16, #4 + 80005e4: f3c0 4203 ubfx r2, r0, #16, #4 + # Insert ones nibble + bfi r1, r2, #0, #4 + 80005e8: f362 0103 bfi r1, r2, #0, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #4, #4 + 80005ec: f363 1107 bfi r1, r3, #4, #4 + + # Extract tens nibble + ubfx r2, r0, #20, #4 + 80005f0: f3c0 5203 ubfx r2, r0, #20, #4 + # Insert tens nibble + bfi r1, r2, #8, #4 + 80005f4: f362 210b bfi r1, r2, #8, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #12, #4 + 80005f8: f363 310f bfi r1, r3, #12, #4 + + # Extract hundreds nibble + ubfx r2, r0, #24, #4 + 80005fc: f3c0 6203 ubfx r2, r0, #24, #4 + # Insert hundreds nibble + bfi r1, r2, #16, #4 + 8000600: f362 4113 bfi r1, r2, #16, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #20, #4 + 8000604: f363 5117 bfi r1, r3, #20, #4 + + # Extract thousands nibble + ubfx r2, r0, #28, #4 + 8000608: f3c0 7203 ubfx r2, r0, #28, #4 + # Insert thousands nibble + bfi r1, r2, #24, #4 + 800060c: f362 611b bfi r1, r2, #24, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #28, #4 + 8000610: f363 711f bfi r1, r3, #28, #4 + + b end_ASCII + 8000614: e003 b.n 800061e + +08000616 : +out_of_range: + # Insert ASCII "Err." + movw r1, #0x722E + 8000616: f247 212e movw r1, #29230 ; 0x722e + movt r1, #0x4572 + 800061a: f2c4 5172 movt r1, #17778 ; 0x4572 + +0800061e : + +end_ASCII: + # Return value in r0 + mov r0, r1 + 800061e: 4608 mov r0, r1 + pop {r1,r2,r3,pc} + 8000620: bd0e pop {r1, r2, r3, pc} + +08000622 : + +.global lcdBusyWait +# Loops until the busy flag is 0 +lcdBusyWait: + + push {r0,r1,r2,r3,lr} + 8000622: b50f push {r0, r1, r2, r3, lr} + + ldr r1, =GPIOA_BASE + 8000624: 491c ldr r1, [pc, #112] ; (8000698 ) + ldr r2, [r1, #GPIO_MODER] + 8000626: 680a ldr r2, [r1, #0] + + mov r3, #0 + 8000628: f04f 0300 mov.w r3, #0 + + orr r2, r2, r3 + 800062c: ea42 0203 orr.w r2, r2, r3 + + movw r3, 0xFF00 + 8000630: f64f 7300 movw r3, #65280 ; 0xff00 + movt r3, 0x00FF + 8000634: f2c0 03ff movt r3, #255 ; 0xff + bic r2, r2, r3 + 8000638: ea22 0203 bic.w r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + 800063c: 600a str r2, [r1, #0] + + #Set RS=0, RW=1, E=1 + ldr r2, =GPIOC_BASE + 800063e: 4a17 ldr r2, [pc, #92] ; (800069c ) + + mov r3, #RS_CLR + 8000640: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + str r3, [r2, #GPIO_BSRR] + 8000644: 6193 str r3, [r2, #24] + mov r3, #RW_SET + 8000646: f44f 7300 mov.w r3, #512 ; 0x200 + str r3, [r2, #GPIO_BSRR] + 800064a: 6193 str r3, [r2, #24] + mov r3, #E_SET + 800064c: f44f 6380 mov.w r3, #1024 ; 0x400 + str r3, [r2, #GPIO_BSRR] + 8000650: 6193 str r3, [r2, #24] + +08000652 : +busy: + #Set E= + mov r3, #E_SET + 8000652: f44f 6380 mov.w r3, #1024 ; 0x400 + str r3, [r2, #GPIO_BSRR] + 8000656: 6193 str r3, [r2, #24] + #Set Databus -> R1 + ldr r3, =GPIOA_BASE + 8000658: 4b0f ldr r3, [pc, #60] ; (8000698 ) + ldr r1, [r3, #GPIO_IDR] + 800065a: 6919 ldr r1, [r3, #16] + #Set E=0 + ldr r2, =GPIOC_BASE + 800065c: 4a0f ldr r2, [pc, #60] ; (800069c ) + mov r3, #E_CLR + 800065e: f04f 6380 mov.w r3, #67108864 ; 0x4000000 + str r3, [r2, #GPIO_BSRR] + 8000662: 6193 str r3, [r2, #24] + + mov r2, #0x0010 + 8000664: f04f 0210 mov.w r2, #16 + and r1, r2 + 8000668: ea01 0102 and.w r1, r1, r2 + lsr r1, #4 + 800066c: ea4f 1111 mov.w r1, r1, lsr #4 + # Are we still busy? + cmp r1, #1 + 8000670: 2901 cmp r1, #1 + beq busy + 8000672: d0ee beq.n 8000652 + +# Return DB port to original mode + ldr r1, =GPIOA_BASE + 8000674: 4908 ldr r1, [pc, #32] ; (8000698 ) + ldr r2, [r1, #GPIO_MODER] + 8000676: 680a ldr r2, [r1, #0] + + movw r3, 0x5500 + 8000678: f245 5300 movw r3, #21760 ; 0x5500 + movt r3, 0x0055 + 800067c: f2c0 0355 movt r3, #85 ; 0x55 + + orr r2,r2, r3 + 8000680: ea42 0203 orr.w r2, r2, r3 + + movw r3, 0xAA00 + 8000684: f64a 2300 movw r3, #43520 ; 0xaa00 + movt r3, 0x00AA + 8000688: f2c0 03aa movt r3, #170 ; 0xaa + bic r2, r2, r3 + 800068c: ea22 0203 bic.w r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + 8000690: 600a str r2, [r1, #0] + + pop {r0,r1,r2,r3,pc} + 8000692: bd0f pop {r0, r1, r2, r3, pc} + ldr r1, =RCC_BASE + 8000694: 40023800 .word 0x40023800 + ldr r1, =GPIOA_BASE + 8000698: 40020000 .word 0x40020000 + ldr r1, =GPIOC_BASE + 800069c: 40020800 .word 0x40020800 + ldr r2, =numToPrint + 80006a0: 20000000 .word 0x20000000 + +080006a4
: +.equ ADC_DR, 0x4C + +.global main +main: + + bl lcdInit + 80006a4: f7ff fee6 bl 8000474 + bl KeyInit + 80006a8: f7ff fdc8 bl 800023c + bl timerInit + 80006ac: f000 f85c bl 8000768 + + + # Enable GPIOB in RCC + ldr r0, =RCC_BASE + 80006b0: 482a ldr r0, [pc, #168] ; (800075c ) + ldr r1, [r0, #RCC_AHB1ENR] + 80006b2: 6b01 ldr r1, [r0, #48] ; 0x30 + orr r1, r1, #GPIOB_EN + 80006b4: f041 0102 orr.w r1, r1, #2 + str r1, [r0, #RCC_AHB1ENR] + 80006b8: 6301 str r1, [r0, #48] ; 0x30 + + # Enable ADC1 in RCC + ldr r1, [r0, #RCC_APB2ENR] + 80006ba: 6c41 ldr r1, [r0, #68] ; 0x44 + orr r1, r1, #ADC1_EN + 80006bc: f441 7180 orr.w r1, r1, #256 ; 0x100 + str r1, [r0, #RCC_APB2ENR] + 80006c0: 6441 str r1, [r0, #68] ; 0x44 + + # Temperature Analog on PB0 + ldr r0, =GPIOB_BASE + 80006c2: 4827 ldr r0, [pc, #156] ; (8000760 ) + ldr r1, [r0, #GPIO_MODER] + 80006c4: 6801 ldr r1, [r0, #0] + mov r2, #0b11 + 80006c6: f04f 0203 mov.w r2, #3 + bfi r1, r2, #0, #2 + 80006ca: f362 0101 bfi r1, r2, #0, #2 + str r1, [r0, #GPIO_MODER] + 80006ce: 6001 str r1, [r0, #0] + + # Turn on ADC1 + ldr r0, =ADC1_BASE + 80006d0: 4824 ldr r0, [pc, #144] ; (8000764 ) + ldr r1, [r0, #ADC_CR2] + 80006d2: 6881 ldr r1, [r0, #8] + orr r1, r1, #(1<<0) + 80006d4: f041 0101 orr.w r1, r1, #1 + str r1, [R0, #ADC_CR2] + 80006d8: 6081 str r1, [r0, #8] + + # ADC Channel 8 + ldr r1, [r0, #ADC_SQR3] + 80006da: 6b41 ldr r1, [r0, #52] ; 0x34 + mov r2, #8 + 80006dc: f04f 0208 mov.w r2, #8 + bfi r1, r2, #0, #5 + 80006e0: f362 0104 bfi r1, r2, #0, #5 + str r1, [r0, #ADC_SQR3] + 80006e4: 6341 str r1, [r0, #52] ; 0x34 + +080006e6 : + +mainLoop: + + bl conversionLoop + 80006e6: f000 f80f bl 8000708 + bl KeyGetKeyNoblock + 80006ea: f7ff fdb7 bl 800025c + + # '*' Buffer on/off + cmp r0, #13 + 80006ee: 280d cmp r0, #13 + beq buffer + 80006f0: d015 beq.n 800071e + + # '#' Set interval (1-9 Seconds) + cmp r0, #15 + 80006f2: 280f cmp r0, #15 + beq setInterval + 80006f4: d015 beq.n 8000722 + + # 'B' Set Buffer size [01-99] + cmp r0, #8 + 80006f6: 2808 cmp r0, #8 + beq setBufferSize + 80006f8: d015 beq.n 8000726 + + # 'D' Toggle Between displaying temperatures in C or F + cmp r0, #16 + 80006fa: 2810 cmp r0, #16 + beq toggleTemp + 80006fc: d015 beq.n 800072a + + # 'A' Display Buffered results + cmp r0, #4 + 80006fe: 2804 cmp r0, #4 + beq displayBufferedResults + 8000700: d015 beq.n 800072e + + # 'C' Continuous mode + cmp r0, #12 + 8000702: 280c cmp r0, #12 + beq continuousMode + 8000704: d015 beq.n 8000732 + + #loop that will finish what chosen option and then ask for another instruction + b mainLoop + 8000706: e7ee b.n 80006e6 + +08000708 : + +conversionLoop: + + push {r0, r1, lr} + 8000708: b503 push {r0, r1, lr} + + ldr r0, =ADC1_BASE + 800070a: 4816 ldr r0, [pc, #88] ; (8000764 ) + ldr r1, [r0, #ADC_CR2] + 800070c: 6881 ldr r1, [r0, #8] + orr r1, r1, #(1<<30) + 800070e: f041 4180 orr.w r1, r1, #1073741824 ; 0x40000000 + str r1, [r0, #ADC_CR2] + 8000712: 6081 str r1, [r0, #8] + +1: + ldr r1, [r0, #ADC_SR] + 8000714: 6801 ldr r1, [r0, #0] + ands r1, r1, #(1<<1) + 8000716: f011 0102 ands.w r1, r1, #2 + beq 1b + 800071a: d0fb beq.n 8000714 + + pop {r0,r1, pc} + 800071c: bd03 pop {r0, r1, pc} + +0800071e : + + +buffer: + + push {lr} + 800071e: b500 push {lr} + + + + pop {pc} + 8000720: bd00 pop {pc} + +08000722 : + +setInterval: + + push {lr} + 8000722: b500 push {lr} + + + + pop {pc} + 8000724: bd00 pop {pc} + +08000726 : + +setBufferSize: + + push {lr} + 8000726: b500 push {lr} + + + + pop {pc} + 8000728: bd00 pop {pc} + +0800072a : + +toggleTemp: + + push {lr} + 800072a: b500 push {lr} + + + + pop {pc} + 800072c: bd00 pop {pc} + +0800072e : + +displayBufferedResults: + + push {lr} + 800072e: b500 push {lr} + + + + pop {pc} + 8000730: bd00 pop {pc} + +08000732 : + +continuousMode: + + push {lr} + 8000732: b500 push {lr} + + + + pop {pc} + 8000734: bd00 pop {pc} + +08000736 : + ... + +08000737 : + 8000737: 54 .byte 0x54 + 8000738: 20657079 .word 0x20657079 + 800073c: 706d6153 .word 0x706d6153 + 8000740: 4920656c .word 0x4920656c + 8000744: 7265746e .word 0x7265746e + 8000748: 206c6176 .word 0x206c6176 + 800074c: 392d3128 .word 0x392d3128 + 8000750: 63657320 .word 0x63657320 + 8000754: 73646e6f .word 0x73646e6f + 8000758: 00003a29 .word 0x00003a29 + ldr r0, =RCC_BASE + 800075c: 40023800 .word 0x40023800 + ldr r0, =GPIOB_BASE + 8000760: 40020400 .word 0x40020400 + ldr r0, =ADC1_BASE + 8000764: 40012000 .word 0x40012000 + +08000768 : + .equ CCMR_OFFSET, 0x18 + .equ TIM3_BASE, 0x24 + +.global timerInit +timerInit: + push {r0-r4, lr} + 8000768: b51f push {r0, r1, r2, r3, r4, lr} + #Alt func low reg for TIM3 + ldr r1, [r0, #AFRL_OFFSET] + 800076a: 6a01 ldr r1, [r0, #32] + bfc r1, #16, #4 + 800076c: f36f 4113 bfc r1, #16, #4 + orr r1, r1, #AFRL_TIM3_CH1_EN + 8000770: f041 0110 orr.w r1, r1, #16 + str r1, [r0, #AFRL_OFFSET] + 8000774: 6201 str r1, [r0, #32] + + #Enable CCMR1 for preload and set pwm + #Allows for the modification of the pulse + ldr r0, =TIM3_BASE + 8000776: f04f 0024 mov.w r0, #36 ; 0x24 + ldr r1, [r0, #CCMR_OFFSET] + 800077a: 6981 ldr r1, [r0, #24] + bfc r1, #4, #3 + 800077c: f36f 1106 bfc r1, #4, #3 + mov r2, #CCMR_OCC1M_PWM + 8000780: f04f 0218 mov.w r2, #24 + orr r2, r2, #CCMR_OC1PE + 8000784: f042 0210 orr.w r2, r2, #16 + orr r1, r1, r2 + 8000788: ea41 0102 orr.w r1, r1, r2 + str r1, [r0, #CCMR_OFFSET] + 800078c: 6181 str r1, [r0, #24] + + #Enable CCER to for TIM3 (TIC) + #Every 10 seconds, sample + + + pop {r0, r4} + 800078e: bc11 pop {r0, r4} + bx lr + 8000790: 4770 bx lr + ... + +08000794 : + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + 8000794: 480d ldr r0, [pc, #52] ; (80007cc ) + mov sp, r0 /* set stack pointer */ + 8000796: 4685 mov sp, r0 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000798: 480d ldr r0, [pc, #52] ; (80007d0 ) + ldr r1, =_edata + 800079a: 490e ldr r1, [pc, #56] ; (80007d4 ) + ldr r2, =_sidata + 800079c: 4a0e ldr r2, [pc, #56] ; (80007d8 ) + movs r3, #0 + 800079e: 2300 movs r3, #0 + b LoopCopyDataInit + 80007a0: e002 b.n 80007a8 + +080007a2 : + +CopyDataInit: + ldr r4, [r2, r3] + 80007a2: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 80007a4: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 80007a6: 3304 adds r3, #4 + +080007a8 : + +LoopCopyDataInit: + adds r4, r0, r3 + 80007a8: 18c4 adds r4, r0, r3 + cmp r4, r1 + 80007aa: 428c cmp r4, r1 + bcc CopyDataInit + 80007ac: d3f9 bcc.n 80007a2 + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 80007ae: 4a0b ldr r2, [pc, #44] ; (80007dc ) + ldr r4, =_ebss + 80007b0: 4c0b ldr r4, [pc, #44] ; (80007e0 ) + movs r3, #0 + 80007b2: 2300 movs r3, #0 + b LoopFillZerobss + 80007b4: e001 b.n 80007ba + +080007b6 : + +FillZerobss: + str r3, [r2] + 80007b6: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 80007b8: 3204 adds r2, #4 + +080007ba : + +LoopFillZerobss: + cmp r2, r4 + 80007ba: 42a2 cmp r2, r4 + bcc FillZerobss + 80007bc: d3fb bcc.n 80007b6 + +/* Call the clock system intitialization function.*/ + bl SystemInit + 80007be: f3af 8000 nop.w +/* Call static constructors */ + bl __libc_init_array + 80007c2: f000 f811 bl 80007e8 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 80007c6: f7ff ff6d bl 80006a4
+ +080007ca : + +LoopForever: + b LoopForever + 80007ca: e7fe b.n 80007ca + ldr r0, =_estack + 80007cc: 20020000 .word 0x20020000 + ldr r0, =_sdata + 80007d0: 20000000 .word 0x20000000 + ldr r1, =_edata + 80007d4: 20000004 .word 0x20000004 + ldr r2, =_sidata + 80007d8: 08000864 .word 0x08000864 + ldr r2, =_sbss + 80007dc: 20000004 .word 0x20000004 + ldr r4, =_ebss + 80007e0: 20000020 .word 0x20000020 + +080007e4 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 80007e4: e7fe b.n 80007e4 + ... + +080007e8 <__libc_init_array>: + 80007e8: b570 push {r4, r5, r6, lr} + 80007ea: 4e0d ldr r6, [pc, #52] ; (8000820 <__libc_init_array+0x38>) + 80007ec: 4c0d ldr r4, [pc, #52] ; (8000824 <__libc_init_array+0x3c>) + 80007ee: 1ba4 subs r4, r4, r6 + 80007f0: 10a4 asrs r4, r4, #2 + 80007f2: 2500 movs r5, #0 + 80007f4: 42a5 cmp r5, r4 + 80007f6: d109 bne.n 800080c <__libc_init_array+0x24> + 80007f8: 4e0b ldr r6, [pc, #44] ; (8000828 <__libc_init_array+0x40>) + 80007fa: 4c0c ldr r4, [pc, #48] ; (800082c <__libc_init_array+0x44>) + 80007fc: f000 f818 bl 8000830 <_init> + 8000800: 1ba4 subs r4, r4, r6 + 8000802: 10a4 asrs r4, r4, #2 + 8000804: 2500 movs r5, #0 + 8000806: 42a5 cmp r5, r4 + 8000808: d105 bne.n 8000816 <__libc_init_array+0x2e> + 800080a: bd70 pop {r4, r5, r6, pc} + 800080c: f856 3025 ldr.w r3, [r6, r5, lsl #2] + 8000810: 4798 blx r3 + 8000812: 3501 adds r5, #1 + 8000814: e7ee b.n 80007f4 <__libc_init_array+0xc> + 8000816: f856 3025 ldr.w r3, [r6, r5, lsl #2] + 800081a: 4798 blx r3 + 800081c: 3501 adds r5, #1 + 800081e: e7f2 b.n 8000806 <__libc_init_array+0x1e> + 8000820: 0800085c .word 0x0800085c + 8000824: 0800085c .word 0x0800085c + 8000828: 0800085c .word 0x0800085c + 800082c: 08000860 .word 0x08000860 + +08000830 <_init>: + 8000830: b5f8 push {r3, r4, r5, r6, r7, lr} + 8000832: bf00 nop + 8000834: bcf8 pop {r3, r4, r5, r6, r7} + 8000836: bc08 pop {r3} + 8000838: 469e mov lr, r3 + 800083a: 4770 bx lr + +0800083c <_fini>: + 800083c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800083e: bf00 nop + 8000840: bcf8 pop {r3, r4, r5, r6, r7} + 8000842: bc08 pop {r3} + 8000844: 469e mov lr, r3 + 8000846: 4770 bx lr diff --git a/lab8adc/Debug/lab8adc.map b/lab8adc/Debug/lab8adc.map new file mode 100644 index 0000000..ac441f3 --- /dev/null +++ b/lab8adc/Debug/lab8adc.map @@ -0,0 +1,461 @@ +Archive member included to satisfy reference by file (symbol) + +c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o (exit) +c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) (_global_impure_ptr) +c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o (__libc_init_array) +c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o (memset) +c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a(_exit.o) + c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) (_exit) + +Discarded input sections + + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + .data 0x0000000000000000 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .text 0x0000000000000000 0x74 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .ARM.extab 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .ARM.exidx 0x0000000000000000 0x8 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .ARM.attributes + 0x0000000000000000 0x20 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .data 0x0000000000000000 0x0 Src/delay.o + .bss 0x0000000000000000 0x0 Src/delay.o + .data 0x0000000000000000 0x0 Src/keypad.o + .bss 0x0000000000000000 0x0 Src/keypad.o + .bss 0x0000000000000000 0x0 Src/lcd.o + .data 0x0000000000000000 0x0 Src/main.o + .bss 0x0000000000000000 0x0 Src/main.o + .rodata 0x0000000000000000 0xe Src/main.o + .data 0x0000000000000000 0x0 Src/timer.o + .bss 0x0000000000000000 0x0 Src/timer.o + .text 0x0000000000000000 0x14 Startup/startup_stm32f446retx.o + .data 0x0000000000000000 0x0 Startup/startup_stm32f446retx.o + .bss 0x0000000000000000 0x0 Startup/startup_stm32f446retx.o + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .text.exit 0x0000000000000000 0x28 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .debug_frame 0x0000000000000000 0x28 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .data._impure_ptr + 0x0000000000000000 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .data.impure_data + 0x0000000000000000 0x60 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .rodata._global_impure_ptr + 0x0000000000000000 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .text.memset 0x0000000000000000 0x10 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .debug_frame 0x0000000000000000 0x20 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a(_exit.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a(_exit.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a(_exit.o) + .text._exit 0x0000000000000000 0x2 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a(_exit.o) + .debug_frame 0x0000000000000000 0x20 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a(_exit.o) + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a(_exit.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .eh_frame 0x0000000000000000 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x0000000020000000 0x0000000000020000 xrw +ROM 0x0000000008000000 0x0000000000080000 xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o +LOAD Src/delay.o +LOAD Src/keypad.o +LOAD Src/lcd.o +LOAD Src/main.o +LOAD Src/timer.o +LOAD Startup/startup_stm32f446retx.o +START GROUP +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libm.a +END GROUP +START GROUP +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard\libgcc.a +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a +END GROUP +START GROUP +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard\libgcc.a +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a +END GROUP +START GROUP +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard\libgcc.a +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a +END GROUP +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o +LOAD c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + 0x0000000020020000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x0000000000000200 _Min_Heap_Size = 0x200 + 0x0000000000000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x0000000008000000 0x1c4 + 0x0000000008000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x0000000008000000 0x1c4 Startup/startup_stm32f446retx.o + 0x0000000008000000 g_pfnVectors + 0x00000000080001c4 . = ALIGN (0x4) + +.text 0x00000000080001c4 0x684 + 0x00000000080001c4 . = ALIGN (0x4) + *(.text) + .text 0x00000000080001c4 0x40 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .text 0x0000000008000204 0x38 Src/delay.o + 0x0000000008000204 msDelay + 0x000000000800022c usDelay + .text 0x000000000800023c 0x164 Src/keypad.o + 0x000000000800023c KeyInit + 0x000000000800025c KeyGetKeyNoblock + 0x00000000080002f2 KeyGetKey + 0x000000000800032a KeyGetChar + .text 0x00000000080003a0 0x304 Src/lcd.o + 0x0000000008000474 lcdInit + 0x00000000080004d4 lcdClear + 0x00000000080004e8 lcdHome + 0x00000000080004fc lcdSetPosition + 0x000000000800051c lcdPrintString + 0x0000000008000536 lcdPrintNum + 0x000000000800057c lcdCursorLocation + 0x0000000008000622 lcdBusyWait + .text 0x00000000080006a4 0xc4 Src/main.o + 0x00000000080006a4 main + .text 0x0000000008000768 0x2a Src/timer.o + 0x0000000008000768 timerInit + *(.text*) + *fill* 0x0000000008000792 0x2 + .text.Reset_Handler + 0x0000000008000794 0x50 Startup/startup_stm32f446retx.o + 0x0000000008000794 Reset_Handler + .text.Default_Handler + 0x00000000080007e4 0x2 Startup/startup_stm32f446retx.o + 0x00000000080007e4 RTC_Alarm_IRQHandler + 0x00000000080007e4 EXTI2_IRQHandler + 0x00000000080007e4 TIM8_CC_IRQHandler + 0x00000000080007e4 SPDIF_Rx_IRQHandler + 0x00000000080007e4 DebugMon_Handler + 0x00000000080007e4 SPI4_IRQHandler + 0x00000000080007e4 TIM1_CC_IRQHandler + 0x00000000080007e4 QuadSPI_IRQHandler + 0x00000000080007e4 DMA2_Stream5_IRQHandler + 0x00000000080007e4 HardFault_Handler + 0x00000000080007e4 DMA1_Stream5_IRQHandler + 0x00000000080007e4 SysTick_Handler + 0x00000000080007e4 PVD_IRQHandler + 0x00000000080007e4 SDIO_IRQHandler + 0x00000000080007e4 TAMP_STAMP_IRQHandler + 0x00000000080007e4 PendSV_Handler + 0x00000000080007e4 NMI_Handler + 0x00000000080007e4 CAN2_RX1_IRQHandler + 0x00000000080007e4 EXTI3_IRQHandler + 0x00000000080007e4 TIM8_TRG_COM_TIM14_IRQHandler + 0x00000000080007e4 TIM1_UP_TIM10_IRQHandler + 0x00000000080007e4 FMPI2C1_error_IRQHandler + 0x00000000080007e4 TIM8_UP_TIM13_IRQHandler + 0x00000000080007e4 I2C3_ER_IRQHandler + 0x00000000080007e4 EXTI0_IRQHandler + 0x00000000080007e4 I2C2_EV_IRQHandler + 0x00000000080007e4 DMA1_Stream2_IRQHandler + 0x00000000080007e4 CAN1_RX0_IRQHandler + 0x00000000080007e4 FPU_IRQHandler + 0x00000000080007e4 OTG_HS_WKUP_IRQHandler + 0x00000000080007e4 UsageFault_Handler + 0x00000000080007e4 CAN2_SCE_IRQHandler + 0x00000000080007e4 DMA2_Stream2_IRQHandler + 0x00000000080007e4 SPI1_IRQHandler + 0x00000000080007e4 TIM6_DAC_IRQHandler + 0x00000000080007e4 TIM1_BRK_TIM9_IRQHandler + 0x00000000080007e4 DCMI_IRQHandler + 0x00000000080007e4 CAN2_RX0_IRQHandler + 0x00000000080007e4 DMA2_Stream3_IRQHandler + 0x00000000080007e4 FMPI2C1_IRQHandler + 0x00000000080007e4 SAI2_IRQHandler + 0x00000000080007e4 USART6_IRQHandler + 0x00000000080007e4 USART3_IRQHandler + 0x00000000080007e4 CAN1_RX1_IRQHandler + 0x00000000080007e4 UART5_IRQHandler + 0x00000000080007e4 DMA2_Stream0_IRQHandler + 0x00000000080007e4 TIM4_IRQHandler + 0x00000000080007e4 I2C1_EV_IRQHandler + 0x00000000080007e4 HDMI_CEC_IRQHandler + 0x00000000080007e4 DMA1_Stream6_IRQHandler + 0x00000000080007e4 DMA1_Stream1_IRQHandler + 0x00000000080007e4 UART4_IRQHandler + 0x00000000080007e4 TIM3_IRQHandler + 0x00000000080007e4 RCC_IRQHandler + 0x00000000080007e4 TIM8_BRK_TIM12_IRQHandler + 0x00000000080007e4 Default_Handler + 0x00000000080007e4 EXTI15_10_IRQHandler + 0x00000000080007e4 ADC_IRQHandler + 0x00000000080007e4 DMA1_Stream7_IRQHandler + 0x00000000080007e4 TIM7_IRQHandler + 0x00000000080007e4 CAN2_TX_IRQHandler + 0x00000000080007e4 TIM5_IRQHandler + 0x00000000080007e4 DMA2_Stream7_IRQHandler + 0x00000000080007e4 I2C3_EV_IRQHandler + 0x00000000080007e4 EXTI9_5_IRQHandler + 0x00000000080007e4 RTC_WKUP_IRQHandler + 0x00000000080007e4 SPI2_IRQHandler + 0x00000000080007e4 OTG_HS_EP1_IN_IRQHandler + 0x00000000080007e4 MemManage_Handler + 0x00000000080007e4 DMA1_Stream0_IRQHandler + 0x00000000080007e4 CAN1_TX_IRQHandler + 0x00000000080007e4 SVC_Handler + 0x00000000080007e4 EXTI4_IRQHandler + 0x00000000080007e4 OTG_HS_EP1_OUT_IRQHandler + 0x00000000080007e4 WWDG_IRQHandler + 0x00000000080007e4 TIM2_IRQHandler + 0x00000000080007e4 OTG_FS_WKUP_IRQHandler + 0x00000000080007e4 TIM1_TRG_COM_TIM11_IRQHandler + 0x00000000080007e4 OTG_HS_IRQHandler + 0x00000000080007e4 EXTI1_IRQHandler + 0x00000000080007e4 USART2_IRQHandler + 0x00000000080007e4 I2C2_ER_IRQHandler + 0x00000000080007e4 DMA2_Stream1_IRQHandler + 0x00000000080007e4 CAN1_SCE_IRQHandler + 0x00000000080007e4 FLASH_IRQHandler + 0x00000000080007e4 DMA2_Stream4_IRQHandler + 0x00000000080007e4 BusFault_Handler + 0x00000000080007e4 USART1_IRQHandler + 0x00000000080007e4 OTG_FS_IRQHandler + 0x00000000080007e4 SPI3_IRQHandler + 0x00000000080007e4 DMA1_Stream4_IRQHandler + 0x00000000080007e4 I2C1_ER_IRQHandler + 0x00000000080007e4 FMC_IRQHandler + 0x00000000080007e4 DMA2_Stream6_IRQHandler + 0x00000000080007e4 SAI1_IRQHandler + 0x00000000080007e4 DMA1_Stream3_IRQHandler + *fill* 0x00000000080007e6 0x2 + .text.__libc_init_array + 0x00000000080007e8 0x48 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + 0x00000000080007e8 __libc_init_array + *(.glue_7) + .glue_7 0x0000000008000830 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x0000000008000830 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x0000000008000830 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + *(.init) + .init 0x0000000008000830 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + 0x0000000008000830 _init + .init 0x0000000008000834 0x8 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + *(.fini) + .fini 0x000000000800083c 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + 0x000000000800083c _fini + .fini 0x0000000008000840 0x8 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + 0x0000000008000848 . = ALIGN (0x4) + 0x0000000008000848 _etext = . + +.vfp11_veneer 0x0000000008000848 0x0 + .vfp11_veneer 0x0000000008000848 0x0 linker stubs + +.v4_bx 0x0000000008000848 0x0 + .v4_bx 0x0000000008000848 0x0 linker stubs + +.iplt 0x0000000008000848 0x0 + .iplt 0x0000000008000848 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + +.rodata 0x0000000008000848 0x14 + 0x0000000008000848 . = ALIGN (0x4) + *(.rodata) + .rodata 0x0000000008000848 0x11 Src/keypad.o + *(.rodata*) + 0x000000000800085c . = ALIGN (0x4) + *fill* 0x0000000008000859 0x3 + +.rel.dyn 0x000000000800085c 0x0 + .rel.iplt 0x000000000800085c 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + +.ARM.extab 0x000000000800085c 0x0 + 0x000000000800085c . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x000000000800085c . = ALIGN (0x4) + +.ARM 0x000000000800085c 0x0 + 0x000000000800085c . = ALIGN (0x4) + 0x000000000800085c __exidx_start = . + *(.ARM.exidx*) + 0x000000000800085c __exidx_end = . + 0x000000000800085c . = ALIGN (0x4) + +.preinit_array 0x000000000800085c 0x0 + 0x000000000800085c . = ALIGN (0x4) + 0x000000000800085c PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x000000000800085c PROVIDE (__preinit_array_end = .) + 0x000000000800085c . = ALIGN (0x4) + +.init_array 0x000000000800085c 0x4 + 0x000000000800085c . = ALIGN (0x4) + 0x000000000800085c PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x000000000800085c 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + 0x0000000008000860 PROVIDE (__init_array_end = .) + 0x0000000008000860 . = ALIGN (0x4) + +.fini_array 0x0000000008000860 0x4 + 0x0000000008000860 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x0000000008000860 0x4 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x0000000008000864 . = ALIGN (0x4) + 0x0000000008000864 _sidata = LOADADDR (.data) + +.data 0x0000000020000000 0x4 load address 0x0000000008000864 + 0x0000000020000000 . = ALIGN (0x4) + 0x0000000020000000 _sdata = . + *(.data) + .data 0x0000000020000000 0x4 Src/lcd.o + *(.data*) + 0x0000000020000004 . = ALIGN (0x4) + 0x0000000020000004 _edata = . + +.igot.plt 0x0000000020000004 0x0 load address 0x0000000008000868 + .igot.plt 0x0000000020000004 0x0 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + 0x0000000020000004 . = ALIGN (0x4) + +.bss 0x0000000020000004 0x1c load address 0x0000000008000868 + 0x0000000020000004 _sbss = . + 0x0000000020000004 __bss_start__ = _sbss + *(.bss) + .bss 0x0000000020000004 0x1c c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + *(.bss*) + *(COMMON) + 0x0000000020000020 . = ALIGN (0x4) + 0x0000000020000020 _ebss = . + 0x0000000020000020 __bss_end__ = _ebss + +._user_heap_stack + 0x0000000020000020 0x600 load address 0x0000000008000868 + 0x0000000020000020 . = ALIGN (0x8) + [!provide] PROVIDE (end = .) + [!provide] PROVIDE (_end = .) + 0x0000000020000220 . = (. + _Min_Heap_Size) + *fill* 0x0000000020000020 0x200 + 0x0000000020000620 . = (. + _Min_Stack_Size) + *fill* 0x0000000020000220 0x400 + 0x0000000020000620 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x0000000000000000 0x30 + *(.ARM.attributes) + .ARM.attributes + 0x0000000000000000 0x22 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + .ARM.attributes + 0x0000000000000022 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .ARM.attributes + 0x0000000000000056 0x25 Src/delay.o + .ARM.attributes + 0x000000000000007b 0x25 Src/keypad.o + .ARM.attributes + 0x00000000000000a0 0x25 Src/lcd.o + .ARM.attributes + 0x00000000000000c5 0x25 Src/main.o + .ARM.attributes + 0x00000000000000ea 0x25 Src/timer.o + .ARM.attributes + 0x000000000000010f 0x21 Startup/startup_stm32f446retx.o + .ARM.attributes + 0x0000000000000130 0x34 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .ARM.attributes + 0x0000000000000164 0x22 c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o +OUTPUT(lab8adc.elf elf32-littlearm) + +.debug_line 0x0000000000000000 0x3ac + .debug_line 0x0000000000000000 0x52 Src/delay.o + .debug_line 0x0000000000000052 0xcf Src/keypad.o + .debug_line 0x0000000000000121 0x13c Src/lcd.o + .debug_line 0x000000000000025d 0x80 Src/main.o + .debug_line 0x00000000000002dd 0x4b Src/timer.o + .debug_line 0x0000000000000328 0x84 Startup/startup_stm32f446retx.o + +.debug_info 0x0000000000000000 0xe0 + .debug_info 0x0000000000000000 0x26 Src/delay.o + .debug_info 0x0000000000000026 0x26 Src/keypad.o + .debug_info 0x000000000000004c 0x26 Src/lcd.o + .debug_info 0x0000000000000072 0x26 Src/main.o + .debug_info 0x0000000000000098 0x26 Src/timer.o + .debug_info 0x00000000000000be 0x22 Startup/startup_stm32f446retx.o + +.debug_abbrev 0x0000000000000000 0x76 + .debug_abbrev 0x0000000000000000 0x14 Src/delay.o + .debug_abbrev 0x0000000000000014 0x14 Src/keypad.o + .debug_abbrev 0x0000000000000028 0x14 Src/lcd.o + .debug_abbrev 0x000000000000003c 0x14 Src/main.o + .debug_abbrev 0x0000000000000050 0x14 Src/timer.o + .debug_abbrev 0x0000000000000064 0x12 Startup/startup_stm32f446retx.o + +.debug_aranges 0x0000000000000000 0xc8 + .debug_aranges + 0x0000000000000000 0x20 Src/delay.o + .debug_aranges + 0x0000000000000020 0x20 Src/keypad.o + .debug_aranges + 0x0000000000000040 0x20 Src/lcd.o + .debug_aranges + 0x0000000000000060 0x20 Src/main.o + .debug_aranges + 0x0000000000000080 0x20 Src/timer.o + .debug_aranges + 0x00000000000000a0 0x28 Startup/startup_stm32f446retx.o + +.debug_str 0x0000000000000000 0xb5 + .debug_str 0x0000000000000000 0x58 Src/delay.o + .debug_str 0x0000000000000058 0x10 Src/keypad.o + 0x59 (size before relaxing) + .debug_str 0x0000000000000068 0xd Src/lcd.o + 0x56 (size before relaxing) + .debug_str 0x0000000000000075 0xe Src/main.o + 0x57 (size before relaxing) + .debug_str 0x0000000000000083 0xf Src/timer.o + 0x58 (size before relaxing) + .debug_str 0x0000000000000092 0x23 Startup/startup_stm32f446retx.o + 0x6c (size before relaxing) + +.debug_ranges 0x0000000000000000 0x20 + .debug_ranges 0x0000000000000000 0x20 Startup/startup_stm32f446retx.o + +.debug_frame 0x0000000000000000 0x2c + .debug_frame 0x0000000000000000 0x2c c:/st/stm32cubeide_1.1.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) diff --git a/lab8adc/Debug/objects.list b/lab8adc/Debug/objects.list index 61c23b8..bcd36a4 100644 --- a/lab8adc/Debug/objects.list +++ b/lab8adc/Debug/objects.list @@ -1,3 +1,6 @@ +"Src/delay.o" +"Src/keypad.o" +"Src/lcd.o" "Src/main.o" "Src/timer.o" "Startup/startup_stm32f446retx.o" diff --git a/lab8adc/Src/delay.s b/lab8adc/Src/delay.s new file mode 100644 index 0000000..466bce0 --- /dev/null +++ b/lab8adc/Src/delay.s @@ -0,0 +1,59 @@ +# delay.s +# Trevor Barnes +# CE2801-031 +# Description: A file for handling delay routines + +.syntax unified +.cpu cortex-m4 +.thumb +.section .text + +.global msDelay +# A subroutine to create a delay of a certain number of milliseconds +# Input: +# r0: Length of delay (ms) +msDelay: + + push {r1,r2,r3,lr} + mov r3,r0 +ms_delay: + # 250 iterations = 1/16 of a millisecond + mov r2, #0x10 +# Loop 16 times +1: + # 250 + mov r1, #0xFA +# Loop 250 times +2: + sub r1, #1 + cmp r1, #0 + bne 2b + + sub r2, #1 + cmp r2, #0 + bne 1b + + sub r0, #1 + cmp r0, #0 + bne ms_delay + + mov r0,r3 + pop {r1,r2,r3,pc} + +.global usDelay +# about r1 mircoseonds +usDelay: + # stack + push {lr} + + lsl r1, r1, #3 + +1: + sub r1, r1, #1 + cmp r1, #0 + bne 1b + + # return + pop {pc} + + diff --git a/lab8adc/Src/keypad.s b/lab8adc/Src/keypad.s new file mode 100644 index 0000000..4d92925 --- /dev/null +++ b/lab8adc/Src/keypad.s @@ -0,0 +1,280 @@ +# keypad.s +# Trevor Barnes +# CE2801-031 +# Description: Contains routines for the keypad component + +.syntax unified +.cpu cortex-m4 +.thumb +.section .text + + .equ RCC_BASE, 0x40023800 + .equ RCC_AHB1ENR, 0x30 + .equ RCC_GPIOCEN, 1<<2 + + .equ GPIOC_BASE, 0x40020800 + .equ GPIO_MODER, 0x00 + .equ GPIO_ODR, 0x14 + .equ GPIO_IDR, 0x10 + .equ GPIO_PUPDR, 0x0C + .equ GPIO_BSRR, 0x18 + + # Row 1 + .equ k1, 0xEE + .equ k2, 0xED + .equ k3, 0xEB + .equ k4, 0xE7 + + # Row 2 + .equ k5, 0xDE + .equ k6, 0xDD + .equ k7, 0xDB + .equ k8, 0xD7 + + # Row 3 + .equ k9, 0xBE + .equ k10, 0xBD + .equ k11, 0xBB + .equ k12, 0xB7 + + # Row 4 + .equ k13, 0x7E + .equ k14, 0x7D + .equ k15, 0x7B + .equ k16, 0x77 + +.global KeyInit +# Initialize the keypad GPIO port.   +# Depending on your scanning algorithm, +# there may not be any work to do in this method +KeyInit: + + push {r0,r1,r2,lr} + + ldr r1, =RCC_BASE + + ldr r2, [r1, #RCC_AHB1ENR] + orr r2, r2, #RCC_GPIOCEN + str r2, [r1, #RCC_AHB1ENR] + + # Read current PUPDR state + ldr r1, =GPIOC_BASE + ldr r2, [r1, #GPIO_PUPDR] + + # Modify and write rows and columns to be "Pull-Up" + bfc r2, #0, #16 + ldr r0, =0x5555 + orr r2, r2, r0 + str r2, [r1, #GPIO_PUPDR] + + pop {r0,r1,r2,pc} + +.global KeyGetKeyNoblock +# Returns in r0 a numeric code representing +# the button on the keypad that was pressed (1 to 16), +# or 0 if no button is pressed +KeyGetKeyNoblock: + + push {r1,r2,lr} + + bl keypadScan + + mov r1, #0 + + ubfx r2, r0, #4, #4 + + cmp r2, #0xF + beq 1f + + add r1, #1 + cmp r0, #k1 + beq 1f + + add r1, #1 + cmp r0, #k2 + beq 1f + + add r1, #1 + cmp r0, #k3 + beq 1f + + add r1, #1 + cmp r0, #k4 + beq 1f + + add r1, #1 + cmp r0, #k5 + beq 1f + + add r1, #1 + cmp r0, #k6 + beq 1f + + add r1, #1 + cmp r0, #k7 + beq 1f + + add r1, #1 + cmp r0, #k8 + beq 1f + + add r1, #1 + cmp r0, #k9 + beq 1f + + add r1, #1 + cmp r0, #k10 + beq 1f + + add r1, #1 + cmp r0, #k11 + beq 1f + + add r1, #1 + cmp r0, #k12 + beq 1f + + add r1, #1 + cmp r0, #k13 + beq 1f + + add r1, #1 + cmp r0, #k14 + beq 1f + + add r1, #1 + cmp r0, #k15 + beq 1f + + add r1, #1 + cmp r0, #k16 + beq 1f + +1: + mov r0, r1 + + pop {r1,r2,pc} + + +.global KeyGetKey +# Same as KeyGetkeyNoblock, but blocks – that is, +# waits until a key is pressed and then returns the key code.   +# Per discussion in lecture, you may wish to return after said key +# is released +KeyGetKey: + + push {r1,r2,r3,lr} + mov r0, #0 +1: + mov r1, #10 + bl usDelay + bl KeyGetKeyNoblock + + cmp r0, #0 + beq 1b +2: +# Row = Input | Col = Output + ldr r1, =GPIOC_BASE + ldr r2, [r1, #GPIO_MODER] + mov r3, #0x0055 + bfi r2, r3, #0, #16 + str r2, [r1, #GPIO_MODER] +# "0000" -> ODR (Col) + ldrb r2, [r1, #GPIO_ODR] + mov r3, #0x0 + bfi r2, r3, #0, #4 + strb r2, [r1, #GPIO_ODR] +# Store input data in r3 + ldrb r3, [r1, #GPIO_IDR] + cmp r3, #0xF0 + bne 2b + +# Set both back to inputs, (default state) + @ ldr r1, =GPIOC_BASE + @ ldr r2, [r1, #GPIO_MODER] + @ mov r3, #0x0000 + @ bfi r2, r3, #0, #16 + @ str r2, [r1, #GPIO_MODER] + + pop {r1,r2,r3,pc} + + +.global KeyGetChar +# Similar to KeyGetkey, but returns the ASCII code corresponding +# to the key press.  +# This method blocks. You should use a data structure in .rodata +# to map keys to characters +KeyGetChar: + + push {r1,r2,lr} + + bl KeyGetKey + sub r0, #1 + mov r2, r0 + ldr r1, =keyChars + ldrb r0, [r1, r2] + + pop {r1,r2,pc} + +# Waits for input on keypad and returns that value in r0 +keypadScan: + + push {r1,r2,r3,lr} +2: +# Row = Input | Col = Output + ldr r1, =GPIOC_BASE + ldr r2, [r1, #GPIO_MODER] + mov r0, #0x0055 + bfi r2, r0, #0, #16 + str r2, [r1, #GPIO_MODER] +# "0000" -> ODR (Col) + ldrb r2, [r1, #GPIO_ODR] + mov r3, #0x0 + bfi r2, r3, #0, #4 + strb r2, [r1, #GPIO_ODR] +# Store input data in r3 + mov r0, r1 + mov r1, #5 + bl usDelay + mov r1, r0 + ldrb r3, [r1, #GPIO_IDR] +# R3 = Row IDR + #ubfx r3, r2, #4, #4 +# Row IDR -> Row ODR +# ldrb r2, [r1, #GPIO_ODR] +# orr r2, r2, r3 +# strb r2, [r1, #GPIO_ODR] +# Delay + +# Row = Output | Col = Input + ldr r1, =GPIOC_BASE + ldr r2, [r1, #GPIO_MODER] + mov r0, #0x5500 + bfi r2, r0, #0, #16 + str r2, [r1, #GPIO_MODER] +# "0000" -> ODR (Row) + ldrb r2, [r1, #GPIO_ODR] + mov r0, #0x0 + bfi r2, r0, #0, #4 + strb r2, [r1, #GPIO_ODR] + mov r0, r1 + mov r1, #5 + bl usDelay + mov r1, r0 +# Read IDR (Row & Col) + ldrb r0, [r1, #GPIO_IDR] + orr r0, r0, r3 + +# Set both back to inputs, (default state) + @ ldr r1, =GPIOC_BASE + @ ldr r2, [r1, #GPIO_MODER] + @ mov r3, #0x0000 + @ bfi r2, r3, #0, #16 + @ str r2, [r1, #GPIO_MODER] +1: + pop {r1,r2,r3,pc} + + +.section .rodata +keyChars: + .asciz "123A456B789C*0#D" diff --git a/lab8adc/Src/lcd.s b/lab8adc/Src/lcd.s new file mode 100644 index 0000000..762318a --- /dev/null +++ b/lab8adc/Src/lcd.s @@ -0,0 +1,476 @@ +# lcd.s +# Trevor Barnes +# CE2801-031 +# Description: Contains routines for the LCD component + +.syntax unified +.cpu cortex-m4 +.thumb +.section .text + +#Fill in addresses + .equ RCC_BASE, 0x40023800 + .equ RCC_AHB1ENR, 0x30 + .equ RCC_GPIOAEN, 1<<0 + .equ RCC_GPIOCEN, 1<<2 + + .equ GPIOA_BASE, 0x40020000 + .equ GPIOC_BASE, 0x40020800 + .equ GPIO_MODER, 0x00 + .equ GPIO_ODR, 0x14 + .equ GPIO_IDR, 0x10 + .equ GPIO_BSRR, 0x18 + +#What pin is each of these? + .equ RS, 8 // PC8 + .equ RW, 9 // PC9 + .equ E, 10 // PC10 + +#Commands for BSRR + .equ RS_SET, 1< DataBus + lsl r1, #4 + ldr r3, =GPIOA_BASE + ldr r2, [r3, #GPIO_ODR] + bfc r2, #4, #8 + orr r2, r2, r1 + str r2, [r3, #GPIO_ODR ] + #Set E=0 + ldr r2, =GPIOC_BASE + mov r3, E_CLR + str r3, [r2, #GPIO_BSRR] + + #Wait for appropriate delay + mov r1, #37 + bl usDelay + pop {r2,r3,pc} + + +#Writes data +#RS=0 RW=0 R1-Arg +#No returns +WriteData: + push {r1,r2,r3,r4,lr} + + #Set RS=1,RW=0,E=0 + ldr r2, =GPIOC_BASE + + mov r3, #RS_SET + str r3, [r2, #GPIO_BSRR] + mov r3, #RW_CLR + str r3, [r2, #GPIO_BSRR] + mov r3, #E_CLR + str r3, [r2, #GPIO_BSRR] + #Set E=1 + mov r3, #E_SET + str r3, [r2, #GPIO_BSRR] + #Set R1 -> DataBus + lsl r1, #4 + ldr r3, =GPIOA_BASE + ldr r2, [r3, #GPIO_ODR] + bfc r2, #4, #8 + orr r2, r2, r1 + str r2, [r3, #GPIO_ODR ] + #Set E=0 + ldr r2, =GPIOC_BASE + mov r3, #E_CLR + str r3, [r2, #GPIO_BSRR] + #Wait for appropriate delay + mov r1, #37 + bl usDelay + pop {r1,r2,r3,r4,pc} + +#Code to intialize the lcd +lcdInit: + push {r0,r1,lr} + + #Set up Ports + bl PortSetup + #Wait 40ms + mov r0, #40 + bl msDelay + #Write Function Set (0x38) + mov r1, 0x38 + bl WriteInstruction + mov r1, #37 + bl usDelay + #Write Function Set (0x38) + mov r1, 0x38 + bl WriteInstruction + mov r1, #37 + bl usDelay + #Write Display On/Off(0x0F) + mov r1, 0x0F + bl WriteInstruction + mov r1, #37 + bl usDelay + #Write Display Clear (0x01) + mov r1, 0x01 + bl WriteInstruction + mov r1, #2 + bl msDelay + + #Write Entry Mode Set (0x06) + mov r1, 0x06 + bl WriteInstruction + + mov r1, #37 + bl usDelay + pop {r0,r1,pc} + +.global lcdClear + # clears the display + # no arguments or return + # includes necessary delay +lcdClear: + push {r0,r1,lr} + mov r1, 0x01 + bl WriteInstruction + # Delay for at least 1.52ms + mov r0, #2 + bl msDelay + pop {r0,r1,pc} + + +.global lcdHome + # moves cursor to the home position + # no arguments or return + # includes necessary delay +lcdHome: + push {r1,lr} + mov r1, #0x02 + bl WriteInstruction + mov r0, #2 + bl msDelay + pop {r1,pc} + +.global lcdSetPosition + # moves cursor to the position indicated + # r0 is the zero-based row and r1 is the zero-based column, no return value + # includes necessary delay +lcdSetPosition: + push {r0,r1,lr} + # Sub values to "actual" positions + sub r0, r0, #1 + sub r1, r1, #1 + # Shift row to actual + lsl r0, r0, #6 + orr r0, r0, r1 + + mov r1, #0x80 + orr r1, r1, r0 + bl WriteInstruction + pop {r0,r1,pc} + +.global lcdPrintString + # prints a null terminated string to the display + # r0 contains the address of the null terminated string (usually located in .data or .rodata), returns the number of characters written to display in r0 + # includes necessary delay +lcdPrintString: + push {r0,r1,r2,r3,lr} + + mov r2, #0 +loop: + ldrb r1, [r0, r2] + cmp r1, #0x00 + beq done + bl WriteData + add r2, r2, #1 + b loop +done: + mov r0, r1 + pop {r0,r1,r2,r3,pc} + +.global lcdPrintNum + # prints a (decimal) number to the display + # the number to be printed is in r0, values of 0 to 9999 will print, anything above 9999 should print Err. + # includes necessary delay +lcdPrintNum: + push {r0,r1,r2,r3,r4,lr} + + bl num_to_ASCII + # Store num in memory + ldr r2, =numToPrint + str r0, [r2] + # Move cursor to right-most position + mov r1, #16 +writeByte: + mov r0, #1 + bl lcdSetPosition + + mov r4, r0 + mov r0, #1 + bl msDelay + mov r0, r4 + + mov r0, r1 + ldrb r1, [r2, r3] + bl WriteData + + mov r4, r0 + mov r0, #1 + bl msDelay + mov r0, r4 + + add r3, r3, #1 + cmp r3, #4 + sub r1, r0, #1 + cmp r3, #4 + bne writeByte + pop {r0,r1,r2,r3,r4,pc} + + +.global lcdCursorLocation + # Returns the location of the cursor on the LCD (1-32) + # Location of cursor is returned in r0 +lcdCursorLocation: + push {r1,lr} + + + pop {r1,pc} + + + +# Takes in a value from 0-9999 and converts it to ASCII +# Input: +# r0: Input binary value + +num_to_ASCII: + + # If outside of range, return ASCII "Err." + push {r1,r2,r3,lr} + + cmp r0,#0 + blt out_of_range + # cmp r0,#9999 + # bgt out_of_range + +# Normal conversion behavior + mov r1, #16 + lsl r0, #3 + sub r1, #3 +shift_cycle: + + lsl r0, #1 + sub r1, #1 + cmp r1, #0 + # Branch to encode section if shifted 16 times + beq encode + +# Verify Each Nibble is less than or equal to 4 + ubfx r2, r0, #16, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + ble 2f + add r2, #3 + bfi r0, r2, #16, #4 +2: ubfx r2, r0, #20, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + ble 3f + add r2, #3 + bfi r0, r2, #20, #4 +3: ubfx r2, r0, #24, #4 + # If value is less than or equal to 4, then skip to next nibble + cmp r2, #4 + ble 4f + add r2, #3 + bfi r0, r2, #24, #4 +4: ubfx r2, r0, #28, #4 + # If value is less than or equal to 4 skip to end + cmp r2, #4 + ble end_verify_nibbles + add r2, #3 + bfi r0, r2, #28, #4 +end_verify_nibbles: + + + b shift_cycle +encode: + mov r3, #3 +# Encode BCD numbers to ASCII + # Extract ones nibble + ubfx r2, r0, #16, #4 + # Insert ones nibble + bfi r1, r2, #0, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #4, #4 + + # Extract tens nibble + ubfx r2, r0, #20, #4 + # Insert tens nibble + bfi r1, r2, #8, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #12, #4 + + # Extract hundreds nibble + ubfx r2, r0, #24, #4 + # Insert hundreds nibble + bfi r1, r2, #16, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #20, #4 + + # Extract thousands nibble + ubfx r2, r0, #28, #4 + # Insert thousands nibble + bfi r1, r2, #24, #4 + # Insert 3 in front of nibble for ASCII encoding + bfi r1, r3, #28, #4 + + b end_ASCII +out_of_range: + # Insert ASCII "Err." + movw r1, #0x722E + movt r1, #0x4572 + +end_ASCII: + # Return value in r0 + mov r0, r1 + pop {r1,r2,r3,pc} + + +.global lcdBusyWait +# Loops until the busy flag is 0 +lcdBusyWait: + + push {r0,r1,r2,r3,lr} + + ldr r1, =GPIOA_BASE + ldr r2, [r1, #GPIO_MODER] + + mov r3, #0 + + orr r2, r2, r3 + + movw r3, 0xFF00 + movt r3, 0x00FF + bic r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + + #Set RS=0, RW=1, E=1 + ldr r2, =GPIOC_BASE + + mov r3, #RS_CLR + str r3, [r2, #GPIO_BSRR] + mov r3, #RW_SET + str r3, [r2, #GPIO_BSRR] + mov r3, #E_SET + str r3, [r2, #GPIO_BSRR] +busy: + #Set E= + mov r3, #E_SET + str r3, [r2, #GPIO_BSRR] + #Set Databus -> R1 + ldr r3, =GPIOA_BASE + ldr r1, [r3, #GPIO_IDR] + #Set E=0 + ldr r2, =GPIOC_BASE + mov r3, #E_CLR + str r3, [r2, #GPIO_BSRR] + + mov r2, #0x0010 + and r1, r2 + lsr r1, #4 + # Are we still busy? + cmp r1, #1 + beq busy + +# Return DB port to original mode + ldr r1, =GPIOA_BASE + ldr r2, [r1, #GPIO_MODER] + + movw r3, 0x5500 + movt r3, 0x0055 + + orr r2,r2, r3 + + movw r3, 0xAA00 + movt r3, 0x00AA + bic r2, r2, r3 + + str r2, [r1, #GPIO_MODER] + + pop {r0,r1,r2,r3,pc} + + +.section .data +numToPrint: + .word 0 diff --git a/lab8adc/Src/main.s b/lab8adc/Src/main.s index 6cf7466..0af7e24 100644 --- a/lab8adc/Src/main.s +++ b/lab8adc/Src/main.s @@ -1,26 +1,69 @@ - .syntax unified - .cpu cortex-m4 - .thumb - .section - .text +# main.s +# Trevor Barnes +# CE2801-031 +.syntax unified +.cpu cortex-m4 +.thumb +.section .text - .global main + .equ RCC_BASE, 0x40023800 + .equ RCC_AHB1ENR, 0x30 + .equ RCC_APB2ENR, 0x44 + .equ GPIOB_EN, 1<<1 + .equ ADC1_EN, 1<<8 + + .equ GPIOB_BASE, 0x40020400 + .equ GPIO_MODER, 0x00 + .equ GPIO_ODR, 0x14 + + .equ ADC1_BASE, 0x40012000 + .equ ADC_SR, 0x00 + .equ ADC_CR2, 0x08 + .equ ADC_SQR3, 0x34 + .equ ADC_DR, 0x4C + +.global main main: - #initialize components bl lcdInit - bl keyInit + bl KeyInit bl timerInit - #bl adc_init - -#Send a single character to adjust the mode of the datalogger -# ['1']['2']['3']['A'] |1 2 3 4 | -# ['4']['5']['6']['B'] |5 6 7 8 | -# ['7']['8']['9']['C'] |9 10 11 12| -# ['*']['0']['#']['D'] |13 14 15 16| -1: bl keyGetkeyNoblock + # Enable GPIOB in RCC + ldr r0, =RCC_BASE + ldr r1, [r0, #RCC_AHB1ENR] + orr r1, r1, #GPIOB_EN + str r1, [r0, #RCC_AHB1ENR] + + # Enable ADC1 in RCC + ldr r1, [r0, #RCC_APB2ENR] + orr r1, r1, #ADC1_EN + str r1, [r0, #RCC_APB2ENR] + + # Temperature Analog on PB0 + ldr r0, =GPIOB_BASE + ldr r1, [r0, #GPIO_MODER] + mov r2, #0b11 + bfi r1, r2, #0, #2 + str r1, [r0, #GPIO_MODER] + + # Turn on ADC1 + ldr r0, =ADC1_BASE + ldr r1, [r0, #ADC_CR2] + orr r1, r1, #(1<<0) + str r1, [R0, #ADC_CR2] + + # ADC Channel 8 + ldr r1, [r0, #ADC_SQR3] + mov r2, #8 + bfi r1, r2, #0, #5 + str r1, [r0, #ADC_SQR3] + +mainLoop: + + bl conversionLoop + bl KeyGetKeyNoblock # '*' Buffer on/off cmp r0, #13 @@ -34,7 +77,7 @@ main: cmp r0, #8 beq setBufferSize - # 'D' Toggle Between displaying temperatures C or F + # 'D' Toggle Between displaying temperatures in C or F cmp r0, #16 beq toggleTemp @@ -47,4 +90,94 @@ main: beq continuousMode #loop that will finish what chosen option and then ask for another instruction - b 1b + b mainLoop + +conversionLoop: + + push {r0, r1, lr} + + ldr r0, =ADC1_BASE + ldr r1, [r0, #ADC_CR2] + orr r1, r1, #(1<<30) + str r1, [r0, #ADC_CR2] + +1: + ldr r1, [r0, #ADC_SR] + ands r1, r1, #(1<<1) + beq 1b + + pop {r0,r1, pc} + + +buffer: + + push {lr} + + + + pop {pc} + +setInterval: + + push {lr} + + # Prompt user for input + + # Store value next typed value on LCD + + # Set interval to stored value + + pop {pc} + +setBufferSize: + + push {lr} + + # Prompt user for two digit input + + # Store the next two typed values on LCD + + # Set buffer size to stored value + + pop {pc} + +toggleTemp: + + push {lr} + + # Alter voltage to degree calculation + + pop {pc} + +displayBufferedResults: + + push {lr} + + # Print whatever the most recent results are + + # Scroll through all items in buffer + + pop {pc} + +continuousMode: + + push {lr} + + # Print periodic results until return button is pushed + + pop {pc} + + +bufferedResults: + .asciz "" + +intervalSet: + .asciz "Type Sample Interval (1-9 seconds):" +interval: + .byte 0 +bufferSize: + .byte 0 +.section .rodata + +startMsg: + .asciz "Select Mode" diff --git a/lab8adc/Src/timer.s b/lab8adc/Src/timer.s index 6f1ec99..ccf7843 100644 --- a/lab8adc/Src/timer.s +++ b/lab8adc/Src/timer.s @@ -1,31 +1,38 @@ - .syntax unified - .cpu cortex-m4 - .thumb - .section - .text +# timer.s +# Trevor Barnes +# CE2801-031 +.syntax unified +.cpu cortex-m4 +.thumb +.section .text - .global timerInit + .equ CCMR_OCC1M_PWM, 0x18 + .equ CCMR_OC1PE, 1<<4 + .equ AFRL_TIM3_CH1_EN, 1<<4 + .equ AFRL_OFFSET, 0x20 + .equ CCMR_OFFSET, 0x18 + .equ TIM3_BASE, 0x24 + +.global timerInit timerInit: push {r0-r4, lr} #Alt func low reg for TIM3 ldr r1, [r0, #AFRL_OFFSET] - bic r1, #16, #4 + bfc r1, #16, #4 orr r1, r1, #AFRL_TIM3_CH1_EN str r1, [r0, #AFRL_OFFSET] - #Enable CCMR1 for preload and set pwm - #Allows for the modification of the pulse + ldr r0, =TIM3_BASE ldr r1, [r0, #CCMR_OFFSET] bfc r1, #4, #3 mov r2, #CCMR_OCC1M_PWM - orr r2, r2, #CCMR_OCC1PE + orr r2, r2, #CCMR_OC1PE orr r1, r1, r2 str r1, [r0, #CCMR_OFFSET] - #Enable CCER to for TIM3 (TIC) - #Every 10 seconds, sample - pop{r0, r4} + + bx lr