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 1ebb499..0000000 Binary files a/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.markers.snap and /dev/null differ 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 1ebb499..0000000 Binary files a/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.syncinfo.snap and /dev/null differ 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 1ebb499..0000000 Binary files a/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap and /dev/null differ 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 ea74131..39fe81a 100644 Binary files a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs index 5723270..f82862f 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs @@ -1,6 +1,6 @@ LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/arch=x86_64 LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/os=win32 -configDescList=org.eclipse.launchbar.core.descriptorType.default\:lab4lcd.elf,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:lab7interrupts Debug,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:lab6lock Debug +configDescList=org.eclipse.launchbar.core.descriptorType.default\:lab4lcd.elf,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:lab6lock Debug,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:lab7interrupts Debug eclipse.preferences.version=1 org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:emptyProject\ Debug/activeLaunchTarget=null\:--- org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:lab4lcd\ Debug/activeLaunchMode=debug diff --git a/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml index 877270b..da5aef1 100644 --- a/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml +++ b/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml @@ -1,9 +1,7 @@ - - - + 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 65c6839..f5978b2 100644 Binary files a/lab6lock/Debug/Src/main.o and b/lab6lock/Debug/Src/main.o differ diff --git a/lab6lock/Debug/lab6lock.elf b/lab6lock/Debug/lab6lock.elf index ab3ef61..e2518dd 100644 Binary files a/lab6lock/Debug/lab6lock.elf and b/lab6lock/Debug/lab6lock.elf differ 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 0000000..ba1632b Binary files /dev/null and b/lab7interrupts/Debug/Src/delay.o differ diff --git a/lab7interrupts/Debug/Src/keypad.o b/lab7interrupts/Debug/Src/keypad.o new file mode 100644 index 0000000..23a774d Binary files /dev/null and b/lab7interrupts/Debug/Src/keypad.o differ diff --git a/lab7interrupts/Debug/Src/lcd.o b/lab7interrupts/Debug/Src/lcd.o new file mode 100644 index 0000000..f36a97e Binary files /dev/null and b/lab7interrupts/Debug/Src/lcd.o differ diff --git a/lab7interrupts/Debug/Src/main.o b/lab7interrupts/Debug/Src/main.o new file mode 100644 index 0000000..f2795a9 Binary files /dev/null and b/lab7interrupts/Debug/Src/main.o differ 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 0000000..c8e1bb9 Binary files /dev/null and b/lab7interrupts/Debug/Src/timer.o differ diff --git a/lab7interrupts/Debug/lab7interrupts.elf b/lab7interrupts/Debug/lab7interrupts.elf new file mode 100644 index 0000000..dd67213 Binary files /dev/null and b/lab7interrupts/Debug/lab7interrupts.elf differ 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 0000000..23088e7 Binary files /dev/null and b/lab8adc/Debug/Src/bad.o differ diff --git a/lab8adc/Debug/Src/delay.o b/lab8adc/Debug/Src/delay.o new file mode 100644 index 0000000..87ff2fa Binary files /dev/null and b/lab8adc/Debug/Src/delay.o differ diff --git a/lab8adc/Debug/Src/keypad.o b/lab8adc/Debug/Src/keypad.o new file mode 100644 index 0000000..ed2785b Binary files /dev/null and b/lab8adc/Debug/Src/keypad.o differ diff --git a/lab8adc/Debug/Src/lcd.o b/lab8adc/Debug/Src/lcd.o new file mode 100644 index 0000000..49bf40d Binary files /dev/null and b/lab8adc/Debug/Src/lcd.o differ diff --git a/lab8adc/Debug/Src/main.o b/lab8adc/Debug/Src/main.o new file mode 100644 index 0000000..5736658 Binary files /dev/null and b/lab8adc/Debug/Src/main.o differ 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 0000000..3136c86 Binary files /dev/null and b/lab8adc/Debug/Src/timer.o differ diff --git a/lab8adc/Debug/lab8adc.elf b/lab8adc/Debug/lab8adc.elf new file mode 100644 index 0000000..af51102 Binary files /dev/null and b/lab8adc/Debug/lab8adc.elf differ diff --git a/lab8adc/Debug/lab8adc.list b/lab8adc/Debug/lab8adc.list new file mode 100644 index 0000000..53677ad --- /dev/null +++ b/lab8adc/Debug/lab8adc.list @@ -0,0 +1,1641 @@ + +lab8adc.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 00000684 080001c4 080001c4 000101c4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 00000014 08000848 08000848 00010848 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 0800085c 0800085c 00020004 2**0 + CONTENTS + 4 .ARM 00000000 0800085c 0800085c 00020004 2**0 + CONTENTS + 5 .preinit_array 00000000 0800085c 0800085c 00020004 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 0800085c 0800085c 0001085c 2**2 + CONTENTS, ALLOC, LOAD, DATA + 7 .fini_array 00000004 08000860 08000860 00010860 2**2 + CONTENTS, ALLOC, LOAD, DATA + 8 .data 00000004 20000000 08000864 00020000 2**0 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 0000001c 20000004 08000868 00020004 2**2 + ALLOC + 10 ._user_heap_stack 00000600 20000020 08000868 00020020 2**0 + ALLOC + 11 .ARM.attributes 00000030 00000000 00000000 00020004 2**0 + CONTENTS, READONLY + 12 .debug_line 000003ac 00000000 00000000 00020034 2**0 + CONTENTS, READONLY, DEBUGGING + 13 .debug_info 000000e0 00000000 00000000 000203e0 2**0 + CONTENTS, READONLY, DEBUGGING + 14 .debug_abbrev 00000076 00000000 00000000 000204c0 2**0 + CONTENTS, READONLY, DEBUGGING + 15 .debug_aranges 000000c8 00000000 00000000 00020538 2**3 + CONTENTS, READONLY, DEBUGGING + 16 .debug_str 000000b5 00000000 00000000 00020600 2**0 + CONTENTS, READONLY, DEBUGGING + 17 .debug_ranges 00000020 00000000 00000000 000206b8 2**3 + CONTENTS, READONLY, DEBUGGING + 18 .debug_frame 0000002c 00000000 00000000 000206d8 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: 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