From 9246562057522df08101888915517e68aa6671f9 Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Fri, 2 Dec 2011 20:51:25 +0000 Subject: [PATCH] - Added an Eclipse demo for the Olimex STM32P103 board. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@12 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- .../.metadata/.lock | 0 .../.metadata/.log | 237 + .../.metadata/.mylyn/repositories.xml.zip | Bin 0 -> 437 bytes .../dialog_settings.xml | 4 + .../.plugins/org.eclipse.cdt.core/.log | 10 + .../Boot.1322834671001.pdom | Bin 0 -> 1216512 bytes .../Prog.1322831217304.pdom | Bin 0 -> 2412544 bytes .../org.eclipse.cdt.core/shareddefaults.xml | 1 + .../.plugins/org.eclipse.cdt.make.core/.log | 0 .../org.eclipse.cdt.make.core/Boot.sc | 405 + .../org.eclipse.cdt.make.core/Prog.sc | 405 + .../org.eclipse.cdt.make.core/specs.c | 1 + .../org.eclipse.cdt.make.core/specs.cpp | 1 + .../org.eclipse.cdt.ui/Boot.build.log | 115 + .../org.eclipse.cdt.ui/Prog.build.log | 195 + .../org.eclipse.cdt.ui/dialog_settings.xml | 25 + .../org.eclipse.cdt.ui/global-build.log | 115 + .../0/302f3cf1091d00111358d2931fee7772 | 27 + .../0/70994e1a0b1d00111358d2931fee7772 | 45 + .../0/70f636a1f31c00111565e8bbe12141cd | 0 .../0/804030d8221d0011116edf0151d9d887 | 27 + .../0/f035cf3f021d00111358d2931fee7772 | 24 + .../0/f0a432570e1d00111358d2931fee7772 | 24 + .../1/302c66b00a1d00111358d2931fee7772 | 24 + .../1/602d9d2d201d00111c63a4b3c7bd9f5b | 0 .../1/a058473c0b1d00111358d2931fee7772 | 24 + .../10/60252d5d041d00111358d2931fee7772 | 24 + .../10/7079cdd10d1d00111358d2931fee7772 | 24 + .../10/c032227c0a1d00111358d2931fee7772 | 90 + .../11/6034d2d10d1d00111358d2931fee7772 | 24 + .../11/909d1c3efa1c00111358d2931fee7772 | 24 + .../11/e06e5a75221d0011116edf0151d9d887 | 0 .../12/80021471e91c00111565e8bbe12141cd | 24 + .../12/c010082d091d00111358d2931fee7772 | 90 + .../13/8046912d201d00111c63a4b3c7bd9f5b | 0 .../13/f0b60204e91c00111565e8bbe12141cd | 26 + .../14/8034d03c071d00111358d2931fee7772 | 90 + .../14/90f50097051d00111358d2931fee7772 | 48 + .../15/00dc4856201d00111c63a4b3c7bd9f5b | 82 + .../15/10c046ffe91c00111565e8bbe12141cd | 90 + .../15/403939ace71c00111565e8bbe12141cd | 81 + .../16/00ce7c1a0e1d00111358d2931fee7772 | 82 + .../16/9015cc3fea1c00111565e8bbe12141cd | 0 .../17/70458efa071d00111358d2931fee7772 | 24 + .../17/7055a2000b1d00111358d2931fee7772 | 90 + .../18/10ad587cff1c00111358d2931fee7772 | 162 + .../18/703ff89ff41c00111565e8bbe12141cd | 28 + .../18/d009b9e4f61c00111565e8bbe12141cd | 166 + .../19/20c814a0f41c00111565e8bbe12141cd | 24 + .../19/20ec95440a1d00111358d2931fee7772 | 27 + .../19/b076c93d091d00111358d2931fee7772 | 24 + .../19/e0b71172f31c00111565e8bbe12141cd | 0 .../1b/a0f7132d091d00111358d2931fee7772 | 24 + .../1b/f0c22d570e1d00111358d2931fee7772 | 27 + .../1c/00a8a240011d00111358d2931fee7772 | 350 + .../1c/20fbfe76f61c00111565e8bbe12141cd | 24 + .../1c/5081ab3f021d00111358d2931fee7772 | 26 + .../1d/10450177f61c00111565e8bbe12141cd | 83 + .../1d/4032521e091d00111358d2931fee7772 | 24 + .../1d/7066e47b0a1d00111358d2931fee7772 | 27 + .../1d/70e32413f71c00111565e8bbe12141cd | 166 + .../1d/d09b3db6221d0011116edf0151d9d887 | 8 + .../1f/201632030d1d00111358d2931fee7772 | 205 + .../1f/70d6a0220a1d00111358d2931fee7772 | 24 + .../1f/b1841a04e91c00111565e8bbe12141cd | 0 .../1f/c111bc440a1d00111358d2931fee7772 | 82 + .../2/30cff776f61c00111565e8bbe12141cd | 27 + .../2/709de046201d00111c63a4b3c7bd9f5b | 0 .../2/9061d663e81c00111565e8bbe12141cd | 42 + .../2/f0425375221d0011116edf0151d9d887 | 0 .../2/f0fc0c72f31c00111565e8bbe12141cd | 0 .../21/90f12fa1f31c00111565e8bbe12141cd | 0 .../22/20968bf0041d00111358d2931fee7772 | 26 + .../23/9055eedb041d00111358d2931fee7772 | 182 + .../23/9082f7d1001d00111358d2931fee7772 | 121 + .../23/a0ee8eb5091d00111358d2931fee7772 | 45 + .../23/c0d9bf3d091d00111358d2931fee7772 | 90 + .../23/e037ed360a1d00111358d2931fee7772 | 24 + .../24/203e379d091d00111358d2931fee7772 | 45 + .../24/60983ed8221d0011116edf0151d9d887 | 45 + .../24/80b11b56201d00111c63a4b3c7bd9f5b | 27 + .../24/90630369041d00111358d2931fee7772 | 81 + .../25/50e8eb76f61c00111565e8bbe12141cd | 34 + .../25/d024de9c0d1d00111358d2931fee7772 | 82 + .../25/f135cf3f021d00111358d2931fee7772 | 81 + .../26/000a49ffe91c00111565e8bbe12141cd | 24 + .../26/f0b431b6221d0011116edf0151d9d887 | 90 + .../27/f03550ffe91c00111565e8bbe12141cd | 8 + .../29/30753b75221d0011116edf0151d9d887 | 31 + .../29/8071d946201d00111c63a4b3c7bd9f5b | 0 .../29/90ee3e31071d00111358d2931fee7772 | 48 + .../29/e0710704e91c00111565e8bbe12141cd | 42 + .../29/e0d4a5f0041d00111358d2931fee7772 | 90 + .../2b/10160172f31c00111565e8bbe12141cd | 0 .../2c/d09a6175221d0011116edf0151d9d887 | 86 + .../2d/1039b583f61c00111565e8bbe12141cd | 74 + .../2d/a0aa67fa071d00111358d2931fee7772 | 26 + .../2d/f022627cff1c00111358d2931fee7772 | 375 + .../2e/e01de8fa0a1d00111358d2931fee7772 | 24 + .../2f/4070bdbf091d00111358d2931fee7772 | 668 ++ .../2f/7047733c071d00111358d2931fee7772 | 224 + .../3/105d23b6221d0011116edf0151d9d887 | 45 + .../3/40be7d7c201d00111c63a4b3c7bd9f5b | 0 .../3/602da9b5091d00111358d2931fee7772 | 24 + .../3/e0afd8450b1d00111358d2931fee7772 | 45 + .../31/b07d855ee91c00111565e8bbe12141cd | 24 + .../32/00e4bde90a1d00111358d2931fee7772 | 90 + .../32/60c14f99221d0011116edf0151d9d887 | 27 + .../32/70774d99221d0011116edf0151d9d887 | 28 + .../32/80911171e91c00111565e8bbe12141cd | 90 + .../32/80e2db46201d00111c63a4b3c7bd9f5b | 0 .../32/e04656f1091d00111358d2931fee7772 | 24 + .../33/702b43a1f31c00111565e8bbe12141cd | 0 .../33/c0fb0b3efa1c00111358d2931fee7772 | 34 + .../34/802fcbd10d1d00111358d2931fee7772 | 90 + .../34/c04aaff0041d00111358d2931fee7772 | 81 + .../36/00349d030d1d00111358d2931fee7772 | 24 + .../36/f0eea1030d1d00111358d2931fee7772 | 24 + .../37/0067f0eafe1c00111358d2931fee7772 | 79 + .../37/106277fa071d00111358d2931fee7772 | 48 + .../37/80118e6a201d00111c63a4b3c7bd9f5b | 0 .../37/a08a307c0a1d00111358d2931fee7772 | 24 + .../37/b0ec28a1f31c00111565e8bbe12141cd | 0 .../37/f01a4ff1091d00111358d2931fee7772 | 90 + .../38/7024bbd70a1d00111358d2931fee7772 | 45 + .../38/80b854dc041d00111358d2931fee7772 | 90 + .../38/c014277c0a1d00111358d2931fee7772 | 24 + .../39/a0b97f6a201d00111c63a4b3c7bd9f5b | 0 .../3a/30e63d75221d0011116edf0151d9d887 | 27 + .../3a/404540a1f31c00111565e8bbe12141cd | 0 .../3a/71bd1871e91c00111565e8bbe12141cd | 8 + .../3a/c0e46375221d0011116edf0151d9d887 | 0 .../3b/40c2642f051d00111358d2931fee7772 | 26 + .../3b/e0ace5fa0a1d00111358d2931fee7772 | 24 + .../3d/10847a1a0e1d00111358d2931fee7772 | 24 + .../3e/4055c9d70a1d00111358d2931fee7772 | 90 + .../3e/c0337e56e71c00111565e8bbe12141cd | 0 .../3e/d068e6890b1d00111358d2931fee7772 | 90 + .../3e/f0bb832f051d00111358d2931fee7772 | 24 + .../3f/90512342221d0011116edf0151d9d887 | 28 + .../3f/a05507b5e91c00111565e8bbe12141cd | 81 + .../3f/a07302b5e91c00111565e8bbe12141cd | 24 + .../4/7090411e091d00111358d2931fee7772 | 48 + .../4/a1c7875ee91c00111565e8bbe12141cd | 81 + .../4/e0c391b5001d00111358d2931fee7772 | 118 + .../40/5065de3c071d00111358d2931fee7772 | 81 + .../40/604868cdfe1c00111358d2931fee7772 | 79 + .../41/00e0de360a1d00111358d2931fee7772 | 90 + .../41/b0deef890b1d00111358d2931fee7772 | 24 + .../42/a0fb327c0a1d00111358d2931fee7772 | 82 + .../43/60e0e5e20a1d00111358d2931fee7772 | 27 + .../43/70efd43c071d00111358d2931fee7772 | 24 + .../43/b02900b5e91c00111565e8bbe12141cd | 24 + .../43/d0c43eedf31c00111565e8bbe12141cd | 74 + .../44/70cc926a201d00111c63a4b3c7bd9f5b | 0 .../44/905dd53d091d00111358d2931fee7772 | 82 + .../45/00a4233c0b1d00111358d2931fee7772 | 27 + .../45/10a79a440a1d00111358d2931fee7772 | 45 + .../45/70ca42b5091d00111358d2931fee7772 | 668 ++ .../46/312c66b00a1d00111358d2931fee7772 | 24 + .../46/60e2f3af0a1d00111358d2931fee7772 | 668 ++ .../46/708f45000b1d00111358d2931fee7772 | 668 ++ .../47/3045c864f41c00111565e8bbe12141cd | 28 + .../47/a08473e20c1d00111358d2931fee7772 | 90 + .../47/a0f575e20c1d00111358d2931fee7772 | 24 + .../48/4087a8e90a1d00111358d2931fee7772 | 45 + .../48/70c6a4000b1d00111358d2931fee7772 | 24 + .../48/f0d97e2f051d00111358d2931fee7772 | 90 + .../49/30456599221d0011116edf0151d9d887 | 74 + .../49/50b6621a0e1d00111358d2931fee7772 | 45 + .../49/706a285d041d00111358d2931fee7772 | 90 + .../49/e08219a2221d0011116edf0151d9d887 | 24 + .../4a/e0093aedf31c00111565e8bbe12141cd | 28 + .../4b/b05e297c0a1d00111358d2931fee7772 | 24 + .../4b/b0bb3d3c0b1d00111358d2931fee7772 | 90 + .../4c/2058731a0e1d00111358d2931fee7772 | 90 + .../4c/40a85b99221d0011116edf0151d9d887 | 74 + .../4c/40ac611a0b1d00111358d2931fee7772 | 24 + .../4c/b051e9450b1d00111358d2931fee7772 | 24 + .../4d/30c196c50c1d00111358d2931fee7772 | 90 + .../4e/10da04e30a1d00111358d2931fee7772 | 24 + .../4e/80a95e52201d00111c63a4b3c7bd9f5b | 24 + .../4e/a00cee450b1d00111358d2931fee7772 | 82 + .../4e/a037fc68041d00111358d2931fee7772 | 24 + .../4e/f0a7ad0f001d00111358d2931fee7772 | 120 + .../4f/30d71a570e1d00111358d2931fee7772 | 74 + .../4f/4014571e091d00111358d2931fee7772 | 81 + .../5/3064fbe20a1d00111358d2931fee7772 | 24 + .../5/a0d59f64f41c00111565e8bbe12141cd | 161 + .../50/009509e30a1d00111358d2931fee7772 | 82 + .../50/2088d0360a1d00111358d2931fee7772 | 45 + .../50/30f3f8e20a1d00111358d2931fee7772 | 90 + .../50/40c836ace71c00111565e8bbe12141cd | 24 + .../50/60b5459c0d1d00111358d2931fee7772 | 205 + .../50/a0e11c89e71c00111565e8bbe12141cd | 90 + .../50/e03cfdc0011d00111358d2931fee7772 | 24 + .../51/e138a4030d1d00111358d2931fee7772 | 82 + .../52/2021141a0e1d00111358d2931fee7772 | 214 + .../52/d0bd80b5091d00111358d2931fee7772 | 27 + .../53/507c5499221d0011116edf0151d9d887 | 24 + .../53/60a215c0091d00111358d2931fee7772 | 24 + .../53/c0c91504e91c00111565e8bbe12141cd | 0 .../54/a01313ace71c00111565e8bbe12141cd | 26 + .../54/a0c6f968041d00111358d2931fee7772 | 90 + .../54/b01c4dedf31c00111565e8bbe12141cd | 27 + .../54/b1eb5ada011d00111358d2931fee7772 | 81 + .../54/c03056da011d00111358d2931fee7772 | 90 + .../54/d0a6f6d70a1d00111358d2931fee7772 | 82 + .../56/502d5931071d00111358d2931fee7772 | 24 + .../57/00dc5fd8221d0011116edf0151d9d887 | 24 + .../57/104a6c99221d0011116edf0151d9d887 | 34 + .../59/3012309d091d00111358d2931fee7772 | 27 + .../59/40a5a3e90a1d00111358d2931fee7772 | 27 + .../59/c010569d091d00111358d2931fee7772 | 82 + .../59/c03adc3b0b1d00111358d2931fee7772 | 668 ++ .../59/e06a725ee91c00111565e8bbe12141cd | 26 + .../5a/0055c0e90a1d00111358d2931fee7772 | 24 + .../5a/80f8b3d70a1d00111358d2931fee7772 | 27 + .../5a/a0388a5ee91c00111565e8bbe12141cd | 8 + .../5a/e0460f72f31c00111565e8bbe12141cd | 0 .../5a/f0beaeca041d00111358d2931fee7772 | 26 + .../5b/0047dafe071d00111358d2931fee7772 | 216 + .../5b/1064ef93ea1c00111565e8bbe12141cd | 8 + .../5b/d0a939570e1d00111358d2931fee7772 | 83 + .../5b/f0c44dffe91c00111565e8bbe12141cd | 81 + .../5c/500d32ace71c00111565e8bbe12141cd | 90 + .../5c/8082906a201d00111c63a4b3c7bd9f5b | 0 .../5c/d03d1ea2221d0011116edf0151d9d887 | 82 + .../5c/f017acf8071d00111358d2931fee7772 | 39 + .../5d/30ad3da1f31c00111565e8bbe12141cd | 0 .../5d/910d2489e71c00111565e8bbe12141cd | 8 + .../5e/a04dc43c071d00111358d2931fee7772 | 48 + .../5e/a0fd07dae91c00111565e8bbe12141cd | 8 + .../5f/d00d8df9221d0011116edf0151d9d887 | 24 + .../6/4003ee71f31c00111565e8bbe12141cd | 0 .../6/b0b8fdb4e91c00111565e8bbe12141cd | 90 + .../6/f07053f9061d00111358d2931fee7772 | 41 + .../60/90b2182d091d00111358d2931fee7772 | 82 + .../60/a0d58e450b1d00111358d2931fee7772 | 668 ++ .../60/c0c27b56e71c00111565e8bbe12141cd | 0 .../60/e07433dc041d00111358d2931fee7772 | 26 + .../61/50747b7c201d00111c63a4b3c7bd9f5b | 0 .../62/b0ebc3c50c1d00111358d2931fee7772 | 82 + .../62/e09a4c9d091d00111358d2931fee7772 | 90 + .../63/60d65b98201d00111c63a4b3c7bd9f5b | 24 + .../64/b010c53fea1c00111565e8bbe12141cd | 0 .../65/714d0f97051d00111358d2931fee7772 | 24 + .../66/10ea8afa071d00111358d2931fee7772 | 24 + .../66/60325299221d0011116edf0151d9d887 | 24 + .../66/7001a2b5091d00111358d2931fee7772 | 90 + .../66/a0c32189e71c00111565e8bbe12141cd | 24 + .../66/d01a3c570e1d00111358d2931fee7772 | 8 + .../66/d081ef360a1d00111358d2931fee7772 | 24 + .../66/e0b758f1091d00111358d2931fee7772 | 82 + .../68/c071f778e01c00111cadaab22f5679ad | 161 + .../69/90dba4f9221d0011116edf0151d9d887 | 83 + .../69/c0b951d10d1d00111358d2931fee7772 | 214 + .../69/e0f31ba2221d0011116edf0151d9d887 | 24 + .../6a/20dfcdfa0a1d00111358d2931fee7772 | 45 + .../6b/00c07b96051d00111358d2931fee7772 | 182 + .../6b/500cede20a1d00111358d2931fee7772 | 45 + .../6c/007b4bffe91c00111565e8bbe12141cd | 24 + .../6c/7062e709001d00111358d2931fee7772 | 104 + .../6d/40005fb00a1d00111358d2931fee7772 | 90 + .../6d/602e5edc041d00111358d2931fee7772 | 81 + .../6d/c011bc440a1d00111358d2931fee7772 | 24 + .../6d/e014003efa1c00111358d2931fee7772 | 74 + .../6e/408fc05e071d00111358d2931fee7772 | 81 + .../6e/a0a45752201d00111c63a4b3c7bd9f5b | 34 + .../6f/306ace9c091d00111358d2931fee7772 | 655 ++ .../6f/405e30c50c1d00111358d2931fee7772 | 173 + .../6f/e048ab440a1d00111358d2931fee7772 | 90 + .../7/00be64d8221d0011116edf0151d9d887 | 8 + .../7/603113c0091d00111358d2931fee7772 | 90 + .../7/c034fc70e91c00111565e8bbe12141cd | 26 + .../70/50774d1e091d00111358d2931fee7772 | 90 + .../70/515d1ac0091d00111358d2931fee7772 | 82 + .../70/b07cd683f61c00111565e8bbe12141cd | 24 + .../71/70aa5498201d00111c63a4b3c7bd9f5b | 34 + .../73/20d02ef0041d00111358d2931fee7772 | 182 + .../73/b02c403c0b1d00111358d2931fee7772 | 24 + .../73/d088e964f41c00111565e8bbe12141cd | 83 + .../74/302d9ce20a1d00111358d2931fee7772 | 668 ++ .../74/60655998201d00111c63a4b3c7bd9f5b | 27 + .../75/502fee63e81c00111565e8bbe12141cd | 8 + .../75/b0f0f996051d00111358d2931fee7772 | 26 + .../76/006c7cf9221d0011116edf0151d9d887 | 28 + .../76/60bca6b5091d00111358d2931fee7772 | 24 + .../77/60b9767c201d00111c63a4b3c7bd9f5b | 0 .../77/e05ce264f41c00111565e8bbe12141cd | 24 + .../78/20aef5d9e91c00111565e8bbe12141cd | 42 + .../79/b0cf84b8011d00111358d2931fee7772 | 319 + .../7a/507646ff071d00111358d2931fee7772 | 24 + .../7a/8050a65e071d00111358d2931fee7772 | 48 + .../7a/a03f1f04e91c00111565e8bbe12141cd | 8 + .../7a/e02ec330071d00111358d2931fee7772 | 198 + .../7b/200b99c50c1d00111358d2931fee7772 | 24 + .../7b/c042c4ca041d00111358d2931fee7772 | 24 + .../7c/0012cb9c0d1d00111358d2931fee7772 | 24 + .../7c/a0c25252201d00111c63a4b3c7bd9f5b | 74 + .../7d/202604a2221d0011116edf0151d9d887 | 45 + .../7d/40ca5c1a0b1d00111358d2931fee7772 | 90 + .../7e/50205e98201d00111c63a4b3c7bd9f5b | 24 + .../7e/b0c2eb450b1d00111358d2931fee7772 | 24 + .../7f/50bc5631071d00111358d2931fee7772 | 24 + .../8/90ecd23d091d00111358d2931fee7772 | 24 + .../80/000ac83f021d00111358d2931fee7772 | 24 + .../80/601bdc3c071d00111358d2931fee7772 | 24 + .../80/70bd1871e91c00111565e8bbe12141cd | 81 + .../80/900d2489e71c00111565e8bbe12141cd | 81 + .../80/d05365e20c1d00111358d2931fee7772 | 45 + .../80/e038a4030d1d00111358d2931fee7772 | 24 + .../81/c014c446201d00111c63a4b3c7bd9f5b | 0 .../82/30cdcb360a1d00111358d2931fee7772 | 27 + .../82/6020a3220a1d00111358d2931fee7772 | 82 + .../82/81c9233efa1c00111358d2931fee7772 | 8 + .../82/e04bc883f61c00111565e8bbe12141cd | 27 + .../83/e0a03bff071d00111358d2931fee7772 | 90 + .../84/206fc7890b1d00111358d2931fee7772 | 27 + .../84/3040fa76f61c00111565e8bbe12141cd | 24 + .../84/6021e97b0a1d00111358d2931fee7772 | 45 + .../84/b0841a04e91c00111565e8bbe12141cd | 0 .../85/50916098201d00111c63a4b3c7bd9f5b | 83 + .../86/10a7613f021d00111358d2931fee7772 | 355 + .../86/60fafc9ff41c00111565e8bbe12141cd | 74 + .../86/9041162d091d00111358d2931fee7772 | 24 + .../87/d0efaf02f71c00111565e8bbe12141cd | 166 + .../88/6074e963e81c00111565e8bbe12141cd | 24 + .../89/5063b95e071d00111358d2931fee7772 | 24 + .../89/b0fdc8ca041d00111358d2931fee7772 | 81 + .../89/d0f2f1360a1d00111358d2931fee7772 | 82 + .../8a/400c395d041d00111358d2931fee7772 | 81 + .../8a/907e92220a1d00111358d2931fee7772 | 24 + .../8a/c0a158da011d00111358d2931fee7772 | 24 + .../8b/104b48ff071d00111358d2931fee7772 | 24 + .../8b/10cd4975221d0011116edf0151d9d887 | 24 + .../8b/30218a030d1d00111358d2931fee7772 | 45 + .../8b/307e12a0f41c00111565e8bbe12141cd | 24 + .../8b/8005e584011d00111358d2931fee7772 | 319 + .../8c/10214456201d00111c63a4b3c7bd9f5b | 24 + .../8c/a031ce3d091d00111358d2931fee7772 | 24 + .../8c/f0f13f7c201d00111c63a4b3c7bd9f5b | 0 .../8d/00ad5ee90a1d00111358d2931fee7772 | 668 ++ .../8d/30b3c6fa0a1d00111358d2931fee7772 | 27 + .../8d/a03490220a1d00111358d2931fee7772 | 90 + .../8d/a035cf63e81c00111565e8bbe12141cd | 26 + .../8f/40aa3bace71c00111565e8bbe12141cd | 8 + .../8f/50f2b65e071d00111358d2931fee7772 | 90 + .../8f/a091a2f9221d0011116edf0151d9d887 | 34 + .../8f/d073fe2c091d00111358d2931fee7772 | 45 + .../9/006b4656201d00111c63a4b3c7bd9f5b | 24 + .../9/a0664fedf31c00111565e8bbe12141cd | 24 + .../90/11214456201d00111c63a4b3c7bd9f5b | 24 + .../90/60643642221d0011116edf0151d9d887 | 24 + .../90/60725431071d00111358d2931fee7772 | 90 + .../90/70dc0c97051d00111358d2931fee7772 | 90 + .../90/c0a1c1c50c1d00111358d2931fee7772 | 24 + .../90/f03dd29c0d1d00111358d2931fee7772 | 24 + .../92/e005862f051d00111358d2931fee7772 | 81 + .../93/31eb7620021d00111358d2931fee7772 | 81 + .../94/e0ee34570e1d00111358d2931fee7772 | 24 + .../95/207f5a56e71c00111565e8bbe12141cd | 0 .../95/60e7e246201d00111c63a4b3c7bd9f5b | 0 .../95/d0204252201d00111c63a4b3c7bd9f5b | 28 + .../96/408480030d1d00111358d2931fee7772 | 27 + .../96/7072e276f61c00111565e8bbe12141cd | 74 + .../96/a0cbc93fea1c00111565e8bbe12141cd | 0 .../97/41307220021d00111358d2931fee7772 | 24 + .../97/80dc81e20c1d00111358d2931fee7772 | 24 + .../97/e0464aff071d00111358d2931fee7772 | 81 + .../98/d05e8c68041d00111358d2931fee7772 | 168 + .../98/f0f4d3450b1d00111358d2931fee7772 | 27 + .../99/a0d4fdbf091d00111358d2931fee7772 | 27 + .../9a/60eca49c0d1d00111358d2931fee7772 | 90 + .../9a/d077ba46201d00111c63a4b3c7bd9f5b | 0 .../9a/d095eb68041d00111358d2931fee7772 | 48 + .../9c/00792b570e1d00111358d2931fee7772 | 34 + .../9d/001f74890b1d00111358d2931fee7772 | 169 + .../9d/2071cf64f41c00111565e8bbe12141cd | 74 + .../9d/c09a62ca041d00111358d2931fee7772 | 212 + .../9d/d040073efa1c00111358d2931fee7772 | 74 + .../9e/80d58e2d201d00111c63a4b3c7bd9f5b | 0 .../9e/d0d8ecfa0a1d00111358d2931fee7772 | 82 + .../9f/905f5c52201d00111c63a4b3c7bd9f5b | 24 + .../9f/9086ce3fea1c00111565e8bbe12141cd | 0 .../9f/f01d43da011d00111358d2931fee7772 | 26 + .../a/20e76ab00a1d00111358d2931fee7772 | 82 + .../a/6010a7000b1d00111358d2931fee7772 | 24 + .../a/90a2493c0b1d00111358d2931fee7772 | 82 + .../a/d0011472f31c00111565e8bbe12141cd | 0 .../a/e0af682d201d00111c63a4b3c7bd9f5b | 0 .../a0/802957dc041d00111358d2931fee7772 | 24 + .../a0/c0b2e8890b1d00111358d2931fee7772 | 24 + .../a1/1013781a0e1d00111358d2931fee7772 | 24 + .../a1/20e301dae91c00111565e8bbe12141cd | 24 + .../a2/6003e763e81c00111565e8bbe12141cd | 24 + .../a2/6087976a201d00111c63a4b3c7bd9f5b | 0 .../a2/80731671e91c00111565e8bbe12141cd | 24 + .../a2/c0b4786a201d00111c63a4b3c7bd9f5b | 0 .../a3/a0b391000b1d00111358d2931fee7772 | 45 + .../a4/507e34ace71c00111565e8bbe12141cd | 24 + .../a5/407f3356201d00111c63a4b3c7bd9f5b | 90 + .../a5/6048747c201d00111c63a4b3c7bd9f5b | 0 .../a5/a0ee822d201d00111c63a4b3c7bd9f5b | 0 .../a5/c068a62c091d00111358d2931fee7772 | 655 ++ .../a5/e0e038b6221d0011116edf0151d9d887 | 24 + .../a6/f01a0872f31c00111565e8bbe12141cd | 0 .../a9/c03994f9221d0011116edf0151d9d887 | 74 + .../a9/f081f8c0011d00111358d2931fee7772 | 90 + .../aa/50c31897051d00111358d2931fee7772 | 81 + .../aa/601953b00a1d00111358d2931fee7772 | 45 + .../aa/b00c835ee91c00111565e8bbe12141cd | 90 + .../aa/e0f2b33d091d00111358d2931fee7772 | 45 + .../aa/f01fc183f61c00111565e8bbe12141cd | 34 + .../ab/a0dc39a1f31c00111565e8bbe12141cd | 0 .../ab/d0b07a220a1d00111358d2931fee7772 | 27 + .../ab/e0faff5c041d00111358d2931fee7772 | 45 + .../ac/00d10572f31c00111565e8bbe12141cd | 0 .../ac/50ec17c0091d00111358d2931fee7772 | 24 + .../ac/b0ce673d091d00111358d2931fee7772 | 655 ++ .../ac/c06b7f220a1d00111358d2931fee7772 | 45 + .../ad/004d62d8221d0011116edf0151d9d887 | 82 + .../ad/30e1a683f61c00111565e8bbe12141cd | 28 + .../ae/10925dd8221d0011116edf0151d9d887 | 24 + .../b/10ddb745ed1c00111565e8bbe12141cd | 8 + .../b/601f86c50c1d00111358d2931fee7772 | 45 + .../b/80df1bffe91c00111565e8bbe12141cd | 26 + .../b0/80c9233efa1c00111358d2931fee7772 | 83 + .../b0/80d53c1e091d00111358d2931fee7772 | 26 + .../b1/3082eed9e91c00111565e8bbe12141cd | 26 + .../b1/a0521f89e71c00111565e8bbe12141cd | 24 + .../b1/e016edb4e91c00111565e8bbe12141cd | 26 + .../b1/f08b51f1091d00111358d2931fee7772 | 24 + .../b2/80d904c0091d00111358d2931fee7772 | 45 + .../b2/e0fe33b6221d0011116edf0151d9d887 | 24 + .../b2/f0922fff071d00111358d2931fee7772 | 48 + .../b3/c0793adc041d00111358d2931fee7772 | 48 + .../b3/c0bd4b52201d00111c63a4b3c7bd9f5b | 74 + .../b3/f0a1dd64f41c00111565e8bbe12141cd | 34 + .../b4/9095a15e071d00111358d2931fee7772 | 26 + .../b4/91dba4f9221d0011116edf0151d9d887 | 8 + .../b4/b0edd883f61c00111565e8bbe12141cd | 83 + .../b4/e07aefd70a1d00111358d2931fee7772 | 24 + .../b5/703d956a201d00111c63a4b3c7bd9f5b | 0 .../b5/70b9e463e81c00111565e8bbe12141cd | 90 + .../b5/a0af9df9221d0011116edf0151d9d887 | 74 + .../b5/c0f5b53c071d00111358d2931fee7772 | 26 + .../b6/20304075221d0011116edf0151d9d887 | 24 + .../b6/306bffa1221d0011116edf0151d9d887 | 27 + .../b6/60f33342221d0011116edf0151d9d887 | 27 + .../b6/a07a5c7c201d00111c63a4b3c7bd9f5b | 0 .../b7/20e0e7c0011d00111358d2931fee7772 | 26 + .../b7/403cb03f021d00111358d2931fee7772 | 45 + .../b7/608f90fa071d00111358d2931fee7772 | 81 + .../b7/609eabb5091d00111358d2931fee7772 | 82 + .../b7/c023eb890b1d00111358d2931fee7772 | 24 + .../b8/d0d1f1b4e91c00111565e8bbe12141cd | 42 + .../b9/c0bfbcc50c1d00111358d2931fee7772 | 24 + .../ba/00c39a030d1d00111358d2931fee7772 | 90 + .../ba/5060d9d10d1d00111358d2931fee7772 | 82 + .../ba/707359dc041d00111358d2931fee7772 | 24 + .../ba/d0077756e71c00111565e8bbe12141cd | 0 .../bb/300d10a0f41c00111565e8bbe12141cd | 27 + .../bb/b00312e20c1d00111358d2931fee7772 | 205 + .../bb/c0f045edf31c00111565e8bbe12141cd | 74 + .../bb/d0e5b4440a1d00111358d2931fee7772 | 24 + .../bb/f0aedf68041d00111358d2931fee7772 | 26 + .../bc/203917a0f41c00111565e8bbe12141cd | 83 + .../bc/40307220021d00111358d2931fee7772 | 90 + .../bc/908e9c3dee1c00111565e8bbe12141cd | 103 + .../bd/10215bd8221d0011116edf0151d9d887 | 24 + .../bd/e0eab5ca041d00111358d2931fee7772 | 48 + .../be/50d45d1a0e1d00111358d2931fee7772 | 27 + .../bf/c06148edf31c00111565e8bbe12141cd | 34 + .../c/505d1ac0091d00111358d2931fee7772 | 24 + .../c0/a0fa34a1f31c00111565e8bbe12141cd | 0 .../c0/f0dd9dd10d1d00111358d2931fee7772 | 27 + .../c1/0051e1360a1d00111358d2931fee7772 | 24 + .../c1/109becc0011d00111358d2931fee7772 | 45 + .../c1/40c30da0f41c00111565e8bbe12141cd | 34 + .../c1/d07160e20c1d00111358d2931fee7772 | 27 + .../c1/e0ebf1d70a1d00111358d2931fee7772 | 24 + .../c2/80625a20021d00111358d2931fee7772 | 26 + .../c2/a086112d091d00111358d2931fee7772 | 24 + .../c2/e0f8d69c0d1d00111358d2931fee7772 | 24 + .../c3/2079f771f31c00111565e8bbe12141cd | 0 .../c3/4024ed9fe61c00111565e8bbe12141cd | 206 + .../c3/502604a0f41c00111565e8bbe12141cd | 74 + .../c3/901a8a2d201d00111c63a4b3c7bd9f5b | 0 .../c4/a0c7875ee91c00111565e8bbe12141cd | 24 + .../c5/3099ffd9e91c00111565e8bbe12141cd | 90 + .../c5/a0fd30220a1d00111358d2931fee7772 | 668 ++ .../c6/0099c53f021d00111358d2931fee7772 | 90 + .../c6/a0d751edf31c00111565e8bbe12141cd | 83 + .../c6/a0f517ace71c00111565e8bbe12141cd | 42 + .../c6/d025775ee91c00111565e8bbe12141cd | 42 + .../c7/10a2751a0e1d00111358d2931fee7772 | 24 + .../c8/8046db76f61c00111565e8bbe12141cd | 74 + .../c8/900e1f3efa1c00111358d2931fee7772 | 24 + .../c8/90bb969c0d1d00111358d2931fee7772 | 45 + .../c9/606e0aedf31c00111565e8bbe12141cd | 161 + .../c9/f00fc5e90a1d00111358d2931fee7772 | 24 + .../cb/50e84f1e091d00111358d2931fee7772 | 24 + .../cb/90ee5952201d00111c63a4b3c7bd9f5b | 27 + .../cb/e0c38af9221d0011116edf0151d9d887 | 24 + .../cc/00e7d864f41c00111565e8bbe12141cd | 74 + .../cc/a0ce1c04e91c00111565e8bbe12141cd | 81 + .../cc/f03817a2221d0011116edf0151d9d887 | 24 + .../cd/207668b00a1d00111358d2931fee7772 | 24 + .../ce/c0f25a9d091d00111358d2931fee7772 | 8 + .../ce/f0bfead70a1d00111358d2931fee7772 | 24 + .../cf/b0eb5ada011d00111358d2931fee7772 | 24 + .../cf/b11c4dedf31c00111565e8bbe12141cd | 24 + .../d/b04ff2890b1d00111358d2931fee7772 | 82 + .../d/f0cef85c041d00111358d2931fee7772 | 26 + .../d0/30535356e71c00111565e8bbe12141cd | 0 .../d2/8041d33fea1c00111565e8bbe12141cd | 0 .../d3/8000d746201d00111c63a4b3c7bd9f5b | 0 .../d3/c0f857440a1d00111358d2931fee7772 | 668 ++ .../d3/d08faaf0041d00111358d2931fee7772 | 24 + .../d3/f014cb9ff41c00111565e8bbe12141cd | 161 + .../d4/30eb7620021d00111358d2931fee7772 | 24 + .../d4/60b42a5d041d00111358d2931fee7772 | 24 + .../d4/60b814faf61c00111565e8bbe12141cd | 166 + .../d4/60c407570e1d00111358d2931fee7772 | 28 + .../d4/7072a4b5091d00111358d2931fee7772 | 24 + .../d4/a0e2173efa1c00111358d2931fee7772 | 27 + .../d4/e00b4f9d091d00111358d2931fee7772 | 24 + .../d5/40a3541e091d00111358d2931fee7772 | 0 .../d5/801a6152201d00111c63a4b3c7bd9f5b | 83 + .../d6/104b07e30a1d00111358d2931fee7772 | 24 + .../d6/c0d1c1ca041d00111358d2931fee7772 | 90 + .../d7/703e1950011d00111358d2931fee7772 | 352 + .../d7/a0eecc76f61c00111565e8bbe12141cd | 28 + .../d7/b151e9450b1d00111358d2931fee7772 | 24 + .../d7/e047f72c091d00111358d2931fee7772 | 27 + .../d8/41f7b2000b1d00111358d2931fee7772 | 82 + .../d8/5003797c201d00111c63a4b3c7bd9f5b | 0 .../d9/00d76856e71c00111565e8bbe12141cd | 0 .../da/c0a0b9440a1d00111358d2931fee7772 | 24 + .../da/d0c6539d091d00111358d2931fee7772 | 24 + .../db/803997220a1d00111358d2931fee7772 | 24 + .../db/c007e7450b1d00111358d2931fee7772 | 90 + .../db/e0192d3c0b1d00111358d2931fee7772 | 45 + .../dc/1000d8d9011d00111358d2931fee7772 | 173 + .../dc/20ea40f1091d00111358d2931fee7772 | 45 + .../dc/408f6cd70a1d00111358d2931fee7772 | 668 ++ .../dc/b0600371e91c00111565e8bbe12141cd | 42 + .../dc/c0fa1089e71c00111565e8bbe12141cd | 42 + .../dc/d055519d091d00111358d2931fee7772 | 24 + .../dd/20d944a1f31c00111565e8bbe12141cd | 0 .../dd/90f20069041d00111358d2931fee7772 | 24 + .../dd/f0c714a2221d0011116edf0151d9d887 | 90 + .../de/00e5d0890b1d00111358d2931fee7772 | 45 + .../de/80ef4f98201d00111c63a4b3c7bd9f5b | 74 + .../de/b01eb08ce01c00111cadaab22f5679ad | 161 + .../df/704d0f97051d00111358d2931fee7772 | 24 + .../df/e0d25bc3ec1c00111565e8bbe12141cd | 8 + .../e/10a889f0091d00111358d2931fee7772 | 121 + .../e0/30f735ffe91c00111565e8bbe12141cd | 42 + .../e2/c0efd52e051d00111358d2931fee7772 | 121 + .../e2/e0494ada011d00111358d2931fee7772 | 45 + .../e3/10be26570e1d00111358d2931fee7772 | 74 + .../e3/20878e7c201d00111c63a4b3c7bd9f5b | 0 .../e3/5049fb190b1d00111358d2931fee7772 | 668 ++ .../e3/e0e185f9221d0011116edf0151d9d887 | 27 + .../e4/4042987b0a1d00111358d2931fee7772 | 668 ++ .../e4/c078792d201d00111c63a4b3c7bd9f5b | 0 .../e4/c0f0b0d10d1d00111358d2931fee7772 | 45 + .../e4/e0840789e71c00111565e8bbe12141cd | 26 + .../e5/403b5f1a0b1d00111358d2931fee7772 | 24 + .../e5/d07589b9fe1c00111358d2931fee7772 | 164 + .../e6/30ee6b2f051d00111358d2931fee7772 | 48 + .../e6/e0adffc0011d00111358d2931fee7772 | 24 + .../e8/10bb6e99221d0011116edf0151d9d887 | 83 + .../e8/30f6631a0b1d00111358d2931fee7772 | 24 + .../e8/60a5d4d10d1d00111358d2931fee7772 | 24 + .../e8/702684e20c1d00111358d2931fee7772 | 82 + .../e8/f0fc53f1091d00111358d2931fee7772 | 24 + .../e9/e03be3fa0a1d00111358d2931fee7772 | 90 + .../ea/f04a812f051d00111358d2931fee7772 | 24 + .../eb/0001ce1f021d00111358d2931fee7772 | 352 + .../eb/c03b2aff071d00111358d2931fee7772 | 26 + .../eb/f012e064f41c00111565e8bbe12141cd | 27 + .../ec/70f37ec50c1d00111358d2931fee7772 | 27 + .../ec/d00106dae91c00111565e8bbe12141cd | 81 + .../ec/d0f53098201d00111c63a4b3c7bd9f5b | 74 + .../ed/002ef43dfa1c00111358d2931fee7772 | 28 + .../ed/806d471a0b1d00111358d2931fee7772 | 27 + .../ed/a05f852d201d00111c63a4b3c7bd9f5b | 0 .../ee/a0e7443c0b1d00111358d2931fee7772 | 24 + .../ef/f02a88fa071d00111358d2931fee7772 | 90 + .../f0/203376360a1d00111358d2931fee7772 | 668 ++ .../f0/60e5eb63e81c00111565e8bbe12141cd | 81 + .../f0/701d5f20021d00111358d2931fee7772 | 45 + .../f0/d067eafa0a1d00111358d2931fee7772 | 24 + .../f1/000604dae91c00111565e8bbe12141cd | 24 + .../f1/60b62256201d00111c63a4b3c7bd9f5b | 45 + .../f1/60d1b496051d00111358d2931fee7772 | 37 + .../f1/d02a3bb6221d0011116edf0151d9d887 | 82 + .../f1/f0206b56e71c00111565e8bbe12141cd | 0 .../f2/60d53842221d0011116edf0151d9d887 | 24 + .../f2/70ed4bb00a1d00111358d2931fee7772 | 27 + .../f2/b08cc6ca041d00111358d2931fee7772 | 24 + .../f2/d000adf0041d00111358d2931fee7772 | 24 + .../f3/2187c869ea1c00111565e8bbe12141cd | 0 .../f3/40f7b2000b1d00111358d2931fee7772 | 24 + .../f3/50903d42221d0011116edf0151d9d887 | 83 + .../f3/e0c92998201d00111c63a4b3c7bd9f5b | 28 + .../f4/b0284777eb1c00111565e8bbe12141cd | 94 + .../f4/c0bc315e071d00111358d2931fee7772 | 210 + .../f4/f09ec2e90a1d00111358d2931fee7772 | 24 + .../f5/5163b95e071d00111358d2931fee7772 | 24 + .../f6/304e0831071d00111358d2931fee7772 | 26 + .../f6/90d9919c0d1d00111358d2931fee7772 | 27 + .../f6/f0ba81fa0a1d00111358d2931fee7772 | 668 ++ .../f7/00eeac3d091d00111358d2931fee7772 | 27 + .../f7/3067661a0b1d00111358d2931fee7772 | 82 + .../f7/e06f36b6221d0011116edf0151d9d887 | 24 + .../f8/207890f0041d00111358d2931fee7772 | 48 + .../f8/702cde46201d00111c63a4b3c7bd9f5b | 0 .../f9/40bb12b6221d0011116edf0151d9d887 | 27 + .../f9/806b7fe20c1d00111358d2931fee7772 | 24 + .../f9/f0aebe83f61c00111565e8bbe12141cd | 74 + .../fb/20d758d8221d0011116edf0151d9d887 | 90 + .../fb/40e85d31071d00111358d2931fee7772 | 81 + .../fb/d0295f75221d0011116edf0151d9d887 | 0 .../fb/e059c7e90a1d00111358d2931fee7772 | 82 + .../fc/e01e02c1011d00111358d2931fee7772 | 81 + .../fd/e03ee764f41c00111565e8bbe12141cd | 24 + .../fe/b0878a000b1d00111358d2931fee7772 | 27 + .../ff/a15507b5e91c00111565e8bbe12141cd | 8 + .../ff/d077cf83f61c00111565e8bbe12141cd | 24 + .../33/85/13/9/79/61/1e/history.index | Bin 0 -> 90 bytes .../Boot/.indexes/33/85/13/9/f0/history.index | Bin 0 -> 75 bytes .../Boot/.indexes/33/e5/f9/e7/history.index | Bin 0 -> 73 bytes .../Boot/.indexes/33/e5/f9/history.index | Bin 0 -> 69 bytes .../Boot/.indexes/33/e5/history.index | Bin 0 -> 56 bytes .../.projects/Boot/.indexes/33/history.index | Bin 0 -> 182 bytes .../.indexes/7/85/13/9/79/61/1e/history.index | Bin 0 -> 424 bytes .../Boot/.indexes/7/85/13/9/f0/history.index | Bin 0 -> 409 bytes .../Boot/.indexes/7/c5/f9/e7/history.index | Bin 0 -> 119 bytes .../Boot/.indexes/7/c5/f9/history.index | Bin 0 -> 115 bytes .../Boot/.indexes/7/c5/history.index | Bin 0 -> 102 bytes .../Boot/.indexes/7/e5/f9/e7/history.index | Bin 0 -> 311 bytes .../Boot/.indexes/7/e5/f9/history.index | Bin 0 -> 307 bytes .../Boot/.indexes/7/e5/history.index | Bin 0 -> 294 bytes .../.projects/Boot/.indexes/7/history.index | Bin 0 -> 1278 bytes .../Boot/.indexes/e5/f9/e7/history.index | Bin 0 -> 115 bytes .../.projects/Boot/.indexes/properties.index | Bin 0 -> 450 bytes .../33/85/5e/13/9/79/61/1e/history.index | Bin 0 -> 319 bytes .../.indexes/33/85/5e/13/9/f0/history.index | Bin 0 -> 304 bytes .../.indexes/33/85/5e/3f/e4/history.index | Bin 0 -> 313 bytes .../.projects/Prog/.indexes/33/history.index | Bin 0 -> 1046 bytes .../7/33/85/5e/13/9/79/61/1e/history.index | Bin 0 -> 107 bytes .../.indexes/7/33/85/5e/13/9/f0/history.index | Bin 0 -> 92 bytes .../.indexes/7/33/85/5e/3f/e4/history.index | Bin 0 -> 101 bytes .../Prog/.indexes/7/33/history.index | Bin 0 -> 53 bytes .../7/85/5e/13/9/79/61/1e/history.index | Bin 0 -> 1277 bytes .../.indexes/7/85/5e/13/9/f0/history.index | Bin 0 -> 1262 bytes .../Prog/.indexes/7/85/5e/3f/e4/history.index | Bin 0 -> 1271 bytes .../Prog/.indexes/7/85/history.index | Bin 0 -> 843 bytes .../.projects/Prog/.indexes/7/history.index | Bin 0 -> 3918 bytes .../.indexes/85/5e/3f/de/properties.index | Bin 0 -> 299 bytes .../.projects/Prog/.indexes/85/history.index | Bin 0 -> 458 bytes .../Prog/.indexes/85/properties.index | Bin 0 -> 135 bytes .../.projects/Prog/.indexes/history.index | Bin 0 -> 1172 bytes .../.projects/Prog/.indexes/properties.index | Bin 0 -> 1250 bytes .../.projects/Prog/.markers | Bin 0 -> 444 bytes .../.root/.indexes/history.version | 1 + .../.root/.indexes/properties.index | Bin 0 -> 104 bytes .../.root/.indexes/properties.version | 1 + .../org.eclipse.core.resources/.root/10.tree | Bin 0 -> 21996 bytes .../.safetable/org.eclipse.core.resources | Bin 0 -> 771 bytes .../org.eclipse.cdt.codan.core.prefs | 66 + .../.settings/org.eclipse.cdt.core.prefs | 4 + .../org.eclipse.cdt.core.prj-Boot.prefs | 3 + .../org.eclipse.cdt.core.prj-Prog.prefs | 3 + .../org.eclipse.cdt.debug.core.prefs | 3 + .../.settings/org.eclipse.cdt.make.core.prefs | 3 + .../org.eclipse.cdt.managedbuilder.core.prefs | 6 + .../.settings/org.eclipse.cdt.mylyn.ui.prefs | 3 + .../.settings/org.eclipse.cdt.ui.prefs | 10 + .../org.eclipse.cdt.ui.prj-Prog.prefs | 4 + .../org.eclipse.core.resources.prefs | 4 + .../.settings/org.eclipse.debug.core.prefs | 6 + .../.settings/org.eclipse.debug.ui.prefs | 5 + .../org.eclipse.epp.usagedata.recording.prefs | 3 + .../org.eclipse.mylyn.context.core.prefs | 3 + .../org.eclipse.mylyn.monitor.ui.prefs | 3 + .../.settings/org.eclipse.rse.core.prefs | 3 + .../.settings/org.eclipse.rse.ui.prefs | 3 + .../.settings/org.eclipse.search.prefs | 3 + .../.settings/org.eclipse.team.cvs.ui.prefs | 3 + .../.settings/org.eclipse.team.ui.prefs | 3 + .../org.eclipse.tm.terminal.view.prefs | 9 + .../.settings/org.eclipse.ui.editors.prefs | 5 + .../.settings/org.eclipse.ui.ide.prefs | 10 + .../.settings/org.eclipse.ui.prefs | 3 + .../.settings/org.eclipse.ui.workbench.prefs | 6 + .../.launches/Microboot Download.launch | 12 + .../.launches/OpenOCD Flash.launch | 10 + .../org.eclipse.debug.ui/dialog_settings.xml | 35 + .../launchConfigurationHistory.xml | 25 + .../upload0.csv | 255 + .../upload1.csv | 249 + .../upload10.csv | 251 + .../upload11.csv | 251 + .../upload12.csv | 251 + .../upload13.csv | 251 + .../upload14.csv | 276 + .../upload15.csv | 251 + .../upload16.csv | 265 + .../upload17.csv | 261 + .../upload2.csv | 246 + .../upload3.csv | 273 + .../upload4.csv | 263 + .../upload5.csv | 276 + .../upload6.csv | 276 + .../upload7.csv | 276 + .../upload8.csv | 267 + .../upload9.csv | 276 + .../usagedata.csv | 90 + .../dialog_settings.xml | 41 + .../2011/12/48/refactorings.history | 3 + .../.workspace/2011/12/48/refactorings.index | 10 + .../dialog_settings.xml | 7 + .../.plugins/org.eclipse.rse.core/.log | 0 ...al.core.RSELocalConnectionInitializer.mark | 0 .../FP.local.files_0/node.properties | 57 + .../H.local_16/node.properties | 25 + .../PRF.voorburg-pc_3/node.properties | 7 + .../.plugins/org.eclipse.rse.ui/.log | 0 .../org.eclipse.search/dialog_settings.xml | 32 + .../dialog_settings.xml | 10 + .../dialog_settings.xml | 5 + .../dialog_settings.xml | 32 + .../dialog_settings.xml | 27 + .../org.eclipse.ui.workbench/workbench.xml | 285 + .../org.eclipse.ui.workbench/workingsets.xml | 4 + .../.metadata/version.ini | 1 + .../Boot/.cproject | 94 + .../Boot/.project | 125 + .../Boot/.settings/org.eclipse.cdt.core.prefs | 163 + .../Boot/.settings/org.eclipse.cdt.ui.prefs | 4 + .../Boot/bin/openbtl_olimex_stm32p103.map | 549 ++ .../Boot/bin/openbtl_olimex_stm32p103.srec | 338 + .../Boot/cmd/flash.cfg | 20 + .../Boot/config.h | 128 + .../Boot/hooks.c | 186 + .../Boot/ide/readme.txt | 10 + .../Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.c | 784 ++ .../Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.h | 1818 ++++ .../ST/STM32F10x/Release_Notes.html | 284 + .../DeviceSupport/ST/STM32F10x/stm32f10x.h | 8336 +++++++++++++++++ .../ST/STM32F10x/system_stm32f10x.c | 1094 +++ .../ST/STM32F10x/system_stm32f10x.h | 98 + .../Boot/lib/CMSIS/CMSIS debug support.htm | 243 + .../Boot/lib/CMSIS/CMSIS_changes.htm | 320 + .../lib/CMSIS/Documentation/CMSIS_Core.htm | 1337 +++ .../Boot/lib/CMSIS/License.doc | Bin 0 -> 39936 bytes .../Boot/main.c | 193 + .../Prog/.cproject | 92 + .../Prog/.project | 82 + .../Prog/.settings/org.eclipse.cdt.core.prefs | 163 + .../Prog/.settings/org.eclipse.cdt.ui.prefs | 4 + .../Prog/bin/demoprog_olimex_stm32p103.map | 2032 ++++ .../Prog/bin/demoprog_olimex_stm32p103.srec | 446 + .../Prog/boot.c | 322 + .../Prog/boot.h | 42 + .../Prog/cstart.c | 91 + .../Prog/header.h | 48 + .../Prog/ide/readme.txt | 16 + .../Prog/irq.c | 97 + .../Prog/irq.h | 43 + .../Prog/led.c | 103 + .../Prog/led.h | 42 + .../Prog/lib/stdio_mini.c | 668 ++ .../CMSIS/CM3/CoreSupport/core_cm3.c | 784 ++ .../CMSIS/CM3/CoreSupport/core_cm3.h | 1818 ++++ .../ST/STM32F10x/Release_Notes.html | 284 + .../DeviceSupport/ST/STM32F10x/stm32f10x.h | 8336 +++++++++++++++++ .../ST/STM32F10x/system_stm32f10x.c | 1094 +++ .../ST/STM32F10x/system_stm32f10x.h | 98 + .../CMSIS/CMSIS debug support.htm | 243 + .../lib/stdperiphlib/CMSIS/CMSIS_changes.htm | 320 + .../CMSIS/Documentation/CMSIS_Core.htm | 1337 +++ .../Prog/lib/stdperiphlib/CMSIS/License.doc | Bin 0 -> 39936 bytes .../Release_Notes.html | 342 + .../STM32F10x_StdPeriph_Driver/inc/misc.h | 220 + .../inc/stm32f10x_adc.h | 483 + .../inc/stm32f10x_bkp.h | 195 + .../inc/stm32f10x_can.h | 697 ++ .../inc/stm32f10x_cec.h | 210 + .../inc/stm32f10x_crc.h | 94 + .../inc/stm32f10x_dac.h | 317 + .../inc/stm32f10x_dbgmcu.h | 119 + .../inc/stm32f10x_dma.h | 439 + .../inc/stm32f10x_exti.h | 184 + .../inc/stm32f10x_flash.h | 426 + .../inc/stm32f10x_fsmc.h | 733 ++ .../inc/stm32f10x_gpio.h | 385 + .../inc/stm32f10x_i2c.h | 684 ++ .../inc/stm32f10x_iwdg.h | 140 + .../inc/stm32f10x_pwr.h | 156 + .../inc/stm32f10x_rcc.h | 727 ++ .../inc/stm32f10x_rtc.h | 135 + .../inc/stm32f10x_sdio.h | 531 ++ .../inc/stm32f10x_spi.h | 487 + .../inc/stm32f10x_tim.h | 1164 +++ .../inc/stm32f10x_usart.h | 412 + .../inc/stm32f10x_wwdg.h | 115 + .../STM32F10x_StdPeriph_Driver/src/misc.c | 225 + .../src/stm32f10x_adc.c | 1307 +++ .../src/stm32f10x_bkp.c | 308 + .../src/stm32f10x_can.c | 1415 +++ .../src/stm32f10x_cec.c | 433 + .../src/stm32f10x_crc.c | 160 + .../src/stm32f10x_dac.c | 571 ++ .../src/stm32f10x_dbgmcu.c | 162 + .../src/stm32f10x_dma.c | 714 ++ .../src/stm32f10x_exti.c | 269 + .../src/stm32f10x_flash.c | 1684 ++++ .../src/stm32f10x_fsmc.c | 866 ++ .../src/stm32f10x_gpio.c | 650 ++ .../src/stm32f10x_i2c.c | 1331 +++ .../src/stm32f10x_iwdg.c | 190 + .../src/stm32f10x_pwr.c | 307 + .../src/stm32f10x_rcc.c | 1470 +++ .../src/stm32f10x_rtc.c | 339 + .../src/stm32f10x_sdio.c | 799 ++ .../src/stm32f10x_spi.c | 908 ++ .../src/stm32f10x_tim.c | 2890 ++++++ .../src/stm32f10x_usart.c | 1058 +++ .../src/stm32f10x_wwdg.c | 224 + .../Prog/lib/stdperiphlib/stm32f10x_conf.h | 77 + .../Prog/main.c | 214 + .../Prog/memory.x | 38 + .../Prog/timer.c | 102 + .../Prog/timer.h | 43 + .../Prog/uart.c | 121 + .../Prog/uart.h | 43 + .../Prog/vectors.c | 166 + 843 files changed, 112711 insertions(+) create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.lock create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.log create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.mylyn/repositories.xml.zip create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.codan.ui/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/Boot.1322834671001.pdom create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/Prog.1322831217304.pdom create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/shareddefaults.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/.log create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/Boot.sc create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/Prog.sc create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/Boot.build.log create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/Prog.build.log create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/302f3cf1091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/70994e1a0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/70f636a1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/804030d8221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/f035cf3f021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/f0a432570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/302c66b00a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/602d9d2d201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/a058473c0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/60252d5d041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/7079cdd10d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/c032227c0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/6034d2d10d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/909d1c3efa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/e06e5a75221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/12/80021471e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/12/c010082d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/13/8046912d201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/13/f0b60204e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/14/8034d03c071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/14/90f50097051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/00dc4856201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/10c046ffe91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/403939ace71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/16/00ce7c1a0e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/16/9015cc3fea1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/17/70458efa071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/17/7055a2000b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/10ad587cff1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/703ff89ff41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/d009b9e4f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/20c814a0f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/20ec95440a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/b076c93d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/e0b71172f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1b/a0f7132d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1b/f0c22d570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/00a8a240011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/20fbfe76f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/5081ab3f021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/10450177f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/4032521e091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/7066e47b0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/70e32413f71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/d09b3db6221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/201632030d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/70d6a0220a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/b1841a04e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/c111bc440a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/30cff776f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/709de046201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/9061d663e81c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0425375221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0fc0c72f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/21/90f12fa1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/22/20968bf0041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/9055eedb041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/9082f7d1001d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/a0ee8eb5091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/c0d9bf3d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/e037ed360a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/203e379d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/60983ed8221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/80b11b56201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/90630369041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/50e8eb76f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/d024de9c0d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/f135cf3f021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/26/000a49ffe91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/26/f0b431b6221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/27/f03550ffe91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/30753b75221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/8071d946201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/90ee3e31071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/e0710704e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/e0d4a5f0041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2b/10160172f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2c/d09a6175221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/1039b583f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/a0aa67fa071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/f022627cff1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2e/e01de8fa0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/4070bdbf091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/7047733c071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/105d23b6221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/40be7d7c201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/602da9b5091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/e0afd8450b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07d855ee91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/00e4bde90a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/60c14f99221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/70774d99221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/80911171e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/80e2db46201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/e04656f1091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/33/702b43a1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/33/c0fb0b3efa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/802fcbd10d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/c04aaff0041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/36/00349d030d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/36/f0eea1030d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/0067f0eafe1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/106277fa071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/80118e6a201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/a08a307c0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/b0ec28a1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/f01a4ff1091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/7024bbd70a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/80b854dc041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/c014277c0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/39/a0b97f6a201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/30e63d75221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/404540a1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/71bd1871e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/c0e46375221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3b/40c2642f051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3b/e0ace5fa0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3d/10847a1a0e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/4055c9d70a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/c0337e56e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/d068e6890b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/f0bb832f051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/90512342221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a05507b5e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a07302b5e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/7090411e091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/a1c7875ee91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/e0c391b5001d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/5065de3c071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/604868cdfe1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/41/00e0de360a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/41/b0deef890b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/42/a0fb327c0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/60e0e5e20a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/70efd43c071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/b02900b5e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/d0c43eedf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/44/70cc926a201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/44/905dd53d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/00a4233c0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/10a79a440a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/70ca42b5091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/312c66b00a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/60e2f3af0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/708f45000b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/3045c864f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/a08473e20c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/a0f575e20c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/4087a8e90a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/70c6a4000b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/f0d97e2f051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/30456599221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/50b6621a0e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/706a285d041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/e08219a2221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4a/e0093aedf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4b/b05e297c0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4b/b0bb3d3c0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/2058731a0e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/40a85b99221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/40ac611a0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/b051e9450b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4d/30c196c50c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/10da04e30a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/80a95e52201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/a00cee450b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/a037fc68041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/f0a7ad0f001d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/30d71a570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/4014571e091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5/3064fbe20a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5/a0d59f64f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/009509e30a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/2088d0360a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/30f3f8e20a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/40c836ace71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/60b5459c0d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/a0e11c89e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/e03cfdc0011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/51/e138a4030d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/52/2021141a0e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/52/d0bd80b5091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/507c5499221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/60a215c0091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/c0c91504e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/a01313ace71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/a0c6f968041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/b01c4dedf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/b1eb5ada011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/c03056da011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0a6f6d70a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/56/502d5931071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/57/00dc5fd8221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/57/104a6c99221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/3012309d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/40a5a3e90a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/c010569d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/c03adc3b0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/e06a725ee91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/0055c0e90a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/80f8b3d70a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/a0388a5ee91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/e0460f72f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/f0beaeca041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/0047dafe071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/1064ef93ea1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/d0a939570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/f0c44dffe91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/500d32ace71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/8082906a201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/d03d1ea2221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/f017acf8071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5d/30ad3da1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5d/910d2489e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5e/a04dc43c071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5e/a0fd07dae91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5f/d00d8df9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/4003ee71f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/b0b8fdb4e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/f07053f9061d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/90b2182d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/a0d58e450b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/c0c27b56e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/e07433dc041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/61/50747b7c201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/62/b0ebc3c50c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/62/e09a4c9d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/63/60d65b98201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/64/b010c53fea1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/65/714d0f97051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/10ea8afa071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/60325299221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/7001a2b5091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/a0c32189e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/d01a3c570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/d081ef360a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/e0b758f1091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/68/c071f778e01c00111cadaab22f5679ad create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/90dba4f9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/c0b951d10d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/e0f31ba2221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6a/20dfcdfa0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/00c07b96051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/500cede20a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6c/007b4bffe91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6c/7062e709001d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/40005fb00a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/602e5edc041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/c011bc440a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/e014003efa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6e/408fc05e071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a0a45752201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/306ace9c091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/405e30c50c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/e048ab440a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/00be64d8221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/603113c0091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/c034fc70e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/50774d1e091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/515d1ac0091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/b07cd683f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/71/70aa5498201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/20d02ef0041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/b02c403c0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/d088e964f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/74/302d9ce20a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/74/60655998201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/75/502fee63e81c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/75/b0f0f996051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/76/006c7cf9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/76/60bca6b5091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/60b9767c201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/e05ce264f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/78/20aef5d9e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/79/b0cf84b8011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/507646ff071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/8050a65e071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/a03f1f04e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/e02ec330071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7b/200b99c50c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7b/c042c4ca041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7c/0012cb9c0d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7c/a0c25252201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7d/202604a2221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7d/40ca5c1a0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7e/50205e98201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7e/b0c2eb450b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7f/50bc5631071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/90ecd23d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/000ac83f021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/601bdc3c071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/70bd1871e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/900d2489e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/d05365e20c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/e038a4030d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/81/c014c446201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/30cdcb360a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/6020a3220a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/81c9233efa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/e04bc883f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/83/e0a03bff071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/206fc7890b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/3040fa76f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/6021e97b0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/b0841a04e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/85/50916098201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/10a7613f021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/60fafc9ff41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/9041162d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/87/d0efaf02f71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/88/6074e963e81c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/5063b95e071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/b0fdc8ca041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/d0f2f1360a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/400c395d041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/907e92220a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/c0a158da011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/104b48ff071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/10cd4975221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/30218a030d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/307e12a0f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/8005e584011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/10214456201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a031ce3d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/f0f13f7c201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/00ad5ee90a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/30b3c6fa0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a03490220a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a035cf63e81c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/40aa3bace71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/50f2b65e071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/a091a2f9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/d073fe2c091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9/006b4656201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9/a0664fedf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/11214456201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/60643642221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/60725431071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/70dc0c97051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/c0a1c1c50c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/f03dd29c0d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/92/e005862f051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/93/31eb7620021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/94/e0ee34570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/207f5a56e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/60e7e246201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/d0204252201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/408480030d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/7072e276f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/a0cbc93fea1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/41307220021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/80dc81e20c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/e0464aff071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/98/d05e8c68041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/98/f0f4d3450b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0d4fdbf091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/60eca49c0d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d077ba46201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d095eb68041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9c/00792b570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/001f74890b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/2071cf64f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/c09a62ca041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/d040073efa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/80d58e2d201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/d0d8ecfa0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/905f5c52201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/9086ce3fea1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f01d43da011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/20e76ab00a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/6010a7000b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/90a2493c0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/d0011472f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/e0af682d201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/802957dc041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/c0b2e8890b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a1/1013781a0e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a1/20e301dae91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/6003e763e81c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/6087976a201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/80731671e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0b4786a201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a3/a0b391000b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a4/507e34ace71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/407f3356201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/6048747c201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/a0ee822d201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/c068a62c091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/e0e038b6221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a6/f01a0872f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a9/c03994f9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a9/f081f8c0011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/50c31897051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/601953b00a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/b00c835ee91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/e0f2b33d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/f01fc183f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/a0dc39a1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/d0b07a220a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/e0faff5c041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/00d10572f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/50ec17c0091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/b0ce673d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/c06b7f220a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ad/004d62d8221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ad/30e1a683f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ae/10925dd8221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/10ddb745ed1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/601f86c50c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/80df1bffe91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b0/80c9233efa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b0/80d53c1e091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/3082eed9e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/a0521f89e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/e016edb4e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/f08b51f1091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/80d904c0091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/e0fe33b6221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/f0922fff071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c0793adc041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c0bd4b52201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/f0a1dd64f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/9095a15e071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/91dba4f9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/b0edd883f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/e07aefd70a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/703d956a201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/70b9e463e81c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/a0af9df9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/c0f5b53c071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20304075221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/306bffa1221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/60f33342221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/a07a5c7c201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/20e0e7c0011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/403cb03f021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/608f90fa071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/609eabb5091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/c023eb890b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b8/d0d1f1b4e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0bfbcc50c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/00c39a030d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/5060d9d10d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/707359dc041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0077756e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/300d10a0f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/b00312e20c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/c0f045edf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/d0e5b4440a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/f0aedf68041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/203917a0f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/40307220021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/908e9c3dee1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bd/10215bd8221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bd/e0eab5ca041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/be/50d45d1a0e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bf/c06148edf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c/505d1ac0091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c0/a0fa34a1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c0/f0dd9dd10d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/0051e1360a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/109becc0011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40c30da0f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/d07160e20c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/e0ebf1d70a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/80625a20021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/a086112d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/e0f8d69c0d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/2079f771f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/4024ed9fe61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/502604a0f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/901a8a2d201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c4/a0c7875ee91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c5/3099ffd9e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c5/a0fd30220a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/0099c53f021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/a0d751edf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/a0f517ace71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/d025775ee91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c7/10a2751a0e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/8046db76f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/900e1f3efa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/90bb969c0d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c9/606e0aedf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c9/f00fc5e90a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/50e84f1e091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/90ee5952201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/e0c38af9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/00e7d864f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/a0ce1c04e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/f03817a2221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cd/207668b00a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ce/c0f25a9d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ce/f0bfead70a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b0eb5ada011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b11c4dedf31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d/b04ff2890b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d/f0cef85c041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d0/30535356e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d2/8041d33fea1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/8000d746201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/c0f857440a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/d08faaf0041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/f014cb9ff41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/30eb7620021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60b42a5d041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60b814faf61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60c407570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/7072a4b5091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/a0e2173efa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/e00b4f9d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d5/40a3541e091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d5/801a6152201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d6/104b07e30a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d6/c0d1c1ca041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/703e1950011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/a0eecc76f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/b151e9450b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/e047f72c091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d8/41f7b2000b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d8/5003797c201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d9/00d76856e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/c0a0b9440a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/d0c6539d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/803997220a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/c007e7450b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/e0192d3c0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/1000d8d9011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/20ea40f1091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/408f6cd70a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/b0600371e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/c0fa1089e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/d055519d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/20d944a1f31c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/90f20069041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/f0c714a2221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/00e5d0890b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/80ef4f98201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/b01eb08ce01c00111cadaab22f5679ad create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/df/704d0f97051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/df/e0d25bc3ec1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e/10a889f0091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e0/30f735ffe91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/c0efd52e051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/e0494ada011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/10be26570e1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/20878e7c201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/5049fb190b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/e0e185f9221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/4042987b0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/c078792d201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/c0f0b0d10d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/e0840789e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e5/403b5f1a0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e5/d07589b9fe1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e6/30ee6b2f051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e6/e0adffc0011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/10bb6e99221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/30f6631a0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/60a5d4d10d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/702684e20c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f0fc53f1091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e9/e03be3fa0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ea/f04a812f051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/0001ce1f021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/c03b2aff071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/f012e064f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/70f37ec50c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/d00106dae91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/d0f53098201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/002ef43dfa1c00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/806d471a0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/a05f852d201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ee/a0e7443c0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ef/f02a88fa071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/203376360a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/60e5eb63e81c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/701d5f20021d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/d067eafa0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/000604dae91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/60b62256201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/60d1b496051d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/d02a3bb6221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/f0206b56e71c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/60d53842221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/70ed4bb00a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/b08cc6ca041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/d000adf0041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/2187c869ea1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/40f7b2000b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/50903d42221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/e0c92998201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/b0284777eb1c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c0bc315e071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/f09ec2e90a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f5/5163b95e071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/304e0831071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/90d9919c0d1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f0ba81fa0a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/00eeac3d091d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/3067661a0b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/e06f36b6221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f8/207890f0041d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f8/702cde46201d00111c63a4b3c7bd9f5b create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/40bb12b6221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/806b7fe20c1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/f0aebe83f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/20d758d8221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/40e85d31071d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0295f75221d0011116edf0151d9d887 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e059c7e90a1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fc/e01e02c1011d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fd/e03ee764f41c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fe/b0878a000b1d00111358d2931fee7772 create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a15507b5e91c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ff/d077cf83f61c00111565e8bbe12141cd create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/85/13/9/79/61/1e/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/85/13/9/f0/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/e5/f9/e7/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/e5/f9/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/e5/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/85/13/9/79/61/1e/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/85/13/9/f0/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/c5/f9/e7/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/c5/f9/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/c5/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/f9/e7/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/f9/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/e5/f9/e7/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/properties.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/85/5e/13/9/79/61/1e/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/85/5e/13/9/f0/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/85/5e/3f/e4/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/85/5e/13/9/79/61/1e/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/85/5e/13/9/f0/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/85/5e/3f/e4/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/85/5e/13/9/79/61/1e/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/85/5e/13/9/f0/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/85/5e/3f/e4/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/85/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/85/5e/3f/de/properties.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/85/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/85/properties.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/history.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/properties.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.markers create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/10.tree create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.codan.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-Boot.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-Prog.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.make.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.mylyn.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prj-Prog.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.tm.terminal.view.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Microboot Download.launch create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Flash.launch create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload0.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload1.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload10.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload11.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload12.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload13.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload14.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload15.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload16.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload17.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload2.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload3.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload4.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload5.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload6.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload7.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload8.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload9.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2011/12/48/refactorings.history create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2011/12/48/refactorings.index create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/.log create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/FP.local.files_0/node.properties create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/H.local_16/node.properties create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/node.properties create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.ui/.log create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.tm.terminal.view/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/version.ini create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.cproject create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.project create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.settings/org.eclipse.cdt.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.settings/org.eclipse.cdt.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/bin/openbtl_olimex_stm32p103.map create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/bin/openbtl_olimex_stm32p103.srec create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/cmd/flash.cfg create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/config.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/hooks.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/ide/readme.txt create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CMSIS debug support.htm create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CMSIS_changes.htm create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/Documentation/CMSIS_Core.htm create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/License.doc create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/main.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.cproject create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.project create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.settings/org.eclipse.cdt.core.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.settings/org.eclipse.cdt.ui.prefs create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/bin/demoprog_olimex_stm32p103.map create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/bin/demoprog_olimex_stm32p103.srec create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/boot.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/boot.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/cstart.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/header.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/ide/readme.txt create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/irq.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/irq.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/led.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/led.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdio_mini.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CMSIS debug support.htm create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CMSIS_changes.htm create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/Documentation/CMSIS_Core.htm create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/License.doc create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/Release_Notes.html create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/stm32f10x_conf.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/main.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/memory.x create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/timer.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/timer.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/uart.c create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/uart.h create mode 100644 Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/vectors.c diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.lock b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.lock new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.log b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.log new file mode 100644 index 00000000..1aaf79e3 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.log @@ -0,0 +1,237 @@ +!SESSION 2011-12-02 13:17:52.411 ----------------------------------------------- +eclipse.buildId=M20110909-1335 +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.cpp.product +Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.cpp.product + +!ENTRY org.eclipse.cdt.core 1 0 2011-12-02 13:20:06.676 +!MESSAGE Indexed 'Prog' (0 sources, 8 headers) in 0,56 sec: 0 declarations; 0 references; 8 unresolved inclusions; 0 syntax errors; 0 unresolved names (0,00 %) + +!ENTRY org.eclipse.cdt.core 1 0 2011-12-02 13:22:13.863 +!MESSAGE Indexed 'Boot' (0 sources, 8 headers) in 0,03 sec: 0 declarations; 0 references; 8 unresolved inclusions; 0 syntax errors; 0 unresolved names (0,00 %) +!SESSION 2011-12-02 14:05:43.345 ----------------------------------------------- +eclipse.buildId=M20110909-1335 +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.cpp.product +Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.cpp.product + +!ENTRY org.eclipse.cdt.core 1 0 2011-12-02 14:06:58.006 +!MESSAGE Indexed 'Prog' (0 sources, 21 headers) in 0,67 sec: 138 declarations; 317 references; 3 unresolved inclusions; 0 syntax errors; 1 unresolved names (0,22 %) + +!ENTRY org.eclipse.cdt.core 1 0 2011-12-02 14:38:32.428 +!MESSAGE Indexed 'Prog' (32 sources, 56 headers) in 3,39 sec: 4.171 declarations; 17.052 references; 3 unresolved inclusions; 0 syntax errors; 1 unresolved names (0,00 %) + +!ENTRY org.eclipse.core.resources 4 368 2011-12-02 14:45:51.606 +!MESSAGE Variable references non-existent resource : ${workspace_loc:/Prog../../../Host/MicroBoot.exe} + +!ENTRY org.eclipse.core.resources 4 368 2011-12-02 14:46:42.647 +!MESSAGE Variable references non-existent resource : ${workspace_loc:/../../Host/MicroBoot.exe} + +!ENTRY org.eclipse.core.resources 4 368 2011-12-02 14:47:26.513 +!MESSAGE Variable references non-existent resource : ${workspace_loc:/../../../Host/MicroBoot.exe} + +!ENTRY org.eclipse.core.variables 4 120 2011-12-02 14:48:57.176 +!MESSAGE Reference to undefined variable BuildArtifactFileBaseName + +!ENTRY org.eclipse.core.variables 4 120 2011-12-02 14:53:58.690 +!MESSAGE Reference to undefined variable OUTPUT_FILE_NAME + +!ENTRY org.eclipse.cdt.core 1 0 2011-12-02 15:04:31.173 +!MESSAGE Indexed 'Boot' (0 sources, 21 headers) in 0,16 sec: 138 declarations; 317 references; 3 unresolved inclusions; 0 syntax errors; 1 unresolved names (0,22 %) + +!ENTRY org.eclipse.cdt.core 1 0 2011-12-02 15:42:19.740 +!MESSAGE Indexed 'Boot' (18 sources, 40 headers) in 1,51 sec: 1.524 declarations; 4.095 references; 3 unresolved inclusions; 0 syntax errors; 1 unresolved names (0,02 %) +!SESSION 2011-12-02 16:15:01.226 ----------------------------------------------- +eclipse.buildId=M20110909-1335 +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.cpp.product +Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.cpp.product + +!ENTRY org.eclipse.cdt.codan.core 4 1 2011-12-02 17:08:50.823 +!MESSAGE Internal Error +!STACK 0 +java.lang.UnsupportedOperationException + at org.eclipse.cdt.codan.internal.core.cfg.ExitNode.addOutgoing(ExitNode.java:46) + at org.eclipse.cdt.codan.core.cxx.internal.model.cfg.ControlFlowGraphBuilder.build(ControlFlowGraphBuilder.java:90) + at org.eclipse.cdt.codan.core.cxx.internal.model.cfg.CxxControlFlowGraph.build(CxxControlFlowGraph.java:33) + at org.eclipse.cdt.codan.core.cxx.model.CxxModelsCache.getControlFlowGraph(CxxModelsCache.java:90) + at org.eclipse.cdt.codan.internal.checkers.ReturnChecker.endsWithNoExitNode(ReturnChecker.java:228) + at org.eclipse.cdt.codan.internal.checkers.ReturnChecker.processFunction(ReturnChecker.java:172) + at org.eclipse.cdt.codan.core.cxx.model.AbstractAstFunctionChecker$1.visit(AbstractAstFunctionChecker.java:32) + at org.eclipse.cdt.internal.core.dom.parser.c.CASTFunctionDefinition.accept(CASTFunctionDefinition.java:118) + at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:279) + at org.eclipse.cdt.codan.core.cxx.model.AbstractAstFunctionChecker.processAst(AbstractAstFunctionChecker.java:25) + at org.eclipse.cdt.codan.core.cxx.model.AbstractIndexAstChecker.processModel(AbstractIndexAstChecker.java:103) + at org.eclipse.cdt.codan.internal.core.CodanBuilder.processResource(CodanBuilder.java:149) + at org.eclipse.cdt.codan.internal.core.CodanBuilder.runInEditor(CodanBuilder.java:218) + at org.eclipse.cdt.codan.core.cxx.internal.model.CxxCodanReconciler.reconciledAst(CxxCodanReconciler.java:38) + at org.eclipse.cdt.codan.internal.ui.cxx.CodanCReconciler.reconciled(CodanCReconciler.java:81) + at org.eclipse.cdt.internal.ui.editor.CEditor.reconciled(CEditor.java:3198) + at org.eclipse.cdt.internal.ui.text.CReconcilingStrategy.reconcile(CReconcilingStrategy.java:108) + at org.eclipse.cdt.internal.ui.text.CReconcilingStrategy.reconcile(CReconcilingStrategy.java:73) + at org.eclipse.cdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:84) + at org.eclipse.cdt.internal.ui.text.CCompositeReconcilingStrategy.reconcile(CCompositeReconcilingStrategy.java:90) + at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:77) + at org.eclipse.cdt.internal.ui.text.CReconciler.process(CReconciler.java:408) + at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:206) + +!ENTRY org.eclipse.cdt.core 1 0 2011-12-02 18:52:56.461 +!MESSAGE Indexed 'Boot' (18 sources, 40 headers) in 1,51 sec: 1.524 declarations; 4.095 references; 3 unresolved inclusions; 0 syntax errors; 1 unresolved names (0,02 %) +!SESSION 2011-12-02 20:58:40.527 ----------------------------------------------- +eclipse.buildId=M20110909-1335 +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.cpp.product +Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.cpp.product + +!ENTRY org.eclipse.core.resources 4 2 2011-12-02 20:59:27.327 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources". +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: Resource '/Boot/bin/sources.mk' does not exist. + at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:320) + at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:194) + at org.eclipse.core.internal.resources.File.setContents(File.java:357) + at org.eclipse.core.internal.resources.File.setContents(File.java:464) + at org.eclipse.cdt.internal.core.model.Util.save(Util.java:154) + at org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.populateSourcesMakefile(GnuMakefileGenerator.java:1129) + at org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.regenerateMakefiles(GnuMakefileGenerator.java:894) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performMakefileGeneration(CommonBuilder.java:997) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performPrebuildGeneration(CommonBuilder.java:864) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:739) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:504) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:450) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) + at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:513) + at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:432) + at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:305) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +!SUBENTRY 1 org.eclipse.core.resources 4 368 2011-12-02 20:59:27.327 +!MESSAGE Resource '/Boot/bin/sources.mk' does not exist. +!SUBENTRY 1 org.eclipse.core.resources 4 368 2011-12-02 20:59:27.327 +!MESSAGE Resource '/Boot/bin/sources.mk' does not exist. + +!ENTRY org.eclipse.core.resources 4 75 2011-12-02 20:59:29.870 +!MESSAGE Errors occurred during the build. +!SUBENTRY 1 org.eclipse.cdt.managedbuilder.core 4 75 2011-12-02 20:59:29.870 +!MESSAGE Errors running builder 'CDT Builder' on project 'Boot'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: Resource '/Boot/bin/sources.mk' does not exist. + at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:320) + at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:194) + at org.eclipse.core.internal.resources.File.setContents(File.java:357) + at org.eclipse.core.internal.resources.File.setContents(File.java:464) + at org.eclipse.cdt.internal.core.model.Util.save(Util.java:154) + at org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.populateSourcesMakefile(GnuMakefileGenerator.java:1129) + at org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.regenerateMakefiles(GnuMakefileGenerator.java:894) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performMakefileGeneration(CommonBuilder.java:997) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performPrebuildGeneration(CommonBuilder.java:864) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:739) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:504) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:450) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) + at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:513) + at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:432) + at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:305) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +!SUBENTRY 2 org.eclipse.core.resources 4 368 2011-12-02 20:59:29.870 +!MESSAGE Resource '/Boot/bin/sources.mk' does not exist. +!SUBENTRY 1 org.eclipse.core.resources 4 368 2011-12-02 20:59:29.870 +!MESSAGE Resource '/Boot/bin/sources.mk' does not exist. +!SESSION 2011-12-02 21:05:12.118 ----------------------------------------------- +eclipse.buildId=M20110909-1335 +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.cpp.product +Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.cpp.product + +!ENTRY org.eclipse.core.resources 4 2 2011-12-02 21:14:39.147 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources". +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: Resource '/Boot/bin/Source' does not exist. + at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:320) + at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:194) + at org.eclipse.core.internal.resources.Container.members(Container.java:266) + at org.eclipse.core.internal.resources.Container.members(Container.java:249) + at org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.generateDependencies(GnuMakefileGenerator.java:592) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performPostbuildGeneration(CommonBuilder.java:847) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:758) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:501) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:450) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) + at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:513) + at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:432) + at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:305) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +!SUBENTRY 1 org.eclipse.core.resources 4 368 2011-12-02 21:14:39.147 +!MESSAGE Resource '/Boot/bin/Source' does not exist. +!SUBENTRY 1 org.eclipse.core.resources 4 368 2011-12-02 21:14:39.147 +!MESSAGE Resource '/Boot/bin/Source' does not exist. + +!ENTRY org.eclipse.core.resources 4 75 2011-12-02 21:14:40.723 +!MESSAGE Errors occurred during the build. +!SUBENTRY 1 org.eclipse.cdt.managedbuilder.core 4 75 2011-12-02 21:14:40.723 +!MESSAGE Errors running builder 'CDT Builder' on project 'Boot'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: Resource '/Boot/bin/Source' does not exist. + at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:320) + at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:194) + at org.eclipse.core.internal.resources.Container.members(Container.java:266) + at org.eclipse.core.internal.resources.Container.members(Container.java:249) + at org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.generateDependencies(GnuMakefileGenerator.java:592) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performPostbuildGeneration(CommonBuilder.java:847) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:758) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:501) + at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:450) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) + at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:513) + at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:432) + at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:305) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +!SUBENTRY 2 org.eclipse.core.resources 4 368 2011-12-02 21:14:40.723 +!MESSAGE Resource '/Boot/bin/Source' does not exist. +!SUBENTRY 1 org.eclipse.core.resources 4 368 2011-12-02 21:14:40.723 +!MESSAGE Resource '/Boot/bin/Source' does not exist. diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.mylyn/repositories.xml.zip b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.mylyn/repositories.xml.zip new file mode 100644 index 0000000000000000000000000000000000000000..bd81524bb7a10c38cc94a42596b248dd17ea0b94 GIT binary patch literal 437 zcmWIWW@Zs#-~hs+tR{N~Bp?7}7o`^D7iX5_7iFdv>s93Dybba7W;PV~tF2hRxl2LG zm)psfvn%ZV<-0GXtY){ISyJ}<_1#L4Qul)_(?JRA z#&&Dpes@>?0a(P^*(jNlYdX`ahKdy(=`2=$nX6Q|Cs~4**Po?>XMZi85rzX7#IS)8JR>F g5J8MA2MS_TfF9rh-mGjO6^uY=2c#2$rZO-90Pd-z{Qv*} literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.codan.ui/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.codan.ui/dialog_settings.xml new file mode 100644 index 00000000..0971b1e8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.codan.ui/dialog_settings.xml @@ -0,0 +1,4 @@ + +
+ +
diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log new file mode 100644 index 00000000..d790a12f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/.log @@ -0,0 +1,10 @@ +*** SESSION Dez 02, 2011 13:18:07.08 ------------------------------------------- +*** SESSION Dez 02, 2011 13:58:50.63 ------------------------------------------- +*** SESSION Dez 02, 2011 13:59:44.84 ------------------------------------------- +*** SESSION Dez 02, 2011 14:01:56.95 ------------------------------------------- +*** SESSION Dez 02, 2011 14:04:30.84 ------------------------------------------- +*** SESSION Dez 02, 2011 14:06:03.20 ------------------------------------------- +*** SESSION Dez 02, 2011 16:15:10.31 ------------------------------------------- +*** SESSION Dez 02, 2011 18:53:52.79 ------------------------------------------- +*** SESSION Dez 02, 2011 20:59:08.37 ------------------------------------------- +*** SESSION Dez 02, 2011 21:05:21.49 ------------------------------------------- diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/Boot.1322834671001.pdom b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.core/Boot.1322834671001.pdom new file mode 100644 index 0000000000000000000000000000000000000000..38accbaf0994d4ec0fec608be504dd5d950978ae GIT binary patch literal 1216512 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�np68NB*(ixT-_r7Y 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

l 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 h>^2x^*!X^PFzMj=?j8^`zBlyOVzL|KmU+vw- zcue*`#pAJ3&So9Qe%lg8X=B(KCF3$_Ph0ZE-=N8=Vu6n1#NL#Q&HVmcEn98y`SG9C z=f`s~pW3uKya9bfiRUnlE7ousJ<8dpvWh6{jV(u$URnXv5*ry)R%uL1xL4wnu_CD; z9nF+Q+Nzo4<50%0LuhBjKl3GbMr^lQ@a*Ii7ynG!pDwchdmTcGiIcqJkhfV^vw~W9 z1bZY!tim1--A9SxTpz2_7BL4QfsT1!lo@xv2g!ReO zd~f>RYdlZ9-un7`qWa_s_&-UX)b}E->q~hvcq3)Kff^lm$WDNXYO;o z*T?jX-Dd9heQgpS<|PR|{+VyP-qT`w#%44Bk`o`s015p*nxF?=uQy`){fx0DdU}^3 zAH9=zEpj&bDC)B8fNAS}-4XW#>UT1+B<^xh5rq`ybF~13-o1w*Yz4c&qhAu4xUAPu6phYeR8t;39JwJa_r}2M_+%i z?bh+q$L$sU?znf-`BD9F(qUZJ{$buC<$Fjd-*GBWq-6V6U0OTuqt1v6``V*2%FKA? z3uS)^;gmu0IjUz(qHs3vu9!2`PjS&%*y$bShNv9_#R&r!yW#R|#Pzw`6{mQW;je?H zJO}4_ihQw)UjJFD@Go57kA&}#R6aaGzQ~sN^j+b~Q~9$}`9og@pOS-LC~U0BrTNsaz)>_ z<>!mo84OtEWS!sZtRT^UKls~x7An%s{CLGvZ zXP(oelj|V=B>WEr{)beD;JPaz!5>y!`RkF@3ja6czbY{DyS9Np>Y_n2kj-~EgPHla z;{PuEy8=J+oL2Y`eEU=X1Eq0tsDSvA_&pJD?)Av(8Rg(l2AsRd=-DF&e=6YI>z@EG z%)y@xIQRM|!OzXXp9}a4;7@^X%fWw1+w_P}AGYmX&tDlk>C%3^K>mKh-v=nkPCLmJIOuCpWng%4GHnC*DX2tAHa!s?0VgugY#?$ z^+Wd|o+IzZXk0r8Z6g15)^RA8xTs``;=1ad;BS$>n*%N(&q9vGQ96Yd@>x$1`LobZTw3G38S_jM z4t9cm8T*>2g>|`R-!5kJ$#=g7AC0=N4ZMJSzbEj2p$&XcC|8BVU&bPWn~LlGosOMffFw8VX~AdafK_xx<;J7vcS(h%af5t zTj-MbO;B8dqHHNRjk3Wt9Qk_BQa+28rt)?ETbYhGv-oGubA3L+cvIvno-sIn=E!}X zws@_<@gt)z_Q6tq`m=aEo5i2axW3CR-e7S2*;?24Hx_5ilJMh4M*bL!oAG`Yf40Hp z$M!Qd{__k!{_Jd*zt{3N8XP||`c+tbfx+=-=ed5d{Rfr5(BSy9jjms8|4;EH2FIUW z;LdEY@|PMMe|Die^V=3*W^nx3C9Z#Le^cczH#q+6QrCaJv@jDETKfA&eeA41~8ytUjr7QTQ#a9^|fA$VHpxEN84URv1w;S+J7GGm<{Ml7* z!0#=-*5LTFtKC@>Exyj+__J%=S!*o5-r)GNYu#CYviJsrh17})%qrvfK*Smoa zTYQtj@n<)$Grv5b<9DjC;8@$Bg z+YF9ByVVWGK2TbJpD{T8Y?B)@#Nyixjz7E24Y|$YI}DCL`-~g1+u}P7jz7EI4IOXs zT?WUW-QkAbYw_I%$DiHlhQ{`jw0<-j9DjC~E6iB_JqE|0-R%lv`(r@J)z#f@g>x>t>`-hYU3A497hQELu4sy`y2+n@c>GWUn@t1JwV&8*xIaYvp$0zG zz=s<6Py+*Kpm;~;hSxb)+%`ag4=;bHfe$tCp$0zGz=s<6Py_#A8t7XKfwpqX+zPkE zZRr-dqulXssax(=;(SZ|JKC+naj82I$3-Z0qFaa(%pnZRFz;xbor?3txV8|OPQZUc zF!yMxtnU`=#&3{Lf^|9ImI2R};AI8Qjs?b}1fz5F<;oJl`zj(AoD^5{AL#Vpyan6# z^7sGsUEd8LIdOw>Zmd43;gxQ+=u>3rqr4NbO;^$Q-<3e`tQFK*-+H~yeeo{XX6XO9 zM>_Y*Yltvl|cg|3`Ou?wD9O38Vl z!erK>9PO?alFe}YLe@R|ON=W>Lif`F-79f^y&=aTS_v#HM|%uXitbt$O}iWVy}{_# z0e835-Xhcq&%52psGDx7ZPt|1{aiwqsEfZY1O!)ftE0tgeffI4S<7TF3o7!}2Zg&u*?RIk^Eo)bj$oJ)hPVwzHzen@9kKS`NJPs-!WCKjJw#xX)nlzMz7U$); zQ|T1{7{~ju{hXLJmE7xKU4VZWyP?AOk+5C1!Bt|*UPB4a@t`sp`4a?=`j70&WaGo@ z1vo(~T07saml}Wc`Qq(yo%Zz*HrQA3ud%Je_D5pYRPwwld=g>GWtZvUvACqT zOaDu`df~pXUp4vI&oBADi;jE?+j}n4GTLPx`=)cp-saqKh*^(?Z#?E1#ko25)H~}? z`N#2)m`ceQS5qA4UyMA&d#WudQ_|q-%ToHdP+>C{yXYG9H_nNE1*6!v_iMgxQ6k2F znZcf`N9?O#aAh%lUIkwA7ky-{l&N0tYRY1GTw}b#n2ISHZtXc|@_hkE#1%e8Q!I|~ z`8OaR{Xb&{rf80}mz=@hr1{Lt09PCj_mOlr)x4P(%7Qx|4=k)(Y_r6h5M!P|D*|*dRmsbW{#>P>wcVdLTB`d+B?MdsFX8|Hyrv zJM>uRKK3o=4y(XW?tNEWTk48yI$Uwx1%p#8UIuleJso)%a6AgwmjU;A!0!dvEVg?G zhmZA(zBdz;&8{)~3G43##g#!>!ioRf4fQpvzh+~+uK@3J2@ly9&2Iu;+T|O_hyK|Y zFjc*rXP5s%ekbxJ7xl7(^)ESte;4_vJNk5{YVViVYd+!VSLuV9svlH8s{d3D@{k^AxH3Bd%gMd9`N)X3^#6f(b>o2 z`p=ykf;tYQBYvj_BkG0dVULlK21nfs(dVwj zKa7+WM%oYII`zNbM+dm_yP$Ko+|v?`5TT8Bg6xQDZAC$e+Bqb?;X>@6-h$x=z!jGoSz=h zyVh0kU%zVbVx ze@P*$&|4GG`z+3{PUw}@n;#e?E{(2Gm@@RCLXUc#j}i6$@T_|x3Z9Ms3lyi&yELG8 z9nJ$E(eUg>==BDLDZAI`F)n4?n@YpwrtHCh zUVm!RGWvR4bjJJGUcvS!7o9m3TPx0=#IZ7wb90@Eygv=(eHQ00C)66Z-UxY7w}dHs zSnWgRy?h)nklgD5^Ou0`>o|Wupu78q=e;8ItAr_g6m-`Cb_i^iKb=kPhJRdz*`cHH ze=&aanccC!CH*%O`X$A1Gw8E@YCK%J-9i0PNtwcwfj0FBPtuLq%$YJ5)?aQx&2lAC zKo@fdCGDQ7bB(8N*dLWNyJ$rRq*yXe=n5`ODb(>_*pHNq z(lTW);d&04^h4d!Z=H^wNA(%__ma*8f5~LP2J-+dKihCSE!kRO%HSIVdW`=+j#0n* zq>$d00X>X&OLhZ~mReri2zt9HOd0IJ#%uKI2{qu7`r0|5vj<@2dn(Sg);U-K%7N!F zrSv#gVanb%xvC+{0q$ei()6rfF4;4nhw(-U`f{IIJ6$!;2c?JppD<tY2dkq&Pf5CGXZmMK_ldRlw=vuj??YXiFf1srz- zbT2V~F_?Xz-zH49(dcsgot7_eR?qZ%OF;MAz|kAf{pyDMg_7?oOtuC1)&aJ0K>eoa zd%5ok=%fEHc_yI$17JfMwEdy~Crq}(I5+wx9IwPZ z9ck2&H=dX8g=UFbd^(8ZXgG$HHShHONAzpXIY(ZH7jFylMl4~OV41jAzVJEia!ER!7%{Jc&-=;?~rP&rFcKI%k1QVFICOULRt z_iZ0FKN#Xgf6X#k^rf*sO837qUsclSqUo2wUcQH82ab>6xB%Oc*f3`>y$4W}?nc>gl68=<#FLXVV6 zcNKckwA;`wK4bl3sK=ePOm;uRukrsWG9u@Ft00mQ{5vH0OLqtCzJgzNoo{Y99xmNW zVY2AEV|(m&2O}<=BP~9NWP~1K3U3#s2LSfagkD#}M$kJ%VX_|!>?BQ1+8O6AV>(9w z=9qxa&Kprrixeh{*h1`)^9r=@fR@OESR$r#0$^4LboSZsyh7;;g~=`qv$Se}$LZh^>iW z{5#(N$)h7P?a6&RmGh>6?w!E#y+F>d0}E0=KOMH`?+tW+HfqvAdk>wli z$4g&RnCw?fzl@80Kc3dJ%8B?SruW~leTmGJ;>fNI$Hk?63X{Fa{XzGf

$t)B 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 z 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 fcn-_VI{cjzL@bgT{Ub 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 \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/.log b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/.log new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/Boot.sc b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/Boot.sc new file mode 100644 index 00000000..9468ee54 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/Boot.sc @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/Prog.sc b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/Prog.sc new file mode 100644 index 00000000..901d0ec1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/Prog.sc @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c @@ -0,0 +1 @@ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp @@ -0,0 +1 @@ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/Boot.build.log b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/Boot.build.log new file mode 100644 index 00000000..0b1142b7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/Boot.build.log @@ -0,0 +1,115 @@ + +**** Build of configuration bin for project Boot **** + +cs-make all +Building file: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d" -MT"lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o" "../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c" +Finished building: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +Building file: ../lib/CMSIS/CM3/CoreSupport/core_cm3.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="lib/CMSIS/CM3/CoreSupport/core_cm3.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/CMSIS/CM3/CoreSupport/core_cm3.d" -MT"lib/CMSIS/CM3/CoreSupport/core_cm3.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/CMSIS/CM3/CoreSupport/core_cm3.o" "../lib/CMSIS/CM3/CoreSupport/core_cm3.c" +Finished building: ../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/GCC/cstart.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/GCC/cstart.d" -MT"Source/ARMCM3_STM32/GCC/cstart.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/GCC/cstart.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/GCC/vectors.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/GCC/vectors.d" -MT"Source/ARMCM3_STM32/GCC/vectors.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/GCC/vectors.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/can.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/can.d" -MT"Source/ARMCM3_STM32/can.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/can.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/cpu.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/cpu.d" -MT"Source/ARMCM3_STM32/cpu.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/cpu.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/flash.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/flash.d" -MT"Source/ARMCM3_STM32/flash.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/flash.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/nvm.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/nvm.d" -MT"Source/ARMCM3_STM32/nvm.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/nvm.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/timer.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/timer.d" -MT"Source/ARMCM3_STM32/timer.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/timer.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/uart.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/uart.d" -MT"Source/ARMCM3_STM32/uart.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/uart.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/assert.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/assert.d" -MT"Source/assert.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/assert.o" "D:/usr/feaser/software/OpenBLT/Target/Source/assert.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/backdoor.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/backdoor.d" -MT"Source/backdoor.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/backdoor.o" "D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/boot.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/boot.d" -MT"Source/boot.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/boot.o" "D:/usr/feaser/software/OpenBLT/Target/Source/boot.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/com.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/com.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/com.d" -MT"Source/com.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/com.o" "D:/usr/feaser/software/OpenBLT/Target/Source/com.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/cop.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/cop.d" -MT"Source/cop.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/cop.o" "D:/usr/feaser/software/OpenBLT/Target/Source/cop.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/xcp.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/xcp.d" -MT"Source/xcp.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/xcp.o" "D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +Building file: ../hooks.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="hooks.o.lst" -c -fmessage-length=0 -MMD -MP -MF"hooks.d" -MT"hooks.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "hooks.o" "../hooks.c" +Finished building: ../hooks.c + +Building file: ../main.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="main.o.lst" -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "main.o" "../main.c" +Finished building: ../main.c + +Building target: openbtl_olimex_stm32p103.elf +Invoking: ARM Sourcery Windows GCC C Linker +arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o ./lib/CMSIS/CM3/CoreSupport/core_cm3.o ./Source/ARMCM3_STM32/GCC/cstart.o ./Source/ARMCM3_STM32/GCC/vectors.o ./Source/ARMCM3_STM32/can.o ./Source/ARMCM3_STM32/cpu.o ./Source/ARMCM3_STM32/flash.o ./Source/ARMCM3_STM32/nvm.o ./Source/ARMCM3_STM32/timer.o ./Source/ARMCM3_STM32/uart.o ./Source/assert.o ./Source/backdoor.o ./Source/boot.o ./Source/com.o ./Source/cop.o ./Source/xcp.o ./hooks.o ./main.o +Finished building target: openbtl_olimex_stm32p103.elf + +Invoking: ARM Sourcery Windows GNU Create Flash Image +arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec +Finished building: openbtl_olimex_stm32p103.hex + +Invoking: ARM Sourcery Windows GNU Create Listing +arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" +Finished building: openbtl_olimex_stm32p103.lst + +Invoking: ARM Sourcery Windows GNU Print Size +arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + text data bss dec hex filename + 5344 20 1520 6884 1ae4 openbtl_olimex_stm32p103.elf +Finished building: openbtl_olimex_stm32p103.siz + + +**** Build Finished **** diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/Prog.build.log b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/Prog.build.log new file mode 100644 index 00000000..564a4f3c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/Prog.build.log @@ -0,0 +1,195 @@ + +**** Build of configuration bin for project Prog **** + +cs-make all +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c + +Building file: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d" -MT"lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o" "../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c" +Finished building: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +Building file: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d" -MT"lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o" "../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c" +Finished building: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +Building file: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d" -MT"lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o" "../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c" +Finished building: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +Building file: ../lib/stdio_mini.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="lib/stdio_mini.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/stdio_mini.d" -MT"lib/stdio_mini.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/stdio_mini.o" "../lib/stdio_mini.c" +Finished building: ../lib/stdio_mini.c + +Building file: ../boot.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="boot.o.lst" -c -fmessage-length=0 -MMD -MP -MF"boot.d" -MT"boot.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "boot.o" "../boot.c" +Finished building: ../boot.c + +Building file: ../cstart.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="cstart.o.lst" -c -fmessage-length=0 -MMD -MP -MF"cstart.d" -MT"cstart.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "cstart.o" "../cstart.c" +Finished building: ../cstart.c + +Building file: ../irq.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="irq.o.lst" -c -fmessage-length=0 -MMD -MP -MF"irq.d" -MT"irq.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "irq.o" "../irq.c" +Finished building: ../irq.c + +Building file: ../led.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="led.o.lst" -c -fmessage-length=0 -MMD -MP -MF"led.d" -MT"led.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "led.o" "../led.c" +Finished building: ../led.c + +Building file: ../main.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="main.o.lst" -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "main.o" "../main.c" +Finished building: ../main.c + +Building file: ../timer.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="timer.o.lst" -c -fmessage-length=0 -MMD -MP -MF"timer.d" -MT"timer.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "timer.o" "../timer.c" +Finished building: ../timer.c + +Building file: ../uart.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="uart.o.lst" -c -fmessage-length=0 -MMD -MP -MF"uart.d" -MT"uart.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "uart.o" "../uart.c" +Finished building: ../uart.c + +Building file: ../vectors.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="vectors.o.lst" -c -fmessage-length=0 -MMD -MP -MF"vectors.d" -MT"vectors.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "vectors.o" "../vectors.c" +Finished building: ../vectors.c + +Building target: demoprog_olimex_stm32p103.elf +Invoking: ARM Sourcery Windows GCC C Linker +arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o ./lib/stdio_mini.o ./boot.o ./cstart.o ./irq.o ./led.o ./main.o ./timer.o ./uart.o ./vectors.o +Finished building target: demoprog_olimex_stm32p103.elf + +Invoking: ARM Sourcery Windows GNU Create Flash Image +arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec +Finished building: demoprog_olimex_stm32p103.hex + +Invoking: ARM Sourcery Windows GNU Create Listing +arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" +Finished building: demoprog_olimex_stm32p103.lst + +Invoking: ARM Sourcery Windows GNU Print Size +arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + text data bss dec hex filename + 7072 24 1124 8220 201c demoprog_olimex_stm32p103.elf +Finished building: demoprog_olimex_stm32p103.siz + + +**** Build Finished **** diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml new file mode 100644 index 00000000..c6656cb8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml @@ -0,0 +1,25 @@ + +

    + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log new file mode 100644 index 00000000..0b1142b7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log @@ -0,0 +1,115 @@ + +**** Build of configuration bin for project Boot **** + +cs-make all +Building file: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d" -MT"lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o" "../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c" +Finished building: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +Building file: ../lib/CMSIS/CM3/CoreSupport/core_cm3.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="lib/CMSIS/CM3/CoreSupport/core_cm3.o.lst" -c -fmessage-length=0 -MMD -MP -MF"lib/CMSIS/CM3/CoreSupport/core_cm3.d" -MT"lib/CMSIS/CM3/CoreSupport/core_cm3.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "lib/CMSIS/CM3/CoreSupport/core_cm3.o" "../lib/CMSIS/CM3/CoreSupport/core_cm3.c" +Finished building: ../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/GCC/cstart.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/GCC/cstart.d" -MT"Source/ARMCM3_STM32/GCC/cstart.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/GCC/cstart.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/GCC/vectors.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/GCC/vectors.d" -MT"Source/ARMCM3_STM32/GCC/vectors.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/GCC/vectors.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/can.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/can.d" -MT"Source/ARMCM3_STM32/can.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/can.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/cpu.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/cpu.d" -MT"Source/ARMCM3_STM32/cpu.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/cpu.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/flash.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/flash.d" -MT"Source/ARMCM3_STM32/flash.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/flash.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/nvm.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/nvm.d" -MT"Source/ARMCM3_STM32/nvm.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/nvm.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/timer.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/timer.d" -MT"Source/ARMCM3_STM32/timer.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/timer.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/ARMCM3_STM32/uart.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/ARMCM3_STM32/uart.d" -MT"Source/ARMCM3_STM32/uart.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/ARMCM3_STM32/uart.o" "D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/assert.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/assert.d" -MT"Source/assert.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/assert.o" "D:/usr/feaser/software/OpenBLT/Target/Source/assert.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/backdoor.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/backdoor.d" -MT"Source/backdoor.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/backdoor.o" "D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/boot.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/boot.d" -MT"Source/boot.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/boot.o" "D:/usr/feaser/software/OpenBLT/Target/Source/boot.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/com.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/com.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/com.d" -MT"Source/com.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/com.o" "D:/usr/feaser/software/OpenBLT/Target/Source/com.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/cop.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/cop.d" -MT"Source/cop.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/cop.o" "D:/usr/feaser/software/OpenBLT/Target/Source/cop.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + +Building file: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="Source/xcp.o.lst" -c -fmessage-length=0 -MMD -MP -MF"Source/xcp.d" -MT"Source/xcp.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Source/xcp.o" "D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c" +Finished building: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +Building file: ../hooks.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="hooks.o.lst" -c -fmessage-length=0 -MMD -MP -MF"hooks.d" -MT"hooks.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "hooks.o" "../hooks.c" +Finished building: ../hooks.c + +Building file: ../main.c +Invoking: ARM Sourcery Windows GCC C Compiler +arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="main.o.lst" -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "main.o" "../main.c" +Finished building: ../main.c + +Building target: openbtl_olimex_stm32p103.elf +Invoking: ARM Sourcery Windows GCC C Linker +arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o ./lib/CMSIS/CM3/CoreSupport/core_cm3.o ./Source/ARMCM3_STM32/GCC/cstart.o ./Source/ARMCM3_STM32/GCC/vectors.o ./Source/ARMCM3_STM32/can.o ./Source/ARMCM3_STM32/cpu.o ./Source/ARMCM3_STM32/flash.o ./Source/ARMCM3_STM32/nvm.o ./Source/ARMCM3_STM32/timer.o ./Source/ARMCM3_STM32/uart.o ./Source/assert.o ./Source/backdoor.o ./Source/boot.o ./Source/com.o ./Source/cop.o ./Source/xcp.o ./hooks.o ./main.o +Finished building target: openbtl_olimex_stm32p103.elf + +Invoking: ARM Sourcery Windows GNU Create Flash Image +arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec +Finished building: openbtl_olimex_stm32p103.hex + +Invoking: ARM Sourcery Windows GNU Create Listing +arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" +Finished building: openbtl_olimex_stm32p103.lst + +Invoking: ARM Sourcery Windows GNU Print Size +arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + text data bss dec hex filename + 5344 20 1520 6884 1ae4 openbtl_olimex_stm32p103.elf +Finished building: openbtl_olimex_stm32p103.siz + + +**** Build Finished **** diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/302f3cf1091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/302f3cf1091d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/302f3cf1091d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/70994e1a0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/70994e1a0b1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/70994e1a0b1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/70f636a1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/70f636a1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/804030d8221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/804030d8221d0011116edf0151d9d887 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/804030d8221d0011116edf0151d9d887 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/f035cf3f021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/f035cf3f021d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/f035cf3f021d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/f0a432570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/f0a432570e1d00111358d2931fee7772 new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/0/f0a432570e1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/302c66b00a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/302c66b00a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/302c66b00a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/602d9d2d201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/602d9d2d201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/a058473c0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/a058473c0b1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1/a058473c0b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/60252d5d041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/60252d5d041d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/60252d5d041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/7079cdd10d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/7079cdd10d1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/7079cdd10d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/c032227c0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/c032227c0a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/10/c032227c0a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/6034d2d10d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/6034d2d10d1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/6034d2d10d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/909d1c3efa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/909d1c3efa1c00111358d2931fee7772 new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/909d1c3efa1c00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/e06e5a75221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/11/e06e5a75221d0011116edf0151d9d887 new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/12/80021471e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/12/80021471e91c00111565e8bbe12141cd new file mode 100644 index 00000000..9bf68be5 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/12/80021471e91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/12/c010082d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/12/c010082d091d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/12/c010082d091d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/13/8046912d201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/13/8046912d201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/13/f0b60204e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/13/f0b60204e91c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/13/f0b60204e91c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/14/8034d03c071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/14/8034d03c071d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/14/8034d03c071d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/14/90f50097051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/14/90f50097051d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/14/90f50097051d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/00dc4856201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/00dc4856201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/00dc4856201d00111c63a4b3c7bd9f5b @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/10c046ffe91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/10c046ffe91c00111565e8bbe12141cd new file mode 100644 index 00000000..7dff3cbf --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/10c046ffe91c00111565e8bbe12141cd @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/403939ace71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/403939ace71c00111565e8bbe12141cd new file mode 100644 index 00000000..1ab9db6d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/15/403939ace71c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +Prog.hex \ + +SECONDARY_LIST += \ +Prog.lst \ + +SECONDARY_SIZE += \ +Prog.siz \ + + +# All Target +all: Prog.elf secondary-outputs + +# Tool invocations +Prog.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -Wl,-Map,Prog.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Prog.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +Prog.hex: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec Prog.elf "Prog.hex" + @echo 'Finished building: $@' + @echo ' ' + +Prog.lst: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S Prog.elf > "Prog.lst" + @echo 'Finished building: $@' + @echo ' ' + +Prog.siz: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley Prog.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) Prog.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/16/00ce7c1a0e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/16/00ce7c1a0e1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/16/00ce7c1a0e1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/16/9015cc3fea1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/16/9015cc3fea1c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/17/70458efa071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/17/70458efa071d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/17/70458efa071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/17/7055a2000b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/17/7055a2000b1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/17/7055a2000b1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/10ad587cff1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/10ad587cff1c00111358d2931fee7772 new file mode 100644 index 00000000..505ccbce --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/10ad587cff1c00111358d2931fee7772 @@ -0,0 +1,162 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/703ff89ff41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/703ff89ff41c00111565e8bbe12141cd new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/703ff89ff41c00111565e8bbe12141cd @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/d009b9e4f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/d009b9e4f61c00111565e8bbe12141cd new file mode 100644 index 00000000..7f0ed4d5 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/18/d009b9e4f61c00111565e8bbe12141cd @@ -0,0 +1,166 @@ +/**************************************************************************************** +| Description: bootloader interrupt vector table source file +| File Name: vectors.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* External functions +****************************************************************************************/ +extern void reset_handler(void); /* implemented in cstart.c */ + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +extern unsigned long _estack; /* stack end address (memory.x) */ + + +/**************************************************************************************** +** NAME: UnusedISR +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Catch-all for unused interrrupt service routines. +** +****************************************************************************************/ +void UnusedISR(void) +{ + /* unexpected interrupt occured, so halt the system */ + while (1) { ; } +} /*** end of UnusedISR ***/ + + +/**************************************************************************************** +* I N T E R R U P T V E C T O R T A B L E +****************************************************************************************/ +typedef union +{ + void (*func)(void); /* for ISR function pointers */ + unsigned long ptr; /* for stack pointer entry */ +}tIsrFunc; /* type for vector table entries */ + +__attribute__ ((section(".isr_vector"))) +const tIsrFunc _vectab[] = +{ + { .ptr = (unsigned long)&_estack }, /* the initial stack pointer */ + reset_handler, /* the reset handler */ + UnusedISR, /* NMI Handler */ + UnusedISR, /* Hard Fault Handler */ + UnusedISR, /* MPU Fault Handler */ + UnusedISR, /* Bus Fault Handler */ + UnusedISR, /* Usage Fault Handler */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* SVCall Handler */ + UnusedISR, /* Debug Monitor Handler */ + UnusedISR, /* Reserved */ + UnusedISR, /* PendSV Handler */ + TimerISRHandler, /* SysTick Handler */ + UnusedISR, /* Window Watchdog */ + UnusedISR, /* PVD through EXTI Line detect */ + UnusedISR, /* Tamper */ + UnusedISR, /* RTC */ + UnusedISR, /* Flash */ + UnusedISR, /* RCC */ + UnusedISR, /* EXTI Line 0 */ + UnusedISR, /* EXTI Line 1 */ + UnusedISR, /* EXTI Line 2 */ + UnusedISR, /* EXTI Line 3 */ + UnusedISR, /* EXTI Line 4 */ + UnusedISR, /* DMA1 Channel 1 */ + UnusedISR, /* DMA1 Channel 2 */ + UnusedISR, /* DMA1 Channel 3 */ + UnusedISR, /* DMA1 Channel 4 */ + UnusedISR, /* DMA1 Channel 5 */ + UnusedISR, /* DMA1 Channel 6 */ + UnusedISR, /* DMA1 Channel 7 */ + UnusedISR, /* ADC1 and ADC2 */ + UnusedISR, /* CAN1 TX */ + UnusedISR, /* CAN1 RX0 */ + UnusedISR, /* CAN1 RX1 */ + UnusedISR, /* CAN1 SCE */ + UnusedISR, /* EXTI Line 9..5 */ + UnusedISR, /* TIM1 Break */ + UnusedISR, /* TIM1 Update */ + UnusedISR, /* TIM1 Trigger and Commutation */ + UnusedISR, /* TIM1 Capture Compare */ + UnusedISR, /* TIM2 */ + UnusedISR, /* TIM3 */ + UnusedISR, /* TIM4 */ + UnusedISR, /* I2C1 Event */ + UnusedISR, /* I2C1 Error */ + UnusedISR, /* I2C2 Event */ + UnusedISR, /* I2C1 Error */ + UnusedISR, /* SPI1 */ + UnusedISR, /* SPI2 */ + UnusedISR, /* USART1 */ + UnusedISR, /* USART2 */ + UnusedISR, /* USART3 */ + UnusedISR, /* EXTI Line 15..10 */ + UnusedISR, /* RTC alarm through EXTI line */ + UnusedISR, /* USB OTG FS Wakeup */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* TIM5 */ + UnusedISR, /* SPI3 */ + UnusedISR, /* UART4 */ + UnusedISR, /* UART5 */ + UnusedISR, /* TIM6 */ + UnusedISR, /* TIM7 */ + UnusedISR, /* DMA2 Channel1 */ + UnusedISR, /* DMA2 Channel2 */ + UnusedISR, /* DMA2 Channel3 */ + UnusedISR, /* DMA2 Channel4 */ + UnusedISR, /* DMA2 Channel5 */ + UnusedISR, /* Ethernet */ + UnusedISR, /* Ethernet Wakeup */ + UnusedISR, /* CAN2 TX */ + UnusedISR, /* CAN2 RX0 */ + UnusedISR, /* CAN2 RX1 */ + UnusedISR, /* CAN2 SCE */ + UnusedISR, /* USB OTG FS */ + (void*)0x55AA11EE, /* Reserved for OpenBLT checksum */ +}; + + +/************************************ end of hw.c **************************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/20c814a0f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/20c814a0f41c00111565e8bbe12141cd new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/20c814a0f41c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/20ec95440a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/20ec95440a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/20ec95440a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/b076c93d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/b076c93d091d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/b076c93d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/e0b71172f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/19/e0b71172f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1b/a0f7132d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1b/a0f7132d091d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1b/a0f7132d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1b/f0c22d570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1b/f0c22d570e1d00111358d2931fee7772 new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1b/f0c22d570e1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/00a8a240011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/00a8a240011d00111358d2931fee7772 new file mode 100644 index 00000000..98966035 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/00a8a240011d00111358d2931fee7772 @@ -0,0 +1,350 @@ +/**************************************************************************************** +| Description: demo program bootloader interface source file +| File Name: boot.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: BootActivate +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Bootloader activation function. +** +****************************************************************************************/ +static void BootActivate(void) +{ + void (*pEntryFromProgFnc)(void); + + /* set pointer to the address of function EntryFromProg in the bootloader. note that + * 1 is added to this address to enable a switch from Thumb2 to Thumb mode + */ + pEntryFromProgFnc = (void*)0x08000150 + 1; + /* call EntryFromProg to activate the bootloader. */ + pEntryFromProgFnc(); +} /*** end of BootActivate ***/ + + +#if (BOOT_COM_UART_ENABLE > 0) +/**************************************************************************************** +* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data); + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + UartInit(BOOT_COM_UART_BAUDRATE); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1]; + static unsigned char xcpCtoRxLength; + static unsigned char xcpCtoRxInProgress = 0; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == 0) + { + /* store the message length when received */ + if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) + { + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = 1; + + /* reset packet data count */ + xcpCtoRxLength = 0; + } + } + else + { + /* store the next packet byte */ + if (UartReceiveByte(&xcpCtoReqPacket[xcpCtoRxLength+1]) == 1) + { + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* done with cto packet reception */ + xcpCtoRxInProgress = 0; + + /* check if this was an XCP CONNECT command */ + if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } + } +} /*** end of BootComCheckActivationRequest ***/ + + +/**************************************************************************************** +** NAME: UartReceiveByte +** PARAMETER: data pointer to byte where the data is to be stored. +** RETURN VALUE: 1 if a byte was received, 0 otherwise. +** DESCRIPTION: Receives a communication interface byte if one is present. +** +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data) +{ + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) + { + /* retrieve and store the newly received byte */ + *data = (unsigned char)USART_ReceiveData(USART2); + /* all done */ + return 1; + } + /* still here to no new byte received */ + return 0; +} /*** end of UartReceiveByte ***/ +#endif /* BOOT_COM_UART_ENABLE > 0 */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /* CAN time segment 1 */ + unsigned char tseg2; /* CAN time segment 2 */ +} tCanBusTiming; /* bus timing structure type */ + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/* According to the CAN protocol 1 bit-time can be made up of between 8..25 time quanta + * (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC always being 1. + * The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * 100%. This array contains + * possible and valid time quanta configurations with a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/**************************************************************************************** +** NAME: CanGetSpeedConfig +** PARAMETER: baud The desired baudrate in kbps. Valid values are 10..1000. +** prescaler Pointer to where the value for the prescaler will be stored. +** tseg1 Pointer to where the value for TSEG2 will be stored. +** tseg2 Pointer to where the value for TSEG2 will be stored. +** RETURN VALUE: 1 if the CAN bustiming register values were found, 0 otherwise. +** DESCRIPTION: Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/2) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/2)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the CAN communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* GPIO clock enable */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + /* Configure CAN pin: RX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Configure CAN pin: TX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Remap CAN1 pins to PortB */ + GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); + /* CAN1 Periph clock enable */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN1); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN1, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 0; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN1, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/20fbfe76f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/20fbfe76f61c00111565e8bbe12141cd new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/20fbfe76f61c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/5081ab3f021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/5081ab3f021d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1c/5081ab3f021d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/10450177f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/10450177f61c00111565e8bbe12141cd new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/10450177f61c00111565e8bbe12141cd @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/4032521e091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/4032521e091d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/4032521e091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/7066e47b0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/7066e47b0a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/7066e47b0a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/70e32413f71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/70e32413f71c00111565e8bbe12141cd new file mode 100644 index 00000000..6ecc6da6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/70e32413f71c00111565e8bbe12141cd @@ -0,0 +1,166 @@ +/**************************************************************************************** +| Description: bootloader interrupt vector table source file +| File Name: vectors.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* External functions +****************************************************************************************/ +extern void reset_handler(void); /* implemented in cstart.c */ + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +extern unsigned long _estack; /* stack end address (memory.x) */ + + +/**************************************************************************************** +** NAME: UnusedISR +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Catch-all for unused interrrupt service routines. +** +****************************************************************************************/ +void UnusedISR(void) +{ + /* unexpected interrupt occured, so halt the system */ + while (1) { ; } +} /*** end of UnusedISR ***/ + + +/**************************************************************************************** +* I N T E R R U P T V E C T O R T A B L E +****************************************************************************************/ +typedef union +{ + void (*func)(void); /* for ISR function pointers */ + unsigned long ptr; /* for stack pointer entry */ +}tIsrFunc; /* type for vector table entries */ + +__attribute__ ((section(".isr_vector"))) +const tIsrFunc _vectab[] = +{ + { .ptr = (unsigned long)&_estack }, /* the initial stack pointer */ + { reset_handler }, /* the reset handler */ + { UnusedISR }, /* NMI Handler */ + { UnusedISR }, /* Hard Fault Handler */ + { UnusedISR }, /* MPU Fault Handler */ + { UnusedISR }, /* Bus Fault Handler */ + { UnusedISR }, /* Usage Fault Handler */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* SVCall Handler */ + { UnusedISR }, /* Debug Monitor Handler */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* PendSV Handler */ + TimerISRHandler, /* SysTick Handler */ + { UnusedISR }, /* Window Watchdog */ + { UnusedISR }, /* PVD through EXTI Line detect */ + { UnusedISR }, /* Tamper */ + { UnusedISR }, /* RTC */ + { UnusedISR }, /* Flash */ + { UnusedISR }, /* RCC */ + { UnusedISR }, /* EXTI Line 0 */ + { UnusedISR }, /* EXTI Line 1 */ + { UnusedISR }, /* EXTI Line 2 */ + { UnusedISR }, /* EXTI Line 3 */ + { UnusedISR }, /* EXTI Line 4 */ + { UnusedISR }, /* DMA1 Channel 1 */ + { UnusedISR }, /* DMA1 Channel 2 */ + { UnusedISR }, /* DMA1 Channel 3 */ + { UnusedISR }, /* DMA1 Channel 4 */ + { UnusedISR }, /* DMA1 Channel 5 */ + { UnusedISR }, /* DMA1 Channel 6 */ + { UnusedISR }, /* DMA1 Channel 7 */ + { UnusedISR }, /* ADC1 and ADC2 */ + { UnusedISR }, /* CAN1 TX */ + { UnusedISR }, /* CAN1 RX0 */ + { UnusedISR }, /* CAN1 RX1 */ + { UnusedISR }, /* CAN1 SCE */ + { UnusedISR }, /* EXTI Line 9..5 */ + { UnusedISR }, /* TIM1 Break */ + { UnusedISR }, /* TIM1 Update */ + { UnusedISR }, /* TIM1 Trigger and Commutation */ + { UnusedISR }, /* TIM1 Capture Compare */ + { UnusedISR }, /* TIM2 */ + { UnusedISR }, /* TIM3 */ + { UnusedISR }, /* TIM4 */ + { UnusedISR }, /* I2C1 Event */ + { UnusedISR }, /* I2C1 Error */ + { UnusedISR }, /* I2C2 Event */ + { UnusedISR }, /* I2C1 Error */ + { UnusedISR }, /* SPI1 */ + { UnusedISR }, /* SPI2 */ + { UnusedISR }, /* USART1 */ + { UnusedISR }, /* USART2 */ + { UnusedISR }, /* USART3 */ + { UnusedISR }, /* EXTI Line 15..10 */ + { UnusedISR }, /* RTC alarm through EXTI line */ + { UnusedISR }, /* USB OTG FS Wakeup */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* TIM5 */ + { UnusedISR }, /* SPI3 */ + { UnusedISR }, /* UART4 */ + { UnusedISR }, /* UART5 */ + { UnusedISR }, /* TIM6 */ + { UnusedISR }, /* TIM7 */ + { UnusedISR }, /* DMA2 Channel1 */ + { UnusedISR }, /* DMA2 Channel2 */ + { UnusedISR }, /* DMA2 Channel3 */ + { UnusedISR }, /* DMA2 Channel4 */ + { UnusedISR }, /* DMA2 Channel5 */ + { UnusedISR }, /* Ethernet */ + { UnusedISR }, /* Ethernet Wakeup */ + { UnusedISR }, /* CAN2 TX */ + { UnusedISR }, /* CAN2 RX0 */ + { UnusedISR }, /* CAN2 RX1 */ + { UnusedISR }, /* CAN2 SCE */ + { UnusedISR }, /* USB OTG FS */ + { (void*)0x55AA11EE }, /* Reserved for OpenBLT checksum */ +}; + + +/************************************ end of hw.c **************************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/d09b3db6221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/d09b3db6221d0011116edf0151d9d887 new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1d/d09b3db6221d0011116edf0151d9d887 @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/201632030d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/201632030d1d00111358d2931fee7772 new file mode 100644 index 00000000..e44afbf4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/201632030d1d00111358d2931fee7772 @@ -0,0 +1,205 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void DisplayUptime(void); +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* Output uptime on terminal */ + DisplayUptime(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: DisplayUptime +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Outputs the program's runtime on the terminal every second. +** +****************************************************************************************/ +static void DisplayUptime(void) +{ + static unsigned long uptime_ms_last = 0; + unsigned long uptime_ms_now; + unsigned char hr, min, sec; + + uptime_ms_now = TimerGet(); + + /* output info on terminal just once a second */ + if ( (uptime_ms_now - uptime_ms_last) < 1000) + { + /* not yet time to toggle */ + return; + } + /* calculate uptime */ + sec = uptime_ms_now/1000; + min = sec/60; + hr = min/60; + + /* output time on terminal */ + printf("Program uptime: %d:%02d:%02d\r", hr, min, sec); + + /* store for next comparison */ + uptime_ms_last = uptime_ms_now; +} /*** end of DisplayUptime ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/70d6a0220a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/70d6a0220a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/70d6a0220a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/b1841a04e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/b1841a04e91c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/c111bc440a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/c111bc440a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/1f/c111bc440a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/30cff776f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/30cff776f61c00111565e8bbe12141cd new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/30cff776f61c00111565e8bbe12141cd @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/709de046201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/709de046201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/9061d663e81c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/9061d663e81c00111565e8bbe12141cd new file mode 100644 index 00000000..ad2dac46 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/9061d663e81c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0425375221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0425375221d0011116edf0151d9d887 new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0fc0c72f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0fc0c72f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/21/90f12fa1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/21/90f12fa1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/22/20968bf0041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/22/20968bf0041d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/22/20968bf0041d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/9055eedb041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/9055eedb041d00111358d2931fee7772 new file mode 100644 index 00000000..8378f15f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/9055eedb041d00111358d2931fee7772 @@ -0,0 +1,182 @@ +/**************************************************************************************** +| Description: Newlib system calls remapping source file +| File Name: syscalls.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +** NAME: _read_r +** PARAMETER: len number of character to read. +** RETURN VALUE: number of characters read +** DESCRIPTION: Reentrant function for reading data from a file. In this case the +** read is performed from the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len) +{ + char c; + int i; + unsigned char *p; + + p = (unsigned char*)ptr; + + /* receive all characters with echo */ + for (i = 0; i < len; i++) + { + c = UartRxChar(1); + + *p++ = c; + UartTxChar(c); + + /* was this a \n newline code? */ + if (c == 0x0D && i <= (len - 2)) + { + /* automatically add cariage return after a new line */ + *p = 0x0A; + UartTxChar(0x0A); + return i + 2; + } + } + return i; +} /*** end of _read_r ***/ + + +/**************************************************************************************** +** NAME: _write_r +** PARAMETER: len number of character to write +** RETURN VALUE: number of characters written. +** DESCRIPTION: Reentrant function for writing data from a file. In this case the +** write is performed to the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len) +{ + int i; + const unsigned char *p; + + p = (const unsigned char*) ptr; + + /* transmit all characters */ + for (i = 0; i < len; i++) + { + if (*p == '\n' ) + { + /* automatically add cariage return after a new line */ + UartTxChar('\r'); + } + UartTxChar(*p++); + } + + return len; +} /*** end of _write_r ***/ + + +/**************************************************************************************** +** NAME: _close_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for closing a file. Since UART is used, no further +** action is required here. +** +****************************************************************************************/ +int _close_r(struct _reent *r, int file) +{ + return 0; +} /*** end of _close_r ***/ + + +/**************************************************************************************** +** NAME: _lseek_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for obtaining the file pointer. Since UART is +** used, no further action is required here. +** +****************************************************************************************/ +_off_t _lseek_r(struct _reent *r, int file, _off_t ptr, int dir) +{ + /* always at the beginning of the file */ + return (_off_t)0; +} /*** end of _lseek_r ***/ + + +/**************************************************************************************** + * +** NAME: _fstat_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for setting the device mode. +** +****************************************************************************************/ +int _fstat_r(struct _reent *r, int file, struct stat *st) +{ + /* set as character device */ + st->st_mode = S_IFCHR; + return 0; +} /*** end of _fstat_r ***/ + + + +/**************************************************************************************** +** NAME: _isatty_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +int _isatty_r(int file) +{ + return 1; +} /*** end of _isatty_r ***/ + + +/**************************************************************************************** +** NAME: _sbrk_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +void * _sbrk_r(struct _reent *_s_r, ptrdiff_t nbytes) +{ + +} /*** end of _sbrk_r ***/ + + +/*********************************** end of syscalls.c *********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/9082f7d1001d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/9082f7d1001d00111358d2931fee7772 new file mode 100644 index 00000000..cc3d00cc --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/9082f7d1001d00111358d2931fee7772 @@ -0,0 +1,121 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + GPIO_InitTypeDef GPIO_InitStruct; + USART_InitTypeDef USART_InitStruct; + + /* enable UART peripheral clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + /* enable GPIO peripheral clock for transmitter and receiver pins */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); + /* configure USART Tx as alternate function push-pull */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* Configure USART Rx as alternate function input floating */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* configure UART communcation parameters */ + USART_InitStruct.USART_BaudRate = baudrate; + USART_InitStruct.USART_WordLength = USART_WordLength_8b; + USART_InitStruct.USART_StopBits = USART_StopBits_1; + USART_InitStruct.USART_Parity = USART_Parity_No; + USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_Init(USART2, &USART_InitStruct); + /* enable UART */ + USART_Cmd(USART2, ENABLE); +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + /* wait for transmit completion of the previous character, if any */ + while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET) { ; } + /* transmit the character */ + USART_SendData(USART2, (unsigned char)ch); + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + if (!blocking) + { + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) + { + return -1; + } + } + else + { + /* wait for reception of byte */ + while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) { ; } + } + /* retrieve and return the newly received byte */ + return USART_ReceiveData(USART2); +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/a0ee8eb5091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/a0ee8eb5091d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/a0ee8eb5091d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/c0d9bf3d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/c0d9bf3d091d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/c0d9bf3d091d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/e037ed360a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/e037ed360a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/23/e037ed360a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/203e379d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/203e379d091d00111358d2931fee7772 new file mode 100644 index 00000000..253654d4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/203e379d091d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/60983ed8221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/60983ed8221d0011116edf0151d9d887 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/60983ed8221d0011116edf0151d9d887 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/80b11b56201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/80b11b56201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/80b11b56201d00111c63a4b3c7bd9f5b @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/90630369041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/90630369041d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/24/90630369041d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/50e8eb76f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/50e8eb76f61c00111565e8bbe12141cd new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/50e8eb76f61c00111565e8bbe12141cd @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/d024de9c0d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/d024de9c0d1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/d024de9c0d1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/f135cf3f021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/f135cf3f021d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/25/f135cf3f021d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/26/000a49ffe91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/26/000a49ffe91c00111565e8bbe12141cd new file mode 100644 index 00000000..9bf68be5 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/26/000a49ffe91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/26/f0b431b6221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/26/f0b431b6221d0011116edf0151d9d887 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/26/f0b431b6221d0011116edf0151d9d887 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/27/f03550ffe91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/27/f03550ffe91c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/27/f03550ffe91c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/30753b75221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/30753b75221d0011116edf0151d9d887 new file mode 100644 index 00000000..1ec53392 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/30753b75221d0011116edf0151d9d887 @@ -0,0 +1,31 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ +Source \ +Source/ARMCM3_STM32 \ +Source/ARMCM3_STM32/GCC \ +source/ARMCM3_STM32/GCC \ +source/ARMCM3_STM32 \ +source \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/8071d946201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/8071d946201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/90ee3e31071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/90ee3e31071d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/90ee3e31071d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/e0710704e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/e0710704e91c00111565e8bbe12141cd new file mode 100644 index 00000000..ad2dac46 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/e0710704e91c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/e0d4a5f0041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/e0d4a5f0041d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/29/e0d4a5f0041d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2b/10160172f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2b/10160172f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2c/d09a6175221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2c/d09a6175221d0011116edf0151d9d887 new file mode 100644 index 00000000..9f360a2f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2c/d09a6175221d0011116edf0151d9d887 @@ -0,0 +1,86 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include Source/ARMCM3_STM32/GCC/subdir.mk +-include Source/ARMCM3_STM32/subdir.mk +-include Source/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/1039b583f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/1039b583f61c00111565e8bbe12141cd new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/1039b583f61c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/a0aa67fa071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/a0aa67fa071d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/a0aa67fa071d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/f022627cff1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/f022627cff1c00111358d2931fee7772 new file mode 100644 index 00000000..773d4cc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2d/f022627cff1c00111358d2931fee7772 @@ -0,0 +1,375 @@ +/**************************************************************************************** +| Description: demo program bootloader interface source file +| File Name: boot.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: BootActivate +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Bootloader activation function. +** +****************************************************************************************/ +static void BootActivate(void) +{ + void (*pEntryFromProgFnc)(void); + + /* set pointer to the address of function EntryFromProg in the bootloader. note that + * 1 is added to this address to enable a switch from Thumb2 to Thumb mode + */ + pEntryFromProgFnc = (void*)0x08000150 + 1; + /* call EntryFromProg to activate the bootloader. */ + pEntryFromProgFnc(); +} /*** end of BootActivate ***/ + + +#if (BOOT_COM_UART_ENABLE > 0) +/**************************************************************************************** +* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data); + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStruct; + USART_InitTypeDef USART_InitStruct; + + /* enable UART peripheral clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + /* enable GPIO peripheral clock for transmitter and receiver pins */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); + /* configure USART Tx as alternate function push-pull */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* Configure USART Rx as alternate function input floating */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* configure UART communcation parameters */ + USART_InitStruct.USART_BaudRate = BOOT_COM_UART_BAUDRATE; + USART_InitStruct.USART_WordLength = USART_WordLength_8b; + USART_InitStruct.USART_StopBits = USART_StopBits_1; + USART_InitStruct.USART_Parity = USART_Parity_No; + USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_Init(USART2, &USART_InitStruct); + /* enable UART */ + USART_Cmd(USART2, ENABLE); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1]; + static unsigned char xcpCtoRxLength; + static unsigned char xcpCtoRxInProgress = 0; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == 0) + { + /* store the message length when received */ + if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) + { + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = 1; + + /* reset packet data count */ + xcpCtoRxLength = 0; + } + } + else + { + /* store the next packet byte */ + if (UartReceiveByte(&xcpCtoReqPacket[xcpCtoRxLength+1]) == 1) + { + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* done with cto packet reception */ + xcpCtoRxInProgress = 0; + + /* check if this was an XCP CONNECT command */ + if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } + } +} /*** end of BootComCheckActivationRequest ***/ + + +/**************************************************************************************** +** NAME: UartReceiveByte +** PARAMETER: data pointer to byte where the data is to be stored. +** RETURN VALUE: 1 if a byte was received, 0 otherwise. +** DESCRIPTION: Receives a communication interface byte if one is present. +** +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data) +{ + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) + { + /* retrieve and store the newly received byte */ + *data = (unsigned char)USART_ReceiveData(USART2); + /* all done */ + return 1; + } + /* still here to no new byte received */ + return 0; +} /*** end of UartReceiveByte ***/ +#endif /* BOOT_COM_UART_ENABLE > 0 */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /* CAN time segment 1 */ + unsigned char tseg2; /* CAN time segment 2 */ +} tCanBusTiming; /* bus timing structure type */ + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/* According to the CAN protocol 1 bit-time can be made up of between 8..25 time quanta + * (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC always being 1. + * The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * 100%. This array contains + * possible and valid time quanta configurations with a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/**************************************************************************************** +** NAME: CanGetSpeedConfig +** PARAMETER: baud The desired baudrate in kbps. Valid values are 10..1000. +** prescaler Pointer to where the value for the prescaler will be stored. +** tseg1 Pointer to where the value for TSEG2 will be stored. +** tseg2 Pointer to where the value for TSEG2 will be stored. +** RETURN VALUE: 1 if the CAN bustiming register values were found, 0 otherwise. +** DESCRIPTION: Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/2) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/2)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the CAN communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* GPIO clock enable */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + /* Configure CAN pin: RX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Configure CAN pin: TX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Remap CAN1 pins to PortB */ + GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); + /* CAN1 Periph clock enable */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN1); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN1, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 0; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN1, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2e/e01de8fa0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2e/e01de8fa0a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2e/e01de8fa0a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/4070bdbf091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/4070bdbf091d00111358d2931fee7772 new file mode 100644 index 00000000..e1e25a3d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/4070bdbf091d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/7047733c071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/7047733c071d00111358d2931fee7772 new file mode 100644 index 00000000..4865a76f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/7047733c071d00111358d2931fee7772 @@ -0,0 +1,224 @@ +/**************************************************************************************** +| Description: Newlib system calls remapping source file +| File Name: syscalls.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +** NAME: _read_r +** PARAMETER: len number of character to read. +** RETURN VALUE: number of characters read +** DESCRIPTION: Reentrant function for reading data from a file. In this case the +** read is performed from the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len) +{ + char c; + int i; + unsigned char *p; + + p = (unsigned char*)ptr; + + /* receive all characters with echo */ + for (i = 0; i < len; i++) + { + c = UartRxChar(1); + + *p++ = c; + UartTxChar(c); + + /* was this a \n newline code? */ + if (c == 0x0D && i <= (len - 2)) + { + /* automatically add cariage return after a new line */ + *p = 0x0A; + UartTxChar(0x0A); + return i + 2; + } + } + return i; +} /*** end of _read_r ***/ + + +/**************************************************************************************** +** NAME: _write_r +** PARAMETER: len number of character to write +** RETURN VALUE: number of characters written. +** DESCRIPTION: Reentrant function for writing data from a file. In this case the +** write is performed to the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len) +{ + int i; + const unsigned char *p; + + p = (const unsigned char*) ptr; + + /* transmit all characters */ + for (i = 0; i < len; i++) + { + if (*p == '\n' ) + { + /* automatically add cariage return after a new line */ + UartTxChar('\r'); + } + UartTxChar(*p++); + } + + return len; +} /*** end of _write_r ***/ + + +/**************************************************************************************** +** NAME: _close_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for closing a file. Since UART is used, no further +** action is required here. +** +****************************************************************************************/ +int _close_r(struct _reent *r, int file) +{ + return 0; +} /*** end of _close_r ***/ + + +/**************************************************************************************** +** NAME: _lseek_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for obtaining the file pointer. Since UART is +** used, no further action is required here. +** +****************************************************************************************/ +_off_t _lseek_r(struct _reent *r, int file, _off_t ptr, int dir) +{ + /* always at the beginning of the file */ + return (_off_t)0; +} /*** end of _lseek_r ***/ + + +/**************************************************************************************** + * +** NAME: _fstat_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for setting the device mode. +** +****************************************************************************************/ +int _fstat_r(struct _reent *r, int file, struct stat *st) +{ + /* set as character device */ + st->st_mode = S_IFCHR; + return 0; +} /*** end of _fstat_r ***/ + + + +/**************************************************************************************** +** NAME: _isatty_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +int _isatty_r(struct _reent *r, int file) +{ + return 1; +} /*** end of _isatty_r ***/ + + +/**** Locally used variables. ****/ +extern char end[]; /* end is set in the linker command */ + /* file and is the end of statically */ + /* allocated data (thus start of heap). */ + + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +/* these externals are declared by the linker */ +extern unsigned long _heap; +extern unsigned long _eheap; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static char *heap_ptr = NULL; +static char heap[512]; + +/**************************************************************************************** +** NAME: _sbrk_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Increments the heap pointer. +** +****************************************************************************************/ +void * _sbrk_r(struct _reent *_s_r, ptrdiff_t nbytes) +{ + char *base; + + /* initialize the heap pointer if not yet done */ + if (heap_ptr == NULL) + { + /* set it to the current end of the heap */ + heap_ptr = &heap[0]; + } + + /* check if there is still room on the heap for this allocation */ + if ((unsigned long)(heap_ptr + nbytes) > (unsigned long)(heap + sizeof(heap))) + { + /* cannot allocate */ + return NULL; + } + + /* remember current pointer value for the return value */ + base = heap_ptr; /* Point to end of heap. */ + /* allocate the */ + heap_ptr += nbytes; /* Increase heap. */ + + return base; /* Return pointer to start of new heap area. */ +} /*** end of _sbrk_r ***/ + + +/*********************************** end of syscalls.c *********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/105d23b6221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/105d23b6221d0011116edf0151d9d887 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/105d23b6221d0011116edf0151d9d887 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/40be7d7c201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/40be7d7c201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/602da9b5091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/602da9b5091d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/602da9b5091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/e0afd8450b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/e0afd8450b1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3/e0afd8450b1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07d855ee91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07d855ee91c00111565e8bbe12141cd new file mode 100644 index 00000000..9bf68be5 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07d855ee91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/00e4bde90a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/00e4bde90a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/00e4bde90a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/60c14f99221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/60c14f99221d0011116edf0151d9d887 new file mode 100644 index 00000000..a4f03e25 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/60c14f99221d0011116edf0151d9d887 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/70774d99221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/70774d99221d0011116edf0151d9d887 new file mode 100644 index 00000000..e8c813a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/70774d99221d0011116edf0151d9d887 @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ +Source \ +Source/ARMCM3_STM32 \ +Source/ARMCM3_STM32/GCC \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/80911171e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/80911171e91c00111565e8bbe12141cd new file mode 100644 index 00000000..7dff3cbf --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/80911171e91c00111565e8bbe12141cd @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/80e2db46201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/80e2db46201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/e04656f1091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/e04656f1091d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/32/e04656f1091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/33/702b43a1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/33/702b43a1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/33/c0fb0b3efa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/33/c0fb0b3efa1c00111358d2931fee7772 new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/33/c0fb0b3efa1c00111358d2931fee7772 @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/802fcbd10d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/802fcbd10d1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/802fcbd10d1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/c04aaff0041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/c04aaff0041d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/c04aaff0041d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/36/00349d030d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/36/00349d030d1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/36/00349d030d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/36/f0eea1030d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/36/f0eea1030d1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/36/f0eea1030d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/0067f0eafe1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/0067f0eafe1c00111358d2931fee7772 new file mode 100644 index 00000000..746dc984 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/0067f0eafe1c00111358d2931fee7772 @@ -0,0 +1,79 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + return -1; +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/106277fa071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/106277fa071d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/106277fa071d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/80118e6a201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/80118e6a201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/a08a307c0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/a08a307c0a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/a08a307c0a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/b0ec28a1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/b0ec28a1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/f01a4ff1091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/f01a4ff1091d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/37/f01a4ff1091d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/7024bbd70a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/7024bbd70a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/7024bbd70a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/80b854dc041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/80b854dc041d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/80b854dc041d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/c014277c0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/c014277c0a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/38/c014277c0a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/39/a0b97f6a201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/39/a0b97f6a201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/30e63d75221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/30e63d75221d0011116edf0151d9d887 new file mode 100644 index 00000000..30c1c084 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/30e63d75221d0011116edf0151d9d887 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/404540a1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/404540a1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/71bd1871e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/71bd1871e91c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/71bd1871e91c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/c0e46375221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3a/c0e46375221d0011116edf0151d9d887 new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3b/40c2642f051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3b/40c2642f051d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3b/40c2642f051d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3b/e0ace5fa0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3b/e0ace5fa0a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3b/e0ace5fa0a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3d/10847a1a0e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3d/10847a1a0e1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3d/10847a1a0e1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/4055c9d70a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/4055c9d70a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/4055c9d70a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/c0337e56e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/c0337e56e71c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/d068e6890b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/d068e6890b1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/d068e6890b1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/f0bb832f051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/f0bb832f051d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3e/f0bb832f051d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/90512342221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/90512342221d0011116edf0151d9d887 new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/90512342221d0011116edf0151d9d887 @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a05507b5e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a05507b5e91c00111565e8bbe12141cd new file mode 100644 index 00000000..41676e17 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a05507b5e91c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf .srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a07302b5e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a07302b5e91c00111565e8bbe12141cd new file mode 100644 index 00000000..1f51c221 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a07302b5e91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/7090411e091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/7090411e091d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/7090411e091d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/a1c7875ee91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/a1c7875ee91c00111565e8bbe12141cd new file mode 100644 index 00000000..787fca30 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/a1c7875ee91c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf "demoprog_olimex_stm32p103.hex".srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/e0c391b5001d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/e0c391b5001d00111358d2931fee7772 new file mode 100644 index 00000000..cddc84f9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4/e0c391b5001d00111358d2931fee7772 @@ -0,0 +1,118 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + GPIO_InitTypeDef GPIO_InitStruct; + USART_InitTypeDef USART_InitStruct; + + /* enable UART peripheral clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + /* enable GPIO peripheral clock for transmitter and receiver pins */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); + /* configure USART Tx as alternate function push-pull */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* Configure USART Rx as alternate function input floating */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* configure UART communcation parameters */ + USART_InitStruct.USART_BaudRate = baudrate; + USART_InitStruct.USART_WordLength = USART_WordLength_8b; + USART_InitStruct.USART_StopBits = USART_StopBits_1; + USART_InitStruct.USART_Parity = USART_Parity_No; + USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_Init(USART2, &USART_InitStruct); + /* enable UART */ + USART_Cmd(USART2, ENABLE); +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + if (!blocking) + { + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) + { + return -1; + } + } + else + { + /* wait for reception of byte */ + while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) { ; } + } + /* retrieve and return the newly received byte */ + return USART_ReceiveData(USART2); +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/5065de3c071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/5065de3c071d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/5065de3c071d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/604868cdfe1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/604868cdfe1c00111358d2931fee7772 new file mode 100644 index 00000000..911e1932 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/40/604868cdfe1c00111358d2931fee7772 @@ -0,0 +1,79 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/41/00e0de360a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/41/00e0de360a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/41/00e0de360a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/41/b0deef890b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/41/b0deef890b1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/41/b0deef890b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/42/a0fb327c0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/42/a0fb327c0a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/42/a0fb327c0a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/60e0e5e20a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/60e0e5e20a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/60e0e5e20a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/70efd43c071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/70efd43c071d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/70efd43c071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/b02900b5e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/b02900b5e91c00111565e8bbe12141cd new file mode 100644 index 00000000..9bf68be5 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/b02900b5e91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/d0c43eedf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/d0c43eedf31c00111565e8bbe12141cd new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/43/d0c43eedf31c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/44/70cc926a201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/44/70cc926a201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/44/905dd53d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/44/905dd53d091d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/44/905dd53d091d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/00a4233c0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/00a4233c0b1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/00a4233c0b1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/10a79a440a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/10a79a440a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/10a79a440a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/70ca42b5091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/70ca42b5091d00111358d2931fee7772 new file mode 100644 index 00000000..892fe9ef --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/45/70ca42b5091d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/312c66b00a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/312c66b00a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/312c66b00a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/60e2f3af0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/60e2f3af0a1d00111358d2931fee7772 new file mode 100644 index 00000000..6176e239 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/60e2f3af0a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/708f45000b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/708f45000b1d00111358d2931fee7772 new file mode 100644 index 00000000..53bd0a85 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/46/708f45000b1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); /*format*/c->witdth++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/3045c864f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/3045c864f41c00111565e8bbe12141cd new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/3045c864f41c00111565e8bbe12141cd @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/a08473e20c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/a08473e20c1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/a08473e20c1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/a0f575e20c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/a0f575e20c1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/47/a0f575e20c1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/4087a8e90a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/4087a8e90a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/4087a8e90a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/70c6a4000b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/70c6a4000b1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/70c6a4000b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/f0d97e2f051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/f0d97e2f051d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/48/f0d97e2f051d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/30456599221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/30456599221d0011116edf0151d9d887 new file mode 100644 index 00000000..4c69eba0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/30456599221d0011116edf0151d9d887 @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./Source/ARMCM3_STM32/can.o \ +./Source/ARMCM3_STM32/cpu.o \ +./Source/ARMCM3_STM32/flash.o \ +./Source/ARMCM3_STM32/nvm.o \ +./Source/ARMCM3_STM32/timer.o \ +./Source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./Source/ARMCM3_STM32/can.d \ +./Source/ARMCM3_STM32/cpu.d \ +./Source/ARMCM3_STM32/flash.d \ +./Source/ARMCM3_STM32/nvm.d \ +./Source/ARMCM3_STM32/timer.d \ +./Source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +Source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/50b6621a0e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/50b6621a0e1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/50b6621a0e1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/706a285d041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/706a285d041d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/706a285d041d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/e08219a2221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/e08219a2221d0011116edf0151d9d887 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/49/e08219a2221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4a/e0093aedf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4a/e0093aedf31c00111565e8bbe12141cd new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4a/e0093aedf31c00111565e8bbe12141cd @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4b/b05e297c0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4b/b05e297c0a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4b/b05e297c0a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4b/b0bb3d3c0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4b/b0bb3d3c0b1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4b/b0bb3d3c0b1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/2058731a0e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/2058731a0e1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/2058731a0e1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/40a85b99221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/40a85b99221d0011116edf0151d9d887 new file mode 100644 index 00000000..db7f7385 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/40a85b99221d0011116edf0151d9d887 @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./Source/assert.o \ +./Source/backdoor.o \ +./Source/boot.o \ +./Source/com.o \ +./Source/cop.o \ +./Source/xcp.o + +C_DEPS += \ +./Source/assert.d \ +./Source/backdoor.d \ +./Source/boot.d \ +./Source/com.d \ +./Source/cop.d \ +./Source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +Source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/40ac611a0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/40ac611a0b1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/40ac611a0b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/b051e9450b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/b051e9450b1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4c/b051e9450b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4d/30c196c50c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4d/30c196c50c1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4d/30c196c50c1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/10da04e30a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/10da04e30a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/10da04e30a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/80a95e52201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/80a95e52201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/80a95e52201d00111c63a4b3c7bd9f5b @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/a00cee450b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/a00cee450b1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/a00cee450b1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/a037fc68041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/a037fc68041d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/a037fc68041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/f0a7ad0f001d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/f0a7ad0f001d00111358d2931fee7772 new file mode 100644 index 00000000..a45cf492 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/f0a7ad0f001d00111358d2931fee7772 @@ -0,0 +1,120 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + GPIO_InitTypeDef GPIO_InitStruct; + USART_InitTypeDef USART_InitStruct; + + /* enable UART peripheral clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + /* enable GPIO peripheral clock for transmitter and receiver pins */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); + /* configure USART Tx as alternate function push-pull */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* Configure USART Rx as alternate function input floating */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* configure UART communcation parameters */ + USART_InitStruct.USART_BaudRate = baudrate; + USART_InitStruct.USART_WordLength = USART_WordLength_8b; + USART_InitStruct.USART_StopBits = USART_StopBits_1; + USART_InitStruct.USART_Parity = USART_Parity_No; + USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_Init(USART2, &USART_InitStruct); + /* enable UART */ + USART_Cmd(USART2, ENABLE); +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + int ch; + + if (!blocking) + { + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) + { + return -1; + } + } + else + { + /* wait for reception of byte */ + while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) { ; } + } + /* retrieve and return the newly received byte */ + return USART_ReceiveData(USART2); +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/30d71a570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/30d71a570e1d00111358d2931fee7772 new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/30d71a570e1d00111358d2931fee7772 @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/4014571e091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/4014571e091d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4f/4014571e091d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5/3064fbe20a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5/3064fbe20a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5/3064fbe20a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5/a0d59f64f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5/a0d59f64f41c00111565e8bbe12141cd new file mode 100644 index 00000000..628cb43f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5/a0d59f64f41c00111565e8bbe12141cd @@ -0,0 +1,161 @@ +/**************************************************************************************** +| Description: bootloader interrupt vector table source file +| File Name: vectors.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "boot.h" /* bootloader generic header */ + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +extern blt_int32u _estack; /* stack end address (memory.x) */ + + +/**************************************************************************************** +** NAME: UnusedISR +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Catch-all for unused interrrupt service routines. +** +****************************************************************************************/ +void UnusedISR(void) +{ + /* unexpected interrupt occured, so trigger an assertion to halt the system */ + ASSERT_RT(BLT_FALSE); +} /*** end of UnusedISR ***/ + + +/**************************************************************************************** +* I N T E R R U P T V E C T O R T A B L E +****************************************************************************************/ +extern void reset_handler(void); /* implemented in cstart.c */ + +typedef union +{ + void (*func)(void); /* for ISR function pointers */ + blt_int32u ptr; /* for stack pointer entry */ +}tIsrFunc; /* type for vector table entries */ + +__attribute__ ((section(".isr_vector"))) +const tIsrFunc _vectab[] = +{ + { .ptr = (blt_int32u)&_estack }, /* the initial stack pointer */ + { reset_handler}, /* the reset handler */ + UnusedISR, /* NMI Handler */ + UnusedISR, /* Hard Fault Handler */ + UnusedISR, /* MPU Fault Handler */ + UnusedISR, /* Bus Fault Handler */ + UnusedISR, /* Usage Fault Handler */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* SVCall Handler */ + UnusedISR, /* Debug Monitor Handler */ + UnusedISR, /* Reserved */ + UnusedISR, /* PendSV Handler */ + UnusedISR, /* SysTick Handler */ + UnusedISR, /* Window Watchdog */ + UnusedISR, /* PVD through EXTI Line detect */ + UnusedISR, /* Tamper */ + UnusedISR, /* RTC */ + UnusedISR, /* Flash */ + UnusedISR, /* RCC */ + UnusedISR, /* EXTI Line 0 */ + UnusedISR, /* EXTI Line 1 */ + UnusedISR, /* EXTI Line 2 */ + UnusedISR, /* EXTI Line 3 */ + UnusedISR, /* EXTI Line 4 */ + UnusedISR, /* DMA1 Channel 1 */ + UnusedISR, /* DMA1 Channel 2 */ + UnusedISR, /* DMA1 Channel 3 */ + UnusedISR, /* DMA1 Channel 4 */ + UnusedISR, /* DMA1 Channel 5 */ + UnusedISR, /* DMA1 Channel 6 */ + UnusedISR, /* DMA1 Channel 7 */ + UnusedISR, /* ADC1 and ADC2 */ + UnusedISR, /* CAN1 TX */ + UnusedISR, /* CAN1 RX0 */ + UnusedISR, /* CAN1 RX1 */ + UnusedISR, /* CAN1 SCE */ + UnusedISR, /* EXTI Line 9..5 */ + UnusedISR, /* TIM1 Break */ + UnusedISR, /* TIM1 Update */ + UnusedISR, /* TIM1 Trigger and Commutation */ + UnusedISR, /* TIM1 Capture Compare */ + UnusedISR, /* TIM2 */ + UnusedISR, /* TIM3 */ + UnusedISR, /* TIM4 */ + UnusedISR, /* I2C1 Event */ + UnusedISR, /* I2C1 Error */ + UnusedISR, /* I2C2 Event */ + UnusedISR, /* I2C1 Error */ + UnusedISR, /* SPI1 */ + UnusedISR, /* SPI2 */ + UnusedISR, /* USART1 */ + UnusedISR, /* USART2 */ + UnusedISR, /* USART3 */ + UnusedISR, /* EXTI Line 15..10 */ + UnusedISR, /* RTC alarm through EXTI line */ + UnusedISR, /* USB OTG FS Wakeup */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* TIM5 */ + UnusedISR, /* SPI3 */ + UnusedISR, /* UART4 */ + UnusedISR, /* UART5 */ + UnusedISR, /* TIM6 */ + UnusedISR, /* TIM7 */ + UnusedISR, /* DMA2 Channel1 */ + UnusedISR, /* DMA2 Channel2 */ + UnusedISR, /* DMA2 Channel3 */ + UnusedISR, /* DMA2 Channel4 */ + UnusedISR, /* DMA2 Channel5 */ + UnusedISR, /* Ethernet */ + UnusedISR, /* Ethernet Wakeup */ + UnusedISR, /* CAN2 TX */ + UnusedISR, /* CAN2 RX0 */ + UnusedISR, /* CAN2 RX1 */ + UnusedISR, /* CAN2 SCE */ + UnusedISR /* USB OTG FS */ +}; + + +/************************************ end of hw.c **************************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/009509e30a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/009509e30a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/009509e30a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/2088d0360a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/2088d0360a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/2088d0360a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/30f3f8e20a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/30f3f8e20a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/30f3f8e20a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/40c836ace71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/40c836ace71c00111565e8bbe12141cd new file mode 100644 index 00000000..1f51c221 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/40c836ace71c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/60b5459c0d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/60b5459c0d1d00111358d2931fee7772 new file mode 100644 index 00000000..710ee939 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/60b5459c0d1d00111358d2931fee7772 @@ -0,0 +1,205 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void DisplayUptime(void); +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* Output uptime on terminal */ + DisplayUptime(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: DisplayUptime +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Outputs the program's runtime on the terminal every second. +** +****************************************************************************************/ +static void DisplayUptime(void) +{ + static unsigned long uptime_ms_last = 0; + unsigned long uptime_ms_now; + unsigned char hr, min, sec; + + uptime_ms_now = TimerGet(); + + /* output info on terminal just once a second */ + if ( (uptime_ms_now - uptime_ms_last) < 1000) + { + /* not yet time to toggle */ + return; + } + /* calculate uptime */ + sec = uptime_ms_now/1000; + min = sec/60; + hr = min/60; + + /* output time on terminal */ + printf("Program uptime: %02d:%02d:%02d\r", hr, min, sec); + + /* store for next comparison */ + uptime_ms_last = uptime_ms_now; +} /*** end of DisplayUptime ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/a0e11c89e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/a0e11c89e71c00111565e8bbe12141cd new file mode 100644 index 00000000..570411cc --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/a0e11c89e71c00111565e8bbe12141cd @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/e03cfdc0011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/e03cfdc0011d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/50/e03cfdc0011d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/51/e138a4030d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/51/e138a4030d1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/51/e138a4030d1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/52/2021141a0e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/52/2021141a0e1d00111358d2931fee7772 new file mode 100644 index 00000000..6af30d3f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/52/2021141a0e1d00111358d2931fee7772 @@ -0,0 +1,214 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void DisplayUptime(void); +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* Output uptime on terminal */ + DisplayUptime(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: DisplayUptime +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Outputs the program's runtime on the terminal every second. +** +****************************************************************************************/ +static void DisplayUptime(void) +{ + static unsigned long uptime_ms_last = 0; + unsigned long uptime_ms_now; + static unsigned char hr=0, min=0, sec=0; + + uptime_ms_now = TimerGet(); + + /* output info on terminal just once a second */ + if ( (uptime_ms_now - uptime_ms_last) < 1000) + { + /* not yet time to toggle */ + return; + } + /* calculate uptime */ + if (++sec >= 60) + { + sec = 0; + if (++min >= 60) + { + min = 0; + if (++hr >= 24) + { + hr = 0; + } + } + } + + /* output time on terminal */ + printf("Program uptime: %02d:%02d:%02d\r", hr, min, sec); + + /* store for next comparison */ + uptime_ms_last = uptime_ms_now; +} /*** end of DisplayUptime ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/52/d0bd80b5091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/52/d0bd80b5091d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/52/d0bd80b5091d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/507c5499221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/507c5499221d0011116edf0151d9d887 new file mode 100644 index 00000000..e4002edd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/507c5499221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/60a215c0091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/60a215c0091d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/60a215c0091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/c0c91504e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/53/c0c91504e91c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/a01313ace71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/a01313ace71c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/a01313ace71c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/a0c6f968041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/a0c6f968041d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/a0c6f968041d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/b01c4dedf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/b01c4dedf31c00111565e8bbe12141cd new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/b01c4dedf31c00111565e8bbe12141cd @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/b1eb5ada011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/b1eb5ada011d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/b1eb5ada011d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/c03056da011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/c03056da011d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/c03056da011d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0a6f6d70a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0a6f6d70a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0a6f6d70a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/56/502d5931071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/56/502d5931071d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/56/502d5931071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/57/00dc5fd8221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/57/00dc5fd8221d0011116edf0151d9d887 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/57/00dc5fd8221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/57/104a6c99221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/57/104a6c99221d0011116edf0151d9d887 new file mode 100644 index 00000000..0d80fc43 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/57/104a6c99221d0011116edf0151d9d887 @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./Source/ARMCM3_STM32/GCC/cstart.o \ +./Source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./Source/ARMCM3_STM32/GCC/cstart.d \ +./Source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +Source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/3012309d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/3012309d091d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/3012309d091d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/40a5a3e90a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/40a5a3e90a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/40a5a3e90a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/c010569d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/c010569d091d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/c010569d091d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/c03adc3b0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/c03adc3b0b1d00111358d2931fee7772 new file mode 100644 index 00000000..8a374a82 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/c03adc3b0b1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; /*isdigit (*format)*/1; format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/e06a725ee91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/e06a725ee91c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/59/e06a725ee91c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/0055c0e90a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/0055c0e90a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/0055c0e90a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/80f8b3d70a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/80f8b3d70a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/80f8b3d70a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/a0388a5ee91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/a0388a5ee91c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/a0388a5ee91c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/e0460f72f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/e0460f72f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/f0beaeca041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/f0beaeca041d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5a/f0beaeca041d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/0047dafe071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/0047dafe071d00111358d2931fee7772 new file mode 100644 index 00000000..ba0f6ae2 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/0047dafe071d00111358d2931fee7772 @@ -0,0 +1,216 @@ +/**************************************************************************************** +| Description: Newlib system calls remapping source file +| File Name: syscalls.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ +#define HEAP_SIZE (512) + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static char *heap_ptr = NULL; +static char heap[HEAP_SIZE]; + + +/**************************************************************************************** +** NAME: _read_r +** PARAMETER: len number of character to read. +** RETURN VALUE: number of characters read +** DESCRIPTION: Reentrant function for reading data from a file. In this case the +** read is performed from the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len) +{ + char c; + int i; + unsigned char *p; + + p = (unsigned char*)ptr; + + /* receive all characters with echo */ + for (i = 0; i < len; i++) + { + c = UartRxChar(1); + + *p++ = c; + UartTxChar(c); + + /* was this a \n newline code? */ + if (c == 0x0D && i <= (len - 2)) + { + /* automatically add cariage return after a new line */ + *p = 0x0A; + UartTxChar(0x0A); + return i + 2; + } + } + return i; +} /*** end of _read_r ***/ + + +/**************************************************************************************** +** NAME: _write_r +** PARAMETER: len number of character to write +** RETURN VALUE: number of characters written. +** DESCRIPTION: Reentrant function for writing data from a file. In this case the +** write is performed to the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len) +{ + int i; + const unsigned char *p; + + p = (const unsigned char*) ptr; + + /* transmit all characters */ + for (i = 0; i < len; i++) + { + if (*p == '\n' ) + { + /* automatically add cariage return after a new line */ + UartTxChar('\r'); + } + UartTxChar(*p++); + } + + return len; +} /*** end of _write_r ***/ + + +/**************************************************************************************** +** NAME: _close_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for closing a file. Since UART is used, no further +** action is required here. +** +****************************************************************************************/ +int _close_r(struct _reent *r, int file) +{ + return 0; +} /*** end of _close_r ***/ + + +/**************************************************************************************** +** NAME: _lseek_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for obtaining the file pointer. Since UART is +** used, no further action is required here. +** +****************************************************************************************/ +_off_t _lseek_r(struct _reent *r, int file, _off_t ptr, int dir) +{ + /* always at the beginning of the file */ + return (_off_t)0; +} /*** end of _lseek_r ***/ + + +/**************************************************************************************** + * +** NAME: _fstat_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for setting the device mode. +** +****************************************************************************************/ +int _fstat_r(struct _reent *r, int file, struct stat *st) +{ + /* set as character device */ + st->st_mode = S_IFCHR; + return 0; +} /*** end of _fstat_r ***/ + + + +/**************************************************************************************** +** NAME: _isatty_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +int _isatty_r(struct _reent *r, int file) +{ + return 1; +} /*** end of _isatty_r ***/ + + +/**************************************************************************************** +** NAME: _sbrk_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Increments the heap pointer. +** +****************************************************************************************/ +void * _sbrk_r(struct _reent *_s_r, ptrdiff_t nbytes) +{ + char *base; + + /* initialize the heap pointer if not yet done */ + if (heap_ptr == NULL) + { + /* set it to the current end of the heap */ + heap_ptr = &heap[0]; + } + + /* check if there is still room on the heap for this allocation */ + if ((unsigned long)(heap_ptr + nbytes) > (unsigned long)(heap + HEAP_SIZE)) + { + /* cannot allocate */ + return NULL; + } + + /* remember current pointer value for the return value */ + base = heap_ptr; /* Point to end of heap. */ + /* allocate the */ + heap_ptr += nbytes; /* Increase heap. */ + + return base; /* Return pointer to start of new heap area. */ +} /*** end of _sbrk_r ***/ + + +/*********************************** end of syscalls.c *********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/1064ef93ea1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/1064ef93ea1c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/1064ef93ea1c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/d0a939570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/d0a939570e1d00111358d2931fee7772 new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/d0a939570e1d00111358d2931fee7772 @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/f0c44dffe91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/f0c44dffe91c00111565e8bbe12141cd new file mode 100644 index 00000000..59087e2e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5b/f0c44dffe91c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf Prog.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/500d32ace71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/500d32ace71c00111565e8bbe12141cd new file mode 100644 index 00000000..7dff3cbf --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/500d32ace71c00111565e8bbe12141cd @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/8082906a201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/8082906a201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/d03d1ea2221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/d03d1ea2221d0011116edf0151d9d887 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/d03d1ea2221d0011116edf0151d9d887 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/f017acf8071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/f017acf8071d00111358d2931fee7772 new file mode 100644 index 00000000..82f50482 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5c/f017acf8071d00111358d2931fee7772 @@ -0,0 +1,39 @@ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08002000, LENGTH = 120K + SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K +} + +SECTIONS +{ + __STACKSIZE__ = 256; + __HEAPSIZE__ = 1024; + + .text : + { + KEEP(*(.isr_vector)) + *(.text*) + *(.rodata*) + _etext = .; + } > FLASH + + + .data : AT (ADDR(.text) + SIZEOF(.text)) + { + _data = .; + *(vtable) + *(.data*) + _edata = .; + } > SRAM + + .bss : + { + _bss = .; + *(.bss*) + *(COMMON) + _ebss = .; + _stack = .; + . = ALIGN(MAX(_stack + __STACKSIZE__ , .), 4); + _estack = .; + } > SRAM +} diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5d/30ad3da1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5d/30ad3da1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5d/910d2489e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5d/910d2489e71c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5d/910d2489e71c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5e/a04dc43c071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5e/a04dc43c071d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5e/a04dc43c071d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5e/a0fd07dae91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5e/a0fd07dae91c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5e/a0fd07dae91c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5f/d00d8df9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5f/d00d8df9221d0011116edf0151d9d887 new file mode 100644 index 00000000..e4002edd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/5f/d00d8df9221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/4003ee71f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/4003ee71f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/b0b8fdb4e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/b0b8fdb4e91c00111565e8bbe12141cd new file mode 100644 index 00000000..7dff3cbf --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/b0b8fdb4e91c00111565e8bbe12141cd @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/f07053f9061d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/f07053f9061d00111358d2931fee7772 new file mode 100644 index 00000000..2617aad1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6/f07053f9061d00111358d2931fee7772 @@ -0,0 +1,41 @@ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08002000, LENGTH = 120K + SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K +} + +SECTIONS +{ + __STACKSIZE__ = 256; + + .text : + { + KEEP(*(.isr_vector)) + *(.text*) + *(.rodata*) + _etext = .; + } > FLASH + + + .data : AT (ADDR(.text) + SIZEOF(.text)) + { + _data = .; + *(vtable) + *(.data*) + _edata = .; + } > SRAM + + .bss : + { + _bss = .; + *(.bss*) + *(COMMON) + _ebss = .; + _stack = .; + . = ALIGN(MAX(_stack + __STACKSIZE__ , .), 4); + _estack = .; + } > SRAM + + _end = . ; + PROVIDE (end = .); +} diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/90b2182d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/90b2182d091d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/90b2182d091d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/a0d58e450b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/a0d58e450b1d00111358d2931fee7772 new file mode 100644 index 00000000..684989be --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/a0d58e450b1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit ((int)*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/c0c27b56e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/c0c27b56e71c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/e07433dc041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/e07433dc041d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/60/e07433dc041d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/61/50747b7c201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/61/50747b7c201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/62/b0ebc3c50c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/62/b0ebc3c50c1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/62/b0ebc3c50c1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/62/e09a4c9d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/62/e09a4c9d091d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/62/e09a4c9d091d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/63/60d65b98201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/63/60d65b98201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/63/60d65b98201d00111c63a4b3c7bd9f5b @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/64/b010c53fea1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/64/b010c53fea1c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/65/714d0f97051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/65/714d0f97051d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/65/714d0f97051d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/10ea8afa071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/10ea8afa071d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/10ea8afa071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/60325299221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/60325299221d0011116edf0151d9d887 new file mode 100644 index 00000000..0a5275bc --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/60325299221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/7001a2b5091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/7001a2b5091d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/7001a2b5091d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/a0c32189e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/a0c32189e71c00111565e8bbe12141cd new file mode 100644 index 00000000..9bf6c59c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/a0c32189e71c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/d01a3c570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/d01a3c570e1d00111358d2931fee7772 new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/d01a3c570e1d00111358d2931fee7772 @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/d081ef360a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/d081ef360a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/d081ef360a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/e0b758f1091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/e0b758f1091d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/66/e0b758f1091d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/68/c071f778e01c00111cadaab22f5679ad b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/68/c071f778e01c00111cadaab22f5679ad new file mode 100644 index 00000000..ced41fea --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/68/c071f778e01c00111cadaab22f5679ad @@ -0,0 +1,161 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/90dba4f9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/90dba4f9221d0011116edf0151d9d887 new file mode 100644 index 00000000..9ee3671f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/90dba4f9221d0011116edf0151d9d887 @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include Source/ARMCM3_STM32/GCC/subdir.mk +-include Source/ARMCM3_STM32/subdir.mk +-include Source/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/c0b951d10d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/c0b951d10d1d00111358d2931fee7772 new file mode 100644 index 00000000..a43e9371 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/c0b951d10d1d00111358d2931fee7772 @@ -0,0 +1,214 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void DisplayUptime(void); +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* Output uptime on terminal */ + DisplayUptime(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: DisplayUptime +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Outputs the program's runtime on the terminal every second. +** +****************************************************************************************/ +static void DisplayUptime(void) +{ + static unsigned long uptime_ms_last = 0; + unsigned long uptime_ms_now; + static unsigned char hr=0, min=0, sec=0; + + uptime_ms_now = TimerGet(); + + /* output info on terminal just once a second */ + if ( (uptime_ms_now - uptime_ms_last) < 1000) + { + /* not yet time to toggle */ + return; + } + /* calculate uptime */ + if (++sec > 60) + { + sec = 0; + if (++min > 60) + { + min = 0; + if (++hr > 24) + { + hr = 0; + } + } + } + + /* output time on terminal */ + printf("Program uptime: %02d:%02d:%02d\r", hr, min, sec); + + /* store for next comparison */ + uptime_ms_last = uptime_ms_now; +} /*** end of DisplayUptime ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/e0f31ba2221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/e0f31ba2221d0011116edf0151d9d887 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/69/e0f31ba2221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6a/20dfcdfa0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6a/20dfcdfa0a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6a/20dfcdfa0a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/00c07b96051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/00c07b96051d00111358d2931fee7772 new file mode 100644 index 00000000..dde0edcb --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/00c07b96051d00111358d2931fee7772 @@ -0,0 +1,182 @@ +/**************************************************************************************** +| Description: Newlib system calls remapping source file +| File Name: syscalls.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +** NAME: _read_r +** PARAMETER: len number of character to read. +** RETURN VALUE: number of characters read +** DESCRIPTION: Reentrant function for reading data from a file. In this case the +** read is performed from the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len) +{ + char c; + int i; + unsigned char *p; + + p = (unsigned char*)ptr; + + /* receive all characters with echo */ + for (i = 0; i < len; i++) + { + c = UartRxChar(1); + + *p++ = c; + UartTxChar(c); + + /* was this a \n newline code? */ + if (c == 0x0D && i <= (len - 2)) + { + /* automatically add cariage return after a new line */ + *p = 0x0A; + UartTxChar(0x0A); + return i + 2; + } + } + return i; +} /*** end of _read_r ***/ + + +/**************************************************************************************** +** NAME: _write_r +** PARAMETER: len number of character to write +** RETURN VALUE: number of characters written. +** DESCRIPTION: Reentrant function for writing data from a file. In this case the +** write is performed to the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len) +{ + int i; + const unsigned char *p; + + p = (const unsigned char*) ptr; + + /* transmit all characters */ + for (i = 0; i < len; i++) + { + if (*p == '\n' ) + { + /* automatically add cariage return after a new line */ + UartTxChar('\r'); + } + UartTxChar(*p++); + } + + return len; +} /*** end of _write_r ***/ + + +/**************************************************************************************** +** NAME: _close_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for closing a file. Since UART is used, no further +** action is required here. +** +****************************************************************************************/ +int _close_r(struct _reent *r, int file) +{ + return 0; +} /*** end of _close_r ***/ + + +/**************************************************************************************** +** NAME: _lseek_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for obtaining the file pointer. Since UART is +** used, no further action is required here. +** +****************************************************************************************/ +_off_t _lseek_r(struct _reent *r, int file, _off_t ptr, int dir) +{ + /* always at the beginning of the file */ + return (_off_t)0; +} /*** end of _lseek_r ***/ + + +/**************************************************************************************** + * +** NAME: _fstat_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for setting the device mode. +** +****************************************************************************************/ +int _fstat_r(struct _reent *r, int file, struct stat *st) +{ + /* set as character device */ + st->st_mode = S_IFCHR; + return 0; +} /*** end of _fstat_r ***/ + + + +/**************************************************************************************** +** NAME: _isatty_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +int _isatty_r(struct _reent *r, int file) +{ + return 1; +} /*** end of _isatty_r ***/ + + +/**************************************************************************************** +** NAME: _sbrk_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +void * _sbrk_r(struct _reent *_s_r, ptrdiff_t nbytes) +{ + return NULL; +} /*** end of _sbrk_r ***/ + + +/*********************************** end of syscalls.c *********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/500cede20a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/500cede20a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6b/500cede20a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6c/007b4bffe91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6c/007b4bffe91c00111565e8bbe12141cd new file mode 100644 index 00000000..1f51c221 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6c/007b4bffe91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6c/7062e709001d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6c/7062e709001d00111358d2931fee7772 new file mode 100644 index 00000000..22f81522 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6c/7062e709001d00111358d2931fee7772 @@ -0,0 +1,104 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + GPIO_InitTypeDef GPIO_InitStruct; + USART_InitTypeDef USART_InitStruct; + + /* enable UART peripheral clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + /* enable GPIO peripheral clock for transmitter and receiver pins */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); + /* configure USART Tx as alternate function push-pull */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* Configure USART Rx as alternate function input floating */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* configure UART communcation parameters */ + USART_InitStruct.USART_BaudRate = baudrate; + USART_InitStruct.USART_WordLength = USART_WordLength_8b; + USART_InitStruct.USART_StopBits = USART_StopBits_1; + USART_InitStruct.USART_Parity = USART_Parity_No; + USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_Init(USART2, &USART_InitStruct); + /* enable UART */ + USART_Cmd(USART2, ENABLE); +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + return -1; +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/40005fb00a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/40005fb00a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/40005fb00a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/602e5edc041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/602e5edc041d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/602e5edc041d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/c011bc440a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/c011bc440a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/c011bc440a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/e014003efa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/e014003efa1c00111358d2931fee7772 new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6d/e014003efa1c00111358d2931fee7772 @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6e/408fc05e071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6e/408fc05e071d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6e/408fc05e071d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a0a45752201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a0a45752201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a0a45752201d00111c63a4b3c7bd9f5b @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/306ace9c091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/306ace9c091d00111358d2931fee7772 new file mode 100644 index 00000000..f60c763c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/306ace9c091d00111358d2931fee7772 @@ -0,0 +1,655 @@ +/**************************************************************************************** +| Project Name: Standard input/output routines that are optimized for integers. +| The following functions are impemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| +| Description: Standard I/O integer optimized library source file +| File Name: stdio.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) by HAN - HTS Autotechniek. All rights reserved. +| +| This software has been carefully tested, but is not guaranteed for any particular +| purpose. The author does not offer any warranties and does not guarantee the accuracy, +| adequacy, or completeness of the software and is not responsible for any errors or +| omissions or the results obtained from use of the software. +| +|****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/405e30c50c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/405e30c50c1d00111358d2931fee7772 new file mode 100644 index 00000000..19f343b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/405e30c50c1d00111358d2931fee7772 @@ -0,0 +1,173 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + int n; + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + printf("Enter a number.."); + scanf("%d", &n); + printf("You entered: %d", n); + + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/e048ab440a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/e048ab440a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6f/e048ab440a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/00be64d8221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/00be64d8221d0011116edf0151d9d887 new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/00be64d8221d0011116edf0151d9d887 @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/603113c0091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/603113c0091d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/603113c0091d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/c034fc70e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/c034fc70e91c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7/c034fc70e91c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/50774d1e091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/50774d1e091d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/50774d1e091d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/515d1ac0091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/515d1ac0091d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/515d1ac0091d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/b07cd683f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/b07cd683f61c00111565e8bbe12141cd new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/70/b07cd683f61c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/71/70aa5498201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/71/70aa5498201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/71/70aa5498201d00111c63a4b3c7bd9f5b @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/20d02ef0041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/20d02ef0041d00111358d2931fee7772 new file mode 100644 index 00000000..b38ed261 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/20d02ef0041d00111358d2931fee7772 @@ -0,0 +1,182 @@ +/**************************************************************************************** +| Description: Newlib system calls remapping source file +| File Name: syscalls.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +** NAME: _read_r +** PARAMETER: len number of character to read. +** RETURN VALUE: number of characters read +** DESCRIPTION: Reentrant function for reading data from a file. In this case the +** read is performed from the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len) +{ + char c; + int i; + unsigned char *p; + + p = (unsigned char*)ptr; + + /* receive all characters with echo */ + for (i = 0; i < len; i++) + { + c = UartRxChar(1); + + *p++ = c; + UartTxChar(c); + + /* was this a \n newline code? */ + if (c == 0x0D && i <= (len - 2)) + { + /* automatically add cariage return after a new line */ + *p = 0x0A; + UartTxChar(0x0A); + return i + 2; + } + } + return i; +} /*** end of _read_r ***/ + + +/**************************************************************************************** +** NAME: _write_r +** PARAMETER: len number of character to write +** RETURN VALUE: number of characters written. +** DESCRIPTION: Reentrant function for writing data from a file. In this case the +** write is performed to the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len) +{ + int i; + const unsigned char *p; + + p = (const unsigned char*) ptr; + + /* transmit all characters */ + for (i = 0; i < len; i++) + { + if (*p == '\n' ) + { + /* automatically add cariage return after a new line */ + UartTxChar('\r'); + } + UartTxChar(*p++); + } + + return len; +} /*** end of _write_r ***/ + + +/**************************************************************************************** +** NAME: _close_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for closing a file. Since UART is used, no further +** action is required here. +** +****************************************************************************************/ +int _close_r(struct _reent *r, int file) +{ + return 0; +} /*** end of _close_r ***/ + + +/**************************************************************************************** +** NAME: _lseek_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for obtaining the file pointer. Since UART is +** used, no further action is required here. +** +****************************************************************************************/ +_off_t _lseek_r(struct _reent *r, int file, _off_t ptr, int dir) +{ + /* always at the beginning of the file */ + return (_off_t)0; +} /*** end of _lseek_r ***/ + + +/**************************************************************************************** + * +** NAME: _fstat_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for setting the device mode. +** +****************************************************************************************/ +int _fstat_r(struct _reent *r, int file, struct stat *st) +{ + /* set as character device */ + st->st_mode = S_IFCHR; + return 0; +} /*** end of _fstat_r ***/ + + + +/**************************************************************************************** +** NAME: _isatty_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +int _isatty_r(struct _reent *r, int file) +{ + return 1; +} /*** end of _isatty_r ***/ + + +/**************************************************************************************** +** NAME: _sbrk_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +void * _sbrk_r(struct _reent *_s_r, ptrdiff_t nbytes) +{ + +} /*** end of _sbrk_r ***/ + + +/*********************************** end of syscalls.c *********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/b02c403c0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/b02c403c0b1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/b02c403c0b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/d088e964f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/d088e964f41c00111565e8bbe12141cd new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/73/d088e964f41c00111565e8bbe12141cd @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/74/302d9ce20a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/74/302d9ce20a1d00111358d2931fee7772 new file mode 100644 index 00000000..ca619dda --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/74/302d9ce20a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); (char *)format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/74/60655998201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/74/60655998201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/74/60655998201d00111c63a4b3c7bd9f5b @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/75/502fee63e81c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/75/502fee63e81c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/75/502fee63e81c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/75/b0f0f996051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/75/b0f0f996051d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/75/b0f0f996051d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/76/006c7cf9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/76/006c7cf9221d0011116edf0151d9d887 new file mode 100644 index 00000000..e8c813a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/76/006c7cf9221d0011116edf0151d9d887 @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ +Source \ +Source/ARMCM3_STM32 \ +Source/ARMCM3_STM32/GCC \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/76/60bca6b5091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/76/60bca6b5091d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/76/60bca6b5091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/60b9767c201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/60b9767c201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/e05ce264f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/e05ce264f41c00111565e8bbe12141cd new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/e05ce264f41c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/78/20aef5d9e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/78/20aef5d9e91c00111565e8bbe12141cd new file mode 100644 index 00000000..ad2dac46 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/78/20aef5d9e91c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/79/b0cf84b8011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/79/b0cf84b8011d00111358d2931fee7772 new file mode 100644 index 00000000..6d961016 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/79/b0cf84b8011d00111358d2931fee7772 @@ -0,0 +1,319 @@ +/**************************************************************************************** +| Description: demo program bootloader interface source file +| File Name: boot.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: BootActivate +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Bootloader activation function. +** +****************************************************************************************/ +static void BootActivate(void) +{ + void (*pEntryFromProgFnc)(void); + + /* set pointer to the address of function EntryFromProg in the bootloader. note that + * 1 is added to this address to enable a switch from Thumb2 to Thumb mode + */ + pEntryFromProgFnc = (void*)0x08000150 + 1; + /* call EntryFromProg to activate the bootloader. */ + pEntryFromProgFnc(); +} /*** end of BootActivate ***/ + + +#if (BOOT_COM_UART_ENABLE > 0) +/**************************************************************************************** +* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + UartInit(BOOT_COM_UART_BAUDRATE); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1]; + static unsigned char xcpCtoRxLength; + static unsigned char xcpCtoRxInProgress = 0; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == 0) + { + /* store the message length when received */ + xcpCtoReqPacket[0] = (unsigned char)UartRxChar(0); + if (xcpCtoReqPacket[0] != -1) + { + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = 1; + + /* reset packet data count */ + xcpCtoRxLength = 0; + } + } + else + { + /* store the next packet byte */ + xcpCtoReqPacket[xcpCtoRxLength+1] = (unsigned char)UartRxChar(0); + if (xcpCtoReqPacket[xcpCtoRxLength+1] != -1) + { + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* done with cto packet reception */ + xcpCtoRxInProgress = 0; + + /* check if this was an XCP CONNECT command */ + if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_UART_ENABLE > 0 */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /* CAN time segment 1 */ + unsigned char tseg2; /* CAN time segment 2 */ +} tCanBusTiming; /* bus timing structure type */ + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/* According to the CAN protocol 1 bit-time can be made up of between 8..25 time quanta + * (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC always being 1. + * The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * 100%. This array contains + * possible and valid time quanta configurations with a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/**************************************************************************************** +** NAME: CanGetSpeedConfig +** PARAMETER: baud The desired baudrate in kbps. Valid values are 10..1000. +** prescaler Pointer to where the value for the prescaler will be stored. +** tseg1 Pointer to where the value for TSEG2 will be stored. +** tseg2 Pointer to where the value for TSEG2 will be stored. +** RETURN VALUE: 1 if the CAN bustiming register values were found, 0 otherwise. +** DESCRIPTION: Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/2) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/2)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the CAN communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* GPIO clock enable */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + /* Configure CAN pin: RX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Configure CAN pin: TX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Remap CAN1 pins to PortB */ + GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); + /* CAN1 Periph clock enable */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN1); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN1, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 0; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN1, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/507646ff071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/507646ff071d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/507646ff071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/8050a65e071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/8050a65e071d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/8050a65e071d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/a03f1f04e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/a03f1f04e91c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/a03f1f04e91c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/e02ec330071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/e02ec330071d00111358d2931fee7772 new file mode 100644 index 00000000..ba4e1f44 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7a/e02ec330071d00111358d2931fee7772 @@ -0,0 +1,198 @@ +/**************************************************************************************** +| Description: Newlib system calls remapping source file +| File Name: syscalls.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +** NAME: _read_r +** PARAMETER: len number of character to read. +** RETURN VALUE: number of characters read +** DESCRIPTION: Reentrant function for reading data from a file. In this case the +** read is performed from the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len) +{ + char c; + int i; + unsigned char *p; + + p = (unsigned char*)ptr; + + /* receive all characters with echo */ + for (i = 0; i < len; i++) + { + c = UartRxChar(1); + + *p++ = c; + UartTxChar(c); + + /* was this a \n newline code? */ + if (c == 0x0D && i <= (len - 2)) + { + /* automatically add cariage return after a new line */ + *p = 0x0A; + UartTxChar(0x0A); + return i + 2; + } + } + return i; +} /*** end of _read_r ***/ + + +/**************************************************************************************** +** NAME: _write_r +** PARAMETER: len number of character to write +** RETURN VALUE: number of characters written. +** DESCRIPTION: Reentrant function for writing data from a file. In this case the +** write is performed to the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len) +{ + int i; + const unsigned char *p; + + p = (const unsigned char*) ptr; + + /* transmit all characters */ + for (i = 0; i < len; i++) + { + if (*p == '\n' ) + { + /* automatically add cariage return after a new line */ + UartTxChar('\r'); + } + UartTxChar(*p++); + } + + return len; +} /*** end of _write_r ***/ + + +/**************************************************************************************** +** NAME: _close_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for closing a file. Since UART is used, no further +** action is required here. +** +****************************************************************************************/ +int _close_r(struct _reent *r, int file) +{ + return 0; +} /*** end of _close_r ***/ + + +/**************************************************************************************** +** NAME: _lseek_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for obtaining the file pointer. Since UART is +** used, no further action is required here. +** +****************************************************************************************/ +_off_t _lseek_r(struct _reent *r, int file, _off_t ptr, int dir) +{ + /* always at the beginning of the file */ + return (_off_t)0; +} /*** end of _lseek_r ***/ + + +/**************************************************************************************** + * +** NAME: _fstat_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for setting the device mode. +** +****************************************************************************************/ +int _fstat_r(struct _reent *r, int file, struct stat *st) +{ + /* set as character device */ + st->st_mode = S_IFCHR; + return 0; +} /*** end of _fstat_r ***/ + + + +/**************************************************************************************** +** NAME: _isatty_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +int _isatty_r(struct _reent *r, int file) +{ + return 1; +} /*** end of _isatty_r ***/ + + +/**** Locally used variables. ****/ +extern char end[]; /* end is set in the linker command */ + /* file and is the end of statically */ + /* allocated data (thus start of heap). */ + +static char *heap_ptr = NULL; /* Points to current end of the heap. */ + + +/**************************************************************************************** +** NAME: _sbrk_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +void * _sbrk_r(struct _reent *_s_r, ptrdiff_t nbytes) +{ + char *base; /* errno should be set to ENOMEM on error */ + + if (!heap_ptr) { /* Initialize if first time through. */ + heap_ptr = end; + } + base = heap_ptr; /* Point to end of heap. */ + heap_ptr += nbytes; /* Increase heap. */ + + return base; /* Return pointer to start of new heap area. */ +} /*** end of _sbrk_r ***/ + + +/*********************************** end of syscalls.c *********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7b/200b99c50c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7b/200b99c50c1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7b/200b99c50c1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7b/c042c4ca041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7b/c042c4ca041d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7b/c042c4ca041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7c/0012cb9c0d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7c/0012cb9c0d1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7c/0012cb9c0d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7c/a0c25252201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7c/a0c25252201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7c/a0c25252201d00111c63a4b3c7bd9f5b @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7d/202604a2221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7d/202604a2221d0011116edf0151d9d887 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7d/202604a2221d0011116edf0151d9d887 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7d/40ca5c1a0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7d/40ca5c1a0b1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7d/40ca5c1a0b1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7e/50205e98201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7e/50205e98201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7e/50205e98201d00111c63a4b3c7bd9f5b @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7e/b0c2eb450b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7e/b0c2eb450b1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7e/b0c2eb450b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7f/50bc5631071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7f/50bc5631071d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/7f/50bc5631071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/90ecd23d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/90ecd23d091d00111358d2931fee7772 new file mode 100644 index 00000000..0e83335d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8/90ecd23d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/000ac83f021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/000ac83f021d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/000ac83f021d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/601bdc3c071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/601bdc3c071d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/601bdc3c071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/70bd1871e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/70bd1871e91c00111565e8bbe12141cd new file mode 100644 index 00000000..41676e17 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/70bd1871e91c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf .srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/900d2489e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/900d2489e71c00111565e8bbe12141cd new file mode 100644 index 00000000..1ab9db6d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/900d2489e71c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +Prog.hex \ + +SECONDARY_LIST += \ +Prog.lst \ + +SECONDARY_SIZE += \ +Prog.siz \ + + +# All Target +all: Prog.elf secondary-outputs + +# Tool invocations +Prog.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -Wl,-Map,Prog.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Prog.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +Prog.hex: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec Prog.elf "Prog.hex" + @echo 'Finished building: $@' + @echo ' ' + +Prog.lst: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S Prog.elf > "Prog.lst" + @echo 'Finished building: $@' + @echo ' ' + +Prog.siz: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley Prog.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) Prog.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/d05365e20c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/d05365e20c1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/d05365e20c1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/e038a4030d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/e038a4030d1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/80/e038a4030d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/81/c014c446201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/81/c014c446201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/30cdcb360a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/30cdcb360a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/30cdcb360a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/6020a3220a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/6020a3220a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/6020a3220a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/81c9233efa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/81c9233efa1c00111358d2931fee7772 new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/81c9233efa1c00111358d2931fee7772 @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/e04bc883f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/e04bc883f61c00111565e8bbe12141cd new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/82/e04bc883f61c00111565e8bbe12141cd @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/83/e0a03bff071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/83/e0a03bff071d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/83/e0a03bff071d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/206fc7890b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/206fc7890b1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/206fc7890b1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/3040fa76f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/3040fa76f61c00111565e8bbe12141cd new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/3040fa76f61c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/6021e97b0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/6021e97b0a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/6021e97b0a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/b0841a04e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/84/b0841a04e91c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/85/50916098201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/85/50916098201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/85/50916098201d00111c63a4b3c7bd9f5b @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/10a7613f021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/10a7613f021d00111358d2931fee7772 new file mode 100644 index 00000000..4e6eb195 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/10a7613f021d00111358d2931fee7772 @@ -0,0 +1,355 @@ +/**************************************************************************************** +| Description: demo program bootloader interface source file +| File Name: boot.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: BootActivate +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Bootloader activation function. +** +****************************************************************************************/ +static void BootActivate(void) +{ + void (*pEntryFromProgFnc)(void); + + /* set pointer to the address of function EntryFromProg in the bootloader. note that + * 1 is added to this address to enable a switch from Thumb2 to Thumb mode + */ + pEntryFromProgFnc = (void*)0x08000150 + 1; + /* call EntryFromProg to activate the bootloader. */ + pEntryFromProgFnc(); +} /*** end of BootActivate ***/ + + +#if (BOOT_COM_UART_ENABLE > 0) +/**************************************************************************************** +* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data); + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + UartInit(BOOT_COM_UART_BAUDRATE); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1]; + static unsigned char xcpCtoRxLength; + static unsigned char xcpCtoRxInProgress = 0; + int ch; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == 0) + { + /* store the message length when received */ + ch = UartRxChar(0); + if (ch != -1) + { + xcpCtoReqPacket[0] = (unsigned char)ch; + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = 1; + + /* reset packet data count */ + xcpCtoRxLength = 0; + } + } + else + { + /* store the next packet byte */ + ch = UartRxChar(0); + if (ch != -1) + { + xcpCtoReqPacket[xcpCtoRxLength+1] = (unsigned char)ch; + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* done with cto packet reception */ + xcpCtoRxInProgress = 0; + + /* check if this was an XCP CONNECT command */ + if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } + } +} /*** end of BootComCheckActivationRequest ***/ + + +/**************************************************************************************** +** NAME: UartReceiveByte +** PARAMETER: data pointer to byte where the data is to be stored. +** RETURN VALUE: 1 if a byte was received, 0 otherwise. +** DESCRIPTION: Receives a communication interface byte if one is present. +** +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data) +{ + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) + { + /* retrieve and store the newly received byte */ + *data = (unsigned char)USART_ReceiveData(USART2); + /* all done */ + return 1; + } + /* still here to no new byte received */ + return 0; +} /*** end of UartReceiveByte ***/ +#endif /* BOOT_COM_UART_ENABLE > 0 */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /* CAN time segment 1 */ + unsigned char tseg2; /* CAN time segment 2 */ +} tCanBusTiming; /* bus timing structure type */ + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/* According to the CAN protocol 1 bit-time can be made up of between 8..25 time quanta + * (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC always being 1. + * The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * 100%. This array contains + * possible and valid time quanta configurations with a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/**************************************************************************************** +** NAME: CanGetSpeedConfig +** PARAMETER: baud The desired baudrate in kbps. Valid values are 10..1000. +** prescaler Pointer to where the value for the prescaler will be stored. +** tseg1 Pointer to where the value for TSEG2 will be stored. +** tseg2 Pointer to where the value for TSEG2 will be stored. +** RETURN VALUE: 1 if the CAN bustiming register values were found, 0 otherwise. +** DESCRIPTION: Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/2) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/2)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the CAN communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* GPIO clock enable */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + /* Configure CAN pin: RX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Configure CAN pin: TX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Remap CAN1 pins to PortB */ + GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); + /* CAN1 Periph clock enable */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN1); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN1, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 0; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN1, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/60fafc9ff41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/60fafc9ff41c00111565e8bbe12141cd new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/60fafc9ff41c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/9041162d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/9041162d091d00111358d2931fee7772 new file mode 100644 index 00000000..0e83335d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/86/9041162d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/87/d0efaf02f71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/87/d0efaf02f71c00111565e8bbe12141cd new file mode 100644 index 00000000..53b84e16 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/87/d0efaf02f71c00111565e8bbe12141cd @@ -0,0 +1,166 @@ +/**************************************************************************************** +| Description: bootloader interrupt vector table source file +| File Name: vectors.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* External functions +****************************************************************************************/ +extern void reset_handler(void); /* implemented in cstart.c */ + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +extern unsigned long _estack; /* stack end address (memory.x) */ + + +/**************************************************************************************** +** NAME: UnusedISR +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Catch-all for unused interrrupt service routines. +** +****************************************************************************************/ +void UnusedISR(void) +{ + /* unexpected interrupt occured, so halt the system */ + while (1) { ; } +} /*** end of UnusedISR ***/ + + +/**************************************************************************************** +* I N T E R R U P T V E C T O R T A B L E +****************************************************************************************/ +typedef union +{ + void (*func)(void); /* for ISR function pointers */ + unsigned long ptr; /* for stack pointer entry */ +}tIsrFunc; /* type for vector table entries */ + +__attribute__ ((section(".isr_vector"))) +const tIsrFunc _vectab[] = +{ + { .ptr = (unsigned long)&_estack }, /* the initial stack pointer */ + { reset_handler }, /* the reset handler */ + { UnusedISR }, /* NMI Handler */ + { UnusedISR }, /* Hard Fault Handler */ + { UnusedISR }, /* MPU Fault Handler */ + { UnusedISR }, /* Bus Fault Handler */ + { UnusedISR }, /* Usage Fault Handler */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* SVCall Handler */ + { UnusedISR }, /* Debug Monitor Handler */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* PendSV Handler */ + TimerISRHandler, /* SysTick Handler */ + { UnusedISR }, /* Window Watchdog */ + { UnusedISR }, /* PVD through EXTI Line detect */ + { UnusedISR }, /* Tamper */ + { UnusedISR }, /* RTC */ + { UnusedISR }, /* Flash */ + { UnusedISR }, /* RCC */ + { UnusedISR }, /* EXTI Line 0 */ + { UnusedISR }, /* EXTI Line 1 */ + { UnusedISR }, /* EXTI Line 2 */ + { UnusedISR }, /* EXTI Line 3 */ + { UnusedISR }, /* EXTI Line 4 */ + { UnusedISR }, /* DMA1 Channel 1 */ + { UnusedISR }, /* DMA1 Channel 2 */ + { UnusedISR }, /* DMA1 Channel 3 */ + { UnusedISR }, /* DMA1 Channel 4 */ + { UnusedISR }, /* DMA1 Channel 5 */ + { UnusedISR }, /* DMA1 Channel 6 */ + { UnusedISR }, /* DMA1 Channel 7 */ + { UnusedISR }, /* ADC1 and ADC2 */ + { UnusedISR }, /* CAN1 TX */ + { UnusedISR }, /* CAN1 RX0 */ + { UnusedISR }, /* CAN1 RX1 */ + { UnusedISR }, /* CAN1 SCE */ + { UnusedISR }, /* EXTI Line 9..5 */ + { UnusedISR }, /* TIM1 Break */ + { UnusedISR }, /* TIM1 Update */ + { UnusedISR }, /* TIM1 Trigger and Commutation */ + { UnusedISR }, /* TIM1 Capture Compare */ + { UnusedISR }, /* TIM2 */ + { UnusedISR }, /* TIM3 */ + { UnusedISR }, /* TIM4 */ + { UnusedISR }, /* I2C1 Event */ + { UnusedISR }, /* I2C1 Error */ + { UnusedISR }, /* I2C2 Event */ + { UnusedISR }, /* I2C1 Error */ + { UnusedISR }, /* SPI1 */ + { UnusedISR }, /* SPI2 */ + { UnusedISR }, /* USART1 */ + { UnusedISR }, /* USART2 */ + { UnusedISR }, /* USART3 */ + { UnusedISR }, /* EXTI Line 15..10 */ + { UnusedISR }, /* RTC alarm through EXTI line */ + { UnusedISR }, /* USB OTG FS Wakeup */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* TIM5 */ + { UnusedISR }, /* SPI3 */ + { UnusedISR }, /* UART4 */ + { UnusedISR }, /* UART5 */ + { UnusedISR }, /* TIM6 */ + { UnusedISR }, /* TIM7 */ + { UnusedISR }, /* DMA2 Channel1 */ + { UnusedISR }, /* DMA2 Channel2 */ + { UnusedISR }, /* DMA2 Channel3 */ + { UnusedISR }, /* DMA2 Channel4 */ + { UnusedISR }, /* DMA2 Channel5 */ + { UnusedISR }, /* Ethernet */ + { UnusedISR }, /* Ethernet Wakeup */ + { UnusedISR }, /* CAN2 TX */ + { UnusedISR }, /* CAN2 RX0 */ + { UnusedISR }, /* CAN2 RX1 */ + { UnusedISR }, /* CAN2 SCE */ + { UnusedISR2 }, /* USB OTG FS */ + { (void*)0x55AA11EE }, /* Reserved for OpenBLT checksum */ +}; + + +/************************************ end of hw.c **************************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/88/6074e963e81c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/88/6074e963e81c00111565e8bbe12141cd new file mode 100644 index 00000000..1f51c221 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/88/6074e963e81c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/5063b95e071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/5063b95e071d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/5063b95e071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/b0fdc8ca041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/b0fdc8ca041d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/b0fdc8ca041d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/d0f2f1360a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/d0f2f1360a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/89/d0f2f1360a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/400c395d041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/400c395d041d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/400c395d041d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/907e92220a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/907e92220a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/907e92220a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/c0a158da011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/c0a158da011d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8a/c0a158da011d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/104b48ff071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/104b48ff071d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/104b48ff071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/10cd4975221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/10cd4975221d0011116edf0151d9d887 new file mode 100644 index 00000000..a1f87276 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/10cd4975221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/30218a030d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/30218a030d1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/30218a030d1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/307e12a0f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/307e12a0f41c00111565e8bbe12141cd new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/307e12a0f41c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/8005e584011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/8005e584011d00111358d2931fee7772 new file mode 100644 index 00000000..31cbec52 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8b/8005e584011d00111358d2931fee7772 @@ -0,0 +1,319 @@ +/**************************************************************************************** +| Description: demo program bootloader interface source file +| File Name: boot.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: BootActivate +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Bootloader activation function. +** +****************************************************************************************/ +static void BootActivate(void) +{ + void (*pEntryFromProgFnc)(void); + + /* set pointer to the address of function EntryFromProg in the bootloader. note that + * 1 is added to this address to enable a switch from Thumb2 to Thumb mode + */ + pEntryFromProgFnc = (void*)0x08000150 + 1; + /* call EntryFromProg to activate the bootloader. */ + pEntryFromProgFnc(); +} /*** end of BootActivate ***/ + + +#if (BOOT_COM_UART_ENABLE > 0) +/**************************************************************************************** +* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + UartInit(BOOT_COM_UART_BAUDRATE); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1]; + static unsigned char xcpCtoRxLength; + static unsigned char xcpCtoRxInProgress = 0; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == 0) + { + /* store the message length when received */ + xcpCtoReqPacket[0] = UartRxChar(0); + if (xcpCtoReqPacket[0] != -1) + { + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = 1; + + /* reset packet data count */ + xcpCtoRxLength = 0; + } + } + else + { + /* store the next packet byte */ + xcpCtoReqPacket[xcpCtoRxLength+1] = UartRxChar(0); + if (xcpCtoReqPacket[xcpCtoRxLength+1] != -1) + { + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* done with cto packet reception */ + xcpCtoRxInProgress = 0; + + /* check if this was an XCP CONNECT command */ + if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_UART_ENABLE > 0 */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /* CAN time segment 1 */ + unsigned char tseg2; /* CAN time segment 2 */ +} tCanBusTiming; /* bus timing structure type */ + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/* According to the CAN protocol 1 bit-time can be made up of between 8..25 time quanta + * (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC always being 1. + * The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * 100%. This array contains + * possible and valid time quanta configurations with a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/**************************************************************************************** +** NAME: CanGetSpeedConfig +** PARAMETER: baud The desired baudrate in kbps. Valid values are 10..1000. +** prescaler Pointer to where the value for the prescaler will be stored. +** tseg1 Pointer to where the value for TSEG2 will be stored. +** tseg2 Pointer to where the value for TSEG2 will be stored. +** RETURN VALUE: 1 if the CAN bustiming register values were found, 0 otherwise. +** DESCRIPTION: Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/2) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/2)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the CAN communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* GPIO clock enable */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + /* Configure CAN pin: RX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Configure CAN pin: TX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Remap CAN1 pins to PortB */ + GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); + /* CAN1 Periph clock enable */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN1); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN1, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 0; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN1, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/10214456201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/10214456201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/10214456201d00111c63a4b3c7bd9f5b @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a031ce3d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a031ce3d091d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a031ce3d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/f0f13f7c201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/f0f13f7c201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/00ad5ee90a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/00ad5ee90a1d00111358d2931fee7772 new file mode 100644 index 00000000..57e47072 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/00ad5ee90a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit ((char)*format); (char *)format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/30b3c6fa0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/30b3c6fa0a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/30b3c6fa0a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a03490220a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a03490220a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a03490220a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a035cf63e81c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a035cf63e81c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a035cf63e81c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/40aa3bace71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/40aa3bace71c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/40aa3bace71c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/50f2b65e071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/50f2b65e071d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/50f2b65e071d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/a091a2f9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/a091a2f9221d0011116edf0151d9d887 new file mode 100644 index 00000000..0d80fc43 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/a091a2f9221d0011116edf0151d9d887 @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./Source/ARMCM3_STM32/GCC/cstart.o \ +./Source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./Source/ARMCM3_STM32/GCC/cstart.d \ +./Source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +Source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/d073fe2c091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/d073fe2c091d00111358d2931fee7772 new file mode 100644 index 00000000..253654d4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8f/d073fe2c091d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9/006b4656201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9/006b4656201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9/006b4656201d00111c63a4b3c7bd9f5b @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9/a0664fedf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9/a0664fedf31c00111565e8bbe12141cd new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9/a0664fedf31c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/11214456201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/11214456201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/11214456201d00111c63a4b3c7bd9f5b @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/60643642221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/60643642221d0011116edf0151d9d887 new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/60643642221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/60725431071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/60725431071d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/60725431071d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/70dc0c97051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/70dc0c97051d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/70dc0c97051d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/c0a1c1c50c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/c0a1c1c50c1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/c0a1c1c50c1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/f03dd29c0d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/f03dd29c0d1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/90/f03dd29c0d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/92/e005862f051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/92/e005862f051d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/92/e005862f051d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/93/31eb7620021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/93/31eb7620021d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/93/31eb7620021d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/94/e0ee34570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/94/e0ee34570e1d00111358d2931fee7772 new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/94/e0ee34570e1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/207f5a56e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/207f5a56e71c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/60e7e246201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/60e7e246201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/d0204252201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/d0204252201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/95/d0204252201d00111c63a4b3c7bd9f5b @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/408480030d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/408480030d1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/408480030d1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/7072e276f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/7072e276f61c00111565e8bbe12141cd new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/7072e276f61c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/a0cbc93fea1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/96/a0cbc93fea1c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/41307220021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/41307220021d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/41307220021d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/80dc81e20c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/80dc81e20c1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/80dc81e20c1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/e0464aff071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/e0464aff071d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/97/e0464aff071d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/98/d05e8c68041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/98/d05e8c68041d00111358d2931fee7772 new file mode 100644 index 00000000..5f77b512 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/98/d05e8c68041d00111358d2931fee7772 @@ -0,0 +1,168 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/98/f0f4d3450b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/98/f0f4d3450b1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/98/f0f4d3450b1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0d4fdbf091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0d4fdbf091d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0d4fdbf091d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/60eca49c0d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/60eca49c0d1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/60eca49c0d1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d077ba46201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d077ba46201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d095eb68041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d095eb68041d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d095eb68041d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9c/00792b570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9c/00792b570e1d00111358d2931fee7772 new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9c/00792b570e1d00111358d2931fee7772 @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/001f74890b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/001f74890b1d00111358d2931fee7772 new file mode 100644 index 00000000..046232fe --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/001f74890b1d00111358d2931fee7772 @@ -0,0 +1,169 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + printf("woohoo!\n"); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/2071cf64f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/2071cf64f41c00111565e8bbe12141cd new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/2071cf64f41c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/c09a62ca041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/c09a62ca041d00111358d2931fee7772 new file mode 100644 index 00000000..e63d6ad8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/c09a62ca041d00111358d2931fee7772 @@ -0,0 +1,212 @@ +/**************************************************************************************** +| Description: Newlib system calls remapping source file +| File Name: syscalls.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +** NAME: _read_r +** PARAMETER: len number of character to read. +** RETURN VALUE: number of characters read +** DESCRIPTION: Reentrant function for reading data from a file. In this case the +** read is performed from the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len) +{ + char c; + int i; + unsigned char *p; + + p = (unsigned char*)ptr; + + /* receive all characters with echo */ + for (i = 0; i < len; i++) + { + c = UartRxChar(1); + + *p++ = c; + UartTxChar(c); + + /* was this a \n newline code? */ + if (c == 0x0D && i <= (len - 2)) + { + /* automatically add cariage return after a new line */ + *p = 0x0A; + UartTxChar(0x0A); + return i + 2; + } + } + return i; +} /*** end of _read_r ***/ + + +/**************************************************************************************** +** NAME: _write_r +** PARAMETER: len number of character to write +** RETURN VALUE: number of characters written. +** DESCRIPTION: Reentrant function for writing data from a file. In this case the +** write is performed to the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len) +{ + int i; + const unsigned char *p; + + p = (const unsigned char*) ptr; + + /* transmit all characters */ + for (i = 0; i < len; i++) + { + if (*p == '\n' ) + { + /* automatically add cariage return after a new line */ + UartTxChar('\r'); + } + UartTxChar(*p++); + } + + return len; +} /*** end of _write_r ***/ + + +/**************************************************************************************** +** NAME: _close_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for closing a file. Since UART is used, no further +** action is required here. +** +****************************************************************************************/ +int _close_r(struct _reent *r, int file) +{ + return 0; +} /*** end of _close_r ***/ + + +/**************************************************************************************** +** NAME: _lseek_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for obtaining the file pointer. Since UART is +** used, no further action is required here. +** +****************************************************************************************/ +_off_t _lseek_r(struct _reent *r, int file, _off_t ptr, int dir) +{ + /* always at the beginning of the file */ + return (_off_t)0; +} /*** end of _lseek_r ***/ + + +/**************************************************************************************** + * +** NAME: _fstat_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for setting the device mode. +** +****************************************************************************************/ +int _fstat_r(struct _reent *r, int file, struct stat *st) +{ + /* set as character device */ + st->st_mode = S_IFCHR; + return 0; +} /*** end of _fstat_r ***/ + + + +/**************************************************************************************** +** NAME: isatty +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +int isatty(int file) +{ + return 1; +} /*** end of isatty ***/ + + +#if 0 +static void _exit (int n) { +label: goto label; /* endless loop */ +} +#endif + +/* "malloc clue function" */ + + /**** Locally used variables. ****/ +extern char end[]; /* end is set in the linker command */ + /* file and is the end of statically */ + /* allocated data (thus start of heap). */ + +static char *heap_ptr; /* Points to current end of the heap. */ + +/************************** _sbrk_r *************************************/ +/* Support function. Adjusts end of heap to provide more memory to */ +/* memory allocator. Simple and dumb with no sanity checks. */ +/* struct _reent *r -- re-entrancy structure, used by newlib to */ +/* support multiple threads of operation. */ +/* ptrdiff_t nbytes -- number of bytes to add. */ +/* Returns pointer to start of new heap area. */ +/* Note: This implementation is not thread safe (despite taking a */ +/* _reent structure as a parameter). */ +/* Since _s_r is not used in the current implementation, the following */ +/* messages must be suppressed. */ + +void * _sbrk_r( + struct _reent *_s_r, + ptrdiff_t nbytes) +{ + char *base; /* errno should be set to ENOMEM on error */ + + if (!heap_ptr) { /* Initialize if first time through. */ + heap_ptr = end; + } + base = heap_ptr; /* Point to end of heap. */ + heap_ptr += nbytes; /* Increase heap. */ + + return base; /* Return pointer to start of new heap area. */ +} + + +/*********************************** end of syscalls.c *********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/d040073efa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/d040073efa1c00111358d2931fee7772 new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9d/d040073efa1c00111358d2931fee7772 @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/80d58e2d201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/80d58e2d201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/d0d8ecfa0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/d0d8ecfa0a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9e/d0d8ecfa0a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/905f5c52201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/905f5c52201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/905f5c52201d00111c63a4b3c7bd9f5b @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/9086ce3fea1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/9086ce3fea1c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f01d43da011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f01d43da011d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f01d43da011d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/20e76ab00a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/20e76ab00a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/20e76ab00a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/6010a7000b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/6010a7000b1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/6010a7000b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/90a2493c0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/90a2493c0b1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/90a2493c0b1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/d0011472f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/d0011472f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/e0af682d201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/e0af682d201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/802957dc041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/802957dc041d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/802957dc041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/c0b2e8890b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/c0b2e8890b1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a0/c0b2e8890b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a1/1013781a0e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a1/1013781a0e1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a1/1013781a0e1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a1/20e301dae91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a1/20e301dae91c00111565e8bbe12141cd new file mode 100644 index 00000000..9bf68be5 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a1/20e301dae91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/6003e763e81c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/6003e763e81c00111565e8bbe12141cd new file mode 100644 index 00000000..9bf68be5 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/6003e763e81c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/6087976a201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/6087976a201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/80731671e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/80731671e91c00111565e8bbe12141cd new file mode 100644 index 00000000..1f51c221 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/80731671e91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0b4786a201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0b4786a201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a3/a0b391000b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a3/a0b391000b1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a3/a0b391000b1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a4/507e34ace71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a4/507e34ace71c00111565e8bbe12141cd new file mode 100644 index 00000000..9bf68be5 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a4/507e34ace71c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/407f3356201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/407f3356201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/407f3356201d00111c63a4b3c7bd9f5b @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/6048747c201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/6048747c201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/a0ee822d201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/a0ee822d201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/c068a62c091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/c068a62c091d00111358d2931fee7772 new file mode 100644 index 00000000..0ef1b08d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/c068a62c091d00111358d2931fee7772 @@ -0,0 +1,655 @@ +/**************************************************************************************** +| Project Name: Standard input/output routines that are optimized for integers. +| The following functions are impemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| +| Description: Standard I/O integer optimized library source file +| File Name: stdio.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) by HAN - HTS Autotechniek. All rights reserved. +| +| This software has been carefully tested, but is not guaranteed for any particular +| purpose. The author does not offer any warranties and does not guarantee the accuracy, +| adequacy, or completeness of the software and is not responsible for any errors or +| omissions or the results obtained from use of the software. +| +|****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/e0e038b6221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/e0e038b6221d0011116edf0151d9d887 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a5/e0e038b6221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a6/f01a0872f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a6/f01a0872f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a9/c03994f9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a9/c03994f9221d0011116edf0151d9d887 new file mode 100644 index 00000000..db7f7385 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a9/c03994f9221d0011116edf0151d9d887 @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./Source/assert.o \ +./Source/backdoor.o \ +./Source/boot.o \ +./Source/com.o \ +./Source/cop.o \ +./Source/xcp.o + +C_DEPS += \ +./Source/assert.d \ +./Source/backdoor.d \ +./Source/boot.d \ +./Source/com.d \ +./Source/cop.d \ +./Source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +Source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a9/f081f8c0011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a9/f081f8c0011d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a9/f081f8c0011d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/50c31897051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/50c31897051d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/50c31897051d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/601953b00a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/601953b00a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/601953b00a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/b00c835ee91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/b00c835ee91c00111565e8bbe12141cd new file mode 100644 index 00000000..7dff3cbf --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/b00c835ee91c00111565e8bbe12141cd @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/e0f2b33d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/e0f2b33d091d00111358d2931fee7772 new file mode 100644 index 00000000..253654d4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/e0f2b33d091d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/f01fc183f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/f01fc183f61c00111565e8bbe12141cd new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/aa/f01fc183f61c00111565e8bbe12141cd @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/a0dc39a1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/a0dc39a1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/d0b07a220a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/d0b07a220a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/d0b07a220a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/e0faff5c041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/e0faff5c041d00111358d2931fee7772 new file mode 100644 index 00000000..253654d4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ab/e0faff5c041d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/00d10572f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/00d10572f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/50ec17c0091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/50ec17c0091d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/50ec17c0091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/b0ce673d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/b0ce673d091d00111358d2931fee7772 new file mode 100644 index 00000000..abb54905 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/b0ce673d091d00111358d2931fee7772 @@ -0,0 +1,655 @@ +/**************************************************************************************** +| Project Name: Standard input/output routines that are optimized for integers. +| The following functions are impemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| +| Description: Standard I/O integer optimized library source file +| File Name: stdio.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) by HAN - HTS Autotechniek. All rights reserved. +| +| This software has been carefully tested, but is not guaranteed for any particular +| purpose. The author does not offer any warranties and does not guarantee the accuracy, +| adequacy, or completeness of the software and is not responsible for any errors or +| omissions or the results obtained from use of the software. +| +|****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "header.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/c06b7f220a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/c06b7f220a1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ac/c06b7f220a1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ad/004d62d8221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ad/004d62d8221d0011116edf0151d9d887 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ad/004d62d8221d0011116edf0151d9d887 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ad/30e1a683f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ad/30e1a683f61c00111565e8bbe12141cd new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ad/30e1a683f61c00111565e8bbe12141cd @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ae/10925dd8221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ae/10925dd8221d0011116edf0151d9d887 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ae/10925dd8221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/10ddb745ed1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/10ddb745ed1c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/10ddb745ed1c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/601f86c50c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/601f86c50c1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/601f86c50c1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/80df1bffe91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/80df1bffe91c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b/80df1bffe91c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b0/80c9233efa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b0/80c9233efa1c00111358d2931fee7772 new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b0/80c9233efa1c00111358d2931fee7772 @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b0/80d53c1e091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b0/80d53c1e091d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b0/80d53c1e091d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/3082eed9e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/3082eed9e91c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/3082eed9e91c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/a0521f89e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/a0521f89e71c00111565e8bbe12141cd new file mode 100644 index 00000000..9974cc80 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/a0521f89e71c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/e016edb4e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/e016edb4e91c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/e016edb4e91c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/f08b51f1091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/f08b51f1091d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b1/f08b51f1091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/80d904c0091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/80d904c0091d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/80d904c0091d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/e0fe33b6221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/e0fe33b6221d0011116edf0151d9d887 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/e0fe33b6221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/f0922fff071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/f0922fff071d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b2/f0922fff071d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c0793adc041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c0793adc041d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c0793adc041d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c0bd4b52201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c0bd4b52201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c0bd4b52201d00111c63a4b3c7bd9f5b @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/f0a1dd64f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/f0a1dd64f41c00111565e8bbe12141cd new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b3/f0a1dd64f41c00111565e8bbe12141cd @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/9095a15e071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/9095a15e071d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/9095a15e071d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/91dba4f9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/91dba4f9221d0011116edf0151d9d887 new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/91dba4f9221d0011116edf0151d9d887 @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/b0edd883f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/b0edd883f61c00111565e8bbe12141cd new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/b0edd883f61c00111565e8bbe12141cd @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/e07aefd70a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/e07aefd70a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b4/e07aefd70a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/703d956a201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/703d956a201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/70b9e463e81c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/70b9e463e81c00111565e8bbe12141cd new file mode 100644 index 00000000..7dff3cbf --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/70b9e463e81c00111565e8bbe12141cd @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/a0af9df9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/a0af9df9221d0011116edf0151d9d887 new file mode 100644 index 00000000..4c69eba0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/a0af9df9221d0011116edf0151d9d887 @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./Source/ARMCM3_STM32/can.o \ +./Source/ARMCM3_STM32/cpu.o \ +./Source/ARMCM3_STM32/flash.o \ +./Source/ARMCM3_STM32/nvm.o \ +./Source/ARMCM3_STM32/timer.o \ +./Source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./Source/ARMCM3_STM32/can.d \ +./Source/ARMCM3_STM32/cpu.d \ +./Source/ARMCM3_STM32/flash.d \ +./Source/ARMCM3_STM32/nvm.d \ +./Source/ARMCM3_STM32/timer.d \ +./Source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +Source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +Source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/c0f5b53c071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/c0f5b53c071d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b5/c0f5b53c071d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20304075221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20304075221d0011116edf0151d9d887 new file mode 100644 index 00000000..c8e8660e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20304075221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/306bffa1221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/306bffa1221d0011116edf0151d9d887 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/306bffa1221d0011116edf0151d9d887 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/60f33342221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/60f33342221d0011116edf0151d9d887 new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/60f33342221d0011116edf0151d9d887 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/a07a5c7c201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b6/a07a5c7c201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/20e0e7c0011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/20e0e7c0011d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/20e0e7c0011d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/403cb03f021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/403cb03f021d00111358d2931fee7772 new file mode 100644 index 00000000..253654d4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/403cb03f021d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/608f90fa071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/608f90fa071d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/608f90fa071d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/609eabb5091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/609eabb5091d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/609eabb5091d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/c023eb890b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/c023eb890b1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b7/c023eb890b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b8/d0d1f1b4e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b8/d0d1f1b4e91c00111565e8bbe12141cd new file mode 100644 index 00000000..ad2dac46 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b8/d0d1f1b4e91c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0bfbcc50c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0bfbcc50c1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0bfbcc50c1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/00c39a030d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/00c39a030d1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/00c39a030d1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/5060d9d10d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/5060d9d10d1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/5060d9d10d1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/707359dc041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/707359dc041d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/707359dc041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0077756e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0077756e71c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/300d10a0f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/300d10a0f41c00111565e8bbe12141cd new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/300d10a0f41c00111565e8bbe12141cd @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/b00312e20c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/b00312e20c1d00111358d2931fee7772 new file mode 100644 index 00000000..623456fa --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/b00312e20c1d00111358d2931fee7772 @@ -0,0 +1,205 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void DisplayUptime(void); +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* Output uptime on terminal */ + DisplayUptime(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: DisplayUptime +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Outputs the program's runtime on the terminal every second. +** +****************************************************************************************/ +static void DisplayUptime(void) +{ + static unsigned long uptime_ms_last = 0; + unsigned long uptime_ms_now; + unsigned char hr, min, sec; + + uptime_ms_now = TimerGet(); + + /* output info on terminal just once a second */ + if ( (uptime_ms_now - uptime_ms_last) < 1000) + { + /* not yet time to toggle */ + return; + } + /* calculate uptime */ + sec = uptime_ms_now/1000; + min = sec/60; + hr = min/60; + + /* output time on terminal */ + printf("Program uptime: %d:%02d:%02d", hr, min, sec); + + /* store for next comparison */ + uptime_ms_last = uptime_ms_now; +} /*** end of DisplayUptime ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/c0f045edf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/c0f045edf31c00111565e8bbe12141cd new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/c0f045edf31c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/d0e5b4440a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/d0e5b4440a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/d0e5b4440a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/f0aedf68041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/f0aedf68041d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/f0aedf68041d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/203917a0f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/203917a0f41c00111565e8bbe12141cd new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/203917a0f41c00111565e8bbe12141cd @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/40307220021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/40307220021d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/40307220021d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/908e9c3dee1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/908e9c3dee1c00111565e8bbe12141cd new file mode 100644 index 00000000..f7ce8d76 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bc/908e9c3dee1c00111565e8bbe12141cd @@ -0,0 +1,103 @@ +/**************************************************************************************** +| Description: LED driver source file +| File Name: led.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ +#define LED_TOGGLE_MS (250) /* toggle interval time in milliseconds */ + + +/**************************************************************************************** +** NAME: LedInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the LED. +** +****************************************************************************************/ +void LedInit(void) +{ + GPIO_InitTypeDef gpio_init; + + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); + gpio_init.GPIO_Pin = GPIO_Pin_12; + gpio_init.GPIO_Speed = GPIO_Speed_50MHz; + gpio_init.GPIO_Mode = GPIO_Mode_Out_PP; + GPIO_Init(GPIOC, &gpio_init); +} /*** end of LedInit ***/ + + +/**************************************************************************************** +** NAME: LedToggle +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Toggles the LED at a fixed time interval. +** +****************************************************************************************/ +void LedToggle(void) +{ + static unsigned char led_toggle_state = 0; + static unsigned long timer_counter_last = 0; + unsigned long timer_counter_now; + + /* check if toggle interval time passed */ + timer_counter_now = TimerGet(); + if ( (timer_counter_now - timer_counter_last) < LED_TOGGLE_MS) + { + /* not yet time to toggle */ + return; + } + + /* determine toggle action */ + if (led_toggle_state == 0) + { + led_toggle_state = 1; + /* turn the LED on */ + GPIO_ResetBits(GPIOC, GPIO_Pin_12); + } + else + { + led_toggle_state = 0; + /* turn the LED off */ + GPIO_SetBits(GPIOC, GPIO_Pin_12); + } + + /* store toggle time to determine next toggle interval */ + timer_counter_last = timer_counter_now; +} /*** end of LedToggle ***/ + + +/*********************************** end of led.c **************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bd/10215bd8221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bd/10215bd8221d0011116edf0151d9d887 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bd/10215bd8221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bd/e0eab5ca041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bd/e0eab5ca041d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bd/e0eab5ca041d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/be/50d45d1a0e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/be/50d45d1a0e1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/be/50d45d1a0e1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bf/c06148edf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bf/c06148edf31c00111565e8bbe12141cd new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bf/c06148edf31c00111565e8bbe12141cd @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c/505d1ac0091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c/505d1ac0091d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c/505d1ac0091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c0/a0fa34a1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c0/a0fa34a1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c0/f0dd9dd10d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c0/f0dd9dd10d1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c0/f0dd9dd10d1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/0051e1360a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/0051e1360a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/0051e1360a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/109becc0011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/109becc0011d00111358d2931fee7772 new file mode 100644 index 00000000..253654d4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/109becc0011d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40c30da0f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40c30da0f41c00111565e8bbe12141cd new file mode 100644 index 00000000..ce284ef6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40c30da0f41c00111565e8bbe12141cd @@ -0,0 +1,34 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + +OBJS += \ +./source/ARMCM3_STM32/GCC/cstart.o \ +./source/ARMCM3_STM32/GCC/vectors.o + +C_DEPS += \ +./source/ARMCM3_STM32/GCC/cstart.d \ +./source/ARMCM3_STM32/GCC/vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/GCC/cstart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/cstart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/GCC/vectors.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/GCC/vectors.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/d07160e20c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/d07160e20c1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/d07160e20c1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/e0ebf1d70a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/e0ebf1d70a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c1/e0ebf1d70a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/80625a20021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/80625a20021d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/80625a20021d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/a086112d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/a086112d091d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/a086112d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/e0f8d69c0d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/e0f8d69c0d1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c2/e0f8d69c0d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/2079f771f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/2079f771f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/4024ed9fe61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/4024ed9fe61c00111565e8bbe12141cd new file mode 100644 index 00000000..aefddb44 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/4024ed9fe61c00111565e8bbe12141cd @@ -0,0 +1,206 @@ +#**************************************************************************************** +#| Description: Makefile for STM32 using CodeSourcery GNU GCC compiler toolset +#| File Name: makefile +#| +#|--------------------------------------------------------------------------------------- +#| C O P Y R I G H T +#|--------------------------------------------------------------------------------------- +#| Copyright (c) 2011 by Feaser LLC http://www.feaser.com All rights reserved +#| +#|--------------------------------------------------------------------------------------- +#| L I C E N S E +#|--------------------------------------------------------------------------------------- +#| This file is part of OpenBTL. OpenBTL is free software: you can redistribute it and/or +#| modify it under the terms of the GNU General Public License as published by the Free +#| Software Foundation, either version 3 of the License, or (at your option) any later +#| version. +#| +#| OpenBTL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +#| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +#| PURPOSE. See the GNU General Public License for more details. +#| +#| You should have received a copy of the GNU General Public License along with OpenBTL. +#| If not, see . +#| +#**************************************************************************************** +SHELL = sh + +#|---------------------------------------------------------------------------------------| +#| Configure project name | +#|---------------------------------------------------------------------------------------| +PROJ_NAME=demoprog_olimex_stm32p103 + + +#|---------------------------------------------------------------------------------------| +#| Speficy project source files | +#|---------------------------------------------------------------------------------------| +PROJ_FILES= \ +boot.c \ +boot.h \ +cstart.c \ +header.h \ +irq.c \ +irq.h \ +led.c \ +led.h \ +main.c \ +timer.c \ +timer.h \ +vectors.c \ +lib/stdperiphlib/stm32f10x_conf.h \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + + +#|---------------------------------------------------------------------------------------| +#| Compiler binaries | +#|---------------------------------------------------------------------------------------| +CC = arm-none-eabi-gcc +LN = arm-none-eabi-gcc +OC = arm-none-eabi-objcopy +OD = arm-none-eabi-objdump +AS = arm-none-eabi-as +SZ = arm-none-eabi-size + + +#|---------------------------------------------------------------------------------------| +#| Extract file names | +#|---------------------------------------------------------------------------------------| +PROJ_ASRCS = $(filter %.s,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) +PROJ_CSRCS = $(filter %.c,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) +PROJ_CHDRS = $(filter %.h,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) +PROJ_CCMPL = $(patsubst %.c,%.cpl,$(PROJ_CSRCS)) +PROJ_ACMPL = $(patsubst %.s,%.cpl,$(PROJ_ASRCS)) + + +#|---------------------------------------------------------------------------------------| +#| Set important path variables | +#|---------------------------------------------------------------------------------------| +VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :) +OBJ_PATH = obj +BIN_PATH = bin +INC_PATH = $(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file))))) +INC_PATH += -I. +LIB_PATH = + + +#|---------------------------------------------------------------------------------------| +#| Options for compiler binaries | +#|---------------------------------------------------------------------------------------| +CFLAGS = -g -D inline= -mthumb -mcpu=cortex-m3 -O1 -T memory.x +CFLAGS += -D PACK_STRUCT_END=__attribute\(\(packed\)\) -D sprintf=usprintf -Wno-main +CFLAGS += -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) -D snprintf=usnprintf +CFLAGS += -D printf=uipprintf -ffunction-sections -fdata-sections $(INC_PATH) +CFLAGS += -D STM32F10X_MD -D USE_STDPERIPH_DRIVER -D VECT_TAB_FLASH -D GCC_ARMCM3 +LFLAGS = -nostartfiles -Xlinker -M -Xlinker -Map=$(BIN_PATH)/$(PROJ_NAME).map +LFLAGS += $(LIB_PATH) -Xlinker --no-gc-sections +OFLAGS = -O srec +ODFLAGS = -x +SZFLAGS = -B -d + + +#|---------------------------------------------------------------------------------------| +#| Specify library files | +#|---------------------------------------------------------------------------------------| +LIBS = + + +#|---------------------------------------------------------------------------------------| +#| Define targets | +#|---------------------------------------------------------------------------------------| +AOBJS = $(patsubst %.s,%.o,$(PROJ_ASRCS)) +COBJS = $(patsubst %.c,%.o,$(PROJ_CSRCS)) + + +#|---------------------------------------------------------------------------------------| +#| Make ALL | +#|---------------------------------------------------------------------------------------| +all : $(BIN_PATH)/$(PROJ_NAME).srec + + +$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf + @$(OC) $< $(OFLAGS) $@ + @$(OD) $(ODFLAGS) $< > $(BIN_PATH)/$(PROJ_NAME).map + @echo +++ Summary of memory consumption: + @$(SZ) $(SZFLAGS) $< + @echo +++ Build complete [$(notdir $@)] + +$(BIN_PATH)/$(PROJ_NAME).elf : $(AOBJS) $(COBJS) + @echo +++ Linking [$(notdir $@)] + @$(LN) $(CFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS) $(LFLAGS) + + +#|---------------------------------------------------------------------------------------| +#| Compile and assemble | +#|---------------------------------------------------------------------------------------| +$(AOBJS): %.o: %.s $(PROJ_CHDRS) + @echo +++ Assembling [$(notdir $<)] + @$(AS) $(AFLAGS) $< -o $(OBJ_PATH)/$(@F) + +$(COBJS): %.o: %.c $(PROJ_CHDRS) + @echo +++ Compiling [$(notdir $<)] + @$(CC) $(CFLAGS) -c $< -o $(OBJ_PATH)/$(@F) + + +#|---------------------------------------------------------------------------------------| +#| Make CLEAN | +#|---------------------------------------------------------------------------------------| +clean : + @echo +++ Cleaning build environment + @rm -f $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file)) + @rm -f $(foreach file,$(COBJS),$(OBJ_PATH)/$(file)) + @rm -f $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file))) + @rm -f $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).map + @rm -f $(BIN_PATH)/$(PROJ_NAME).srec + @echo +++ Clean complete + + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/502604a0f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/502604a0f41c00111565e8bbe12141cd new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/502604a0f41c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/901a8a2d201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c3/901a8a2d201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c4/a0c7875ee91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c4/a0c7875ee91c00111565e8bbe12141cd new file mode 100644 index 00000000..1f51c221 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c4/a0c7875ee91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c5/3099ffd9e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c5/3099ffd9e91c00111565e8bbe12141cd new file mode 100644 index 00000000..7dff3cbf --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c5/3099ffd9e91c00111565e8bbe12141cd @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c5/a0fd30220a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c5/a0fd30220a1d00111358d2931fee7772 new file mode 100644 index 00000000..847a68a8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c5/a0fd30220a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/0099c53f021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/0099c53f021d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/0099c53f021d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/a0d751edf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/a0d751edf31c00111565e8bbe12141cd new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/a0d751edf31c00111565e8bbe12141cd @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/a0f517ace71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/a0f517ace71c00111565e8bbe12141cd new file mode 100644 index 00000000..ad2dac46 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/a0f517ace71c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/d025775ee91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/d025775ee91c00111565e8bbe12141cd new file mode 100644 index 00000000..ad2dac46 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c6/d025775ee91c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c7/10a2751a0e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c7/10a2751a0e1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c7/10a2751a0e1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/8046db76f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/8046db76f61c00111565e8bbe12141cd new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/8046db76f61c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/900e1f3efa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/900e1f3efa1c00111358d2931fee7772 new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/900e1f3efa1c00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/90bb969c0d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/90bb969c0d1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c8/90bb969c0d1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c9/606e0aedf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c9/606e0aedf31c00111565e8bbe12141cd new file mode 100644 index 00000000..454df040 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c9/606e0aedf31c00111565e8bbe12141cd @@ -0,0 +1,161 @@ +/**************************************************************************************** +| Description: bootloader interrupt vector table source file +| File Name: vectors.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "boot.h" /* bootloader generic header */ + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +extern blt_int32u _estack; /* stack end address (memory.x) */ + + +/**************************************************************************************** +** NAME: UnusedISR +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Catch-all for unused interrrupt service routines. +** +****************************************************************************************/ +void UnusedISR(void) +{ + /* unexpected interrupt occured, so trigger an assertion to halt the system */ + ASSERT_RT(BLT_FALSE); +} /*** end of UnusedISR ***/ + + +/**************************************************************************************** +* I N T E R R U P T V E C T O R T A B L E +****************************************************************************************/ +extern void reset_handler(void); /* implemented in cstart.c */ + +typedef union +{ + void (*func)(void); /* for ISR function pointers */ + blt_int32u ptr; /* for stack pointer entry */ +}tIsrFunc; /* type for vector table entries */ + +__attribute__ ((section(".isr_vector"))) +const tIsrFunc _vectab[] = +{ + { .ptr = (blt_int32u)&_estack }, /* the initial stack pointer */ + reset_handler, /* the reset handler */ + UnusedISR, /* NMI Handler */ + UnusedISR, /* Hard Fault Handler */ + UnusedISR, /* MPU Fault Handler */ + UnusedISR, /* Bus Fault Handler */ + UnusedISR, /* Usage Fault Handler */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* SVCall Handler */ + UnusedISR, /* Debug Monitor Handler */ + UnusedISR, /* Reserved */ + UnusedISR, /* PendSV Handler */ + UnusedISR, /* SysTick Handler */ + UnusedISR, /* Window Watchdog */ + UnusedISR, /* PVD through EXTI Line detect */ + UnusedISR, /* Tamper */ + UnusedISR, /* RTC */ + UnusedISR, /* Flash */ + UnusedISR, /* RCC */ + UnusedISR, /* EXTI Line 0 */ + UnusedISR, /* EXTI Line 1 */ + UnusedISR, /* EXTI Line 2 */ + UnusedISR, /* EXTI Line 3 */ + UnusedISR, /* EXTI Line 4 */ + UnusedISR, /* DMA1 Channel 1 */ + UnusedISR, /* DMA1 Channel 2 */ + UnusedISR, /* DMA1 Channel 3 */ + UnusedISR, /* DMA1 Channel 4 */ + UnusedISR, /* DMA1 Channel 5 */ + UnusedISR, /* DMA1 Channel 6 */ + UnusedISR, /* DMA1 Channel 7 */ + UnusedISR, /* ADC1 and ADC2 */ + UnusedISR, /* CAN1 TX */ + UnusedISR, /* CAN1 RX0 */ + UnusedISR, /* CAN1 RX1 */ + UnusedISR, /* CAN1 SCE */ + UnusedISR, /* EXTI Line 9..5 */ + UnusedISR, /* TIM1 Break */ + UnusedISR, /* TIM1 Update */ + UnusedISR, /* TIM1 Trigger and Commutation */ + UnusedISR, /* TIM1 Capture Compare */ + UnusedISR, /* TIM2 */ + UnusedISR, /* TIM3 */ + UnusedISR, /* TIM4 */ + UnusedISR, /* I2C1 Event */ + UnusedISR, /* I2C1 Error */ + UnusedISR, /* I2C2 Event */ + UnusedISR, /* I2C1 Error */ + UnusedISR, /* SPI1 */ + UnusedISR, /* SPI2 */ + UnusedISR, /* USART1 */ + UnusedISR, /* USART2 */ + UnusedISR, /* USART3 */ + UnusedISR, /* EXTI Line 15..10 */ + UnusedISR, /* RTC alarm through EXTI line */ + UnusedISR, /* USB OTG FS Wakeup */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* Reserved */ + UnusedISR, /* TIM5 */ + UnusedISR, /* SPI3 */ + UnusedISR, /* UART4 */ + UnusedISR, /* UART5 */ + UnusedISR, /* TIM6 */ + UnusedISR, /* TIM7 */ + UnusedISR, /* DMA2 Channel1 */ + UnusedISR, /* DMA2 Channel2 */ + UnusedISR, /* DMA2 Channel3 */ + UnusedISR, /* DMA2 Channel4 */ + UnusedISR, /* DMA2 Channel5 */ + UnusedISR, /* Ethernet */ + UnusedISR, /* Ethernet Wakeup */ + UnusedISR, /* CAN2 TX */ + UnusedISR, /* CAN2 RX0 */ + UnusedISR, /* CAN2 RX1 */ + UnusedISR, /* CAN2 SCE */ + UnusedISR /* USB OTG FS */ +}; + + +/************************************ end of hw.c **************************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c9/f00fc5e90a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c9/f00fc5e90a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/c9/f00fc5e90a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/50e84f1e091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/50e84f1e091d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/50e84f1e091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/90ee5952201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/90ee5952201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/90ee5952201d00111c63a4b3c7bd9f5b @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/e0c38af9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/e0c38af9221d0011116edf0151d9d887 new file mode 100644 index 00000000..0a5275bc --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cb/e0c38af9221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/00e7d864f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/00e7d864f41c00111565e8bbe12141cd new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/00e7d864f41c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/a0ce1c04e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/a0ce1c04e91c00111565e8bbe12141cd new file mode 100644 index 00000000..6dbfa55a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/a0ce1c04e91c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +Prog.hex \ + +SECONDARY_LIST += \ +Prog.lst \ + +SECONDARY_SIZE += \ +Prog.siz \ + + +# All Target +all: Prog.elf secondary-outputs + +# Tool invocations +Prog.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,Prog.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Prog.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +Prog.hex: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec Prog.elf test + @echo 'Finished building: $@' + @echo ' ' + +Prog.lst: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S Prog.elf > "Prog.lst" + @echo 'Finished building: $@' + @echo ' ' + +Prog.siz: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley Prog.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) Prog.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/f03817a2221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/f03817a2221d0011116edf0151d9d887 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cc/f03817a2221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cd/207668b00a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cd/207668b00a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cd/207668b00a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ce/c0f25a9d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ce/c0f25a9d091d00111358d2931fee7772 new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ce/c0f25a9d091d00111358d2931fee7772 @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ce/f0bfead70a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ce/f0bfead70a1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ce/f0bfead70a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b0eb5ada011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b0eb5ada011d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b0eb5ada011d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b11c4dedf31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b11c4dedf31c00111565e8bbe12141cd new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b11c4dedf31c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d/b04ff2890b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d/b04ff2890b1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d/b04ff2890b1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d/f0cef85c041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d/f0cef85c041d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d/f0cef85c041d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d0/30535356e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d0/30535356e71c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d2/8041d33fea1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d2/8041d33fea1c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/8000d746201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/8000d746201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/c0f857440a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/c0f857440a1d00111358d2931fee7772 new file mode 100644 index 00000000..d5b04534 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/c0f857440a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + unsigned long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/d08faaf0041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/d08faaf0041d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/d08faaf0041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/f014cb9ff41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/f014cb9ff41c00111565e8bbe12141cd new file mode 100644 index 00000000..9ff98b6c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d3/f014cb9ff41c00111565e8bbe12141cd @@ -0,0 +1,161 @@ +/**************************************************************************************** +| Description: bootloader interrupt vector table source file +| File Name: vectors.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "boot.h" /* bootloader generic header */ + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +extern blt_int32u _estack; /* stack end address (memory.x) */ + + +/**************************************************************************************** +** NAME: UnusedISR +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Catch-all for unused interrrupt service routines. +** +****************************************************************************************/ +void UnusedISR(void) +{ + /* unexpected interrupt occured, so trigger an assertion to halt the system */ + ASSERT_RT(BLT_FALSE); +} /*** end of UnusedISR ***/ + + +/**************************************************************************************** +* I N T E R R U P T V E C T O R T A B L E +****************************************************************************************/ +extern void reset_handler(void); /* implemented in cstart.c */ + +typedef union +{ + void (*func)(void); /* for ISR function pointers */ + blt_int32u ptr; /* for stack pointer entry */ +}tIsrFunc; /* type for vector table entries */ + +__attribute__ ((section(".isr_vector"))) +const tIsrFunc _vectab[] = +{ + { .ptr = (blt_int32u)&_estack }, /* the initial stack pointer */ + { reset_handler}, /* the reset handler */ + { UnusedISR}, /* NMI Handler */ + { UnusedISR}, /* Hard Fault Handler */ + { UnusedISR}, /* MPU Fault Handler */ + { UnusedISR}, /* Bus Fault Handler */ + { UnusedISR}, /* Usage Fault Handler */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* SVCall Handler */ + { UnusedISR}, /* Debug Monitor Handler */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* PendSV Handler */ + { UnusedISR}, /* SysTick Handler */ + { UnusedISR}, /* Window Watchdog */ + { UnusedISR}, /* PVD through EXTI Line detect */ + { UnusedISR}, /* Tamper */ + { UnusedISR}, /* RTC */ + { UnusedISR}, /* Flash */ + { UnusedISR}, /* RCC */ + { UnusedISR}, /* EXTI Line 0 */ + { UnusedISR}, /* EXTI Line 1 */ + { UnusedISR}, /* EXTI Line 2 */ + { UnusedISR}, /* EXTI Line 3 */ + { UnusedISR}, /* EXTI Line 4 */ + { UnusedISR}, /* DMA1 Channel 1 */ + { UnusedISR}, /* DMA1 Channel 2 */ + { UnusedISR}, /* DMA1 Channel 3 */ + { UnusedISR}, /* DMA1 Channel 4 */ + { UnusedISR}, /* DMA1 Channel 5 */ + { UnusedISR}, /* DMA1 Channel 6 */ + { UnusedISR}, /* DMA1 Channel 7 */ + { UnusedISR}, /* ADC1 and ADC2 */ + { UnusedISR}, /* CAN1 TX */ + { UnusedISR}, /* CAN1 RX0 */ + { UnusedISR}, /* CAN1 RX1 */ + { UnusedISR}, /* CAN1 SCE */ + { UnusedISR}, /* EXTI Line 9..5 */ + { UnusedISR}, /* TIM1 Break */ + { UnusedISR}, /* TIM1 Update */ + { UnusedISR}, /* TIM1 Trigger and Commutation */ + { UnusedISR}, /* TIM1 Capture Compare */ + { UnusedISR}, /* TIM2 */ + { UnusedISR}, /* TIM3 */ + { UnusedISR}, /* TIM4 */ + { UnusedISR}, /* I2C1 Event */ + { UnusedISR}, /* I2C1 Error */ + { UnusedISR}, /* I2C2 Event */ + { UnusedISR}, /* I2C1 Error */ + { UnusedISR}, /* SPI1 */ + { UnusedISR}, /* SPI2 */ + { UnusedISR}, /* USART1 */ + { UnusedISR}, /* USART2 */ + { UnusedISR}, /* USART3 */ + { UnusedISR}, /* EXTI Line 15..10 */ + { UnusedISR}, /* RTC alarm through EXTI line */ + { UnusedISR}, /* USB OTG FS Wakeup */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* Reserved */ + { UnusedISR}, /* TIM5 */ + { UnusedISR}, /* SPI3 */ + { UnusedISR}, /* UART4 */ + { UnusedISR}, /* UART5 */ + { UnusedISR}, /* TIM6 */ + { UnusedISR}, /* TIM7 */ + { UnusedISR}, /* DMA2 Channel1 */ + { UnusedISR}, /* DMA2 Channel2 */ + { UnusedISR}, /* DMA2 Channel3 */ + { UnusedISR}, /* DMA2 Channel4 */ + { UnusedISR}, /* DMA2 Channel5 */ + { UnusedISR}, /* Ethernet */ + { UnusedISR}, /* Ethernet Wakeup */ + { UnusedISR}, /* CAN2 TX */ + { UnusedISR}, /* CAN2 RX0 */ + { UnusedISR}, /* CAN2 RX1 */ + { UnusedISR}, /* CAN2 SCE */ + { UnusedISR} /* USB OTG FS */ +}; + + +/************************************ end of hw.c **************************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/30eb7620021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/30eb7620021d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/30eb7620021d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60b42a5d041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60b42a5d041d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60b42a5d041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60b814faf61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60b814faf61c00111565e8bbe12141cd new file mode 100644 index 00000000..6ecc6da6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60b814faf61c00111565e8bbe12141cd @@ -0,0 +1,166 @@ +/**************************************************************************************** +| Description: bootloader interrupt vector table source file +| File Name: vectors.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* External functions +****************************************************************************************/ +extern void reset_handler(void); /* implemented in cstart.c */ + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +extern unsigned long _estack; /* stack end address (memory.x) */ + + +/**************************************************************************************** +** NAME: UnusedISR +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Catch-all for unused interrrupt service routines. +** +****************************************************************************************/ +void UnusedISR(void) +{ + /* unexpected interrupt occured, so halt the system */ + while (1) { ; } +} /*** end of UnusedISR ***/ + + +/**************************************************************************************** +* I N T E R R U P T V E C T O R T A B L E +****************************************************************************************/ +typedef union +{ + void (*func)(void); /* for ISR function pointers */ + unsigned long ptr; /* for stack pointer entry */ +}tIsrFunc; /* type for vector table entries */ + +__attribute__ ((section(".isr_vector"))) +const tIsrFunc _vectab[] = +{ + { .ptr = (unsigned long)&_estack }, /* the initial stack pointer */ + { reset_handler }, /* the reset handler */ + { UnusedISR }, /* NMI Handler */ + { UnusedISR }, /* Hard Fault Handler */ + { UnusedISR }, /* MPU Fault Handler */ + { UnusedISR }, /* Bus Fault Handler */ + { UnusedISR }, /* Usage Fault Handler */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* SVCall Handler */ + { UnusedISR }, /* Debug Monitor Handler */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* PendSV Handler */ + TimerISRHandler, /* SysTick Handler */ + { UnusedISR }, /* Window Watchdog */ + { UnusedISR }, /* PVD through EXTI Line detect */ + { UnusedISR }, /* Tamper */ + { UnusedISR }, /* RTC */ + { UnusedISR }, /* Flash */ + { UnusedISR }, /* RCC */ + { UnusedISR }, /* EXTI Line 0 */ + { UnusedISR }, /* EXTI Line 1 */ + { UnusedISR }, /* EXTI Line 2 */ + { UnusedISR }, /* EXTI Line 3 */ + { UnusedISR }, /* EXTI Line 4 */ + { UnusedISR }, /* DMA1 Channel 1 */ + { UnusedISR }, /* DMA1 Channel 2 */ + { UnusedISR }, /* DMA1 Channel 3 */ + { UnusedISR }, /* DMA1 Channel 4 */ + { UnusedISR }, /* DMA1 Channel 5 */ + { UnusedISR }, /* DMA1 Channel 6 */ + { UnusedISR }, /* DMA1 Channel 7 */ + { UnusedISR }, /* ADC1 and ADC2 */ + { UnusedISR }, /* CAN1 TX */ + { UnusedISR }, /* CAN1 RX0 */ + { UnusedISR }, /* CAN1 RX1 */ + { UnusedISR }, /* CAN1 SCE */ + { UnusedISR }, /* EXTI Line 9..5 */ + { UnusedISR }, /* TIM1 Break */ + { UnusedISR }, /* TIM1 Update */ + { UnusedISR }, /* TIM1 Trigger and Commutation */ + { UnusedISR }, /* TIM1 Capture Compare */ + { UnusedISR }, /* TIM2 */ + { UnusedISR }, /* TIM3 */ + { UnusedISR }, /* TIM4 */ + { UnusedISR }, /* I2C1 Event */ + { UnusedISR }, /* I2C1 Error */ + { UnusedISR }, /* I2C2 Event */ + { UnusedISR }, /* I2C1 Error */ + { UnusedISR }, /* SPI1 */ + { UnusedISR }, /* SPI2 */ + { UnusedISR }, /* USART1 */ + { UnusedISR }, /* USART2 */ + { UnusedISR }, /* USART3 */ + { UnusedISR }, /* EXTI Line 15..10 */ + { UnusedISR }, /* RTC alarm through EXTI line */ + { UnusedISR }, /* USB OTG FS Wakeup */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* TIM5 */ + { UnusedISR }, /* SPI3 */ + { UnusedISR }, /* UART4 */ + { UnusedISR }, /* UART5 */ + { UnusedISR }, /* TIM6 */ + { UnusedISR }, /* TIM7 */ + { UnusedISR }, /* DMA2 Channel1 */ + { UnusedISR }, /* DMA2 Channel2 */ + { UnusedISR }, /* DMA2 Channel3 */ + { UnusedISR }, /* DMA2 Channel4 */ + { UnusedISR }, /* DMA2 Channel5 */ + { UnusedISR }, /* Ethernet */ + { UnusedISR }, /* Ethernet Wakeup */ + { UnusedISR }, /* CAN2 TX */ + { UnusedISR }, /* CAN2 RX0 */ + { UnusedISR }, /* CAN2 RX1 */ + { UnusedISR }, /* CAN2 SCE */ + { UnusedISR }, /* USB OTG FS */ + { (void*)0x55AA11EE }, /* Reserved for OpenBLT checksum */ +}; + + +/************************************ end of hw.c **************************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60c407570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60c407570e1d00111358d2931fee7772 new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/60c407570e1d00111358d2931fee7772 @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/7072a4b5091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/7072a4b5091d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/7072a4b5091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/a0e2173efa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/a0e2173efa1c00111358d2931fee7772 new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/a0e2173efa1c00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/e00b4f9d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/e00b4f9d091d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d4/e00b4f9d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d5/40a3541e091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d5/40a3541e091d00111358d2931fee7772 new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d5/801a6152201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d5/801a6152201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d5/801a6152201d00111c63a4b3c7bd9f5b @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d6/104b07e30a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d6/104b07e30a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d6/104b07e30a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d6/c0d1c1ca041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d6/c0d1c1ca041d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d6/c0d1c1ca041d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/703e1950011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/703e1950011d00111358d2931fee7772 new file mode 100644 index 00000000..054c26dd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/703e1950011d00111358d2931fee7772 @@ -0,0 +1,352 @@ +/**************************************************************************************** +| Description: demo program bootloader interface source file +| File Name: boot.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: BootActivate +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Bootloader activation function. +** +****************************************************************************************/ +static void BootActivate(void) +{ + void (*pEntryFromProgFnc)(void); + + /* set pointer to the address of function EntryFromProg in the bootloader. note that + * 1 is added to this address to enable a switch from Thumb2 to Thumb mode + */ + pEntryFromProgFnc = (void*)0x08000150 + 1; + /* call EntryFromProg to activate the bootloader. */ + pEntryFromProgFnc(); +} /*** end of BootActivate ***/ + + +#if (BOOT_COM_UART_ENABLE > 0) +/**************************************************************************************** +* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data); + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + UartInit(BOOT_COM_UART_BAUDRATE); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1]; + static unsigned char xcpCtoRxLength; + static unsigned char xcpCtoRxInProgress = 0; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == 0) + { + /* store the message length when received */ + xcpCtoReqPacket[0] = UartRxChar(0); + if (xcpCtoReqPacket[0] != -1) + { + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = 1; + + /* reset packet data count */ + xcpCtoRxLength = 0; + } + } + else + { + /* store the next packet byte */ + xcpCtoReqPacket[xcpCtoRxLength+1] = UartRxChar(0); + if (xcpCtoReqPacket[xcpCtoRxLength+1] != -1) + { + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* done with cto packet reception */ + xcpCtoRxInProgress = 0; + + /* check if this was an XCP CONNECT command */ + if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } + } +} /*** end of BootComCheckActivationRequest ***/ + + +/**************************************************************************************** +** NAME: UartReceiveByte +** PARAMETER: data pointer to byte where the data is to be stored. +** RETURN VALUE: 1 if a byte was received, 0 otherwise. +** DESCRIPTION: Receives a communication interface byte if one is present. +** +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data) +{ + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) + { + /* retrieve and store the newly received byte */ + *data = (unsigned char)USART_ReceiveData(USART2); + /* all done */ + return 1; + } + /* still here to no new byte received */ + return 0; +} /*** end of UartReceiveByte ***/ +#endif /* BOOT_COM_UART_ENABLE > 0 */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /* CAN time segment 1 */ + unsigned char tseg2; /* CAN time segment 2 */ +} tCanBusTiming; /* bus timing structure type */ + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/* According to the CAN protocol 1 bit-time can be made up of between 8..25 time quanta + * (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC always being 1. + * The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * 100%. This array contains + * possible and valid time quanta configurations with a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/**************************************************************************************** +** NAME: CanGetSpeedConfig +** PARAMETER: baud The desired baudrate in kbps. Valid values are 10..1000. +** prescaler Pointer to where the value for the prescaler will be stored. +** tseg1 Pointer to where the value for TSEG2 will be stored. +** tseg2 Pointer to where the value for TSEG2 will be stored. +** RETURN VALUE: 1 if the CAN bustiming register values were found, 0 otherwise. +** DESCRIPTION: Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/2) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/2)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the CAN communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* GPIO clock enable */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + /* Configure CAN pin: RX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Configure CAN pin: TX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Remap CAN1 pins to PortB */ + GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); + /* CAN1 Periph clock enable */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN1); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN1, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 0; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN1, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/a0eecc76f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/a0eecc76f61c00111565e8bbe12141cd new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/a0eecc76f61c00111565e8bbe12141cd @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/b151e9450b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/b151e9450b1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/b151e9450b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/e047f72c091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/e047f72c091d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d7/e047f72c091d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d8/41f7b2000b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d8/41f7b2000b1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d8/41f7b2000b1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d8/5003797c201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d8/5003797c201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d9/00d76856e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/d9/00d76856e71c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/c0a0b9440a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/c0a0b9440a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/c0a0b9440a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/d0c6539d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/d0c6539d091d00111358d2931fee7772 new file mode 100644 index 00000000..0e83335d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/da/d0c6539d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/803997220a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/803997220a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/803997220a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/c007e7450b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/c007e7450b1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/c007e7450b1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/e0192d3c0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/e0192d3c0b1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/db/e0192d3c0b1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/1000d8d9011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/1000d8d9011d00111358d2931fee7772 new file mode 100644 index 00000000..2e6fee4f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/1000d8d9011d00111358d2931fee7772 @@ -0,0 +1,173 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } + + +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + + + + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/20ea40f1091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/20ea40f1091d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/20ea40f1091d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/408f6cd70a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/408f6cd70a1d00111358d2931fee7772 new file mode 100644 index 00000000..4e3ee517 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/408f6cd70a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit ((char)*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/b0600371e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/b0600371e91c00111565e8bbe12141cd new file mode 100644 index 00000000..ad2dac46 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/b0600371e91c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/c0fa1089e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/c0fa1089e71c00111565e8bbe12141cd new file mode 100644 index 00000000..89e6edca --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/c0fa1089e71c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/d055519d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/d055519d091d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dc/d055519d091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/20d944a1f31c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/20d944a1f31c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/90f20069041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/90f20069041d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/90f20069041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/f0c714a2221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/f0c714a2221d0011116edf0151d9d887 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/dd/f0c714a2221d0011116edf0151d9d887 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/00e5d0890b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/00e5d0890b1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/00e5d0890b1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/80ef4f98201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/80ef4f98201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/80ef4f98201d00111c63a4b3c7bd9f5b @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/b01eb08ce01c00111cadaab22f5679ad b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/b01eb08ce01c00111cadaab22f5679ad new file mode 100644 index 00000000..ced41fea --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/de/b01eb08ce01c00111cadaab22f5679ad @@ -0,0 +1,161 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/df/704d0f97051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/df/704d0f97051d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/df/704d0f97051d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/df/e0d25bc3ec1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/df/e0d25bc3ec1c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/df/e0d25bc3ec1c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e/10a889f0091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e/10a889f0091d00111358d2931fee7772 new file mode 100644 index 00000000..196f9a5b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e/10a889f0091d00111358d2931fee7772 @@ -0,0 +1,121 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + GPIO_InitTypeDef GPIO_InitStruct; + USART_InitTypeDef USART_InitStruct; + + /* enable UART peripheral clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + /* enable GPIO peripheral clock for transmitter and receiver pins */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); + /* configure USART Tx as alternate function push-pull */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* Configure USART Rx as alternate function input floating */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* configure UART communcation parameters */ + USART_InitStruct.USART_BaudRate = baudrate; + USART_InitStruct.USART_WordLength = USART_WordLength_8b; + USART_InitStruct.USART_StopBits = USART_StopBits_1; + USART_InitStruct.USART_Parity = USART_Parity_No; + USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_Init(USART2, &USART_InitStruct); + /* enable UART */ + USART_Cmd(USART2, ENABLE); +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + /* wait for transmit completion of the previous character, if any */ + //while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET) { ; } + /* transmit the character */ + //USART_SendData(USART2, (unsigned char)ch); + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + if (!blocking) + { + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) + { + return -1; + } + } + else + { + /* wait for reception of byte */ + while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) { ; } + } + /* retrieve and return the newly received byte */ + return USART_ReceiveData(USART2); +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e0/30f735ffe91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e0/30f735ffe91c00111565e8bbe12141cd new file mode 100644 index 00000000..ad2dac46 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e0/30f735ffe91c00111565e8bbe12141cd @@ -0,0 +1,42 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/c0efd52e051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/c0efd52e051d00111358d2931fee7772 new file mode 100644 index 00000000..69d5f1f3 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/c0efd52e051d00111358d2931fee7772 @@ -0,0 +1,121 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + GPIO_InitTypeDef GPIO_InitStruct; + USART_InitTypeDef USART_InitStruct; + + /* enable UART peripheral clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + /* enable GPIO peripheral clock for transmitter and receiver pins */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); + /* configure USART Tx as alternate function push-pull */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* Configure USART Rx as alternate function input floating */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* configure UART communcation parameters */ + USART_InitStruct.USART_BaudRate = baudrate; + USART_InitStruct.USART_WordLength = USART_WordLength_8b; + USART_InitStruct.USART_StopBits = USART_StopBits_1; + USART_InitStruct.USART_Parity = USART_Parity_No; + USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_Init(USART2, &USART_InitStruct); + /* enable UART */ + USART_Cmd(USART2, ENABLE); +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + /* wait for transmit completion of the previous character, if any */ + while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET) { ; } + /* transmit the character */ + USART_SendData(USART2, (unsigned char)ch); + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + if (!blocking) + { + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) + { + return -1; + } + } + else + { + /* wait for reception of byte */ + while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) { ; } + } + /* retrieve and return the newly received byte */ + return USART_ReceiveData(USART2); +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/e0494ada011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/e0494ada011d00111358d2931fee7772 new file mode 100644 index 00000000..253654d4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e2/e0494ada011d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/10be26570e1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/10be26570e1d00111358d2931fee7772 new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/10be26570e1d00111358d2931fee7772 @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/20878e7c201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/20878e7c201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/5049fb190b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/5049fb190b1d00111358d2931fee7772 new file mode 100644 index 00000000..600446a6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/5049fb190b1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); /*format*/c->width++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/e0e185f9221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/e0e185f9221d0011116edf0151d9d887 new file mode 100644 index 00000000..a4f03e25 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e3/e0e185f9221d0011116edf0151d9d887 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/4042987b0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/4042987b0a1d00111358d2931fee7772 new file mode 100644 index 00000000..847a68a8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/4042987b0a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/c078792d201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/c078792d201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/c0f0b0d10d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/c0f0b0d10d1d00111358d2931fee7772 new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/c0f0b0d10d1d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/e0840789e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/e0840789e71c00111565e8bbe12141cd new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e4/e0840789e71c00111565e8bbe12141cd @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e5/403b5f1a0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e5/403b5f1a0b1d00111358d2931fee7772 new file mode 100644 index 00000000..24b040da --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e5/403b5f1a0b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e5/d07589b9fe1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e5/d07589b9fe1c00111358d2931fee7772 new file mode 100644 index 00000000..b5b1d29b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e5/d07589b9fe1c00111358d2931fee7772 @@ -0,0 +1,164 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + printf("Woohoo!"); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e6/30ee6b2f051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e6/30ee6b2f051d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e6/30ee6b2f051d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e6/e0adffc0011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e6/e0adffc0011d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e6/e0adffc0011d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/10bb6e99221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/10bb6e99221d0011116edf0151d9d887 new file mode 100644 index 00000000..9ee3671f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/10bb6e99221d0011116edf0151d9d887 @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include Source/ARMCM3_STM32/GCC/subdir.mk +-include Source/ARMCM3_STM32/subdir.mk +-include Source/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/30f6631a0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/30f6631a0b1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/30f6631a0b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/60a5d4d10d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/60a5d4d10d1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/60a5d4d10d1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/702684e20c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/702684e20c1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/702684e20c1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f0fc53f1091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f0fc53f1091d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f0fc53f1091d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e9/e03be3fa0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e9/e03be3fa0a1d00111358d2931fee7772 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/e9/e03be3fa0a1d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ea/f04a812f051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ea/f04a812f051d00111358d2931fee7772 new file mode 100644 index 00000000..91772376 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ea/f04a812f051d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/0001ce1f021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/0001ce1f021d00111358d2931fee7772 new file mode 100644 index 00000000..054c26dd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/0001ce1f021d00111358d2931fee7772 @@ -0,0 +1,352 @@ +/**************************************************************************************** +| Description: demo program bootloader interface source file +| File Name: boot.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: BootActivate +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Bootloader activation function. +** +****************************************************************************************/ +static void BootActivate(void) +{ + void (*pEntryFromProgFnc)(void); + + /* set pointer to the address of function EntryFromProg in the bootloader. note that + * 1 is added to this address to enable a switch from Thumb2 to Thumb mode + */ + pEntryFromProgFnc = (void*)0x08000150 + 1; + /* call EntryFromProg to activate the bootloader. */ + pEntryFromProgFnc(); +} /*** end of BootActivate ***/ + + +#if (BOOT_COM_UART_ENABLE > 0) +/**************************************************************************************** +* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data); + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + UartInit(BOOT_COM_UART_BAUDRATE); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1]; + static unsigned char xcpCtoRxLength; + static unsigned char xcpCtoRxInProgress = 0; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == 0) + { + /* store the message length when received */ + xcpCtoReqPacket[0] = UartRxChar(0); + if (xcpCtoReqPacket[0] != -1) + { + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = 1; + + /* reset packet data count */ + xcpCtoRxLength = 0; + } + } + else + { + /* store the next packet byte */ + xcpCtoReqPacket[xcpCtoRxLength+1] = UartRxChar(0); + if (xcpCtoReqPacket[xcpCtoRxLength+1] != -1) + { + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* done with cto packet reception */ + xcpCtoRxInProgress = 0; + + /* check if this was an XCP CONNECT command */ + if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } + } +} /*** end of BootComCheckActivationRequest ***/ + + +/**************************************************************************************** +** NAME: UartReceiveByte +** PARAMETER: data pointer to byte where the data is to be stored. +** RETURN VALUE: 1 if a byte was received, 0 otherwise. +** DESCRIPTION: Receives a communication interface byte if one is present. +** +****************************************************************************************/ +static unsigned char UartReceiveByte(unsigned char *data) +{ + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) + { + /* retrieve and store the newly received byte */ + *data = (unsigned char)USART_ReceiveData(USART2); + /* all done */ + return 1; + } + /* still here to no new byte received */ + return 0; +} /*** end of UartReceiveByte ***/ +#endif /* BOOT_COM_UART_ENABLE > 0 */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /* CAN time segment 1 */ + unsigned char tseg2; /* CAN time segment 2 */ +} tCanBusTiming; /* bus timing structure type */ + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/* According to the CAN protocol 1 bit-time can be made up of between 8..25 time quanta + * (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC always being 1. + * The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * 100%. This array contains + * possible and valid time quanta configurations with a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/**************************************************************************************** +** NAME: CanGetSpeedConfig +** PARAMETER: baud The desired baudrate in kbps. Valid values are 10..1000. +** prescaler Pointer to where the value for the prescaler will be stored. +** tseg1 Pointer to where the value for TSEG2 will be stored. +** tseg2 Pointer to where the value for TSEG2 will be stored. +** RETURN VALUE: 1 if the CAN bustiming register values were found, 0 otherwise. +** DESCRIPTION: Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/2) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/2)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the CAN communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* GPIO clock enable */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + /* Configure CAN pin: RX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Configure CAN pin: TX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Remap CAN1 pins to PortB */ + GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); + /* CAN1 Periph clock enable */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN1); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN1, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 0; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN1, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/c03b2aff071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/c03b2aff071d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/c03b2aff071d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/f012e064f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/f012e064f41c00111565e8bbe12141cd new file mode 100644 index 00000000..2701f2f6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/eb/f012e064f41c00111565e8bbe12141cd @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../hooks.c \ +../main.c + +OBJS += \ +./hooks.o \ +./main.o + +C_DEPS += \ +./hooks.d \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/70f37ec50c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/70f37ec50c1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/70f37ec50c1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/d00106dae91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/d00106dae91c00111565e8bbe12141cd new file mode 100644 index 00000000..629fc8d9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/d00106dae91c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.elf.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/d0f53098201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/d0f53098201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..571a949b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ec/d0f53098201d00111c63a4b3c7bd9f5b @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/assert.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/boot.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/com.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/cop.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + +OBJS += \ +./source/assert.o \ +./source/backdoor.o \ +./source/boot.o \ +./source/com.o \ +./source/cop.o \ +./source/xcp.o + +C_DEPS += \ +./source/assert.d \ +./source/backdoor.d \ +./source/boot.d \ +./source/com.d \ +./source/cop.d \ +./source/xcp.d + + +# Each subdirectory must supply rules for building sources it contributes +source/assert.o: D:/usr/feaser/software/OpenBLT/Target/Source/assert.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/backdoor.o: D:/usr/feaser/software/OpenBLT/Target/Source/backdoor.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/boot.o: D:/usr/feaser/software/OpenBLT/Target/Source/boot.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/com.o: D:/usr/feaser/software/OpenBLT/Target/Source/com.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/cop.o: D:/usr/feaser/software/OpenBLT/Target/Source/cop.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/xcp.o: D:/usr/feaser/software/OpenBLT/Target/Source/xcp.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/002ef43dfa1c00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/002ef43dfa1c00111358d2931fee7772 new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/002ef43dfa1c00111358d2931fee7772 @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/806d471a0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/806d471a0b1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/806d471a0b1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/a05f852d201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ed/a05f852d201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ee/a0e7443c0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ee/a0e7443c0b1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ee/a0e7443c0b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ef/f02a88fa071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ef/f02a88fa071d00111358d2931fee7772 new file mode 100644 index 00000000..1c25bfc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ef/f02a88fa071d00111358d2931fee7772 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/203376360a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/203376360a1d00111358d2931fee7772 new file mode 100644 index 00000000..847a68a8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/203376360a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + putch(sign); + txcharcnt++; + } + if (x) + { + putch ('0'); + txcharcnt++; + putch(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + putch (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit (*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + putch (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + putch (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/60e5eb63e81c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/60e5eb63e81c00111565e8bbe12141cd new file mode 100644 index 00000000..22a98ffb --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/60e5eb63e81c00111565e8bbe12141cd @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +Prog.hex \ + +SECONDARY_LIST += \ +Prog.lst \ + +SECONDARY_SIZE += \ +Prog.siz \ + + +# All Target +all: Prog.elf secondary-outputs + +# Tool invocations +Prog.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,Prog.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "Prog.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +Prog.hex: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec Prog.elf "Prog.hex" + @echo 'Finished building: $@' + @echo ' ' + +Prog.lst: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S Prog.elf > "Prog.lst" + @echo 'Finished building: $@' + @echo ' ' + +Prog.siz: Prog.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley Prog.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) Prog.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/701d5f20021d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/701d5f20021d00111358d2931fee7772 new file mode 100644 index 00000000..253654d4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/701d5f20021d00111358d2931fee7772 @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/d067eafa0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/d067eafa0a1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f0/d067eafa0a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/000604dae91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/000604dae91c00111565e8bbe12141cd new file mode 100644 index 00000000..1f51c221 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/000604dae91c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/60b62256201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/60b62256201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..6881f9bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/60b62256201d00111c63a4b3c7bd9f5b @@ -0,0 +1,45 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/60d1b496051d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/60d1b496051d00111358d2931fee7772 new file mode 100644 index 00000000..022aa137 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/60d1b496051d00111358d2931fee7772 @@ -0,0 +1,37 @@ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08002000, LENGTH = 120K + SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K +} + +SECTIONS +{ + __STACKSIZE__ = 256; + + .text : + { + KEEP(*(.isr_vector)) + *(.text*) + *(.rodata*) + _etext = .; + } > FLASH + + .data : AT (ADDR(.text) + SIZEOF(.text)) + { + _data = .; + *(vtable) + *(.data*) + _edata = .; + } > SRAM + + .bss : + { + _bss = .; + *(.bss*) + *(COMMON) + _ebss = .; + _stack = .; + . = ALIGN(MAX(_stack + __STACKSIZE__ , .), 4); + _estack = .; + } > SRAM +} diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/d02a3bb6221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/d02a3bb6221d0011116edf0151d9d887 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/d02a3bb6221d0011116edf0151d9d887 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/f0206b56e71c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f1/f0206b56e71c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/60d53842221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/60d53842221d0011116edf0151d9d887 new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/60d53842221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/70ed4bb00a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/70ed4bb00a1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/70ed4bb00a1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/b08cc6ca041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/b08cc6ca041d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/b08cc6ca041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/d000adf0041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/d000adf0041d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f2/d000adf0041d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/2187c869ea1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/2187c869ea1c00111565e8bbe12141cd new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/40f7b2000b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/40f7b2000b1d00111358d2931fee7772 new file mode 100644 index 00000000..4c705491 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/40f7b2000b1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdio_mini.c + +OBJS += \ +./lib/stdio_mini.o + +C_DEPS += \ +./lib/stdio_mini.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/%.o: ../lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/50903d42221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/50903d42221d0011116edf0151d9d887 new file mode 100644 index 00000000..b01dabc7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/50903d42221d0011116edf0151d9d887 @@ -0,0 +1,83 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include source/ARMCM3_STM32/GCC/subdir.mk +-include source/ARMCM3_STM32/subdir.mk +-include source/subdir.mk +-include lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +openbtl_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +openbtl_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +openbtl_olimex_stm32p103.siz \ + + +# All Target +all: openbtl_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +openbtl_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -L"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -Wl,-Map,openbtl_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "openbtl_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +openbtl_olimex_stm32p103.hex: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec openbtl_olimex_stm32p103.elf openbtl_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.lst: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S openbtl_olimex_stm32p103.elf > "openbtl_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +openbtl_olimex_stm32p103.siz: openbtl_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley openbtl_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) openbtl_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/e0c92998201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/e0c92998201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..3997be55 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f3/e0c92998201d00111c63a4b3c7bd9f5b @@ -0,0 +1,28 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +source \ +source/ARMCM3_STM32 \ +source/ARMCM3_STM32/GCC \ +. \ +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/b0284777eb1c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/b0284777eb1c00111565e8bbe12141cd new file mode 100644 index 00000000..348255d9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/b0284777eb1c00111565e8bbe12141cd @@ -0,0 +1,94 @@ +/**************************************************************************************** +| Description: Demo program C startup source file +| File Name: cstart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* External function protoypes +****************************************************************************************/ +extern int main(void); + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +/* these externals are declared by the linker */ +extern unsigned long _etext; +extern unsigned long _data; +extern unsigned long _edata; +extern unsigned long _bss; +extern unsigned long _ebss; +extern unsigned long _estack; + + +/**************************************************************************************** +** NAME: reset_handler +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reset interrupt service routine. Configures the stack, initializes +** RAM and jumps to function main. +** +****************************************************************************************/ +void reset_handler(void) +{ + unsigned long *pSrc, *pDest; + + /* initialize stack pointer */ + __asm(" ldr r1, =_estack\n" + " mov sp, r1"); + /* copy the data segment initializers from flash to SRAM */ + pSrc = &_etext; + for(pDest = &_data; pDest < &_edata; ) + { + *pDest++ = *pSrc++; + } + /* zero fill the bss segment. this is done with inline assembly since this will + * clear the value of pDest if it is not kept in a register. + */ + __asm(" ldr r0, =_bss\n" + " ldr r1, =_ebss\n" + " mov r2, #0\n" + " .thumb_func\n" + "zero_loop:\n" + " cmp r0, r1\n" + " it lt\n" + " strlt r2, [r0], #4\n" + " blt zero_loop"); + /* start the software application by calling its entry point */ + main(); +} /*** end of reset_handler ***/ + + +/************************************ end of cstart.c **********************************/ \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c0bc315e071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c0bc315e071d00111358d2931fee7772 new file mode 100644 index 00000000..ee4ce822 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c0bc315e071d00111358d2931fee7772 @@ -0,0 +1,210 @@ +/**************************************************************************************** +| Description: Newlib system calls remapping source file +| File Name: syscalls.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/**************************************************************************************** +** NAME: _read_r +** PARAMETER: len number of character to read. +** RETURN VALUE: number of characters read +** DESCRIPTION: Reentrant function for reading data from a file. In this case the +** read is performed from the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len) +{ + char c; + int i; + unsigned char *p; + + p = (unsigned char*)ptr; + + /* receive all characters with echo */ + for (i = 0; i < len; i++) + { + c = UartRxChar(1); + + *p++ = c; + UartTxChar(c); + + /* was this a \n newline code? */ + if (c == 0x0D && i <= (len - 2)) + { + /* automatically add cariage return after a new line */ + *p = 0x0A; + UartTxChar(0x0A); + return i + 2; + } + } + return i; +} /*** end of _read_r ***/ + + +/**************************************************************************************** +** NAME: _write_r +** PARAMETER: len number of character to write +** RETURN VALUE: number of characters written. +** DESCRIPTION: Reentrant function for writing data from a file. In this case the +** write is performed to the UART interface, so only the len parameter +** is used. +** +****************************************************************************************/ +_ssize_t _write_r(struct _reent *r, int file, const void *ptr, size_t len) +{ + int i; + const unsigned char *p; + + p = (const unsigned char*) ptr; + + /* transmit all characters */ + for (i = 0; i < len; i++) + { + if (*p == '\n' ) + { + /* automatically add cariage return after a new line */ + UartTxChar('\r'); + } + UartTxChar(*p++); + } + + return len; +} /*** end of _write_r ***/ + + +/**************************************************************************************** +** NAME: _close_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for closing a file. Since UART is used, no further +** action is required here. +** +****************************************************************************************/ +int _close_r(struct _reent *r, int file) +{ + return 0; +} /*** end of _close_r ***/ + + +/**************************************************************************************** +** NAME: _lseek_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for obtaining the file pointer. Since UART is +** used, no further action is required here. +** +****************************************************************************************/ +_off_t _lseek_r(struct _reent *r, int file, _off_t ptr, int dir) +{ + /* always at the beginning of the file */ + return (_off_t)0; +} /*** end of _lseek_r ***/ + + +/**************************************************************************************** + * +** NAME: _fstat_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reentrant function for setting the device mode. +** +****************************************************************************************/ +int _fstat_r(struct _reent *r, int file, struct stat *st) +{ + /* set as character device */ + st->st_mode = S_IFCHR; + return 0; +} /*** end of _fstat_r ***/ + + + +/**************************************************************************************** +** NAME: _isatty_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Not supported +** +****************************************************************************************/ +int _isatty_r(struct _reent *r, int file) +{ + return 1; +} /*** end of _isatty_r ***/ + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static char *heap_ptr = NULL; +static char heap[512]; + + +/**************************************************************************************** +** NAME: _sbrk_r +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Increments the heap pointer. +** +****************************************************************************************/ +void * _sbrk_r(struct _reent *_s_r, ptrdiff_t nbytes) +{ + char *base; + + /* initialize the heap pointer if not yet done */ + if (heap_ptr == NULL) + { + /* set it to the current end of the heap */ + heap_ptr = &heap[0]; + } + + /* check if there is still room on the heap for this allocation */ + if ((unsigned long)(heap_ptr + nbytes) > (unsigned long)(heap + sizeof(heap))) + { + /* cannot allocate */ + return NULL; + } + + /* remember current pointer value for the return value */ + base = heap_ptr; /* Point to end of heap. */ + /* allocate the */ + heap_ptr += nbytes; /* Increase heap. */ + + return base; /* Return pointer to start of new heap area. */ +} /*** end of _sbrk_r ***/ + + +/*********************************** end of syscalls.c *********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/f09ec2e90a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/f09ec2e90a1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/f09ec2e90a1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f5/5163b95e071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f5/5163b95e071d00111358d2931fee7772 new file mode 100644 index 00000000..67b72e37 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f5/5163b95e071d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/304e0831071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/304e0831071d00111358d2931fee7772 new file mode 100644 index 00000000..2ecf29a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/304e0831071d00111358d2931fee7772 @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/90d9919c0d1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/90d9919c0d1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/90d9919c0d1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f0ba81fa0a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f0ba81fa0a1d00111358d2931fee7772 new file mode 100644 index 00000000..660a606a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f0ba81fa0a1d00111358d2931fee7772 @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit ((const char)*format); (char *)format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit (*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/00eeac3d091d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/00eeac3d091d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/00eeac3d091d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/3067661a0b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/3067661a0b1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/3067661a0b1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/e06f36b6221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/e06f36b6221d0011116edf0151d9d887 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f7/e06f36b6221d0011116edf0151d9d887 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f8/207890f0041d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f8/207890f0041d00111358d2931fee7772 new file mode 100644 index 00000000..085f1e02 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f8/207890f0041d00111358d2931fee7772 @@ -0,0 +1,48 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../boot.c \ +../cstart.c \ +../irq.c \ +../led.c \ +../main.c \ +../syscalls.c \ +../timer.c \ +../uart.c \ +../vectors.c + +OBJS += \ +./boot.o \ +./cstart.o \ +./irq.o \ +./led.o \ +./main.o \ +./syscalls.o \ +./timer.o \ +./uart.o \ +./vectors.o + +C_DEPS += \ +./boot.d \ +./cstart.d \ +./irq.d \ +./led.d \ +./main.d \ +./syscalls.d \ +./timer.d \ +./uart.d \ +./vectors.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f8/702cde46201d00111c63a4b3c7bd9f5b b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f8/702cde46201d00111c63a4b3c7bd9f5b new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/40bb12b6221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/40bb12b6221d0011116edf0151d9d887 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/40bb12b6221d0011116edf0151d9d887 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/806b7fe20c1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/806b7fe20c1d00111358d2931fee7772 new file mode 100644 index 00000000..21358a36 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/806b7fe20c1d00111358d2931fee7772 @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.o: ../lib/stdperiphlib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/f0aebe83f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/f0aebe83f61c00111565e8bbe12141cd new file mode 100644 index 00000000..f2938bba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f9/f0aebe83f61c00111565e8bbe12141cd @@ -0,0 +1,74 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c \ +D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + +OBJS += \ +./source/ARMCM3_STM32/can.o \ +./source/ARMCM3_STM32/cpu.o \ +./source/ARMCM3_STM32/flash.o \ +./source/ARMCM3_STM32/nvm.o \ +./source/ARMCM3_STM32/timer.o \ +./source/ARMCM3_STM32/uart.o + +C_DEPS += \ +./source/ARMCM3_STM32/can.d \ +./source/ARMCM3_STM32/cpu.d \ +./source/ARMCM3_STM32/flash.d \ +./source/ARMCM3_STM32/nvm.d \ +./source/ARMCM3_STM32/timer.d \ +./source/ARMCM3_STM32/uart.d + + +# Each subdirectory must supply rules for building sources it contributes +source/ARMCM3_STM32/can.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/can.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/cpu.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/cpu.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/flash.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/flash.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/nvm.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/nvm.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/timer.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/timer.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +source/ARMCM3_STM32/uart.o: D:/usr/feaser/software/OpenBLT/Target/Source/ARMCM3_STM32/uart.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/20d758d8221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/20d758d8221d0011116edf0151d9d887 new file mode 100644 index 00000000..c7e38477 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/20d758d8221d0011116edf0151d9d887 @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c \ +../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c + +OBJS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + +C_DEPS += \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.d \ +./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.o: ../lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_FLASH -DGCC_ARMCM3 -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\inc" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/40e85d31071d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/40e85d31071d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/40e85d31071d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0295f75221d0011116edf0151d9d887 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0295f75221d0011116edf0151d9d887 new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e059c7e90a1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e059c7e90a1d00111358d2931fee7772 new file mode 100644 index 00000000..8729b544 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e059c7e90a1d00111358d2931fee7772 @@ -0,0 +1,82 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include lib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fc/e01e02c1011d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fc/e01e02c1011d00111358d2931fee7772 new file mode 100644 index 00000000..440ae8b1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fc/e01e02c1011d00111358d2931fee7772 @@ -0,0 +1,81 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := cs-rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/subdir.mk +-include lib/stdperiphlib/CMSIS/CM3/CoreSupport/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +SECONDARY_FLASH += \ +demoprog_olimex_stm32p103.hex \ + +SECONDARY_LIST += \ +demoprog_olimex_stm32p103.lst \ + +SECONDARY_SIZE += \ +demoprog_olimex_stm32p103.siz \ + + +# All Target +all: demoprog_olimex_stm32p103.elf secondary-outputs + +# Tool invocations +demoprog_olimex_stm32p103.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: ARM Sourcery Windows GCC C Linker' + arm-none-eabi-gcc -T"memory.x" -nostartfiles -Xlinker --gc-sections -L"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Prog" -Wl,-Map,demoprog_olimex_stm32p103.map -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "demoprog_olimex_stm32p103.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +demoprog_olimex_stm32p103.hex: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Flash Image' + arm-none-eabi-objcopy -O srec demoprog_olimex_stm32p103.elf demoprog_olimex_stm32p103.srec + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.lst: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Create Listing' + arm-none-eabi-objdump -h -S demoprog_olimex_stm32p103.elf > "demoprog_olimex_stm32p103.lst" + @echo 'Finished building: $@' + @echo ' ' + +demoprog_olimex_stm32p103.siz: demoprog_olimex_stm32p103.elf + @echo 'Invoking: ARM Sourcery Windows GNU Print Size' + arm-none-eabi-size --format=berkeley demoprog_olimex_stm32p103.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) demoprog_olimex_stm32p103.elf + -@echo ' ' + +secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fd/e03ee764f41c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fd/e03ee764f41c00111565e8bbe12141cd new file mode 100644 index 00000000..64056f7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fd/e03ee764f41c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/CoreSupport/core_cm3.c + +OBJS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.o + +C_DEPS += \ +./lib/CMSIS/CM3/CoreSupport/core_cm3.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/CoreSupport/%.o: ../lib/CMSIS/CM3/CoreSupport/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fe/b0878a000b1d00111358d2931fee7772 b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fe/b0878a000b1d00111358d2931fee7772 new file mode 100644 index 00000000..de29a441 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fe/b0878a000b1d00111358d2931fee7772 @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +SECONDARY_SIZE := +OBJS := +C_DEPS := +ASM_DEPS := +SECONDARY_FLASH := +EXECUTABLES := +SECONDARY_LIST := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src \ +lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x \ +lib/stdperiphlib/CMSIS/CM3/CoreSupport \ +lib \ + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a15507b5e91c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a15507b5e91c00111565e8bbe12141cd new file mode 100644 index 00000000..dc31e16c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a15507b5e91c00111565e8bbe12141cd @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ff/d077cf83f61c00111565e8bbe12141cd b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ff/d077cf83f61c00111565e8bbe12141cd new file mode 100644 index 00000000..bbeb6999 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ff/d077cf83f61c00111565e8bbe12141cd @@ -0,0 +1,24 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c + +OBJS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + +C_DEPS += \ +./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.d + + +# Each subdirectory must supply rules for building sources it contributes +lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.o: ../lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/%.c + @echo 'Building file: $<' + @echo 'Invoking: ARM Sourcery Windows GCC C Compiler' + arm-none-eabi-gcc -DGCC_ARMCM3 -DSTM32F10X_MD -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot" -I"D:\usr\feaser\software\OpenBLT\Target\Source" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32" -I"D:\usr\feaser\software\OpenBLT\Target\Source\ARMCM3_STM32\GCC" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\CoreSupport" -I"D:\usr\feaser\software\OpenBLT\Target\Demo\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\Boot\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x" -O1 -Wall -Wa,-adhlns="$@.lst" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/85/13/9/79/61/1e/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/85/13/9/79/61/1e/history.index new file mode 100644 index 0000000000000000000000000000000000000000..6c7c0aa2c9e02c47b3992f2eccf81e68ec656971 GIT binary patch literal 90 zcmZQ#U|?Wmu+(=+O)5>-&&f>EclHhT3Kvm0 literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/85/13/9/f0/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/85/13/9/f0/history.index new file mode 100644 index 0000000000000000000000000000000000000000..dbe5134123d328d36e14f3521c9c5b1016e94627 GIT binary patch literal 75 zcmZQ#U|?Wm(9(BFO)5>-&&f>EclHhT3-FU~J5N>0^x4DxmMHI5Gs@ijKmcXxKyFD^|=$t=>#%?7Hy c$XfJShCxs?^~LUoijHR)oXr0lGcqs$0Nf1~hyVZp literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/e5/f9/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/e5/f9/history.index new file mode 100644 index 0000000000000000000000000000000000000000..f38bdc16aafc25f30090a5381eee77bb4600a64c GIT binary patch literal 69 zcmZQ#U|?WmP|-FU~J5N>0^x4DxmMHI5Gs@ijKmFD^|=$t=>#&1PT}5MwO* ZEW;oun)+h*Lq*54haAoS8#6L6004=56q*14 literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/e5/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/e5/history.index new file mode 100644 index 0000000000000000000000000000000000000000..c4f172ff005a0cdde3cd2de06d567b3ce6e8c95f GIT binary patch literal 56 zcmZQ#U|?Wm5Z8A}O)5>-FU~J5N>0@;E=@|wEYi!(W?)pP{9gE3hCxs?^~LUoijHR| MJDUGDW@KOh0L#e|JOBUy literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/33/history.index new file mode 100644 index 0000000000000000000000000000000000000000..0c031e78d5f2f61f5e1d3edfc35ebabad6ee2ac7 GIT binary patch literal 182 zcmZQ#U|?Wj5Y%@`O)5>-&rixqO)e?c%gttByuc_@^jU^MP&D<$?uUwwXXBjA{~I#` zmBSPl=a&{Gr$Q7vFuyBAR-EDpRV)BCxwtebC9?=@@CPXl6oUm|2J=JJ<|byRre)@& PGB7^aE{LMk52_RZhYLHw literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/85/13/9/79/61/1e/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/85/13/9/79/61/1e/history.index new file mode 100644 index 0000000000000000000000000000000000000000..a555734e7a80b5a325348f033f5097b58d70d61c GIT binary patch literal 424 zcmZQ#U|?WmFxOAY%+t@wOwxDu4fYHMlE(Tjsb!hTsllZM1^GoK`oSSU3Q>$p(un7&w$7 zi!bBNf~Ze1b3zussum9szZN}10cgHV@{-NR_s);zjEMz{Pl%5RLKeS~6$2J;xZ0STy*!)z-x%o533Fxae#s!j@5Fn9#V?efZ~g`p7fpS! z`=O%a*+bkAaRY~6Wys=-{@Q`n8`KFc_=2Q#0S!=rxS-c7=4gh>(l}rEt literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/85/13/9/f0/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/85/13/9/f0/history.index new file mode 100644 index 0000000000000000000000000000000000000000..1f6298a06bcfbfd5eef3d291001ace4c975f56b5 GIT binary patch literal 409 zcmZQ#U|?Wm(9loH%+t@wOwxDu4fYHMlE(VZ`9-P0r3D4~MJ4*hrAaB7MS8i}4Ez^( zdw(j)G6)Lh-DeEEd82)*M-GDtBLhP~O~_1S@q(Cau(-fk&r)RZZM<1v@r0`uPRQa< z)#4%MD8$WB0Gcn8ykzt7z4N0bVq(GK4J+ecQlOL)8 literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/f9/e7/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/f9/e7/history.index new file mode 100644 index 0000000000000000000000000000000000000000..caec3f9f0198ea3e2e2d6e42b5bbaeae4880decf GIT binary patch literal 311 zcmZQ#U|?WmP}5J!%+oK!sG=SRPaj%6@mWMEjZBs>UNd}US)L_EG#7g@XuD$Y=;9nJ?dM>yir zWchdHMZ3=?|2GDjbKp0(-7gu0czwJ#Sp0+h!RBv3anaNlyB{h#o^9cVhzGoQU4|^) z{MQbw-r+Fsf-gww`zviB<}AFMf-L?z(+Xm5qQ~3MNa|zDEx_Uh-^>;wi+e-G0VBq9 A4FCWD literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/f9/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/f9/history.index new file mode 100644 index 0000000000000000000000000000000000000000..9f8bf6534532ced662e8d227478f5376bef8ad5e GIT binary patch literal 307 zcmZQ#U|?WmP|{Dz%+oK!sG=SSa)j%6@mWMEiuC@2V7yelgPBL1#P7g;k+9h!+$+Dnk}e`D+JO yAE3sv;0u!af=XMkIK%TBDahh?GOfVk2R^vI{fwmEtK0%CzTlV1LS%7Es5k(W18}_n literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/7/e5/history.index new file mode 100644 index 0000000000000000000000000000000000000000..804bffcc318cf297788ea6954958d47723442c12 GIT binary patch literal 294 zcmZQ#U|?Wm5YNsy4##%wv8adh$#9I z6Cp~7-AV$XXe9VY0*#;vnwKKdKIkr@56EFSGBc@h&O17uJt-*(eb6~3CoVe<1<7_DA;!VbO`b0}1C*;ho+!^>>HU-+ zN!aUop4;MPyi2@c$-i&*_4Yq|oNPJZbWz@E@*L&)j)0SL(R$0u^I1RRYM<>`asHjM z<1e~5WaE*w&wYPu@_TlURMh=8|L5z(M#@uD6BmEx`5Ni#U}odqu^+1#H#X?vJb$!M zN9QfJawW&jzdviIT)pzGmFFgZE#=B<$J7ire?PvH^6<8Ow|RaCI5AN19qrMGPwJ>@ z3lIYdo6N^`t6i=heSF!4wObdq{mx5#vgBG{&p{@`tGp@A;MF6_ZDlP|Uj&L%-z$;&`55~WP~YzLOTIHy{qn9w)vtE3x`#gbkm3SYO}mkTN~rI` zqWT7470cv)v`VT_K{2Z!>TQ)HGy*Mi2}KZt2*lyTD1x#=1fT6_!|M=%I8%cn7=Zf| zrDhbt97K@FHlqmAaAyhARTM!V@aZR3WZ=yhi$M8Uj_&V)n|-#{m_`xYh5Hl6XHf** jaDRf{i0&^55lokAD1v#2AZ2bs5rn|7^3I0LyMg}$7V*la literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/e5/f9/e7/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/e5/f9/e7/history.index new file mode 100644 index 0000000000000000000000000000000000000000..dc7241a70cb16ba3c38bf8345ca06a98be85f72f GIT binary patch literal 115 zcmZQ#U|?WmP|`2XFD*(=)prc?b@nxm4-WA)Hqv)@cGfRTO)kkVD%MM8VE!O-dj1y~ w20_u(7rP%SI-ZrRu>Eh$$iT4R>iiUB@ze|}uy{fq*W1rX>SH>0-UF!z0ATefv;Y7A literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/properties.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Boot/.indexes/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..e091111c53647fff0e18e6540d1572ec1b36e123 GIT binary patch literal 450 zcmb`CJx{|h5I`?UB|0JzgqZjTr+hVpwMdLC`~qWN9gD;l*-k_LJx#+DR)(AIo$kE| z0HVw6W7r*;1Ki`_cpw*M9E2up$>=sf(p1I50i+vXGAgvN%d@;$f!hu64M|b|9&dLu zB>CYbhLoK~lARemp;Q4SJAykQgE`YH+mq3w6Tz^B;~&(q_b6PC+K%XXbdubRld*~? zkJOz|(dVeKtgEU#)OERdMz9|g_wS-7cv#9YFN>lntNJ<5vK*J?%B7w{FjoJ&MhuVJ imR@{a`j_@6WxV7wIZ_`|SW9mG|7JS6O5a?iz5D?MnTmV> literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/85/5e/13/9/79/61/1e/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/85/5e/13/9/79/61/1e/history.index new file mode 100644 index 0000000000000000000000000000000000000000..1dd74e63fedc1647a68f78fe3c4c5b84e965f3ef GIT binary patch literal 319 zcmZQ#U|?WmaMO25O)5>-&&f>EFD^+bNG-}N$N+JieSmL4Hw* zesBm7`5GI!85&gR7ndfbWESb=W;1XxaC!cJDZ?Nrn)+h*Lq*54kx4)P88b34C_HAo zg)Dw6|2tTGgC@gPWbqxFzJkRYm_!PZ#knmZ;u~sPta*+ke#+z}SbRZ{d?&K_z8BBI;vW>U!;r=6q2d6m+-&&f>EFD^+bNG-}N$N+JieSmh|JFF(c4WHkMn+;;-_*gT)sVGi^l{ z-?8Z{SiGTFtPojT$`T^J;COo+vUt~vPhj;MTclW!#jBy>2_-L+Um&^XiqtExdWREc iYn~&C-!gd#anE7JPGs@BFP?+NFR+(~A&c*WiUR-(wR=|p literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/85/5e/3f/e4/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/85/5e/3f/e4/history.index new file mode 100644 index 0000000000000000000000000000000000000000..3a70cf1d7017a1ea0c68088531829e585169d6a3 GIT binary patch literal 313 zcmZQ#U|?WmaL{*2O)5>-&&f>EFD^+bNG-}N$N+JILwt>m+zbsW;)6?40>HxYE=8GT zsYUw5MalZbrAaB7MS8i}3|s;S-2T6mVGtBeeX;wYqT^Zbq#yr`85tN1X8ym4EPguw zJ6L?fj=x)w#aC?l3KnmeC|HOr{@Vf~zJaGX4p}_=#V4@(11CjUkj43+;sraOB)>p% r&sM2dVD$mKMr)oUiJvlg2^L@QP^J@Eyx_%iusFl@j4)(zA*eV2p3s13 literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/33/history.index new file mode 100644 index 0000000000000000000000000000000000000000..2af5c5769eb646bbe1cbd2489a5c577d76039ccd GIT binary patch literal 1046 zcmZ|OO(?^09LMpWkwqTH@~liz9?Dj>+FE%i2N$Il2M5{aPnhO?mU7$Mp79pF{}%DZOHQn(bBSOC8cJwqI<-g>K(1w6ncNM?0^b z?PmL8=!Jg2u`Gq{2S-t%w=1LO5c5BG#Sx)5E$df;Os~>}g}#tkF~jzZa8T&p`teS- ze}rf!*?=%?9OC*0EZi@_ej6fi0f9d$6%o8!DFL5A-~$5NKLks@>Awk%N)f>}5cJ$X zAc8ZIK&L|lVKpU~PaqJF>fIYf1dk$txC5uv?J#q62cGK^gm7x4J5WtVFWGzQ282NV z(Bajtp912z-&&f>EFD^+bNG-}N$N+JieSm zL4Hw*esBm7`5GI!85&gR7ndfbWESb=W-~BO5Itl6N`^sDH1);qhl-A8GynejXUxdJ F0091OBuM}O literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/85/5e/13/9/f0/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/85/5e/13/9/f0/history.index new file mode 100644 index 0000000000000000000000000000000000000000..20650a19212b2b225afe253609617df012a48920 GIT binary patch literal 92 zcmZQ#U|?Wmu+~q?%+q&CO)5>-&&f>EFD^+bNG-}N$N+JieSn+a literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/85/5e/3f/e4/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/85/5e/3f/e4/history.index new file mode 100644 index 0000000000000000000000000000000000000000..d78516606ddce8ceefe6dc3094be0f743b38515a GIT binary patch literal 101 zcmZQ#U|?WmaM4f7%+q&CO)5>-&&f>EFD^+bNG-}N$N+JILwt>m+zbsW;)6?40>HxY zE=8GTsYUw5MalZbrAaB7MS8i}42%m-pR|7^!yqV{`eOG(MaQ#Ve}DZmW@KOh0C-F! ADF6Tf literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/33/history.index new file mode 100644 index 0000000000000000000000000000000000000000..cc2acf4324a1aab7b166261aed682e7f817c9acf GIT binary patch literal 53 zcmZQ#U|?Wm5YbP{%+q&CO)5>-FD^|=$t=>#&1PWSAaKvo$i*i&}vZ)3WuvUOe#f!TaOS^SoaGA%sI@Orfrf zDbW=&h6)X<)$7=z|Cgf*)p3>oD`sR`lTNKw8CkYmU%{v{{6`^9kjKZJXAH(djZVL} z^bAShN99aK?;rv}*(Z*2dg}5lx0EDu2yy=vcVS_FrOGZy9nqy0$9?5I!$G#Ht7J6sL z{8b+6Q;S{TcICn`>>;8xkCi544^&J*FFlkm#GYjx2WJPY1bc5ab$9!mF9hw)52H>_ zITx_Ud&Xc+oMzdBy}F6Iw{P)1cEg=Fw2wV)#~vzu4es0$Q-!^I@+J7#T&E2C$qUqp z^7B6I!AqmiH&ow<#xCg?0r%D`e*~ldsw*D`FKF57#2zl9&g!ktu-oc~pm+1qnz6TS z8vwVPhEuQ$+xx*Sb%H(EHL29o=hJp#Klrl;`gD_gH3+>^;-b!9yynBsednOP+L4ES z{qN`C?DxrJ><`+hr*~(@V;>Yfp}k_GnTz&DTzU-dJyFYG&s}%~K6bs$8;JTC4fUE` zSu@y|y{*tYkGvScet>-lZrQ(5guN@8dO_#zTu&aDV(c=R7eKMRBNXrb1WG z=yerLgGtL)8FlR5zdwa?)fQFso5d6wj8&>emNghnOhaRZR%cvaS4(BmZRO*FREo!| zf6r0A9zQnCt)s*oit-zB?qW}B)e~<`zKosAs=*bpO)Y8BIZG?MZ$BFBDw{J9XI*VI z*n7g|(DPPEcl_rxadY5JG4_ssPV*0@Bt_@*cY4n(pFUu;rF@KJMeo#zy<-cItA_&M zA&K___T9dB#HTOCVwZ*Af}3j(2NKa7mxQ=uXkZw7;+hxGJ5~mdC!oHp#s_{=IaP#x zt&q6&vos$&U+#szpm$FS_AA|E;2QcWh5gwf;{Mbx;rVEhu=uuIDarhqYgdUENIFpZhHb`^Fznp*QDQ z1lYIUa)O6`t7hh*ceNXyfGfT(c3@vEB(52--N8P1;xY82+m#owJCjGitr>0!_VnIi z;y?K!?4}ap1)1BHVVBJgLQj{-BJt=>g^xH}bSjKp{IVZz%@%I^RYkd zC9V*aW?-Ka-hh6ee4&Ml_A*DWgNN=PVX*6`u7QtIeW5ti=W2Wa_pYs4suVnXHyK?TiIj*-w@oNhCSHVPWA?OO>j`}jwkN# Mi#V`X`_4lD2SkR=q|%K!VOt(PzFAs`P3T|< zA(Wa@ImD#!fOIe;#EDFEis@9QVYYM_#;7kV(iNCJuNTkd`{U2^JZ~5wL_ks*leL5? zvYHrsnVBu*tgPk#BTJvDkZWbq3PV)yqG8jgzzt9z1Y817f~PC*NT0mG#}iUUREjInscb2?fFQ5%lUKL z?ufZ#!+s)^2fg~5A_sd-G<65@X|W&Nc5$v<6ty)!HrIPM?rS+$Aqs3Nw(fK=V^e#P zM-ME48-r~RuuG>G!O2kb4(wkxK7c!~+m|BIoFNr;>0pB!d+_Ki^plpA+j~&2vQ2}# zgr84h|C2zy=S_+VdmzILz1nj@g#A?86gZpRO0aiVQTHb=ha%8kT@-Z^=wHRY{Am*A zNPny^VK+2US7(pKOQi;85W*pp~-l4%xu2Lud#pBpFevU!! zRMttb$363a^P)4~ccXvZEFA?m%3@vEg^AQzLF-HGk80o2dzv#IVy`_g4DOmANWmV_ z>82jND+zn{Y3jQ2%p=&7*81suXY!^H-5EbkolmF=yca#Dr8 zzLUC<)61~GO6-Q7U5IQ9M|2boJQ zI6;WXlwZ@bFE6^j=rR;XLx`dhR-p%XR1tp-n1t@DD8??VYi;#somUcGA3+cbE z;0;Nkui1-mk17Ruf1E*F5or-XpZRr0XA|4YvCk?n4u(87)@a$c-?5H&il$8lPvCu< zR_xU0*(h}RiG_HA${BjP{R(@Vx!vjkcFa8D>WM84^nkEa+%H(3y4^u9m7WmawxvQ( zj3BNoNK1mw$}-|U=Dm~+eOYC|&i`0M&<|UQ>&x%$Zs2aK7x8Cr%^h^1RgZTVnJzcb z=SPTBwwH701H;F-4{fMefS$oW!mjLzX@PDw>9DJr>nYG>O~m!>Pw~+6-wtrEI8$<< z7ccH(rv!N~uHawO)qB{5MQknsM!_hy53#f>$N#!&@cV9*!v%hJm}$b8sf=* PQPAr$iSws&ga7j%6+ASW literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/history.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/7/history.index new file mode 100644 index 0000000000000000000000000000000000000000..761535d2fdbd9976706b1cd0a25957296a5f9adc GIT binary patch literal 3918 zcmZwKc}&x17{KwL3iARi9*N*pz^MV1dTh?gQMQQ#kJY%SQwx>L6$GlNC{wJ?*@+ue z6vU}p73KwE1#bq{q2hFCp)g?){K+)RAr`!GjJfxDn>3z zao?;7VO?IbVZHS2IYYy93d@RrT0Dq%m2P)5?qwZHHZR=ybUx`4=$idvAns>*7jCY1 zb$WaLfQ6MiN3ARpX4W>>O#*|I2C z+%M-;upaQTK)}5&8M?WqrK1nJH`xig_(fSG?urI8J4eXq{TJ@Vd!U;Sy||5gdgd)Q zFMSwo#9b}F$-3dq#Pzs0SN+cVCFfs0!F@v#baQ*#`?yCvzrp5J(rkC!Lkh05E}mW3 z)*JnO>wR#q%7ZR{ zq?~}e{n&h%FCDzw9^LErO)h+o{Z?<>mp2||-4uMnYKP_nBcQ9shup!vZ`%Z&6PnjZaqp9#!TQPOMSpff z^L0I;i^IEL!hN-67n>LQF~AbySFa3@Oc);FVdedRFmvJsLRbm!iYg@`EY$@Fv)1h=gdHsg z!t}K}2w}S_fiU?NEg>xSHBe<noJ0D9}R>_~c5cYHfbXnn5Lf9@x=<=Vl31MsQ0aYsTK?5eER~B^b zt3pCpSq2cMc|4O4w!jYv(?s3>3ZK(p0ji`e8HBK}*Fl$+-yno3p8;WJV-g`O`y>!1 z^Y$Txy^aH_3{{;MF(omc(9OkKLYO552$S`f5yGAf2Ev5aJVIDpE>I=TcsUlIUlR;n zTkS&#+tdbBnWlLX!nRdHHym3=2vb)BVfu^%gs{agfhyDU(}b|1TgQ*6p5gdJH6glWST5yC=`169^x9}~jdIbl-qp$QYVy^<5=1ca>)i%_p* zf~m6nh+s?k5++f45W#kE!K9 zg4J`u#1l0{uv9LX=rWE7rsINX_RJxIHF3cVg*%8~0elIQ-YqABwc7;K9U+2caKRJ~ zkBMMYxL}%*MMSU{Tric(JR+FF9|TjmH4?#``4T2M`~wlJfD0!5)=UKZjtgdr*+>Md z;DSk;PG}qbHVh_1+s)) z;)2OqV~Aj)O|Z3kBG?5km}%XIM6gsYnAmih2zHzcX3l6Pf(5yQU}8rX5$q$rgvou3 zM6lajFwL+~B3LpPObiMpf(3BFBzs$kV8?8N!4ei979APBiY;M%gpvqCnBzPA9l6(+ z5SGs0g;HHAp~}`(4;u(QWj2!97m>fzigG8m4@&CJPJcX9a2^!-sOX+sK>2{gzO0Lt si%VNjuNc|+&wuYlNyL+#O{gD~{LQ+X?wT6+bl$ZA7JuBcIy>0>znadg761SM literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/85/5e/3f/de/properties.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/85/5e/3f/de/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..74c113218bbbce519f34b9493424a8309c58af7e GIT binary patch literal 299 zcmbVHOAdlC5FI>#cklwO!ot13oe2T=1ltiN0ZOKWk=skbgxm0Qv2j#FyRnRpesRnJ!LDPh?G<(JgtSYKSJU<4U1vsQ0J_Qq&1@S2l{VA}>6u z480rJ;MtNm&OS7(7o4)2T4jXIcaX6X!f>{z<06H_&pW-eN&E;m24Av-$B>dx7$;IR?6O9wCdnOoNC!^ygeh7JoANJXn3gqtEM+#hY!;fyEu1W>h1K$6PuC7C-PK z+yz;DK{-TR!MMx}S$yWF(_r-r{u(GDi-+W%gqUBjcRweRzm{u2#0yS2ZABK}*l_}^ m-XQDT9At4T@nc}|4d>Erk;SuD9tDdZ$XKR>EH2^+5eESDF{gh3 literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/85/properties.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Prog/.indexes/85/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..9e476c3d525fb1431b55a95f8c54576384a1f866 GIT binary patch literal 135 zcmYj}!3~2j5CqQ@fRqx_!11JjDF28C5ZEWQlJTMQ@u2&Nz$4FD%}yYqK#wkC?y4u~ zxT1g~g@$^yg(YTeRd@%ZxLBDon=Ghq2MgP6~$pIls$SX2V^4C4k3_wv^=41%JmFLpmvbUb_X z$>n<>&oHp-C*|jZl&}jdPqb%3vNybJI>a2tbMnaIGcHU4i*GpJvV##x{qx$%VDSdl zr!C0h&y**D#S82t1CYfh?3)NNf5jpPWbyf0ZD8>aN=Y^Uflh{n|C9dXFem3GX66B% z%&nj(BE^T~gdFiFV66vs243Vv5Q%6M2KkasZY1?Sxsa&15Z9A|97Xq6O$DnLV7PG;+3N*R zuM4b=K=Jw+-A1tb3#FYq{~-m*%!(q2z3lp>kcj3GSkd``6Uhn8O{>954!pmrhn(6X zUiN{-Cp3M($bh6?Pah)w;PAw)$m0LrcY@V_SiY7YSv>U=M7$vBIVZCCy22)i)6ze@ zLU!`E^$@Qlcx0SK7T=%`5oci2&q+-ICD{pmb8O!sCD~UmMIa_}>6fJ@m*f|Law$u} zV-?}=NUDaB14Lez8ae1a_Q-?~$5QQfJ(Xv{tkSIc2Exf?w4?(ytaEVqdFW}l!$J)e>Y^OhOPtp{rD(X$M zm$r|Ozp>9a0Dzw`j=ZYKVgW%2kH$(QUaHy=HVT#YWHl?%l2p#yHNKNGjpg(rlsEQ$ zI}N}3@gHkyvVIMByGC62&Wtu&aN0}ZJSvEZ{^X!Vf#XcL^UQkW5FBkXie|yKcWTkHXLpc$$3;!W!l884!!K{ZpPYtJ=2^urT?In-$o2z z9KvZEN(on3Z?lOtlY|8+S$H_f@6#?f0ZjG;OC@{(r%4*ez2IU`u!1l@u(XDgBu_(_ z>=Jfez>OuiWZbI-O^u!_*;wY4(J=icwZ=JQwnC{J?3=E=jiu7UEFDrgM?tejV)BqZ z<#C+HS;rZ|xE7{*V->-5S2-qGn&w%OCXZQskKJOgn>g}bY5D&-Lb%zlrego7ul~1C kj++Hp5`Q_2sgWYls!9UNRwee)Sfp`ub`U%Y3k&ZFbvjiH zs3+a<|2W+b074Man#?w8bsbr!dL-R9qsWWpJbt*ndEewttq=BQLHZ3T(w+3(-8_C7 zV;xK00KmkrpWtx^*IuP}w_4y~=W7{XOqmQ0$VRjfuUJqkhh- v(rGSqg*AVRvZB+RjLFuZZ*CTh5HG(BJpO4vBddjYp&dr=Xa8EJWge#+ww)aH literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 00000000..6b2aaa76 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/10.tree b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/10.tree new file mode 100644 index 0000000000000000000000000000000000000000..6c21cdf8088c274f5a43f059a3b9a80e26480883 GIT binary patch literal 21996 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 literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000000000000000000000000000000000000..c9eb8e7e6f6552a6b5587a6096f95eca7b86a618 GIT binary patch literal 771 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsg@^UG=6=f>8q$VpE7%3PTS{WHw z85t`$yM`zj85kP!awX@aCKkD*=9DDH=NF~xr6%WO78IxIC8w0=CFd8V+LjcR0u8~T zDkU|kG+nPW6RIi&WQ=P?L1s~6NoIZ?b^{HKjf^Zz&5ewV4NWWwm`vCOMIg6=+?ke` zQ;gf8C8>$IddX$QMEEJUGN&?6uOzWJyBOg!eZ7*R)KptT175BJ5x+l!gFEnZPxbEd iV-7S8e*E5ohd)#qZ6W}_8_0?Q{6?Zh0aP)bH~;{e6cMoi literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.codan.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 00000000..57632439 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,66 @@ +#Fri Dec 02 15:00:29 CET 2011 +org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error +org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning +org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning +org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={} +org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error +org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning +org.eclipse.cdt.codan.checkers.errnoreturn.params={implicit\=>false} +org.eclipse.cdt.codan.checkers.errreturnvalue.params={} +org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error +org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={} +org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning +org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={no_break_comment\=>"no break",last_case_param\=>true,empty_case_param\=>false} +org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.checkers.noreturn=Error +org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning +org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.checkers.errreturnvalue=Error +org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error +org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={} +org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={unknown\=>false,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={} +org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={} +org.eclipse.cdt.codan.checkers.errnoreturn=Warning +org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={macro\=>true} +org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error +org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error +org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error +org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning +org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning +org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error +org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={macro\=>true} +org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning +eclipse.preferences.version=1 +org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error +org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning +org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={else\=>false,afterelse\=>false} +org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info +org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error +org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={paramNot\=>false} +org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={macro\=>true,exceptions\=>("@(\#)","$Id")} +org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error +org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error +org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning +org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning +org.eclipse.cdt.codan.checkers.noreturn.params={implicit\=>false} diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 00000000..663a2141 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,4 @@ +#Fri Dec 02 15:00:27 CET 2011 +macros/workspace=\r\n\r\n +org.eclipse.cdt.core.showSourceRootsAtTopLevelOfProject=true +eclipse.preferences.version=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-Boot.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-Boot.prefs new file mode 100644 index 00000000..a2059002 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-Boot.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 15:04:30 CET 2011 +eclipse.preferences.version=1 +indexer/preferenceScope=0 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-Prog.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-Prog.prefs new file mode 100644 index 00000000..13a6205b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-Prog.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 14:06:57 CET 2011 +eclipse.preferences.version=1 +indexer/preferenceScope=0 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs new file mode 100644 index 00000000..36d08aeb --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 14:20:22 CET 2011 +eclipse.preferences.version=1 +org.eclipse.cdt.debug.core.cDebug.default_source_containers=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.make.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.make.core.prefs new file mode 100644 index 00000000..4c7e4c9e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.make.core.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 14:10:14 CET 2011 +org.eclipse.cdt.make.core.scanner.discovery.console.enabled=false +eclipse.preferences.version=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs new file mode 100644 index 00000000..f3d88dbe --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.managedbuilder.core.prefs @@ -0,0 +1,6 @@ +#Fri Dec 02 21:20:18 CET 2011 +eclipse.preferences.version=1 +properties/Boot.null.2099644599/cdt.managedbuild.toolchain.gnu.cross.base.704426003=\#\r\n\#Fri Dec 02 15\:01\:18 CET 2011\r\ncdt.managedbuild.tool.gnu.cross.c.compiler.1659811929\=\\\#\\r\\n\\\#Fri Dec 02 15\\\:01\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.assembler.1747933774\=\\\#\\r\\n\\\#Fri Dec 02 15\\\:01\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.toolchain.gnu.cross.base.19286403\=\\\#\\r\\n\\\#Fri Dec 02 15\\\:01\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.cpp.compiler.897271491\=\\\#\\r\\n\\\#Fri Dec 02 15\\\:01\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.toolchain.gnu.cross.base.704426003\=\\\#\\r\\n\\\#Fri Dec 02 14\\\:06\\\:54 CET 2011\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.cpp.linker.1945131682\=\\\#\\r\\n\\\#Fri Dec 02 15\\\:01\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.c.linker.561103820\=\\\#\\r\\n\\\#Fri Dec 02 15\\\:01\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.archiver.1329719800\=\\\#\\r\\n\\\#Fri Dec 02 15\\\:01\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\n +properties/Prog.org.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.1995384738/org.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.debug.1639800803=\#\r\n\#Fri Dec 02 21\:20\:18 CET 2011\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.cpp.linker.debug.1652107540\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.printsize.debug.1650210210\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.toolchain.debug.1029814416\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.c.linker.debug.1709347650\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.assembler.debug.1401723031\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.c.compiler.debug.638372325\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.archiver.base.1871513771\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.cpp.compiler.debug.1839723576\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.debug.1639800803\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:14\\\:39 CET 2011\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.createflash.debug.1948855455\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.createlisting.debug.1416805565\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\n +properties/Prog.null.364757599/cdt.managedbuild.toolchain.gnu.cross.base.1931562967=\#\r\n\#Fri Dec 02 13\:24\:18 CET 2011\r\ncdt.managedbuild.tool.gnu.cross.archiver.1895881695\=\\\#\\r\\n\\\#Fri Dec 02 13\\\:24\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.cpp.linker.870210068\=\\\#\\r\\n\\\#Fri Dec 02 13\\\:24\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.c.compiler.602729988\=\\\#\\r\\n\\\#Fri Dec 02 13\\\:24\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.toolchain.gnu.cross.base.1789339306\=\\\#\\r\\n\\\#Fri Dec 02 13\\\:24\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.c.linker.1062578263\=\\\#\\r\\n\\\#Fri Dec 02 13\\\:24\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.toolchain.gnu.cross.base.1931562967\=\\\#\\r\\n\\\#Fri Dec 02 13\\\:22\\\:12 CET 2011\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.assembler.1908346833\=\\\#\\r\\n\\\#Fri Dec 02 13\\\:24\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\ncdt.managedbuild.tool.gnu.cross.cpp.compiler.1209824354\=\\\#\\r\\n\\\#Fri Dec 02 13\\\:24\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\n +properties/Boot.org.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.672893664/org.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.debug.364435663=\#\r\n\#Fri Dec 02 21\:20\:18 CET 2011\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.c.compiler.debug.737947540\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.createlisting.debug.2013116877\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.createflash.debug.922950910\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.cpp.linker.debug.1487118424\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.printsize.debug.778379542\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.c.linker.debug.1346908913\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.toolchain.debug.248792117\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.cpp.linker.debug.1933182557\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.createflash.debug.1775648822\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.cpp.compiler.debug.1326845546\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.archiver.base.1580685788\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.toolchain.debug.75976766\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.printsize.debug.317334834\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.createlisting.debug.1304542712\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.c.linker.debug.925789995\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.assembler.debug.415209124\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.cpp.linker.debug.556602464\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.debug.364435663\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:17\\\:20 CET 2011\\r\\nrcState\\\=0\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.createflash.debug.111331378\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.cpp.compiler.debug.1810400386\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.createlisting.debug.1224055994\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.archiver.base.45873621\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.c.compiler.debug.574737311\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.printsize.debug.951948194\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.assembler.debug.1404694970\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.cpp.compiler.debug.2023518672\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.c.linker.debug.1445907369\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.assembler.debug.924834461\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.toolchain.debug.497673922\=\\\#\\r\\n\\\#Fri Dec 02 21\\\:20\\\:18 CET 2011\\r\\nrebuildState\\\=false\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.elf.c.compiler.debug.1220292484\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\norg.eclipse.cdt.cross.arm.gnu.sourcery.windows.archiver.base.424416054\=\\\#\\r\\n\\\#Fri Dec 02 16\\\:44\\\:18 CET 2011\\r\\nrebuildState\\\=true\\r\\n\r\n diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.mylyn.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.mylyn.ui.prefs new file mode 100644 index 00000000..cb7ffa00 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.mylyn.ui.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 13:57:22 CET 2011 +eclipse.preferences.version=1 +org.eclipse.mylyn.cdt.ui.run.count.3_3_0=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs new file mode 100644 index 00000000..647a7772 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs @@ -0,0 +1,10 @@ +#Fri Dec 02 15:00:26 CET 2011 +useQuickDiffPrefPage=true +useAnnotationsPrefPage=true +sourceHoverBackgroundColor=255,255,225 +org.eclipse.cdt.ui.formatterprofiles=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n +spelling_locale_initialized=true +eclipse.preferences.version=1 +org.eclipse.cdt.ui.formatterprofiles.version=1 +scalability.detect=false +content_assist_disabled_computers=org.eclipse.cdt.ui.parserProposalCategory\u0000org.eclipse.cdt.ui.textProposalCategory\u0000 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prj-Prog.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prj-Prog.prefs new file mode 100644 index 00000000..49dbff16 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prj-Prog.prefs @@ -0,0 +1,4 @@ +#Fri Dec 02 14:10:14 CET 2011 +buildConsole/logLocation=D\:\\usr\\feaser\\software\\OpenBLT\\Target\\Demo\\ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse\\.metadata\\.plugins\\org.eclipse.cdt.ui\\Prog.build.log +eclipse.preferences.version=1 +buildConsole/keepLog=true diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..35a9384a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +#Fri Dec 02 21:14:03 CET 2011 +version=1 +eclipse.preferences.version=1 +description.autobuilding=false diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs new file mode 100644 index 00000000..85714a0b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs @@ -0,0 +1,6 @@ +#Fri Dec 02 14:25:29 CET 2011 +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.applicationLaunchType=org.eclipse.cdt.dsf.gdb.launch.localCLaunch,debug;org.eclipse.cdt.cdi.launch.localCLaunch,run +eclipse.preferences.version=1 +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.attachLaunchType=org.eclipse.cdt.dsf.gdb.launch.attachCLaunch,debug +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.remoteApplicationLaunchType=org.eclipse.rse.remotecdt.dsf.debug,debug +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.postmortemLaunchType=org.eclipse.cdt.dsf.gdb.launch.coreCLaunch,debug diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs new file mode 100644 index 00000000..7f774d7f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs @@ -0,0 +1,5 @@ +#Fri Dec 02 15:04:30 CET 2011 +eclipse.preferences.version=1 +preferredTargets=org.eclipse.cdt.debug.ui.toggleCBreakpointTarget\:org.eclipse.cdt.debug.ui.toggleCBreakpointTarget| +org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n +StringVariablePreferencePage=124,104,103,82, diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs new file mode 100644 index 00000000..599c6c83 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 13:18:15 CET 2011 +org.eclipse.epp.usagedata.recording.last-upload=1322828295561 +eclipse.preferences.version=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs new file mode 100644 index 00000000..45c0eefd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 13:18:06 CET 2011 +eclipse.preferences.version=1 +mylyn.attention.migrated=true diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs new file mode 100644 index 00000000..0001f0f7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 13:18:06 CET 2011 +org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true +eclipse.preferences.version=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs new file mode 100644 index 00000000..c286c938 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 14:00:16 CET 2011 +eclipse.preferences.version=1 +org.eclipse.rse.systemtype.local.systemType.defaultUserId=voorburg diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs new file mode 100644 index 00000000..c20f62bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 14:00:17 CET 2011 +eclipse.preferences.version=1 +org.eclipse.rse.preferences.order.connections=voorburg-PC.Local diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs new file mode 100644 index 00000000..cf05184d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 16:06:28 CET 2011 +org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none +eclipse.preferences.version=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs new file mode 100644 index 00000000..69da5e00 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 13:57:22 CET 2011 +pref_first_startup=false +eclipse.preferences.version=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs new file mode 100644 index 00000000..c8e156a9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 13:57:22 CET 2011 +eclipse.preferences.version=1 +org.eclipse.team.ui.first_time=false diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.tm.terminal.view.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.tm.terminal.view.prefs new file mode 100644 index 00000000..749231a6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.tm.terminal.view.prefs @@ -0,0 +1,9 @@ +#Fri Dec 02 18:53:28 CET 2011 +Connectors.org.eclipse.tm.internal.terminal.serial.SerialConnector.SerialPort=COM6 +Connectors.org.eclipse.tm.internal.terminal.serial.SerialConnector.StopBits=1 +Connectors.org.eclipse.tm.internal.terminal.serial.SerialConnector.DataBits=8 +eclipse.preferences.version=1 +Connectors.ConnectionType=org.eclipse.tm.internal.terminal.serial.SerialConnector +Connectors.org.eclipse.tm.internal.terminal.serial.SerialConnector.BaudRate=57600 +Connectors.org.eclipse.tm.internal.terminal.serial.SerialConnector.Parity=None +Connectors.org.eclipse.tm.internal.terminal.serial.SerialConnector.FlowControl=None diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs new file mode 100644 index 00000000..ed705eef --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs @@ -0,0 +1,5 @@ +#Fri Dec 02 15:00:56 CET 2011 +printMarginColumn=89 +printMargin=true +eclipse.preferences.version=1 +overviewRuler_migration=migrated_3.1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs new file mode 100644 index 00000000..d84959a9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -0,0 +1,10 @@ +#Fri Dec 02 18:53:28 CET 2011 +SAVE_ALL_BEFORE_BUILD=true +PROBLEMS_FILTERS_MIGRATE=true +quickStart=false +tipsAndTricks=true +eclipse.preferences.version=1 +IMPORT_FILES_AND_FOLDERS_MODE=prompt +platformState=1322826959835 +IMPORT_FILES_AND_FOLDERS_VIRTUAL_FOLDER_MODE=prompt +EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs new file mode 100644 index 00000000..6f586a66 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs @@ -0,0 +1,3 @@ +#Fri Dec 02 13:18:09 CET 2011 +eclipse.preferences.version=1 +showIntro=false diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs new file mode 100644 index 00000000..066e5a26 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs @@ -0,0 +1,6 @@ +#Fri Dec 02 21:20:23 CET 2011 +resourcetypes=\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n +RUN_IN_BACKGROUND=true +eclipse.preferences.version=1 +editors=\r\n\r\n\r\n\r\n\r\n +ENABLED_DECORATORS=org.eclipse.cdt.ui.indexedFiles\:false,org.eclipse.cdt.managedbuilder.ui.excludedFile\:true,org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator\:true,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.rse.core.virtualobject.decorator\:true,org.eclipse.rse.core.binary.executable.decorator\:true,org.eclipse.rse.core.script.executable.decorator\:true,org.eclipse.rse.core.java.executable.decorator\:true,org.eclipse.rse.core.library.decorator\:true,org.eclipse.rse.core.link.decorator\:true,org.eclipse.rse.subsystems.error.decorator\:true,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.VirtualResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,org.eclipse.ui.ResourceFilterDecorator\:false, diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Microboot Download.launch b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Microboot Download.launch new file mode 100644 index 00000000..27230a1c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/Microboot Download.launch @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Flash.launch b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Flash.launch new file mode 100644 index 00000000..323bc27a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.core/.launches/OpenOCD Flash.launch @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml new file mode 100644 index 00000000..da411991 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml @@ -0,0 +1,35 @@ + +

    +
    + + + +
    +
    + + + +
    +
    + + + + + +
    +
    + + + + + + +
    +
    + + + + + +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml new file mode 100644 index 00000000..7c1fbfe7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload0.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload0.csv new file mode 100644 index 00000000..c78fff60 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload0.csv @@ -0,0 +1,255 @@ +what,kind,bundleId,bundleVersion,description,time +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322828294376 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322828294391 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322828294391 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322828294391 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322828294391 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322828294391 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322828294391 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322828294391 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322828294391 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322828294391 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322828294407 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322828294407 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322828294407 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322828294407 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322828294407 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322828294407 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322828294422 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322828294438 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322828294438 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322828294438 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322828294438 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322828294438 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322828294438 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322828294438 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322828294454 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322828294454 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322828294454 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322828294454 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322828294454 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322828294454 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322828294454 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322828294454 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322828294454 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322828294454 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322828294469 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322828294469 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322828294469 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322828294469 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322828294469 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322828294469 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322828294469 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322828294469 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322828294469 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322828294469 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322828294469 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322828294485 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322828294485 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322828294485 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322828294485 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322828294485 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322828294485 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322828294485 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322828294485 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322828294500 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322828294500 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322828294500 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322828294500 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322828294500 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322828294500 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322828294500 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322828294500 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322828294500 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322828294500 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322828294500 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322828294500 +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322828294500 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322828294500 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322828294516 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322828294516 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322828294516 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322828294516 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322828294516 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322828294516 +started,bundle,org.eclipse.ui.intro,3.4.100.v20110425,"org.eclipse.ui.intro",1322828294516 +started,bundle,org.eclipse.ui.intro.universal,3.2.500.v20110510,"org.eclipse.ui.intro.universal",1322828294516 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322828294516 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322828294516 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322828294516 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322828294516 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322828294516 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322828294532 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322828294532 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322828294532 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322828294532 +os,sysinfo,,,"win32",1322828294547 +arch,sysinfo,,,"x86",1322828294547 +ws,sysinfo,,,"win32",1322828294547 +locale,sysinfo,,,"de_DE",1322828294547 +processors,sysinfo,,,"2",1322828294547 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322828294547 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322828294547 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322828294547 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322828294547 +java.specification.version,sysinfo,,,"1.6",1322828294547 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322828294547 +java.version,sysinfo,,,"1.6.0_24",1322828294547 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322828294547 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322828294547 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322828294547 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322828294547 +java.vm.specification.version,sysinfo,,,"1.0",1322828294547 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322828294547 +java.vm.version,sysinfo,,,"19.1-b02",1322828294547 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322828294610 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322828294641 +closed,view,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.internal.introview",1322828294672 +opened,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322828298131 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322828298146 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAutomatically",1322828300736 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828307304 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828332123 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.views.showView",1322828332139 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.views.showView",1322828332139 +started,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322828354369 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322828354837 +started,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322828354931 +started,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322828355196 +started,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322828355321 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828355508 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322828404664 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322828404757 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828405896 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828408189 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828408205 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828408252 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828420435 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322828421574 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322828422385 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322828422385 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322828424866 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828440466 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828440715 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828442993 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828444959 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828466908 +started,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322828467173 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828467360 +started,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322828468811 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322828478935 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828478935 +started,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322828478967 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828480433 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828480542 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322828489887 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828489887 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828491150 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828491259 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828521274 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828533816 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828534939 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828534955 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828535017 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828547529 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322828548886 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322828554065 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828566561 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828566826 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828568635 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828584204 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828586518 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322828592838 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828592838 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828594117 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322828594211 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828602806 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828603571 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322828607205 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828607954 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828618905 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.save",1322828622587 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322828624974 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828625286 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828628421 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828650012 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828650901 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.save",1322828655784 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322828656267 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828656579 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828659107 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828669605 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828681110 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322828696757 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830635208 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830639120 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830641041 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830641734 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322830642295 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322830642296 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322830642297 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322830642298 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322830642298 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322830642298 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322830642319 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322830642337 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322830642349 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.search,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.search",1322830642363 +stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322830642380 +stopped,bundle,org.eclipse.cdt.dsf.ui,2.2.0.201109151620,"org.eclipse.cdt.dsf.ui",1322830642394 +stopped,bundle,org.eclipse.cdt.gdb.ui,7.0.0.201109151620,"org.eclipse.cdt.gdb.ui",1322830642400 +stopped,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322830642418 +stopped,bundle,org.eclipse.cdt.launch,7.0.0.201109151620,"org.eclipse.cdt.launch",1322830642434 +stopped,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322830642434 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.traditional,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.traditional",1322830642448 +stopped,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322830642465 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322830738989 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322830738995 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322830738997 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322830738999 +started,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322830738999 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322830739004 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322830739007 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322830739009 +started,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322830739009 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322830739010 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322830739010 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322830739012 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322830739014 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322830739017 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322830739017 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322830739019 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322830739021 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322830739023 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322830739024 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322830739025 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322830739062 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322830739066 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322830739067 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322830739069 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322830739069 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322830739070 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322830739071 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322830739073 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322830739075 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322830739075 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322830739077 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322830739078 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322830739079 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322830739079 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322830739080 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322830739081 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322830739082 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322830739084 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322830739084 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322830739085 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322830739086 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322830739087 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322830739088 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322830739089 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322830739090 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322830739091 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322830739092 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322830739092 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322830739093 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322830739094 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload1.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload1.csv new file mode 100644 index 00000000..012c1e3b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload1.csv @@ -0,0 +1,249 @@ +what,kind,bundleId,bundleVersion,description,time +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322830739105 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322830739107 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322830739108 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322830739109 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322830739110 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322830739110 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322830739112 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322830739113 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322830739114 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322830739115 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322830739116 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322830739117 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322830739117 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322830739118 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322830739119 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322830739121 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322830739123 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322830739124 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322830739125 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322830739127 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322830739127 +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322830739130 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322830739132 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322830739133 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322830739135 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322830739137 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322830739137 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322830739138 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322830739140 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322830739140 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322830739141 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322830739142 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322830739143 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322830739145 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322830739146 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322830739147 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322830739160 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322830739161 +os,sysinfo,,,"win32",1322830739167 +arch,sysinfo,,,"x86",1322830739167 +ws,sysinfo,,,"win32",1322830739167 +locale,sysinfo,,,"de_DE",1322830739167 +processors,sysinfo,,,"2",1322830739167 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322830739167 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322830739167 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322830739167 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830739167 +java.specification.version,sysinfo,,,"1.6",1322830739167 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830739167 +java.version,sysinfo,,,"1.6.0_24",1322830739167 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322830739167 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322830739167 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322830739167 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830739167 +java.vm.specification.version,sysinfo,,,"1.0",1322830739167 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830739167 +java.vm.version,sysinfo,,,"19.1-b02",1322830739167 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322830741593 +started,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322830746462 +started,bundle,org.eclipse.equinox.p2.ui,2.1.0.v20110601,"org.eclipse.equinox.p2.ui",1322830746516 +started,bundle,org.eclipse.equinox.p2.transport.ecf,1.0.0.v20110510,"org.eclipse.equinox.p2.transport.ecf",1322830748220 +started,bundle,org.eclipse.ecf.filetransfer,5.0.0.v20110531-2218,"org.eclipse.ecf.filetransfer",1322830748269 +started,bundle,org.eclipse.ecf.identity,3.1.100.v20110531-2218,"org.eclipse.ecf.identity",1322830748297 +started,bundle,org.eclipse.ecf,3.1.300.v20110531-2218,"org.eclipse.ecf",1322830748359 +started,bundle,org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer.httpclient",1322830748398 +started,bundle,org.eclipse.ecf.provider.filetransfer,3.2.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer",1322830748401 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830748695 +started,bundle,org.eclipse.equinox.p2.director,2.1.0.v20110504-1715,"org.eclipse.equinox.p2.director",1322830757729 +started,bundle,org.eclipse.equinox.p2.garbagecollector,1.0.200.v20110510,"org.eclipse.equinox.p2.garbagecollector",1322830757836 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.help.installationDialog",1322830757961 +started,bundle,org.eclipse.equinox.p2.touchpoint.eclipse,2.1.1.R37x_v20110815-0935,"org.eclipse.equinox.p2.touchpoint.eclipse",1322830761513 +started,bundle,org.eclipse.equinox.frameworkadmin,2.0.0.v20110502-1955,"org.eclipse.equinox.frameworkadmin",1322830761531 +started,bundle,org.eclipse.equinox.simpleconfigurator.manipulator,2.0.0.v20110502-1955,"org.eclipse.equinox.simpleconfigurator.manipulator",1322830761549 +started,bundle,org.eclipse.equinox.p2.artifact.repository,1.1.101.R37x_v20110714,"org.eclipse.equinox.p2.artifact.repository",1322830761574 +started,bundle,org.eclipse.equinox.p2.extensionlocation,1.2.100.v20110510,"org.eclipse.equinox.p2.extensionlocation",1322830761723 +started,bundle,org.eclipse.equinox.p2.publisher,1.2.0.v20110511,"org.eclipse.equinox.p2.publisher",1322830761770 +started,bundle,org.eclipse.equinox.frameworkadmin.equinox,1.0.300.v20110506,"org.eclipse.equinox.frameworkadmin.equinox",1322830761994 +started,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322830770199 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830770267 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322830770633 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.help.installationDialog",1322830771698 +executed,command,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.install",1322830771699 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322830771760 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322830771760 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322830771761 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322830771761 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322830771761 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322830771761 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322830771761 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322830771761 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322830771761 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.search,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.search",1322830771762 +stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322830771762 +stopped,bundle,org.eclipse.cdt.dsf.ui,2.2.0.201109151620,"org.eclipse.cdt.dsf.ui",1322830771762 +stopped,bundle,org.eclipse.cdt.gdb.ui,7.0.0.201109151620,"org.eclipse.cdt.gdb.ui",1322830771762 +stopped,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322830771762 +stopped,bundle,org.eclipse.cdt.launch,7.0.0.201109151620,"org.eclipse.cdt.launch",1322830771762 +stopped,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322830771762 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.traditional,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.traditional",1322830771763 +stopped,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322830771763 +stopped,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322830771764 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322830771764 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322830771765 +stopped,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322830771765 +stopped,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322830771765 +stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322830771765 +stopped,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322830771766 +stopped,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322830771767 +stopped,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322830771767 +stopped,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322830771768 +stopped,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322830771768 +stopped,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322830771778 +stopped,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322830771780 +stopped,bundle,org.eclipse.compare.win32,1.0.200.I20110510-0800,"org.eclipse.compare.win32",1322830771781 +stopped,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322830771781 +stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322830771785 +stopped,bundle,org.eclipse.rse.importexport,1.2.200.v201105021534,"org.eclipse.rse.importexport",1322830771785 +stopped,bundle,org.eclipse.rse.subsystems.shells.telnet,1.2.200.v201101042155,"org.eclipse.rse.subsystems.shells.telnet",1322830771785 +stopped,bundle,org.eclipse.rse.shells.ui,3.0.301.R33x_v201107181530,"org.eclipse.rse.shells.ui",1322830771785 +stopped,bundle,org.eclipse.rse.files.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.files.ui",1322830771786 +stopped,bundle,org.eclipse.rse.processes.ui,3.0.300.v201101042155,"org.eclipse.rse.processes.ui",1322830771786 +stopped,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322830771794 +stopped,bundle,org.eclipse.mylyn.commons.team,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.team",1322830771794 +stopped,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322830771795 +stopped,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322830771795 +stopped,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322830771796 +stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322830771797 +stopped,bundle,org.eclipse.mylyn.ide.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.ide.ui",1322830771797 +stopped,bundle,org.eclipse.mylyn.resources.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.resources.ui",1322830771797 +stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.tasks.ui",1322830771797 +stopped,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322830771798 +stopped,bundle,org.eclipse.mylyn.help.ui,3.6.1.v20110830-0100,"org.eclipse.mylyn.help.ui",1322830771798 +stopped,bundle,org.eclipse.mylyn.tasks.bugs,3.6.1.v20110825-0100,"org.eclipse.mylyn.tasks.bugs",1322830771798 +stopped,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322830771798 +stopped,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322830771800 +stopped,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322830771800 +stopped,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322830771800 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.transport,2.1.0.201109151620,"org.eclipse.cdt.debug.ui.memory.transport",1322830771801 +stopped,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322830771801 +stopped,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322830771802 +stopped,bundle,org.eclipse.mylyn.wikitext.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.ui",1322830771802 +stopped,bundle,org.eclipse.rse.subsystems.files.dstore,2.1.201.R33x_v201109141647,"org.eclipse.rse.subsystems.files.dstore",1322830771803 +stopped,bundle,org.eclipse.rse.subsystems.processes.dstore,2.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.dstore",1322830771803 +stopped,bundle,org.eclipse.rse.subsystems.shells.dstore,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.dstore",1322830771804 +stopped,bundle,org.eclipse.rse.connectorservice.dstore,3.1.200.v201103141607,"org.eclipse.rse.connectorservice.dstore",1322830771804 +stopped,bundle,org.eclipse.rse.subsystems.files.local,2.1.200.v201101042155,"org.eclipse.rse.subsystems.files.local",1322830771805 +stopped,bundle,org.eclipse.rse.subsystems.processes.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.local",1322830771805 +stopped,bundle,org.eclipse.rse.subsystems.shells.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.local",1322830771805 +stopped,bundle,org.eclipse.rse.connectorservice.local,2.1.300.v201101042155,"org.eclipse.rse.connectorservice.local",1322830771805 +stopped,bundle,org.eclipse.rse.subsystems.files.ssh,2.1.200.v201101042155,"org.eclipse.rse.subsystems.files.ssh",1322830771805 +stopped,bundle,org.eclipse.rse.subsystems.shells.ssh,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.ssh",1322830771806 +stopped,bundle,org.eclipse.rse.subsystems.terminals.ssh,1.0.100.v201101042155,"org.eclipse.rse.subsystems.terminals.ssh",1322830771807 +stopped,bundle,org.eclipse.rse.connectorservice.ssh,2.1.200.v201101042155,"org.eclipse.rse.connectorservice.ssh",1322830771807 +stopped,bundle,org.eclipse.rse.connectorservice.telnet,1.2.200.v201101042155,"org.eclipse.rse.connectorservice.telnet",1322830771807 +stopped,bundle,org.eclipse.rse.dstore.security,3.0.300.v201103141607,"org.eclipse.rse.dstore.security",1322830771807 +stopped,bundle,org.eclipse.rse.efs,2.1.300.v201101042155,"org.eclipse.rse.efs",1322830771807 +stopped,bundle,org.eclipse.rse.subsystems.files.ftp,2.1.301.R33x_v201107212114,"org.eclipse.rse.subsystems.files.ftp",1322830771807 +stopped,bundle,org.eclipse.rse.subsystems.shells.core,3.1.201.R33x_v201106281309,"org.eclipse.rse.subsystems.shells.core",1322830771807 +stopped,bundle,org.eclipse.rse.subsystems.files.core,3.2.101.R33x_v201107181530,"org.eclipse.rse.subsystems.files.core",1322830771808 +stopped,bundle,org.eclipse.rse.subsystems.processes.shell.linux,1.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.shell.linux",1322830771808 +stopped,bundle,org.eclipse.rse.subsystems.processes.core,3.1.200.v201101042155,"org.eclipse.rse.subsystems.processes.core",1322830771808 +stopped,bundle,org.eclipse.rse.terminals.ui,1.1.0.v201101042155,"org.eclipse.rse.terminals.ui",1322830771808 +stopped,bundle,org.eclipse.rse.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.ui",1322830771808 +stopped,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322830771809 +stopped,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322830771809 +stopped,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322830771810 +stopped,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322830771810 +stopped,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322830771810 +stopped,bundle,org.eclipse.rse.services.dstore,3.1.201.R33x_v201106291530,"org.eclipse.rse.services.dstore",1322830771810 +stopped,bundle,org.eclipse.dstore.core,3.3.1.R33x_v201107181530,"org.eclipse.dstore.core",1322830771810 +stopped,bundle,org.eclipse.dstore.extra,2.1.300.v201101042155,"org.eclipse.dstore.extra",1322830771810 +stopped,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322830771811 +stopped,bundle,org.eclipse.epp.usagedata.ui,1.3.1.R201106061540,"org.eclipse.epp.usagedata.ui",1322830771811 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322830792356 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322830792357 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322830792359 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322830792359 +started,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322830792359 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322830792360 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322830792360 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322830792360 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322830792360 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322830792360 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322830792361 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322830792361 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322830792361 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322830792361 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322830792361 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322830792361 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322830792363 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322830792363 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322830792363 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322830792363 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322830792364 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322830792364 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322830792364 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322830792364 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322830792365 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322830792366 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322830792366 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322830792366 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322830792366 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322830792366 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322830792366 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322830792366 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322830792366 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322830792366 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322830792367 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322830792368 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322830792369 +started,bundle,org.eclipse.equinox.p2.artifact.repository,1.1.101.R37x_v20110714,"org.eclipse.equinox.p2.artifact.repository",1322830792369 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322830792370 +started,bundle,org.eclipse.equinox.p2.director,2.1.0.v20110504-1715,"org.eclipse.equinox.p2.director",1322830792371 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322830792372 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322830792372 +started,bundle,org.eclipse.equinox.p2.extensionlocation,1.2.100.v20110510,"org.eclipse.equinox.p2.extensionlocation",1322830792373 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322830792374 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322830792374 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322830792375 +started,bundle,org.eclipse.equinox.p2.publisher,1.2.0.v20110511,"org.eclipse.equinox.p2.publisher",1322830792376 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322830792376 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322830792377 +started,bundle,org.eclipse.equinox.p2.touchpoint.eclipse,2.1.1.R37x_v20110815-0935,"org.eclipse.equinox.p2.touchpoint.eclipse",1322830792378 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322830792378 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322830792378 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322830792378 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322830792378 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322830792378 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322830792379 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322830792380 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322830792380 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322830792380 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322830792380 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322830792380 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322830792381 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322830792381 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322830792381 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322830792381 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322830792382 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322830792382 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322830792383 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322830792383 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322830792383 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322830792383 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322830792383 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322830792383 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322830792383 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322830792383 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload10.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload10.csv new file mode 100644 index 00000000..9d392166 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload10.csv @@ -0,0 +1,251 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841259002 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841259158 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841259314 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841259782 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841259938 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841260062 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841260218 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841260374 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841260530 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841260686 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841260842 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841261373 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841262168 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841263307 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322841265756 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841266006 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841266100 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841274867 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841276739 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841278970 +started,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322841280233 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841282729 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322841290280 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841291465 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322841296972 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841297284 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841297487 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841300529 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841300529 +started,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322841300576 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841303820 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322841307549 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841313508 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841314335 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841315333 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841318937 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841321573 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841323149 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841327252 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841327392 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841327532 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841327688 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841328188 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841331042 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841339841 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841340730 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322841343023 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841343366 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841345067 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841346830 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841349326 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841352446 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841355503 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322841358030 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841385408 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841390307 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841392319 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841394207 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841398247 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841400884 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841403504 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841405454 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841405595 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841405735 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841405860 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841406000 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841406141 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841406531 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841406796 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322841408450 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841416218 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841448230 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841448604 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841448744 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841448900 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841449166 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322841458635 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841480334 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841489538 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841489663 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841490740 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841501270 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841501410 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841513172 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841514920 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841516994 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841521191 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841523734 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841526058 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841526542 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322841528616 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841529100 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841529303 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841531424 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841532407 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841533078 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841534700 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841534841 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841534997 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841536947 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841539958 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841540098 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841540254 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841542828 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841544950 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841547134 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841549817 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322841550909 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841578521 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841586898 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841607896 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841608020 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841608176 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841608301 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841608442 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841608566 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841608816 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841609939 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841610080 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841616866 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841618987 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322841619237 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841640468 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841649672 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841655600 +activated,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322841656599 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322841657441 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841658502 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841661996 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841667363 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841667488 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841673618 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841678283 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841680763 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841681886 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841684429 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841699234 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841705099 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841710356 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841721604 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841774004 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841775845 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841777936 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841791274 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841865545 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841865748 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841869632 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841874890 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322841875451 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841876200 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841876637 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841878228 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841879788 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841880209 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841884889 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841890115 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841895513 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841897728 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841900926 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841901066 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841902720 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841903219 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841908398 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841911596 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841912002 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841912376 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841915933 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841923546 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841927493 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841929989 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841931830 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841934138 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841935870 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841943218 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841951049 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841953451 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841956072 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841960846 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841966150 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841969519 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322841972670 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841975510 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841977413 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841977834 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322841988302 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841996913 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841997053 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842012669 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842012794 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842019580 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842022325 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322842025040 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322842061200 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842061902 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842064383 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842067737 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842067877 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842068517 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842070529 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842073103 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842073119 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842073228 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842073368 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842073634 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842075100 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842075209 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842076660 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322842095130 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842100809 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842100934 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322842102462 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842103601 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322842113070 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842116846 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842117002 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322842120044 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842120590 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322842122072 +error,log,,,"Internal Error",1322842130839 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322842133116 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842133553 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842135316 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322842138374 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842152726 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842152866 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842159168 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842164722 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842180681 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842186531 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842187295 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842187592 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842188481 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842190322 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842196125 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842206967 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842207326 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842208230 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842315184 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842315777 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842317087 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842318772 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842318975 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842320410 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842325371 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842325527 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842326276 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842326432 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842326572 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842326884 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842327212 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload11.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload11.csv new file mode 100644 index 00000000..fd39edff --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload11.csv @@ -0,0 +1,251 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842360627 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842361469 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842361641 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842362655 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322842365322 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842374152 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842375540 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842380330 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842380486 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842380626 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842380766 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842380907 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842381032 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842381203 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842381328 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842381484 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842381624 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842381749 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842381905 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842382046 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842382857 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842382997 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842385166 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842398816 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842400563 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842400703 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842401405 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842402700 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842450077 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842450218 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842460014 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842460170 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842464726 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842469374 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842475458 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842489030 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842497189 +opened,view,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search.ui.views.SearchView",1322842499529 +activated,view,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search.ui.views.SearchView",1322842499592 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842499966 +executed,command,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search.ui.openSearchDialog",1322842499997 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842503429 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842503616 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842508265 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842510262 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842510262 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842513413 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842516284 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842522165 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322842522695 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842528935 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842529044 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842543209 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842543209 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322842544317 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842546236 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322842547624 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842549605 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842562007 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842563801 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842577919 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842597357 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842608558 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842621381 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842626513 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842640912 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842646606 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322842647152 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842647760 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322842658821 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842659585 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842660802 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842660927 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842674842 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842675747 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322842682954 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842683625 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842686121 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842691440 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842692782 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842693734 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842695980 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842696105 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842702080 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842707836 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842714045 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842717867 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842722828 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322842723545 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842725932 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842727851 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842731657 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322842731720 +started,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322842736946 +started,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322842736946 +started,bundle,org.eclipse.core.externaltools,1.0.100.v20110506,"org.eclipse.core.externaltools",1322842737960 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842738225 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842741080 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322842743856 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842744246 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842752405 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842753341 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842768192 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842792466 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842795149 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322842804868 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322842810000 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842816911 +started,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322842822418 +started,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322842822418 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842822902 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322842823463 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842826521 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842831560 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842833900 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842862276 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322842862307 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322842864086 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842864320 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842870653 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842873321 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842875146 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842885036 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322842891854 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322842892400 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322842892883 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322842893429 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322842895176 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322842895894 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842903117 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842909232 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322842910308 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842910449 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842915332 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842916502 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842919185 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322842920214 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842920402 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842927047 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842938856 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842954363 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842956874 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842959090 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322842963972 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322842964082 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322842995063 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322843009010 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322843009540 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843010429 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843019306 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843019462 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322843020554 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843021380 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843022082 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843030881 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843032566 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843044172 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843045888 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843049195 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843050428 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322843060349 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322843060755 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843062018 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843062845 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843063984 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843076745 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843082657 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322843083453 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843083640 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843091705 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322843096167 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843096354 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843101689 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322843103639 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843103826 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843106619 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322843108694 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843108974 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843111767 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843112765 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843116774 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843119114 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843121579 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843124372 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843129254 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843135214 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322843136134 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843136306 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843139129 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322843141095 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843141407 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843144215 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843148661 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843150626 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843160252 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843160252 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843161749 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843162810 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843163840 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843168551 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843178332 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322843178394 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322843181873 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843183230 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322843185929 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843186163 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843186272 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843189190 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843190562 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843194088 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843195430 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843201732 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843205928 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843229500 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843237206 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843238813 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843240124 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843243618 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843244897 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843246192 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843248111 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843249390 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843253992 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843255989 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322843260014 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843260107 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843260201 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843263446 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843266659 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843271292 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843272150 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843272275 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843272400 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843272556 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843300090 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322843319356 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843321587 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322843323194 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843323755 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843325081 +opened,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322843329855 +activated,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322843329933 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843331352 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322843381257 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843381475 +closed,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322843381475 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843387887 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843390398 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843392395 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843394174 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload12.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload12.csv new file mode 100644 index 00000000..00219b0f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload12.csv @@ -0,0 +1,251 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843398495 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843403658 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843424172 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322843431692 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843441067 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843446699 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843483031 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843483203 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843504965 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843511127 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843514559 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843516524 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843519691 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843525494 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843529769 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843531188 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843535369 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843538489 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843545884 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843546913 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843552966 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843555056 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843559580 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322843561546 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843561936 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843562030 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843563730 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322843563730 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843576132 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843577552 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843579564 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843580048 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843580172 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843580328 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843580796 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843581077 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843581358 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843581514 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843581686 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843581842 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843582013 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843582622 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843582871 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843583168 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843583324 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843583480 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843583963 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843584338 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843584587 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843584884 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843585055 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843585726 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843586210 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843588082 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843594634 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843600624 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843606942 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843609001 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843609282 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843609984 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843612839 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843615350 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843636254 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843636410 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843638641 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843647611 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843648017 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843649405 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843692945 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843693101 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843701353 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843701509 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843705082 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843706501 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843708810 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843709543 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843722554 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843725143 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843725284 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843725424 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843725580 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843728045 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843728232 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843728326 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843728450 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843731414 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843736094 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843739948 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843743894 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843745844 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843748481 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843751788 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843754393 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843754861 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843755017 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843755173 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843755345 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843755922 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843756265 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843756811 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843757186 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843757357 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843757654 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843764876 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843766982 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843796903 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322843799462 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322843801880 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843806513 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843809305 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843810304 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843813502 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843815545 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843816871 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843819695 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843820085 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843820241 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843820397 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843820553 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843821036 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843821411 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843821707 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843821988 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843822160 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843822316 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843822596 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843823361 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843823720 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843823876 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843824125 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843824312 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843825139 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843825451 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843825779 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843825919 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843826231 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843826403 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843873016 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843873156 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843873296 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843873452 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843873593 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843873764 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843873889 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843874030 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843874170 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843874326 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843874466 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843874622 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843874747 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843874888 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843897898 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843898147 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843898459 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843898584 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843898724 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899239 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899286 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899333 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899380 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899426 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899473 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899520 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899567 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899614 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899660 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899707 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899754 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899801 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843899848 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843900409 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843900799 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843900924 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322843903607 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843904028 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843907492 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843913997 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843917912 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843918302 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843920533 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843922124 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843946882 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843947240 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843947412 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843947537 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843947740 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843948083 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843948426 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843948707 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843948847 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843948988 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843949284 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322843949877 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843950298 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843950454 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843950610 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843950782 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843950953 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843953465 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843955368 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843955633 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843956288 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843956444 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843956585 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843956710 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843957131 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843957521 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843960064 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843960578 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843960625 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843960672 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843960719 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843960766 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843960812 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843963059 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843963168 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843965024 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843968488 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843971467 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843978503 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843981233 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.smartEnter",1322843981638 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843983089 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843985398 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843988471 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843991466 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322843991841 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322843992434 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322843994274 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322843996942 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322844000280 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844005070 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844005194 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322844007519 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844023010 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844037424 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844043680 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844044600 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844057439 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844063070 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844080230 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844098482 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844132693 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322844167044 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844168714 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844170913 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844172582 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844176202 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844177652 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844182676 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload13.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload13.csv new file mode 100644 index 00000000..9daa991b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload13.csv @@ -0,0 +1,251 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844185031 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844185406 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844185593 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844185764 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844186342 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322844186576 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844186934 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844187574 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844188260 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844188432 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322844188775 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844197511 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844202862 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844205124 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844207027 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844210334 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844215092 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844218540 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844221566 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844225919 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844238118 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844244311 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844247774 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844250957 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844256776 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844279037 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844285027 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844290924 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322844292172 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844292375 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844297960 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844321531 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844325790 +started,bundle,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view",1322844325852 +started,bundle,org.eclipse.tm.terminal,3.1.1.R33x_v201107181530,"org.eclipse.tm.terminal",1322844325852 +opened,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322844326149 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322844326211 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.views.showView",1322844326211 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.views.showView",1322844326211 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844328536 +started,bundle,org.eclipse.tm.terminal.serial,2.1.0.v201101042155,"org.eclipse.tm.terminal.serial",1322844331172 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844337256 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844346149 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844362763 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844365446 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844390484 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844396303 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322844397738 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844397941 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844399500 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844399515 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844400483 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322844400561 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322844402136 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844402386 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844410482 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844418641 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844449139 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322844449170 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844449685 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844450839 +opened,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322844453835 +activated,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322844453944 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844457501 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844468951 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844470339 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844470714 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844482164 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844500463 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844500713 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844500822 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844501399 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844503474 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844510915 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844512147 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844519261 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844520119 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844520135 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844520213 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844522537 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844523754 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844536078 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844541897 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844542911 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844556171 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844558526 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844560414 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844560539 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844561584 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844564205 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322844569883 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322844591754 +activated,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322844626698 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844641612 +activated,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322844648632 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844659146 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844659801 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844659957 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844696118 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844696243 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844759345 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844759610 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844765476 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844766599 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844767395 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844767535 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844767691 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844767894 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844770249 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844770390 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844770515 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844770717 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844771029 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844774617 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844774742 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844775460 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844776068 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844783541 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844783665 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844783946 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322844784570 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.toggleOverwrite",1322844784711 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.toggleOverwrite",1322844790015 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844795007 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844795334 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844799141 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844799702 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844799843 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844807939 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844808220 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844808922 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844809905 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844810685 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844810825 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844811059 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844811511 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844812759 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844812884 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844813025 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844813259 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844813742 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844815848 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844815957 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844817361 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322844828266 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844828578 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844828703 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844830731 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844832447 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844853663 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844854614 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844858249 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322844860043 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844861759 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844862991 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844866813 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844867391 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322844868046 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844872773 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844880588 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322844881743 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844883193 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322844884972 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844891087 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322844892085 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322844895408 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322844910977 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844911445 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844912599 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844916312 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322844923972 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844924299 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322844938324 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844938745 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844950757 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844950882 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322844951038 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844951475 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844952130 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844961583 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844961708 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322844973502 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844978697 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322844978790 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322844997463 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322845048553 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322845093747 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845103965 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845104027 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845113122 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845113777 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322845131982 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845133261 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845133449 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845133979 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845134587 +activated,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322845150609 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845153822 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845153916 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845156209 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845157597 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.save",1322845158908 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845160093 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322845187893 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322845214023 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322845220512 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322845221074 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845224163 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845224287 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845224631 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845238780 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845238920 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845252243 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845255784 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322845255831 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845260791 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845263069 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845266532 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845271852 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845278248 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845279527 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322845281337 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322845285689 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845287077 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322845288357 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322845289293 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322845292350 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845311554 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845311679 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322845313800 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845315579 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845316983 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845318028 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322845325875 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845328683 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845334517 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322845338089 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845338370 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845346295 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845357293 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845359898 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322845362004 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845362269 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845369929 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845370615 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845370803 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845373252 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845565880 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322845575394 +activated,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322845575658 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload14.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload14.csv new file mode 100644 index 00000000..5256f005 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload14.csv @@ -0,0 +1,276 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845579675 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845579814 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845580136 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845584400 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845584551 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845585422 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.save",1322845587258 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845588441 +closed,editor,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.DefaultTextEditor",1322845588442 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845589865 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845593256 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845597961 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845604460 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322845605349 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845605593 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845612944 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845628127 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845760482 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322845760582 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845770786 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845828796 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322845832338 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845832665 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845838437 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845838671 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845840933 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322845847813 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322845850168 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845852883 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845869684 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322845869731 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845871088 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322845874458 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845875596 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322845875659 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322845876002 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845877141 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845877983 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845878295 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845878451 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845878467 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845878467 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845883162 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845883162 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845891727 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322845891805 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845894348 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845895050 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845895549 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845895752 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845895845 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845898185 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845899776 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845899776 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845900837 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845902538 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845917841 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322845921070 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845924892 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322845927108 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322845930602 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322845933363 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322845935407 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322845941865 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845943098 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322845943207 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322845943909 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322845944361 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845955250 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845957840 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845958323 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322845962364 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845964267 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322845964360 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322845974142 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845985716 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322845991238 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846028959 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322846031502 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846033873 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846036728 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322846059285 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322846059550 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846064733 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846075242 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846079720 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846084384 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846104399 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846108642 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846132448 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846138719 +activated,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322846151901 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846155114 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846155239 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846166674 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846166674 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322846178280 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846178561 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846178717 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322846181182 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322846184567 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846186112 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322846188888 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846190152 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322846198311 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322846203708 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322846203802 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322846214223 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846218326 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322846223458 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846227654 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846230369 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846230509 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846230665 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846230977 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322846233941 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322846234066 +activated,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322846240010 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846241055 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846257341 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846259198 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322846264938 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846267013 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846290023 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322846290164 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846292660 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846294594 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846294672 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846314266 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846318665 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846322643 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322846328321 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846331644 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846333500 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846338383 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846345980 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846351066 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846374435 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846399629 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322846402593 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846402749 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846408583 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322846412218 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846422921 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846428785 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846433745 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846440017 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322846440500 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322846442029 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846442247 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846445133 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846452747 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846462809 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846486147 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846500842 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846510483 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846514352 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846516239 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846523119 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846525006 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846527877 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846550388 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846557049 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846559295 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846562556 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846573569 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846580418 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846580964 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846587656 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322846603038 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846604910 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846605112 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846607764 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846610104 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846610245 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846610401 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846611555 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846612834 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846614394 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846614753 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846627514 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846627701 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846636188 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846636375 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322846647030 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846653223 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322846653285 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322846659229 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846662583 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846666280 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846672832 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846692691 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846696231 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322846736962 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846737165 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846737274 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846746042 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846746042 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846754403 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846760830 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846777710 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846820391 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846826818 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846839096 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846845507 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846850499 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846856942 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846879234 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846883805 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846888860 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846895505 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322846897299 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846913242 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846916425 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846916581 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846918437 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846918609 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846918936 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846919108 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846919264 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846919420 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846919560 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846919716 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846920699 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322846920855 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846932056 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846938218 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.edit.opendecl",1322846948108 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846948311 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846948467 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846962086 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846978618 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846982015 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322846982015 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846988817 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322846995540 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847005088 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847011546 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847016912 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847021577 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322847034306 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847034478 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847034587 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322847042886 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847043120 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847043370 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847054306 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847054306 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847057285 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322847061121 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847061496 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847061667 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847064600 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847064600 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847079108 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847086674 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847101837 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847102820 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847103491 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847119169 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847125487 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322847126844 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847127062 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847128530 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847128546 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847131151 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322847132337 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322847135644 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847135909 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847140511 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847143366 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322847146346 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847182195 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847186828 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847187390 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload15.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload15.csv new file mode 100644 index 00000000..d603d714 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload15.csv @@ -0,0 +1,251 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847188716 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847198638 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847216531 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322847217389 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847218060 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847226296 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847230196 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847232692 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847234954 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847237840 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847241382 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847244595 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322847246530 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847280397 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847301832 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847301972 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847302939 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847335902 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847336027 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322847339396 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847339755 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847345215 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847362750 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847363296 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847366119 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847379426 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847400595 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847401328 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847404776 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322847422030 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847422451 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847422669 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847432170 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847432809 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847434057 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847436974 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847438831 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847440079 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847440531 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847456942 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847459516 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847463962 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847466256 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847467550 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847467706 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847467847 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847468003 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847468143 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847468299 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847468440 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847468580 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847468752 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847468908 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847469048 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847469547 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847471092 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847557921 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847558608 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847559528 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847561665 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847577094 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847577250 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847578591 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847587109 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847592350 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322847595470 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322847596500 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847616842 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847617888 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847639806 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847639962 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847641085 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847646280 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847648822 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847652551 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322847652644 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322847659805 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322847661942 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847662207 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847666060 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847682925 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847684111 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847684220 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847685281 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847697261 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847703501 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322847705483 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847705639 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847706965 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847706987 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847707689 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322847707720 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847708843 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847710996 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322847712525 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847712837 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847716831 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322847748609 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847752899 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322847759014 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847833097 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847833206 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847839524 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847868571 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847874717 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875247 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875294 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875341 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875388 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875435 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875481 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875528 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875575 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875622 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847875669 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847876012 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847876168 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847876620 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847878882 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847881565 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847888710 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847927819 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847927944 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322847928069 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847930565 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847974198 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847974339 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847979019 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322847979097 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322847980126 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322848003136 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322848007036 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848009626 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848016318 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322848016849 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848020093 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848020296 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848024071 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848092930 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848098717 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848104786 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322848105784 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848107172 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848107422 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848111213 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848180040 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848220678 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848226590 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322848226668 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322848228649 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848244001 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848244297 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848250303 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848252768 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848253470 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848253735 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848260412 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848262518 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848262814 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848266652 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848268852 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848269148 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848272923 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322848273844 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848281052 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848281067 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848282081 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848283891 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848283891 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848285155 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848288930 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848288930 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848290193 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848291644 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848291644 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848292643 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848293501 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848293501 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848294717 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848295716 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322848304998 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848315621 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848315887 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322848317540 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322848318539 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322848320301 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848322782 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848358365 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848367008 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848367304 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322848370908 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848380252 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848380439 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848380439 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322848381001 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848383185 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322848385837 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322848385837 +started,bundle,org.eclipse.ui.views.properties.tabbed,3.5.200.I20110201-0800,"org.eclipse.ui.views.properties.tabbed",1322848390143 +opened,view,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views.PropertySheet",1322848390423 +activated,view,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views.PropertySheet",1322848390517 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322848393762 +closed,view,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views.PropertySheet",1322848393809 +activated,view,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search.ui.views.SearchView",1322848394979 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322848398223 +activated,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322848401172 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322848402467 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322848403262 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322848405119 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848408083 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322848408551 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322848408551 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322848408551 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322848408551 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322848408551 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322848408551 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322848408551 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322848408566 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322848408566 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.search,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.search",1322848408566 +stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322848408566 +stopped,bundle,org.eclipse.cdt.dsf.ui,2.2.0.201109151620,"org.eclipse.cdt.dsf.ui",1322848408566 +stopped,bundle,org.eclipse.cdt.gdb.ui,7.0.0.201109151620,"org.eclipse.cdt.gdb.ui",1322848408566 +stopped,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322848408566 +stopped,bundle,org.eclipse.cdt.launch,7.0.0.201109151620,"org.eclipse.cdt.launch",1322848408566 +stopped,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322848408566 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.traditional,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.traditional",1322848408566 +stopped,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322848408582 +stopped,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322848408582 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322848408582 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322848408582 +stopped,bundle,org.eclipse.cdt.cross.arm.gnu,0.5.4.201111262136,"org.eclipse.cdt.cross.arm.gnu",1322848408582 +stopped,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322848408582 +stopped,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322848408582 +stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322848408582 +stopped,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322848408582 +stopped,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322848408582 +stopped,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322848408582 +stopped,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322848408582 +stopped,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322848408582 +stopped,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322848408582 +stopped,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322848408582 +stopped,bundle,org.eclipse.compare.win32,1.0.200.I20110510-0800,"org.eclipse.compare.win32",1322848408582 +stopped,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322848408582 +stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322848408582 +stopped,bundle,org.eclipse.rse.importexport,1.2.200.v201105021534,"org.eclipse.rse.importexport",1322848408582 +stopped,bundle,org.eclipse.rse.subsystems.shells.telnet,1.2.200.v201101042155,"org.eclipse.rse.subsystems.shells.telnet",1322848408582 +stopped,bundle,org.eclipse.rse.shells.ui,3.0.301.R33x_v201107181530,"org.eclipse.rse.shells.ui",1322848408582 +stopped,bundle,org.eclipse.rse.files.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.files.ui",1322848408582 +stopped,bundle,org.eclipse.rse.processes.ui,3.0.300.v201101042155,"org.eclipse.rse.processes.ui",1322848408582 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload16.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload16.csv new file mode 100644 index 00000000..d10f4c5b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload16.csv @@ -0,0 +1,265 @@ +what,kind,bundleId,bundleVersion,description,time +stopped,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322848408582 +stopped,bundle,org.eclipse.mylyn.commons.team,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.team",1322848408582 +stopped,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322848408582 +stopped,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322848408582 +stopped,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322848408582 +stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322848408582 +stopped,bundle,org.eclipse.mylyn.ide.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.ide.ui",1322848408597 +stopped,bundle,org.eclipse.mylyn.resources.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.resources.ui",1322848408597 +stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.tasks.ui",1322848408597 +stopped,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322848408597 +stopped,bundle,org.eclipse.mylyn.help.ui,3.6.1.v20110830-0100,"org.eclipse.mylyn.help.ui",1322848408597 +stopped,bundle,org.eclipse.mylyn.tasks.bugs,3.6.1.v20110825-0100,"org.eclipse.mylyn.tasks.bugs",1322848408597 +stopped,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322848408597 +stopped,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322848408597 +stopped,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322848408597 +stopped,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322848408597 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.transport,2.1.0.201109151620,"org.eclipse.cdt.debug.ui.memory.transport",1322848408597 +stopped,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322848408597 +stopped,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322848408597 +stopped,bundle,org.eclipse.mylyn.wikitext.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.ui",1322848408597 +stopped,bundle,org.eclipse.rse.subsystems.files.dstore,2.1.201.R33x_v201109141647,"org.eclipse.rse.subsystems.files.dstore",1322848408597 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322848435733 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322848435733 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322848435733 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322848435749 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322848435749 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322848435749 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322848435749 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322848435749 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322848435749 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322848435749 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322848435749 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322848435749 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322848435749 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322848435749 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322848435749 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322848435749 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322848435764 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322848435764 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322848435764 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322848435764 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322848435764 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322848435764 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322848435764 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322848435764 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322848435764 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322848435764 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322848435764 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322848435764 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322848435764 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322848435764 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322848435780 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322848435780 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322848435780 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322848435780 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322848435780 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322848435780 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322848435780 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322848435780 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322848435780 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322848435780 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322848435780 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322848435780 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322848435780 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322848435780 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322848435780 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322848435795 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322848435795 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322848435795 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322848435795 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322848435795 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322848435795 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322848435795 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322848435795 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322848435795 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322848435795 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322848435795 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322848435795 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322848435795 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322848435795 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322848435795 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322848435795 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322848435795 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322848435811 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322848435811 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322848435811 +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322848435811 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322848435811 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322848435811 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322848435811 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322848435811 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322848435811 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322848435811 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322848435811 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322848435811 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322848435811 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322848435827 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322848435827 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322848435827 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322848435827 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322848435827 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322848435827 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322848435827 +os,sysinfo,,,"win32",1322848435827 +arch,sysinfo,,,"x86",1322848435827 +ws,sysinfo,,,"win32",1322848435827 +locale,sysinfo,,,"de_DE",1322848435827 +processors,sysinfo,,,"2",1322848435827 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322848435827 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322848435827 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322848435827 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322848435827 +java.specification.version,sysinfo,,,"1.6",1322848435827 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322848435827 +java.version,sysinfo,,,"1.6.0_24",1322848435827 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322848435827 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322848435827 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322848435827 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322848435827 +java.vm.specification.version,sysinfo,,,"1.0",1322848435827 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322848435827 +java.vm.version,sysinfo,,,"19.1-b02",1322848435827 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848438011 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322848440787 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322848448915 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848450834 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.window.preferences",1322848450865 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322848453517 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322848453938 +started,bundle,org.eclipse.cdt.cross.arm.gnu,0.5.4.201111262136,"org.eclipse.cdt.cross.arm.gnu",1322848454047 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322848454094 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322848454297 +started,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322848454562 +started,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322848457776 +started,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322848457776 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848466995 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322848473641 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322848476839 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322848483313 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322848489413 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848564917 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322848564995 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848566633 +started,bundle,org.eclipse.core.externaltools,1.0.100.v20110506,"org.eclipse.core.externaltools",1322848566648 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848566898 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848570704 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848574183 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848577927 +started,bundle,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view",1322848578598 +started,bundle,org.eclipse.tm.terminal,3.1.1.R33x_v201107181530,"org.eclipse.tm.terminal",1322848578598 +opened,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322848578816 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322848578847 +started,bundle,org.eclipse.tm.terminal.serial,2.1.0.v201101042155,"org.eclipse.tm.terminal.serial",1322848580033 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848590221 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848592670 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848597943 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848601312 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848602623 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848607178 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848639377 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848639627 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848642872 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848644713 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848644962 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848651826 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848653542 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848653792 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848657692 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848658815 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848659018 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848662887 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848663620 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848663854 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848667645 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322848674260 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848674588 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848678425 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322848692513 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322848692841 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322848692841 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322848693480 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322848693480 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322848693496 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322848693496 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322848693496 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322848693496 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322848693511 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322848693511 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322848693511 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.search,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.search",1322848693511 +stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322848693511 +stopped,bundle,org.eclipse.cdt.dsf.ui,2.2.0.201109151620,"org.eclipse.cdt.dsf.ui",1322848693511 +stopped,bundle,org.eclipse.cdt.gdb.ui,7.0.0.201109151620,"org.eclipse.cdt.gdb.ui",1322848693511 +stopped,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322848693511 +stopped,bundle,org.eclipse.cdt.launch,7.0.0.201109151620,"org.eclipse.cdt.launch",1322848693511 +stopped,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322848693511 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.traditional,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.traditional",1322848693527 +stopped,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322848693527 +stopped,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322848693527 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322848693527 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322848693527 +stopped,bundle,org.eclipse.cdt.cross.arm.gnu,0.5.4.201111262136,"org.eclipse.cdt.cross.arm.gnu",1322848693527 +stopped,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322848693527 +stopped,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322848693527 +stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322848693527 +stopped,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322848693527 +stopped,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322848693527 +stopped,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322848693527 +stopped,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322848693527 +stopped,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322848693527 +stopped,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322848693527 +stopped,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322848693527 +stopped,bundle,org.eclipse.compare.win32,1.0.200.I20110510-0800,"org.eclipse.compare.win32",1322848693527 +stopped,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322848693527 +stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322848693543 +stopped,bundle,org.eclipse.rse.importexport,1.2.200.v201105021534,"org.eclipse.rse.importexport",1322848693543 +stopped,bundle,org.eclipse.rse.subsystems.shells.telnet,1.2.200.v201101042155,"org.eclipse.rse.subsystems.shells.telnet",1322848693543 +stopped,bundle,org.eclipse.rse.shells.ui,3.0.301.R33x_v201107181530,"org.eclipse.rse.shells.ui",1322848693543 +stopped,bundle,org.eclipse.rse.files.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.files.ui",1322848693543 +stopped,bundle,org.eclipse.rse.processes.ui,3.0.300.v201101042155,"org.eclipse.rse.processes.ui",1322848693543 +stopped,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322848693543 +stopped,bundle,org.eclipse.mylyn.commons.team,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.team",1322848693543 +stopped,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322848693543 +stopped,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322848693543 +stopped,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322848693543 +stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322848693543 +stopped,bundle,org.eclipse.mylyn.ide.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.ide.ui",1322848693543 +stopped,bundle,org.eclipse.mylyn.resources.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.resources.ui",1322848693543 +stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.tasks.ui",1322848693543 +stopped,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322848693543 +stopped,bundle,org.eclipse.mylyn.help.ui,3.6.1.v20110830-0100,"org.eclipse.mylyn.help.ui",1322848693543 +stopped,bundle,org.eclipse.mylyn.tasks.bugs,3.6.1.v20110825-0100,"org.eclipse.mylyn.tasks.bugs",1322848693558 +stopped,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322848693558 +stopped,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322848693558 +stopped,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322848693558 +stopped,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322848693558 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.transport,2.1.0.201109151620,"org.eclipse.cdt.debug.ui.memory.transport",1322848693558 +stopped,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322848693558 +stopped,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322848693558 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322855958966 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322855958966 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322855958966 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322855958966 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322855958966 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322855958966 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322855958966 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322855958966 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322855958966 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322855958966 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322855958981 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322855958981 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322855959012 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322855959012 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322855959012 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322855959012 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322855959012 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322855959012 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322855959012 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322855959012 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322855959012 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322855959028 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322855959028 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322855959028 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322855959028 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload17.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload17.csv new file mode 100644 index 00000000..dbae8934 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload17.csv @@ -0,0 +1,261 @@ +what,kind,bundleId,bundleVersion,description,time +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322855959059 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322855959059 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322855959059 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322855959059 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322855959059 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322855959059 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322855959059 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322855959059 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322855959075 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322855959075 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322855959075 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322855959075 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322855959075 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322855959075 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322855959075 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322855959075 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322855959075 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322855959075 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322855959075 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322855959075 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322855959106 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322855959122 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322855959122 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322855959122 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322855959122 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322855959122 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322855959137 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322855959137 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322855959137 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322855959137 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322855959137 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322855959137 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322855959137 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322855959137 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322855959153 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322855959153 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322855959168 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322855959168 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322855959168 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322855959168 +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322855959168 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322855959200 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322855959200 +started,bundle,org.eclipse.tm.terminal,3.1.1.R33x_v201107181530,"org.eclipse.tm.terminal",1322855959200 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322855959200 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322855959200 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322855959200 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322855959200 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322855959231 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322855959231 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322855959231 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322855959231 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322855959231 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322855959231 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322855959246 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322855959246 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322855959324 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322855959324 +started,bundle,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view",1322855959324 +os,sysinfo,,,"win32",1322855959340 +arch,sysinfo,,,"x86",1322855959340 +ws,sysinfo,,,"win32",1322855959340 +locale,sysinfo,,,"de_DE",1322855959340 +processors,sysinfo,,,"2",1322855959340 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322855959340 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322855959340 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322855959340 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322855959340 +java.specification.version,sysinfo,,,"1.6",1322855959340 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322855959340 +java.version,sysinfo,,,"1.6.0_24",1322855959340 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322855959340 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322855959340 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322855959340 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322855959340 +java.vm.specification.version,sysinfo,,,"1.0",1322855959340 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322855959340 +java.vm.version,sysinfo,,,"19.1-b02",1322855959340 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322855960073 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322855961306 +started,bundle,org.eclipse.cdt.cross.arm.gnu,0.5.4.201111262136,"org.eclipse.cdt.cross.arm.gnu",1322855961352 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322855961524 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322855961711 +started,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322855962023 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322855962866 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322855964129 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322855964160 +error,log,,,"Problems occurred when invoking code from plug-in: ""org.eclipse.core.resources"".",1322855967421 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322855968279 +error,log,,,"Errors occurred during the build.",1322855969870 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322855977108 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322855980369 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322855983364 +started,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322855983926 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856017122 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322856020944 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856026326 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856028947 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856031303 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856043939 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856045483 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856047620 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856051739 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856054297 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856060038 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856081332 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322856083048 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856085809 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856089460 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856101628 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856111892 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322856113608 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856116136 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856159987 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856162780 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856165385 +started,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322856173341 +started,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322856173341 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856177163 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322856184386 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856185977 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322856186070 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856188473 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322856208503 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322856224509 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856240296 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.window.preferences",1322856240312 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856242059 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322856242886 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322856242932 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322856242932 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322856242932 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322856242932 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322856243026 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322856243057 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322856324926 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322856324926 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322856324926 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322856324926 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322856324926 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322856324926 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322856324926 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322856324926 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322856324926 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322856324926 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322856324942 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322856324942 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322856324942 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322856324942 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322856324942 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322856324942 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322856324942 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322856324942 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322856324942 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322856324942 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322856324942 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322856324942 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322856324942 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322856324957 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322856324957 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322856324957 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322856324957 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322856324957 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322856324957 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322856324957 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322856324957 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322856324957 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322856324957 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322856324957 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322856324957 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322856324957 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322856324957 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322856324957 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322856324973 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322856324973 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322856324973 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322856324973 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322856324973 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322856324973 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322856324973 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322856324973 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322856324973 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322856324973 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322856324973 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322856324988 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322856324988 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322856324988 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322856324988 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322856324988 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322856324988 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322856324988 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322856324988 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322856324988 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322856324988 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322856324988 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322856324988 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322856324988 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322856324988 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322856324988 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322856324988 +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322856325004 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322856325004 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322856325004 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322856325004 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322856325004 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322856325004 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322856325004 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322856325004 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322856325004 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322856325004 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322856325004 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322856325004 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322856325004 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322856325020 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322856325020 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322856325020 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322856325020 +os,sysinfo,,,"win32",1322856325020 +arch,sysinfo,,,"x86",1322856325020 +ws,sysinfo,,,"win32",1322856325020 +locale,sysinfo,,,"de_DE",1322856325020 +processors,sysinfo,,,"2",1322856325020 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322856325020 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322856325020 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322856325020 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322856325020 +java.specification.version,sysinfo,,,"1.6",1322856325020 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322856325020 +java.version,sysinfo,,,"1.6.0_24",1322856325020 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322856325020 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322856325020 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322856325020 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322856325020 +java.vm.specification.version,sysinfo,,,"1.0",1322856325020 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322856325020 +java.vm.version,sysinfo,,,"19.1-b02",1322856325020 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322856326112 +started,bundle,org.eclipse.cdt.cross.arm.gnu,0.5.4.201111262136,"org.eclipse.cdt.cross.arm.gnu",1322856326143 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322856326190 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322856326283 +started,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322856326408 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322856328920 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322856332664 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322856332679 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856336314 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856364410 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322856364519 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856372600 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322856402458 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856433299 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856436794 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322856506947 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856508803 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322856508912 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856512360 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322856524185 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322856529582 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856536665 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.window.preferences",1322856536696 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856541033 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload2.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload2.csv new file mode 100644 index 00000000..e6e44b66 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload2.csv @@ -0,0 +1,246 @@ +what,kind,bundleId,bundleVersion,description,time +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322830792383 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322830792383 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322830792383 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322830792383 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322830792383 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322830792383 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322830792384 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322830792384 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322830792384 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322830792384 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322830792384 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322830792384 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322830792384 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322830792384 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322830792385 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322830792385 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322830792385 +os,sysinfo,,,"win32",1322830792390 +arch,sysinfo,,,"x86",1322830792390 +ws,sysinfo,,,"win32",1322830792390 +locale,sysinfo,,,"de_DE",1322830792390 +processors,sysinfo,,,"2",1322830792390 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322830792390 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322830792390 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322830792390 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830792390 +java.specification.version,sysinfo,,,"1.6",1322830792390 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830792390 +java.version,sysinfo,,,"1.6.0_24",1322830792390 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322830792390 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322830792390 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322830792390 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830792390 +java.vm.specification.version,sysinfo,,,"1.0",1322830792390 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830792390 +java.vm.version,sysinfo,,,"19.1-b02",1322830792390 +started,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322830792842 +started,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322830796096 +started,bundle,org.eclipse.equinox.p2.ui,2.1.0.v20110601,"org.eclipse.equinox.p2.ui",1322830796105 +started,bundle,org.eclipse.equinox.p2.transport.ecf,1.0.0.v20110510,"org.eclipse.equinox.p2.transport.ecf",1322830796952 +started,bundle,org.eclipse.ecf.filetransfer,5.0.0.v20110531-2218,"org.eclipse.ecf.filetransfer",1322830796969 +started,bundle,org.eclipse.ecf.identity,3.1.100.v20110531-2218,"org.eclipse.ecf.identity",1322830796989 +started,bundle,org.eclipse.ecf,3.1.300.v20110531-2218,"org.eclipse.ecf",1322830797006 +started,bundle,org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer.httpclient",1322830797041 +started,bundle,org.eclipse.ecf.provider.filetransfer,3.2.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer",1322830797042 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830797404 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322830797611 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.help.installationDialog",1322830802095 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830803495 +executed,command,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.install",1322830803554 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830808384 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830816730 +started,bundle,org.eclipse.rse.services,3.2.101.R33x_v201109141647,"org.eclipse.rse.services",1322830816840 +started,bundle,org.eclipse.rse.core,3.2.1.R33x_v201109141647,"org.eclipse.rse.core",1322830816864 +started,bundle,org.eclipse.rse.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.ui",1322830817248 +started,bundle,org.eclipse.rse.terminals.ui,1.1.0.v201101042155,"org.eclipse.rse.terminals.ui",1322830817250 +started,bundle,org.eclipse.rse.subsystems.files.core,3.2.101.R33x_v201107181530,"org.eclipse.rse.subsystems.files.core",1322830817254 +started,bundle,org.eclipse.rse.subsystems.files.local,2.1.200.v201101042155,"org.eclipse.rse.subsystems.files.local",1322830817255 +started,bundle,org.eclipse.tm.terminal,3.1.1.R33x_v201107181530,"org.eclipse.tm.terminal",1322830817263 +opened,view,org.eclipse.rse.terminals.ui,1.1.0.v201101042155,"org.eclipse.rse.terminals.ui.view.TerminalView",1322830817277 +activated,view,org.eclipse.rse.terminals.ui,1.1.0.v201101042155,"org.eclipse.rse.terminals.ui.view.TerminalView",1322830817313 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.views.showView",1322830817313 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.views.showView",1322830817313 +started,bundle,org.eclipse.rse.subsystems.shells.core,3.1.201.R33x_v201106281309,"org.eclipse.rse.subsystems.shells.core",1322830817494 +started,bundle,org.eclipse.rse.subsystems.shells.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.local",1322830817495 +started,bundle,org.eclipse.rse.connectorservice.local,2.1.300.v201101042155,"org.eclipse.rse.connectorservice.local",1322830817496 +started,bundle,org.eclipse.rse.services.local,2.1.300.v201105311250,"org.eclipse.rse.services.local",1322830817496 +started,bundle,org.eclipse.equinox.p2.updatesite,1.0.300.v20110510,"org.eclipse.equinox.p2.updatesite",1322830821072 +started,bundle,org.eclipse.equinox.p2.publisher.eclipse,1.0.0.v20110511,"org.eclipse.equinox.p2.publisher.eclipse",1322830821830 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322830824931 +closed,view,org.eclipse.rse.terminals.ui,1.1.0.v201101042155,"org.eclipse.rse.terminals.ui.view.TerminalView",1322830824952 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830826097 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830835269 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830837499 +started,bundle,org.eclipse.equinox.p2.garbagecollector,1.0.200.v20110510,"org.eclipse.equinox.p2.garbagecollector",1322830877518 +started,bundle,org.eclipse.equinox.frameworkadmin,2.0.0.v20110502-1955,"org.eclipse.equinox.frameworkadmin",1322830879093 +started,bundle,org.eclipse.equinox.simpleconfigurator.manipulator,2.0.0.v20110502-1955,"org.eclipse.equinox.simpleconfigurator.manipulator",1322830879098 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830882843 +executed,command,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.install",1322830882875 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830883175 +started,bundle,org.eclipse.equinox.frameworkadmin.equinox,1.0.300.v20110506,"org.eclipse.equinox.frameworkadmin.equinox",1322830898891 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830902808 +started,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322830903015 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830903121 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322830903492 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322830903701 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322830903702 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322830903702 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322830903702 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322830903702 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322830903702 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322830903702 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322830903702 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322830903702 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.search,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.search",1322830903703 +stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322830903703 +stopped,bundle,org.eclipse.cdt.dsf.ui,2.2.0.201109151620,"org.eclipse.cdt.dsf.ui",1322830903703 +stopped,bundle,org.eclipse.cdt.gdb.ui,7.0.0.201109151620,"org.eclipse.cdt.gdb.ui",1322830903703 +stopped,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322830903703 +stopped,bundle,org.eclipse.cdt.launch,7.0.0.201109151620,"org.eclipse.cdt.launch",1322830903703 +stopped,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322830903703 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.traditional,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.traditional",1322830903704 +stopped,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322830903706 +stopped,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322830903706 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322830903706 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322830903707 +stopped,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322830903707 +stopped,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322830903707 +stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322830903707 +stopped,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322830903707 +stopped,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322830903707 +stopped,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322830903707 +stopped,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322830903707 +stopped,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322830903707 +stopped,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322830903717 +stopped,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322830903718 +stopped,bundle,org.eclipse.compare.win32,1.0.200.I20110510-0800,"org.eclipse.compare.win32",1322830903718 +stopped,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322830903719 +stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322830903723 +stopped,bundle,org.eclipse.rse.importexport,1.2.200.v201105021534,"org.eclipse.rse.importexport",1322830903724 +stopped,bundle,org.eclipse.rse.subsystems.shells.telnet,1.2.200.v201101042155,"org.eclipse.rse.subsystems.shells.telnet",1322830903725 +stopped,bundle,org.eclipse.rse.shells.ui,3.0.301.R33x_v201107181530,"org.eclipse.rse.shells.ui",1322830903725 +stopped,bundle,org.eclipse.rse.files.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.files.ui",1322830903725 +stopped,bundle,org.eclipse.rse.processes.ui,3.0.300.v201101042155,"org.eclipse.rse.processes.ui",1322830903725 +stopped,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322830903729 +stopped,bundle,org.eclipse.mylyn.commons.team,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.team",1322830903730 +stopped,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322830903730 +stopped,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322830903730 +stopped,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322830903731 +stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322830903731 +stopped,bundle,org.eclipse.mylyn.ide.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.ide.ui",1322830903731 +stopped,bundle,org.eclipse.mylyn.resources.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.resources.ui",1322830903731 +stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.tasks.ui",1322830903731 +stopped,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322830903731 +stopped,bundle,org.eclipse.mylyn.help.ui,3.6.1.v20110830-0100,"org.eclipse.mylyn.help.ui",1322830903731 +stopped,bundle,org.eclipse.mylyn.tasks.bugs,3.6.1.v20110825-0100,"org.eclipse.mylyn.tasks.bugs",1322830903731 +stopped,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322830903731 +stopped,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322830903732 +stopped,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322830903732 +stopped,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322830903732 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.transport,2.1.0.201109151620,"org.eclipse.cdt.debug.ui.memory.transport",1322830903733 +stopped,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322830903733 +stopped,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322830903733 +stopped,bundle,org.eclipse.mylyn.wikitext.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.ui",1322830903733 +stopped,bundle,org.eclipse.rse.subsystems.files.dstore,2.1.201.R33x_v201109141647,"org.eclipse.rse.subsystems.files.dstore",1322830903733 +stopped,bundle,org.eclipse.rse.subsystems.processes.dstore,2.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.dstore",1322830903733 +stopped,bundle,org.eclipse.rse.subsystems.shells.dstore,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.dstore",1322830903733 +stopped,bundle,org.eclipse.rse.connectorservice.dstore,3.1.200.v201103141607,"org.eclipse.rse.connectorservice.dstore",1322830903733 +stopped,bundle,org.eclipse.rse.subsystems.files.local,2.1.200.v201101042155,"org.eclipse.rse.subsystems.files.local",1322830903733 +stopped,bundle,org.eclipse.rse.subsystems.processes.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.local",1322830903733 +stopped,bundle,org.eclipse.rse.subsystems.shells.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.local",1322830903733 +stopped,bundle,org.eclipse.rse.connectorservice.local,2.1.300.v201101042155,"org.eclipse.rse.connectorservice.local",1322830903733 +stopped,bundle,org.eclipse.rse.subsystems.files.ssh,2.1.200.v201101042155,"org.eclipse.rse.subsystems.files.ssh",1322830903733 +stopped,bundle,org.eclipse.rse.subsystems.shells.ssh,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.ssh",1322830903734 +stopped,bundle,org.eclipse.rse.subsystems.terminals.ssh,1.0.100.v201101042155,"org.eclipse.rse.subsystems.terminals.ssh",1322830903734 +stopped,bundle,org.eclipse.rse.connectorservice.ssh,2.1.200.v201101042155,"org.eclipse.rse.connectorservice.ssh",1322830903734 +stopped,bundle,org.eclipse.rse.connectorservice.telnet,1.2.200.v201101042155,"org.eclipse.rse.connectorservice.telnet",1322830903735 +stopped,bundle,org.eclipse.rse.dstore.security,3.0.300.v201103141607,"org.eclipse.rse.dstore.security",1322830903735 +stopped,bundle,org.eclipse.rse.efs,2.1.300.v201101042155,"org.eclipse.rse.efs",1322830903735 +stopped,bundle,org.eclipse.rse.subsystems.files.ftp,2.1.301.R33x_v201107212114,"org.eclipse.rse.subsystems.files.ftp",1322830903735 +stopped,bundle,org.eclipse.rse.subsystems.shells.core,3.1.201.R33x_v201106281309,"org.eclipse.rse.subsystems.shells.core",1322830903735 +stopped,bundle,org.eclipse.rse.subsystems.files.core,3.2.101.R33x_v201107181530,"org.eclipse.rse.subsystems.files.core",1322830903735 +stopped,bundle,org.eclipse.rse.subsystems.processes.shell.linux,1.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.shell.linux",1322830903735 +stopped,bundle,org.eclipse.rse.subsystems.processes.core,3.1.200.v201101042155,"org.eclipse.rse.subsystems.processes.core",1322830903737 +stopped,bundle,org.eclipse.rse.terminals.ui,1.1.0.v201101042155,"org.eclipse.rse.terminals.ui",1322830903737 +stopped,bundle,org.eclipse.rse.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.ui",1322830903744 +stopped,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322830903744 +stopped,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322830903744 +stopped,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322830903744 +stopped,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322830903744 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322830924093 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322830924095 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322830924096 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322830924097 +started,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322830924097 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322830924097 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322830924097 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322830924098 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322830924098 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322830924098 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322830924098 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322830924098 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322830924098 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322830924098 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322830924100 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322830924100 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322830924101 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322830924102 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322830924102 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322830924102 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322830924103 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322830924103 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322830924103 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322830924103 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322830924104 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322830924105 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322830924105 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322830924105 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322830924105 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322830924105 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322830924105 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322830924105 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322830924105 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322830924105 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322830924106 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322830924107 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322830924108 +started,bundle,org.eclipse.equinox.p2.artifact.repository,1.1.101.R37x_v20110714,"org.eclipse.equinox.p2.artifact.repository",1322830924108 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322830924109 +started,bundle,org.eclipse.equinox.p2.director,2.1.0.v20110504-1715,"org.eclipse.equinox.p2.director",1322830924112 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322830924114 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322830924114 +started,bundle,org.eclipse.equinox.p2.extensionlocation,1.2.100.v20110510,"org.eclipse.equinox.p2.extensionlocation",1322830924114 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322830924115 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322830924115 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322830924116 +started,bundle,org.eclipse.equinox.p2.publisher,1.2.0.v20110511,"org.eclipse.equinox.p2.publisher",1322830924117 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322830924117 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322830924120 +started,bundle,org.eclipse.equinox.p2.touchpoint.eclipse,2.1.1.R37x_v20110815-0935,"org.eclipse.equinox.p2.touchpoint.eclipse",1322830924120 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322830924120 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322830924121 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322830924121 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322830924121 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322830924122 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322830924123 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322830924124 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322830924125 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322830924126 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322830924126 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322830924126 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322830924126 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322830924126 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322830924126 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322830924126 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322830924127 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322830924127 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322830924130 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322830924130 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322830924130 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322830924130 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322830924130 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322830924130 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322830924130 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322830924130 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload3.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload3.csv new file mode 100644 index 00000000..6ae462d0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload3.csv @@ -0,0 +1,273 @@ +what,kind,bundleId,bundleVersion,description,time +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322830924130 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322830924130 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322830924131 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322830924131 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322830924131 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322830924131 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322830924132 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322830924132 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322830924132 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322830924132 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322830924132 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322830924132 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322830924132 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322830924132 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322830924133 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322830924133 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322830924134 +os,sysinfo,,,"win32",1322830924139 +arch,sysinfo,,,"x86",1322830924139 +ws,sysinfo,,,"win32",1322830924139 +locale,sysinfo,,,"de_DE",1322830924139 +processors,sysinfo,,,"2",1322830924139 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322830924139 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322830924139 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322830924139 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830924139 +java.specification.version,sysinfo,,,"1.6",1322830924139 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830924139 +java.version,sysinfo,,,"1.6.0_24",1322830924139 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322830924139 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322830924139 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322830924139 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830924139 +java.vm.specification.version,sysinfo,,,"1.0",1322830924139 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322830924139 +java.vm.version,sysinfo,,,"19.1-b02",1322830924139 +started,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322830924826 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322830927726 +started,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322830933286 +started,bundle,org.eclipse.equinox.p2.ui,2.1.0.v20110601,"org.eclipse.equinox.p2.ui",1322830933300 +started,bundle,org.eclipse.equinox.p2.transport.ecf,1.0.0.v20110510,"org.eclipse.equinox.p2.transport.ecf",1322830933494 +started,bundle,org.eclipse.ecf.filetransfer,5.0.0.v20110531-2218,"org.eclipse.ecf.filetransfer",1322830933495 +started,bundle,org.eclipse.ecf.identity,3.1.100.v20110531-2218,"org.eclipse.ecf.identity",1322830933495 +started,bundle,org.eclipse.ecf,3.1.300.v20110531-2218,"org.eclipse.ecf",1322830933547 +started,bundle,org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer.httpclient",1322830933547 +started,bundle,org.eclipse.ecf.provider.filetransfer,3.2.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer",1322830933549 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830933826 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322830935230 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322830953607 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830955884 +executed,command,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.install",1322830955916 +started,bundle,org.eclipse.equinox.p2.updatesite,1.0.300.v20110510,"org.eclipse.equinox.p2.updatesite",1322830958443 +started,bundle,org.eclipse.equinox.p2.publisher.eclipse,1.0.0.v20110511,"org.eclipse.equinox.p2.publisher.eclipse",1322830959176 +started,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322830959285 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322830959379 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322830959738 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322830960752 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322830960752 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322830960752 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322830960752 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322830960752 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322830960752 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322830960752 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.search,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.search",1322830960752 +stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.dsf.ui,2.2.0.201109151620,"org.eclipse.cdt.dsf.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.gdb.ui,7.0.0.201109151620,"org.eclipse.cdt.gdb.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322830960752 +stopped,bundle,org.eclipse.cdt.launch,7.0.0.201109151620,"org.eclipse.cdt.launch",1322830960752 +stopped,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.traditional,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.traditional",1322830960752 +stopped,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322830960752 +stopped,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322830960752 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322830960752 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322830960752 +stopped,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322830960752 +stopped,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322830960752 +stopped,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322830960752 +stopped,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322830960752 +stopped,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322830960767 +stopped,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322830960767 +stopped,bundle,org.eclipse.compare.win32,1.0.200.I20110510-0800,"org.eclipse.compare.win32",1322830960767 +stopped,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322830960767 +stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322830960767 +stopped,bundle,org.eclipse.rse.importexport,1.2.200.v201105021534,"org.eclipse.rse.importexport",1322830960767 +stopped,bundle,org.eclipse.rse.subsystems.shells.telnet,1.2.200.v201101042155,"org.eclipse.rse.subsystems.shells.telnet",1322830960767 +stopped,bundle,org.eclipse.rse.shells.ui,3.0.301.R33x_v201107181530,"org.eclipse.rse.shells.ui",1322830960767 +stopped,bundle,org.eclipse.rse.files.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.files.ui",1322830960767 +stopped,bundle,org.eclipse.rse.processes.ui,3.0.300.v201101042155,"org.eclipse.rse.processes.ui",1322830960767 +stopped,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322830960783 +stopped,bundle,org.eclipse.mylyn.commons.team,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.team",1322830960783 +stopped,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322830960783 +stopped,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322830960783 +stopped,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322830960783 +stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322830960783 +stopped,bundle,org.eclipse.mylyn.ide.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.ide.ui",1322830960783 +stopped,bundle,org.eclipse.mylyn.resources.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.resources.ui",1322830960783 +stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.tasks.ui",1322830960783 +stopped,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322830960783 +stopped,bundle,org.eclipse.mylyn.help.ui,3.6.1.v20110830-0100,"org.eclipse.mylyn.help.ui",1322830960783 +stopped,bundle,org.eclipse.mylyn.tasks.bugs,3.6.1.v20110825-0100,"org.eclipse.mylyn.tasks.bugs",1322830960783 +stopped,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322830960783 +stopped,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322830960783 +stopped,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322830960783 +stopped,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322830960783 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.transport,2.1.0.201109151620,"org.eclipse.cdt.debug.ui.memory.transport",1322830960783 +stopped,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322830960783 +stopped,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322830960783 +stopped,bundle,org.eclipse.mylyn.wikitext.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.ui",1322830960783 +stopped,bundle,org.eclipse.rse.subsystems.files.dstore,2.1.201.R33x_v201109141647,"org.eclipse.rse.subsystems.files.dstore",1322830960783 +stopped,bundle,org.eclipse.rse.subsystems.processes.dstore,2.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.dstore",1322830960783 +stopped,bundle,org.eclipse.rse.subsystems.shells.dstore,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.dstore",1322830960783 +stopped,bundle,org.eclipse.rse.connectorservice.dstore,3.1.200.v201103141607,"org.eclipse.rse.connectorservice.dstore",1322830960783 +stopped,bundle,org.eclipse.rse.subsystems.files.local,2.1.200.v201101042155,"org.eclipse.rse.subsystems.files.local",1322830960783 +stopped,bundle,org.eclipse.rse.subsystems.processes.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.local",1322830960783 +stopped,bundle,org.eclipse.rse.subsystems.shells.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.local",1322830960783 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322831077949 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322831077949 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322831077949 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322831077949 +started,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322831077949 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322831077949 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322831077965 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322831077965 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322831077965 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322831077965 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322831077965 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322831077965 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322831077965 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322831077965 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322831077965 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322831077965 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322831077965 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322831077965 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322831077965 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322831077965 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322831077965 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322831077965 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322831077965 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322831077981 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322831077981 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322831077981 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322831077981 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322831077981 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322831077981 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322831077981 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322831077981 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322831077981 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322831077981 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322831077981 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322831077981 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322831077981 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322831077981 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322831077981 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322831077996 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322831077996 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322831077996 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322831077996 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322831077996 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322831077996 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322831077996 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322831077996 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322831077996 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322831077996 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322831077996 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322831077996 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322831077996 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322831077996 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322831078012 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322831078012 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322831078012 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322831078012 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322831078012 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322831078012 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322831078012 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322831078012 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322831078012 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322831078012 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322831078012 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322831078012 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322831078012 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322831078012 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322831078012 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322831078012 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322831078027 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322831078027 +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322831078027 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322831078027 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322831078027 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322831078027 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322831078027 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322831078027 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322831078027 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322831078027 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322831078027 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322831078027 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322831078027 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322831078027 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322831078043 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322831078043 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322831078043 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322831078043 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322831078043 +os,sysinfo,,,"win32",1322831078043 +arch,sysinfo,,,"x86",1322831078043 +ws,sysinfo,,,"win32",1322831078043 +locale,sysinfo,,,"de_DE",1322831078043 +processors,sysinfo,,,"2",1322831078043 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322831078043 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322831078043 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322831078043 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322831078043 +java.specification.version,sysinfo,,,"1.6",1322831078043 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322831078043 +java.version,sysinfo,,,"1.6.0_24",1322831078043 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322831078043 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322831078043 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322831078043 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322831078043 +java.vm.specification.version,sysinfo,,,"1.0",1322831078043 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322831078043 +java.vm.version,sysinfo,,,"19.1-b02",1322831078043 +started,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322831078542 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322831082692 +started,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322831083253 +started,bundle,org.eclipse.equinox.p2.ui,2.1.0.v20110601,"org.eclipse.equinox.p2.ui",1322831083269 +started,bundle,org.eclipse.equinox.p2.transport.ecf,1.0.0.v20110510,"org.eclipse.equinox.p2.transport.ecf",1322831084267 +started,bundle,org.eclipse.ecf.filetransfer,5.0.0.v20110531-2218,"org.eclipse.ecf.filetransfer",1322831084798 +started,bundle,org.eclipse.ecf.identity,3.1.100.v20110531-2218,"org.eclipse.ecf.identity",1322831084829 +started,bundle,org.eclipse.ecf,3.1.300.v20110531-2218,"org.eclipse.ecf",1322831084876 +started,bundle,org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer.httpclient",1322831084923 +started,bundle,org.eclipse.ecf.provider.filetransfer,3.2.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer",1322831084938 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831085172 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322831091225 +started,bundle,org.eclipse.equinox.p2.director,2.1.0.v20110504-1715,"org.eclipse.equinox.p2.director",1322831094080 +started,bundle,org.eclipse.equinox.p2.garbagecollector,1.0.200.v20110510,"org.eclipse.equinox.p2.garbagecollector",1322831100757 +started,bundle,org.eclipse.equinox.p2.artifact.repository,1.1.101.R37x_v20110714,"org.eclipse.equinox.p2.artifact.repository",1322831111583 +started,bundle,org.eclipse.equinox.p2.updatesite,1.0.300.v20110510,"org.eclipse.equinox.p2.updatesite",1322831111942 +started,bundle,org.eclipse.equinox.p2.publisher,1.2.0.v20110511,"org.eclipse.equinox.p2.publisher",1322831111957 +started,bundle,org.eclipse.equinox.p2.publisher.eclipse,1.0.0.v20110511,"org.eclipse.equinox.p2.publisher.eclipse",1322831112597 +started,bundle,org.eclipse.equinox.p2.extensionlocation,1.2.100.v20110510,"org.eclipse.equinox.p2.extensionlocation",1322831112644 +started,bundle,org.eclipse.equinox.p2.touchpoint.eclipse,2.1.1.R37x_v20110815-0935,"org.eclipse.equinox.p2.touchpoint.eclipse",1322831112753 +started,bundle,org.eclipse.equinox.frameworkadmin,2.0.0.v20110502-1955,"org.eclipse.equinox.frameworkadmin",1322831114937 +started,bundle,org.eclipse.equinox.simpleconfigurator.manipulator,2.0.0.v20110502-1955,"org.eclipse.equinox.simpleconfigurator.manipulator",1322831114953 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831120537 +executed,command,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.install",1322831120569 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831120865 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831137151 +started,bundle,org.eclipse.equinox.frameworkadmin.equinox,1.0.300.v20110506,"org.eclipse.equinox.frameworkadmin.equinox",1322831137198 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831139554 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831140911 +started,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322831141176 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831141285 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322831141597 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322831141878 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322831141878 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322831141878 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322831141878 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322831141878 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322831141878 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322831141878 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322831141878 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322831141878 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.search,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.search",1322831141878 +stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322831141878 +stopped,bundle,org.eclipse.cdt.dsf.ui,2.2.0.201109151620,"org.eclipse.cdt.dsf.ui",1322831141878 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload4.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload4.csv new file mode 100644 index 00000000..90753a2d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload4.csv @@ -0,0 +1,263 @@ +what,kind,bundleId,bundleVersion,description,time +stopped,bundle,org.eclipse.cdt.gdb.ui,7.0.0.201109151620,"org.eclipse.cdt.gdb.ui",1322831141894 +stopped,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322831141894 +stopped,bundle,org.eclipse.cdt.launch,7.0.0.201109151620,"org.eclipse.cdt.launch",1322831141894 +stopped,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322831141894 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.traditional,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.traditional",1322831141894 +stopped,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322831141894 +stopped,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322831141894 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322831141894 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322831141894 +stopped,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322831141894 +stopped,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322831141894 +stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322831141894 +stopped,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322831141909 +stopped,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322831141909 +stopped,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322831141909 +stopped,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322831141909 +stopped,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322831141909 +stopped,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322831141909 +stopped,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322831141909 +stopped,bundle,org.eclipse.compare.win32,1.0.200.I20110510-0800,"org.eclipse.compare.win32",1322831141909 +stopped,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322831141909 +stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322831141909 +stopped,bundle,org.eclipse.rse.importexport,1.2.200.v201105021534,"org.eclipse.rse.importexport",1322831141909 +stopped,bundle,org.eclipse.rse.subsystems.shells.telnet,1.2.200.v201101042155,"org.eclipse.rse.subsystems.shells.telnet",1322831141909 +stopped,bundle,org.eclipse.rse.shells.ui,3.0.301.R33x_v201107181530,"org.eclipse.rse.shells.ui",1322831141909 +stopped,bundle,org.eclipse.rse.files.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.files.ui",1322831141909 +stopped,bundle,org.eclipse.rse.processes.ui,3.0.300.v201101042155,"org.eclipse.rse.processes.ui",1322831141909 +stopped,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322831141925 +stopped,bundle,org.eclipse.mylyn.commons.team,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.team",1322831141925 +stopped,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322831141925 +stopped,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322831141925 +stopped,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322831141925 +stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322831141925 +stopped,bundle,org.eclipse.mylyn.ide.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.ide.ui",1322831141925 +stopped,bundle,org.eclipse.mylyn.resources.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.resources.ui",1322831141925 +stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.tasks.ui",1322831141925 +stopped,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322831141925 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322831170535 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322831170551 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322831170551 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322831170551 +started,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322831170551 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322831170551 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322831170551 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322831170551 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322831170551 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322831170551 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322831170551 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322831170551 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322831170551 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322831170551 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322831170567 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322831170567 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322831170567 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322831170567 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322831170567 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322831170567 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322831170567 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322831170567 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322831170567 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322831170567 +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322831170567 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322831170567 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322831170567 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322831170567 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322831170567 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322831170567 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322831170567 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322831170567 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322831170567 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322831170567 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322831170567 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322831170582 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322831170582 +started,bundle,org.eclipse.equinox.p2.artifact.repository,1.1.101.R37x_v20110714,"org.eclipse.equinox.p2.artifact.repository",1322831170582 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322831170582 +started,bundle,org.eclipse.equinox.p2.director,2.1.0.v20110504-1715,"org.eclipse.equinox.p2.director",1322831170582 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322831170582 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322831170598 +started,bundle,org.eclipse.equinox.p2.extensionlocation,1.2.100.v20110510,"org.eclipse.equinox.p2.extensionlocation",1322831170598 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322831170598 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322831170598 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322831170598 +started,bundle,org.eclipse.equinox.p2.publisher,1.2.0.v20110511,"org.eclipse.equinox.p2.publisher",1322831170598 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322831170598 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322831170598 +started,bundle,org.eclipse.equinox.p2.touchpoint.eclipse,2.1.1.R37x_v20110815-0935,"org.eclipse.equinox.p2.touchpoint.eclipse",1322831170598 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322831170598 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322831170598 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322831170598 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322831170598 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322831170598 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322831170598 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322831170598 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322831170598 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322831170598 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322831170598 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322831170598 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322831170598 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322831170598 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322831170598 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322831170613 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322831170613 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322831170613 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322831170613 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322831170613 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322831170613 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322831170613 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322831170613 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322831170613 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322831170613 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322831170613 +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322831170613 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322831170613 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322831170613 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322831170613 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322831170613 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322831170613 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322831170613 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322831170613 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322831170613 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322831170613 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322831170613 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322831170613 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322831170613 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322831170613 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322831170613 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322831170613 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322831170613 +started,bundle,org.eclipse.cdt.cross.arm.gnu,0.5.4.201111262136,"org.eclipse.cdt.cross.arm.gnu",1322831170613 +os,sysinfo,,,"win32",1322831170613 +arch,sysinfo,,,"x86",1322831170613 +ws,sysinfo,,,"win32",1322831170613 +locale,sysinfo,,,"de_DE",1322831170613 +processors,sysinfo,,,"2",1322831170613 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322831170613 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322831170613 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322831170613 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322831170613 +java.specification.version,sysinfo,,,"1.6",1322831170613 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322831170613 +java.version,sysinfo,,,"1.6.0_24",1322831170613 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322831170613 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322831170613 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322831170613 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322831170613 +java.vm.specification.version,sysinfo,,,"1.0",1322831170613 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322831170613 +java.vm.version,sysinfo,,,"19.1-b02",1322831170613 +started,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322831170816 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831173874 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322831174248 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322831175278 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831176354 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831179271 +started,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322831179287 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831179396 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322831179412 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322831179412 +started,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322831189708 +started,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322831189817 +started,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322831189989 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831190129 +started,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322831215697 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831217164 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831220970 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831251437 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322831255353 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831257817 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831257927 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831259892 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831260547 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831265103 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322831265103 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322831265103 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831269814 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831414192 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322831414285 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831420588 +started,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322831422132 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831429105 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831429417 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831429511 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831436500 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831439713 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831449344 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322831449505 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831450110 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831459375 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322831463131 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831466224 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831466284 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831466284 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831468009 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831469593 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831469710 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831469710 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831471469 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831471566 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831475369 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831477923 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831562273 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322831562351 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831563162 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831564160 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831564160 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831565814 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831565954 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831571149 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831575907 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322831581508 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831582022 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831582054 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831582303 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831582412 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831586640 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831588730 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322831594019 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831596000 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831611959 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831612021 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831614112 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322831626794 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322831634173 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322831642129 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322831648806 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831652659 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322831652722 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831654874 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831655046 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831655046 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831655982 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831691300 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831697540 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831699818 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831713078 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322831713156 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831714872 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831720691 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831725449 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831725464 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831725574 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831727492 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831729162 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831753778 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831755822 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831815508 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322831815539 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322831815554 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831837628 +started,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322831845210 +executed,command,,,"AUTOGEN:::org.eclipse.cdt.debug.ui.CEditor.BreakpointRulerActions/org.eclipse.cdt.debug.ui.CEditor.RulerTobbleBreakpointAction",1322831845241 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322831850264 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831850280 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831851934 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322831854991 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831869094 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322831869203 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831877518 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831879655 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831915582 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322831915675 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload5.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload5.csv new file mode 100644 index 00000000..ff5cfe62 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload5.csv @@ -0,0 +1,276 @@ +what,kind,bundleId,bundleVersion,description,time +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322831917032 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322831924286 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322831926361 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322832005001 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832021084 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832021178 +started,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322832022348 +started,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322832022426 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832023081 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832026997 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322832027418 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832034828 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832047542 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322832047651 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832050116 +started,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322832127320 +started,bundle,org.eclipse.core.externaltools,1.0.100.v20110506,"org.eclipse.core.externaltools",1322832127461 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322832197146 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832205008 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832205118 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832210796 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832233915 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832233993 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832239765 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832240062 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832241793 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832241824 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832241856 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832274350 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322832278110 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832278984 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832282088 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832284428 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832287330 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832287423 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322832287766 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322832290434 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832290762 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832329106 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322832329980 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832353458 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832368294 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322832368325 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832372209 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832416861 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832418808 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322832427372 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832435874 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832435968 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832436779 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832441131 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322832441209 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322832442208 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832442520 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832447562 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832452490 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832458365 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322832458397 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832461066 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832472023 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832472111 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322832472704 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322832473576 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832473901 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832478629 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832481346 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832484350 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322832484412 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832486412 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322832568325 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322832581711 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832585767 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832585845 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322832586781 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322832587452 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832587811 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832592778 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322832598425 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832600656 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322832630732 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322832642418 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832645809 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832645902 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832646511 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832648512 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322832648606 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322832649304 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832649665 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832654928 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832664291 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832675609 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322832675655 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832677668 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.cut",1322832699477 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322832707261 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832710100 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832710209 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322832710646 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322832711723 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832712019 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832717518 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832720512 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832734755 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322832734820 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832737187 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832783258 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832783398 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832792852 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832814832 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832814910 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322832818615 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832821217 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832881754 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322832883298 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322832887510 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832892128 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832927923 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322832931115 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832933068 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832960241 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322832960382 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322832961021 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832962581 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322832997096 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833017162 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833024682 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322833028925 +executed,command,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.commands.runCodanCommand",1322833031421 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833031751 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833037582 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833037712 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322833043605 +executed,command,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.commands.runCodanCommand",1322833045495 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833045823 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833050190 +opened,view,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search.ui.views.SearchView",1322833068713 +activated,view,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search.ui.views.SearchView",1322833068822 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322833092893 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833117890 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322833119018 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833120812 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322833132672 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833132953 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833133078 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322833158195 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322833159630 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322833160363 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322833161627 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833161970 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833166347 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322833169498 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322833170855 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322833172025 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833172306 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833175879 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833180362 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833324203 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322833324500 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.save",1322833344499 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322833345622 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833345934 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833352703 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322833355543 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833361845 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833368308 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322833404017 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322833407542 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833547318 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322833547474 +error,log,,,"Variable references non-existent resource : ${workspace_loc:/Prog../../../Host/MicroBoot.exe}",1322833551606 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833551668 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833571226 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833575626 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833599027 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322833599090 +error,log,,,"Variable references non-existent resource : ${workspace_loc:/../../Host/MicroBoot.exe}",1322833602647 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833602680 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833632051 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833635639 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833642925 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322833642956 +error,log,,,"Variable references non-existent resource : ${workspace_loc:/../../../Host/MicroBoot.exe}",1322833646513 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833646544 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833649274 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833653720 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833692439 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322833692486 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833696526 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833704186 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322833706206 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833708433 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322833717855 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833719649 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322833719743 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833725272 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322833727875 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833730916 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322833730947 +error,log,,,"Reference to undefined variable BuildArtifactFileBaseName",1322833737176 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833737208 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833743653 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833745135 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833751875 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833761001 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833772903 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322833818923 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833824727 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322833824758 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322833825944 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833827977 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322833851201 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322833856021 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322833889000 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833894428 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322833894506 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833899920 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833900060 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833901082 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322833936684 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833944203 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833944296 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833971260 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833971261 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833977960 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833977960 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322833988600 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833988818 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833988912 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833998359 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322833998359 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322834011391 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834015160 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834031160 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834034675 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322834034738 +error,log,,,"Reference to undefined variable OUTPUT_FILE_NAME",1322834038690 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834038736 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834043540 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834047869 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322834075932 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834090408 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834102292 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322834102370 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834107481 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834110294 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834115721 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322834115736 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834116532 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322834117678 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834124229 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834126943 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322834129350 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834133106 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834135882 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834142544 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834152808 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322834152855 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834155570 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834158284 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322834159095 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834159360 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834162184 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322834163432 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834163666 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834166458 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834223321 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834227611 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.window.preferences",1322834227657 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834231370 +started,bundle,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view",1322834234537 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834429142 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.window.preferences",1322834429187 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834434710 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834457080 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.window.preferences",1322834457221 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload6.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload6.csv new file mode 100644 index 00000000..8eb4315a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload6.csv @@ -0,0 +1,276 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322834468520 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834468832 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834472513 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322834474916 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834475212 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834478847 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildProject",1322834487733 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834488045 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834490947 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322834493146 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834493443 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834496360 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322834508155 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834508375 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834508470 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322834514298 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834521630 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834527362 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322834528241 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834528465 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834531207 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834536397 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834541734 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322834542600 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834542740 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834545470 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834555821 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834555821 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322834558832 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834603032 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834611019 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834613141 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834613468 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834615949 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834628054 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834635495 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834649395 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834651735 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834654605 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322834654605 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322834654605 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834658786 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834670970 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834673606 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834694292 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834697238 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834764476 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834803496 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322834803636 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834807489 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322834821826 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834823760 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322834823838 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834827255 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834850873 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834886035 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834893726 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834909045 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322834915894 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322834988867 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322834988991 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322834993088 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834995876 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322834996154 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834996154 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834997761 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322834997928 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322834999663 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835014845 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835072581 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322835072627 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835077743 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835157492 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835160217 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322835233509 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322835238454 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322835268219 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322835275208 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835300058 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322835300105 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322835304835 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835316085 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835339820 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322835344888 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835350868 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835399769 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322835399862 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835402421 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322835408395 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322835457442 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835494429 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322835494461 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322835494835 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322835498189 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835504679 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322835544412 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322835568873 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835601289 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322835601352 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322835603629 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835609495 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835623285 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322835623317 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835626421 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835818046 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835822832 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835880186 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835884008 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322835890888 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322835935888 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835943579 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322835943594 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835949179 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835974576 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835976432 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835976448 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835976588 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835982563 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835986681 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835988163 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322835988195 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322835988195 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322835997766 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836019871 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836045002 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836049682 +executed,command,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.excludeCommand",1322836049838 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836058169 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836064050 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322836064066 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322836064066 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836081195 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836159657 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836168054 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836170812 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836171036 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836178417 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836185328 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322836185328 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322836185328 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836189665 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836244288 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836253544 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322836307036 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836312293 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836312325 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836318315 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322836323915 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836328112 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836328143 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836335647 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836346364 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322836349468 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836352713 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836356192 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836356223 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836364725 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322836392867 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836398983 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322836417843 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836421837 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836436017 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836436033 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836439527 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836440822 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836440837 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322836444909 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836463832 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836465158 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322836465173 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322836465173 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836469807 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836519898 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836525358 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836526263 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322836526279 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322836526279 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836529929 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836557011 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836571456 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836579896 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836579927 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836586323 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322836615386 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836639009 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836650350 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836667822 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836677011 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836751563 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836751610 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322836767413 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836771500 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836804830 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836813330 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836813517 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836819975 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836834967 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322836835014 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836835997 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836850161 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836850768 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836883747 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322836925685 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322836925778 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322836934717 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322836944506 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322836975628 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322836975753 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322836976205 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322836977812 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836978218 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322836986174 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322836988467 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322836989668 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322836990666 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322837000557 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837001165 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322837009534 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322837009613 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322837022611 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837023289 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322837023875 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837024286 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322837024731 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837025064 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322837025470 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837025782 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322837026162 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837026485 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322837026895 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837027191 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322837027784 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837028111 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.undo",1322837029375 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322837030327 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837043977 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837045365 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837046722 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322837049873 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837058079 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322837058141 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837059249 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837060747 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837071199 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837078047 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837078156 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837078546 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837078687 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837079030 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837079170 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837079498 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837079654 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837080028 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837080153 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837080652 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837080824 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837081183 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837081307 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837081760 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837081885 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837082524 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837082633 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837083101 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837083195 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837083679 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837083772 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837084162 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837084287 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837084661 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837084802 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837085129 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837085285 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837085722 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837086050 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837086533 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload7.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload7.csv new file mode 100644 index 00000000..61282458 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload7.csv @@ -0,0 +1,276 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837086658 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837087033 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837087173 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837087547 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837087688 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837088062 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837088203 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837088593 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837088717 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837089076 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837089217 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837089591 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837089747 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837090121 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837090262 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837090699 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837090823 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837091213 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837091354 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837092493 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837092649 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837092945 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837093101 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837093444 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837093616 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837093928 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837094084 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837094411 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837095269 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837095769 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837095940 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837096346 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837096549 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837097157 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837097329 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837097687 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837097859 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837098171 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837098343 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837098764 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837098951 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837099294 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837099528 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837099762 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837099949 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837100277 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837100449 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837100792 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837100948 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837101275 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837101431 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837101759 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837101915 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837102367 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837102601 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837102991 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837103147 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837103475 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837103647 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837104099 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837104317 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837104785 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837104973 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837105269 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837105456 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837105909 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837106236 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837110823 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837110963 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837111291 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837111447 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837111790 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837111961 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837112305 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837112476 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837112819 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837112991 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837113303 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837113506 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837113865 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837114130 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837114489 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837114738 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837115081 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837115315 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837115690 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837115877 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837116251 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837116501 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837117078 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837117281 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837117655 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837117858 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837118279 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837118451 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837118810 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837118997 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837119340 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837119512 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837119871 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837120027 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837120354 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837120510 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837120838 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837120994 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837121353 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837121509 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837125034 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837125175 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837125689 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837125861 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837126251 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837126423 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837126891 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837127047 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837128981 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837129574 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837130057 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837130541 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837131149 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837131321 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837132226 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837133411 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837133583 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837133739 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837134332 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837134503 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837134659 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837135018 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837135190 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837135346 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837135689 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837135845 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837136032 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837136360 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837136516 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837136672 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837137015 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837137171 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837137343 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837137655 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837137826 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837137998 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837138325 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837138513 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837138669 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837140229 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837140603 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837140946 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837141289 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837141648 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837141976 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837142303 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837142631 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837142974 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837143349 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837143614 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837143910 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837144363 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837144706 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837145065 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837145408 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837145751 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837146079 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837146406 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837146765 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837147077 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837147420 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837147732 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837148044 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837148356 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837148684 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837149011 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837149807 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837150415 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837150743 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837151102 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837151507 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837152022 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837153567 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837153957 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837154362 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837154815 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837155298 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837156234 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837156858 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837160743 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837161122 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837161556 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837161999 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837162389 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837162842 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837163314 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837163751 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837164188 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837164625 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837165030 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837165498 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837165951 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837166388 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837166856 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837167277 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837167714 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837168213 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837169164 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837169554 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837170069 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837170678 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837171317 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837171910 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837172643 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837173080 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837173688 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837174749 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837175326 +executed,command,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.project.buildAll",1322837178424 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837178767 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837181700 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322837181984 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322837187709 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837200396 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837200911 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837200958 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201005 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201052 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201083 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201130 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201176 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201205 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201238 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201476 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201645 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837201809 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837202022 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837202139 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837230885 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231384 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231431 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231477 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231524 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231571 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231618 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231665 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231711 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231758 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231805 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231852 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231899 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231945 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837231992 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837232039 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837232413 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837232601 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837232757 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322837239574 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322837248372 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837258271 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322837258334 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322837260081 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837262982 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837267772 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268286 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268349 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268396 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268411 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268458 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268505 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268552 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268598 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268645 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268692 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268739 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268786 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837268832 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837269098 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload8.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload8.csv new file mode 100644 index 00000000..d894e9f8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload8.csv @@ -0,0 +1,267 @@ +what,kind,bundleId,bundleVersion,description,time +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837269222 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837269378 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837269503 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322837269675 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837278052 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837283496 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837901463 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837962171 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837968135 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837980886 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322837984399 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322838027800 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838061541 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322838061611 +started,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322838070689 +started,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322838070783 +started,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322838070783 +started,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322838070799 +started,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322838070892 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838092235 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838095059 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322838098662 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838115930 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838118723 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838122529 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838147442 +failed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations",1322838147474 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838165421 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322838165577 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838165577 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838169259 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838169384 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838183221 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838183720 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838183767 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838183814 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838183860 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838183907 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838183954 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184001 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184048 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184094 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184141 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184188 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184235 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184282 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184328 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184375 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184422 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838184469 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838185530 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838185545 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838185920 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322838186341 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322838205732 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838208212 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838208368 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838208555 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838208696 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838217316 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838217831 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838217877 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838217924 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838217947 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838217980 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218013 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218046 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218069 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218099 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218144 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218177 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218197 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218243 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218275 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218304 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218342 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218370 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218399 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218432 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218465 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838218498 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322838219458 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322838222711 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322838223346 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838231281 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.findReplace",1322838231389 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322838233946 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838236799 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246096 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246679 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246710 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246757 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246804 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246851 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246897 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246944 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838246991 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838247038 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838247085 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838247147 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838247178 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838247225 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838247693 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838247833 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838247974 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838252799 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838258399 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322838260755 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838263750 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838266511 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322838276995 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838280130 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838282923 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322838286152 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838286214 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838288055 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838292595 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838295276 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322838300578 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838300876 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838302478 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838308717 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838311525 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838324676 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325159 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325206 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325268 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325315 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325362 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325409 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325456 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325502 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325658 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325674 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325690 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325736 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325768 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325814 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325877 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325924 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838325955 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322838326392 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838330697 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838336554 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322838338987 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838345149 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838345258 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838352216 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838352216 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322838353136 +closed,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838353136 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838359080 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838359252 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322838362746 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322838381762 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838388034 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322838388595 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322838388595 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322838388595 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322838388595 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322838388595 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322838388595 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322838388595 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.search,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.search",1322838388595 +stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.dsf.ui,2.2.0.201109151620,"org.eclipse.cdt.dsf.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.gdb.ui,7.0.0.201109151620,"org.eclipse.cdt.gdb.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322838388595 +stopped,bundle,org.eclipse.cdt.launch,7.0.0.201109151620,"org.eclipse.cdt.launch",1322838388595 +stopped,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.traditional,1.2.0.201109151620,"org.eclipse.cdt.debug.ui.memory.traditional",1322838388595 +stopped,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322838388595 +stopped,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322838388595 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.ui,1.0.1.201108301805,"org.eclipse.linuxtools.cdt.autotools.ui",1322838388595 +stopped,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322838388595 +stopped,bundle,org.eclipse.cdt.cross.arm.gnu,0.5.4.201111262136,"org.eclipse.cdt.cross.arm.gnu",1322838388595 +stopped,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322838388595 +stopped,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322838388595 +stopped,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322838388595 +stopped,bundle,org.eclipse.cdt.mylyn.ui,3.6.0.v20110608-1400,"org.eclipse.cdt.mylyn.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322838388595 +stopped,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322838388611 +stopped,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322838388611 +stopped,bundle,org.eclipse.compare.win32,1.0.200.I20110510-0800,"org.eclipse.compare.win32",1322838388611 +stopped,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322838388611 +stopped,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322838388611 +stopped,bundle,org.eclipse.rse.importexport,1.2.200.v201105021534,"org.eclipse.rse.importexport",1322838388611 +stopped,bundle,org.eclipse.rse.subsystems.shells.telnet,1.2.200.v201101042155,"org.eclipse.rse.subsystems.shells.telnet",1322838388611 +stopped,bundle,org.eclipse.rse.shells.ui,3.0.301.R33x_v201107181530,"org.eclipse.rse.shells.ui",1322838388611 +stopped,bundle,org.eclipse.rse.files.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.files.ui",1322838388611 +stopped,bundle,org.eclipse.rse.processes.ui,3.0.300.v201101042155,"org.eclipse.rse.processes.ui",1322838388611 +stopped,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322838388704 +stopped,bundle,org.eclipse.mylyn.commons.team,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.team",1322838388704 +stopped,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322838388704 +stopped,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322838388704 +stopped,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322838388704 +stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322838388704 +stopped,bundle,org.eclipse.mylyn.ide.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.ide.ui",1322838388704 +stopped,bundle,org.eclipse.mylyn.resources.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.resources.ui",1322838388704 +stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.tasks.ui",1322838388704 +stopped,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322838388704 +stopped,bundle,org.eclipse.mylyn.help.ui,3.6.1.v20110830-0100,"org.eclipse.mylyn.help.ui",1322838388704 +stopped,bundle,org.eclipse.mylyn.tasks.bugs,3.6.1.v20110825-0100,"org.eclipse.mylyn.tasks.bugs",1322838388704 +stopped,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322838388704 +stopped,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322838388704 +stopped,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322838388704 +stopped,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322838388704 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.transport,2.1.0.201109151620,"org.eclipse.cdt.debug.ui.memory.transport",1322838388704 +stopped,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322838388704 +stopped,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322838388736 +stopped,bundle,org.eclipse.mylyn.wikitext.ui,1.5.0.v20110608-1400,"org.eclipse.mylyn.wikitext.ui",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.files.dstore,2.1.201.R33x_v201109141647,"org.eclipse.rse.subsystems.files.dstore",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.processes.dstore,2.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.dstore",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.shells.dstore,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.dstore",1322838388736 +stopped,bundle,org.eclipse.rse.connectorservice.dstore,3.1.200.v201103141607,"org.eclipse.rse.connectorservice.dstore",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.files.local,2.1.200.v201101042155,"org.eclipse.rse.subsystems.files.local",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.processes.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.local",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.shells.local,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.local",1322838388736 +stopped,bundle,org.eclipse.rse.connectorservice.local,2.1.300.v201101042155,"org.eclipse.rse.connectorservice.local",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.files.ssh,2.1.200.v201101042155,"org.eclipse.rse.subsystems.files.ssh",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.shells.ssh,2.1.300.v201101042155,"org.eclipse.rse.subsystems.shells.ssh",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.terminals.ssh,1.0.100.v201101042155,"org.eclipse.rse.subsystems.terminals.ssh",1322838388736 +stopped,bundle,org.eclipse.rse.connectorservice.ssh,2.1.200.v201101042155,"org.eclipse.rse.connectorservice.ssh",1322838388736 +stopped,bundle,org.eclipse.rse.connectorservice.telnet,1.2.200.v201101042155,"org.eclipse.rse.connectorservice.telnet",1322838388736 +stopped,bundle,org.eclipse.rse.dstore.security,3.0.300.v201103141607,"org.eclipse.rse.dstore.security",1322838388736 +stopped,bundle,org.eclipse.rse.efs,2.1.300.v201101042155,"org.eclipse.rse.efs",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.files.ftp,2.1.301.R33x_v201107212114,"org.eclipse.rse.subsystems.files.ftp",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.shells.core,3.1.201.R33x_v201106281309,"org.eclipse.rse.subsystems.shells.core",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.files.core,3.2.101.R33x_v201107181530,"org.eclipse.rse.subsystems.files.core",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.processes.shell.linux,1.1.300.v201101042155,"org.eclipse.rse.subsystems.processes.shell.linux",1322838388736 +stopped,bundle,org.eclipse.rse.subsystems.processes.core,3.1.200.v201101042155,"org.eclipse.rse.subsystems.processes.core",1322838388751 +stopped,bundle,org.eclipse.rse.terminals.ui,1.1.0.v201101042155,"org.eclipse.rse.terminals.ui",1322838388751 +stopped,bundle,org.eclipse.rse.ui,3.2.1.R33x_v201109141647,"org.eclipse.rse.ui",1322838388751 +stopped,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322838388751 +stopped,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322838388751 +stopped,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322838388751 +activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1322838917771 +started,bundle,org.eclipse.osgi,3.7.1.R37x_v20110808-1106,"org.eclipse.osgi",1322838917771 +started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110502-1955,"org.eclipse.equinox.simpleconfigurator",1322838917786 +started,bundle,com.ibm.icu,4.4.2.v20110208,"com.ibm.icu",1322838917786 +started,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322838917786 +started,bundle,org.eclipse.cdt.codan.core,2.0.0.201109151620,"org.eclipse.cdt.codan.core",1322838917786 +started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322838917786 +started,bundle,org.eclipse.cdt.codan.ui,2.0.0.201109151620,"org.eclipse.cdt.codan.ui",1322838917786 +started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322838917786 +started,bundle,org.eclipse.cdt.core,5.3.1.201109151620,"org.eclipse.cdt.core",1322838917786 +started,bundle,org.eclipse.cdt.make.core,7.1.1.201109151620,"org.eclipse.cdt.make.core",1322838917786 +started,bundle,org.eclipse.cdt.make.ui,7.1.1.201109151620,"org.eclipse.cdt.make.ui",1322838917786 +started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.core",1322838917786 +started,bundle,org.eclipse.cdt.msw.build,1.0.0.201109151620,"org.eclipse.cdt.msw.build",1322838917786 +started,bundle,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui",1322838917786 +started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1322838917786 +started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1322838917786 +started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1322838917786 +started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1322838917786 +started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110505-0800,"org.eclipse.core.filebuffers",1322838917786 +started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1322838917802 +started,bundle,org.eclipse.core.jobs,3.5.100.v20110404,"org.eclipse.core.jobs",1322838917802 +started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1322838917802 +started,bundle,org.eclipse.core.resources,3.7.100.v20110510-0712,"org.eclipse.core.resources",1322838917802 +started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1322838917802 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload9.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload9.csv new file mode 100644 index 00000000..612bbbba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/upload9.csv @@ -0,0 +1,276 @@ +what,kind,bundleId,bundleVersion,description,time +started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1322838917802 +started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1322838917802 +started,bundle,org.eclipse.core.variables,3.2.500.v20110511,"org.eclipse.core.variables",1322838917802 +started,bundle,org.eclipse.debug.core,3.7.0.v20110518,"org.eclipse.debug.core",1322838917802 +started,bundle,org.eclipse.egit.core,1.1.0.201109151100-r,"org.eclipse.egit.core",1322838917802 +started,bundle,org.eclipse.egit.ui,1.1.0.201109151100-r,"org.eclipse.egit.ui",1322838917802 +started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1322838917802 +started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1322838917802 +started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1322838917802 +started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1322838917802 +started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1322838917818 +started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1322838917818 +started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1322838917818 +started,bundle,org.eclipse.equinox.p2.core,2.1.0.v20110502-1955,"org.eclipse.equinox.p2.core",1322838917818 +started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110502-1955,"org.eclipse.equinox.p2.directorywatcher",1322838917818 +started,bundle,org.eclipse.equinox.p2.engine,2.1.0.v20110511,"org.eclipse.equinox.p2.engine",1322838917818 +started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110510,"org.eclipse.equinox.p2.metadata",1322838917818 +started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110511-1359,"org.eclipse.equinox.p2.metadata.repository",1322838917818 +started,bundle,org.eclipse.equinox.p2.operations,2.1.0.v20110511-1821,"org.eclipse.equinox.p2.operations",1322838917818 +started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110510,"org.eclipse.equinox.p2.reconciler.dropins",1322838917818 +started,bundle,org.eclipse.equinox.p2.repository,2.1.0.v20110601,"org.eclipse.equinox.p2.repository",1322838917818 +started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.scheduler",1322838917818 +started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110502-1955,"org.eclipse.equinox.p2.updatechecker",1322838917818 +started,bundle,org.eclipse.equinox.preferences,3.4.1.R37x_v20110725,"org.eclipse.equinox.preferences",1322838917818 +started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1322838917818 +started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1322838917864 +started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1322838917864 +started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1322838917864 +started,bundle,org.eclipse.jface,3.7.0.I20110522-1430,"org.eclipse.jface",1322838917864 +started,bundle,org.eclipse.jgit,1.1.0.201109151100-r,"org.eclipse.jgit",1322838917864 +started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1322838917864 +started,bundle,org.eclipse.linuxtools.cdt.autotools.core,1.0.2.201108301805,"org.eclipse.linuxtools.cdt.autotools.core",1322838917864 +started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r371_v20110824-0800,"org.eclipse.ltk.core.refactoring",1322838917864 +started,bundle,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring",1322838917864 +started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.2.v20110903-0100,"org.eclipse.mylyn.bugzilla.core",1322838917864 +started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1322838917864 +started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1322838917864 +started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1322838917864 +started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1322838917864 +started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1322838917864 +started,bundle,org.eclipse.mylyn.context.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.context.ui",1322838917880 +started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1322838917880 +started,bundle,org.eclipse.mylyn.tasks.ui,3.6.2.v20110826-0100,"org.eclipse.mylyn.tasks.ui",1322838917880 +started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1322838917880 +started,bundle,org.eclipse.search,3.7.0.v20110505-0800,"org.eclipse.search",1322838917880 +started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1322838917880 +started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1322838917880 +started,bundle,org.eclipse.team.cvs.ui,3.3.400.I20110510-0800,"org.eclipse.team.cvs.ui",1322838917880 +started,bundle,org.eclipse.team.ui,3.6.100.I20110525-0800,"org.eclipse.team.ui",1322838917880 +started,bundle,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui",1322838917880 +started,bundle,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console",1322838917880 +started,bundle,org.eclipse.ui.editors,3.7.0.v20110517-0800,"org.eclipse.ui.editors",1322838917880 +started,bundle,org.eclipse.ui.forms,3.5.100.v20110425,"org.eclipse.ui.forms",1322838917880 +started,bundle,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.ide",1322838917896 +started,bundle,org.eclipse.ui.navigator,3.5.100.v20110809-2227,"org.eclipse.ui.navigator",1322838917896 +started,bundle,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.resources",1322838917896 +started,bundle,org.eclipse.ui.net,1.2.100.I20110511-0800,"org.eclipse.ui.net",1322838917896 +started,bundle,org.eclipse.ui.views,3.6.0.I20110412-0800,"org.eclipse.ui.views",1322838917896 +started,bundle,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"org.eclipse.ui.workbench",1322838917896 +started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.workbench.texteditor",1322838917896 +started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1322838917896 +started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1322838917896 +started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1322838917896 +started,bundle,org.eclipse.cdt.cross.arm.gnu,0.5.4.201111262136,"org.eclipse.cdt.cross.arm.gnu",1322838917927 +os,sysinfo,,,"win32",1322838917927 +arch,sysinfo,,,"x86",1322838917927 +ws,sysinfo,,,"win32",1322838917927 +locale,sysinfo,,,"de_DE",1322838917927 +processors,sysinfo,,,"2",1322838917927 +java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1322838917927 +java.runtime.version,sysinfo,,,"1.6.0_24-b07",1322838917927 +java.specification.name,sysinfo,,,"Java Platform API Specification",1322838917927 +java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322838917927 +java.specification.version,sysinfo,,,"1.6",1322838917927 +java.vendor,sysinfo,,,"Sun Microsystems Inc.",1322838917927 +java.version,sysinfo,,,"1.6.0_24",1322838917927 +java.vm.info,sysinfo,,,"mixed mode, sharing",1322838917927 +java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1322838917927 +java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1322838917927 +java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1322838917927 +java.vm.specification.version,sysinfo,,,"1.0",1322838917927 +java.vm.vendor,sysinfo,,,"Sun Microsystems Inc.",1322838917927 +java.vm.version,sysinfo,,,"19.1-b02",1322838917927 +opened,view,org.eclipse.ui.ide,3.7.0.v20110809-1737,"org.eclipse.ui.views.ProblemView",1322838920251 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838922685 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838930485 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838931078 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838998204 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322838999780 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839031882 +started,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk",1322839036359 +started,bundle,org.eclipse.equinox.p2.ui,2.1.0.v20110601,"org.eclipse.equinox.p2.ui",1322839036375 +started,bundle,org.eclipse.equinox.p2.transport.ecf,1.0.0.v20110510,"org.eclipse.equinox.p2.transport.ecf",1322839037217 +started,bundle,org.eclipse.ecf.filetransfer,5.0.0.v20110531-2218,"org.eclipse.ecf.filetransfer",1322839037233 +started,bundle,org.eclipse.ecf.identity,3.1.100.v20110531-2218,"org.eclipse.ecf.identity",1322839037248 +started,bundle,org.eclipse.ecf,3.1.300.v20110531-2218,"org.eclipse.ecf",1322839037264 +started,bundle,org.eclipse.ecf.provider.filetransfer.httpclient,4.0.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer.httpclient",1322839037779 +started,bundle,org.eclipse.ecf.provider.filetransfer,3.2.0.v20110531-2218,"org.eclipse.ecf.provider.filetransfer",1322839037794 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839038044 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322839057372 +started,bundle,org.eclipse.equinox.p2.updatesite,1.0.300.v20110510,"org.eclipse.equinox.p2.updatesite",1322839064049 +started,bundle,org.eclipse.equinox.p2.publisher,1.2.0.v20110511,"org.eclipse.equinox.p2.publisher",1322839064065 +started,bundle,org.eclipse.equinox.p2.publisher.eclipse,1.0.0.v20110511,"org.eclipse.equinox.p2.publisher.eclipse",1322839064813 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839087215 +executed,command,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.install",1322839087309 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839088323 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839256221 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839260612 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839274435 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839276458 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322839283370 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.help.installationDialog",1322839356467 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839357137 +executed,command,org.eclipse.equinox.p2.ui.sdk,1.0.200.v20110502-1955,"org.eclipse.equinox.p2.ui.sdk.install",1322839357215 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839360042 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839374548 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322839393664 +started,bundle,org.eclipse.compare,3.5.201.R37x_v20110817-0800,"org.eclipse.compare",1322839394022 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839395854 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839404221 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322839404290 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839408191 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839418889 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322839418960 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322839424084 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322839430415 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839439953 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839444312 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839446309 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839449444 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322839449538 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839452018 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839468679 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.window.preferences",1322839468726 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839472298 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322839476931 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839479958 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322839480083 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839482360 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322839485995 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839520128 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.window.preferences",1322839520190 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839523045 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839530346 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322839530377 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839543731 +started,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322839547677 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839549924 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322839550111 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839552326 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839554775 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322839554791 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322839554791 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839560454 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322839595850 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839607176 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839612074 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839614336 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322839614445 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839615537 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839622823 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839629125 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322839632229 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839648797 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839656597 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839674973 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322839681042 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322839684521 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839690683 +started,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322839690776 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839726391 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322839731726 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840455541 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840457350 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322840469596 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineEnd",1322840472217 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322840491717 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322840505835 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840506178 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840506319 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840566644 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840609310 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840609559 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322840617125 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322840617281 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840618030 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322840620885 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840621774 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322840628560 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840629293 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840635346 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840635471 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840635627 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840635752 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840636048 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840652522 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840658668 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322840664955 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840680617 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840695328 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840697278 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840857473 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840857598 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322840903259 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840903322 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322840916940 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840918110 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322840919156 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840922806 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840926612 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840948406 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322840948468 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322840950480 +opened,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840952259 +activated,editor,org.eclipse.cdt.ui,5.3.1.201109151620,"org.eclipse.cdt.ui.editor.CEditor",1322840952399 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322840963928 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840970292 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840970464 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840970604 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840970760 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322840971057 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322840994192 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841067465 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841097885 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841098056 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841098197 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841098649 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.select.lineEnd",1322841126948 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841135200 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322841176431 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841198130 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841198162 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841198318 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841198474 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841198770 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841200439 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841200564 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841206398 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841206554 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841206695 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841207022 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841208816 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.copy",1322841209565 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322841210330 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841226132 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841226273 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841226429 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841226569 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841226694 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841226850 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841227318 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841235726 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841235898 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841236054 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841236194 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841236350 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841236803 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841243448 +executed,command,org.eclipse.ui.workbench.texteditor,3.7.0.v20110505-0800,"org.eclipse.ui.edit.text.goto.lineStart",1322841243573 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841250562 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841255507 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841255648 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841255788 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841255944 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841256459 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841256615 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841256771 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841256974 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841257520 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841258066 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841258190 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841258346 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841258518 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841258674 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322841258830 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv new file mode 100644 index 00000000..4b2f459b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv @@ -0,0 +1,90 @@ +what,kind,bundleId,bundleVersion,description,time +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856543232 +executed,command,org.eclipse.ltk.ui.refactoring,3.6.0.v20110505-0800,"org.eclipse.ltk.ui.refactoring.commands.deleteResources",1322856543232 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.delete",1322856543232 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856547148 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856627738 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322856627816 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856640155 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856688593 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856691885 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856700980 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322856701026 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856707376 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856759136 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856767436 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856778371 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322856778418 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856783613 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856784018 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856784689 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856799353 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856805936 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.edit.paste",1322856808183 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856837589 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856843376 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856866683 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322856871628 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856877494 +started,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,8.0.1.201109151620,"org.eclipse.cdt.managedbuilder.gnu.ui",1322856877525 +error,log,,,"Problems occurred when invoking code from plug-in: ""org.eclipse.core.resources"".",1322856879147 +error,log,,,"Errors occurred during the build.",1322856880723 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856884950 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856887946 +started,bundle,org.eclipse.cdt.managedbuilder.ui,8.0.0.201109151620,"org.eclipse.cdt.managedbuilder.ui",1322856895870 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856961266 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.properties",1322856961328 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856962654 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322856996025 +started,bundle,org.eclipse.debug.ui,3.7.101.v20110817_r371,"org.eclipse.debug.ui",1322857021625 +started,bundle,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools",1322857021641 +started,bundle,org.eclipse.core.externaltools,1.0.100.v20110506,"org.eclipse.core.externaltools",1322857023247 +started,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322857026165 +started,bundle,org.eclipse.cdt.dsf,2.2.0.201109151620,"org.eclipse.cdt.dsf",1322857026445 +started,bundle,org.eclipse.cdt.dsf.gdb,4.0.1.201109151620,"org.eclipse.cdt.dsf.gdb",1322857026477 +started,bundle,org.eclipse.cdt.dsf.gdb.ui,2.2.1.201109151620,"org.eclipse.cdt.dsf.gdb.ui",1322857026477 +started,bundle,org.eclipse.cdt.debug.core,7.1.0.201109151620,"org.eclipse.cdt.debug.core",1322857026789 +started,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322857026789 +executed,command,org.eclipse.ui,3.7.0.I20110602-0100,"org.eclipse.ui.file.refresh",1322857036291 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857038116 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857040643 +started,bundle,org.eclipse.cdt.debug.ui,7.1.1.201109151620,"org.eclipse.cdt.debug.ui",1322857041096 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857042905 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857046649 +started,bundle,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view",1322857050237 +started,bundle,org.eclipse.tm.terminal,3.1.1.R33x_v201107181530,"org.eclipse.tm.terminal",1322857050237 +opened,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322857050456 +activated,view,org.eclipse.tm.terminal.view,2.2.0.v201103142315,"org.eclipse.tm.terminal.view.TerminalView",1322857050503 +started,bundle,org.eclipse.tm.terminal.serial,2.1.0.v201101042155,"org.eclipse.tm.terminal.serial",1322857051938 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322857067071 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857069692 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857069801 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857072125 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857075510 +activated,view,org.eclipse.ui.console,3.5.100.v20110511,"org.eclipse.ui.console.ConsoleView",1322857075604 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857080237 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857080362 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322857113574 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857113855 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857117693 +activated,view,org.eclipse.ui.navigator.resources,3.4.300.I20110421-1800,"org.eclipse.ui.navigator.ProjectExplorer",1322857122576 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857128129 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857128363 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857129424 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857131546 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322857170312 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857170436 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857174336 +executed,command,org.eclipse.ui.externaltools,3.2.0.v20110506,"org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar",1322857175257 +deactivated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857175382 +activated,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857179141 +closed,workbench,org.eclipse.ui.workbench,3.7.0.I20110519-0100,"",1322857223040 +stopped,bundle,org.eclipse.cdt.build.crossgcc,1.0.0.201109151620,"org.eclipse.cdt.build.crossgcc",1322857223601 +stopped,bundle,org.eclipse.cdt.codan.checkers.ui,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers.ui",1322857223601 +stopped,bundle,org.eclipse.cdt.codan.checkers,1.0.0.201109151620,"org.eclipse.cdt.codan.checkers",1322857223601 +stopped,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201109151620,"org.eclipse.cdt.codan.ui.cxx",1322857223601 +stopped,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201109151620,"org.eclipse.cdt.codan.core.cxx",1322857223601 +stopped,bundle,org.eclipse.cdt.launch.remote,2.3.0.201109151620,"org.eclipse.cdt.launch.remote",1322857223601 +stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.1.0.201109151620,"org.eclipse.cdt.debug.mi.ui",1322857223601 +stopped,bundle,org.eclipse.cdt.debug.mi.core,7.1.1.201109151620,"org.eclipse.cdt.debug.mi.core",1322857223601 +stopped,bundle,org.eclipse.cdt.debug.ui.memory.memorybrowser,1.2.100.201109151620,"org.eclipse.cdt.debug.ui.memory.memorybrowser",1322857223648 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml new file mode 100644 index 00000000..f9111756 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml @@ -0,0 +1,41 @@ + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + + + + +
    +
    + + + + + +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2011/12/48/refactorings.history b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2011/12/48/refactorings.history new file mode 100644 index 00000000..6cef866c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2011/12/48/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2011/12/48/refactorings.index b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2011/12/48/refactorings.index new file mode 100644 index 00000000..b189a32b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2011/12/48/refactorings.index @@ -0,0 +1,10 @@ +1322831179147 Delete resource 'Prog' +1322831264978 Delete resource 'Prog/makefile' +1322834654449 Delete resource 'Boot' +1322835988007 Delete resource 'Boot/sources' +1322836063894 Delete resource 'Boot/openblt_root' +1322836185156 Delete resource 'Boot/sources' +1322836465080 Delete resource 'Boot/source' +1322836526185 Delete resource 'Boot/source' +1322839554604 Delete resource 'Boot/source' +1322856543092 Delete resource 'Boot/source' diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml new file mode 100644 index 00000000..ed857b0e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml @@ -0,0 +1,7 @@ + +
    +
    + + +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/.log b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/.log new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/FP.local.files_0/node.properties b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/FP.local.files_0/node.properties new file mode 100644 index 00000000..c0e0439f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/FP.local.files_0/node.properties @@ -0,0 +1,57 @@ +# RSE DOM Node +00-name=voorburg-PC\:local.files +01-type=FilterPool +03-attr.default=true +03-attr.deletable=true +03-attr.id=local.files +03-attr.nonRenamable=false +03-attr.owningParentName=null +03-attr.release=200 +03-attr.singleFilterStringOnly=false +03-attr.singleFilterStringOnlyESet=false +03-attr.stringsCaseSensitive=true +03-attr.supportsDuplicateFilterStrings=false +03-attr.supportsNestedFilters=true +03-attr.type=default +06-child.00000.00-name=My Home +06-child.00000.01-type=Filter +06-child.00000.03-attr.default=false +06-child.00000.03-attr.filterType=default +06-child.00000.03-attr.id=My Home +06-child.00000.03-attr.nonChangable=false +06-child.00000.03-attr.nonDeletable=false +06-child.00000.03-attr.nonRenamable=false +06-child.00000.03-attr.promptable=false +06-child.00000.03-attr.relativeOrder=0 +06-child.00000.03-attr.release=200 +06-child.00000.03-attr.singleFilterStringOnly=false +06-child.00000.03-attr.stringsCaseSensitive=false +06-child.00000.03-attr.stringsNonChangable=false +06-child.00000.03-attr.supportsDuplicateFilterStrings=false +06-child.00000.03-attr.supportsNestedFilters=true +06-child.00000.06-child.00000.00-name=C\:\\Users\\voorburg\\* +06-child.00000.06-child.00000.01-type=FilterString +06-child.00000.06-child.00000.03-attr.default=false +06-child.00000.06-child.00000.03-attr.string=C\:\\Users\\voorburg\\* +06-child.00000.06-child.00000.03-attr.type=default +06-child.00001.00-name=Drives +06-child.00001.01-type=Filter +06-child.00001.03-attr.default=false +06-child.00001.03-attr.filterType=default +06-child.00001.03-attr.id=Drives +06-child.00001.03-attr.nonChangable=false +06-child.00001.03-attr.nonDeletable=false +06-child.00001.03-attr.nonRenamable=false +06-child.00001.03-attr.promptable=false +06-child.00001.03-attr.relativeOrder=0 +06-child.00001.03-attr.release=200 +06-child.00001.03-attr.singleFilterStringOnly=false +06-child.00001.03-attr.stringsCaseSensitive=false +06-child.00001.03-attr.stringsNonChangable=false +06-child.00001.03-attr.supportsDuplicateFilterStrings=false +06-child.00001.03-attr.supportsNestedFilters=true +06-child.00001.06-child.00000.00-name=* +06-child.00001.06-child.00000.01-type=FilterString +06-child.00001.06-child.00000.03-attr.default=false +06-child.00001.06-child.00000.03-attr.string=* +06-child.00001.06-child.00000.03-attr.type=default diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/H.local_16/node.properties b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/H.local_16/node.properties new file mode 100644 index 00000000..f130b7d7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/H.local_16/node.properties @@ -0,0 +1,25 @@ +# RSE DOM Node +00-name=Local +01-type=Host +03-attr.description= +03-attr.hostname=LOCALHOST +03-attr.offline=false +03-attr.promptable=false +03-attr.systemType=org.eclipse.rse.systemtype.local +03-attr.type=Local +06-child.00000.00-name=Local Connector Service +06-child.00000.01-type=ConnectorService +06-child.00000.03-attr.group=Local Connector Service +06-child.00000.03-attr.port=0 +06-child.00000.03-attr.useSSL=false +06-child.00000.06-child.00000.00-name=Local Files +06-child.00000.06-child.00000.01-type=SubSystem +06-child.00000.06-child.00000.03-attr.hidden=false +06-child.00000.06-child.00000.03-attr.type=local.files +06-child.00000.06-child.00000.06-child.00000.00-name=voorburg-PC___voorburg-PC\:local.files +06-child.00000.06-child.00000.06-child.00000.01-type=FilterPoolReference +06-child.00000.06-child.00000.06-child.00000.03-attr.refID=local.files +06-child.00000.06-child.00001.00-name=Local Shells +06-child.00000.06-child.00001.01-type=SubSystem +06-child.00000.06-child.00001.03-attr.hidden=false +06-child.00000.06-child.00001.03-attr.type=local.shells diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/node.properties b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/node.properties new file mode 100644 index 00000000..aeee343b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.voorburg-pc_3/node.properties @@ -0,0 +1,7 @@ +# RSE DOM Node +00-name=voorburg-PC +01-type=Profile +03-attr.defaultPrivate=true +03-attr.isActive=true +05-ref.00000=FP.local.files_0 +05-ref.00001=H.local_16 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.ui/.log b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.rse.ui/.log new file mode 100644 index 00000000..e69de29b diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml new file mode 100644 index 00000000..925cebba --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml @@ -0,0 +1,32 @@ + +
    +
    + + + + + +
    +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    + +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.tm.terminal.view/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.tm.terminal.view/dialog_settings.xml new file mode 100644 index 00000000..ad1d9eea --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.tm.terminal.view/dialog_settings.xml @@ -0,0 +1,10 @@ + +
    +
    + + + + + +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml new file mode 100644 index 00000000..e4f30a7d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml @@ -0,0 +1,5 @@ + +
    +
    +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml new file mode 100644 index 00000000..727682fc --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml @@ -0,0 +1,32 @@ + +
    +
    + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml new file mode 100644 index 00000000..ae6d7563 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -0,0 +1,27 @@ + +
    +
    + + +
    +
    + + + + + +
    +
    + + + + + + + + + + + +
    +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml new file mode 100644 index 00000000..76ffe01f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml new file mode 100644 index 00000000..bab1c378 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/version.ini b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/version.ini new file mode 100644 index 00000000..c51ff745 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/.metadata/version.ini @@ -0,0 +1 @@ +org.eclipse.core.runtime=1 \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.cproject b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.cproject new file mode 100644 index 00000000..addd65d3 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.cproject @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.project b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.project new file mode 100644 index 00000000..8cf777cd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.project @@ -0,0 +1,125 @@ + + + Boot + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + cs-make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/Boot/Debug} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + Source + 2 + OpenBLT_ROOT/Source + + + Source/ARMCM3_STM32 + 2 + OpenBLT_ROOT/Source/ARMCM3_STM32 + + + Source/ARMCM3_STM32/GCC + 2 + OpenBLT_ROOT/Source/ARMCM3_STM32/GCC + + + + + 1322856778309 + Source + 10 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-* + + + + 1322856837433 + Source/ARMCM3_STM32 + 10 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-* + + + + + + OpenBLT_ROOT + $%7BPARENT-3-PROJECT_LOC%7D + + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.settings/org.eclipse.cdt.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 00000000..909df178 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,163 @@ +#Fri Dec 02 15:05:18 CET 2011 +eclipse.preferences.version=1 +org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.cdt.core.formatter.alignment_for_assignment=16 +org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80 +org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.cdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=34 +org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18 +org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=0 +org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 +org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48 +org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 +org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.cdt.core.formatter.alignment_for_member_access=0 +org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=16 +org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.cdt.core.formatter.brace_position_for_block=next_line +org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line +org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1 +org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.cdt.core.formatter.compact_else_if=true +org.eclipse.cdt.core.formatter.continuation_indentation=2 +org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false +org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0 +org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true +org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false +org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false +org.eclipse.cdt.core.formatter.indent_empty_lines=false +org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.cdt.core.formatter.indentation.size=2 +org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.join_wrapped_lines=true +org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.cdt.core.formatter.lineSplit=90 +org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.cdt.core.formatter.tabulation.char=space +org.eclipse.cdt.core.formatter.tabulation.size=2 +org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.settings/org.eclipse.cdt.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.settings/org.eclipse.cdt.ui.prefs new file mode 100644 index 00000000..04106acd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/.settings/org.eclipse.cdt.ui.prefs @@ -0,0 +1,4 @@ +#Fri Dec 02 15:05:18 CET 2011 +eclipse.preferences.version=1 +formatter_profile=_Feaser +formatter_settings_version=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/bin/openbtl_olimex_stm32p103.map b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/bin/openbtl_olimex_stm32p103.map new file mode 100644 index 00000000..bf988257 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/bin/openbtl_olimex_stm32p103.map @@ -0,0 +1,549 @@ + +Memory Configuration + +Name Origin Length Attributes +FLASH 0x08000000 0x00004000 xr +SRAM 0x20000000 0x00001800 xrw +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o +LOAD ./lib/CMSIS/CM3/CoreSupport/core_cm3.o +LOAD ./Source/ARMCM3_STM32/GCC/cstart.o +LOAD ./Source/ARMCM3_STM32/GCC/vectors.o +LOAD ./Source/ARMCM3_STM32/can.o +LOAD ./Source/ARMCM3_STM32/cpu.o +LOAD ./Source/ARMCM3_STM32/flash.o +LOAD ./Source/ARMCM3_STM32/nvm.o +LOAD ./Source/ARMCM3_STM32/timer.o +LOAD ./Source/ARMCM3_STM32/uart.o +LOAD ./Source/assert.o +LOAD ./Source/backdoor.o +LOAD ./Source/boot.o +LOAD ./Source/com.o +LOAD ./Source/cop.o +LOAD ./Source/xcp.o +LOAD ./hooks.o +LOAD ./main.o +START GROUP +LOAD c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a +LOAD c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a +END GROUP + 0x00000100 __STACKSIZE__ = 0x100 + +.text 0x08000000 0x14e0 + *(.isr_vector) + .isr_vector 0x08000000 0x150 ./Source/ARMCM3_STM32/GCC/vectors.o + 0x08000000 _vectab + *(.entry*) + .entry 0x08000150 0x78 ./Source/ARMCM3_STM32/GCC/cstart.o + 0x08000150 EntryFromProg + *(.text*) + .text 0x080001c8 0x20c ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + 0x080001c8 SystemInit + 0x080002f8 SystemCoreClockUpdate + .text 0x080003d4 0xa4 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + 0x080003d4 __get_PSP + 0x080003dc __set_PSP + 0x080003e4 __get_MSP + 0x080003ec __set_MSP + 0x080003f4 __get_BASEPRI + 0x080003fc __set_BASEPRI + 0x08000404 __get_PRIMASK + 0x0800040c __set_PRIMASK + 0x08000414 __get_FAULTMASK + 0x0800041c __set_FAULTMASK + 0x08000424 __get_CONTROL + 0x0800042c __set_CONTROL + 0x08000434 __REV + 0x08000438 __REV16 + 0x0800043c __REVSH + 0x08000440 __RBIT + 0x08000448 __LDREXB + 0x08000450 __LDREXH + 0x08000458 __LDREXW + 0x08000460 __STREXB + 0x08000468 __STREXH + 0x08000470 __STREXW + .text 0x08000478 0x5c ./Source/ARMCM3_STM32/GCC/cstart.o + 0x08000478 reset_handler + .text 0x080004d4 0x14 ./Source/ARMCM3_STM32/GCC/vectors.o + 0x080004d4 UnusedISR + .text 0x080004e8 0x0 ./Source/ARMCM3_STM32/can.o + .text 0x080004e8 0x50 ./Source/ARMCM3_STM32/cpu.o + 0x080004e8 CpuStartUserProgram + 0x0800050c CpuMemCopy + 0x08000530 CpuReset + .text 0x08000538 0x550 ./Source/ARMCM3_STM32/flash.o + 0x080007d4 FlashInit + 0x080007e8 FlashWrite + 0x08000840 FlashErase + 0x08000974 FlashVerifyChecksum + 0x080009dc FlashWriteChecksum + 0x08000a38 FlashDone + .text 0x08000a88 0x34 ./Source/ARMCM3_STM32/nvm.o + 0x08000a88 NvmInit + 0x08000a90 NvmWrite + 0x08000a98 NvmErase + 0x08000aa0 NvmVerifyChecksum + 0x08000aa8 NvmDone + .text 0x08000abc 0x80 ./Source/ARMCM3_STM32/timer.o + 0x08000abc TimerReset + 0x08000acc TimerUpdate + 0x08000af0 TimerSet + 0x08000afc TimerInit + 0x08000b28 TimerGet + .text 0x08000b3c 0x1a4 ./Source/ARMCM3_STM32/uart.o + 0x08000bac UartInit + 0x08000bd8 UartTransmitPacket + 0x08000c48 UartReceivePacket + .text 0x08000ce0 0x14 ./Source/assert.o + 0x08000ce0 AssertFailure + .text 0x08000cf4 0x54 ./Source/backdoor.o + 0x08000cf4 BackDoorCheck + 0x08000d2c BackDoorInit + .text 0x08000d48 0x24 ./Source/boot.o + 0x08000d48 BootInit + 0x08000d5c BootTask + .text 0x08000d6c 0x80 ./Source/com.o + 0x08000d6c ComInit + 0x08000da0 ComTask + 0x08000db8 ComTransmitPacket + 0x08000dc8 ComSetConnectEntryState + 0x08000dd8 ComIsConnectEntryState + 0x08000de4 ComIsConnected + .text 0x08000dec 0x8 ./Source/cop.o + 0x08000dec CopInit + 0x08000df0 CopService + .text 0x08000df4 0x424 ./Source/xcp.o + 0x08000e20 XcpInit + 0x08000e40 XcpIsConnected + 0x08000e54 XcpPacketTransmitted + 0x08000e68 XcpPacketReceived + .text 0x08001218 0x0 ./hooks.o + .text 0x08001218 0x174 ./main.o + 0x08001218 main + *(.rodata*) + .rodata.str1.4 + 0x0800138c 0x48 ./Source/ARMCM3_STM32/GCC/vectors.o + .rodata 0x080013d4 0xb4 ./Source/ARMCM3_STM32/flash.o + .rodata.str1.4 + 0x08001488 0x41 ./Source/ARMCM3_STM32/uart.o + 0x44 (size before relaxing) + *fill* 0x080014c9 0x3 00 + .rodata 0x080014cc 0x8 ./Source/xcp.o + .rodata.str1.4 + 0x080014d4 0xc ./main.o + 0x080014e0 _etext = . + +.glue_7 0x080014e0 0x0 + .glue_7 0x00000000 0x0 linker stubs + +.glue_7t 0x080014e0 0x0 + .glue_7t 0x00000000 0x0 linker stubs + +.vfp11_veneer 0x080014e0 0x0 + .vfp11_veneer 0x00000000 0x0 linker stubs + +.v4_bx 0x080014e0 0x0 + .v4_bx 0x00000000 0x0 linker stubs + +.data 0x20000000 0x14 load address 0x080014e0 + 0x20000000 _data = . + *(vtable) + *(.data*) + .data 0x20000000 0x14 ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + 0x20000000 SystemCoreClock + 0x20000004 AHBPrescTable + .data 0x20000014 0x0 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .data 0x20000014 0x0 ./Source/ARMCM3_STM32/GCC/cstart.o + .data 0x20000014 0x0 ./Source/ARMCM3_STM32/GCC/vectors.o + .data 0x20000014 0x0 ./Source/ARMCM3_STM32/can.o + .data 0x20000014 0x0 ./Source/ARMCM3_STM32/cpu.o + .data 0x20000014 0x0 ./Source/ARMCM3_STM32/flash.o + .data 0x20000014 0x0 ./Source/ARMCM3_STM32/nvm.o + .data 0x20000014 0x0 ./Source/ARMCM3_STM32/timer.o + .data 0x20000014 0x0 ./Source/ARMCM3_STM32/uart.o + .data 0x20000014 0x0 ./Source/assert.o + .data 0x20000014 0x0 ./Source/backdoor.o + .data 0x20000014 0x0 ./Source/boot.o + .data 0x20000014 0x0 ./Source/com.o + .data 0x20000014 0x0 ./Source/cop.o + .data 0x20000014 0x0 ./Source/xcp.o + .data 0x20000014 0x0 ./hooks.o + .data 0x20000014 0x0 ./main.o + 0x20000014 _edata = . + +.bss 0x20000014 0x5f0 load address 0x080014f4 + 0x20000014 _bss = . + *(.bss*) + .bss 0x20000014 0x0 ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .bss 0x20000014 0x0 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .bss 0x20000014 0x0 ./Source/ARMCM3_STM32/GCC/cstart.o + .bss 0x20000014 0x0 ./Source/ARMCM3_STM32/GCC/vectors.o + .bss 0x20000014 0x0 ./Source/ARMCM3_STM32/can.o + .bss 0x20000014 0x0 ./Source/ARMCM3_STM32/cpu.o + .bss 0x20000014 0x408 ./Source/ARMCM3_STM32/flash.o + .bss 0x2000041c 0x0 ./Source/ARMCM3_STM32/nvm.o + .bss 0x2000041c 0x2 ./Source/ARMCM3_STM32/timer.o + *fill* 0x2000041e 0x2 00 + .bss 0x20000420 0x48 ./Source/ARMCM3_STM32/uart.o + .bss 0x20000468 0x8 ./Source/assert.o + .bss 0x20000470 0x1 ./Source/backdoor.o + .bss 0x20000471 0x0 ./Source/boot.o + *fill* 0x20000471 0x3 00 + .bss 0x20000474 0x44 ./Source/com.o + .bss 0x200004b8 0x0 ./Source/cop.o + .bss 0x200004b8 0x4c ./Source/xcp.o + .bss 0x20000504 0x0 ./hooks.o + .bss 0x20000504 0x0 ./main.o + *(COMMON) + 0x20000504 _ebss = . + 0x20000504 _stack = . + 0x20000604 . = ALIGN (MAX ((_stack + __STACKSIZE__), .), 0x4) + *fill* 0x20000504 0x100 00 + 0x20000604 _estack = . +OUTPUT(openbtl_olimex_stm32p103.elf elf32-littlearm) + +.debug_abbrev 0x00000000 0xe63 + .debug_abbrev 0x00000000 0x1a8 ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_abbrev 0x000001a8 0xb6 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_abbrev 0x0000025e 0x86 ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_abbrev 0x000002e4 0xbe ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_abbrev 0x000003a2 0x2a ./Source/ARMCM3_STM32/can.o + .debug_abbrev 0x000003cc 0xaf ./Source/ARMCM3_STM32/cpu.o + .debug_abbrev 0x0000047b 0x211 ./Source/ARMCM3_STM32/flash.o + .debug_abbrev 0x0000068c 0xa3 ./Source/ARMCM3_STM32/nvm.o + .debug_abbrev 0x0000072f 0xdf ./Source/ARMCM3_STM32/timer.o + .debug_abbrev 0x0000080e 0x131 ./Source/ARMCM3_STM32/uart.o + .debug_abbrev 0x0000093f 0x7c ./Source/assert.o + .debug_abbrev 0x000009bb 0x5b ./Source/backdoor.o + .debug_abbrev 0x00000a16 0x3f ./Source/boot.o + .debug_abbrev 0x00000a55 0xe0 ./Source/com.o + .debug_abbrev 0x00000b35 0x3f ./Source/cop.o + .debug_abbrev 0x00000b74 0x1ba ./Source/xcp.o + .debug_abbrev 0x00000d2e 0x2c ./hooks.o + .debug_abbrev 0x00000d5a 0x109 ./main.o + +.debug_info 0x00000000 0x270f + .debug_info 0x00000000 0x4cb ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_info 0x000004cb 0x54f ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_info 0x00000a1a 0x129 ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_info 0x00000b43 0xf1 ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_info 0x00000c34 0x5e ./Source/ARMCM3_STM32/can.o + .debug_info 0x00000c92 0x13a ./Source/ARMCM3_STM32/cpu.o + .debug_info 0x00000dcc 0x671 ./Source/ARMCM3_STM32/flash.o + .debug_info 0x0000143d 0x15e ./Source/ARMCM3_STM32/nvm.o + .debug_info 0x0000159b 0x144 ./Source/ARMCM3_STM32/timer.o + .debug_info 0x000016df 0x289 ./Source/ARMCM3_STM32/uart.o + .debug_info 0x00001968 0xe4 ./Source/assert.o + .debug_info 0x00001a4c 0xa4 ./Source/backdoor.o + .debug_info 0x00001af0 0x88 ./Source/boot.o + .debug_info 0x00001b78 0x18b ./Source/com.o + .debug_info 0x00001d03 0x86 ./Source/cop.o + .debug_info 0x00001d89 0x607 ./Source/xcp.o + .debug_info 0x00002390 0x62 ./hooks.o + .debug_info 0x000023f2 0x31d ./main.o + +.debug_line 0x00000000 0x23cb + .debug_line 0x00000000 0x24d ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_line 0x0000024d 0x1b7 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_line 0x00000404 0x1ef ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_line 0x000005f3 0x1ca ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_line 0x000007bd 0x1b1 ./Source/ARMCM3_STM32/can.o + .debug_line 0x0000096e 0x1d2 ./Source/ARMCM3_STM32/cpu.o + .debug_line 0x00000b40 0x2fa ./Source/ARMCM3_STM32/flash.o + .debug_line 0x00000e3a 0x1e0 ./Source/ARMCM3_STM32/nvm.o + .debug_line 0x0000101a 0x1de ./Source/ARMCM3_STM32/timer.o + .debug_line 0x000011f8 0x219 ./Source/ARMCM3_STM32/uart.o + .debug_line 0x00001411 0x190 ./Source/assert.o + .debug_line 0x000015a1 0x19b ./Source/backdoor.o + .debug_line 0x0000173c 0x193 ./Source/boot.o + .debug_line 0x000018cf 0x1b3 ./Source/com.o + .debug_line 0x00001a82 0x18b ./Source/cop.o + .debug_line 0x00001c0d 0x26b ./Source/xcp.o + .debug_line 0x00001e78 0x17c ./hooks.o + .debug_line 0x00001ff4 0x3d7 ./main.o + +.debug_macinfo 0x00000000 0x86508 + .debug_macinfo + 0x00000000 0x33a7f ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_macinfo + 0x00033a7f 0x1f6f ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_macinfo + 0x000359ee 0x1de7 ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_macinfo + 0x000377d5 0x1de7 ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_macinfo + 0x000395bc 0x1de7 ./Source/ARMCM3_STM32/can.o + .debug_macinfo + 0x0003b3a3 0x1e8f ./Source/ARMCM3_STM32/cpu.o + .debug_macinfo + 0x0003d232 0x20a0 ./Source/ARMCM3_STM32/flash.o + .debug_macinfo + 0x0003f2d2 0x1de7 ./Source/ARMCM3_STM32/nvm.o + .debug_macinfo + 0x000410b9 0x1ead ./Source/ARMCM3_STM32/timer.o + .debug_macinfo + 0x00042f66 0x1ec8 ./Source/ARMCM3_STM32/uart.o + .debug_macinfo + 0x00044e2e 0x1de7 ./Source/assert.o + .debug_macinfo + 0x00046c15 0x1e08 ./Source/backdoor.o + .debug_macinfo + 0x00048a1d 0x1de7 ./Source/boot.o + .debug_macinfo + 0x0004a804 0x1df5 ./Source/com.o + .debug_macinfo + 0x0004c5f9 0x1de7 ./Source/cop.o + .debug_macinfo + 0x0004e3e0 0x2188 ./Source/xcp.o + .debug_macinfo + 0x00050568 0x1de7 ./hooks.o + .debug_macinfo + 0x0005234f 0x341b9 ./main.o + +.debug_loc 0x00000000 0x1163 + .debug_loc 0x00000000 0xfe ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_loc 0x000000fe 0x298 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_loc 0x00000396 0x66 ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_loc 0x000003fc 0x20 ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_loc 0x0000041c 0xee ./Source/ARMCM3_STM32/cpu.o + .debug_loc 0x0000050a 0x6e7 ./Source/ARMCM3_STM32/flash.o + .debug_loc 0x00000bf1 0xff ./Source/ARMCM3_STM32/nvm.o + .debug_loc 0x00000cf0 0x40 ./Source/ARMCM3_STM32/timer.o + .debug_loc 0x00000d30 0xff ./Source/ARMCM3_STM32/uart.o + .debug_loc 0x00000e2f 0x46 ./Source/assert.o + .debug_loc 0x00000e75 0x40 ./Source/backdoor.o + .debug_loc 0x00000eb5 0x40 ./Source/boot.o + .debug_loc 0x00000ef5 0xb2 ./Source/com.o + .debug_loc 0x00000fa7 0x190 ./Source/xcp.o + .debug_loc 0x00001137 0x2c ./main.o + +.debug_pubnames + 0x00000000 0x593 + .debug_pubnames + 0x00000000 0x61 ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_pubnames + 0x00000061 0x159 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_pubnames + 0x000001ba 0x36 ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_pubnames + 0x000001f0 0x2c ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_pubnames + 0x0000021c 0x46 ./Source/ARMCM3_STM32/cpu.o + .debug_pubnames + 0x00000262 0x7b ./Source/ARMCM3_STM32/flash.o + .debug_pubnames + 0x000002dd 0x5a ./Source/ARMCM3_STM32/nvm.o + .debug_pubnames + 0x00000337 0x59 ./Source/ARMCM3_STM32/timer.o + .debug_pubnames + 0x00000390 0x4c ./Source/ARMCM3_STM32/uart.o + .debug_pubnames + 0x000003dc 0x24 ./Source/assert.o + .debug_pubnames + 0x00000400 0x35 ./Source/backdoor.o + .debug_pubnames + 0x00000435 0x2c ./Source/boot.o + .debug_pubnames + 0x00000461 0x8a ./Source/com.o + .debug_pubnames + 0x000004eb 0x2d ./Source/cop.o + .debug_pubnames + 0x00000518 0x60 ./Source/xcp.o + .debug_pubnames + 0x00000578 0x1b ./main.o + +.debug_pubtypes + 0x00000000 0x471 + .debug_pubtypes + 0x00000000 0x67 ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_pubtypes + 0x00000067 0x50 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_pubtypes + 0x000000b7 0x21 ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_pubtypes + 0x000000d8 0x2e ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_pubtypes + 0x00000106 0x12 ./Source/ARMCM3_STM32/can.o + .debug_pubtypes + 0x00000118 0x4b ./Source/ARMCM3_STM32/cpu.o + .debug_pubtypes + 0x00000163 0x8c ./Source/ARMCM3_STM32/flash.o + .debug_pubtypes + 0x000001ef 0x49 ./Source/ARMCM3_STM32/nvm.o + .debug_pubtypes + 0x00000238 0x41 ./Source/ARMCM3_STM32/timer.o + .debug_pubtypes + 0x00000279 0x59 ./Source/ARMCM3_STM32/uart.o + .debug_pubtypes + 0x000002d2 0x2e ./Source/assert.o + .debug_pubtypes + 0x00000300 0x1f ./Source/backdoor.o + .debug_pubtypes + 0x0000031f 0x12 ./Source/boot.o + .debug_pubtypes + 0x00000331 0x3c ./Source/com.o + .debug_pubtypes + 0x0000036d 0x12 ./Source/cop.o + .debug_pubtypes + 0x0000037f 0x73 ./Source/xcp.o + .debug_pubtypes + 0x000003f2 0x12 ./hooks.o + .debug_pubtypes + 0x00000404 0x6d ./main.o + +.debug_aranges 0x00000000 0x208 + .debug_aranges + 0x00000000 0x20 ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_aranges + 0x00000020 0x20 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_aranges + 0x00000040 0x28 ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_aranges + 0x00000068 0x20 ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_aranges + 0x00000088 0x20 ./Source/ARMCM3_STM32/cpu.o + .debug_aranges + 0x000000a8 0x20 ./Source/ARMCM3_STM32/flash.o + .debug_aranges + 0x000000c8 0x20 ./Source/ARMCM3_STM32/nvm.o + .debug_aranges + 0x000000e8 0x20 ./Source/ARMCM3_STM32/timer.o + .debug_aranges + 0x00000108 0x20 ./Source/ARMCM3_STM32/uart.o + .debug_aranges + 0x00000128 0x20 ./Source/assert.o + .debug_aranges + 0x00000148 0x20 ./Source/backdoor.o + .debug_aranges + 0x00000168 0x20 ./Source/boot.o + .debug_aranges + 0x00000188 0x20 ./Source/com.o + .debug_aranges + 0x000001a8 0x20 ./Source/cop.o + .debug_aranges + 0x000001c8 0x20 ./Source/xcp.o + .debug_aranges + 0x000001e8 0x20 ./main.o + +.debug_str 0x00000000 0xea4 + .debug_str 0x00000000 0x25d ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + 0x296 (size before relaxing) + .debug_str 0x0000025d 0x156 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + 0x279 (size before relaxing) + .debug_str 0x000003b3 0x87 ./Source/ARMCM3_STM32/GCC/cstart.o + 0xf4 (size before relaxing) + .debug_str 0x0000043a 0x70 ./Source/ARMCM3_STM32/GCC/vectors.o + 0xe2 (size before relaxing) + .debug_str 0x000004aa 0x40 ./Source/ARMCM3_STM32/can.o + 0xa7 (size before relaxing) + .debug_str 0x000004ea 0xa2 ./Source/ARMCM3_STM32/cpu.o + 0x114 (size before relaxing) + .debug_str 0x0000058c 0x24b ./Source/ARMCM3_STM32/flash.o + 0x318 (size before relaxing) + .debug_str 0x000007d7 0x74 ./Source/ARMCM3_STM32/nvm.o + 0x10c (size before relaxing) + .debug_str 0x0000084b 0xac ./Source/ARMCM3_STM32/timer.o + 0x129 (size before relaxing) + .debug_str 0x000008f7 0x122 ./Source/ARMCM3_STM32/uart.o + 0x1b7 (size before relaxing) + .debug_str 0x00000a19 0x75 ./Source/assert.o + 0xf1 (size before relaxing) + .debug_str 0x00000a8e 0x60 ./Source/backdoor.o + 0xd0 (size before relaxing) + .debug_str 0x00000aee 0x46 ./Source/boot.o + 0xad (size before relaxing) + .debug_str 0x00000b34 0xbf ./Source/com.o + 0x159 (size before relaxing) + .debug_str 0x00000bf3 0x46 ./Source/cop.o + 0xad (size before relaxing) + .debug_str 0x00000c39 0x22b ./Source/xcp.o + 0x2cf (size before relaxing) + .debug_str 0x00000e64 0xb ./hooks.o + 0xd0 (size before relaxing) + .debug_str 0x00000e6f 0x35 ./main.o + 0x1dd (size before relaxing) + +.comment 0x00000000 0x2a + .comment 0x00000000 0x2a ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + 0x2b (size before relaxing) + .comment 0x00000000 0x2b ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .comment 0x00000000 0x2b ./Source/ARMCM3_STM32/GCC/cstart.o + .comment 0x00000000 0x2b ./Source/ARMCM3_STM32/GCC/vectors.o + .comment 0x00000000 0x2b ./Source/ARMCM3_STM32/can.o + .comment 0x00000000 0x2b ./Source/ARMCM3_STM32/cpu.o + .comment 0x00000000 0x2b ./Source/ARMCM3_STM32/flash.o + .comment 0x00000000 0x2b ./Source/ARMCM3_STM32/nvm.o + .comment 0x00000000 0x2b ./Source/ARMCM3_STM32/timer.o + .comment 0x00000000 0x2b ./Source/ARMCM3_STM32/uart.o + .comment 0x00000000 0x2b ./Source/assert.o + .comment 0x00000000 0x2b ./Source/backdoor.o + .comment 0x00000000 0x2b ./Source/boot.o + .comment 0x00000000 0x2b ./Source/com.o + .comment 0x00000000 0x2b ./Source/cop.o + .comment 0x00000000 0x2b ./Source/xcp.o + .comment 0x00000000 0x2b ./hooks.o + .comment 0x00000000 0x2b ./main.o + +.ARM.attributes + 0x00000000 0x31 + .ARM.attributes + 0x00000000 0x31 ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .ARM.attributes + 0x00000031 0x31 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .ARM.attributes + 0x00000062 0x31 ./Source/ARMCM3_STM32/GCC/cstart.o + .ARM.attributes + 0x00000093 0x31 ./Source/ARMCM3_STM32/GCC/vectors.o + .ARM.attributes + 0x000000c4 0x31 ./Source/ARMCM3_STM32/can.o + .ARM.attributes + 0x000000f5 0x31 ./Source/ARMCM3_STM32/cpu.o + .ARM.attributes + 0x00000126 0x31 ./Source/ARMCM3_STM32/flash.o + .ARM.attributes + 0x00000157 0x31 ./Source/ARMCM3_STM32/nvm.o + .ARM.attributes + 0x00000188 0x31 ./Source/ARMCM3_STM32/timer.o + .ARM.attributes + 0x000001b9 0x31 ./Source/ARMCM3_STM32/uart.o + .ARM.attributes + 0x000001ea 0x31 ./Source/assert.o + .ARM.attributes + 0x0000021b 0x31 ./Source/backdoor.o + .ARM.attributes + 0x0000024c 0x31 ./Source/boot.o + .ARM.attributes + 0x0000027d 0x31 ./Source/com.o + .ARM.attributes + 0x000002ae 0x31 ./Source/cop.o + .ARM.attributes + 0x000002df 0x31 ./Source/xcp.o + .ARM.attributes + 0x00000310 0x31 ./hooks.o + .ARM.attributes + 0x00000341 0x31 ./main.o + +.debug_frame 0x00000000 0x80c + .debug_frame 0x00000000 0x34 ./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_frame 0x00000034 0x170 ./lib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_frame 0x000001a4 0x48 ./Source/ARMCM3_STM32/GCC/cstart.o + .debug_frame 0x000001ec 0x2c ./Source/ARMCM3_STM32/GCC/vectors.o + .debug_frame 0x00000218 0x68 ./Source/ARMCM3_STM32/cpu.o + .debug_frame 0x00000280 0x1ac ./Source/ARMCM3_STM32/flash.o + .debug_frame 0x0000042c 0x9c ./Source/ARMCM3_STM32/nvm.o + .debug_frame 0x000004c8 0x78 ./Source/ARMCM3_STM32/timer.o + .debug_frame 0x00000540 0x94 ./Source/ARMCM3_STM32/uart.o + .debug_frame 0x000005d4 0x2c ./Source/assert.o + .debug_frame 0x00000600 0x48 ./Source/backdoor.o + .debug_frame 0x00000648 0x48 ./Source/boot.o + .debug_frame 0x00000690 0xa0 ./Source/com.o + .debug_frame 0x00000730 0x30 ./Source/cop.o + .debug_frame 0x00000760 0x80 ./Source/xcp.o + .debug_frame 0x000007e0 0x2c ./main.o + +.debug_ranges 0x00000000 0x18 + .debug_ranges 0x00000000 0x18 ./Source/ARMCM3_STM32/GCC/cstart.o diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/bin/openbtl_olimex_stm32p103.srec b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/bin/openbtl_olimex_stm32p103.srec new file mode 100644 index 00000000..41f1b7c6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/bin/openbtl_olimex_stm32p103.srec @@ -0,0 +1,338 @@ +S02000006F70656E62746C5F6F6C696D65785F73746D3332703130332E7372656307 +S315080000000406002079040008D5040008D504000871 +S31508000010D5040008D5040008D5040008D50400084E +S31508000020D5040008D5040008D5040008D50400083E +S31508000030D5040008D5040008D5040008D50400082E +S31508000040D5040008D5040008D5040008D50400081E +S31508000050D5040008D5040008D5040008D50400080E +S31508000060D5040008D5040008D5040008D5040008FE +S31508000070D5040008D5040008D5040008D5040008EE +S31508000080D5040008D5040008D5040008D5040008DE +S31508000090D5040008D5040008D5040008D5040008CE +S315080000A0D5040008D5040008D5040008D5040008BE +S315080000B0D5040008D5040008D5040008D5040008AE +S315080000C0D5040008D5040008D5040008D50400089E +S315080000D0D5040008D5040008D5040008D50400088E +S315080000E0D5040008D5040008D5040008D50400087E +S315080000F0D5040008D5040008D5040008D50400086E +S31508000100D5040008D5040008D5040008D50400085D +S31508000110D5040008D5040008D5040008D50400084D +S31508000120D5040008D5040008D5040008D50400083D +S31508000130D5040008D5040008D5040008D50400082D +S31508000140D5040008D5040008D5040008D50400081D +S3150800015008B572B617481849016018498D4640F225 +S315080001600002C2F2000240F21403C2F200039A42ED +S3150800017011D241F2E042C0F6000240F20003C2F298 +S31508000180000340F21400C2F2000052F8041B43F8C0 +S31508000190041B8342F9D30A480A494FF000028842F1 +S315080001A0B8BF40F8042BFADB00F00EFE01F034F875 +S315080001B008BD000008ED00E0000000080406002065 +S315080001C0140000200405002082B04FF48053C4F2C6 +S315080001D002031A6842F001021A6059684FF00002D9 +S315080001E0CFF6FF0201EA02025A601A6822F0847208 +S315080001F022F480321A601A6822F480221A605A6839 +S3150800020022F4FE025A604FF41F029A604FF0000271 +S31508000210019200921A6842F480321A604FF48052B2 +S31508000220C4F20202136803F400330093019B03F13E +S3150800023001030193009B1BB9019BB3F5A06FF1D194 +S315080002404FF48053C4F202031B6813F4003F14BF33 +S31508000250012300230093009B012B44D14FF4005344 +S31508000260C4F202031A6842F010021A601A6822F0F1 +S3150800027003021A601A6842F002021A604FF48053A9 +S31508000280C4F202035A685A605A685A605A6842F4B5 +S3150800029080625A605A6822F47C125A605A6842F49C +S315080002A0E8125A601A6842F080721A604FF4805257 +S315080002B0C4F20202136813F0007FFBD04FF4805398 +S315080002C0C4F202035A6822F003025A605A6842F0DE +S315080002D002025A604FF48052C4F20202536803F0D5 +S315080002E00C03082BFAD14FF46D43CEF200034FF0FE +S315080002F000629A6002B070474FF48053C4F202035A +S315080003005B6803F00C03042B0DD0082B15D0002BCB +S3150800031044D140F20003C2F200034FF49052C0F2F7 +S315080003207A021A6043E040F20003C2F200034FF477 +S315080003309052C0F27A021A6039E04FF48053C4F240 +S3150800034002035A685B68C2F3834202F1020213F49D +S31508000350803F0BD140F20003C2F200034FF4106154 +S31508000360C0F23D0101FB02F21A6020E04FF480530F +S31508000370C4F202035B6813F4003F40F20003C2F2C2 +S31508000380000319BF4FF41061C0F23D014FF49051BC +S31508000390C0F27A0101FB02F21A6008E040F200039B +S315080003A0C2F200034FF49052C0F27A021A604FF478 +S315080003B08053C4F202035A68C2F3031240F20003E0 +S315080003C0C2F200039A181279196821FA02F21A6021 +S315080003D0704700BFEFF309800046704780F309882D +S315080003E0704700BFEFF308800046704780F308881F +S315080003F0704700BFEFF31280704700BF80F3118883 +S31508000400704700BFEFF31080704700BF80F3108875 +S31508000410704700BFEFF31380704700BF80F313885F +S31508000420704700BFEFF31480704700BF80F314884D +S31508000430704700BF00BA704740BA7047C0BA7047E5 +S3150800044090FAA0F0704700BFD0E84F0FC0B27047CF +S31508000450D0E85F0F80B2704750E8000F704700BFC2 +S31508000460C1E8400F704700BFC1E8500F704700BF92 +S3150800047041E80000704700BF08B572B640F20002B6 +S31508000480C2F2000240F21403C2F200039A4211D2E9 +S3150800049041F2E042C0F6000240F20003C2F2000355 +S315080004A040F21400C2F2000052F8041B43F8041B81 +S315080004B08342F9D3054806494FF000028842B8BF7F +S315080004C040F8042BFADB00F0A7FE08BD1400002054 +S315080004D00405002008B541F28C30C0F600004FF044 +S315080004E0360100F0FDFB08BD08B500F0D9FA60B189 +S315080004F04EF60853CEF200034FF400521A6042F249 +S315080005000403C0F600031B68984708BD70B50D467E +S3150800051014465AB1064615F8013B06F8013B00F0A9 +S3150800052067FC04F1FF34A4B2002CF4D170BD00BFFF +S3150800053008B5FFF7A1FF08BD4FF40053C4F2020344 +S3150800054040F22312C4F267525A6048F6AB12CCF650 +S31508000550EF525A604FF03402DA6070474FF4005396 +S31508000560C4F202031A6942F080021A61704700BF9A +S31508000570F8B507464FF00004254641F2D436C0F6D2 +S31508000580000600F035FC3359BB420ED831194968CC +S315080005905B189F4209D241F2D433C0F6000305EB3B +S315080005A0450203EB8203187AF8BD05F1010504F14B +S315080005B00C04B42CE5D14FF0FF00F8BD2DE9F84343 +S315080005C080460068FFF7D4FFFF2808BF002453D0F1 +S315080005D0FFF7B2FF4FF40053C4F20203DB6813F0CF +S315080005E0010F04D0FFF7BAFF4FF0000444E04FF4C0 +S315080005F00053C4F202031A6942F001021A614FF06D +S31508000600000508F104094FF40054C4F20204D8F8AE +S315080006100030EF1859F80560B2B2EA52E36813F0F1 +S31508000620010F05D000F0E4FBE36813F0010FF9D1E0 +S315080006304FEA16437B80E36813F0010F05D000F0FC +S31508000640D7FBE36813F0010FF9D13B68B34207D132 +S3150800065005F10405B5F5007FD9D14FF0010401E095 +S315080006604FF000044FF40053C4F202031A6922F053 +S3150800067001021A61FFF772FF2046BDE8F88300BF42 +S3150800068070B5064641F2D435C0F600054FF00004B1 +S3150800069000F0AEFB2B7AB34208D141F2D433C0F650 +S315080006A0000304EB440253F8220070BD04F1010470 +S315080006B005F10C050F2CEBD14FF0FF3070BD00BFD4 +S315080006C008B54FEAC1534FEAD3535BB903688B4267 +S315080006D00BD040F8041B4FF40072FFF717FF4FF0DA +S315080006E0010008BD4FF0000008BD4FF0010008BD2D +S315080006F038B504460D460F4B984209D04FF40053BF +S31508000700C0F60003994208D0FFF758FF70B105E01C +S3150800071040F21404C2F2000400E0064C20462946C2 +S31508000720FFF7CEFF002808BF002401E04FF00004C1 +S31508000730204638BD180200202DE9F84305460C4628 +S3150800074017461E464FEA51294FEA49290368B3F16D +S31508000750FF3F03D14946FFF7B3FF50B32B684B451C +S3150800076005D028464946FFF7C3FF054628B32B6838 +S31508000770E41A2C1904F1040440F2FF1809F500796B +S3150800078000F036FB05F10403E31A434507D928466A +S315080007904946FFF7ADFF054698B100F1040417F87E +S315080007A0013B237006F1FF36B6B276B104F10104B7 +S315080007B0E6E74FF00000BDE8F8834FF00000BDE81B +S315080007C0F8834FF00000BDE8F8834FF00100BDE85C +S315080007D0F88300BF40F21403C2F200034FF0FF3261 +S315080007E01A60C3F80422704770B504460D461646CB +S315080007F0FFF7BEFEFF281AD004F1FF304019FFF7B5 +S31508000800B7FEFF2816D04FEA54224FF40053C0F61D +S315080008100003B3EB422F0EBF084840F21400C2F2A1 +S31508000820000021463246ABB2FFF786FF70BD4FF097 +S31508000830000070BD4FF0000070BD00BF1802002018 +S315080008402DE9F04105460E46FFF792FE044605F1EE +S31508000850FF308019FFF78CFE0546FF2814BF0023DA +S315080008600123FF2C08BF43F00103002B7ED18442ED +S3150800087070D8002C72D00F2874D8FFF75DFE4FF49D +S315080008800053C4F20203DB6813F0010F05D0FFF72B +S3150800089065FE4FF00000BDE8F0814FF40053C4F246 +S315080008A002031A6942F002021A612046FFF7E8FEBF +S315080008B007462846FFF7E4FE804641F2D436C0F6DE +S315080008C000064FF0000400F093FA337AAB4209D1E0 +S315080008D041F2D433C0F6000304EB440203EB82036F +S315080008E05E6807E004F1010406F10C060F2CEAD154 +S315080008F04FF00006C7EB08084644C6F38F26DEB15C +S315080009004FF000054FF40054C4F2020467612369EE +S3150800091043F040032361E36813F0010F05D000F0AC +S3150800092067FAE36813F0010FF9D105F10105ADB2D5 +S3150800093007F58067AE42E9D84FF40053C4F20203C4 +S315080009401A6922F002021A61FFF708FE4FF0010049 +S31508000950BDE8F0814FF00000BDE8F0814FF00000DF +S31508000960BDE8F0814FF00000BDE8F0814FF00000CF +S31508000970BDE8F08142F20402C0F600024FF40053CB +S31508000980C0F6000310681B68C01842F20803C0F6D8 +S3150800099000031B68C01842F20C03C0F600031B686C +S315080009A0C01842F21003C0F600031B68C01842F2D2 +S315080009B01403C0F600031B68C01842F21803C0F6F9 +S315080009C000031B68C01842F25013C0F600031B68E8 +S315080009D0C018D0F1010038BF0020704710B582B0AA +S315080009E040F21402C2F2000202F50273D2F80C4277 +S315080009F0D2F810126418D2F80822A418DA68A418D3 +S31508000A001A69A4185A69A4189B69E418C4F1000461 +S31508000A100194FFF7AFFF844208BF012009D042F2D4 +S31508000A205010C0F600004FF004010DEB0102FFF76D +S31508000A30DBFE02B010BD00BF08B540F21403C2F2D7 +S31508000A400003D3F80432B3F1FF3F03D00D48FFF794 +S31508000A50B5FD88B140F21403C2F200031B68B3F176 +S31508000A60FF3F0CD040F21400C2F20000FFF7A6FDCB +S31508000A70003818BF012008BD4FF0000008BD4FF030 +S31508000A80010008BD1802002008B5FFF7A3FE08BD3F +S31508000A9008B5FFF7A9FE08BD08B5FFF7D1FE08BDE2 +S31508000AA008B5FFF767FF08BD08B5FFF797FF10B150 +S31508000AB0FFF7C2FF08BD4FF0000008BD4EF2100355 +S31508000AC0CEF200034FF000021A6070474EF2100390 +S31508000AD0CEF200031B6813F4803F1FBF40F21C438D +S31508000AE0C2F200031A88013218BF1A80704700BF85 +S31508000AF040F21C43C2F200031880704708B5FFF79E +S31508000B00DDFF4EF21003CEF2000341F63F12C0F2AB +S31508000B1001025A604FF0000098604FF005021A6013 +S31508000B20FFF7E6FF08BD00BF08B5FFF7CFFF40F2A5 +S31508000B301C43C2F20003188808BD00BF4FF488435F +S31508000B40C4F200031B8813F0200F1FBF4FF488431D +S31508000B50C4F200039B88037014BF0120002070476D +S31508000B6010B54FF48843C4F200031B8813F0800FB6 +S31508000B7015D04FF48843C4F2000398801B8813F0FD +S31508000B80800F0FD14FF48844C4F2000400F030F906 +S31508000B90238813F0800FF9D04FF0010010BD4FF0F5 +S31508000BA0000010BD4FF0010010BD00BF4FF4884390 +S31508000BB0C4F200034FF000021A819A811A829A82BF +S31508000BC01A8340F271221A819A8992B242F400522B +S31508000BD042F00C029A8170472DE9F04105460C4611 +S31508000BE0402907D941F28840C0F600004FF0880135 +S31508000BF000F076F82046FFF7B3FF012807D041F248 +S31508000C008840C0F600004FF08B0100F069F82646D0 +S31508000C10BCB14FF0000441F28847C0F600074FF018 +S31508000C20930800F0E5F8285DFFF79AFF012803D03E +S31508000C303846414600F054F804F10104A3B2B34221 +S31508000C40EFD3BDE8F08100BF70B5054640F22043FA +S31508000C50C2F200031B7883B92048FFF76FFF01280B +S31508000C6033D140F22043C2F200034FF001021A705A +S31508000C704FF0000083F8450070BD40F22040C2F2F4 +S31508000C80000090F84540001900F10500FFF756FFEF +S31508000C9001281DD104F10104E2B240F22043C2F258 +S31508000CA0000383F845201B79934214D140F220466D +S31508000CB0C2F20006284606F10501FFF727FC4FF0A9 +S31508000CC0000333704FF0010070BD4FF0000070BD97 +S31508000CD04FF0000070BD4FF0000070BD24040020E6 +S31508000CE008B540F26843C2F200031860596000F084 +S31508000CF07FF8FCE708B500F075F8012815D040F232 +S31508000D007043C2F200031B78012B0ED1FFF70CFFCC +S31508000D1031280AD940F27043C2F200034FF00002AC +S31508000D201A70FFF7CBFEFFF7DFFB08BD08B540F2E8 +S31508000D307043C2F200034FF001021A70FFF7DEFE9D +S31508000D40FFF7D8FF08BD00BF08B500F04FF8FFF75A +S31508000D50EDFFFFF799FE00F009F808BD08B500F0A9 +S31508000D6047F800F01DF8FFF7C5FF08BD00B583B0CA +S31508000D704FF0FF038DF804304FF000038DF805306F +S31508000D8000F04EF8FFF712FF40F27443C2F2000378 +S31508000D901B78012B02D101A800F066F803B000BD4C +S31508000DA008B50448FFF750FF012802D1014800F0B2 +S31508000DB05BF808BD7804002008B5C9B2FFF70CFF38 +S31508000DC000F048F808BD00BF40F27443C2F20003C1 +S31508000DD04FF001021A70704740F27443C2F20003E2 +S31508000DE01878704708B500F02BF808BD704700BFA3 +S31508000DF0704700BF40F2B843C2F200034FF000024A +S31508000E005A70704740F2B843C2F200034FF0FE0230 +S31508000E10DA7018714FF00202A3F84420704700BF39 +S31508000E2040F2B843C2F200034FF000021A709A6407 +S31508000E3083F84320A3F844209A705A70704700BF7D +S31508000E4040F2B843C2F200031878003818BF0120F0 +S31508000E50704700BF40F2B843C2F200034FF00002E9 +S31508000E6083F84320704700BF38B504460278FF2A46 +S31508000E701DD1FFF7BFFF40F2B843C2F200034FF09F +S31508000E8001021A704FF0FF01D9704FF01001197165 +S31508000E904FF0000159714FF040009871D8711972DE +S31508000EA05A729A724FF00802A3F8442098E140F269 +S31508000EB0B843C2F200031B78012B40F0AB81A2F1C4 +S31508000EC0C902352A00F28881DFE812F0EC008601B3 +S31508000ED0860181018601860173010D0159014301CD +S31508000EE086018601860186018601860186018601BC +S31508000EF086018601860186018601860186018601AC +S31508000F00860186018601860186018601860186019B +S31508000F10860186018601860186018601860186018B +S31508000F208200540036007400860186018601A800F6 +S31508000F308601C200C700DB0042783F2A04D94FF079 +S31508000F402200FFF75FFF4BE140F2B845C2F2000509 +S31508000F5005F10400A96CFFF7D9FA4FF0FF03EB700F +S31508000F606278AB6CD318AB64637803F10103A5F818 +S31508000F70443035E143783F2B04D94FF02200FFF780 +S31508000F8041FF2DE1416840F2B845C2F20005A96467 +S31508000F9005F104006278FFF7B9FA4FF0FF03EB702A +S31508000FA06278AB6CD318AB64637803F10103A5F8D8 +S31508000FB0443015E140F2B843C2F200034FF0FF0295 +S31508000FC0DA7042689A644FF00102A3F8442007E1F8 +S31508000FD040F2B845C2F200054FF0FF03EB70A96C6A +S31508000FE043684FF000023BB14FF0000211F8010BC5 +S31508000FF01218D2B2013BF9D1C5F8072040F2B8431E +S31508001000C2F200034FF001021A714FF000025A7142 +S315080010109A714FF00802A3F84420E1E040F2B84381 +S31508001020C2F200034FF0FF02DA7041F2CC42C0F67A +S3150800103000029A644FF000021A715A719A714FF0C1 +S315080010400702C3F807204FF00802A3F84420C7E0B8 +S315080010504FF00000FFF7D6FEC2E040F2B843C2F2F6 +S3150800106000034FF0FF02DA704FF000021A71597848 +S3150800107059719A71DA711A724FF00602A3F8442070 +S31508001080AEE040F2B844C2F200044FF00003237009 +S31508001090FFF7B0FE4FF0FF03E3704FF00103A4F82B +S315080010A044309DE040F2B843C2F20003986C4FF01A +S315080010B03F0104F10102FFF7EBFC20B94FF03100C4 +S315080010C0FFF7A0FE8CE040F2B843C2F200034FF0EF +S315080010D0FF02DA709A6C02F13F029A644FF001023D +S315080010E0A3F844207CE043783E2B04D94FF0220035 +S315080010F0FFF788FE74E040F2B843C2F200034FF0EF +S31508001100FF02DA704FF00102A3F84420417841B992 +S31508001110FFF7CAFC002863D14FF03100FFF772FED3 +S315080011205EE040F2B843C2F20003986C04F1020292 +S31508001130FFF7AEFC20B94FF03100FFF763FE4FE032 +S3150800114040F2B843C2F2000361789A6C8A189A642E +S3150800115046E040F2B843C2F200034FF0FF02DA70ED +S315080011604FF000021A715A714FF040019971DA7105 +S315080011701A725A724FF00702A3F8442030E040F280 +S31508001180B843C2F20003986C6168FFF785FC20B982 +S315080011904FF03100FFF736FE22E040F2B843C2F2C4 +S315080011A000034FF0FF02DA704FF00102A3F8442063 +S315080011B016E0FFF7BDF940F2B843C2F200034FF05C +S315080011C0FF02DA704FF00102A3F8442008E04FF05E +S315080011D03100FFF717FE03E04FF02000FFF712FE7D +S315080011E040F2B843C2F2000393F84330012B03D10F +S315080011F04FF01000FFF706FE40F2B843C2F20003B4 +S315080012004FF0010283F8432003F10300B3F84410BA +S31508001210FFF7D2FD38BD00BF00B583B04FF000031D +S31508001220019300934FF48053C4F202031A6842F004 +S3150800123001021A6059684FF00002CFF6FF0201EA70 +S3150800124002025A601A6822F0847222F480321A6006 +S315080012501A6822F480221A605A6822F4FE025A603A +S315080012604FF41F029A601A6842F480321A604FF4EB +S315080012708053C4F2020340F2DC52196801F40031CB +S315080012800091019901F101010191009911B90199A2 +S315080012909142F2D14FF48053C4F202031B6813F44F +S315080012A0003F07D141F2D440C0F600004FF06F016D +S315080012B0FFF716FD4FF40053C4F202031A6842F012 +S315080012C010021A601A6822F003021A601A6842F0BD +S315080012D002021A604FF48053C4F202035A685A6035 +S315080012E05A6842F400525A605A6842F480625A6058 +S315080012F05A6822F47C125A605A6842F4E8125A6014 +S315080013001A6842F080721A604FF48053C4F20203DE +S315080013101A6812F0007FFBD04FF48053C4F2020320 +S315080013205A6822F003025A605A6842F002025A606A +S315080013304FF48053C4F202035A6802F00C02082ADA +S31508001340FAD14FF48053C4F20203DA6942F4003248 +S31508001350DA619A6942F005029A614FF40063C4F2B1 +S3150800136001031A6822F470621A601A6842F430623D +S315080013701A601A6822F470421A601A6842F48042A7 +S315080013801A60FFF7E1FCFFF7E9FCFCE7443A2F7522 +S3150800139073722F6665617365722F736F66747761F2 +S315080013A072652F4F70656E424C542F546172676593 +S315080013B0742F536F757263652F41524D434D335FDA +S315080013C053544D33322F4743432F766563746F72F8 +S315080013D0732E6300002000080020000001000000B2 +S315080013E0004000080020000002000000006000081D +S315080013F00020000003000000008000080020000014 +S315080014000400000000A000080020000005000000FD +S3150800141000C00008002000000600000000E00008E8 +S31508001420002000000700000000000108002000005E +S315080014300800000000200108002000000900000044 +S3150800144000400108002000000A00000000600108B2 +S31508001450002000000B0000000080010800200000AA +S315080014600C00000000A00108002000000D0000008C +S3150800147000C00108002000000E00000000E001087E +S31508001480002000000F000000443A2F7573722F6683 +S3150800149065617365722F736F6674776172652F4F16 +S315080014A070656E424C542F5461726765742F536F82 +S315080014B0757263652F41524D434D335F53544D3317 +S315080014C0322F756172742E63000000004F70656ECE +S315080014D0424C54002E2E2F6D61696E2E630000005B +S315080014E000A24A04000000000000000001020304F4 +S309080014F006070809CC +S70508000000F2 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/cmd/flash.cfg b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/cmd/flash.cfg new file mode 100644 index 00000000..a647242f --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/cmd/flash.cfg @@ -0,0 +1,20 @@ +### +# Description: mass erases and flashes the binary with OpenOCD +# Usage: openocd.exe" -f flash.cfg +### + +source [find interface/olimex-arm-usb-tiny-h.cfg] +source [find board/olimex_stm32_h103.cfg] + +jtag_khz 1000 + +init +reset +sleep 500 +halt +stm32x mass_erase 0 +flash write_image ..\\bin\\openbtl_olimex_stm32p103.elf +reset run +shutdown + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/config.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/config.h new file mode 100644 index 00000000..672059ae --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/config.h @@ -0,0 +1,128 @@ +/**************************************************************************************** +| Description: bootloader configuration header file +| File Name: config.h +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ +#ifndef CONFIG_H +#define CONFIG_H + +/**************************************************************************************** +* C P U D R I V E R C O N F I G U R A T I O N +****************************************************************************************/ +/* To properly initialize the baudrate clocks of the communication interface, typically + * the speed of the crystal oscillator and/or the speed at which the system runs is + * needed. Set these through configurables BOOT_CPU_XTAL_SPEED_KHZ and + * BOOT_CPU_SYSTEM_SPEED_KHZ, respectively. To enable data exchange with the host that is + * not dependent on the targets architecture, the byte ordering needs to be known. + * Setting BOOT_CPU_BYTE_ORDER_MOTOROLA to 1 selects little endian mode and 0 selects + * big endian mode. + */ +#define BOOT_CPU_XTAL_SPEED_KHZ (8000) +#define BOOT_CPU_SYSTEM_SPEED_KHZ (72000) +#define BOOT_CPU_BYTE_ORDER_MOTOROLA (0) + + +/**************************************************************************************** +* C O M M U N I C A T I O N I N T E R F A C E C O N F I G U R A T I O N +****************************************************************************************/ +/* The CAN communication interface is selected by setting the BOOT_COM_CAN_ENABLE + * configurable to 1. Configurable BOOT_COM_CAN_BAUDRATE selects the communication speed + * in bits/second. Two CAN messages are reserved for communication with the host. The + * message identifier for sending data from the target to the host is configured with + * BOOT_COM_CAN_TXMSG_ID. The one for receiving data from the host is configured with + * BOOT_COM_CAN_RXMSG_ID. The maximum amount of data bytes in a message for data + * transmission and reception is set through BOOT_COM_CAN_TX_MAX_DATA and + * BOOT_COM_CAN_RX_MAX_DATA, respectively. It is common for a microcontroller to have more + * than 1 CAN controller on board. The zero-based BOOT_COM_CAN_CHANNEL_INDEX selects the + * CAN controller channel. + * + */ +#define BOOT_COM_CAN_ENABLE (0) +#define BOOT_COM_CAN_BAUDRATE (500000) +#define BOOT_COM_CAN_TX_MSG_ID (0x7E1) +#define BOOT_COM_CAN_TX_MAX_DATA (8) +#define BOOT_COM_CAN_RX_MSG_ID (0x667) +#define BOOT_COM_CAN_RX_MAX_DATA (8) +#define BOOT_COM_CAN_CHANNEL_INDEX (0) + +/* The UART communication interface is selected by setting the BOOT_COM_UART_ENABLE + * configurable to 1. Configurable BOOT_COM_UART_BAUDRATE selects the communication speed + * in bits/second. The maximum amount of data bytes in a message for data transmission + * and reception is set through BOOT_COM_UART_TX_MAX_DATA and BOOT_COM_UART_RX_MAX_DATA, + * respectively. It is common for a microcontroller to have more than 1 UART interface + * on board. The zero-based BOOT_COM_UART_CHANNEL_INDEX selects the UART interface. + * + */ +#define BOOT_COM_UART_ENABLE (1) +#define BOOT_COM_UART_BAUDRATE (57600) +#define BOOT_COM_UART_TX_MAX_DATA (64) +#define BOOT_COM_UART_RX_MAX_DATA (64) +#define BOOT_COM_UART_CHANNEL_INDEX (1) + + +/**************************************************************************************** +* B A C K D O O R E N T R Y C O N F I G U R A T I O N +****************************************************************************************/ +/* It is possible to implement an application specific method to force the bootloader to + * stay active after a reset. Such a backdoor entry into the bootloader is desired in + * situations where the user program does not run properly and therefore cannot + * reactivate the bootloader. By enabling these hook functions, the application can + * implement the backdoor, which overrides the default backdoor entry that is programmed + * into the bootloader. When desired for security purposes, these hook functions can + * also be implemented in a way that disables the backdoor entry altogether. + */ +#define BOOT_BACKDOOR_HOOKS_ENABLE (0) + + +/**************************************************************************************** +* N O N - V O L A T I L E M E M O R Y D R I V E R C O N F I G U R A T I O N +****************************************************************************************/ +/* The NVM driver typically supports erase and program operations of the internal memory + * present on the microcontroller. Through these hook functions the NVM driver can be + * extended to support additional memory types such as external flash memory and serial + * eeproms. The size of the internal memory in kilobytes is specified with configurable + * BOOT_NVM_SIZE_KB. + */ +#define BOOT_NVM_HOOKS_ENABLE (0) +#define BOOT_NVM_SIZE_KB (128) + + +/**************************************************************************************** +* W A T C H D O G D R I V E R C O N F I G U R A T I O N +****************************************************************************************/ +/* The COP driver cannot be configured internally in the bootloader, because its use + * and configuration is application specific. The bootloader does need to service the + * watchdog in case it is used. When the application requires the use of a watchdog, + * set BOOT_COP_HOOKS_ENABLE to be able to initialize and service the watchdog through + * hook functions. + */ +#define BOOT_COP_HOOKS_ENABLE (0) + + +#endif /* CONFIG_H */ +/*********************************** end of config.h ***********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/hooks.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/hooks.c new file mode 100644 index 00000000..85f88c6e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/hooks.c @@ -0,0 +1,186 @@ +/**************************************************************************************** +| Description: bootloader callback source file +| File Name: hooks.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "boot.h" /* bootloader generic header */ + + +/**************************************************************************************** +* B A C K D O O R E N T R Y H O O K F U N C T I O N S +****************************************************************************************/ + +#if (BOOT_BACKDOOR_HOOKS_ENABLE > 0) +/**************************************************************************************** +** NAME: BackDoorInitHook +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the backdoor entry option. +** +****************************************************************************************/ +void BackDoorInitHook(void) +{ + /* configure the button connected to P0.16 as a digital input */ + IO0DIR &= ~(1<<16); +} /*** end of BackDoorInitHook ***/ + + +/**************************************************************************************** +** NAME: BackDoorEntryHook +** PARAMETER: none +** RETURN VALUE: BLT_TRUE if the backdoor entry is requested, BLT_FALSE otherwise. +** DESCRIPTION: Checks if a backdoor entry is requested. +** +****************************************************************************************/ +blt_bool BackDoorEntryHook(void) +{ + /* button P0.16 has a pullup, so will read high by default. enter backdoor only when + * this button is pressed. this is the case when it reads low */ + if ((IO0PIN & (1<<16)) == 0) + { + return BLT_TRUE; + } + return BLT_FALSE; +} /*** end of BackDoorEntryHook ***/ +#endif /* BOOT_BACKDOOR_HOOKS_ENABLE > 0 */ + + +/**************************************************************************************** +* N O N - V O L A T I L E M E M O R Y D R I V E R H O O K F U N C T I O N S +****************************************************************************************/ + +#if (BOOT_NVM_HOOKS_ENABLE > 0) +/**************************************************************************************** +** NAME: NvmInitHook +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Callback that gets called at the start of the internal NVM driver +** initialization routine. +** +****************************************************************************************/ +void NvmInitHook(void) +{ +} /*** end of NvmInitHook ***/ + + +/**************************************************************************************** +** NAME: NvmWriteHook +** PARAMETER: addr start address +** len length in bytes +** data pointer to the data buffer. +** RETURN VALUE: BLT_NVM_OKAY if successful, BLT_NVM_NOT_IN_RANGE if the address is +** not within the supported memory range, or BLT_NVM_ERROR is the write +** operation failed. +** DESCRIPTION: Callback that gets called at the start of the NVM driver write +** routine. It allows additional memory to be operated on. If the address +** is not within the range of the additional memory, then +** BLT_NVM_NOT_IN_RANGE must be returned to indicate that the data hasn't +** been written yet. +** +** +****************************************************************************************/ +blt_int8u NvmWriteHook(blt_addr addr, blt_int32u len, blt_int8u *data) +{ + return BLT_NVM_NOT_IN_RANGE; +} /*** end of NvmWriteHook ***/ + + +/**************************************************************************************** +** NAME: NvmEraseHook +** PARAMETER: addr start address +** len length in bytes +** RETURN VALUE: BLT_NVM_OKAY if successful, BLT_NVM_NOT_IN_RANGE if the address is +** not within the supported memory range, or BLT_NVM_ERROR is the erase +** operation failed. +** DESCRIPTION: Callback that gets called at the start of the NVM driver erase +** routine. It allows additional memory to be operated on. If the address +** is not within the range of the additional memory, then +** BLT_NVM_NOT_IN_RANGE must be returned to indicate that the memory +** hasn't been erased yet. +** +****************************************************************************************/ +blt_int8u NvmEraseHook(blt_addr addr, blt_int32u len) +{ + return BLT_NVM_NOT_IN_RANGE; +} /*** end of NvmEraseHook ***/ + + +/**************************************************************************************** +** NAME: NvmDoneHook +** PARAMETER: none +** RETURN VALUE: BLT_TRUE is successful, BLT_FALSE otherwise. +** DESCRIPTION: Callback that gets called at the end of the NVM programming session. +** +****************************************************************************************/ +blt_bool NvmDoneHook(void) +{ + return BLT_TRUE; +} /*** end of NvmDoneHook ***/ +#endif /* BOOT_NVM_HOOKS_ENABLE > 0 */ + + +/**************************************************************************************** +* W A T C H D O G D R I V E R H O O K F U N C T I O N S +****************************************************************************************/ + +#if (BOOT_COP_HOOKS_ENABLE > 0) +/**************************************************************************************** +** NAME: CopInitHook +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Callback that gets called at the end of the internal COP driver +** initialization routine. It can be used to configure and enable the +** watchdog. +** +****************************************************************************************/ +void CopInitHook(void) +{ +} /*** end of CopInitHook ***/ + + +/**************************************************************************************** +** NAME: CopServiceHook +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Callback that gets called at the end of the internal COP driver +** service routine. This gets called upon initialization and during +** potential long lasting loops and routine. It can be used to service +** the watchdog to prevent a watchdog reset. +** +****************************************************************************************/ +void CopServiceHook(void) +{ +} /*** end of CopServiceHook ***/ +#endif /* BOOT_COP_HOOKS_ENABLE > 0 */ + + +/*********************************** end of hooks.c ************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/ide/readme.txt b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/ide/readme.txt new file mode 100644 index 00000000..1b397421 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/ide/readme.txt @@ -0,0 +1,10 @@ +Integrated Development Environment +---------------------------------- +Eclipse IDE for C/C++ Developers (version 3.7) was used as the editor during the development of this software. It can be downloaded +from http://www.eclipse.org. + +Plugins +------- +The following plugins are required. Refer to the plugin's website for installation instructions: +- GNU ARM Eclipse Plug-in (http://sourceforge.net/projects/gnuarmeclipse/) + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.c new file mode 100644 index 00000000..56fddc52 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.c @@ -0,0 +1,784 @@ +/**************************************************************************//** + * @file core_cm3.c + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File + * @version V1.30 + * @date 30. October 2009 + * + * @note + * Copyright (C) 2009 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include + +/* define compiler specific symbols */ +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + + +/* ################### Compiler specific Intrinsics ########################### */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +__ASM uint32_t __get_PSP(void) +{ + mrs r0, psp + bx lr +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +__ASM void __set_PSP(uint32_t topOfProcStack) +{ + msr psp, r0 + bx lr +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +__ASM uint32_t __get_MSP(void) +{ + mrs r0, msp + bx lr +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +__ASM void __set_MSP(uint32_t mainStackPointer) +{ + msr msp, r0 + bx lr +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +__ASM uint32_t __REV16(uint16_t value) +{ + rev16 r0, r0 + bx lr +} + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +__ASM int32_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} + + +#if (__ARMCC_VERSION < 400000) + +/** + * @brief Remove the exclusive lock created by ldrex + * + * Removes the exclusive lock which is created by ldrex. + */ +__ASM void __CLREX(void) +{ + clrex +} + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +__ASM uint32_t __get_BASEPRI(void) +{ + mrs r0, basepri + bx lr +} + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +__ASM void __set_BASEPRI(uint32_t basePri) +{ + msr basepri, r0 + bx lr +} + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +__ASM uint32_t __get_PRIMASK(void) +{ + mrs r0, primask + bx lr +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +__ASM void __set_PRIMASK(uint32_t priMask) +{ + msr primask, r0 + bx lr +} + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +__ASM uint32_t __get_FAULTMASK(void) +{ + mrs r0, faultmask + bx lr +} + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +__ASM void __set_FAULTMASK(uint32_t faultMask) +{ + msr faultmask, r0 + bx lr +} + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +__ASM uint32_t __get_CONTROL(void) +{ + mrs r0, control + bx lr +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +__ASM void __set_CONTROL(uint32_t control) +{ + msr control, r0 + bx lr +} + +#endif /* __ARMCC_VERSION */ + + + +#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ +#pragma diag_suppress=Pe940 + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +uint32_t __get_PSP(void) +{ + __ASM("mrs r0, psp"); + __ASM("bx lr"); +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +void __set_PSP(uint32_t topOfProcStack) +{ + __ASM("msr psp, r0"); + __ASM("bx lr"); +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +uint32_t __get_MSP(void) +{ + __ASM("mrs r0, msp"); + __ASM("bx lr"); +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +void __set_MSP(uint32_t topOfMainStack) +{ + __ASM("msr msp, r0"); + __ASM("bx lr"); +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +uint32_t __REV16(uint16_t value) +{ + __ASM("rev16 r0, r0"); + __ASM("bx lr"); +} + +/** + * @brief Reverse bit order of value + * + * @param value value to reverse + * @return reversed value + * + * Reverse bit order of value + */ +uint32_t __RBIT(uint32_t value) +{ + __ASM("rbit r0, r0"); + __ASM("bx lr"); +} + +/** + * @brief LDR Exclusive (8 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 8 bit values) + */ +uint8_t __LDREXB(uint8_t *addr) +{ + __ASM("ldrexb r0, [r0]"); + __ASM("bx lr"); +} + +/** + * @brief LDR Exclusive (16 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 16 bit values + */ +uint16_t __LDREXH(uint16_t *addr) +{ + __ASM("ldrexh r0, [r0]"); + __ASM("bx lr"); +} + +/** + * @brief LDR Exclusive (32 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 32 bit values + */ +uint32_t __LDREXW(uint32_t *addr) +{ + __ASM("ldrex r0, [r0]"); + __ASM("bx lr"); +} + +/** + * @brief STR Exclusive (8 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 8 bit values + */ +uint32_t __STREXB(uint8_t value, uint8_t *addr) +{ + __ASM("strexb r0, r0, [r1]"); + __ASM("bx lr"); +} + +/** + * @brief STR Exclusive (16 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 16 bit values + */ +uint32_t __STREXH(uint16_t value, uint16_t *addr) +{ + __ASM("strexh r0, r0, [r1]"); + __ASM("bx lr"); +} + +/** + * @brief STR Exclusive (32 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 32 bit values + */ +uint32_t __STREXW(uint32_t value, uint32_t *addr) +{ + __ASM("strex r0, r0, [r1]"); + __ASM("bx lr"); +} + +#pragma diag_default=Pe940 + + +#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +uint32_t __get_PSP(void) __attribute__( ( naked ) ); +uint32_t __get_PSP(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, psp\n\t" + "MOV r0, %0 \n\t" + "BX lr \n\t" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); +void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0\n\t" + "BX lr \n\t" : : "r" (topOfProcStack) ); +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +uint32_t __get_MSP(void) __attribute__( ( naked ) ); +uint32_t __get_MSP(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, msp\n\t" + "MOV r0, %0 \n\t" + "BX lr \n\t" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); +void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0\n\t" + "BX lr \n\t" : : "r" (topOfMainStack) ); +} + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +uint32_t __get_BASEPRI(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +void __set_BASEPRI(uint32_t value) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (value) ); +} + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +uint32_t __get_PRIMASK(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); +} + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +uint32_t __get_FAULTMASK(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) ); +} + +/** + * @brief Return the Control Register value +* +* @return Control value + * + * Return the content of the control register + */ +uint32_t __get_CONTROL(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) ); +} + + +/** + * @brief Reverse byte order in integer value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in integer value + */ +uint32_t __REV(uint32_t value) +{ + uint32_t result=0; + + __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +uint32_t __REV16(uint16_t value) +{ + uint32_t result=0; + + __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +int32_t __REVSH(int16_t value) +{ + uint32_t result=0; + + __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief Reverse bit order of value + * + * @param value value to reverse + * @return reversed value + * + * Reverse bit order of value + */ +uint32_t __RBIT(uint32_t value) +{ + uint32_t result=0; + + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief LDR Exclusive (8 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 8 bit value + */ +uint8_t __LDREXB(uint8_t *addr) +{ + uint8_t result=0; + + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + +/** + * @brief LDR Exclusive (16 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 16 bit values + */ +uint16_t __LDREXH(uint16_t *addr) +{ + uint16_t result=0; + + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + +/** + * @brief LDR Exclusive (32 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 32 bit values + */ +uint32_t __LDREXW(uint32_t *addr) +{ + uint32_t result=0; + + __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + +/** + * @brief STR Exclusive (8 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 8 bit values + */ +uint32_t __STREXB(uint8_t value, uint8_t *addr) +{ + uint32_t result=0; + + __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + +/** + * @brief STR Exclusive (16 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 16 bit values + */ +uint32_t __STREXH(uint16_t value, uint16_t *addr) +{ + uint32_t result=0; + + __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + +/** + * @brief STR Exclusive (32 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 32 bit values + */ +uint32_t __STREXW(uint32_t value, uint32_t *addr) +{ + uint32_t result=0; + + __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + + +#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.h new file mode 100644 index 00000000..2b6b51a7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/CoreSupport/core_cm3.h @@ -0,0 +1,1818 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V1.30 + * @date 30. October 2009 + * + * @note + * Copyright (C) 2009 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#ifndef __CM3_CORE_H__ +#define __CM3_CORE_H__ + +/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration + * + * List of Lint messages which will be suppressed and not shown: + * - Error 10: \n + * register uint32_t __regBasePri __asm("basepri"); \n + * Error 10: Expecting ';' + * . + * - Error 530: \n + * return(__regBasePri); \n + * Warning 530: Symbol '__regBasePri' (line 264) not initialized + * . + * - Error 550: \n + * __regBasePri = (basePri & 0x1ff); \n + * Warning 550: Symbol '__regBasePri' (line 271) not accessed + * . + * - Error 754: \n + * uint32_t RESERVED0[24]; \n + * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced + * . + * - Error 750: \n + * #define __CM3_CORE_H__ \n + * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced + * . + * - Error 528: \n + * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n + * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced + * . + * - Error 751: \n + * } InterruptType_Type; \n + * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced + * . + * Note: To re-enable a Message, insert a space before 'lint' * + * + */ + +/*lint -save */ +/*lint -e10 */ +/*lint -e530 */ +/*lint -e550 */ +/*lint -e754 */ +/*lint -e750 */ +/*lint -e528 */ +/*lint -e751 */ + + +/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions + This file defines all structures and symbols for CMSIS core: + - CMSIS version number + - Cortex-M core registers and bitfields + - Cortex-M core peripheral base address + @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x03) /*!< Cortex core */ + +#include /* Include standard types */ + +#if defined (__ICCARM__) + #include /* IAR Intrinsics */ +#endif + + +#ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ +#endif + + + + +/** + * IO definitions + * + * define access restrictions to peripheral registers + */ + +#ifdef __cplusplus + #define __I volatile /*!< defines 'read only' permissions */ +#else + #define __I volatile const /*!< defines 'read only' permissions */ +#endif +#define __O volatile /*!< defines 'write only' permissions */ +#define __IO volatile /*!< defines 'read / write' permissions */ + + + +/******************************************************************************* + * Register Abstraction + ******************************************************************************/ +/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register + @{ +*/ + + +/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC + memory mapped structure for Nested Vectored Interrupt Controller (NVIC) + @{ + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ +} NVIC_Type; +/*@}*/ /* end of group CMSIS_CM3_NVIC */ + + +/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB + memory mapped structure for System Control Block (SCB) + @{ + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1ul << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1ul << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1ul << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1ul << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1ul << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1ul << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1ul << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1ul << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1ul << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1ul << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFul << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFul << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFul << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1ul << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1ul << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1ul << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ +/*@}*/ /* end of group CMSIS_CM3_SCB */ + + +/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick + memory mapped structure for SysTick + @{ + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ +/*@}*/ /* end of group CMSIS_CM3_SysTick */ + + +/** @addtogroup CMSIS_CM3_ITM CMSIS CM3 ITM + memory mapped structure for Instrumentation Trace Macrocell (ITM) + @{ + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x00 ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: ITM Trace Control Register */ + uint32_t RESERVED3[29]; + __IO uint32_t IWR; /*!< Offset: ITM Integration Write Register */ + __IO uint32_t IRR; /*!< Offset: ITM Integration Read Register */ + __IO uint32_t IMCR; /*!< Offset: ITM Integration Mode Control Register */ + uint32_t RESERVED4[43]; + __IO uint32_t LAR; /*!< Offset: ITM Lock Access Register */ + __IO uint32_t LSR; /*!< Offset: ITM Lock Status Register */ + uint32_t RESERVED5[6]; + __I uint32_t PID4; /*!< Offset: ITM Peripheral Identification Register #4 */ + __I uint32_t PID5; /*!< Offset: ITM Peripheral Identification Register #5 */ + __I uint32_t PID6; /*!< Offset: ITM Peripheral Identification Register #6 */ + __I uint32_t PID7; /*!< Offset: ITM Peripheral Identification Register #7 */ + __I uint32_t PID0; /*!< Offset: ITM Peripheral Identification Register #0 */ + __I uint32_t PID1; /*!< Offset: ITM Peripheral Identification Register #1 */ + __I uint32_t PID2; /*!< Offset: ITM Peripheral Identification Register #2 */ + __I uint32_t PID3; /*!< Offset: ITM Peripheral Identification Register #3 */ + __I uint32_t CID0; /*!< Offset: ITM Component Identification Register #0 */ + __I uint32_t CID1; /*!< Offset: ITM Component Identification Register #1 */ + __I uint32_t CID2; /*!< Offset: ITM Component Identification Register #2 */ + __I uint32_t CID3; /*!< Offset: ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFul << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1ul << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_ATBID_Pos 16 /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_ATBID_Msk (0x7Ful << ITM_TCR_ATBID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3ul << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1ul << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1ul << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1ul << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1ul << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1ul << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1ul << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1ul << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1ul << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1ul << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1ul << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1ul << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ +/*@}*/ /* end of group CMSIS_CM3_ITM */ + + +/** @addtogroup CMSIS_CM3_InterruptType CMSIS CM3 Interrupt Type + memory mapped structure for Interrupt Type + @{ + */ +typedef struct +{ + uint32_t RESERVED0; + __I uint32_t ICTR; /*!< Offset: 0x04 Interrupt Control Type Register */ +#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) + __IO uint32_t ACTLR; /*!< Offset: 0x08 Auxiliary Control Register */ +#else + uint32_t RESERVED1; +#endif +} InterruptType_Type; + +/* Interrupt Controller Type Register Definitions */ +#define InterruptType_ICTR_INTLINESNUM_Pos 0 /*!< InterruptType ICTR: INTLINESNUM Position */ +#define InterruptType_ICTR_INTLINESNUM_Msk (0x1Ful << InterruptType_ICTR_INTLINESNUM_Pos) /*!< InterruptType ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define InterruptType_ACTLR_DISFOLD_Pos 2 /*!< InterruptType ACTLR: DISFOLD Position */ +#define InterruptType_ACTLR_DISFOLD_Msk (1ul << InterruptType_ACTLR_DISFOLD_Pos) /*!< InterruptType ACTLR: DISFOLD Mask */ + +#define InterruptType_ACTLR_DISDEFWBUF_Pos 1 /*!< InterruptType ACTLR: DISDEFWBUF Position */ +#define InterruptType_ACTLR_DISDEFWBUF_Msk (1ul << InterruptType_ACTLR_DISDEFWBUF_Pos) /*!< InterruptType ACTLR: DISDEFWBUF Mask */ + +#define InterruptType_ACTLR_DISMCYCINT_Pos 0 /*!< InterruptType ACTLR: DISMCYCINT Position */ +#define InterruptType_ACTLR_DISMCYCINT_Msk (1ul << InterruptType_ACTLR_DISMCYCINT_Pos) /*!< InterruptType ACTLR: DISMCYCINT Mask */ +/*@}*/ /* end of group CMSIS_CM3_InterruptType */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) +/** @addtogroup CMSIS_CM3_MPU CMSIS CM3 MPU + memory mapped structure for Memory Protection Unit (MPU) + @{ + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x00 MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x04 MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x08 MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x0C MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x10 MPU Region Attribute and Size Register */ + __IO uint32_t RBAR_A1; /*!< Offset: 0x14 MPU Alias 1 Region Base Address Register */ + __IO uint32_t RASR_A1; /*!< Offset: 0x18 MPU Alias 1 Region Attribute and Size Register */ + __IO uint32_t RBAR_A2; /*!< Offset: 0x1C MPU Alias 2 Region Base Address Register */ + __IO uint32_t RASR_A2; /*!< Offset: 0x20 MPU Alias 2 Region Attribute and Size Register */ + __IO uint32_t RBAR_A3; /*!< Offset: 0x24 MPU Alias 3 Region Base Address Register */ + __IO uint32_t RASR_A3; /*!< Offset: 0x28 MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFul << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFul << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1ul << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1ul << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1ul << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1ul << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFul << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFul << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1ul << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFul << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: XN Position */ +#define MPU_RASR_XN_Msk (1ul << MPU_RASR_XN_Pos) /*!< MPU RASR: XN Mask */ + +#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: AP Position */ +#define MPU_RASR_AP_Msk (7ul << MPU_RASR_AP_Pos) /*!< MPU RASR: AP Mask */ + +#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: TEX Position */ +#define MPU_RASR_TEX_Msk (7ul << MPU_RASR_TEX_Pos) /*!< MPU RASR: TEX Mask */ + +#define MPU_RASR_S_Pos 18 /*!< MPU RASR: Shareable bit Position */ +#define MPU_RASR_S_Msk (1ul << MPU_RASR_S_Pos) /*!< MPU RASR: Shareable bit Mask */ + +#define MPU_RASR_C_Pos 17 /*!< MPU RASR: Cacheable bit Position */ +#define MPU_RASR_C_Msk (1ul << MPU_RASR_C_Pos) /*!< MPU RASR: Cacheable bit Mask */ + +#define MPU_RASR_B_Pos 16 /*!< MPU RASR: Bufferable bit Position */ +#define MPU_RASR_B_Msk (1ul << MPU_RASR_B_Pos) /*!< MPU RASR: Bufferable bit Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFul << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1Ful << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENA_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENA_Msk (0x1Ful << MPU_RASR_ENA_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@}*/ /* end of group CMSIS_CM3_MPU */ +#endif + + +/** @addtogroup CMSIS_CM3_CoreDebug CMSIS CM3 Core Debug + memory mapped structure for Core Debug Register + @{ + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1ul << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1ul << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1ul << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1ul << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1ul << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1ul << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1ul << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1ul << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1ul << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1ul << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1ul << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1ul << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ +/*@}*/ /* end of group CMSIS_CM3_CoreDebug */ + + +/* Memory mapping of Cortex-M3 Hardware */ +#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ +#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ + +#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ +#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ +#endif + +/*@}*/ /* end of group CMSIS_CM3_core_register */ + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + + +/* ################### Compiler specific Intrinsics ########################### */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#define __enable_fault_irq __enable_fiq +#define __disable_fault_irq __disable_fiq + +#define __NOP __nop +#define __WFI __wfi +#define __WFE __wfe +#define __SEV __sev +#define __ISB() __isb(0) +#define __DSB() __dsb(0) +#define __DMB() __dmb(0) +#define __REV __rev +#define __RBIT __rbit +#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) +#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) +#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) +#define __STREXB(value, ptr) __strex(value, ptr) +#define __STREXH(value, ptr) __strex(value, ptr) +#define __STREXW(value, ptr) __strex(value, ptr) + + +/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ +/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ +/* intrinsic void __enable_irq(); */ +/* intrinsic void __disable_irq(); */ + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +extern int32_t __REVSH(int16_t value); + + +#if (__ARMCC_VERSION < 400000) + +/** + * @brief Remove the exclusive lock created by ldrex + * + * Removes the exclusive lock which is created by ldrex. + */ +extern void __CLREX(void); + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +extern uint32_t __get_BASEPRI(void); + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +extern void __set_BASEPRI(uint32_t basePri); + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +extern uint32_t __get_PRIMASK(void); + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +extern void __set_PRIMASK(uint32_t priMask); + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +extern uint32_t __get_FAULTMASK(void); + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +extern void __set_FAULTMASK(uint32_t faultMask); + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +extern uint32_t __get_CONTROL(void); + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +extern void __set_CONTROL(uint32_t control); + +#else /* (__ARMCC_VERSION >= 400000) */ + +/** + * @brief Remove the exclusive lock created by ldrex + * + * Removes the exclusive lock which is created by ldrex. + */ +#define __CLREX __clrex + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +static __INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +static __INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xff); +} + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +static __INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +static __INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +static __INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +static __INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & 1); +} + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +static __INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +static __INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + +#endif /* __ARMCC_VERSION */ + + + +#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ +#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ + +static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } +static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } + +#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ +static __INLINE void __WFI() { __ASM ("wfi"); } +static __INLINE void __WFE() { __ASM ("wfe"); } +static __INLINE void __SEV() { __ASM ("sev"); } +static __INLINE void __CLREX() { __ASM ("clrex"); } + +/* intrinsic void __ISB(void) */ +/* intrinsic void __DSB(void) */ +/* intrinsic void __DMB(void) */ +/* intrinsic void __set_PRIMASK(); */ +/* intrinsic void __get_PRIMASK(); */ +/* intrinsic void __set_FAULTMASK(); */ +/* intrinsic void __get_FAULTMASK(); */ +/* intrinsic uint32_t __REV(uint32_t value); */ +/* intrinsic uint32_t __REVSH(uint32_t value); */ +/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ +/* intrinsic unsigned long __LDREX(unsigned long *); */ + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + +/** + * @brief Reverse bit order of value + * + * @param value value to reverse + * @return reversed value + * + * Reverse bit order of value + */ +extern uint32_t __RBIT(uint32_t value); + +/** + * @brief LDR Exclusive (8 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 8 bit values) + */ +extern uint8_t __LDREXB(uint8_t *addr); + +/** + * @brief LDR Exclusive (16 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 16 bit values + */ +extern uint16_t __LDREXH(uint16_t *addr); + +/** + * @brief LDR Exclusive (32 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 32 bit values + */ +extern uint32_t __LDREXW(uint32_t *addr); + +/** + * @brief STR Exclusive (8 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 8 bit values + */ +extern uint32_t __STREXB(uint8_t value, uint8_t *addr); + +/** + * @brief STR Exclusive (16 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 16 bit values + */ +extern uint32_t __STREXH(uint16_t value, uint16_t *addr); + +/** + * @brief STR Exclusive (32 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 32 bit values + */ +extern uint32_t __STREXW(uint32_t value, uint32_t *addr); + + + +#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +static __INLINE void __enable_irq() { __ASM volatile ("cpsie i"); } +static __INLINE void __disable_irq() { __ASM volatile ("cpsid i"); } + +static __INLINE void __enable_fault_irq() { __ASM volatile ("cpsie f"); } +static __INLINE void __disable_fault_irq() { __ASM volatile ("cpsid f"); } + +static __INLINE void __NOP() { __ASM volatile ("nop"); } +static __INLINE void __WFI() { __ASM volatile ("wfi"); } +static __INLINE void __WFE() { __ASM volatile ("wfe"); } +static __INLINE void __SEV() { __ASM volatile ("sev"); } +static __INLINE void __ISB() { __ASM volatile ("isb"); } +static __INLINE void __DSB() { __ASM volatile ("dsb"); } +static __INLINE void __DMB() { __ASM volatile ("dmb"); } +static __INLINE void __CLREX() { __ASM volatile ("clrex"); } + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +extern uint32_t __get_BASEPRI(void); + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +extern void __set_BASEPRI(uint32_t basePri); + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +extern uint32_t __get_PRIMASK(void); + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +extern void __set_PRIMASK(uint32_t priMask); + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +extern uint32_t __get_FAULTMASK(void); + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +extern void __set_FAULTMASK(uint32_t faultMask); + +/** + * @brief Return the Control Register value +* +* @return Control value + * + * Return the content of the control register + */ +extern uint32_t __get_CONTROL(void); + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +extern void __set_CONTROL(uint32_t control); + +/** + * @brief Reverse byte order in integer value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in integer value + */ +extern uint32_t __REV(uint32_t value); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +extern int32_t __REVSH(int16_t value); + +/** + * @brief Reverse bit order of value + * + * @param value value to reverse + * @return reversed value + * + * Reverse bit order of value + */ +extern uint32_t __RBIT(uint32_t value); + +/** + * @brief LDR Exclusive (8 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 8 bit value + */ +extern uint8_t __LDREXB(uint8_t *addr); + +/** + * @brief LDR Exclusive (16 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 16 bit values + */ +extern uint16_t __LDREXH(uint16_t *addr); + +/** + * @brief LDR Exclusive (32 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 32 bit values + */ +extern uint32_t __LDREXW(uint32_t *addr); + +/** + * @brief STR Exclusive (8 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 8 bit values + */ +extern uint32_t __STREXB(uint8_t value, uint8_t *addr); + +/** + * @brief STR Exclusive (16 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 16 bit values + */ +extern uint32_t __STREXH(uint16_t value, uint16_t *addr); + +/** + * @brief STR Exclusive (32 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 32 bit values + */ +extern uint32_t __STREXW(uint32_t value, uint32_t *addr); + + +#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif + + +/** @addtogroup CMSIS_CM3_Core_FunctionInterface CMSIS CM3 Core Function Interface + Core Function Interface containing: + - Core NVIC Functions + - Core SysTick Functions + - Core Reset Functions +*/ +/*@{*/ + +/* ########################## NVIC functions #################################### */ + +/** + * @brief Set the Priority Grouping in NVIC Interrupt Controller + * + * @param PriorityGroup is priority grouping field + * + * Set the priority grouping field using the required unlock sequence. + * The parameter priority_grouping is assigned to the field + * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. + * In case of a conflict between priority grouping and available + * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + */ +static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + (0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + +/** + * @brief Get the Priority Grouping from NVIC Interrupt Controller + * + * @return priority grouping field + * + * Get the priority grouping from NVIC Interrupt Controller. + * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. + */ +static __INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + +/** + * @brief Enable Interrupt in NVIC Interrupt Controller + * + * @param IRQn The positive number of the external interrupt to enable + * + * Enable a device specific interupt in the NVIC interrupt controller. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ +} + +/** + * @brief Disable the interrupt line for external interrupt specified + * + * @param IRQn The positive number of the external interrupt to disable + * + * Disable a device specific interupt in the NVIC interrupt controller. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + +/** + * @brief Read the interrupt pending bit for a device specific interrupt source + * + * @param IRQn The number of the device specifc interrupt + * @return 1 = interrupt pending, 0 = interrupt not pending + * + * Read the pending register in NVIC and return 1 if its status is pending, + * otherwise it returns 0 + */ +static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + +/** + * @brief Set the pending bit for an external interrupt + * + * @param IRQn The number of the interrupt for set pending + * + * Set the pending bit for the specified interrupt. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + +/** + * @brief Clear the pending bit for an external interrupt + * + * @param IRQn The number of the interrupt for clear pending + * + * Clear the pending bit for the specified interrupt. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + +/** + * @brief Read the active bit for an external interrupt + * + * @param IRQn The number of the interrupt for read active bit + * @return 1 = interrupt active, 0 = interrupt not active + * + * Read the active register in NVIC and returns 1 if its status is active, + * otherwise it returns 0. + */ +static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + +/** + * @brief Set the priority for an interrupt + * + * @param IRQn The number of the interrupt for set priority + * @param priority The priority to set + * + * Set the priority for the specified interrupt. The interrupt + * number can be positive to specify an external (device specific) + * interrupt, or negative to specify an internal (core) interrupt. + * + * Note: The priority cannot be set for every core interrupt. + */ +static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + +/** + * @brief Read the priority for an interrupt + * + * @param IRQn The number of the interrupt for get priority + * @return The priority for the interrupt + * + * Read the priority for the specified interrupt. The interrupt + * number can be positive to specify an external (device specific) + * interrupt, or negative to specify an internal (core) interrupt. + * + * The returned priority value is automatically aligned to the implemented + * priority bits of the microcontroller. + * + * Note: The priority cannot be set for every core interrupt. + */ +static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** + * @brief Encode the priority for an interrupt + * + * @param PriorityGroup The used priority group + * @param PreemptPriority The preemptive priority value (starting from 0) + * @param SubPriority The sub priority value (starting from 0) + * @return The encoded priority for the interrupt + * + * Encode the priority for an interrupt with the given priority group, + * preemptive priority value and sub priority value. + * In case of a conflict between priority grouping and available + * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + * + * The returned priority value can be used for NVIC_SetPriority(...) function + */ +static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** + * @brief Decode the priority of an interrupt + * + * @param Priority The priority for the interrupt + * @param PriorityGroup The used priority group + * @param pPreemptPriority The preemptive priority value (starting from 0) + * @param pSubPriority The sub priority value (starting from 0) + * + * Decode an interrupt priority value with the given priority group to + * preemptive priority value and sub priority value. + * In case of a conflict between priority grouping and available + * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + * + * The priority value can be retrieved with NVIC_GetPriority(...) function + */ +static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + + +/* ################################## SysTick function ############################################ */ + +#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) + +/** + * @brief Initialize and start the SysTick counter and its interrupt. + * + * @param ticks number of ticks between two interrupts + * @return 1 = failed, 0 = successful + * + * Initialise the system tick timer and its interrupt and start the + * system tick timer / counter in free running mode to generate + * periodical interrupts. + */ +static __INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + + + + +/* ################################## Reset function ############################################ */ + +/** + * @brief Initiate a system reset request. + * + * Initiate a system reset request to reset the MCU + */ +static __INLINE void NVIC_SystemReset(void) +{ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@}*/ /* end of group CMSIS_CM3_Core_FunctionInterface */ + + + +/* ##################################### Debug In/Output function ########################################### */ + +/** @addtogroup CMSIS_CM3_CoreDebugInterface CMSIS CM3 Core Debug Interface + Core Debug Interface containing: + - Core Debug Receive / Transmit Functions + - Core Debug Defines + - Core Debug Variables +*/ +/*@{*/ + +extern volatile int ITM_RxBuffer; /*!< variable to receive characters */ +#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ + + +/** + * @brief Outputs a character via the ITM channel 0 + * + * @param ch character to output + * @return character to output + * + * The function outputs a character via the ITM channel 0. + * The function returns when no debugger is connected that has booked the output. + * It is blocking when a debugger is connected, but the previous character send is not transmitted. + */ +static __INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ + (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ + (ITM->TER & (1ul << 0) ) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0].u32 == 0); + ITM->PORT[0].u8 = (uint8_t) ch; + } + return (ch); +} + + +/** + * @brief Inputs a character via variable ITM_RxBuffer + * + * @return received character, -1 = no character received + * + * The function inputs a character via variable ITM_RxBuffer. + * The function returns when no debugger is connected that has booked the output. + * It is blocking when a debugger is connected, but the previous character send is not transmitted. + */ +static __INLINE int ITM_ReceiveChar (void) { + int ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + * @brief Check if a character via variable ITM_RxBuffer is available + * + * @return 1 = character available, 0 = no character available + * + * The function checks variable ITM_RxBuffer whether a character is available or not. + * The function returns '1' if a character is available and '0' if no character is available. + */ +static __INLINE int ITM_CheckChar (void) { + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { + return (0); /* no character available */ + } else { + return (1); /* character available */ + } +} + +/*@}*/ /* end of group CMSIS_CM3_core_DebugInterface */ + + +#ifdef __cplusplus +} +#endif + +/*@}*/ /* end of group CMSIS_CM3_core_definitions */ + +#endif /* __CM3_CORE_H__ */ + +/*lint -restore */ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html new file mode 100644 index 00000000..b80f38df --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html @@ -0,0 +1,284 @@ + + + + + + + + + + + + +Release Notes for STM32F10x CMSIS + + + + + +
    +


    +

    +
    + + + + + + +
    + + + + + + + + + +
    Back to Release page
    +

    Release +Notes for STM32F10x CMSIS

    +

    Copyright 2011 STMicroelectronics

    +

    +
    +

     

    + + + + + + +
    +

    Contents

    +
      +
    1. STM32F10x CMSIS +update History
    2. +
    3. License
    4. +
    + +

    STM32F10x CMSIS +update History


    +

    V3.5.0 / 11-March-2011

    +

    Main +Changes

    + +
      +
    • stm32f10x.h +and startup_stm32f10x_hd_vl.s files: remove the FSMC interrupt +definition for STM32F10x High-density Value line devices.
      +
    • +
    • system_stm32f10x.c file provided within the CMSIS folder.
      +
    • + +
    + +

    3.4.0 +- 10/15/2010

    + +
      +
    1. General
    2. +
    + +
      +
    • Add support +for STM32F10x High-density Value line devices.
    • +
    +
      +
    1. STM32F10x CMSIS Device Peripheral Access Layer
    2. +
    + + + +
      +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
      +
      • Update to support High-density Value line devices
        • Add new define STM32F10X_HD_VL
        • +
        • RCC, AFIO, FSMC bits definition updated
        • +
        +
      • + + All +STM32 devices definitions are commented by default. User has to select the +appropriate device before starting else an error will be signaled on compile +time.
      • +
      • Add new IRQs definitons inside the IRQn_Type enumeration for STM23 High-density Value line devices.
      • +
      • "bool" type removed.
        +
      • +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
      +
    • +
        +
      • "system_stm32f10x.c" moved to to "STM32F10x_StdPeriph_Template" directory. This file is also moved to each example directory under "STM32F10x_StdPeriph_Examples".
        +
      • +
      • SystemInit_ExtMemCtl() function: update to support High-density Value line devices.
      • +
      • Add "VECT_TAB_SRAM" inside "system_stm32f10x.c" +to select if the user want to place the Vector Table in internal SRAM. +An additional define is also to specify the Vector Table offset "VECT_TAB_OFFSET".
        +
      • + +
      +
    • STM32F10x CMSIS startup files:startup_stm32f10x_xx.s
      • Add three +startup files for STM32 High-density Value line devices: + startup_stm32f10x_hd_vl.s
      +
    +

    3.3.0 +- 04/16/2010

    + +
    1. General
    +
    • Add support +for STM32F10x XL-density devices.
    • Add startup files for TrueSTUDIO toolchain
    1. STM32F10x CMSIS Device Peripheral Access Layer
    + +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
      +
      • Update to support XL-density devices
        • Add new define STM32F10X_XL
        • Add new IRQs for TIM9..14
        • Update FLASH_TypeDef structure
        • Add new IP instances TIM9..14
        • RCC, AFIO, DBGMCU bits definition updated
      • Correct IRQs definition for MD-, LD-, MD_VL- and LD_VL-density devices (remove comma "," at the end of enum list)
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
      +
      • SystemInit_ExtMemCtl() function: update to support XL-density devices
      • SystemInit() function: swap the order of SetSysClock() and SystemInit_ExtMemCtl() functions. 
        +
    • STM32F10x CMSIS startup files:
      • add three +startup files for STM32 XL-density devices: + startup_stm32f10x_xl.s
      • startup_stm32f10x_md_vl.s for RIDE7: add USART3 IRQ Handler (was missing in previous version)
      • Add startup files for TrueSTUDIO toolchain
    +

    3.2.0 +- 03/01/2010

    +
      +
    1. General
    2. +
    +
      + +
    • STM32F10x CMSIS files updated to CMSIS V1.30 release
    • +
    • Directory structure updated to be aligned with CMSIS V1.30
      +
    • +
    • Add support +for STM32 Low-density Value line (STM32F100x4/6) and +Medium-density Value line (STM32F100x8/B) devices
    • + +
    +
      +
    1. CMSIS Core Peripheral Access Layer
    + +
      +
    1. STM32F10x CMSIS Device Peripheral Access Layer
    2. + +
    + +
      + +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
      +
    • +
        +
      • Update +the stm32f10x.h file to support new Value line devices features: CEC +peripheral, new General purpose timers TIM15, TIM16 and TIM17.
      • +
      • Peripherals Bits definitions updated to be in line with Value line devices available features.
        +
      • +
      • HSE_Value, +HSI_Value and HSEStartup_TimeOut changed to upper case: HSE_VALUE, +HSI_VALUE and HSE_STARTUP_TIMEOUT. Old names are kept for legacy +purposes.
        +
      • +
      +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
      +
    • +
        +
      • SystemFrequency variable name changed to SystemCoreClock
        +
      • +
      • Default + SystemCoreClock is changed to 24MHz when Value line devices are selected and to 72MHz on other devices.
        +
      • +
      • All while(1) loop were removed from all clock setting functions. User has to handle the HSE startup failure.
        +
      • +
      • Additional function void SystemCoreClockUpdate (void) is provided.
        +
      • +
      +
    • STM32F10x CMSIS Startup files: startup_stm32f10x_xx.s
    • +
        +
      • Add new +startup files for STM32 Low-density Value line devices: + startup_stm32f10x_ld_vl.s
      • +
      • Add new startup +files for STM32 Medium-density Value line devices: + startup_stm32f10x_md_vl.s
      • +
      • SystemInit() function is called from startup file (startup_stm32f10x_xx.s) before to branch to application main.
        +To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file
        +
      • +
      • GNU startup file for Low density devices (startup_stm32f10x_ld.s) is updated to fix compilation errors.
        +
      • +
      + +
    + +
      +
    +

    License

    +

    The +enclosed firmware and all the related documentation are not covered by +a License Agreement, if you need such License you can contact your +local STMicroelectronics office.

    +

    THE +PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO +SAVE TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR +ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY +CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY +CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH +THEIR PRODUCTS.

    +

     

    +
    +
    +

    For +complete documentation on STM32(CORTEX M3) 32-Bit Microcontrollers +visit www.st.com/STM32

    +
    +

    +
    +
    +

     

    +
    + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h new file mode 100644 index 00000000..af0c7c9a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h @@ -0,0 +1,8336 @@ +/** + ****************************************************************************** + * @file stm32f10x.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for STM32F10x Connectivity line, + * High density, High density value line, Medium density, + * Medium density Value line, Low density, Low density Value line + * and XL-density devices. + * + * The file is the unique include file that the application programmer + * is using in the C source code, usually in main.c. This file contains: + * - Configuration section that allows to select: + * - The device used in the target application + * - To use or not the peripheral’s drivers in application code(i.e. + * code will be based on direct access to peripheral’s registers + * rather than drivers API), this option is controlled by + * "#define USE_STDPERIPH_DRIVER" + * - To change few application-specific parameters such as the HSE + * crystal frequency + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral’s registers hardware + * + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f10x + * @{ + */ + +#ifndef __STM32F10x_H +#define __STM32F10x_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup Library_configuration_section + * @{ + */ + +/* Uncomment the line below according to the target STM32 device used in your + application + */ + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) + /* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */ + /* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */ + /* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */ + /* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */ + /* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */ + /* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */ + /* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */ + /* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */ +#endif +/* Tip: To avoid modifying this file each time you need to switch between these + devices, you can define the device in your toolchain compiler preprocessor. + + - Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers + where the Flash memory density ranges between 16 and 32 Kbytes. + - Low-density value line devices are STM32F100xx microcontrollers where the Flash + memory density ranges between 16 and 32 Kbytes. + - Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers + where the Flash memory density ranges between 64 and 128 Kbytes. + - Medium-density value line devices are STM32F100xx microcontrollers where the + Flash memory density ranges between 64 and 128 Kbytes. + - High-density devices are STM32F101xx and STM32F103xx microcontrollers where + the Flash memory density ranges between 256 and 512 Kbytes. + - High-density value line devices are STM32F100xx microcontrollers where the + Flash memory density ranges between 256 and 512 Kbytes. + - XL-density devices are STM32F101xx and STM32F103xx microcontrollers where + the Flash memory density ranges between 512 and 1024 Kbytes. + - Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers. + */ + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) + #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)" +#endif + +#if !defined USE_STDPERIPH_DRIVER +/** + * @brief Comment the line below if you will not use the peripherals drivers. + In this case, these drivers will not be included and the application code will + be based on direct access to peripherals registers + */ + /*#define USE_STDPERIPH_DRIVER*/ +#endif + +/** + * @brief In the following line adjust the value of External High Speed oscillator (HSE) + used in your application + + Tip: To avoid modifying this file each time you need to use different HSE, you + can define the HSE value in your toolchain compiler preprocessor. + */ +#if !defined HSE_VALUE + #ifdef STM32F10X_CL + #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ + #else + #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ + #endif /* STM32F10X_CL */ +#endif /* HSE_VALUE */ + + +/** + * @brief In the following line adjust the External High Speed oscillator (HSE) Startup + Timeout value + */ +#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up */ + +#define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ + +/** + * @brief STM32F10x Standard Peripheral Library version number + */ +#define __STM32F10X_STDPERIPH_VERSION_MAIN (0x03) /*!< [31:24] main version */ +#define __STM32F10X_STDPERIPH_VERSION_SUB1 (0x05) /*!< [23:16] sub1 version */ +#define __STM32F10X_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */ +#define __STM32F10X_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32F10X_STDPERIPH_VERSION ( (__STM32F10X_STDPERIPH_VERSION_MAIN << 24)\ + |(__STM32F10X_STDPERIPH_VERSION_SUB1 << 16)\ + |(__STM32F10X_STDPERIPH_VERSION_SUB2 << 8)\ + |(__STM32F10X_STDPERIPH_VERSION_RC)) + +/** + * @} + */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ +#ifdef STM32F10X_XL + #define __MPU_PRESENT 1 /*!< STM32 XL-density devices provide an MPU */ +#else + #define __MPU_PRESENT 0 /*!< Other STM32 devices does not provide an MPU */ +#endif /* STM32F10X_XL */ +#define __NVIC_PRIO_BITS 4 /*!< STM32 uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + +/** + * @brief STM32F10x Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ + +/****** STM32 specific Interrupt Numbers *********************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_IRQn = 2, /*!< Tamper Interrupt */ + RTC_IRQn = 3, /*!< RTC global Interrupt */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ + +#ifdef STM32F10X_LD + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42 /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ +#endif /* STM32F10X_LD */ + +#ifdef STM32F10X_LD_VL + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + CEC_IRQn = 42, /*!< HDMI-CEC Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 and DAC underrun Interrupt */ + TIM7_IRQn = 55 /*!< TIM7 Interrupt */ +#endif /* STM32F10X_LD_VL */ + +#ifdef STM32F10X_MD + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42 /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ +#endif /* STM32F10X_MD */ + +#ifdef STM32F10X_MD_VL + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + CEC_IRQn = 42, /*!< HDMI-CEC Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 and DAC underrun Interrupt */ + TIM7_IRQn = 55 /*!< TIM7 Interrupt */ +#endif /* STM32F10X_MD_VL */ + +#ifdef STM32F10X_HD + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ + FSMC_IRQn = 48, /*!< FSMC global Interrupt */ + SDIO_IRQn = 49, /*!< SDIO global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ + TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_5_IRQn = 59 /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ +#endif /* STM32F10X_HD */ + +#ifdef STM32F10X_HD_VL + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + CEC_IRQn = 42, /*!< HDMI-CEC Interrupt */ + TIM12_IRQn = 43, /*!< TIM12 global Interrupt */ + TIM13_IRQn = 44, /*!< TIM13 global Interrupt */ + TIM14_IRQn = 45, /*!< TIM14 global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 and DAC underrun Interrupt */ + TIM7_IRQn = 55, /*!< TIM7 Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_5_IRQn = 59, /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ + DMA2_Channel5_IRQn = 60 /*!< DMA2 Channel 5 global Interrupt (DMA2 Channel 5 is + mapped at position 60 only if the MISC_REMAP bit in + the AFIO_MAPR2 register is set) */ +#endif /* STM32F10X_HD_VL */ + +#ifdef STM32F10X_XL + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM9_IRQn = 24, /*!< TIM1 Break Interrupt and TIM9 global Interrupt */ + TIM1_UP_TIM10_IRQn = 25, /*!< TIM1 Update Interrupt and TIM10 global Interrupt */ + TIM1_TRG_COM_TIM11_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt and TIM11 global interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ + TIM8_BRK_TIM12_IRQn = 43, /*!< TIM8 Break Interrupt and TIM12 global Interrupt */ + TIM8_UP_TIM13_IRQn = 44, /*!< TIM8 Update Interrupt and TIM13 global Interrupt */ + TIM8_TRG_COM_TIM14_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ + FSMC_IRQn = 48, /*!< FSMC global Interrupt */ + SDIO_IRQn = 49, /*!< SDIO global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ + TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_5_IRQn = 59 /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ +#endif /* STM32F10X_XL */ + +#ifdef STM32F10X_CL + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS WakeUp from suspend through EXTI Line Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ + TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ + ETH_IRQn = 61, /*!< Ethernet global Interrupt */ + ETH_WKUP_IRQn = 62, /*!< Ethernet Wakeup through EXTI line Interrupt */ + CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */ + CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */ + CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */ + CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */ + OTG_FS_IRQn = 67 /*!< USB OTG FS global Interrupt */ +#endif /* STM32F10X_CL */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm3.h" +#include "system_stm32f10x.h" +#include + +/** @addtogroup Exported_types + * @{ + */ + +/*!< STM32F10x Standard Peripheral Library old types (maintained for legacy purpose) */ +typedef int32_t s32; +typedef int16_t s16; +typedef int8_t s8; + +typedef const int32_t sc32; /*!< Read Only */ +typedef const int16_t sc16; /*!< Read Only */ +typedef const int8_t sc8; /*!< Read Only */ + +typedef __IO int32_t vs32; +typedef __IO int16_t vs16; +typedef __IO int8_t vs8; + +typedef __I int32_t vsc32; /*!< Read Only */ +typedef __I int16_t vsc16; /*!< Read Only */ +typedef __I int8_t vsc8; /*!< Read Only */ + +typedef uint32_t u32; +typedef uint16_t u16; +typedef uint8_t u8; + +typedef const uint32_t uc32; /*!< Read Only */ +typedef const uint16_t uc16; /*!< Read Only */ +typedef const uint8_t uc8; /*!< Read Only */ + +typedef __IO uint32_t vu32; +typedef __IO uint16_t vu16; +typedef __IO uint8_t vu8; + +typedef __I uint32_t vuc32; /*!< Read Only */ +typedef __I uint16_t vuc16; /*!< Read Only */ +typedef __I uint8_t vuc8; /*!< Read Only */ + +typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; + +typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; +#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) + +typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; + +/*!< STM32F10x Standard Peripheral Library old definitions (maintained for legacy purpose) */ +#define HSEStartUp_TimeOut HSE_STARTUP_TIMEOUT +#define HSE_Value HSE_VALUE +#define HSI_Value HSI_VALUE +/** + * @} + */ + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t SR; + __IO uint32_t CR1; + __IO uint32_t CR2; + __IO uint32_t SMPR1; + __IO uint32_t SMPR2; + __IO uint32_t JOFR1; + __IO uint32_t JOFR2; + __IO uint32_t JOFR3; + __IO uint32_t JOFR4; + __IO uint32_t HTR; + __IO uint32_t LTR; + __IO uint32_t SQR1; + __IO uint32_t SQR2; + __IO uint32_t SQR3; + __IO uint32_t JSQR; + __IO uint32_t JDR1; + __IO uint32_t JDR2; + __IO uint32_t JDR3; + __IO uint32_t JDR4; + __IO uint32_t DR; +} ADC_TypeDef; + +/** + * @brief Backup Registers + */ + +typedef struct +{ + uint32_t RESERVED0; + __IO uint16_t DR1; + uint16_t RESERVED1; + __IO uint16_t DR2; + uint16_t RESERVED2; + __IO uint16_t DR3; + uint16_t RESERVED3; + __IO uint16_t DR4; + uint16_t RESERVED4; + __IO uint16_t DR5; + uint16_t RESERVED5; + __IO uint16_t DR6; + uint16_t RESERVED6; + __IO uint16_t DR7; + uint16_t RESERVED7; + __IO uint16_t DR8; + uint16_t RESERVED8; + __IO uint16_t DR9; + uint16_t RESERVED9; + __IO uint16_t DR10; + uint16_t RESERVED10; + __IO uint16_t RTCCR; + uint16_t RESERVED11; + __IO uint16_t CR; + uint16_t RESERVED12; + __IO uint16_t CSR; + uint16_t RESERVED13[5]; + __IO uint16_t DR11; + uint16_t RESERVED14; + __IO uint16_t DR12; + uint16_t RESERVED15; + __IO uint16_t DR13; + uint16_t RESERVED16; + __IO uint16_t DR14; + uint16_t RESERVED17; + __IO uint16_t DR15; + uint16_t RESERVED18; + __IO uint16_t DR16; + uint16_t RESERVED19; + __IO uint16_t DR17; + uint16_t RESERVED20; + __IO uint16_t DR18; + uint16_t RESERVED21; + __IO uint16_t DR19; + uint16_t RESERVED22; + __IO uint16_t DR20; + uint16_t RESERVED23; + __IO uint16_t DR21; + uint16_t RESERVED24; + __IO uint16_t DR22; + uint16_t RESERVED25; + __IO uint16_t DR23; + uint16_t RESERVED26; + __IO uint16_t DR24; + uint16_t RESERVED27; + __IO uint16_t DR25; + uint16_t RESERVED28; + __IO uint16_t DR26; + uint16_t RESERVED29; + __IO uint16_t DR27; + uint16_t RESERVED30; + __IO uint16_t DR28; + uint16_t RESERVED31; + __IO uint16_t DR29; + uint16_t RESERVED32; + __IO uint16_t DR30; + uint16_t RESERVED33; + __IO uint16_t DR31; + uint16_t RESERVED34; + __IO uint16_t DR32; + uint16_t RESERVED35; + __IO uint16_t DR33; + uint16_t RESERVED36; + __IO uint16_t DR34; + uint16_t RESERVED37; + __IO uint16_t DR35; + uint16_t RESERVED38; + __IO uint16_t DR36; + uint16_t RESERVED39; + __IO uint16_t DR37; + uint16_t RESERVED40; + __IO uint16_t DR38; + uint16_t RESERVED41; + __IO uint16_t DR39; + uint16_t RESERVED42; + __IO uint16_t DR40; + uint16_t RESERVED43; + __IO uint16_t DR41; + uint16_t RESERVED44; + __IO uint16_t DR42; + uint16_t RESERVED45; +} BKP_TypeDef; + +/** + * @brief Controller Area Network TxMailBox + */ + +typedef struct +{ + __IO uint32_t TIR; + __IO uint32_t TDTR; + __IO uint32_t TDLR; + __IO uint32_t TDHR; +} CAN_TxMailBox_TypeDef; + +/** + * @brief Controller Area Network FIFOMailBox + */ + +typedef struct +{ + __IO uint32_t RIR; + __IO uint32_t RDTR; + __IO uint32_t RDLR; + __IO uint32_t RDHR; +} CAN_FIFOMailBox_TypeDef; + +/** + * @brief Controller Area Network FilterRegister + */ + +typedef struct +{ + __IO uint32_t FR1; + __IO uint32_t FR2; +} CAN_FilterRegister_TypeDef; + +/** + * @brief Controller Area Network + */ + +typedef struct +{ + __IO uint32_t MCR; + __IO uint32_t MSR; + __IO uint32_t TSR; + __IO uint32_t RF0R; + __IO uint32_t RF1R; + __IO uint32_t IER; + __IO uint32_t ESR; + __IO uint32_t BTR; + uint32_t RESERVED0[88]; + CAN_TxMailBox_TypeDef sTxMailBox[3]; + CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; + uint32_t RESERVED1[12]; + __IO uint32_t FMR; + __IO uint32_t FM1R; + uint32_t RESERVED2; + __IO uint32_t FS1R; + uint32_t RESERVED3; + __IO uint32_t FFA1R; + uint32_t RESERVED4; + __IO uint32_t FA1R; + uint32_t RESERVED5[8]; +#ifndef STM32F10X_CL + CAN_FilterRegister_TypeDef sFilterRegister[14]; +#else + CAN_FilterRegister_TypeDef sFilterRegister[28]; +#endif /* STM32F10X_CL */ +} CAN_TypeDef; + +/** + * @brief Consumer Electronics Control (CEC) + */ +typedef struct +{ + __IO uint32_t CFGR; + __IO uint32_t OAR; + __IO uint32_t PRES; + __IO uint32_t ESR; + __IO uint32_t CSR; + __IO uint32_t TXD; + __IO uint32_t RXD; +} CEC_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; + __IO uint8_t IDR; + uint8_t RESERVED0; + uint16_t RESERVED1; + __IO uint32_t CR; +} CRC_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t SWTRIGR; + __IO uint32_t DHR12R1; + __IO uint32_t DHR12L1; + __IO uint32_t DHR8R1; + __IO uint32_t DHR12R2; + __IO uint32_t DHR12L2; + __IO uint32_t DHR8R2; + __IO uint32_t DHR12RD; + __IO uint32_t DHR12LD; + __IO uint32_t DHR8RD; + __IO uint32_t DOR1; + __IO uint32_t DOR2; +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + __IO uint32_t SR; +#endif +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; + __IO uint32_t CR; +}DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; + __IO uint32_t CNDTR; + __IO uint32_t CPAR; + __IO uint32_t CMAR; +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; + __IO uint32_t IFCR; +} DMA_TypeDef; + +/** + * @brief Ethernet MAC + */ + +typedef struct +{ + __IO uint32_t MACCR; + __IO uint32_t MACFFR; + __IO uint32_t MACHTHR; + __IO uint32_t MACHTLR; + __IO uint32_t MACMIIAR; + __IO uint32_t MACMIIDR; + __IO uint32_t MACFCR; + __IO uint32_t MACVLANTR; /* 8 */ + uint32_t RESERVED0[2]; + __IO uint32_t MACRWUFFR; /* 11 */ + __IO uint32_t MACPMTCSR; + uint32_t RESERVED1[2]; + __IO uint32_t MACSR; /* 15 */ + __IO uint32_t MACIMR; + __IO uint32_t MACA0HR; + __IO uint32_t MACA0LR; + __IO uint32_t MACA1HR; + __IO uint32_t MACA1LR; + __IO uint32_t MACA2HR; + __IO uint32_t MACA2LR; + __IO uint32_t MACA3HR; + __IO uint32_t MACA3LR; /* 24 */ + uint32_t RESERVED2[40]; + __IO uint32_t MMCCR; /* 65 */ + __IO uint32_t MMCRIR; + __IO uint32_t MMCTIR; + __IO uint32_t MMCRIMR; + __IO uint32_t MMCTIMR; /* 69 */ + uint32_t RESERVED3[14]; + __IO uint32_t MMCTGFSCCR; /* 84 */ + __IO uint32_t MMCTGFMSCCR; + uint32_t RESERVED4[5]; + __IO uint32_t MMCTGFCR; + uint32_t RESERVED5[10]; + __IO uint32_t MMCRFCECR; + __IO uint32_t MMCRFAECR; + uint32_t RESERVED6[10]; + __IO uint32_t MMCRGUFCR; + uint32_t RESERVED7[334]; + __IO uint32_t PTPTSCR; + __IO uint32_t PTPSSIR; + __IO uint32_t PTPTSHR; + __IO uint32_t PTPTSLR; + __IO uint32_t PTPTSHUR; + __IO uint32_t PTPTSLUR; + __IO uint32_t PTPTSAR; + __IO uint32_t PTPTTHR; + __IO uint32_t PTPTTLR; + uint32_t RESERVED8[567]; + __IO uint32_t DMABMR; + __IO uint32_t DMATPDR; + __IO uint32_t DMARPDR; + __IO uint32_t DMARDLAR; + __IO uint32_t DMATDLAR; + __IO uint32_t DMASR; + __IO uint32_t DMAOMR; + __IO uint32_t DMAIER; + __IO uint32_t DMAMFBOCR; + uint32_t RESERVED9[9]; + __IO uint32_t DMACHTDR; + __IO uint32_t DMACHRDR; + __IO uint32_t DMACHTBAR; + __IO uint32_t DMACHRBAR; +} ETH_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; + __IO uint32_t EMR; + __IO uint32_t RTSR; + __IO uint32_t FTSR; + __IO uint32_t SWIER; + __IO uint32_t PR; +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; + __IO uint32_t KEYR; + __IO uint32_t OPTKEYR; + __IO uint32_t SR; + __IO uint32_t CR; + __IO uint32_t AR; + __IO uint32_t RESERVED; + __IO uint32_t OBR; + __IO uint32_t WRPR; +#ifdef STM32F10X_XL + uint32_t RESERVED1[8]; + __IO uint32_t KEYR2; + uint32_t RESERVED2; + __IO uint32_t SR2; + __IO uint32_t CR2; + __IO uint32_t AR2; +#endif /* STM32F10X_XL */ +} FLASH_TypeDef; + +/** + * @brief Option Bytes Registers + */ + +typedef struct +{ + __IO uint16_t RDP; + __IO uint16_t USER; + __IO uint16_t Data0; + __IO uint16_t Data1; + __IO uint16_t WRP0; + __IO uint16_t WRP1; + __IO uint16_t WRP2; + __IO uint16_t WRP3; +} OB_TypeDef; + +/** + * @brief Flexible Static Memory Controller + */ + +typedef struct +{ + __IO uint32_t BTCR[8]; +} FSMC_Bank1_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank1E + */ + +typedef struct +{ + __IO uint32_t BWTR[7]; +} FSMC_Bank1E_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank2 + */ + +typedef struct +{ + __IO uint32_t PCR2; + __IO uint32_t SR2; + __IO uint32_t PMEM2; + __IO uint32_t PATT2; + uint32_t RESERVED0; + __IO uint32_t ECCR2; +} FSMC_Bank2_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank3 + */ + +typedef struct +{ + __IO uint32_t PCR3; + __IO uint32_t SR3; + __IO uint32_t PMEM3; + __IO uint32_t PATT3; + uint32_t RESERVED0; + __IO uint32_t ECCR3; +} FSMC_Bank3_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank4 + */ + +typedef struct +{ + __IO uint32_t PCR4; + __IO uint32_t SR4; + __IO uint32_t PMEM4; + __IO uint32_t PATT4; + __IO uint32_t PIO4; +} FSMC_Bank4_TypeDef; + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t CRL; + __IO uint32_t CRH; + __IO uint32_t IDR; + __IO uint32_t ODR; + __IO uint32_t BSRR; + __IO uint32_t BRR; + __IO uint32_t LCKR; +} GPIO_TypeDef; + +/** + * @brief Alternate Function I/O + */ + +typedef struct +{ + __IO uint32_t EVCR; + __IO uint32_t MAPR; + __IO uint32_t EXTICR[4]; + uint32_t RESERVED0; + __IO uint32_t MAPR2; +} AFIO_TypeDef; +/** + * @brief Inter Integrated Circuit Interface + */ + +typedef struct +{ + __IO uint16_t CR1; + uint16_t RESERVED0; + __IO uint16_t CR2; + uint16_t RESERVED1; + __IO uint16_t OAR1; + uint16_t RESERVED2; + __IO uint16_t OAR2; + uint16_t RESERVED3; + __IO uint16_t DR; + uint16_t RESERVED4; + __IO uint16_t SR1; + uint16_t RESERVED5; + __IO uint16_t SR2; + uint16_t RESERVED6; + __IO uint16_t CCR; + uint16_t RESERVED7; + __IO uint16_t TRISE; + uint16_t RESERVED8; +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; + __IO uint32_t PR; + __IO uint32_t RLR; + __IO uint32_t SR; +} IWDG_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t CSR; +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t CFGR; + __IO uint32_t CIR; + __IO uint32_t APB2RSTR; + __IO uint32_t APB1RSTR; + __IO uint32_t AHBENR; + __IO uint32_t APB2ENR; + __IO uint32_t APB1ENR; + __IO uint32_t BDCR; + __IO uint32_t CSR; + +#ifdef STM32F10X_CL + __IO uint32_t AHBRSTR; + __IO uint32_t CFGR2; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + uint32_t RESERVED0; + __IO uint32_t CFGR2; +#endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ + +typedef struct +{ + __IO uint16_t CRH; + uint16_t RESERVED0; + __IO uint16_t CRL; + uint16_t RESERVED1; + __IO uint16_t PRLH; + uint16_t RESERVED2; + __IO uint16_t PRLL; + uint16_t RESERVED3; + __IO uint16_t DIVH; + uint16_t RESERVED4; + __IO uint16_t DIVL; + uint16_t RESERVED5; + __IO uint16_t CNTH; + uint16_t RESERVED6; + __IO uint16_t CNTL; + uint16_t RESERVED7; + __IO uint16_t ALRH; + uint16_t RESERVED8; + __IO uint16_t ALRL; + uint16_t RESERVED9; +} RTC_TypeDef; + +/** + * @brief SD host Interface + */ + +typedef struct +{ + __IO uint32_t POWER; + __IO uint32_t CLKCR; + __IO uint32_t ARG; + __IO uint32_t CMD; + __I uint32_t RESPCMD; + __I uint32_t RESP1; + __I uint32_t RESP2; + __I uint32_t RESP3; + __I uint32_t RESP4; + __IO uint32_t DTIMER; + __IO uint32_t DLEN; + __IO uint32_t DCTRL; + __I uint32_t DCOUNT; + __I uint32_t STA; + __IO uint32_t ICR; + __IO uint32_t MASK; + uint32_t RESERVED0[2]; + __I uint32_t FIFOCNT; + uint32_t RESERVED1[13]; + __IO uint32_t FIFO; +} SDIO_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint16_t CR1; + uint16_t RESERVED0; + __IO uint16_t CR2; + uint16_t RESERVED1; + __IO uint16_t SR; + uint16_t RESERVED2; + __IO uint16_t DR; + uint16_t RESERVED3; + __IO uint16_t CRCPR; + uint16_t RESERVED4; + __IO uint16_t RXCRCR; + uint16_t RESERVED5; + __IO uint16_t TXCRCR; + uint16_t RESERVED6; + __IO uint16_t I2SCFGR; + uint16_t RESERVED7; + __IO uint16_t I2SPR; + uint16_t RESERVED8; +} SPI_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint16_t CR1; + uint16_t RESERVED0; + __IO uint16_t CR2; + uint16_t RESERVED1; + __IO uint16_t SMCR; + uint16_t RESERVED2; + __IO uint16_t DIER; + uint16_t RESERVED3; + __IO uint16_t SR; + uint16_t RESERVED4; + __IO uint16_t EGR; + uint16_t RESERVED5; + __IO uint16_t CCMR1; + uint16_t RESERVED6; + __IO uint16_t CCMR2; + uint16_t RESERVED7; + __IO uint16_t CCER; + uint16_t RESERVED8; + __IO uint16_t CNT; + uint16_t RESERVED9; + __IO uint16_t PSC; + uint16_t RESERVED10; + __IO uint16_t ARR; + uint16_t RESERVED11; + __IO uint16_t RCR; + uint16_t RESERVED12; + __IO uint16_t CCR1; + uint16_t RESERVED13; + __IO uint16_t CCR2; + uint16_t RESERVED14; + __IO uint16_t CCR3; + uint16_t RESERVED15; + __IO uint16_t CCR4; + uint16_t RESERVED16; + __IO uint16_t BDTR; + uint16_t RESERVED17; + __IO uint16_t DCR; + uint16_t RESERVED18; + __IO uint16_t DMAR; + uint16_t RESERVED19; +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ + +typedef struct +{ + __IO uint16_t SR; + uint16_t RESERVED0; + __IO uint16_t DR; + uint16_t RESERVED1; + __IO uint16_t BRR; + uint16_t RESERVED2; + __IO uint16_t CR1; + uint16_t RESERVED3; + __IO uint16_t CR2; + uint16_t RESERVED4; + __IO uint16_t CR3; + uint16_t RESERVED5; + __IO uint16_t GTPR; + uint16_t RESERVED6; +} USART_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t CFR; + __IO uint32_t SR; +} WWDG_TypeDef; + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + + +#define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */ +#define SRAM_BASE ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */ +#define PERIPH_BASE ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */ + +#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the bit-band region */ +#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the bit-band region */ + +#define FSMC_R_BASE ((uint32_t)0xA0000000) /*!< FSMC registers base address */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) + +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) +#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) +#define TIM12_BASE (APB1PERIPH_BASE + 0x1800) +#define TIM13_BASE (APB1PERIPH_BASE + 0x1C00) +#define TIM14_BASE (APB1PERIPH_BASE + 0x2000) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) +#define UART5_BASE (APB1PERIPH_BASE + 0x5000) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) +#define CAN1_BASE (APB1PERIPH_BASE + 0x6400) +#define CAN2_BASE (APB1PERIPH_BASE + 0x6800) +#define BKP_BASE (APB1PERIPH_BASE + 0x6C00) +#define PWR_BASE (APB1PERIPH_BASE + 0x7000) +#define DAC_BASE (APB1PERIPH_BASE + 0x7400) +#define CEC_BASE (APB1PERIPH_BASE + 0x7800) + +#define AFIO_BASE (APB2PERIPH_BASE + 0x0000) +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) +#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) +#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) +#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) +#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) +#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) +#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) +#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) +#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) +#define ADC2_BASE (APB2PERIPH_BASE + 0x2800) +#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) +#define TIM8_BASE (APB2PERIPH_BASE + 0x3400) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800) +#define ADC3_BASE (APB2PERIPH_BASE + 0x3C00) +#define TIM15_BASE (APB2PERIPH_BASE + 0x4000) +#define TIM16_BASE (APB2PERIPH_BASE + 0x4400) +#define TIM17_BASE (APB2PERIPH_BASE + 0x4800) +#define TIM9_BASE (APB2PERIPH_BASE + 0x4C00) +#define TIM10_BASE (APB2PERIPH_BASE + 0x5000) +#define TIM11_BASE (APB2PERIPH_BASE + 0x5400) + +#define SDIO_BASE (PERIPH_BASE + 0x18000) + +#define DMA1_BASE (AHBPERIPH_BASE + 0x0000) +#define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008) +#define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C) +#define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030) +#define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044) +#define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058) +#define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C) +#define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080) +#define DMA2_BASE (AHBPERIPH_BASE + 0x0400) +#define DMA2_Channel1_BASE (AHBPERIPH_BASE + 0x0408) +#define DMA2_Channel2_BASE (AHBPERIPH_BASE + 0x041C) +#define DMA2_Channel3_BASE (AHBPERIPH_BASE + 0x0430) +#define DMA2_Channel4_BASE (AHBPERIPH_BASE + 0x0444) +#define DMA2_Channel5_BASE (AHBPERIPH_BASE + 0x0458) +#define RCC_BASE (AHBPERIPH_BASE + 0x1000) +#define CRC_BASE (AHBPERIPH_BASE + 0x3000) + +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x2000) /*!< Flash registers base address */ +#define OB_BASE ((uint32_t)0x1FFFF800) /*!< Flash Option Bytes base address */ + +#define ETH_BASE (AHBPERIPH_BASE + 0x8000) +#define ETH_MAC_BASE (ETH_BASE) +#define ETH_MMC_BASE (ETH_BASE + 0x0100) +#define ETH_PTP_BASE (ETH_BASE + 0x0700) +#define ETH_DMA_BASE (ETH_BASE + 0x1000) + +#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!< FSMC Bank1 registers base address */ +#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!< FSMC Bank1E registers base address */ +#define FSMC_Bank2_R_BASE (FSMC_R_BASE + 0x0060) /*!< FSMC Bank2 registers base address */ +#define FSMC_Bank3_R_BASE (FSMC_R_BASE + 0x0080) /*!< FSMC Bank3 registers base address */ +#define FSMC_Bank4_R_BASE (FSMC_R_BASE + 0x00A0) /*!< FSMC Bank4 registers base address */ + +#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ + +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define TIM12 ((TIM_TypeDef *) TIM12_BASE) +#define TIM13 ((TIM_TypeDef *) TIM13_BASE) +#define TIM14 ((TIM_TypeDef *) TIM14_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +#define CAN2 ((CAN_TypeDef *) CAN2_BASE) +#define BKP ((BKP_TypeDef *) BKP_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) +#define CEC ((CEC_TypeDef *) CEC_BASE) +#define AFIO ((AFIO_TypeDef *) AFIO_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define ADC3 ((ADC_TypeDef *) ADC3_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define TIM9 ((TIM_TypeDef *) TIM9_BASE) +#define TIM10 ((TIM_TypeDef *) TIM10_BASE) +#define TIM11 ((TIM_TypeDef *) TIM11_BASE) +#define SDIO ((SDIO_TypeDef *) SDIO_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define OB ((OB_TypeDef *) OB_BASE) +#define ETH ((ETH_TypeDef *) ETH_BASE) +#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) +#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) +#define FSMC_Bank2 ((FSMC_Bank2_TypeDef *) FSMC_Bank2_R_BASE) +#define FSMC_Bank3 ((FSMC_Bank3_TypeDef *) FSMC_Bank3_R_BASE) +#define FSMC_Bank4 ((FSMC_Bank4_TypeDef *) FSMC_Bank4_R_BASE) +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* CRC calculation unit */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ + + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ + + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET ((uint8_t)0x01) /*!< RESET bit */ + +/******************************************************************************/ +/* */ +/* Power Control */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for PWR_CR register ********************/ +#define PWR_CR_LPDS ((uint16_t)0x0001) /*!< Low-Power Deepsleep */ +#define PWR_CR_PDDS ((uint16_t)0x0002) /*!< Power Down Deepsleep */ +#define PWR_CR_CWUF ((uint16_t)0x0004) /*!< Clear Wakeup Flag */ +#define PWR_CR_CSBF ((uint16_t)0x0008) /*!< Clear Standby Flag */ +#define PWR_CR_PVDE ((uint16_t)0x0010) /*!< Power Voltage Detector Enable */ + +#define PWR_CR_PLS ((uint16_t)0x00E0) /*!< PLS[2:0] bits (PVD Level Selection) */ +#define PWR_CR_PLS_0 ((uint16_t)0x0020) /*!< Bit 0 */ +#define PWR_CR_PLS_1 ((uint16_t)0x0040) /*!< Bit 1 */ +#define PWR_CR_PLS_2 ((uint16_t)0x0080) /*!< Bit 2 */ + +/*!< PVD level configuration */ +#define PWR_CR_PLS_2V2 ((uint16_t)0x0000) /*!< PVD level 2.2V */ +#define PWR_CR_PLS_2V3 ((uint16_t)0x0020) /*!< PVD level 2.3V */ +#define PWR_CR_PLS_2V4 ((uint16_t)0x0040) /*!< PVD level 2.4V */ +#define PWR_CR_PLS_2V5 ((uint16_t)0x0060) /*!< PVD level 2.5V */ +#define PWR_CR_PLS_2V6 ((uint16_t)0x0080) /*!< PVD level 2.6V */ +#define PWR_CR_PLS_2V7 ((uint16_t)0x00A0) /*!< PVD level 2.7V */ +#define PWR_CR_PLS_2V8 ((uint16_t)0x00C0) /*!< PVD level 2.8V */ +#define PWR_CR_PLS_2V9 ((uint16_t)0x00E0) /*!< PVD level 2.9V */ + +#define PWR_CR_DBP ((uint16_t)0x0100) /*!< Disable Backup Domain write protection */ + + +/******************* Bit definition for PWR_CSR register ********************/ +#define PWR_CSR_WUF ((uint16_t)0x0001) /*!< Wakeup Flag */ +#define PWR_CSR_SBF ((uint16_t)0x0002) /*!< Standby Flag */ +#define PWR_CSR_PVDO ((uint16_t)0x0004) /*!< PVD Output */ +#define PWR_CSR_EWUP ((uint16_t)0x0100) /*!< Enable WKUP pin */ + +/******************************************************************************/ +/* */ +/* Backup registers */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for BKP_DR1 register ********************/ +#define BKP_DR1_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR2 register ********************/ +#define BKP_DR2_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR3 register ********************/ +#define BKP_DR3_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR4 register ********************/ +#define BKP_DR4_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR5 register ********************/ +#define BKP_DR5_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR6 register ********************/ +#define BKP_DR6_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR7 register ********************/ +#define BKP_DR7_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR8 register ********************/ +#define BKP_DR8_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR9 register ********************/ +#define BKP_DR9_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR10 register *******************/ +#define BKP_DR10_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR11 register *******************/ +#define BKP_DR11_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR12 register *******************/ +#define BKP_DR12_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR13 register *******************/ +#define BKP_DR13_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR14 register *******************/ +#define BKP_DR14_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR15 register *******************/ +#define BKP_DR15_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR16 register *******************/ +#define BKP_DR16_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR17 register *******************/ +#define BKP_DR17_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/****************** Bit definition for BKP_DR18 register ********************/ +#define BKP_DR18_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR19 register *******************/ +#define BKP_DR19_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR20 register *******************/ +#define BKP_DR20_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR21 register *******************/ +#define BKP_DR21_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR22 register *******************/ +#define BKP_DR22_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR23 register *******************/ +#define BKP_DR23_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR24 register *******************/ +#define BKP_DR24_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR25 register *******************/ +#define BKP_DR25_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR26 register *******************/ +#define BKP_DR26_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR27 register *******************/ +#define BKP_DR27_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR28 register *******************/ +#define BKP_DR28_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR29 register *******************/ +#define BKP_DR29_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR30 register *******************/ +#define BKP_DR30_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR31 register *******************/ +#define BKP_DR31_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR32 register *******************/ +#define BKP_DR32_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR33 register *******************/ +#define BKP_DR33_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR34 register *******************/ +#define BKP_DR34_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR35 register *******************/ +#define BKP_DR35_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR36 register *******************/ +#define BKP_DR36_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR37 register *******************/ +#define BKP_DR37_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR38 register *******************/ +#define BKP_DR38_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR39 register *******************/ +#define BKP_DR39_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR40 register *******************/ +#define BKP_DR40_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR41 register *******************/ +#define BKP_DR41_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR42 register *******************/ +#define BKP_DR42_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/****************** Bit definition for BKP_RTCCR register *******************/ +#define BKP_RTCCR_CAL ((uint16_t)0x007F) /*!< Calibration value */ +#define BKP_RTCCR_CCO ((uint16_t)0x0080) /*!< Calibration Clock Output */ +#define BKP_RTCCR_ASOE ((uint16_t)0x0100) /*!< Alarm or Second Output Enable */ +#define BKP_RTCCR_ASOS ((uint16_t)0x0200) /*!< Alarm or Second Output Selection */ + +/******************** Bit definition for BKP_CR register ********************/ +#define BKP_CR_TPE ((uint8_t)0x01) /*!< TAMPER pin enable */ +#define BKP_CR_TPAL ((uint8_t)0x02) /*!< TAMPER pin active level */ + +/******************* Bit definition for BKP_CSR register ********************/ +#define BKP_CSR_CTE ((uint16_t)0x0001) /*!< Clear Tamper event */ +#define BKP_CSR_CTI ((uint16_t)0x0002) /*!< Clear Tamper Interrupt */ +#define BKP_CSR_TPIE ((uint16_t)0x0004) /*!< TAMPER Pin interrupt enable */ +#define BKP_CSR_TEF ((uint16_t)0x0100) /*!< Tamper Event Flag */ +#define BKP_CSR_TIF ((uint16_t)0x0200) /*!< Tamper Interrupt Flag */ + +/******************************************************************************/ +/* */ +/* Reset and Clock Control */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for RCC_CR register ********************/ +#define RCC_CR_HSION ((uint32_t)0x00000001) /*!< Internal High Speed clock enable */ +#define RCC_CR_HSIRDY ((uint32_t)0x00000002) /*!< Internal High Speed clock ready flag */ +#define RCC_CR_HSITRIM ((uint32_t)0x000000F8) /*!< Internal High Speed clock trimming */ +#define RCC_CR_HSICAL ((uint32_t)0x0000FF00) /*!< Internal High Speed clock Calibration */ +#define RCC_CR_HSEON ((uint32_t)0x00010000) /*!< External High Speed clock enable */ +#define RCC_CR_HSERDY ((uint32_t)0x00020000) /*!< External High Speed clock ready flag */ +#define RCC_CR_HSEBYP ((uint32_t)0x00040000) /*!< External High Speed clock Bypass */ +#define RCC_CR_CSSON ((uint32_t)0x00080000) /*!< Clock Security System enable */ +#define RCC_CR_PLLON ((uint32_t)0x01000000) /*!< PLL enable */ +#define RCC_CR_PLLRDY ((uint32_t)0x02000000) /*!< PLL clock ready flag */ + +#ifdef STM32F10X_CL + #define RCC_CR_PLL2ON ((uint32_t)0x04000000) /*!< PLL2 enable */ + #define RCC_CR_PLL2RDY ((uint32_t)0x08000000) /*!< PLL2 clock ready flag */ + #define RCC_CR_PLL3ON ((uint32_t)0x10000000) /*!< PLL3 enable */ + #define RCC_CR_PLL3RDY ((uint32_t)0x20000000) /*!< PLL3 clock ready flag */ +#endif /* STM32F10X_CL */ + +/******************* Bit definition for RCC_CFGR register *******************/ +/*!< SW configuration */ +#define RCC_CFGR_SW ((uint32_t)0x00000003) /*!< SW[1:0] bits (System clock Switch) */ +#define RCC_CFGR_SW_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define RCC_CFGR_SW_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + +#define RCC_CFGR_SW_HSI ((uint32_t)0x00000000) /*!< HSI selected as system clock */ +#define RCC_CFGR_SW_HSE ((uint32_t)0x00000001) /*!< HSE selected as system clock */ +#define RCC_CFGR_SW_PLL ((uint32_t)0x00000002) /*!< PLL selected as system clock */ + +/*!< SWS configuration */ +#define RCC_CFGR_SWS ((uint32_t)0x0000000C) /*!< SWS[1:0] bits (System Clock Switch Status) */ +#define RCC_CFGR_SWS_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define RCC_CFGR_SWS_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define RCC_CFGR_SWS_HSI ((uint32_t)0x00000000) /*!< HSI oscillator used as system clock */ +#define RCC_CFGR_SWS_HSE ((uint32_t)0x00000004) /*!< HSE oscillator used as system clock */ +#define RCC_CFGR_SWS_PLL ((uint32_t)0x00000008) /*!< PLL used as system clock */ + +/*!< HPRE configuration */ +#define RCC_CFGR_HPRE ((uint32_t)0x000000F0) /*!< HPRE[3:0] bits (AHB prescaler) */ +#define RCC_CFGR_HPRE_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define RCC_CFGR_HPRE_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define RCC_CFGR_HPRE_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define RCC_CFGR_HPRE_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define RCC_CFGR_HPRE_DIV1 ((uint32_t)0x00000000) /*!< SYSCLK not divided */ +#define RCC_CFGR_HPRE_DIV2 ((uint32_t)0x00000080) /*!< SYSCLK divided by 2 */ +#define RCC_CFGR_HPRE_DIV4 ((uint32_t)0x00000090) /*!< SYSCLK divided by 4 */ +#define RCC_CFGR_HPRE_DIV8 ((uint32_t)0x000000A0) /*!< SYSCLK divided by 8 */ +#define RCC_CFGR_HPRE_DIV16 ((uint32_t)0x000000B0) /*!< SYSCLK divided by 16 */ +#define RCC_CFGR_HPRE_DIV64 ((uint32_t)0x000000C0) /*!< SYSCLK divided by 64 */ +#define RCC_CFGR_HPRE_DIV128 ((uint32_t)0x000000D0) /*!< SYSCLK divided by 128 */ +#define RCC_CFGR_HPRE_DIV256 ((uint32_t)0x000000E0) /*!< SYSCLK divided by 256 */ +#define RCC_CFGR_HPRE_DIV512 ((uint32_t)0x000000F0) /*!< SYSCLK divided by 512 */ + +/*!< PPRE1 configuration */ +#define RCC_CFGR_PPRE1 ((uint32_t)0x00000700) /*!< PRE1[2:0] bits (APB1 prescaler) */ +#define RCC_CFGR_PPRE1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define RCC_CFGR_PPRE1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define RCC_CFGR_PPRE1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ + +#define RCC_CFGR_PPRE1_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ +#define RCC_CFGR_PPRE1_DIV2 ((uint32_t)0x00000400) /*!< HCLK divided by 2 */ +#define RCC_CFGR_PPRE1_DIV4 ((uint32_t)0x00000500) /*!< HCLK divided by 4 */ +#define RCC_CFGR_PPRE1_DIV8 ((uint32_t)0x00000600) /*!< HCLK divided by 8 */ +#define RCC_CFGR_PPRE1_DIV16 ((uint32_t)0x00000700) /*!< HCLK divided by 16 */ + +/*!< PPRE2 configuration */ +#define RCC_CFGR_PPRE2 ((uint32_t)0x00003800) /*!< PRE2[2:0] bits (APB2 prescaler) */ +#define RCC_CFGR_PPRE2_0 ((uint32_t)0x00000800) /*!< Bit 0 */ +#define RCC_CFGR_PPRE2_1 ((uint32_t)0x00001000) /*!< Bit 1 */ +#define RCC_CFGR_PPRE2_2 ((uint32_t)0x00002000) /*!< Bit 2 */ + +#define RCC_CFGR_PPRE2_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ +#define RCC_CFGR_PPRE2_DIV2 ((uint32_t)0x00002000) /*!< HCLK divided by 2 */ +#define RCC_CFGR_PPRE2_DIV4 ((uint32_t)0x00002800) /*!< HCLK divided by 4 */ +#define RCC_CFGR_PPRE2_DIV8 ((uint32_t)0x00003000) /*!< HCLK divided by 8 */ +#define RCC_CFGR_PPRE2_DIV16 ((uint32_t)0x00003800) /*!< HCLK divided by 16 */ + +/*!< ADCPPRE configuration */ +#define RCC_CFGR_ADCPRE ((uint32_t)0x0000C000) /*!< ADCPRE[1:0] bits (ADC prescaler) */ +#define RCC_CFGR_ADCPRE_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define RCC_CFGR_ADCPRE_1 ((uint32_t)0x00008000) /*!< Bit 1 */ + +#define RCC_CFGR_ADCPRE_DIV2 ((uint32_t)0x00000000) /*!< PCLK2 divided by 2 */ +#define RCC_CFGR_ADCPRE_DIV4 ((uint32_t)0x00004000) /*!< PCLK2 divided by 4 */ +#define RCC_CFGR_ADCPRE_DIV6 ((uint32_t)0x00008000) /*!< PCLK2 divided by 6 */ +#define RCC_CFGR_ADCPRE_DIV8 ((uint32_t)0x0000C000) /*!< PCLK2 divided by 8 */ + +#define RCC_CFGR_PLLSRC ((uint32_t)0x00010000) /*!< PLL entry clock source */ + +#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) /*!< HSE divider for PLL entry */ + +/*!< PLLMUL configuration */ +#define RCC_CFGR_PLLMULL ((uint32_t)0x003C0000) /*!< PLLMUL[3:0] bits (PLL multiplication factor) */ +#define RCC_CFGR_PLLMULL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define RCC_CFGR_PLLMULL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define RCC_CFGR_PLLMULL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ +#define RCC_CFGR_PLLMULL_3 ((uint32_t)0x00200000) /*!< Bit 3 */ + +#ifdef STM32F10X_CL + #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ + #define RCC_CFGR_PLLSRC_PREDIV1 ((uint32_t)0x00010000) /*!< PREDIV1 clock selected as PLL entry clock source */ + + #define RCC_CFGR_PLLXTPRE_PREDIV1 ((uint32_t)0x00000000) /*!< PREDIV1 clock not divided for PLL entry */ + #define RCC_CFGR_PLLXTPRE_PREDIV1_Div2 ((uint32_t)0x00020000) /*!< PREDIV1 clock divided by 2 for PLL entry */ + + #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock * 4 */ + #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock * 5 */ + #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock * 6 */ + #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock * 7 */ + #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock * 8 */ + #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock * 9 */ + #define RCC_CFGR_PLLMULL6_5 ((uint32_t)0x00340000) /*!< PLL input clock * 6.5 */ + + #define RCC_CFGR_OTGFSPRE ((uint32_t)0x00400000) /*!< USB OTG FS prescaler */ + +/*!< MCO configuration */ + #define RCC_CFGR_MCO ((uint32_t)0x0F000000) /*!< MCO[3:0] bits (Microcontroller Clock Output) */ + #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ + #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + #define RCC_CFGR_MCO_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + + #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ + #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ + #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ + #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ + #define RCC_CFGR_MCO_PLLCLK_Div2 ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ + #define RCC_CFGR_MCO_PLL2CLK ((uint32_t)0x08000000) /*!< PLL2 clock selected as MCO source*/ + #define RCC_CFGR_MCO_PLL3CLK_Div2 ((uint32_t)0x09000000) /*!< PLL3 clock divided by 2 selected as MCO source*/ + #define RCC_CFGR_MCO_Ext_HSE ((uint32_t)0x0A000000) /*!< XT1 external 3-25 MHz oscillator clock selected as MCO source */ + #define RCC_CFGR_MCO_PLL3CLK ((uint32_t)0x0B000000) /*!< PLL3 clock selected as MCO source */ +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ + #define RCC_CFGR_PLLSRC_PREDIV1 ((uint32_t)0x00010000) /*!< PREDIV1 clock selected as PLL entry clock source */ + + #define RCC_CFGR_PLLXTPRE_PREDIV1 ((uint32_t)0x00000000) /*!< PREDIV1 clock not divided for PLL entry */ + #define RCC_CFGR_PLLXTPRE_PREDIV1_Div2 ((uint32_t)0x00020000) /*!< PREDIV1 clock divided by 2 for PLL entry */ + + #define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ + #define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ + #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ + #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ + #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ + #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ + #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ + #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ + #define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ + #define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ + #define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ + #define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ + #define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ + #define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ + #define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ + +/*!< MCO configuration */ + #define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ + #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ + #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + + #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ + #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ + #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ + #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ + #define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ +#else + #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ + #define RCC_CFGR_PLLSRC_HSE ((uint32_t)0x00010000) /*!< HSE clock selected as PLL entry clock source */ + + #define RCC_CFGR_PLLXTPRE_HSE ((uint32_t)0x00000000) /*!< HSE clock not divided for PLL entry */ + #define RCC_CFGR_PLLXTPRE_HSE_Div2 ((uint32_t)0x00020000) /*!< HSE clock divided by 2 for PLL entry */ + + #define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ + #define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ + #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ + #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ + #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ + #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ + #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ + #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ + #define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ + #define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ + #define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ + #define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ + #define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ + #define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ + #define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ + #define RCC_CFGR_USBPRE ((uint32_t)0x00400000) /*!< USB Device prescaler */ + +/*!< MCO configuration */ + #define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ + #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ + #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + + #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ + #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ + #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ + #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ + #define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ +#endif /* STM32F10X_CL */ + +/*!<****************** Bit definition for RCC_CIR register ********************/ +#define RCC_CIR_LSIRDYF ((uint32_t)0x00000001) /*!< LSI Ready Interrupt flag */ +#define RCC_CIR_LSERDYF ((uint32_t)0x00000002) /*!< LSE Ready Interrupt flag */ +#define RCC_CIR_HSIRDYF ((uint32_t)0x00000004) /*!< HSI Ready Interrupt flag */ +#define RCC_CIR_HSERDYF ((uint32_t)0x00000008) /*!< HSE Ready Interrupt flag */ +#define RCC_CIR_PLLRDYF ((uint32_t)0x00000010) /*!< PLL Ready Interrupt flag */ +#define RCC_CIR_CSSF ((uint32_t)0x00000080) /*!< Clock Security System Interrupt flag */ +#define RCC_CIR_LSIRDYIE ((uint32_t)0x00000100) /*!< LSI Ready Interrupt Enable */ +#define RCC_CIR_LSERDYIE ((uint32_t)0x00000200) /*!< LSE Ready Interrupt Enable */ +#define RCC_CIR_HSIRDYIE ((uint32_t)0x00000400) /*!< HSI Ready Interrupt Enable */ +#define RCC_CIR_HSERDYIE ((uint32_t)0x00000800) /*!< HSE Ready Interrupt Enable */ +#define RCC_CIR_PLLRDYIE ((uint32_t)0x00001000) /*!< PLL Ready Interrupt Enable */ +#define RCC_CIR_LSIRDYC ((uint32_t)0x00010000) /*!< LSI Ready Interrupt Clear */ +#define RCC_CIR_LSERDYC ((uint32_t)0x00020000) /*!< LSE Ready Interrupt Clear */ +#define RCC_CIR_HSIRDYC ((uint32_t)0x00040000) /*!< HSI Ready Interrupt Clear */ +#define RCC_CIR_HSERDYC ((uint32_t)0x00080000) /*!< HSE Ready Interrupt Clear */ +#define RCC_CIR_PLLRDYC ((uint32_t)0x00100000) /*!< PLL Ready Interrupt Clear */ +#define RCC_CIR_CSSC ((uint32_t)0x00800000) /*!< Clock Security System Interrupt Clear */ + +#ifdef STM32F10X_CL + #define RCC_CIR_PLL2RDYF ((uint32_t)0x00000020) /*!< PLL2 Ready Interrupt flag */ + #define RCC_CIR_PLL3RDYF ((uint32_t)0x00000040) /*!< PLL3 Ready Interrupt flag */ + #define RCC_CIR_PLL2RDYIE ((uint32_t)0x00002000) /*!< PLL2 Ready Interrupt Enable */ + #define RCC_CIR_PLL3RDYIE ((uint32_t)0x00004000) /*!< PLL3 Ready Interrupt Enable */ + #define RCC_CIR_PLL2RDYC ((uint32_t)0x00200000) /*!< PLL2 Ready Interrupt Clear */ + #define RCC_CIR_PLL3RDYC ((uint32_t)0x00400000) /*!< PLL3 Ready Interrupt Clear */ +#endif /* STM32F10X_CL */ + +/***************** Bit definition for RCC_APB2RSTR register *****************/ +#define RCC_APB2RSTR_AFIORST ((uint32_t)0x00000001) /*!< Alternate Function I/O reset */ +#define RCC_APB2RSTR_IOPARST ((uint32_t)0x00000004) /*!< I/O port A reset */ +#define RCC_APB2RSTR_IOPBRST ((uint32_t)0x00000008) /*!< I/O port B reset */ +#define RCC_APB2RSTR_IOPCRST ((uint32_t)0x00000010) /*!< I/O port C reset */ +#define RCC_APB2RSTR_IOPDRST ((uint32_t)0x00000020) /*!< I/O port D reset */ +#define RCC_APB2RSTR_ADC1RST ((uint32_t)0x00000200) /*!< ADC 1 interface reset */ + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) +#define RCC_APB2RSTR_ADC2RST ((uint32_t)0x00000400) /*!< ADC 2 interface reset */ +#endif + +#define RCC_APB2RSTR_TIM1RST ((uint32_t)0x00000800) /*!< TIM1 Timer reset */ +#define RCC_APB2RSTR_SPI1RST ((uint32_t)0x00001000) /*!< SPI 1 reset */ +#define RCC_APB2RSTR_USART1RST ((uint32_t)0x00004000) /*!< USART1 reset */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +#define RCC_APB2RSTR_TIM15RST ((uint32_t)0x00010000) /*!< TIM15 Timer reset */ +#define RCC_APB2RSTR_TIM16RST ((uint32_t)0x00020000) /*!< TIM16 Timer reset */ +#define RCC_APB2RSTR_TIM17RST ((uint32_t)0x00040000) /*!< TIM17 Timer reset */ +#endif + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) + #define RCC_APB2RSTR_IOPERST ((uint32_t)0x00000040) /*!< I/O port E reset */ +#endif /* STM32F10X_LD && STM32F10X_LD_VL */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_XL) + #define RCC_APB2RSTR_IOPFRST ((uint32_t)0x00000080) /*!< I/O port F reset */ + #define RCC_APB2RSTR_IOPGRST ((uint32_t)0x00000100) /*!< I/O port G reset */ + #define RCC_APB2RSTR_TIM8RST ((uint32_t)0x00002000) /*!< TIM8 Timer reset */ + #define RCC_APB2RSTR_ADC3RST ((uint32_t)0x00008000) /*!< ADC3 interface reset */ +#endif + +#if defined (STM32F10X_HD_VL) + #define RCC_APB2RSTR_IOPFRST ((uint32_t)0x00000080) /*!< I/O port F reset */ + #define RCC_APB2RSTR_IOPGRST ((uint32_t)0x00000100) /*!< I/O port G reset */ +#endif + +#ifdef STM32F10X_XL + #define RCC_APB2RSTR_TIM9RST ((uint32_t)0x00080000) /*!< TIM9 Timer reset */ + #define RCC_APB2RSTR_TIM10RST ((uint32_t)0x00100000) /*!< TIM10 Timer reset */ + #define RCC_APB2RSTR_TIM11RST ((uint32_t)0x00200000) /*!< TIM11 Timer reset */ +#endif /* STM32F10X_XL */ + +/***************** Bit definition for RCC_APB1RSTR register *****************/ +#define RCC_APB1RSTR_TIM2RST ((uint32_t)0x00000001) /*!< Timer 2 reset */ +#define RCC_APB1RSTR_TIM3RST ((uint32_t)0x00000002) /*!< Timer 3 reset */ +#define RCC_APB1RSTR_WWDGRST ((uint32_t)0x00000800) /*!< Window Watchdog reset */ +#define RCC_APB1RSTR_USART2RST ((uint32_t)0x00020000) /*!< USART 2 reset */ +#define RCC_APB1RSTR_I2C1RST ((uint32_t)0x00200000) /*!< I2C 1 reset */ + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) +#define RCC_APB1RSTR_CAN1RST ((uint32_t)0x02000000) /*!< CAN1 reset */ +#endif + +#define RCC_APB1RSTR_BKPRST ((uint32_t)0x08000000) /*!< Backup interface reset */ +#define RCC_APB1RSTR_PWRRST ((uint32_t)0x10000000) /*!< Power interface reset */ + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) + #define RCC_APB1RSTR_TIM4RST ((uint32_t)0x00000004) /*!< Timer 4 reset */ + #define RCC_APB1RSTR_SPI2RST ((uint32_t)0x00004000) /*!< SPI 2 reset */ + #define RCC_APB1RSTR_USART3RST ((uint32_t)0x00040000) /*!< USART 3 reset */ + #define RCC_APB1RSTR_I2C2RST ((uint32_t)0x00400000) /*!< I2C 2 reset */ +#endif /* STM32F10X_LD && STM32F10X_LD_VL */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_MD) || defined (STM32F10X_LD) || defined (STM32F10X_XL) + #define RCC_APB1RSTR_USBRST ((uint32_t)0x00800000) /*!< USB Device reset */ +#endif + +#if defined (STM32F10X_HD) || defined (STM32F10X_CL) || defined (STM32F10X_XL) + #define RCC_APB1RSTR_TIM5RST ((uint32_t)0x00000008) /*!< Timer 5 reset */ + #define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ + #define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ + #define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI 3 reset */ + #define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< UART 4 reset */ + #define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< UART 5 reset */ + #define RCC_APB1RSTR_DACRST ((uint32_t)0x20000000) /*!< DAC interface reset */ +#endif + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + #define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ + #define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ + #define RCC_APB1RSTR_DACRST ((uint32_t)0x20000000) /*!< DAC interface reset */ + #define RCC_APB1RSTR_CECRST ((uint32_t)0x40000000) /*!< CEC interface reset */ +#endif + +#if defined (STM32F10X_HD_VL) + #define RCC_APB1RSTR_TIM5RST ((uint32_t)0x00000008) /*!< Timer 5 reset */ + #define RCC_APB1RSTR_TIM12RST ((uint32_t)0x00000040) /*!< TIM12 Timer reset */ + #define RCC_APB1RSTR_TIM13RST ((uint32_t)0x00000080) /*!< TIM13 Timer reset */ + #define RCC_APB1RSTR_TIM14RST ((uint32_t)0x00000100) /*!< TIM14 Timer reset */ + #define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI 3 reset */ + #define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< UART 4 reset */ + #define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< UART 5 reset */ +#endif + +#ifdef STM32F10X_CL + #define RCC_APB1RSTR_CAN2RST ((uint32_t)0x04000000) /*!< CAN2 reset */ +#endif /* STM32F10X_CL */ + +#ifdef STM32F10X_XL + #define RCC_APB1RSTR_TIM12RST ((uint32_t)0x00000040) /*!< TIM12 Timer reset */ + #define RCC_APB1RSTR_TIM13RST ((uint32_t)0x00000080) /*!< TIM13 Timer reset */ + #define RCC_APB1RSTR_TIM14RST ((uint32_t)0x00000100) /*!< TIM14 Timer reset */ +#endif /* STM32F10X_XL */ + +/****************** Bit definition for RCC_AHBENR register ******************/ +#define RCC_AHBENR_DMA1EN ((uint16_t)0x0001) /*!< DMA1 clock enable */ +#define RCC_AHBENR_SRAMEN ((uint16_t)0x0004) /*!< SRAM interface clock enable */ +#define RCC_AHBENR_FLITFEN ((uint16_t)0x0010) /*!< FLITF clock enable */ +#define RCC_AHBENR_CRCEN ((uint16_t)0x0040) /*!< CRC clock enable */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_CL) || defined (STM32F10X_HD_VL) + #define RCC_AHBENR_DMA2EN ((uint16_t)0x0002) /*!< DMA2 clock enable */ +#endif + +#if defined (STM32F10X_HD) || defined (STM32F10X_XL) + #define RCC_AHBENR_FSMCEN ((uint16_t)0x0100) /*!< FSMC clock enable */ + #define RCC_AHBENR_SDIOEN ((uint16_t)0x0400) /*!< SDIO clock enable */ +#endif + +#if defined (STM32F10X_HD_VL) + #define RCC_AHBENR_FSMCEN ((uint16_t)0x0100) /*!< FSMC clock enable */ +#endif + +#ifdef STM32F10X_CL + #define RCC_AHBENR_OTGFSEN ((uint32_t)0x00001000) /*!< USB OTG FS clock enable */ + #define RCC_AHBENR_ETHMACEN ((uint32_t)0x00004000) /*!< ETHERNET MAC clock enable */ + #define RCC_AHBENR_ETHMACTXEN ((uint32_t)0x00008000) /*!< ETHERNET MAC Tx clock enable */ + #define RCC_AHBENR_ETHMACRXEN ((uint32_t)0x00010000) /*!< ETHERNET MAC Rx clock enable */ +#endif /* STM32F10X_CL */ + +/****************** Bit definition for RCC_APB2ENR register *****************/ +#define RCC_APB2ENR_AFIOEN ((uint32_t)0x00000001) /*!< Alternate Function I/O clock enable */ +#define RCC_APB2ENR_IOPAEN ((uint32_t)0x00000004) /*!< I/O port A clock enable */ +#define RCC_APB2ENR_IOPBEN ((uint32_t)0x00000008) /*!< I/O port B clock enable */ +#define RCC_APB2ENR_IOPCEN ((uint32_t)0x00000010) /*!< I/O port C clock enable */ +#define RCC_APB2ENR_IOPDEN ((uint32_t)0x00000020) /*!< I/O port D clock enable */ +#define RCC_APB2ENR_ADC1EN ((uint32_t)0x00000200) /*!< ADC 1 interface clock enable */ + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) +#define RCC_APB2ENR_ADC2EN ((uint32_t)0x00000400) /*!< ADC 2 interface clock enable */ +#endif + +#define RCC_APB2ENR_TIM1EN ((uint32_t)0x00000800) /*!< TIM1 Timer clock enable */ +#define RCC_APB2ENR_SPI1EN ((uint32_t)0x00001000) /*!< SPI 1 clock enable */ +#define RCC_APB2ENR_USART1EN ((uint32_t)0x00004000) /*!< USART1 clock enable */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +#define RCC_APB2ENR_TIM15EN ((uint32_t)0x00010000) /*!< TIM15 Timer clock enable */ +#define RCC_APB2ENR_TIM16EN ((uint32_t)0x00020000) /*!< TIM16 Timer clock enable */ +#define RCC_APB2ENR_TIM17EN ((uint32_t)0x00040000) /*!< TIM17 Timer clock enable */ +#endif + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) + #define RCC_APB2ENR_IOPEEN ((uint32_t)0x00000040) /*!< I/O port E clock enable */ +#endif /* STM32F10X_LD && STM32F10X_LD_VL */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_XL) + #define RCC_APB2ENR_IOPFEN ((uint32_t)0x00000080) /*!< I/O port F clock enable */ + #define RCC_APB2ENR_IOPGEN ((uint32_t)0x00000100) /*!< I/O port G clock enable */ + #define RCC_APB2ENR_TIM8EN ((uint32_t)0x00002000) /*!< TIM8 Timer clock enable */ + #define RCC_APB2ENR_ADC3EN ((uint32_t)0x00008000) /*!< DMA1 clock enable */ +#endif + +#if defined (STM32F10X_HD_VL) + #define RCC_APB2ENR_IOPFEN ((uint32_t)0x00000080) /*!< I/O port F clock enable */ + #define RCC_APB2ENR_IOPGEN ((uint32_t)0x00000100) /*!< I/O port G clock enable */ +#endif + +#ifdef STM32F10X_XL + #define RCC_APB2ENR_TIM9EN ((uint32_t)0x00080000) /*!< TIM9 Timer clock enable */ + #define RCC_APB2ENR_TIM10EN ((uint32_t)0x00100000) /*!< TIM10 Timer clock enable */ + #define RCC_APB2ENR_TIM11EN ((uint32_t)0x00200000) /*!< TIM11 Timer clock enable */ +#endif + +/***************** Bit definition for RCC_APB1ENR register ******************/ +#define RCC_APB1ENR_TIM2EN ((uint32_t)0x00000001) /*!< Timer 2 clock enabled*/ +#define RCC_APB1ENR_TIM3EN ((uint32_t)0x00000002) /*!< Timer 3 clock enable */ +#define RCC_APB1ENR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */ +#define RCC_APB1ENR_USART2EN ((uint32_t)0x00020000) /*!< USART 2 clock enable */ +#define RCC_APB1ENR_I2C1EN ((uint32_t)0x00200000) /*!< I2C 1 clock enable */ + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) +#define RCC_APB1ENR_CAN1EN ((uint32_t)0x02000000) /*!< CAN1 clock enable */ +#endif + +#define RCC_APB1ENR_BKPEN ((uint32_t)0x08000000) /*!< Backup interface clock enable */ +#define RCC_APB1ENR_PWREN ((uint32_t)0x10000000) /*!< Power interface clock enable */ + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) + #define RCC_APB1ENR_TIM4EN ((uint32_t)0x00000004) /*!< Timer 4 clock enable */ + #define RCC_APB1ENR_SPI2EN ((uint32_t)0x00004000) /*!< SPI 2 clock enable */ + #define RCC_APB1ENR_USART3EN ((uint32_t)0x00040000) /*!< USART 3 clock enable */ + #define RCC_APB1ENR_I2C2EN ((uint32_t)0x00400000) /*!< I2C 2 clock enable */ +#endif /* STM32F10X_LD && STM32F10X_LD_VL */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_MD) || defined (STM32F10X_LD) + #define RCC_APB1ENR_USBEN ((uint32_t)0x00800000) /*!< USB Device clock enable */ +#endif + +#if defined (STM32F10X_HD) || defined (STM32F10X_CL) + #define RCC_APB1ENR_TIM5EN ((uint32_t)0x00000008) /*!< Timer 5 clock enable */ + #define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ + #define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ + #define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI 3 clock enable */ + #define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< UART 4 clock enable */ + #define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< UART 5 clock enable */ + #define RCC_APB1ENR_DACEN ((uint32_t)0x20000000) /*!< DAC interface clock enable */ +#endif + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + #define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ + #define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ + #define RCC_APB1ENR_DACEN ((uint32_t)0x20000000) /*!< DAC interface clock enable */ + #define RCC_APB1ENR_CECEN ((uint32_t)0x40000000) /*!< CEC interface clock enable */ +#endif + +#ifdef STM32F10X_HD_VL + #define RCC_APB1ENR_TIM5EN ((uint32_t)0x00000008) /*!< Timer 5 clock enable */ + #define RCC_APB1ENR_TIM12EN ((uint32_t)0x00000040) /*!< TIM12 Timer clock enable */ + #define RCC_APB1ENR_TIM13EN ((uint32_t)0x00000080) /*!< TIM13 Timer clock enable */ + #define RCC_APB1ENR_TIM14EN ((uint32_t)0x00000100) /*!< TIM14 Timer clock enable */ + #define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI 3 clock enable */ + #define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< UART 4 clock enable */ + #define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< UART 5 clock enable */ +#endif /* STM32F10X_HD_VL */ + +#ifdef STM32F10X_CL + #define RCC_APB1ENR_CAN2EN ((uint32_t)0x04000000) /*!< CAN2 clock enable */ +#endif /* STM32F10X_CL */ + +#ifdef STM32F10X_XL + #define RCC_APB1ENR_TIM12EN ((uint32_t)0x00000040) /*!< TIM12 Timer clock enable */ + #define RCC_APB1ENR_TIM13EN ((uint32_t)0x00000080) /*!< TIM13 Timer clock enable */ + #define RCC_APB1ENR_TIM14EN ((uint32_t)0x00000100) /*!< TIM14 Timer clock enable */ +#endif /* STM32F10X_XL */ + +/******************* Bit definition for RCC_BDCR register *******************/ +#define RCC_BDCR_LSEON ((uint32_t)0x00000001) /*!< External Low Speed oscillator enable */ +#define RCC_BDCR_LSERDY ((uint32_t)0x00000002) /*!< External Low Speed oscillator Ready */ +#define RCC_BDCR_LSEBYP ((uint32_t)0x00000004) /*!< External Low Speed oscillator Bypass */ + +#define RCC_BDCR_RTCSEL ((uint32_t)0x00000300) /*!< RTCSEL[1:0] bits (RTC clock source selection) */ +#define RCC_BDCR_RTCSEL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define RCC_BDCR_RTCSEL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +/*!< RTC congiguration */ +#define RCC_BDCR_RTCSEL_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ +#define RCC_BDCR_RTCSEL_LSE ((uint32_t)0x00000100) /*!< LSE oscillator clock used as RTC clock */ +#define RCC_BDCR_RTCSEL_LSI ((uint32_t)0x00000200) /*!< LSI oscillator clock used as RTC clock */ +#define RCC_BDCR_RTCSEL_HSE ((uint32_t)0x00000300) /*!< HSE oscillator clock divided by 128 used as RTC clock */ + +#define RCC_BDCR_RTCEN ((uint32_t)0x00008000) /*!< RTC clock enable */ +#define RCC_BDCR_BDRST ((uint32_t)0x00010000) /*!< Backup domain software reset */ + +/******************* Bit definition for RCC_CSR register ********************/ +#define RCC_CSR_LSION ((uint32_t)0x00000001) /*!< Internal Low Speed oscillator enable */ +#define RCC_CSR_LSIRDY ((uint32_t)0x00000002) /*!< Internal Low Speed oscillator Ready */ +#define RCC_CSR_RMVF ((uint32_t)0x01000000) /*!< Remove reset flag */ +#define RCC_CSR_PINRSTF ((uint32_t)0x04000000) /*!< PIN reset flag */ +#define RCC_CSR_PORRSTF ((uint32_t)0x08000000) /*!< POR/PDR reset flag */ +#define RCC_CSR_SFTRSTF ((uint32_t)0x10000000) /*!< Software Reset flag */ +#define RCC_CSR_IWDGRSTF ((uint32_t)0x20000000) /*!< Independent Watchdog reset flag */ +#define RCC_CSR_WWDGRSTF ((uint32_t)0x40000000) /*!< Window watchdog reset flag */ +#define RCC_CSR_LPWRRSTF ((uint32_t)0x80000000) /*!< Low-Power reset flag */ + +#ifdef STM32F10X_CL +/******************* Bit definition for RCC_AHBRSTR register ****************/ + #define RCC_AHBRSTR_OTGFSRST ((uint32_t)0x00001000) /*!< USB OTG FS reset */ + #define RCC_AHBRSTR_ETHMACRST ((uint32_t)0x00004000) /*!< ETHERNET MAC reset */ + +/******************* Bit definition for RCC_CFGR2 register ******************/ +/*!< PREDIV1 configuration */ + #define RCC_CFGR2_PREDIV1 ((uint32_t)0x0000000F) /*!< PREDIV1[3:0] bits */ + #define RCC_CFGR2_PREDIV1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ + #define RCC_CFGR2_PREDIV1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + #define RCC_CFGR2_PREDIV1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + #define RCC_CFGR2_PREDIV1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + + #define RCC_CFGR2_PREDIV1_DIV1 ((uint32_t)0x00000000) /*!< PREDIV1 input clock not divided */ + #define RCC_CFGR2_PREDIV1_DIV2 ((uint32_t)0x00000001) /*!< PREDIV1 input clock divided by 2 */ + #define RCC_CFGR2_PREDIV1_DIV3 ((uint32_t)0x00000002) /*!< PREDIV1 input clock divided by 3 */ + #define RCC_CFGR2_PREDIV1_DIV4 ((uint32_t)0x00000003) /*!< PREDIV1 input clock divided by 4 */ + #define RCC_CFGR2_PREDIV1_DIV5 ((uint32_t)0x00000004) /*!< PREDIV1 input clock divided by 5 */ + #define RCC_CFGR2_PREDIV1_DIV6 ((uint32_t)0x00000005) /*!< PREDIV1 input clock divided by 6 */ + #define RCC_CFGR2_PREDIV1_DIV7 ((uint32_t)0x00000006) /*!< PREDIV1 input clock divided by 7 */ + #define RCC_CFGR2_PREDIV1_DIV8 ((uint32_t)0x00000007) /*!< PREDIV1 input clock divided by 8 */ + #define RCC_CFGR2_PREDIV1_DIV9 ((uint32_t)0x00000008) /*!< PREDIV1 input clock divided by 9 */ + #define RCC_CFGR2_PREDIV1_DIV10 ((uint32_t)0x00000009) /*!< PREDIV1 input clock divided by 10 */ + #define RCC_CFGR2_PREDIV1_DIV11 ((uint32_t)0x0000000A) /*!< PREDIV1 input clock divided by 11 */ + #define RCC_CFGR2_PREDIV1_DIV12 ((uint32_t)0x0000000B) /*!< PREDIV1 input clock divided by 12 */ + #define RCC_CFGR2_PREDIV1_DIV13 ((uint32_t)0x0000000C) /*!< PREDIV1 input clock divided by 13 */ + #define RCC_CFGR2_PREDIV1_DIV14 ((uint32_t)0x0000000D) /*!< PREDIV1 input clock divided by 14 */ + #define RCC_CFGR2_PREDIV1_DIV15 ((uint32_t)0x0000000E) /*!< PREDIV1 input clock divided by 15 */ + #define RCC_CFGR2_PREDIV1_DIV16 ((uint32_t)0x0000000F) /*!< PREDIV1 input clock divided by 16 */ + +/*!< PREDIV2 configuration */ + #define RCC_CFGR2_PREDIV2 ((uint32_t)0x000000F0) /*!< PREDIV2[3:0] bits */ + #define RCC_CFGR2_PREDIV2_0 ((uint32_t)0x00000010) /*!< Bit 0 */ + #define RCC_CFGR2_PREDIV2_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + #define RCC_CFGR2_PREDIV2_2 ((uint32_t)0x00000040) /*!< Bit 2 */ + #define RCC_CFGR2_PREDIV2_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + + #define RCC_CFGR2_PREDIV2_DIV1 ((uint32_t)0x00000000) /*!< PREDIV2 input clock not divided */ + #define RCC_CFGR2_PREDIV2_DIV2 ((uint32_t)0x00000010) /*!< PREDIV2 input clock divided by 2 */ + #define RCC_CFGR2_PREDIV2_DIV3 ((uint32_t)0x00000020) /*!< PREDIV2 input clock divided by 3 */ + #define RCC_CFGR2_PREDIV2_DIV4 ((uint32_t)0x00000030) /*!< PREDIV2 input clock divided by 4 */ + #define RCC_CFGR2_PREDIV2_DIV5 ((uint32_t)0x00000040) /*!< PREDIV2 input clock divided by 5 */ + #define RCC_CFGR2_PREDIV2_DIV6 ((uint32_t)0x00000050) /*!< PREDIV2 input clock divided by 6 */ + #define RCC_CFGR2_PREDIV2_DIV7 ((uint32_t)0x00000060) /*!< PREDIV2 input clock divided by 7 */ + #define RCC_CFGR2_PREDIV2_DIV8 ((uint32_t)0x00000070) /*!< PREDIV2 input clock divided by 8 */ + #define RCC_CFGR2_PREDIV2_DIV9 ((uint32_t)0x00000080) /*!< PREDIV2 input clock divided by 9 */ + #define RCC_CFGR2_PREDIV2_DIV10 ((uint32_t)0x00000090) /*!< PREDIV2 input clock divided by 10 */ + #define RCC_CFGR2_PREDIV2_DIV11 ((uint32_t)0x000000A0) /*!< PREDIV2 input clock divided by 11 */ + #define RCC_CFGR2_PREDIV2_DIV12 ((uint32_t)0x000000B0) /*!< PREDIV2 input clock divided by 12 */ + #define RCC_CFGR2_PREDIV2_DIV13 ((uint32_t)0x000000C0) /*!< PREDIV2 input clock divided by 13 */ + #define RCC_CFGR2_PREDIV2_DIV14 ((uint32_t)0x000000D0) /*!< PREDIV2 input clock divided by 14 */ + #define RCC_CFGR2_PREDIV2_DIV15 ((uint32_t)0x000000E0) /*!< PREDIV2 input clock divided by 15 */ + #define RCC_CFGR2_PREDIV2_DIV16 ((uint32_t)0x000000F0) /*!< PREDIV2 input clock divided by 16 */ + +/*!< PLL2MUL configuration */ + #define RCC_CFGR2_PLL2MUL ((uint32_t)0x00000F00) /*!< PLL2MUL[3:0] bits */ + #define RCC_CFGR2_PLL2MUL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ + #define RCC_CFGR2_PLL2MUL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + #define RCC_CFGR2_PLL2MUL_2 ((uint32_t)0x00000400) /*!< Bit 2 */ + #define RCC_CFGR2_PLL2MUL_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + + #define RCC_CFGR2_PLL2MUL8 ((uint32_t)0x00000600) /*!< PLL2 input clock * 8 */ + #define RCC_CFGR2_PLL2MUL9 ((uint32_t)0x00000700) /*!< PLL2 input clock * 9 */ + #define RCC_CFGR2_PLL2MUL10 ((uint32_t)0x00000800) /*!< PLL2 input clock * 10 */ + #define RCC_CFGR2_PLL2MUL11 ((uint32_t)0x00000900) /*!< PLL2 input clock * 11 */ + #define RCC_CFGR2_PLL2MUL12 ((uint32_t)0x00000A00) /*!< PLL2 input clock * 12 */ + #define RCC_CFGR2_PLL2MUL13 ((uint32_t)0x00000B00) /*!< PLL2 input clock * 13 */ + #define RCC_CFGR2_PLL2MUL14 ((uint32_t)0x00000C00) /*!< PLL2 input clock * 14 */ + #define RCC_CFGR2_PLL2MUL16 ((uint32_t)0x00000E00) /*!< PLL2 input clock * 16 */ + #define RCC_CFGR2_PLL2MUL20 ((uint32_t)0x00000F00) /*!< PLL2 input clock * 20 */ + +/*!< PLL3MUL configuration */ + #define RCC_CFGR2_PLL3MUL ((uint32_t)0x0000F000) /*!< PLL3MUL[3:0] bits */ + #define RCC_CFGR2_PLL3MUL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ + #define RCC_CFGR2_PLL3MUL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ + #define RCC_CFGR2_PLL3MUL_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + #define RCC_CFGR2_PLL3MUL_3 ((uint32_t)0x00008000) /*!< Bit 3 */ + + #define RCC_CFGR2_PLL3MUL8 ((uint32_t)0x00006000) /*!< PLL3 input clock * 8 */ + #define RCC_CFGR2_PLL3MUL9 ((uint32_t)0x00007000) /*!< PLL3 input clock * 9 */ + #define RCC_CFGR2_PLL3MUL10 ((uint32_t)0x00008000) /*!< PLL3 input clock * 10 */ + #define RCC_CFGR2_PLL3MUL11 ((uint32_t)0x00009000) /*!< PLL3 input clock * 11 */ + #define RCC_CFGR2_PLL3MUL12 ((uint32_t)0x0000A000) /*!< PLL3 input clock * 12 */ + #define RCC_CFGR2_PLL3MUL13 ((uint32_t)0x0000B000) /*!< PLL3 input clock * 13 */ + #define RCC_CFGR2_PLL3MUL14 ((uint32_t)0x0000C000) /*!< PLL3 input clock * 14 */ + #define RCC_CFGR2_PLL3MUL16 ((uint32_t)0x0000E000) /*!< PLL3 input clock * 16 */ + #define RCC_CFGR2_PLL3MUL20 ((uint32_t)0x0000F000) /*!< PLL3 input clock * 20 */ + + #define RCC_CFGR2_PREDIV1SRC ((uint32_t)0x00010000) /*!< PREDIV1 entry clock source */ + #define RCC_CFGR2_PREDIV1SRC_PLL2 ((uint32_t)0x00010000) /*!< PLL2 selected as PREDIV1 entry clock source */ + #define RCC_CFGR2_PREDIV1SRC_HSE ((uint32_t)0x00000000) /*!< HSE selected as PREDIV1 entry clock source */ + #define RCC_CFGR2_I2S2SRC ((uint32_t)0x00020000) /*!< I2S2 entry clock source */ + #define RCC_CFGR2_I2S3SRC ((uint32_t)0x00040000) /*!< I2S3 clock source */ +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +/******************* Bit definition for RCC_CFGR2 register ******************/ +/*!< PREDIV1 configuration */ + #define RCC_CFGR2_PREDIV1 ((uint32_t)0x0000000F) /*!< PREDIV1[3:0] bits */ + #define RCC_CFGR2_PREDIV1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ + #define RCC_CFGR2_PREDIV1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + #define RCC_CFGR2_PREDIV1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + #define RCC_CFGR2_PREDIV1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + + #define RCC_CFGR2_PREDIV1_DIV1 ((uint32_t)0x00000000) /*!< PREDIV1 input clock not divided */ + #define RCC_CFGR2_PREDIV1_DIV2 ((uint32_t)0x00000001) /*!< PREDIV1 input clock divided by 2 */ + #define RCC_CFGR2_PREDIV1_DIV3 ((uint32_t)0x00000002) /*!< PREDIV1 input clock divided by 3 */ + #define RCC_CFGR2_PREDIV1_DIV4 ((uint32_t)0x00000003) /*!< PREDIV1 input clock divided by 4 */ + #define RCC_CFGR2_PREDIV1_DIV5 ((uint32_t)0x00000004) /*!< PREDIV1 input clock divided by 5 */ + #define RCC_CFGR2_PREDIV1_DIV6 ((uint32_t)0x00000005) /*!< PREDIV1 input clock divided by 6 */ + #define RCC_CFGR2_PREDIV1_DIV7 ((uint32_t)0x00000006) /*!< PREDIV1 input clock divided by 7 */ + #define RCC_CFGR2_PREDIV1_DIV8 ((uint32_t)0x00000007) /*!< PREDIV1 input clock divided by 8 */ + #define RCC_CFGR2_PREDIV1_DIV9 ((uint32_t)0x00000008) /*!< PREDIV1 input clock divided by 9 */ + #define RCC_CFGR2_PREDIV1_DIV10 ((uint32_t)0x00000009) /*!< PREDIV1 input clock divided by 10 */ + #define RCC_CFGR2_PREDIV1_DIV11 ((uint32_t)0x0000000A) /*!< PREDIV1 input clock divided by 11 */ + #define RCC_CFGR2_PREDIV1_DIV12 ((uint32_t)0x0000000B) /*!< PREDIV1 input clock divided by 12 */ + #define RCC_CFGR2_PREDIV1_DIV13 ((uint32_t)0x0000000C) /*!< PREDIV1 input clock divided by 13 */ + #define RCC_CFGR2_PREDIV1_DIV14 ((uint32_t)0x0000000D) /*!< PREDIV1 input clock divided by 14 */ + #define RCC_CFGR2_PREDIV1_DIV15 ((uint32_t)0x0000000E) /*!< PREDIV1 input clock divided by 15 */ + #define RCC_CFGR2_PREDIV1_DIV16 ((uint32_t)0x0000000F) /*!< PREDIV1 input clock divided by 16 */ +#endif + +/******************************************************************************/ +/* */ +/* General Purpose and Alternate Function I/O */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for GPIO_CRL register *******************/ +#define GPIO_CRL_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ + +#define GPIO_CRL_MODE0 ((uint32_t)0x00000003) /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */ +#define GPIO_CRL_MODE0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define GPIO_CRL_MODE0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + +#define GPIO_CRL_MODE1 ((uint32_t)0x00000030) /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */ +#define GPIO_CRL_MODE1_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define GPIO_CRL_MODE1_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define GPIO_CRL_MODE2 ((uint32_t)0x00000300) /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */ +#define GPIO_CRL_MODE2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define GPIO_CRL_MODE2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +#define GPIO_CRL_MODE3 ((uint32_t)0x00003000) /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */ +#define GPIO_CRL_MODE3_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define GPIO_CRL_MODE3_1 ((uint32_t)0x00002000) /*!< Bit 1 */ + +#define GPIO_CRL_MODE4 ((uint32_t)0x00030000) /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */ +#define GPIO_CRL_MODE4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define GPIO_CRL_MODE4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ + +#define GPIO_CRL_MODE5 ((uint32_t)0x00300000) /*!< MODE5[1:0] bits (Port x mode bits, pin 5) */ +#define GPIO_CRL_MODE5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define GPIO_CRL_MODE5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +#define GPIO_CRL_MODE6 ((uint32_t)0x03000000) /*!< MODE6[1:0] bits (Port x mode bits, pin 6) */ +#define GPIO_CRL_MODE6_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define GPIO_CRL_MODE6_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + +#define GPIO_CRL_MODE7 ((uint32_t)0x30000000) /*!< MODE7[1:0] bits (Port x mode bits, pin 7) */ +#define GPIO_CRL_MODE7_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define GPIO_CRL_MODE7_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ + +#define GPIO_CRL_CNF0 ((uint32_t)0x0000000C) /*!< CNF0[1:0] bits (Port x configuration bits, pin 0) */ +#define GPIO_CRL_CNF0_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define GPIO_CRL_CNF0_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define GPIO_CRL_CNF1 ((uint32_t)0x000000C0) /*!< CNF1[1:0] bits (Port x configuration bits, pin 1) */ +#define GPIO_CRL_CNF1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define GPIO_CRL_CNF1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define GPIO_CRL_CNF2 ((uint32_t)0x00000C00) /*!< CNF2[1:0] bits (Port x configuration bits, pin 2) */ +#define GPIO_CRL_CNF2_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define GPIO_CRL_CNF2_1 ((uint32_t)0x00000800) /*!< Bit 1 */ + +#define GPIO_CRL_CNF3 ((uint32_t)0x0000C000) /*!< CNF3[1:0] bits (Port x configuration bits, pin 3) */ +#define GPIO_CRL_CNF3_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define GPIO_CRL_CNF3_1 ((uint32_t)0x00008000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF4 ((uint32_t)0x000C0000) /*!< CNF4[1:0] bits (Port x configuration bits, pin 4) */ +#define GPIO_CRL_CNF4_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define GPIO_CRL_CNF4_1 ((uint32_t)0x00080000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF5 ((uint32_t)0x00C00000) /*!< CNF5[1:0] bits (Port x configuration bits, pin 5) */ +#define GPIO_CRL_CNF5_0 ((uint32_t)0x00400000) /*!< Bit 0 */ +#define GPIO_CRL_CNF5_1 ((uint32_t)0x00800000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF6 ((uint32_t)0x0C000000) /*!< CNF6[1:0] bits (Port x configuration bits, pin 6) */ +#define GPIO_CRL_CNF6_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define GPIO_CRL_CNF6_1 ((uint32_t)0x08000000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF7 ((uint32_t)0xC0000000) /*!< CNF7[1:0] bits (Port x configuration bits, pin 7) */ +#define GPIO_CRL_CNF7_0 ((uint32_t)0x40000000) /*!< Bit 0 */ +#define GPIO_CRL_CNF7_1 ((uint32_t)0x80000000) /*!< Bit 1 */ + +/******************* Bit definition for GPIO_CRH register *******************/ +#define GPIO_CRH_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ + +#define GPIO_CRH_MODE8 ((uint32_t)0x00000003) /*!< MODE8[1:0] bits (Port x mode bits, pin 8) */ +#define GPIO_CRH_MODE8_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define GPIO_CRH_MODE8_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + +#define GPIO_CRH_MODE9 ((uint32_t)0x00000030) /*!< MODE9[1:0] bits (Port x mode bits, pin 9) */ +#define GPIO_CRH_MODE9_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define GPIO_CRH_MODE9_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define GPIO_CRH_MODE10 ((uint32_t)0x00000300) /*!< MODE10[1:0] bits (Port x mode bits, pin 10) */ +#define GPIO_CRH_MODE10_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define GPIO_CRH_MODE10_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +#define GPIO_CRH_MODE11 ((uint32_t)0x00003000) /*!< MODE11[1:0] bits (Port x mode bits, pin 11) */ +#define GPIO_CRH_MODE11_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define GPIO_CRH_MODE11_1 ((uint32_t)0x00002000) /*!< Bit 1 */ + +#define GPIO_CRH_MODE12 ((uint32_t)0x00030000) /*!< MODE12[1:0] bits (Port x mode bits, pin 12) */ +#define GPIO_CRH_MODE12_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define GPIO_CRH_MODE12_1 ((uint32_t)0x00020000) /*!< Bit 1 */ + +#define GPIO_CRH_MODE13 ((uint32_t)0x00300000) /*!< MODE13[1:0] bits (Port x mode bits, pin 13) */ +#define GPIO_CRH_MODE13_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define GPIO_CRH_MODE13_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +#define GPIO_CRH_MODE14 ((uint32_t)0x03000000) /*!< MODE14[1:0] bits (Port x mode bits, pin 14) */ +#define GPIO_CRH_MODE14_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define GPIO_CRH_MODE14_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + +#define GPIO_CRH_MODE15 ((uint32_t)0x30000000) /*!< MODE15[1:0] bits (Port x mode bits, pin 15) */ +#define GPIO_CRH_MODE15_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define GPIO_CRH_MODE15_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ + +#define GPIO_CRH_CNF8 ((uint32_t)0x0000000C) /*!< CNF8[1:0] bits (Port x configuration bits, pin 8) */ +#define GPIO_CRH_CNF8_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define GPIO_CRH_CNF8_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define GPIO_CRH_CNF9 ((uint32_t)0x000000C0) /*!< CNF9[1:0] bits (Port x configuration bits, pin 9) */ +#define GPIO_CRH_CNF9_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define GPIO_CRH_CNF9_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define GPIO_CRH_CNF10 ((uint32_t)0x00000C00) /*!< CNF10[1:0] bits (Port x configuration bits, pin 10) */ +#define GPIO_CRH_CNF10_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define GPIO_CRH_CNF10_1 ((uint32_t)0x00000800) /*!< Bit 1 */ + +#define GPIO_CRH_CNF11 ((uint32_t)0x0000C000) /*!< CNF11[1:0] bits (Port x configuration bits, pin 11) */ +#define GPIO_CRH_CNF11_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define GPIO_CRH_CNF11_1 ((uint32_t)0x00008000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF12 ((uint32_t)0x000C0000) /*!< CNF12[1:0] bits (Port x configuration bits, pin 12) */ +#define GPIO_CRH_CNF12_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define GPIO_CRH_CNF12_1 ((uint32_t)0x00080000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF13 ((uint32_t)0x00C00000) /*!< CNF13[1:0] bits (Port x configuration bits, pin 13) */ +#define GPIO_CRH_CNF13_0 ((uint32_t)0x00400000) /*!< Bit 0 */ +#define GPIO_CRH_CNF13_1 ((uint32_t)0x00800000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF14 ((uint32_t)0x0C000000) /*!< CNF14[1:0] bits (Port x configuration bits, pin 14) */ +#define GPIO_CRH_CNF14_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define GPIO_CRH_CNF14_1 ((uint32_t)0x08000000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF15 ((uint32_t)0xC0000000) /*!< CNF15[1:0] bits (Port x configuration bits, pin 15) */ +#define GPIO_CRH_CNF15_0 ((uint32_t)0x40000000) /*!< Bit 0 */ +#define GPIO_CRH_CNF15_1 ((uint32_t)0x80000000) /*!< Bit 1 */ + +/*!<****************** Bit definition for GPIO_IDR register *******************/ +#define GPIO_IDR_IDR0 ((uint16_t)0x0001) /*!< Port input data, bit 0 */ +#define GPIO_IDR_IDR1 ((uint16_t)0x0002) /*!< Port input data, bit 1 */ +#define GPIO_IDR_IDR2 ((uint16_t)0x0004) /*!< Port input data, bit 2 */ +#define GPIO_IDR_IDR3 ((uint16_t)0x0008) /*!< Port input data, bit 3 */ +#define GPIO_IDR_IDR4 ((uint16_t)0x0010) /*!< Port input data, bit 4 */ +#define GPIO_IDR_IDR5 ((uint16_t)0x0020) /*!< Port input data, bit 5 */ +#define GPIO_IDR_IDR6 ((uint16_t)0x0040) /*!< Port input data, bit 6 */ +#define GPIO_IDR_IDR7 ((uint16_t)0x0080) /*!< Port input data, bit 7 */ +#define GPIO_IDR_IDR8 ((uint16_t)0x0100) /*!< Port input data, bit 8 */ +#define GPIO_IDR_IDR9 ((uint16_t)0x0200) /*!< Port input data, bit 9 */ +#define GPIO_IDR_IDR10 ((uint16_t)0x0400) /*!< Port input data, bit 10 */ +#define GPIO_IDR_IDR11 ((uint16_t)0x0800) /*!< Port input data, bit 11 */ +#define GPIO_IDR_IDR12 ((uint16_t)0x1000) /*!< Port input data, bit 12 */ +#define GPIO_IDR_IDR13 ((uint16_t)0x2000) /*!< Port input data, bit 13 */ +#define GPIO_IDR_IDR14 ((uint16_t)0x4000) /*!< Port input data, bit 14 */ +#define GPIO_IDR_IDR15 ((uint16_t)0x8000) /*!< Port input data, bit 15 */ + +/******************* Bit definition for GPIO_ODR register *******************/ +#define GPIO_ODR_ODR0 ((uint16_t)0x0001) /*!< Port output data, bit 0 */ +#define GPIO_ODR_ODR1 ((uint16_t)0x0002) /*!< Port output data, bit 1 */ +#define GPIO_ODR_ODR2 ((uint16_t)0x0004) /*!< Port output data, bit 2 */ +#define GPIO_ODR_ODR3 ((uint16_t)0x0008) /*!< Port output data, bit 3 */ +#define GPIO_ODR_ODR4 ((uint16_t)0x0010) /*!< Port output data, bit 4 */ +#define GPIO_ODR_ODR5 ((uint16_t)0x0020) /*!< Port output data, bit 5 */ +#define GPIO_ODR_ODR6 ((uint16_t)0x0040) /*!< Port output data, bit 6 */ +#define GPIO_ODR_ODR7 ((uint16_t)0x0080) /*!< Port output data, bit 7 */ +#define GPIO_ODR_ODR8 ((uint16_t)0x0100) /*!< Port output data, bit 8 */ +#define GPIO_ODR_ODR9 ((uint16_t)0x0200) /*!< Port output data, bit 9 */ +#define GPIO_ODR_ODR10 ((uint16_t)0x0400) /*!< Port output data, bit 10 */ +#define GPIO_ODR_ODR11 ((uint16_t)0x0800) /*!< Port output data, bit 11 */ +#define GPIO_ODR_ODR12 ((uint16_t)0x1000) /*!< Port output data, bit 12 */ +#define GPIO_ODR_ODR13 ((uint16_t)0x2000) /*!< Port output data, bit 13 */ +#define GPIO_ODR_ODR14 ((uint16_t)0x4000) /*!< Port output data, bit 14 */ +#define GPIO_ODR_ODR15 ((uint16_t)0x8000) /*!< Port output data, bit 15 */ + +/****************** Bit definition for GPIO_BSRR register *******************/ +#define GPIO_BSRR_BS0 ((uint32_t)0x00000001) /*!< Port x Set bit 0 */ +#define GPIO_BSRR_BS1 ((uint32_t)0x00000002) /*!< Port x Set bit 1 */ +#define GPIO_BSRR_BS2 ((uint32_t)0x00000004) /*!< Port x Set bit 2 */ +#define GPIO_BSRR_BS3 ((uint32_t)0x00000008) /*!< Port x Set bit 3 */ +#define GPIO_BSRR_BS4 ((uint32_t)0x00000010) /*!< Port x Set bit 4 */ +#define GPIO_BSRR_BS5 ((uint32_t)0x00000020) /*!< Port x Set bit 5 */ +#define GPIO_BSRR_BS6 ((uint32_t)0x00000040) /*!< Port x Set bit 6 */ +#define GPIO_BSRR_BS7 ((uint32_t)0x00000080) /*!< Port x Set bit 7 */ +#define GPIO_BSRR_BS8 ((uint32_t)0x00000100) /*!< Port x Set bit 8 */ +#define GPIO_BSRR_BS9 ((uint32_t)0x00000200) /*!< Port x Set bit 9 */ +#define GPIO_BSRR_BS10 ((uint32_t)0x00000400) /*!< Port x Set bit 10 */ +#define GPIO_BSRR_BS11 ((uint32_t)0x00000800) /*!< Port x Set bit 11 */ +#define GPIO_BSRR_BS12 ((uint32_t)0x00001000) /*!< Port x Set bit 12 */ +#define GPIO_BSRR_BS13 ((uint32_t)0x00002000) /*!< Port x Set bit 13 */ +#define GPIO_BSRR_BS14 ((uint32_t)0x00004000) /*!< Port x Set bit 14 */ +#define GPIO_BSRR_BS15 ((uint32_t)0x00008000) /*!< Port x Set bit 15 */ + +#define GPIO_BSRR_BR0 ((uint32_t)0x00010000) /*!< Port x Reset bit 0 */ +#define GPIO_BSRR_BR1 ((uint32_t)0x00020000) /*!< Port x Reset bit 1 */ +#define GPIO_BSRR_BR2 ((uint32_t)0x00040000) /*!< Port x Reset bit 2 */ +#define GPIO_BSRR_BR3 ((uint32_t)0x00080000) /*!< Port x Reset bit 3 */ +#define GPIO_BSRR_BR4 ((uint32_t)0x00100000) /*!< Port x Reset bit 4 */ +#define GPIO_BSRR_BR5 ((uint32_t)0x00200000) /*!< Port x Reset bit 5 */ +#define GPIO_BSRR_BR6 ((uint32_t)0x00400000) /*!< Port x Reset bit 6 */ +#define GPIO_BSRR_BR7 ((uint32_t)0x00800000) /*!< Port x Reset bit 7 */ +#define GPIO_BSRR_BR8 ((uint32_t)0x01000000) /*!< Port x Reset bit 8 */ +#define GPIO_BSRR_BR9 ((uint32_t)0x02000000) /*!< Port x Reset bit 9 */ +#define GPIO_BSRR_BR10 ((uint32_t)0x04000000) /*!< Port x Reset bit 10 */ +#define GPIO_BSRR_BR11 ((uint32_t)0x08000000) /*!< Port x Reset bit 11 */ +#define GPIO_BSRR_BR12 ((uint32_t)0x10000000) /*!< Port x Reset bit 12 */ +#define GPIO_BSRR_BR13 ((uint32_t)0x20000000) /*!< Port x Reset bit 13 */ +#define GPIO_BSRR_BR14 ((uint32_t)0x40000000) /*!< Port x Reset bit 14 */ +#define GPIO_BSRR_BR15 ((uint32_t)0x80000000) /*!< Port x Reset bit 15 */ + +/******************* Bit definition for GPIO_BRR register *******************/ +#define GPIO_BRR_BR0 ((uint16_t)0x0001) /*!< Port x Reset bit 0 */ +#define GPIO_BRR_BR1 ((uint16_t)0x0002) /*!< Port x Reset bit 1 */ +#define GPIO_BRR_BR2 ((uint16_t)0x0004) /*!< Port x Reset bit 2 */ +#define GPIO_BRR_BR3 ((uint16_t)0x0008) /*!< Port x Reset bit 3 */ +#define GPIO_BRR_BR4 ((uint16_t)0x0010) /*!< Port x Reset bit 4 */ +#define GPIO_BRR_BR5 ((uint16_t)0x0020) /*!< Port x Reset bit 5 */ +#define GPIO_BRR_BR6 ((uint16_t)0x0040) /*!< Port x Reset bit 6 */ +#define GPIO_BRR_BR7 ((uint16_t)0x0080) /*!< Port x Reset bit 7 */ +#define GPIO_BRR_BR8 ((uint16_t)0x0100) /*!< Port x Reset bit 8 */ +#define GPIO_BRR_BR9 ((uint16_t)0x0200) /*!< Port x Reset bit 9 */ +#define GPIO_BRR_BR10 ((uint16_t)0x0400) /*!< Port x Reset bit 10 */ +#define GPIO_BRR_BR11 ((uint16_t)0x0800) /*!< Port x Reset bit 11 */ +#define GPIO_BRR_BR12 ((uint16_t)0x1000) /*!< Port x Reset bit 12 */ +#define GPIO_BRR_BR13 ((uint16_t)0x2000) /*!< Port x Reset bit 13 */ +#define GPIO_BRR_BR14 ((uint16_t)0x4000) /*!< Port x Reset bit 14 */ +#define GPIO_BRR_BR15 ((uint16_t)0x8000) /*!< Port x Reset bit 15 */ + +/****************** Bit definition for GPIO_LCKR register *******************/ +#define GPIO_LCKR_LCK0 ((uint32_t)0x00000001) /*!< Port x Lock bit 0 */ +#define GPIO_LCKR_LCK1 ((uint32_t)0x00000002) /*!< Port x Lock bit 1 */ +#define GPIO_LCKR_LCK2 ((uint32_t)0x00000004) /*!< Port x Lock bit 2 */ +#define GPIO_LCKR_LCK3 ((uint32_t)0x00000008) /*!< Port x Lock bit 3 */ +#define GPIO_LCKR_LCK4 ((uint32_t)0x00000010) /*!< Port x Lock bit 4 */ +#define GPIO_LCKR_LCK5 ((uint32_t)0x00000020) /*!< Port x Lock bit 5 */ +#define GPIO_LCKR_LCK6 ((uint32_t)0x00000040) /*!< Port x Lock bit 6 */ +#define GPIO_LCKR_LCK7 ((uint32_t)0x00000080) /*!< Port x Lock bit 7 */ +#define GPIO_LCKR_LCK8 ((uint32_t)0x00000100) /*!< Port x Lock bit 8 */ +#define GPIO_LCKR_LCK9 ((uint32_t)0x00000200) /*!< Port x Lock bit 9 */ +#define GPIO_LCKR_LCK10 ((uint32_t)0x00000400) /*!< Port x Lock bit 10 */ +#define GPIO_LCKR_LCK11 ((uint32_t)0x00000800) /*!< Port x Lock bit 11 */ +#define GPIO_LCKR_LCK12 ((uint32_t)0x00001000) /*!< Port x Lock bit 12 */ +#define GPIO_LCKR_LCK13 ((uint32_t)0x00002000) /*!< Port x Lock bit 13 */ +#define GPIO_LCKR_LCK14 ((uint32_t)0x00004000) /*!< Port x Lock bit 14 */ +#define GPIO_LCKR_LCK15 ((uint32_t)0x00008000) /*!< Port x Lock bit 15 */ +#define GPIO_LCKR_LCKK ((uint32_t)0x00010000) /*!< Lock key */ + +/*----------------------------------------------------------------------------*/ + +/****************** Bit definition for AFIO_EVCR register *******************/ +#define AFIO_EVCR_PIN ((uint8_t)0x0F) /*!< PIN[3:0] bits (Pin selection) */ +#define AFIO_EVCR_PIN_0 ((uint8_t)0x01) /*!< Bit 0 */ +#define AFIO_EVCR_PIN_1 ((uint8_t)0x02) /*!< Bit 1 */ +#define AFIO_EVCR_PIN_2 ((uint8_t)0x04) /*!< Bit 2 */ +#define AFIO_EVCR_PIN_3 ((uint8_t)0x08) /*!< Bit 3 */ + +/*!< PIN configuration */ +#define AFIO_EVCR_PIN_PX0 ((uint8_t)0x00) /*!< Pin 0 selected */ +#define AFIO_EVCR_PIN_PX1 ((uint8_t)0x01) /*!< Pin 1 selected */ +#define AFIO_EVCR_PIN_PX2 ((uint8_t)0x02) /*!< Pin 2 selected */ +#define AFIO_EVCR_PIN_PX3 ((uint8_t)0x03) /*!< Pin 3 selected */ +#define AFIO_EVCR_PIN_PX4 ((uint8_t)0x04) /*!< Pin 4 selected */ +#define AFIO_EVCR_PIN_PX5 ((uint8_t)0x05) /*!< Pin 5 selected */ +#define AFIO_EVCR_PIN_PX6 ((uint8_t)0x06) /*!< Pin 6 selected */ +#define AFIO_EVCR_PIN_PX7 ((uint8_t)0x07) /*!< Pin 7 selected */ +#define AFIO_EVCR_PIN_PX8 ((uint8_t)0x08) /*!< Pin 8 selected */ +#define AFIO_EVCR_PIN_PX9 ((uint8_t)0x09) /*!< Pin 9 selected */ +#define AFIO_EVCR_PIN_PX10 ((uint8_t)0x0A) /*!< Pin 10 selected */ +#define AFIO_EVCR_PIN_PX11 ((uint8_t)0x0B) /*!< Pin 11 selected */ +#define AFIO_EVCR_PIN_PX12 ((uint8_t)0x0C) /*!< Pin 12 selected */ +#define AFIO_EVCR_PIN_PX13 ((uint8_t)0x0D) /*!< Pin 13 selected */ +#define AFIO_EVCR_PIN_PX14 ((uint8_t)0x0E) /*!< Pin 14 selected */ +#define AFIO_EVCR_PIN_PX15 ((uint8_t)0x0F) /*!< Pin 15 selected */ + +#define AFIO_EVCR_PORT ((uint8_t)0x70) /*!< PORT[2:0] bits (Port selection) */ +#define AFIO_EVCR_PORT_0 ((uint8_t)0x10) /*!< Bit 0 */ +#define AFIO_EVCR_PORT_1 ((uint8_t)0x20) /*!< Bit 1 */ +#define AFIO_EVCR_PORT_2 ((uint8_t)0x40) /*!< Bit 2 */ + +/*!< PORT configuration */ +#define AFIO_EVCR_PORT_PA ((uint8_t)0x00) /*!< Port A selected */ +#define AFIO_EVCR_PORT_PB ((uint8_t)0x10) /*!< Port B selected */ +#define AFIO_EVCR_PORT_PC ((uint8_t)0x20) /*!< Port C selected */ +#define AFIO_EVCR_PORT_PD ((uint8_t)0x30) /*!< Port D selected */ +#define AFIO_EVCR_PORT_PE ((uint8_t)0x40) /*!< Port E selected */ + +#define AFIO_EVCR_EVOE ((uint8_t)0x80) /*!< Event Output Enable */ + +/****************** Bit definition for AFIO_MAPR register *******************/ +#define AFIO_MAPR_SPI1_REMAP ((uint32_t)0x00000001) /*!< SPI1 remapping */ +#define AFIO_MAPR_I2C1_REMAP ((uint32_t)0x00000002) /*!< I2C1 remapping */ +#define AFIO_MAPR_USART1_REMAP ((uint32_t)0x00000004) /*!< USART1 remapping */ +#define AFIO_MAPR_USART2_REMAP ((uint32_t)0x00000008) /*!< USART2 remapping */ + +#define AFIO_MAPR_USART3_REMAP ((uint32_t)0x00000030) /*!< USART3_REMAP[1:0] bits (USART3 remapping) */ +#define AFIO_MAPR_USART3_REMAP_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define AFIO_MAPR_USART3_REMAP_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +/* USART3_REMAP configuration */ +#define AFIO_MAPR_USART3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */ +#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP ((uint32_t)0x00000010) /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ +#define AFIO_MAPR_USART3_REMAP_FULLREMAP ((uint32_t)0x00000030) /*!< Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */ + +#define AFIO_MAPR_TIM1_REMAP ((uint32_t)0x000000C0) /*!< TIM1_REMAP[1:0] bits (TIM1 remapping) */ +#define AFIO_MAPR_TIM1_REMAP_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define AFIO_MAPR_TIM1_REMAP_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +/*!< TIM1_REMAP configuration */ +#define AFIO_MAPR_TIM1_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */ +#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP ((uint32_t)0x00000040) /*!< Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */ +#define AFIO_MAPR_TIM1_REMAP_FULLREMAP ((uint32_t)0x000000C0) /*!< Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */ + +#define AFIO_MAPR_TIM2_REMAP ((uint32_t)0x00000300) /*!< TIM2_REMAP[1:0] bits (TIM2 remapping) */ +#define AFIO_MAPR_TIM2_REMAP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define AFIO_MAPR_TIM2_REMAP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +/*!< TIM2_REMAP configuration */ +#define AFIO_MAPR_TIM2_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */ +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 ((uint32_t)0x00000100) /*!< Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */ +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 ((uint32_t)0x00000200) /*!< Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */ +#define AFIO_MAPR_TIM2_REMAP_FULLREMAP ((uint32_t)0x00000300) /*!< Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ + +#define AFIO_MAPR_TIM3_REMAP ((uint32_t)0x00000C00) /*!< TIM3_REMAP[1:0] bits (TIM3 remapping) */ +#define AFIO_MAPR_TIM3_REMAP_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define AFIO_MAPR_TIM3_REMAP_1 ((uint32_t)0x00000800) /*!< Bit 1 */ + +/*!< TIM3_REMAP configuration */ +#define AFIO_MAPR_TIM3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */ +#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP ((uint32_t)0x00000800) /*!< Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */ +#define AFIO_MAPR_TIM3_REMAP_FULLREMAP ((uint32_t)0x00000C00) /*!< Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */ + +#define AFIO_MAPR_TIM4_REMAP ((uint32_t)0x00001000) /*!< TIM4_REMAP bit (TIM4 remapping) */ + +#define AFIO_MAPR_CAN_REMAP ((uint32_t)0x00006000) /*!< CAN_REMAP[1:0] bits (CAN Alternate function remapping) */ +#define AFIO_MAPR_CAN_REMAP_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define AFIO_MAPR_CAN_REMAP_1 ((uint32_t)0x00004000) /*!< Bit 1 */ + +/*!< CAN_REMAP configuration */ +#define AFIO_MAPR_CAN_REMAP_REMAP1 ((uint32_t)0x00000000) /*!< CANRX mapped to PA11, CANTX mapped to PA12 */ +#define AFIO_MAPR_CAN_REMAP_REMAP2 ((uint32_t)0x00004000) /*!< CANRX mapped to PB8, CANTX mapped to PB9 */ +#define AFIO_MAPR_CAN_REMAP_REMAP3 ((uint32_t)0x00006000) /*!< CANRX mapped to PD0, CANTX mapped to PD1 */ + +#define AFIO_MAPR_PD01_REMAP ((uint32_t)0x00008000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ +#define AFIO_MAPR_TIM5CH4_IREMAP ((uint32_t)0x00010000) /*!< TIM5 Channel4 Internal Remap */ +#define AFIO_MAPR_ADC1_ETRGINJ_REMAP ((uint32_t)0x00020000) /*!< ADC 1 External Trigger Injected Conversion remapping */ +#define AFIO_MAPR_ADC1_ETRGREG_REMAP ((uint32_t)0x00040000) /*!< ADC 1 External Trigger Regular Conversion remapping */ +#define AFIO_MAPR_ADC2_ETRGINJ_REMAP ((uint32_t)0x00080000) /*!< ADC 2 External Trigger Injected Conversion remapping */ +#define AFIO_MAPR_ADC2_ETRGREG_REMAP ((uint32_t)0x00100000) /*!< ADC 2 External Trigger Regular Conversion remapping */ + +/*!< SWJ_CFG configuration */ +#define AFIO_MAPR_SWJ_CFG ((uint32_t)0x07000000) /*!< SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */ +#define AFIO_MAPR_SWJ_CFG_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define AFIO_MAPR_SWJ_CFG_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define AFIO_MAPR_SWJ_CFG_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define AFIO_MAPR_SWJ_CFG_RESET ((uint32_t)0x00000000) /*!< Full SWJ (JTAG-DP + SW-DP) : Reset State */ +#define AFIO_MAPR_SWJ_CFG_NOJNTRST ((uint32_t)0x01000000) /*!< Full SWJ (JTAG-DP + SW-DP) but without JNTRST */ +#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE ((uint32_t)0x02000000) /*!< JTAG-DP Disabled and SW-DP Enabled */ +#define AFIO_MAPR_SWJ_CFG_DISABLE ((uint32_t)0x04000000) /*!< JTAG-DP Disabled and SW-DP Disabled */ + +#ifdef STM32F10X_CL +/*!< ETH_REMAP configuration */ + #define AFIO_MAPR_ETH_REMAP ((uint32_t)0x00200000) /*!< SPI3_REMAP bit (Ethernet MAC I/O remapping) */ + +/*!< CAN2_REMAP configuration */ + #define AFIO_MAPR_CAN2_REMAP ((uint32_t)0x00400000) /*!< CAN2_REMAP bit (CAN2 I/O remapping) */ + +/*!< MII_RMII_SEL configuration */ + #define AFIO_MAPR_MII_RMII_SEL ((uint32_t)0x00800000) /*!< MII_RMII_SEL bit (Ethernet MII or RMII selection) */ + +/*!< SPI3_REMAP configuration */ + #define AFIO_MAPR_SPI3_REMAP ((uint32_t)0x10000000) /*!< SPI3_REMAP bit (SPI3 remapping) */ + +/*!< TIM2ITR1_IREMAP configuration */ + #define AFIO_MAPR_TIM2ITR1_IREMAP ((uint32_t)0x20000000) /*!< TIM2ITR1_IREMAP bit (TIM2 internal trigger 1 remapping) */ + +/*!< PTP_PPS_REMAP configuration */ + #define AFIO_MAPR_PTP_PPS_REMAP ((uint32_t)0x40000000) /*!< PTP_PPS_REMAP bit (Ethernet PTP PPS remapping) */ +#endif + +/***************** Bit definition for AFIO_EXTICR1 register *****************/ +#define AFIO_EXTICR1_EXTI0 ((uint16_t)0x000F) /*!< EXTI 0 configuration */ +#define AFIO_EXTICR1_EXTI1 ((uint16_t)0x00F0) /*!< EXTI 1 configuration */ +#define AFIO_EXTICR1_EXTI2 ((uint16_t)0x0F00) /*!< EXTI 2 configuration */ +#define AFIO_EXTICR1_EXTI3 ((uint16_t)0xF000) /*!< EXTI 3 configuration */ + +/*!< EXTI0 configuration */ +#define AFIO_EXTICR1_EXTI0_PA ((uint16_t)0x0000) /*!< PA[0] pin */ +#define AFIO_EXTICR1_EXTI0_PB ((uint16_t)0x0001) /*!< PB[0] pin */ +#define AFIO_EXTICR1_EXTI0_PC ((uint16_t)0x0002) /*!< PC[0] pin */ +#define AFIO_EXTICR1_EXTI0_PD ((uint16_t)0x0003) /*!< PD[0] pin */ +#define AFIO_EXTICR1_EXTI0_PE ((uint16_t)0x0004) /*!< PE[0] pin */ +#define AFIO_EXTICR1_EXTI0_PF ((uint16_t)0x0005) /*!< PF[0] pin */ +#define AFIO_EXTICR1_EXTI0_PG ((uint16_t)0x0006) /*!< PG[0] pin */ + +/*!< EXTI1 configuration */ +#define AFIO_EXTICR1_EXTI1_PA ((uint16_t)0x0000) /*!< PA[1] pin */ +#define AFIO_EXTICR1_EXTI1_PB ((uint16_t)0x0010) /*!< PB[1] pin */ +#define AFIO_EXTICR1_EXTI1_PC ((uint16_t)0x0020) /*!< PC[1] pin */ +#define AFIO_EXTICR1_EXTI1_PD ((uint16_t)0x0030) /*!< PD[1] pin */ +#define AFIO_EXTICR1_EXTI1_PE ((uint16_t)0x0040) /*!< PE[1] pin */ +#define AFIO_EXTICR1_EXTI1_PF ((uint16_t)0x0050) /*!< PF[1] pin */ +#define AFIO_EXTICR1_EXTI1_PG ((uint16_t)0x0060) /*!< PG[1] pin */ + +/*!< EXTI2 configuration */ +#define AFIO_EXTICR1_EXTI2_PA ((uint16_t)0x0000) /*!< PA[2] pin */ +#define AFIO_EXTICR1_EXTI2_PB ((uint16_t)0x0100) /*!< PB[2] pin */ +#define AFIO_EXTICR1_EXTI2_PC ((uint16_t)0x0200) /*!< PC[2] pin */ +#define AFIO_EXTICR1_EXTI2_PD ((uint16_t)0x0300) /*!< PD[2] pin */ +#define AFIO_EXTICR1_EXTI2_PE ((uint16_t)0x0400) /*!< PE[2] pin */ +#define AFIO_EXTICR1_EXTI2_PF ((uint16_t)0x0500) /*!< PF[2] pin */ +#define AFIO_EXTICR1_EXTI2_PG ((uint16_t)0x0600) /*!< PG[2] pin */ + +/*!< EXTI3 configuration */ +#define AFIO_EXTICR1_EXTI3_PA ((uint16_t)0x0000) /*!< PA[3] pin */ +#define AFIO_EXTICR1_EXTI3_PB ((uint16_t)0x1000) /*!< PB[3] pin */ +#define AFIO_EXTICR1_EXTI3_PC ((uint16_t)0x2000) /*!< PC[3] pin */ +#define AFIO_EXTICR1_EXTI3_PD ((uint16_t)0x3000) /*!< PD[3] pin */ +#define AFIO_EXTICR1_EXTI3_PE ((uint16_t)0x4000) /*!< PE[3] pin */ +#define AFIO_EXTICR1_EXTI3_PF ((uint16_t)0x5000) /*!< PF[3] pin */ +#define AFIO_EXTICR1_EXTI3_PG ((uint16_t)0x6000) /*!< PG[3] pin */ + +/***************** Bit definition for AFIO_EXTICR2 register *****************/ +#define AFIO_EXTICR2_EXTI4 ((uint16_t)0x000F) /*!< EXTI 4 configuration */ +#define AFIO_EXTICR2_EXTI5 ((uint16_t)0x00F0) /*!< EXTI 5 configuration */ +#define AFIO_EXTICR2_EXTI6 ((uint16_t)0x0F00) /*!< EXTI 6 configuration */ +#define AFIO_EXTICR2_EXTI7 ((uint16_t)0xF000) /*!< EXTI 7 configuration */ + +/*!< EXTI4 configuration */ +#define AFIO_EXTICR2_EXTI4_PA ((uint16_t)0x0000) /*!< PA[4] pin */ +#define AFIO_EXTICR2_EXTI4_PB ((uint16_t)0x0001) /*!< PB[4] pin */ +#define AFIO_EXTICR2_EXTI4_PC ((uint16_t)0x0002) /*!< PC[4] pin */ +#define AFIO_EXTICR2_EXTI4_PD ((uint16_t)0x0003) /*!< PD[4] pin */ +#define AFIO_EXTICR2_EXTI4_PE ((uint16_t)0x0004) /*!< PE[4] pin */ +#define AFIO_EXTICR2_EXTI4_PF ((uint16_t)0x0005) /*!< PF[4] pin */ +#define AFIO_EXTICR2_EXTI4_PG ((uint16_t)0x0006) /*!< PG[4] pin */ + +/* EXTI5 configuration */ +#define AFIO_EXTICR2_EXTI5_PA ((uint16_t)0x0000) /*!< PA[5] pin */ +#define AFIO_EXTICR2_EXTI5_PB ((uint16_t)0x0010) /*!< PB[5] pin */ +#define AFIO_EXTICR2_EXTI5_PC ((uint16_t)0x0020) /*!< PC[5] pin */ +#define AFIO_EXTICR2_EXTI5_PD ((uint16_t)0x0030) /*!< PD[5] pin */ +#define AFIO_EXTICR2_EXTI5_PE ((uint16_t)0x0040) /*!< PE[5] pin */ +#define AFIO_EXTICR2_EXTI5_PF ((uint16_t)0x0050) /*!< PF[5] pin */ +#define AFIO_EXTICR2_EXTI5_PG ((uint16_t)0x0060) /*!< PG[5] pin */ + +/*!< EXTI6 configuration */ +#define AFIO_EXTICR2_EXTI6_PA ((uint16_t)0x0000) /*!< PA[6] pin */ +#define AFIO_EXTICR2_EXTI6_PB ((uint16_t)0x0100) /*!< PB[6] pin */ +#define AFIO_EXTICR2_EXTI6_PC ((uint16_t)0x0200) /*!< PC[6] pin */ +#define AFIO_EXTICR2_EXTI6_PD ((uint16_t)0x0300) /*!< PD[6] pin */ +#define AFIO_EXTICR2_EXTI6_PE ((uint16_t)0x0400) /*!< PE[6] pin */ +#define AFIO_EXTICR2_EXTI6_PF ((uint16_t)0x0500) /*!< PF[6] pin */ +#define AFIO_EXTICR2_EXTI6_PG ((uint16_t)0x0600) /*!< PG[6] pin */ + +/*!< EXTI7 configuration */ +#define AFIO_EXTICR2_EXTI7_PA ((uint16_t)0x0000) /*!< PA[7] pin */ +#define AFIO_EXTICR2_EXTI7_PB ((uint16_t)0x1000) /*!< PB[7] pin */ +#define AFIO_EXTICR2_EXTI7_PC ((uint16_t)0x2000) /*!< PC[7] pin */ +#define AFIO_EXTICR2_EXTI7_PD ((uint16_t)0x3000) /*!< PD[7] pin */ +#define AFIO_EXTICR2_EXTI7_PE ((uint16_t)0x4000) /*!< PE[7] pin */ +#define AFIO_EXTICR2_EXTI7_PF ((uint16_t)0x5000) /*!< PF[7] pin */ +#define AFIO_EXTICR2_EXTI7_PG ((uint16_t)0x6000) /*!< PG[7] pin */ + +/***************** Bit definition for AFIO_EXTICR3 register *****************/ +#define AFIO_EXTICR3_EXTI8 ((uint16_t)0x000F) /*!< EXTI 8 configuration */ +#define AFIO_EXTICR3_EXTI9 ((uint16_t)0x00F0) /*!< EXTI 9 configuration */ +#define AFIO_EXTICR3_EXTI10 ((uint16_t)0x0F00) /*!< EXTI 10 configuration */ +#define AFIO_EXTICR3_EXTI11 ((uint16_t)0xF000) /*!< EXTI 11 configuration */ + +/*!< EXTI8 configuration */ +#define AFIO_EXTICR3_EXTI8_PA ((uint16_t)0x0000) /*!< PA[8] pin */ +#define AFIO_EXTICR3_EXTI8_PB ((uint16_t)0x0001) /*!< PB[8] pin */ +#define AFIO_EXTICR3_EXTI8_PC ((uint16_t)0x0002) /*!< PC[8] pin */ +#define AFIO_EXTICR3_EXTI8_PD ((uint16_t)0x0003) /*!< PD[8] pin */ +#define AFIO_EXTICR3_EXTI8_PE ((uint16_t)0x0004) /*!< PE[8] pin */ +#define AFIO_EXTICR3_EXTI8_PF ((uint16_t)0x0005) /*!< PF[8] pin */ +#define AFIO_EXTICR3_EXTI8_PG ((uint16_t)0x0006) /*!< PG[8] pin */ + +/*!< EXTI9 configuration */ +#define AFIO_EXTICR3_EXTI9_PA ((uint16_t)0x0000) /*!< PA[9] pin */ +#define AFIO_EXTICR3_EXTI9_PB ((uint16_t)0x0010) /*!< PB[9] pin */ +#define AFIO_EXTICR3_EXTI9_PC ((uint16_t)0x0020) /*!< PC[9] pin */ +#define AFIO_EXTICR3_EXTI9_PD ((uint16_t)0x0030) /*!< PD[9] pin */ +#define AFIO_EXTICR3_EXTI9_PE ((uint16_t)0x0040) /*!< PE[9] pin */ +#define AFIO_EXTICR3_EXTI9_PF ((uint16_t)0x0050) /*!< PF[9] pin */ +#define AFIO_EXTICR3_EXTI9_PG ((uint16_t)0x0060) /*!< PG[9] pin */ + +/*!< EXTI10 configuration */ +#define AFIO_EXTICR3_EXTI10_PA ((uint16_t)0x0000) /*!< PA[10] pin */ +#define AFIO_EXTICR3_EXTI10_PB ((uint16_t)0x0100) /*!< PB[10] pin */ +#define AFIO_EXTICR3_EXTI10_PC ((uint16_t)0x0200) /*!< PC[10] pin */ +#define AFIO_EXTICR3_EXTI10_PD ((uint16_t)0x0300) /*!< PD[10] pin */ +#define AFIO_EXTICR3_EXTI10_PE ((uint16_t)0x0400) /*!< PE[10] pin */ +#define AFIO_EXTICR3_EXTI10_PF ((uint16_t)0x0500) /*!< PF[10] pin */ +#define AFIO_EXTICR3_EXTI10_PG ((uint16_t)0x0600) /*!< PG[10] pin */ + +/*!< EXTI11 configuration */ +#define AFIO_EXTICR3_EXTI11_PA ((uint16_t)0x0000) /*!< PA[11] pin */ +#define AFIO_EXTICR3_EXTI11_PB ((uint16_t)0x1000) /*!< PB[11] pin */ +#define AFIO_EXTICR3_EXTI11_PC ((uint16_t)0x2000) /*!< PC[11] pin */ +#define AFIO_EXTICR3_EXTI11_PD ((uint16_t)0x3000) /*!< PD[11] pin */ +#define AFIO_EXTICR3_EXTI11_PE ((uint16_t)0x4000) /*!< PE[11] pin */ +#define AFIO_EXTICR3_EXTI11_PF ((uint16_t)0x5000) /*!< PF[11] pin */ +#define AFIO_EXTICR3_EXTI11_PG ((uint16_t)0x6000) /*!< PG[11] pin */ + +/***************** Bit definition for AFIO_EXTICR4 register *****************/ +#define AFIO_EXTICR4_EXTI12 ((uint16_t)0x000F) /*!< EXTI 12 configuration */ +#define AFIO_EXTICR4_EXTI13 ((uint16_t)0x00F0) /*!< EXTI 13 configuration */ +#define AFIO_EXTICR4_EXTI14 ((uint16_t)0x0F00) /*!< EXTI 14 configuration */ +#define AFIO_EXTICR4_EXTI15 ((uint16_t)0xF000) /*!< EXTI 15 configuration */ + +/* EXTI12 configuration */ +#define AFIO_EXTICR4_EXTI12_PA ((uint16_t)0x0000) /*!< PA[12] pin */ +#define AFIO_EXTICR4_EXTI12_PB ((uint16_t)0x0001) /*!< PB[12] pin */ +#define AFIO_EXTICR4_EXTI12_PC ((uint16_t)0x0002) /*!< PC[12] pin */ +#define AFIO_EXTICR4_EXTI12_PD ((uint16_t)0x0003) /*!< PD[12] pin */ +#define AFIO_EXTICR4_EXTI12_PE ((uint16_t)0x0004) /*!< PE[12] pin */ +#define AFIO_EXTICR4_EXTI12_PF ((uint16_t)0x0005) /*!< PF[12] pin */ +#define AFIO_EXTICR4_EXTI12_PG ((uint16_t)0x0006) /*!< PG[12] pin */ + +/* EXTI13 configuration */ +#define AFIO_EXTICR4_EXTI13_PA ((uint16_t)0x0000) /*!< PA[13] pin */ +#define AFIO_EXTICR4_EXTI13_PB ((uint16_t)0x0010) /*!< PB[13] pin */ +#define AFIO_EXTICR4_EXTI13_PC ((uint16_t)0x0020) /*!< PC[13] pin */ +#define AFIO_EXTICR4_EXTI13_PD ((uint16_t)0x0030) /*!< PD[13] pin */ +#define AFIO_EXTICR4_EXTI13_PE ((uint16_t)0x0040) /*!< PE[13] pin */ +#define AFIO_EXTICR4_EXTI13_PF ((uint16_t)0x0050) /*!< PF[13] pin */ +#define AFIO_EXTICR4_EXTI13_PG ((uint16_t)0x0060) /*!< PG[13] pin */ + +/*!< EXTI14 configuration */ +#define AFIO_EXTICR4_EXTI14_PA ((uint16_t)0x0000) /*!< PA[14] pin */ +#define AFIO_EXTICR4_EXTI14_PB ((uint16_t)0x0100) /*!< PB[14] pin */ +#define AFIO_EXTICR4_EXTI14_PC ((uint16_t)0x0200) /*!< PC[14] pin */ +#define AFIO_EXTICR4_EXTI14_PD ((uint16_t)0x0300) /*!< PD[14] pin */ +#define AFIO_EXTICR4_EXTI14_PE ((uint16_t)0x0400) /*!< PE[14] pin */ +#define AFIO_EXTICR4_EXTI14_PF ((uint16_t)0x0500) /*!< PF[14] pin */ +#define AFIO_EXTICR4_EXTI14_PG ((uint16_t)0x0600) /*!< PG[14] pin */ + +/*!< EXTI15 configuration */ +#define AFIO_EXTICR4_EXTI15_PA ((uint16_t)0x0000) /*!< PA[15] pin */ +#define AFIO_EXTICR4_EXTI15_PB ((uint16_t)0x1000) /*!< PB[15] pin */ +#define AFIO_EXTICR4_EXTI15_PC ((uint16_t)0x2000) /*!< PC[15] pin */ +#define AFIO_EXTICR4_EXTI15_PD ((uint16_t)0x3000) /*!< PD[15] pin */ +#define AFIO_EXTICR4_EXTI15_PE ((uint16_t)0x4000) /*!< PE[15] pin */ +#define AFIO_EXTICR4_EXTI15_PF ((uint16_t)0x5000) /*!< PF[15] pin */ +#define AFIO_EXTICR4_EXTI15_PG ((uint16_t)0x6000) /*!< PG[15] pin */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +/****************** Bit definition for AFIO_MAPR2 register ******************/ +#define AFIO_MAPR2_TIM15_REMAP ((uint32_t)0x00000001) /*!< TIM15 remapping */ +#define AFIO_MAPR2_TIM16_REMAP ((uint32_t)0x00000002) /*!< TIM16 remapping */ +#define AFIO_MAPR2_TIM17_REMAP ((uint32_t)0x00000004) /*!< TIM17 remapping */ +#define AFIO_MAPR2_CEC_REMAP ((uint32_t)0x00000008) /*!< CEC remapping */ +#define AFIO_MAPR2_TIM1_DMA_REMAP ((uint32_t)0x00000010) /*!< TIM1_DMA remapping */ +#endif + +#ifdef STM32F10X_HD_VL +#define AFIO_MAPR2_TIM13_REMAP ((uint32_t)0x00000100) /*!< TIM13 remapping */ +#define AFIO_MAPR2_TIM14_REMAP ((uint32_t)0x00000200) /*!< TIM14 remapping */ +#define AFIO_MAPR2_FSMC_NADV_REMAP ((uint32_t)0x00000400) /*!< FSMC NADV remapping */ +#define AFIO_MAPR2_TIM67_DAC_DMA_REMAP ((uint32_t)0x00000800) /*!< TIM6/TIM7 and DAC DMA remapping */ +#define AFIO_MAPR2_TIM12_REMAP ((uint32_t)0x00001000) /*!< TIM12 remapping */ +#define AFIO_MAPR2_MISC_REMAP ((uint32_t)0x00002000) /*!< Miscellaneous remapping */ +#endif + +#ifdef STM32F10X_XL +/****************** Bit definition for AFIO_MAPR2 register ******************/ +#define AFIO_MAPR2_TIM9_REMAP ((uint32_t)0x00000020) /*!< TIM9 remapping */ +#define AFIO_MAPR2_TIM10_REMAP ((uint32_t)0x00000040) /*!< TIM10 remapping */ +#define AFIO_MAPR2_TIM11_REMAP ((uint32_t)0x00000080) /*!< TIM11 remapping */ +#define AFIO_MAPR2_TIM13_REMAP ((uint32_t)0x00000100) /*!< TIM13 remapping */ +#define AFIO_MAPR2_TIM14_REMAP ((uint32_t)0x00000200) /*!< TIM14 remapping */ +#define AFIO_MAPR2_FSMC_NADV_REMAP ((uint32_t)0x00000400) /*!< FSMC NADV remapping */ +#endif + +/******************************************************************************/ +/* */ +/* SystemTick */ +/* */ +/******************************************************************************/ + +/***************** Bit definition for SysTick_CTRL register *****************/ +#define SysTick_CTRL_ENABLE ((uint32_t)0x00000001) /*!< Counter enable */ +#define SysTick_CTRL_TICKINT ((uint32_t)0x00000002) /*!< Counting down to 0 pends the SysTick handler */ +#define SysTick_CTRL_CLKSOURCE ((uint32_t)0x00000004) /*!< Clock source */ +#define SysTick_CTRL_COUNTFLAG ((uint32_t)0x00010000) /*!< Count Flag */ + +/***************** Bit definition for SysTick_LOAD register *****************/ +#define SysTick_LOAD_RELOAD ((uint32_t)0x00FFFFFF) /*!< Value to load into the SysTick Current Value Register when the counter reaches 0 */ + +/***************** Bit definition for SysTick_VAL register ******************/ +#define SysTick_VAL_CURRENT ((uint32_t)0x00FFFFFF) /*!< Current value at the time the register is accessed */ + +/***************** Bit definition for SysTick_CALIB register ****************/ +#define SysTick_CALIB_TENMS ((uint32_t)0x00FFFFFF) /*!< Reload value to use for 10ms timing */ +#define SysTick_CALIB_SKEW ((uint32_t)0x40000000) /*!< Calibration value is not exactly 10 ms */ +#define SysTick_CALIB_NOREF ((uint32_t)0x80000000) /*!< The reference clock is not provided */ + +/******************************************************************************/ +/* */ +/* Nested Vectored Interrupt Controller */ +/* */ +/******************************************************************************/ + +/****************** Bit definition for NVIC_ISER register *******************/ +#define NVIC_ISER_SETENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt set enable bits */ +#define NVIC_ISER_SETENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_ISER_SETENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_ISER_SETENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_ISER_SETENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_ISER_SETENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_ISER_SETENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_ISER_SETENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_ISER_SETENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_ISER_SETENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_ISER_SETENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_ISER_SETENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_ISER_SETENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_ISER_SETENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_ISER_SETENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_ISER_SETENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_ISER_SETENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_ISER_SETENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_ISER_SETENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_ISER_SETENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_ISER_SETENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_ISER_SETENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_ISER_SETENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_ISER_SETENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_ISER_SETENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_ISER_SETENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_ISER_SETENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_ISER_SETENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_ISER_SETENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_ISER_SETENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_ISER_SETENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_ISER_SETENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_ISER_SETENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_ICER register *******************/ +#define NVIC_ICER_CLRENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-enable bits */ +#define NVIC_ICER_CLRENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_ICER_CLRENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_ICER_CLRENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_ICER_CLRENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_ICER_CLRENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_ICER_CLRENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_ICER_CLRENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_ICER_CLRENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_ICER_CLRENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_ICER_CLRENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_ICER_CLRENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_ICER_CLRENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_ICER_CLRENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_ICER_CLRENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_ICER_CLRENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_ICER_CLRENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_ICER_CLRENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_ICER_CLRENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_ICER_CLRENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_ICER_CLRENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_ICER_CLRENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_ICER_CLRENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_ICER_CLRENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_ICER_CLRENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_ICER_CLRENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_ICER_CLRENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_ICER_CLRENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_ICER_CLRENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_ICER_CLRENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_ICER_CLRENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_ICER_CLRENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_ICER_CLRENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_ISPR register *******************/ +#define NVIC_ISPR_SETPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt set-pending bits */ +#define NVIC_ISPR_SETPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_ISPR_SETPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_ISPR_SETPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_ISPR_SETPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_ISPR_SETPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_ISPR_SETPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_ISPR_SETPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_ISPR_SETPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_ISPR_SETPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_ISPR_SETPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_ISPR_SETPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_ISPR_SETPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_ISPR_SETPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_ISPR_SETPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_ISPR_SETPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_ISPR_SETPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_ISPR_SETPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_ISPR_SETPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_ISPR_SETPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_ISPR_SETPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_ISPR_SETPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_ISPR_SETPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_ISPR_SETPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_ISPR_SETPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_ISPR_SETPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_ISPR_SETPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_ISPR_SETPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_ISPR_SETPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_ISPR_SETPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_ISPR_SETPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_ISPR_SETPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_ISPR_SETPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_ICPR register *******************/ +#define NVIC_ICPR_CLRPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-pending bits */ +#define NVIC_ICPR_CLRPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_ICPR_CLRPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_ICPR_CLRPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_ICPR_CLRPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_ICPR_CLRPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_ICPR_CLRPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_ICPR_CLRPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_ICPR_CLRPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_ICPR_CLRPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_ICPR_CLRPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_ICPR_CLRPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_ICPR_CLRPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_ICPR_CLRPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_ICPR_CLRPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_ICPR_CLRPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_ICPR_CLRPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_ICPR_CLRPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_ICPR_CLRPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_ICPR_CLRPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_ICPR_CLRPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_ICPR_CLRPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_ICPR_CLRPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_ICPR_CLRPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_ICPR_CLRPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_ICPR_CLRPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_ICPR_CLRPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_ICPR_CLRPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_ICPR_CLRPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_ICPR_CLRPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_ICPR_CLRPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_ICPR_CLRPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_ICPR_CLRPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_IABR register *******************/ +#define NVIC_IABR_ACTIVE ((uint32_t)0xFFFFFFFF) /*!< Interrupt active flags */ +#define NVIC_IABR_ACTIVE_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_IABR_ACTIVE_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_IABR_ACTIVE_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_IABR_ACTIVE_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_IABR_ACTIVE_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_IABR_ACTIVE_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_IABR_ACTIVE_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_IABR_ACTIVE_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_IABR_ACTIVE_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_IABR_ACTIVE_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_IABR_ACTIVE_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_IABR_ACTIVE_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_IABR_ACTIVE_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_IABR_ACTIVE_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_IABR_ACTIVE_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_IABR_ACTIVE_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_IABR_ACTIVE_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_IABR_ACTIVE_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_IABR_ACTIVE_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_IABR_ACTIVE_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_IABR_ACTIVE_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_IABR_ACTIVE_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_IABR_ACTIVE_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_IABR_ACTIVE_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_IABR_ACTIVE_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_IABR_ACTIVE_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_IABR_ACTIVE_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_IABR_ACTIVE_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_IABR_ACTIVE_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_IABR_ACTIVE_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_IABR_ACTIVE_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_IABR_ACTIVE_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_PRI0 register *******************/ +#define NVIC_IPR0_PRI_0 ((uint32_t)0x000000FF) /*!< Priority of interrupt 0 */ +#define NVIC_IPR0_PRI_1 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 1 */ +#define NVIC_IPR0_PRI_2 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 2 */ +#define NVIC_IPR0_PRI_3 ((uint32_t)0xFF000000) /*!< Priority of interrupt 3 */ + +/****************** Bit definition for NVIC_PRI1 register *******************/ +#define NVIC_IPR1_PRI_4 ((uint32_t)0x000000FF) /*!< Priority of interrupt 4 */ +#define NVIC_IPR1_PRI_5 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 5 */ +#define NVIC_IPR1_PRI_6 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 6 */ +#define NVIC_IPR1_PRI_7 ((uint32_t)0xFF000000) /*!< Priority of interrupt 7 */ + +/****************** Bit definition for NVIC_PRI2 register *******************/ +#define NVIC_IPR2_PRI_8 ((uint32_t)0x000000FF) /*!< Priority of interrupt 8 */ +#define NVIC_IPR2_PRI_9 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 9 */ +#define NVIC_IPR2_PRI_10 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 10 */ +#define NVIC_IPR2_PRI_11 ((uint32_t)0xFF000000) /*!< Priority of interrupt 11 */ + +/****************** Bit definition for NVIC_PRI3 register *******************/ +#define NVIC_IPR3_PRI_12 ((uint32_t)0x000000FF) /*!< Priority of interrupt 12 */ +#define NVIC_IPR3_PRI_13 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 13 */ +#define NVIC_IPR3_PRI_14 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 14 */ +#define NVIC_IPR3_PRI_15 ((uint32_t)0xFF000000) /*!< Priority of interrupt 15 */ + +/****************** Bit definition for NVIC_PRI4 register *******************/ +#define NVIC_IPR4_PRI_16 ((uint32_t)0x000000FF) /*!< Priority of interrupt 16 */ +#define NVIC_IPR4_PRI_17 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 17 */ +#define NVIC_IPR4_PRI_18 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 18 */ +#define NVIC_IPR4_PRI_19 ((uint32_t)0xFF000000) /*!< Priority of interrupt 19 */ + +/****************** Bit definition for NVIC_PRI5 register *******************/ +#define NVIC_IPR5_PRI_20 ((uint32_t)0x000000FF) /*!< Priority of interrupt 20 */ +#define NVIC_IPR5_PRI_21 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 21 */ +#define NVIC_IPR5_PRI_22 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 22 */ +#define NVIC_IPR5_PRI_23 ((uint32_t)0xFF000000) /*!< Priority of interrupt 23 */ + +/****************** Bit definition for NVIC_PRI6 register *******************/ +#define NVIC_IPR6_PRI_24 ((uint32_t)0x000000FF) /*!< Priority of interrupt 24 */ +#define NVIC_IPR6_PRI_25 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 25 */ +#define NVIC_IPR6_PRI_26 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 26 */ +#define NVIC_IPR6_PRI_27 ((uint32_t)0xFF000000) /*!< Priority of interrupt 27 */ + +/****************** Bit definition for NVIC_PRI7 register *******************/ +#define NVIC_IPR7_PRI_28 ((uint32_t)0x000000FF) /*!< Priority of interrupt 28 */ +#define NVIC_IPR7_PRI_29 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 29 */ +#define NVIC_IPR7_PRI_30 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 30 */ +#define NVIC_IPR7_PRI_31 ((uint32_t)0xFF000000) /*!< Priority of interrupt 31 */ + +/****************** Bit definition for SCB_CPUID register *******************/ +#define SCB_CPUID_REVISION ((uint32_t)0x0000000F) /*!< Implementation defined revision number */ +#define SCB_CPUID_PARTNO ((uint32_t)0x0000FFF0) /*!< Number of processor within family */ +#define SCB_CPUID_Constant ((uint32_t)0x000F0000) /*!< Reads as 0x0F */ +#define SCB_CPUID_VARIANT ((uint32_t)0x00F00000) /*!< Implementation defined variant number */ +#define SCB_CPUID_IMPLEMENTER ((uint32_t)0xFF000000) /*!< Implementer code. ARM is 0x41 */ + +/******************* Bit definition for SCB_ICSR register *******************/ +#define SCB_ICSR_VECTACTIVE ((uint32_t)0x000001FF) /*!< Active ISR number field */ +#define SCB_ICSR_RETTOBASE ((uint32_t)0x00000800) /*!< All active exceptions minus the IPSR_current_exception yields the empty set */ +#define SCB_ICSR_VECTPENDING ((uint32_t)0x003FF000) /*!< Pending ISR number field */ +#define SCB_ICSR_ISRPENDING ((uint32_t)0x00400000) /*!< Interrupt pending flag */ +#define SCB_ICSR_ISRPREEMPT ((uint32_t)0x00800000) /*!< It indicates that a pending interrupt becomes active in the next running cycle */ +#define SCB_ICSR_PENDSTCLR ((uint32_t)0x02000000) /*!< Clear pending SysTick bit */ +#define SCB_ICSR_PENDSTSET ((uint32_t)0x04000000) /*!< Set pending SysTick bit */ +#define SCB_ICSR_PENDSVCLR ((uint32_t)0x08000000) /*!< Clear pending pendSV bit */ +#define SCB_ICSR_PENDSVSET ((uint32_t)0x10000000) /*!< Set pending pendSV bit */ +#define SCB_ICSR_NMIPENDSET ((uint32_t)0x80000000) /*!< Set pending NMI bit */ + +/******************* Bit definition for SCB_VTOR register *******************/ +#define SCB_VTOR_TBLOFF ((uint32_t)0x1FFFFF80) /*!< Vector table base offset field */ +#define SCB_VTOR_TBLBASE ((uint32_t)0x20000000) /*!< Table base in code(0) or RAM(1) */ + +/*!<***************** Bit definition for SCB_AIRCR register *******************/ +#define SCB_AIRCR_VECTRESET ((uint32_t)0x00000001) /*!< System Reset bit */ +#define SCB_AIRCR_VECTCLRACTIVE ((uint32_t)0x00000002) /*!< Clear active vector bit */ +#define SCB_AIRCR_SYSRESETREQ ((uint32_t)0x00000004) /*!< Requests chip control logic to generate a reset */ + +#define SCB_AIRCR_PRIGROUP ((uint32_t)0x00000700) /*!< PRIGROUP[2:0] bits (Priority group) */ +#define SCB_AIRCR_PRIGROUP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define SCB_AIRCR_PRIGROUP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define SCB_AIRCR_PRIGROUP_2 ((uint32_t)0x00000400) /*!< Bit 2 */ + +/* prority group configuration */ +#define SCB_AIRCR_PRIGROUP0 ((uint32_t)0x00000000) /*!< Priority group=0 (7 bits of pre-emption priority, 1 bit of subpriority) */ +#define SCB_AIRCR_PRIGROUP1 ((uint32_t)0x00000100) /*!< Priority group=1 (6 bits of pre-emption priority, 2 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP2 ((uint32_t)0x00000200) /*!< Priority group=2 (5 bits of pre-emption priority, 3 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP3 ((uint32_t)0x00000300) /*!< Priority group=3 (4 bits of pre-emption priority, 4 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP4 ((uint32_t)0x00000400) /*!< Priority group=4 (3 bits of pre-emption priority, 5 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP5 ((uint32_t)0x00000500) /*!< Priority group=5 (2 bits of pre-emption priority, 6 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP6 ((uint32_t)0x00000600) /*!< Priority group=6 (1 bit of pre-emption priority, 7 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP7 ((uint32_t)0x00000700) /*!< Priority group=7 (no pre-emption priority, 8 bits of subpriority) */ + +#define SCB_AIRCR_ENDIANESS ((uint32_t)0x00008000) /*!< Data endianness bit */ +#define SCB_AIRCR_VECTKEY ((uint32_t)0xFFFF0000) /*!< Register key (VECTKEY) - Reads as 0xFA05 (VECTKEYSTAT) */ + +/******************* Bit definition for SCB_SCR register ********************/ +#define SCB_SCR_SLEEPONEXIT ((uint8_t)0x02) /*!< Sleep on exit bit */ +#define SCB_SCR_SLEEPDEEP ((uint8_t)0x04) /*!< Sleep deep bit */ +#define SCB_SCR_SEVONPEND ((uint8_t)0x10) /*!< Wake up from WFE */ + +/******************** Bit definition for SCB_CCR register *******************/ +#define SCB_CCR_NONBASETHRDENA ((uint16_t)0x0001) /*!< Thread mode can be entered from any level in Handler mode by controlled return value */ +#define SCB_CCR_USERSETMPEND ((uint16_t)0x0002) /*!< Enables user code to write the Software Trigger Interrupt register to trigger (pend) a Main exception */ +#define SCB_CCR_UNALIGN_TRP ((uint16_t)0x0008) /*!< Trap for unaligned access */ +#define SCB_CCR_DIV_0_TRP ((uint16_t)0x0010) /*!< Trap on Divide by 0 */ +#define SCB_CCR_BFHFNMIGN ((uint16_t)0x0100) /*!< Handlers running at priority -1 and -2 */ +#define SCB_CCR_STKALIGN ((uint16_t)0x0200) /*!< On exception entry, the SP used prior to the exception is adjusted to be 8-byte aligned */ + +/******************* Bit definition for SCB_SHPR register ********************/ +#define SCB_SHPR_PRI_N ((uint32_t)0x000000FF) /*!< Priority of system handler 4,8, and 12. Mem Manage, reserved and Debug Monitor */ +#define SCB_SHPR_PRI_N1 ((uint32_t)0x0000FF00) /*!< Priority of system handler 5,9, and 13. Bus Fault, reserved and reserved */ +#define SCB_SHPR_PRI_N2 ((uint32_t)0x00FF0000) /*!< Priority of system handler 6,10, and 14. Usage Fault, reserved and PendSV */ +#define SCB_SHPR_PRI_N3 ((uint32_t)0xFF000000) /*!< Priority of system handler 7,11, and 15. Reserved, SVCall and SysTick */ + +/****************** Bit definition for SCB_SHCSR register *******************/ +#define SCB_SHCSR_MEMFAULTACT ((uint32_t)0x00000001) /*!< MemManage is active */ +#define SCB_SHCSR_BUSFAULTACT ((uint32_t)0x00000002) /*!< BusFault is active */ +#define SCB_SHCSR_USGFAULTACT ((uint32_t)0x00000008) /*!< UsageFault is active */ +#define SCB_SHCSR_SVCALLACT ((uint32_t)0x00000080) /*!< SVCall is active */ +#define SCB_SHCSR_MONITORACT ((uint32_t)0x00000100) /*!< Monitor is active */ +#define SCB_SHCSR_PENDSVACT ((uint32_t)0x00000400) /*!< PendSV is active */ +#define SCB_SHCSR_SYSTICKACT ((uint32_t)0x00000800) /*!< SysTick is active */ +#define SCB_SHCSR_USGFAULTPENDED ((uint32_t)0x00001000) /*!< Usage Fault is pended */ +#define SCB_SHCSR_MEMFAULTPENDED ((uint32_t)0x00002000) /*!< MemManage is pended */ +#define SCB_SHCSR_BUSFAULTPENDED ((uint32_t)0x00004000) /*!< Bus Fault is pended */ +#define SCB_SHCSR_SVCALLPENDED ((uint32_t)0x00008000) /*!< SVCall is pended */ +#define SCB_SHCSR_MEMFAULTENA ((uint32_t)0x00010000) /*!< MemManage enable */ +#define SCB_SHCSR_BUSFAULTENA ((uint32_t)0x00020000) /*!< Bus Fault enable */ +#define SCB_SHCSR_USGFAULTENA ((uint32_t)0x00040000) /*!< UsageFault enable */ + +/******************* Bit definition for SCB_CFSR register *******************/ +/*!< MFSR */ +#define SCB_CFSR_IACCVIOL ((uint32_t)0x00000001) /*!< Instruction access violation */ +#define SCB_CFSR_DACCVIOL ((uint32_t)0x00000002) /*!< Data access violation */ +#define SCB_CFSR_MUNSTKERR ((uint32_t)0x00000008) /*!< Unstacking error */ +#define SCB_CFSR_MSTKERR ((uint32_t)0x00000010) /*!< Stacking error */ +#define SCB_CFSR_MMARVALID ((uint32_t)0x00000080) /*!< Memory Manage Address Register address valid flag */ +/*!< BFSR */ +#define SCB_CFSR_IBUSERR ((uint32_t)0x00000100) /*!< Instruction bus error flag */ +#define SCB_CFSR_PRECISERR ((uint32_t)0x00000200) /*!< Precise data bus error */ +#define SCB_CFSR_IMPRECISERR ((uint32_t)0x00000400) /*!< Imprecise data bus error */ +#define SCB_CFSR_UNSTKERR ((uint32_t)0x00000800) /*!< Unstacking error */ +#define SCB_CFSR_STKERR ((uint32_t)0x00001000) /*!< Stacking error */ +#define SCB_CFSR_BFARVALID ((uint32_t)0x00008000) /*!< Bus Fault Address Register address valid flag */ +/*!< UFSR */ +#define SCB_CFSR_UNDEFINSTR ((uint32_t)0x00010000) /*!< The processor attempt to execute an undefined instruction */ +#define SCB_CFSR_INVSTATE ((uint32_t)0x00020000) /*!< Invalid combination of EPSR and instruction */ +#define SCB_CFSR_INVPC ((uint32_t)0x00040000) /*!< Attempt to load EXC_RETURN into pc illegally */ +#define SCB_CFSR_NOCP ((uint32_t)0x00080000) /*!< Attempt to use a coprocessor instruction */ +#define SCB_CFSR_UNALIGNED ((uint32_t)0x01000000) /*!< Fault occurs when there is an attempt to make an unaligned memory access */ +#define SCB_CFSR_DIVBYZERO ((uint32_t)0x02000000) /*!< Fault occurs when SDIV or DIV instruction is used with a divisor of 0 */ + +/******************* Bit definition for SCB_HFSR register *******************/ +#define SCB_HFSR_VECTTBL ((uint32_t)0x00000002) /*!< Fault occurs because of vector table read on exception processing */ +#define SCB_HFSR_FORCED ((uint32_t)0x40000000) /*!< Hard Fault activated when a configurable Fault was received and cannot activate */ +#define SCB_HFSR_DEBUGEVT ((uint32_t)0x80000000) /*!< Fault related to debug */ + +/******************* Bit definition for SCB_DFSR register *******************/ +#define SCB_DFSR_HALTED ((uint8_t)0x01) /*!< Halt request flag */ +#define SCB_DFSR_BKPT ((uint8_t)0x02) /*!< BKPT flag */ +#define SCB_DFSR_DWTTRAP ((uint8_t)0x04) /*!< Data Watchpoint and Trace (DWT) flag */ +#define SCB_DFSR_VCATCH ((uint8_t)0x08) /*!< Vector catch flag */ +#define SCB_DFSR_EXTERNAL ((uint8_t)0x10) /*!< External debug request flag */ + +/******************* Bit definition for SCB_MMFAR register ******************/ +#define SCB_MMFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Mem Manage fault address field */ + +/******************* Bit definition for SCB_BFAR register *******************/ +#define SCB_BFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Bus fault address field */ + +/******************* Bit definition for SCB_afsr register *******************/ +#define SCB_AFSR_IMPDEF ((uint32_t)0xFFFFFFFF) /*!< Implementation defined */ + +/******************************************************************************/ +/* */ +/* External Interrupt/Event Controller */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for EXTI_IMR register *******************/ +#define EXTI_IMR_MR0 ((uint32_t)0x00000001) /*!< Interrupt Mask on line 0 */ +#define EXTI_IMR_MR1 ((uint32_t)0x00000002) /*!< Interrupt Mask on line 1 */ +#define EXTI_IMR_MR2 ((uint32_t)0x00000004) /*!< Interrupt Mask on line 2 */ +#define EXTI_IMR_MR3 ((uint32_t)0x00000008) /*!< Interrupt Mask on line 3 */ +#define EXTI_IMR_MR4 ((uint32_t)0x00000010) /*!< Interrupt Mask on line 4 */ +#define EXTI_IMR_MR5 ((uint32_t)0x00000020) /*!< Interrupt Mask on line 5 */ +#define EXTI_IMR_MR6 ((uint32_t)0x00000040) /*!< Interrupt Mask on line 6 */ +#define EXTI_IMR_MR7 ((uint32_t)0x00000080) /*!< Interrupt Mask on line 7 */ +#define EXTI_IMR_MR8 ((uint32_t)0x00000100) /*!< Interrupt Mask on line 8 */ +#define EXTI_IMR_MR9 ((uint32_t)0x00000200) /*!< Interrupt Mask on line 9 */ +#define EXTI_IMR_MR10 ((uint32_t)0x00000400) /*!< Interrupt Mask on line 10 */ +#define EXTI_IMR_MR11 ((uint32_t)0x00000800) /*!< Interrupt Mask on line 11 */ +#define EXTI_IMR_MR12 ((uint32_t)0x00001000) /*!< Interrupt Mask on line 12 */ +#define EXTI_IMR_MR13 ((uint32_t)0x00002000) /*!< Interrupt Mask on line 13 */ +#define EXTI_IMR_MR14 ((uint32_t)0x00004000) /*!< Interrupt Mask on line 14 */ +#define EXTI_IMR_MR15 ((uint32_t)0x00008000) /*!< Interrupt Mask on line 15 */ +#define EXTI_IMR_MR16 ((uint32_t)0x00010000) /*!< Interrupt Mask on line 16 */ +#define EXTI_IMR_MR17 ((uint32_t)0x00020000) /*!< Interrupt Mask on line 17 */ +#define EXTI_IMR_MR18 ((uint32_t)0x00040000) /*!< Interrupt Mask on line 18 */ +#define EXTI_IMR_MR19 ((uint32_t)0x00080000) /*!< Interrupt Mask on line 19 */ + +/******************* Bit definition for EXTI_EMR register *******************/ +#define EXTI_EMR_MR0 ((uint32_t)0x00000001) /*!< Event Mask on line 0 */ +#define EXTI_EMR_MR1 ((uint32_t)0x00000002) /*!< Event Mask on line 1 */ +#define EXTI_EMR_MR2 ((uint32_t)0x00000004) /*!< Event Mask on line 2 */ +#define EXTI_EMR_MR3 ((uint32_t)0x00000008) /*!< Event Mask on line 3 */ +#define EXTI_EMR_MR4 ((uint32_t)0x00000010) /*!< Event Mask on line 4 */ +#define EXTI_EMR_MR5 ((uint32_t)0x00000020) /*!< Event Mask on line 5 */ +#define EXTI_EMR_MR6 ((uint32_t)0x00000040) /*!< Event Mask on line 6 */ +#define EXTI_EMR_MR7 ((uint32_t)0x00000080) /*!< Event Mask on line 7 */ +#define EXTI_EMR_MR8 ((uint32_t)0x00000100) /*!< Event Mask on line 8 */ +#define EXTI_EMR_MR9 ((uint32_t)0x00000200) /*!< Event Mask on line 9 */ +#define EXTI_EMR_MR10 ((uint32_t)0x00000400) /*!< Event Mask on line 10 */ +#define EXTI_EMR_MR11 ((uint32_t)0x00000800) /*!< Event Mask on line 11 */ +#define EXTI_EMR_MR12 ((uint32_t)0x00001000) /*!< Event Mask on line 12 */ +#define EXTI_EMR_MR13 ((uint32_t)0x00002000) /*!< Event Mask on line 13 */ +#define EXTI_EMR_MR14 ((uint32_t)0x00004000) /*!< Event Mask on line 14 */ +#define EXTI_EMR_MR15 ((uint32_t)0x00008000) /*!< Event Mask on line 15 */ +#define EXTI_EMR_MR16 ((uint32_t)0x00010000) /*!< Event Mask on line 16 */ +#define EXTI_EMR_MR17 ((uint32_t)0x00020000) /*!< Event Mask on line 17 */ +#define EXTI_EMR_MR18 ((uint32_t)0x00040000) /*!< Event Mask on line 18 */ +#define EXTI_EMR_MR19 ((uint32_t)0x00080000) /*!< Event Mask on line 19 */ + +/****************** Bit definition for EXTI_RTSR register *******************/ +#define EXTI_RTSR_TR0 ((uint32_t)0x00000001) /*!< Rising trigger event configuration bit of line 0 */ +#define EXTI_RTSR_TR1 ((uint32_t)0x00000002) /*!< Rising trigger event configuration bit of line 1 */ +#define EXTI_RTSR_TR2 ((uint32_t)0x00000004) /*!< Rising trigger event configuration bit of line 2 */ +#define EXTI_RTSR_TR3 ((uint32_t)0x00000008) /*!< Rising trigger event configuration bit of line 3 */ +#define EXTI_RTSR_TR4 ((uint32_t)0x00000010) /*!< Rising trigger event configuration bit of line 4 */ +#define EXTI_RTSR_TR5 ((uint32_t)0x00000020) /*!< Rising trigger event configuration bit of line 5 */ +#define EXTI_RTSR_TR6 ((uint32_t)0x00000040) /*!< Rising trigger event configuration bit of line 6 */ +#define EXTI_RTSR_TR7 ((uint32_t)0x00000080) /*!< Rising trigger event configuration bit of line 7 */ +#define EXTI_RTSR_TR8 ((uint32_t)0x00000100) /*!< Rising trigger event configuration bit of line 8 */ +#define EXTI_RTSR_TR9 ((uint32_t)0x00000200) /*!< Rising trigger event configuration bit of line 9 */ +#define EXTI_RTSR_TR10 ((uint32_t)0x00000400) /*!< Rising trigger event configuration bit of line 10 */ +#define EXTI_RTSR_TR11 ((uint32_t)0x00000800) /*!< Rising trigger event configuration bit of line 11 */ +#define EXTI_RTSR_TR12 ((uint32_t)0x00001000) /*!< Rising trigger event configuration bit of line 12 */ +#define EXTI_RTSR_TR13 ((uint32_t)0x00002000) /*!< Rising trigger event configuration bit of line 13 */ +#define EXTI_RTSR_TR14 ((uint32_t)0x00004000) /*!< Rising trigger event configuration bit of line 14 */ +#define EXTI_RTSR_TR15 ((uint32_t)0x00008000) /*!< Rising trigger event configuration bit of line 15 */ +#define EXTI_RTSR_TR16 ((uint32_t)0x00010000) /*!< Rising trigger event configuration bit of line 16 */ +#define EXTI_RTSR_TR17 ((uint32_t)0x00020000) /*!< Rising trigger event configuration bit of line 17 */ +#define EXTI_RTSR_TR18 ((uint32_t)0x00040000) /*!< Rising trigger event configuration bit of line 18 */ +#define EXTI_RTSR_TR19 ((uint32_t)0x00080000) /*!< Rising trigger event configuration bit of line 19 */ + +/****************** Bit definition for EXTI_FTSR register *******************/ +#define EXTI_FTSR_TR0 ((uint32_t)0x00000001) /*!< Falling trigger event configuration bit of line 0 */ +#define EXTI_FTSR_TR1 ((uint32_t)0x00000002) /*!< Falling trigger event configuration bit of line 1 */ +#define EXTI_FTSR_TR2 ((uint32_t)0x00000004) /*!< Falling trigger event configuration bit of line 2 */ +#define EXTI_FTSR_TR3 ((uint32_t)0x00000008) /*!< Falling trigger event configuration bit of line 3 */ +#define EXTI_FTSR_TR4 ((uint32_t)0x00000010) /*!< Falling trigger event configuration bit of line 4 */ +#define EXTI_FTSR_TR5 ((uint32_t)0x00000020) /*!< Falling trigger event configuration bit of line 5 */ +#define EXTI_FTSR_TR6 ((uint32_t)0x00000040) /*!< Falling trigger event configuration bit of line 6 */ +#define EXTI_FTSR_TR7 ((uint32_t)0x00000080) /*!< Falling trigger event configuration bit of line 7 */ +#define EXTI_FTSR_TR8 ((uint32_t)0x00000100) /*!< Falling trigger event configuration bit of line 8 */ +#define EXTI_FTSR_TR9 ((uint32_t)0x00000200) /*!< Falling trigger event configuration bit of line 9 */ +#define EXTI_FTSR_TR10 ((uint32_t)0x00000400) /*!< Falling trigger event configuration bit of line 10 */ +#define EXTI_FTSR_TR11 ((uint32_t)0x00000800) /*!< Falling trigger event configuration bit of line 11 */ +#define EXTI_FTSR_TR12 ((uint32_t)0x00001000) /*!< Falling trigger event configuration bit of line 12 */ +#define EXTI_FTSR_TR13 ((uint32_t)0x00002000) /*!< Falling trigger event configuration bit of line 13 */ +#define EXTI_FTSR_TR14 ((uint32_t)0x00004000) /*!< Falling trigger event configuration bit of line 14 */ +#define EXTI_FTSR_TR15 ((uint32_t)0x00008000) /*!< Falling trigger event configuration bit of line 15 */ +#define EXTI_FTSR_TR16 ((uint32_t)0x00010000) /*!< Falling trigger event configuration bit of line 16 */ +#define EXTI_FTSR_TR17 ((uint32_t)0x00020000) /*!< Falling trigger event configuration bit of line 17 */ +#define EXTI_FTSR_TR18 ((uint32_t)0x00040000) /*!< Falling trigger event configuration bit of line 18 */ +#define EXTI_FTSR_TR19 ((uint32_t)0x00080000) /*!< Falling trigger event configuration bit of line 19 */ + +/****************** Bit definition for EXTI_SWIER register ******************/ +#define EXTI_SWIER_SWIER0 ((uint32_t)0x00000001) /*!< Software Interrupt on line 0 */ +#define EXTI_SWIER_SWIER1 ((uint32_t)0x00000002) /*!< Software Interrupt on line 1 */ +#define EXTI_SWIER_SWIER2 ((uint32_t)0x00000004) /*!< Software Interrupt on line 2 */ +#define EXTI_SWIER_SWIER3 ((uint32_t)0x00000008) /*!< Software Interrupt on line 3 */ +#define EXTI_SWIER_SWIER4 ((uint32_t)0x00000010) /*!< Software Interrupt on line 4 */ +#define EXTI_SWIER_SWIER5 ((uint32_t)0x00000020) /*!< Software Interrupt on line 5 */ +#define EXTI_SWIER_SWIER6 ((uint32_t)0x00000040) /*!< Software Interrupt on line 6 */ +#define EXTI_SWIER_SWIER7 ((uint32_t)0x00000080) /*!< Software Interrupt on line 7 */ +#define EXTI_SWIER_SWIER8 ((uint32_t)0x00000100) /*!< Software Interrupt on line 8 */ +#define EXTI_SWIER_SWIER9 ((uint32_t)0x00000200) /*!< Software Interrupt on line 9 */ +#define EXTI_SWIER_SWIER10 ((uint32_t)0x00000400) /*!< Software Interrupt on line 10 */ +#define EXTI_SWIER_SWIER11 ((uint32_t)0x00000800) /*!< Software Interrupt on line 11 */ +#define EXTI_SWIER_SWIER12 ((uint32_t)0x00001000) /*!< Software Interrupt on line 12 */ +#define EXTI_SWIER_SWIER13 ((uint32_t)0x00002000) /*!< Software Interrupt on line 13 */ +#define EXTI_SWIER_SWIER14 ((uint32_t)0x00004000) /*!< Software Interrupt on line 14 */ +#define EXTI_SWIER_SWIER15 ((uint32_t)0x00008000) /*!< Software Interrupt on line 15 */ +#define EXTI_SWIER_SWIER16 ((uint32_t)0x00010000) /*!< Software Interrupt on line 16 */ +#define EXTI_SWIER_SWIER17 ((uint32_t)0x00020000) /*!< Software Interrupt on line 17 */ +#define EXTI_SWIER_SWIER18 ((uint32_t)0x00040000) /*!< Software Interrupt on line 18 */ +#define EXTI_SWIER_SWIER19 ((uint32_t)0x00080000) /*!< Software Interrupt on line 19 */ + +/******************* Bit definition for EXTI_PR register ********************/ +#define EXTI_PR_PR0 ((uint32_t)0x00000001) /*!< Pending bit for line 0 */ +#define EXTI_PR_PR1 ((uint32_t)0x00000002) /*!< Pending bit for line 1 */ +#define EXTI_PR_PR2 ((uint32_t)0x00000004) /*!< Pending bit for line 2 */ +#define EXTI_PR_PR3 ((uint32_t)0x00000008) /*!< Pending bit for line 3 */ +#define EXTI_PR_PR4 ((uint32_t)0x00000010) /*!< Pending bit for line 4 */ +#define EXTI_PR_PR5 ((uint32_t)0x00000020) /*!< Pending bit for line 5 */ +#define EXTI_PR_PR6 ((uint32_t)0x00000040) /*!< Pending bit for line 6 */ +#define EXTI_PR_PR7 ((uint32_t)0x00000080) /*!< Pending bit for line 7 */ +#define EXTI_PR_PR8 ((uint32_t)0x00000100) /*!< Pending bit for line 8 */ +#define EXTI_PR_PR9 ((uint32_t)0x00000200) /*!< Pending bit for line 9 */ +#define EXTI_PR_PR10 ((uint32_t)0x00000400) /*!< Pending bit for line 10 */ +#define EXTI_PR_PR11 ((uint32_t)0x00000800) /*!< Pending bit for line 11 */ +#define EXTI_PR_PR12 ((uint32_t)0x00001000) /*!< Pending bit for line 12 */ +#define EXTI_PR_PR13 ((uint32_t)0x00002000) /*!< Pending bit for line 13 */ +#define EXTI_PR_PR14 ((uint32_t)0x00004000) /*!< Pending bit for line 14 */ +#define EXTI_PR_PR15 ((uint32_t)0x00008000) /*!< Pending bit for line 15 */ +#define EXTI_PR_PR16 ((uint32_t)0x00010000) /*!< Pending bit for line 16 */ +#define EXTI_PR_PR17 ((uint32_t)0x00020000) /*!< Pending bit for line 17 */ +#define EXTI_PR_PR18 ((uint32_t)0x00040000) /*!< Pending bit for line 18 */ +#define EXTI_PR_PR19 ((uint32_t)0x00080000) /*!< Pending bit for line 19 */ + +/******************************************************************************/ +/* */ +/* DMA Controller */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for DMA_ISR register ********************/ +#define DMA_ISR_GIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt flag */ +#define DMA_ISR_TCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete flag */ +#define DMA_ISR_HTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer flag */ +#define DMA_ISR_TEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error flag */ +#define DMA_ISR_GIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt flag */ +#define DMA_ISR_TCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete flag */ +#define DMA_ISR_HTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer flag */ +#define DMA_ISR_TEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error flag */ +#define DMA_ISR_GIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt flag */ +#define DMA_ISR_TCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete flag */ +#define DMA_ISR_HTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer flag */ +#define DMA_ISR_TEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error flag */ +#define DMA_ISR_GIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt flag */ +#define DMA_ISR_TCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete flag */ +#define DMA_ISR_HTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer flag */ +#define DMA_ISR_TEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error flag */ +#define DMA_ISR_GIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt flag */ +#define DMA_ISR_TCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete flag */ +#define DMA_ISR_HTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer flag */ +#define DMA_ISR_TEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error flag */ +#define DMA_ISR_GIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt flag */ +#define DMA_ISR_TCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete flag */ +#define DMA_ISR_HTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer flag */ +#define DMA_ISR_TEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error flag */ +#define DMA_ISR_GIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt flag */ +#define DMA_ISR_TCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete flag */ +#define DMA_ISR_HTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer flag */ +#define DMA_ISR_TEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error flag */ + +/******************* Bit definition for DMA_IFCR register *******************/ +#define DMA_IFCR_CGIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt clear */ +#define DMA_IFCR_CTCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete clear */ +#define DMA_IFCR_CHTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer clear */ +#define DMA_IFCR_CTEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error clear */ +#define DMA_IFCR_CGIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt clear */ +#define DMA_IFCR_CTCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete clear */ +#define DMA_IFCR_CHTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer clear */ +#define DMA_IFCR_CTEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error clear */ +#define DMA_IFCR_CGIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt clear */ +#define DMA_IFCR_CTCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete clear */ +#define DMA_IFCR_CHTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer clear */ +#define DMA_IFCR_CTEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error clear */ +#define DMA_IFCR_CGIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt clear */ +#define DMA_IFCR_CTCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete clear */ +#define DMA_IFCR_CHTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer clear */ +#define DMA_IFCR_CTEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error clear */ +#define DMA_IFCR_CGIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt clear */ +#define DMA_IFCR_CTCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete clear */ +#define DMA_IFCR_CHTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer clear */ +#define DMA_IFCR_CTEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error clear */ +#define DMA_IFCR_CGIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt clear */ +#define DMA_IFCR_CTCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete clear */ +#define DMA_IFCR_CHTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer clear */ +#define DMA_IFCR_CTEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error clear */ +#define DMA_IFCR_CGIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt clear */ +#define DMA_IFCR_CTCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete clear */ +#define DMA_IFCR_CHTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer clear */ +#define DMA_IFCR_CTEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error clear */ + +/******************* Bit definition for DMA_CCR1 register *******************/ +#define DMA_CCR1_EN ((uint16_t)0x0001) /*!< Channel enable*/ +#define DMA_CCR1_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR1_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR1_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR1_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR1_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR1_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR1_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR1_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR1_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR1_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR1_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR1_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR1_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR1_PL ((uint16_t)0x3000) /*!< PL[1:0] bits(Channel Priority level) */ +#define DMA_CCR1_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR1_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR1_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/******************* Bit definition for DMA_CCR2 register *******************/ +#define DMA_CCR2_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR2_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR2_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR2_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR2_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR2_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR2_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR2_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR2_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR2_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR2_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR2_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR2_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR2_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR2_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR2_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR2_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR2_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/******************* Bit definition for DMA_CCR3 register *******************/ +#define DMA_CCR3_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR3_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR3_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR3_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR3_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR3_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR3_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR3_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR3_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR3_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR3_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR3_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR3_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR3_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR3_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR3_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR3_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR3_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/*!<****************** Bit definition for DMA_CCR4 register *******************/ +#define DMA_CCR4_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR4_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR4_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR4_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR4_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR4_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR4_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR4_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR4_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR4_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR4_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR4_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR4_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR4_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR4_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR4_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR4_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR4_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/****************** Bit definition for DMA_CCR5 register *******************/ +#define DMA_CCR5_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR5_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR5_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR5_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR5_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR5_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR5_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR5_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR5_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR5_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR5_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR5_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR5_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR5_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR5_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR5_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR5_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR5_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode enable */ + +/******************* Bit definition for DMA_CCR6 register *******************/ +#define DMA_CCR6_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR6_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR6_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR6_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR6_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR6_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR6_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR6_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR6_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR6_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR6_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR6_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR6_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR6_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR6_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR6_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR6_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR6_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/******************* Bit definition for DMA_CCR7 register *******************/ +#define DMA_CCR7_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR7_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR7_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR7_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR7_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR7_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR7_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR7_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR7_PSIZE , ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR7_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR7_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR7_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR7_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR7_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR7_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR7_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR7_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR7_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode enable */ + +/****************** Bit definition for DMA_CNDTR1 register ******************/ +#define DMA_CNDTR1_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR2 register ******************/ +#define DMA_CNDTR2_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR3 register ******************/ +#define DMA_CNDTR3_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR4 register ******************/ +#define DMA_CNDTR4_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR5 register ******************/ +#define DMA_CNDTR5_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR6 register ******************/ +#define DMA_CNDTR6_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR7 register ******************/ +#define DMA_CNDTR7_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CPAR1 register *******************/ +#define DMA_CPAR1_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CPAR2 register *******************/ +#define DMA_CPAR2_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CPAR3 register *******************/ +#define DMA_CPAR3_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + + +/****************** Bit definition for DMA_CPAR4 register *******************/ +#define DMA_CPAR4_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CPAR5 register *******************/ +#define DMA_CPAR5_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CPAR6 register *******************/ +#define DMA_CPAR6_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + + +/****************** Bit definition for DMA_CPAR7 register *******************/ +#define DMA_CPAR7_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CMAR1 register *******************/ +#define DMA_CMAR1_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR2 register *******************/ +#define DMA_CMAR2_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR3 register *******************/ +#define DMA_CMAR3_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + + +/****************** Bit definition for DMA_CMAR4 register *******************/ +#define DMA_CMAR4_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR5 register *******************/ +#define DMA_CMAR5_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR6 register *******************/ +#define DMA_CMAR6_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR7 register *******************/ +#define DMA_CMAR7_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for ADC_SR register ********************/ +#define ADC_SR_AWD ((uint8_t)0x01) /*!< Analog watchdog flag */ +#define ADC_SR_EOC ((uint8_t)0x02) /*!< End of conversion */ +#define ADC_SR_JEOC ((uint8_t)0x04) /*!< Injected channel end of conversion */ +#define ADC_SR_JSTRT ((uint8_t)0x08) /*!< Injected channel Start flag */ +#define ADC_SR_STRT ((uint8_t)0x10) /*!< Regular channel Start flag */ + +/******************* Bit definition for ADC_CR1 register ********************/ +#define ADC_CR1_AWDCH ((uint32_t)0x0000001F) /*!< AWDCH[4:0] bits (Analog watchdog channel select bits) */ +#define ADC_CR1_AWDCH_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_CR1_AWDCH_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_CR1_AWDCH_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_CR1_AWDCH_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_CR1_AWDCH_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_CR1_EOCIE ((uint32_t)0x00000020) /*!< Interrupt enable for EOC */ +#define ADC_CR1_AWDIE ((uint32_t)0x00000040) /*!< Analog Watchdog interrupt enable */ +#define ADC_CR1_JEOCIE ((uint32_t)0x00000080) /*!< Interrupt enable for injected channels */ +#define ADC_CR1_SCAN ((uint32_t)0x00000100) /*!< Scan mode */ +#define ADC_CR1_AWDSGL ((uint32_t)0x00000200) /*!< Enable the watchdog on a single channel in scan mode */ +#define ADC_CR1_JAUTO ((uint32_t)0x00000400) /*!< Automatic injected group conversion */ +#define ADC_CR1_DISCEN ((uint32_t)0x00000800) /*!< Discontinuous mode on regular channels */ +#define ADC_CR1_JDISCEN ((uint32_t)0x00001000) /*!< Discontinuous mode on injected channels */ + +#define ADC_CR1_DISCNUM ((uint32_t)0x0000E000) /*!< DISCNUM[2:0] bits (Discontinuous mode channel count) */ +#define ADC_CR1_DISCNUM_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define ADC_CR1_DISCNUM_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define ADC_CR1_DISCNUM_2 ((uint32_t)0x00008000) /*!< Bit 2 */ + +#define ADC_CR1_DUALMOD ((uint32_t)0x000F0000) /*!< DUALMOD[3:0] bits (Dual mode selection) */ +#define ADC_CR1_DUALMOD_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define ADC_CR1_DUALMOD_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define ADC_CR1_DUALMOD_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define ADC_CR1_DUALMOD_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define ADC_CR1_JAWDEN ((uint32_t)0x00400000) /*!< Analog watchdog enable on injected channels */ +#define ADC_CR1_AWDEN ((uint32_t)0x00800000) /*!< Analog watchdog enable on regular channels */ + + +/******************* Bit definition for ADC_CR2 register ********************/ +#define ADC_CR2_ADON ((uint32_t)0x00000001) /*!< A/D Converter ON / OFF */ +#define ADC_CR2_CONT ((uint32_t)0x00000002) /*!< Continuous Conversion */ +#define ADC_CR2_CAL ((uint32_t)0x00000004) /*!< A/D Calibration */ +#define ADC_CR2_RSTCAL ((uint32_t)0x00000008) /*!< Reset Calibration */ +#define ADC_CR2_DMA ((uint32_t)0x00000100) /*!< Direct Memory access mode */ +#define ADC_CR2_ALIGN ((uint32_t)0x00000800) /*!< Data Alignment */ + +#define ADC_CR2_JEXTSEL ((uint32_t)0x00007000) /*!< JEXTSEL[2:0] bits (External event select for injected group) */ +#define ADC_CR2_JEXTSEL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_CR2_JEXTSEL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_CR2_JEXTSEL_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_CR2_JEXTTRIG ((uint32_t)0x00008000) /*!< External Trigger Conversion mode for injected channels */ + +#define ADC_CR2_EXTSEL ((uint32_t)0x000E0000) /*!< EXTSEL[2:0] bits (External Event Select for regular group) */ +#define ADC_CR2_EXTSEL_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define ADC_CR2_EXTSEL_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define ADC_CR2_EXTSEL_2 ((uint32_t)0x00080000) /*!< Bit 2 */ + +#define ADC_CR2_EXTTRIG ((uint32_t)0x00100000) /*!< External Trigger Conversion mode for regular channels */ +#define ADC_CR2_JSWSTART ((uint32_t)0x00200000) /*!< Start Conversion of injected channels */ +#define ADC_CR2_SWSTART ((uint32_t)0x00400000) /*!< Start Conversion of regular channels */ +#define ADC_CR2_TSVREFE ((uint32_t)0x00800000) /*!< Temperature Sensor and VREFINT Enable */ + +/****************** Bit definition for ADC_SMPR1 register *******************/ +#define ADC_SMPR1_SMP10 ((uint32_t)0x00000007) /*!< SMP10[2:0] bits (Channel 10 Sample time selection) */ +#define ADC_SMPR1_SMP10_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR1_SMP10_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR1_SMP10_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP11 ((uint32_t)0x00000038) /*!< SMP11[2:0] bits (Channel 11 Sample time selection) */ +#define ADC_SMPR1_SMP11_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR1_SMP11_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR1_SMP11_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP12 ((uint32_t)0x000001C0) /*!< SMP12[2:0] bits (Channel 12 Sample time selection) */ +#define ADC_SMPR1_SMP12_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR1_SMP12_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR1_SMP12_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP13 ((uint32_t)0x00000E00) /*!< SMP13[2:0] bits (Channel 13 Sample time selection) */ +#define ADC_SMPR1_SMP13_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR1_SMP13_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR1_SMP13_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP14 ((uint32_t)0x00007000) /*!< SMP14[2:0] bits (Channel 14 Sample time selection) */ +#define ADC_SMPR1_SMP14_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP14_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP14_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP15 ((uint32_t)0x00038000) /*!< SMP15[2:0] bits (Channel 15 Sample time selection) */ +#define ADC_SMPR1_SMP15_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP15_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP15_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP16 ((uint32_t)0x001C0000) /*!< SMP16[2:0] bits (Channel 16 Sample time selection) */ +#define ADC_SMPR1_SMP16_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP16_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP16_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP17 ((uint32_t)0x00E00000) /*!< SMP17[2:0] bits (Channel 17 Sample time selection) */ +#define ADC_SMPR1_SMP17_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP17_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP17_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_SMPR2 register *******************/ +#define ADC_SMPR2_SMP0 ((uint32_t)0x00000007) /*!< SMP0[2:0] bits (Channel 0 Sample time selection) */ +#define ADC_SMPR2_SMP0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR2_SMP0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR2_SMP0_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP1 ((uint32_t)0x00000038) /*!< SMP1[2:0] bits (Channel 1 Sample time selection) */ +#define ADC_SMPR2_SMP1_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR2_SMP1_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR2_SMP1_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP2 ((uint32_t)0x000001C0) /*!< SMP2[2:0] bits (Channel 2 Sample time selection) */ +#define ADC_SMPR2_SMP2_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR2_SMP2_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR2_SMP2_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP3 ((uint32_t)0x00000E00) /*!< SMP3[2:0] bits (Channel 3 Sample time selection) */ +#define ADC_SMPR2_SMP3_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR2_SMP3_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR2_SMP3_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP4 ((uint32_t)0x00007000) /*!< SMP4[2:0] bits (Channel 4 Sample time selection) */ +#define ADC_SMPR2_SMP4_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP4_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP4_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP5 ((uint32_t)0x00038000) /*!< SMP5[2:0] bits (Channel 5 Sample time selection) */ +#define ADC_SMPR2_SMP5_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP5_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP5_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP6 ((uint32_t)0x001C0000) /*!< SMP6[2:0] bits (Channel 6 Sample time selection) */ +#define ADC_SMPR2_SMP6_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP6_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP6_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP7 ((uint32_t)0x00E00000) /*!< SMP7[2:0] bits (Channel 7 Sample time selection) */ +#define ADC_SMPR2_SMP7_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP7_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP7_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP8 ((uint32_t)0x07000000) /*!< SMP8[2:0] bits (Channel 8 Sample time selection) */ +#define ADC_SMPR2_SMP8_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP8_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP8_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP9 ((uint32_t)0x38000000) /*!< SMP9[2:0] bits (Channel 9 Sample time selection) */ +#define ADC_SMPR2_SMP9_0 ((uint32_t)0x08000000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP9_1 ((uint32_t)0x10000000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP9_2 ((uint32_t)0x20000000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_JOFR1 register *******************/ +#define ADC_JOFR1_JOFFSET1 ((uint16_t)0x0FFF) /*!< Data offset for injected channel 1 */ + +/****************** Bit definition for ADC_JOFR2 register *******************/ +#define ADC_JOFR2_JOFFSET2 ((uint16_t)0x0FFF) /*!< Data offset for injected channel 2 */ + +/****************** Bit definition for ADC_JOFR3 register *******************/ +#define ADC_JOFR3_JOFFSET3 ((uint16_t)0x0FFF) /*!< Data offset for injected channel 3 */ + +/****************** Bit definition for ADC_JOFR4 register *******************/ +#define ADC_JOFR4_JOFFSET4 ((uint16_t)0x0FFF) /*!< Data offset for injected channel 4 */ + +/******************* Bit definition for ADC_HTR register ********************/ +#define ADC_HTR_HT ((uint16_t)0x0FFF) /*!< Analog watchdog high threshold */ + +/******************* Bit definition for ADC_LTR register ********************/ +#define ADC_LTR_LT ((uint16_t)0x0FFF) /*!< Analog watchdog low threshold */ + +/******************* Bit definition for ADC_SQR1 register *******************/ +#define ADC_SQR1_SQ13 ((uint32_t)0x0000001F) /*!< SQ13[4:0] bits (13th conversion in regular sequence) */ +#define ADC_SQR1_SQ13_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR1_SQ13_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR1_SQ13_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR1_SQ13_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR1_SQ13_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR1_SQ14 ((uint32_t)0x000003E0) /*!< SQ14[4:0] bits (14th conversion in regular sequence) */ +#define ADC_SQR1_SQ14_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR1_SQ14_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR1_SQ14_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR1_SQ14_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR1_SQ14_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR1_SQ15 ((uint32_t)0x00007C00) /*!< SQ15[4:0] bits (15th conversion in regular sequence) */ +#define ADC_SQR1_SQ15_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR1_SQ15_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR1_SQ15_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR1_SQ15_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR1_SQ15_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR1_SQ16 ((uint32_t)0x000F8000) /*!< SQ16[4:0] bits (16th conversion in regular sequence) */ +#define ADC_SQR1_SQ16_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR1_SQ16_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR1_SQ16_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR1_SQ16_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR1_SQ16_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR1_L ((uint32_t)0x00F00000) /*!< L[3:0] bits (Regular channel sequence length) */ +#define ADC_SQR1_L_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR1_L_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR1_L_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR1_L_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +/******************* Bit definition for ADC_SQR2 register *******************/ +#define ADC_SQR2_SQ7 ((uint32_t)0x0000001F) /*!< SQ7[4:0] bits (7th conversion in regular sequence) */ +#define ADC_SQR2_SQ7_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR2_SQ7_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR2_SQ7_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR2_SQ7_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR2_SQ7_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR2_SQ8 ((uint32_t)0x000003E0) /*!< SQ8[4:0] bits (8th conversion in regular sequence) */ +#define ADC_SQR2_SQ8_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR2_SQ8_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR2_SQ8_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR2_SQ8_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR2_SQ8_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR2_SQ9 ((uint32_t)0x00007C00) /*!< SQ9[4:0] bits (9th conversion in regular sequence) */ +#define ADC_SQR2_SQ9_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR2_SQ9_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR2_SQ9_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR2_SQ9_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR2_SQ9_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ10 ((uint32_t)0x000F8000) /*!< SQ10[4:0] bits (10th conversion in regular sequence) */ +#define ADC_SQR2_SQ10_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR2_SQ10_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR2_SQ10_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR2_SQ10_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR2_SQ10_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ11 ((uint32_t)0x01F00000) /*!< SQ11[4:0] bits (11th conversion in regular sequence) */ +#define ADC_SQR2_SQ11_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR2_SQ11_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR2_SQ11_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR2_SQ11_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR2_SQ11_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ12 ((uint32_t)0x3E000000) /*!< SQ12[4:0] bits (12th conversion in regular sequence) */ +#define ADC_SQR2_SQ12_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR2_SQ12_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR2_SQ12_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR2_SQ12_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR2_SQ12_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR3 register *******************/ +#define ADC_SQR3_SQ1 ((uint32_t)0x0000001F) /*!< SQ1[4:0] bits (1st conversion in regular sequence) */ +#define ADC_SQR3_SQ1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR3_SQ1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR3_SQ1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR3_SQ1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR3_SQ1_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR3_SQ2 ((uint32_t)0x000003E0) /*!< SQ2[4:0] bits (2nd conversion in regular sequence) */ +#define ADC_SQR3_SQ2_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR3_SQ2_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR3_SQ2_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR3_SQ2_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR3_SQ2_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR3_SQ3 ((uint32_t)0x00007C00) /*!< SQ3[4:0] bits (3rd conversion in regular sequence) */ +#define ADC_SQR3_SQ3_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR3_SQ3_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR3_SQ3_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR3_SQ3_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR3_SQ3_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ4 ((uint32_t)0x000F8000) /*!< SQ4[4:0] bits (4th conversion in regular sequence) */ +#define ADC_SQR3_SQ4_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR3_SQ4_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR3_SQ4_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR3_SQ4_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR3_SQ4_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ5 ((uint32_t)0x01F00000) /*!< SQ5[4:0] bits (5th conversion in regular sequence) */ +#define ADC_SQR3_SQ5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR3_SQ5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR3_SQ5_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR3_SQ5_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR3_SQ5_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ6 ((uint32_t)0x3E000000) /*!< SQ6[4:0] bits (6th conversion in regular sequence) */ +#define ADC_SQR3_SQ6_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR3_SQ6_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR3_SQ6_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR3_SQ6_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR3_SQ6_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_JSQR register *******************/ +#define ADC_JSQR_JSQ1 ((uint32_t)0x0000001F) /*!< JSQ1[4:0] bits (1st conversion in injected sequence) */ +#define ADC_JSQR_JSQ1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_JSQR_JSQ1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_JSQR_JSQ1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_JSQR_JSQ1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_JSQR_JSQ1_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ2 ((uint32_t)0x000003E0) /*!< JSQ2[4:0] bits (2nd conversion in injected sequence) */ +#define ADC_JSQR_JSQ2_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_JSQR_JSQ2_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_JSQR_JSQ2_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_JSQR_JSQ2_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_JSQR_JSQ2_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ3 ((uint32_t)0x00007C00) /*!< JSQ3[4:0] bits (3rd conversion in injected sequence) */ +#define ADC_JSQR_JSQ3_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_JSQR_JSQ3_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_JSQR_JSQ3_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_JSQR_JSQ3_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_JSQR_JSQ3_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ4 ((uint32_t)0x000F8000) /*!< JSQ4[4:0] bits (4th conversion in injected sequence) */ +#define ADC_JSQR_JSQ4_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_JSQR_JSQ4_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_JSQR_JSQ4_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_JSQR_JSQ4_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_JSQR_JSQ4_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_JSQR_JL ((uint32_t)0x00300000) /*!< JL[1:0] bits (Injected Sequence length) */ +#define ADC_JSQR_JL_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_JSQR_JL_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +/******************* Bit definition for ADC_JDR1 register *******************/ +#define ADC_JDR1_JDATA ((uint16_t)0xFFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR2 register *******************/ +#define ADC_JDR2_JDATA ((uint16_t)0xFFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR3 register *******************/ +#define ADC_JDR3_JDATA ((uint16_t)0xFFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR4 register *******************/ +#define ADC_JDR4_JDATA ((uint16_t)0xFFFF) /*!< Injected data */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_DATA ((uint32_t)0x0000FFFF) /*!< Regular data */ +#define ADC_DR_ADC2DATA ((uint32_t)0xFFFF0000) /*!< ADC2 data */ + +/******************************************************************************/ +/* */ +/* Digital to Analog Converter */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1 ((uint32_t)0x00000001) /*!< DAC channel1 enable */ +#define DAC_CR_BOFF1 ((uint32_t)0x00000002) /*!< DAC channel1 output buffer disable */ +#define DAC_CR_TEN1 ((uint32_t)0x00000004) /*!< DAC channel1 Trigger enable */ + +#define DAC_CR_TSEL1 ((uint32_t)0x00000038) /*!< TSEL1[2:0] (DAC channel1 Trigger selection) */ +#define DAC_CR_TSEL1_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define DAC_CR_TSEL1_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define DAC_CR_TSEL1_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define DAC_CR_WAVE1 ((uint32_t)0x000000C0) /*!< WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable) */ +#define DAC_CR_WAVE1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define DAC_CR_WAVE1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define DAC_CR_MAMP1 ((uint32_t)0x00000F00) /*!< MAMP1[3:0] (DAC channel1 Mask/Amplitude selector) */ +#define DAC_CR_MAMP1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define DAC_CR_MAMP1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define DAC_CR_MAMP1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define DAC_CR_MAMP1_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define DAC_CR_DMAEN1 ((uint32_t)0x00001000) /*!< DAC channel1 DMA enable */ +#define DAC_CR_EN2 ((uint32_t)0x00010000) /*!< DAC channel2 enable */ +#define DAC_CR_BOFF2 ((uint32_t)0x00020000) /*!< DAC channel2 output buffer disable */ +#define DAC_CR_TEN2 ((uint32_t)0x00040000) /*!< DAC channel2 Trigger enable */ + +#define DAC_CR_TSEL2 ((uint32_t)0x00380000) /*!< TSEL2[2:0] (DAC channel2 Trigger selection) */ +#define DAC_CR_TSEL2_0 ((uint32_t)0x00080000) /*!< Bit 0 */ +#define DAC_CR_TSEL2_1 ((uint32_t)0x00100000) /*!< Bit 1 */ +#define DAC_CR_TSEL2_2 ((uint32_t)0x00200000) /*!< Bit 2 */ + +#define DAC_CR_WAVE2 ((uint32_t)0x00C00000) /*!< WAVE2[1:0] (DAC channel2 noise/triangle wave generation enable) */ +#define DAC_CR_WAVE2_0 ((uint32_t)0x00400000) /*!< Bit 0 */ +#define DAC_CR_WAVE2_1 ((uint32_t)0x00800000) /*!< Bit 1 */ + +#define DAC_CR_MAMP2 ((uint32_t)0x0F000000) /*!< MAMP2[3:0] (DAC channel2 Mask/Amplitude selector) */ +#define DAC_CR_MAMP2_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define DAC_CR_MAMP2_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define DAC_CR_MAMP2_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define DAC_CR_MAMP2_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define DAC_CR_DMAEN2 ((uint32_t)0x10000000) /*!< DAC channel2 DMA enabled */ + +/***************** Bit definition for DAC_SWTRIGR register ******************/ +#define DAC_SWTRIGR_SWTRIG1 ((uint8_t)0x01) /*!< DAC channel1 software trigger */ +#define DAC_SWTRIGR_SWTRIG2 ((uint8_t)0x02) /*!< DAC channel2 software trigger */ + +/***************** Bit definition for DAC_DHR12R1 register ******************/ +#define DAC_DHR12R1_DACC1DHR ((uint16_t)0x0FFF) /*!< DAC channel1 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12L1 register ******************/ +#define DAC_DHR12L1_DACC1DHR ((uint16_t)0xFFF0) /*!< DAC channel1 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8R1 register ******************/ +#define DAC_DHR8R1_DACC1DHR ((uint8_t)0xFF) /*!< DAC channel1 8-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12R2 register ******************/ +#define DAC_DHR12R2_DACC2DHR ((uint16_t)0x0FFF) /*!< DAC channel2 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12L2 register ******************/ +#define DAC_DHR12L2_DACC2DHR ((uint16_t)0xFFF0) /*!< DAC channel2 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8R2 register ******************/ +#define DAC_DHR8R2_DACC2DHR ((uint8_t)0xFF) /*!< DAC channel2 8-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12RD register ******************/ +#define DAC_DHR12RD_DACC1DHR ((uint32_t)0x00000FFF) /*!< DAC channel1 12-bit Right aligned data */ +#define DAC_DHR12RD_DACC2DHR ((uint32_t)0x0FFF0000) /*!< DAC channel2 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12LD register ******************/ +#define DAC_DHR12LD_DACC1DHR ((uint32_t)0x0000FFF0) /*!< DAC channel1 12-bit Left aligned data */ +#define DAC_DHR12LD_DACC2DHR ((uint32_t)0xFFF00000) /*!< DAC channel2 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8RD register ******************/ +#define DAC_DHR8RD_DACC1DHR ((uint16_t)0x00FF) /*!< DAC channel1 8-bit Right aligned data */ +#define DAC_DHR8RD_DACC2DHR ((uint16_t)0xFF00) /*!< DAC channel2 8-bit Right aligned data */ + +/******************* Bit definition for DAC_DOR1 register *******************/ +#define DAC_DOR1_DACC1DOR ((uint16_t)0x0FFF) /*!< DAC channel1 data output */ + +/******************* Bit definition for DAC_DOR2 register *******************/ +#define DAC_DOR2_DACC2DOR ((uint16_t)0x0FFF) /*!< DAC channel2 data output */ + +/******************** Bit definition for DAC_SR register ********************/ +#define DAC_SR_DMAUDR1 ((uint32_t)0x00002000) /*!< DAC channel1 DMA underrun flag */ +#define DAC_SR_DMAUDR2 ((uint32_t)0x20000000) /*!< DAC channel2 DMA underrun flag */ + +/******************************************************************************/ +/* */ +/* CEC */ +/* */ +/******************************************************************************/ +/******************** Bit definition for CEC_CFGR register ******************/ +#define CEC_CFGR_PE ((uint16_t)0x0001) /*!< Peripheral Enable */ +#define CEC_CFGR_IE ((uint16_t)0x0002) /*!< Interrupt Enable */ +#define CEC_CFGR_BTEM ((uint16_t)0x0004) /*!< Bit Timing Error Mode */ +#define CEC_CFGR_BPEM ((uint16_t)0x0008) /*!< Bit Period Error Mode */ + +/******************** Bit definition for CEC_OAR register ******************/ +#define CEC_OAR_OA ((uint16_t)0x000F) /*!< OA[3:0]: Own Address */ +#define CEC_OAR_OA_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define CEC_OAR_OA_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define CEC_OAR_OA_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define CEC_OAR_OA_3 ((uint16_t)0x0008) /*!< Bit 3 */ + +/******************** Bit definition for CEC_PRES register ******************/ +#define CEC_PRES_PRES ((uint16_t)0x3FFF) /*!< Prescaler Counter Value */ + +/******************** Bit definition for CEC_ESR register ******************/ +#define CEC_ESR_BTE ((uint16_t)0x0001) /*!< Bit Timing Error */ +#define CEC_ESR_BPE ((uint16_t)0x0002) /*!< Bit Period Error */ +#define CEC_ESR_RBTFE ((uint16_t)0x0004) /*!< Rx Block Transfer Finished Error */ +#define CEC_ESR_SBE ((uint16_t)0x0008) /*!< Start Bit Error */ +#define CEC_ESR_ACKE ((uint16_t)0x0010) /*!< Block Acknowledge Error */ +#define CEC_ESR_LINE ((uint16_t)0x0020) /*!< Line Error */ +#define CEC_ESR_TBTFE ((uint16_t)0x0040) /*!< Tx Block Transfer Finished Error */ + +/******************** Bit definition for CEC_CSR register ******************/ +#define CEC_CSR_TSOM ((uint16_t)0x0001) /*!< Tx Start Of Message */ +#define CEC_CSR_TEOM ((uint16_t)0x0002) /*!< Tx End Of Message */ +#define CEC_CSR_TERR ((uint16_t)0x0004) /*!< Tx Error */ +#define CEC_CSR_TBTRF ((uint16_t)0x0008) /*!< Tx Byte Transfer Request or Block Transfer Finished */ +#define CEC_CSR_RSOM ((uint16_t)0x0010) /*!< Rx Start Of Message */ +#define CEC_CSR_REOM ((uint16_t)0x0020) /*!< Rx End Of Message */ +#define CEC_CSR_RERR ((uint16_t)0x0040) /*!< Rx Error */ +#define CEC_CSR_RBTF ((uint16_t)0x0080) /*!< Rx Block Transfer Finished */ + +/******************** Bit definition for CEC_TXD register ******************/ +#define CEC_TXD_TXD ((uint16_t)0x00FF) /*!< Tx Data register */ + +/******************** Bit definition for CEC_RXD register ******************/ +#define CEC_RXD_RXD ((uint16_t)0x00FF) /*!< Rx Data register */ + +/******************************************************************************/ +/* */ +/* TIM */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for TIM_CR1 register ********************/ +#define TIM_CR1_CEN ((uint16_t)0x0001) /*!< Counter enable */ +#define TIM_CR1_UDIS ((uint16_t)0x0002) /*!< Update disable */ +#define TIM_CR1_URS ((uint16_t)0x0004) /*!< Update request source */ +#define TIM_CR1_OPM ((uint16_t)0x0008) /*!< One pulse mode */ +#define TIM_CR1_DIR ((uint16_t)0x0010) /*!< Direction */ + +#define TIM_CR1_CMS ((uint16_t)0x0060) /*!< CMS[1:0] bits (Center-aligned mode selection) */ +#define TIM_CR1_CMS_0 ((uint16_t)0x0020) /*!< Bit 0 */ +#define TIM_CR1_CMS_1 ((uint16_t)0x0040) /*!< Bit 1 */ + +#define TIM_CR1_ARPE ((uint16_t)0x0080) /*!< Auto-reload preload enable */ + +#define TIM_CR1_CKD ((uint16_t)0x0300) /*!< CKD[1:0] bits (clock division) */ +#define TIM_CR1_CKD_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_CR1_CKD_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +/******************* Bit definition for TIM_CR2 register ********************/ +#define TIM_CR2_CCPC ((uint16_t)0x0001) /*!< Capture/Compare Preloaded Control */ +#define TIM_CR2_CCUS ((uint16_t)0x0004) /*!< Capture/Compare Control Update Selection */ +#define TIM_CR2_CCDS ((uint16_t)0x0008) /*!< Capture/Compare DMA Selection */ + +#define TIM_CR2_MMS ((uint16_t)0x0070) /*!< MMS[2:0] bits (Master Mode Selection) */ +#define TIM_CR2_MMS_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CR2_MMS_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CR2_MMS_2 ((uint16_t)0x0040) /*!< Bit 2 */ + +#define TIM_CR2_TI1S ((uint16_t)0x0080) /*!< TI1 Selection */ +#define TIM_CR2_OIS1 ((uint16_t)0x0100) /*!< Output Idle state 1 (OC1 output) */ +#define TIM_CR2_OIS1N ((uint16_t)0x0200) /*!< Output Idle state 1 (OC1N output) */ +#define TIM_CR2_OIS2 ((uint16_t)0x0400) /*!< Output Idle state 2 (OC2 output) */ +#define TIM_CR2_OIS2N ((uint16_t)0x0800) /*!< Output Idle state 2 (OC2N output) */ +#define TIM_CR2_OIS3 ((uint16_t)0x1000) /*!< Output Idle state 3 (OC3 output) */ +#define TIM_CR2_OIS3N ((uint16_t)0x2000) /*!< Output Idle state 3 (OC3N output) */ +#define TIM_CR2_OIS4 ((uint16_t)0x4000) /*!< Output Idle state 4 (OC4 output) */ + +/******************* Bit definition for TIM_SMCR register *******************/ +#define TIM_SMCR_SMS ((uint16_t)0x0007) /*!< SMS[2:0] bits (Slave mode selection) */ +#define TIM_SMCR_SMS_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_SMCR_SMS_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define TIM_SMCR_SMS_2 ((uint16_t)0x0004) /*!< Bit 2 */ + +#define TIM_SMCR_TS ((uint16_t)0x0070) /*!< TS[2:0] bits (Trigger selection) */ +#define TIM_SMCR_TS_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_SMCR_TS_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_SMCR_TS_2 ((uint16_t)0x0040) /*!< Bit 2 */ + +#define TIM_SMCR_MSM ((uint16_t)0x0080) /*!< Master/slave mode */ + +#define TIM_SMCR_ETF ((uint16_t)0x0F00) /*!< ETF[3:0] bits (External trigger filter) */ +#define TIM_SMCR_ETF_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_SMCR_ETF_1 ((uint16_t)0x0200) /*!< Bit 1 */ +#define TIM_SMCR_ETF_2 ((uint16_t)0x0400) /*!< Bit 2 */ +#define TIM_SMCR_ETF_3 ((uint16_t)0x0800) /*!< Bit 3 */ + +#define TIM_SMCR_ETPS ((uint16_t)0x3000) /*!< ETPS[1:0] bits (External trigger prescaler) */ +#define TIM_SMCR_ETPS_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_SMCR_ETPS_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define TIM_SMCR_ECE ((uint16_t)0x4000) /*!< External clock enable */ +#define TIM_SMCR_ETP ((uint16_t)0x8000) /*!< External trigger polarity */ + +/******************* Bit definition for TIM_DIER register *******************/ +#define TIM_DIER_UIE ((uint16_t)0x0001) /*!< Update interrupt enable */ +#define TIM_DIER_CC1IE ((uint16_t)0x0002) /*!< Capture/Compare 1 interrupt enable */ +#define TIM_DIER_CC2IE ((uint16_t)0x0004) /*!< Capture/Compare 2 interrupt enable */ +#define TIM_DIER_CC3IE ((uint16_t)0x0008) /*!< Capture/Compare 3 interrupt enable */ +#define TIM_DIER_CC4IE ((uint16_t)0x0010) /*!< Capture/Compare 4 interrupt enable */ +#define TIM_DIER_COMIE ((uint16_t)0x0020) /*!< COM interrupt enable */ +#define TIM_DIER_TIE ((uint16_t)0x0040) /*!< Trigger interrupt enable */ +#define TIM_DIER_BIE ((uint16_t)0x0080) /*!< Break interrupt enable */ +#define TIM_DIER_UDE ((uint16_t)0x0100) /*!< Update DMA request enable */ +#define TIM_DIER_CC1DE ((uint16_t)0x0200) /*!< Capture/Compare 1 DMA request enable */ +#define TIM_DIER_CC2DE ((uint16_t)0x0400) /*!< Capture/Compare 2 DMA request enable */ +#define TIM_DIER_CC3DE ((uint16_t)0x0800) /*!< Capture/Compare 3 DMA request enable */ +#define TIM_DIER_CC4DE ((uint16_t)0x1000) /*!< Capture/Compare 4 DMA request enable */ +#define TIM_DIER_COMDE ((uint16_t)0x2000) /*!< COM DMA request enable */ +#define TIM_DIER_TDE ((uint16_t)0x4000) /*!< Trigger DMA request enable */ + +/******************** Bit definition for TIM_SR register ********************/ +#define TIM_SR_UIF ((uint16_t)0x0001) /*!< Update interrupt Flag */ +#define TIM_SR_CC1IF ((uint16_t)0x0002) /*!< Capture/Compare 1 interrupt Flag */ +#define TIM_SR_CC2IF ((uint16_t)0x0004) /*!< Capture/Compare 2 interrupt Flag */ +#define TIM_SR_CC3IF ((uint16_t)0x0008) /*!< Capture/Compare 3 interrupt Flag */ +#define TIM_SR_CC4IF ((uint16_t)0x0010) /*!< Capture/Compare 4 interrupt Flag */ +#define TIM_SR_COMIF ((uint16_t)0x0020) /*!< COM interrupt Flag */ +#define TIM_SR_TIF ((uint16_t)0x0040) /*!< Trigger interrupt Flag */ +#define TIM_SR_BIF ((uint16_t)0x0080) /*!< Break interrupt Flag */ +#define TIM_SR_CC1OF ((uint16_t)0x0200) /*!< Capture/Compare 1 Overcapture Flag */ +#define TIM_SR_CC2OF ((uint16_t)0x0400) /*!< Capture/Compare 2 Overcapture Flag */ +#define TIM_SR_CC3OF ((uint16_t)0x0800) /*!< Capture/Compare 3 Overcapture Flag */ +#define TIM_SR_CC4OF ((uint16_t)0x1000) /*!< Capture/Compare 4 Overcapture Flag */ + +/******************* Bit definition for TIM_EGR register ********************/ +#define TIM_EGR_UG ((uint8_t)0x01) /*!< Update Generation */ +#define TIM_EGR_CC1G ((uint8_t)0x02) /*!< Capture/Compare 1 Generation */ +#define TIM_EGR_CC2G ((uint8_t)0x04) /*!< Capture/Compare 2 Generation */ +#define TIM_EGR_CC3G ((uint8_t)0x08) /*!< Capture/Compare 3 Generation */ +#define TIM_EGR_CC4G ((uint8_t)0x10) /*!< Capture/Compare 4 Generation */ +#define TIM_EGR_COMG ((uint8_t)0x20) /*!< Capture/Compare Control Update Generation */ +#define TIM_EGR_TG ((uint8_t)0x40) /*!< Trigger Generation */ +#define TIM_EGR_BG ((uint8_t)0x80) /*!< Break Generation */ + +/****************** Bit definition for TIM_CCMR1 register *******************/ +#define TIM_CCMR1_CC1S ((uint16_t)0x0003) /*!< CC1S[1:0] bits (Capture/Compare 1 Selection) */ +#define TIM_CCMR1_CC1S_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_CCMR1_CC1S_1 ((uint16_t)0x0002) /*!< Bit 1 */ + +#define TIM_CCMR1_OC1FE ((uint16_t)0x0004) /*!< Output Compare 1 Fast enable */ +#define TIM_CCMR1_OC1PE ((uint16_t)0x0008) /*!< Output Compare 1 Preload enable */ + +#define TIM_CCMR1_OC1M ((uint16_t)0x0070) /*!< OC1M[2:0] bits (Output Compare 1 Mode) */ +#define TIM_CCMR1_OC1M_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CCMR1_OC1M_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CCMR1_OC1M_2 ((uint16_t)0x0040) /*!< Bit 2 */ + +#define TIM_CCMR1_OC1CE ((uint16_t)0x0080) /*!< Output Compare 1Clear Enable */ + +#define TIM_CCMR1_CC2S ((uint16_t)0x0300) /*!< CC2S[1:0] bits (Capture/Compare 2 Selection) */ +#define TIM_CCMR1_CC2S_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_CCMR1_CC2S_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define TIM_CCMR1_OC2FE ((uint16_t)0x0400) /*!< Output Compare 2 Fast enable */ +#define TIM_CCMR1_OC2PE ((uint16_t)0x0800) /*!< Output Compare 2 Preload enable */ + +#define TIM_CCMR1_OC2M ((uint16_t)0x7000) /*!< OC2M[2:0] bits (Output Compare 2 Mode) */ +#define TIM_CCMR1_OC2M_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_CCMR1_OC2M_1 ((uint16_t)0x2000) /*!< Bit 1 */ +#define TIM_CCMR1_OC2M_2 ((uint16_t)0x4000) /*!< Bit 2 */ + +#define TIM_CCMR1_OC2CE ((uint16_t)0x8000) /*!< Output Compare 2 Clear Enable */ + +/*----------------------------------------------------------------------------*/ + +#define TIM_CCMR1_IC1PSC ((uint16_t)0x000C) /*!< IC1PSC[1:0] bits (Input Capture 1 Prescaler) */ +#define TIM_CCMR1_IC1PSC_0 ((uint16_t)0x0004) /*!< Bit 0 */ +#define TIM_CCMR1_IC1PSC_1 ((uint16_t)0x0008) /*!< Bit 1 */ + +#define TIM_CCMR1_IC1F ((uint16_t)0x00F0) /*!< IC1F[3:0] bits (Input Capture 1 Filter) */ +#define TIM_CCMR1_IC1F_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CCMR1_IC1F_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CCMR1_IC1F_2 ((uint16_t)0x0040) /*!< Bit 2 */ +#define TIM_CCMR1_IC1F_3 ((uint16_t)0x0080) /*!< Bit 3 */ + +#define TIM_CCMR1_IC2PSC ((uint16_t)0x0C00) /*!< IC2PSC[1:0] bits (Input Capture 2 Prescaler) */ +#define TIM_CCMR1_IC2PSC_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define TIM_CCMR1_IC2PSC_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define TIM_CCMR1_IC2F ((uint16_t)0xF000) /*!< IC2F[3:0] bits (Input Capture 2 Filter) */ +#define TIM_CCMR1_IC2F_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_CCMR1_IC2F_1 ((uint16_t)0x2000) /*!< Bit 1 */ +#define TIM_CCMR1_IC2F_2 ((uint16_t)0x4000) /*!< Bit 2 */ +#define TIM_CCMR1_IC2F_3 ((uint16_t)0x8000) /*!< Bit 3 */ + +/****************** Bit definition for TIM_CCMR2 register *******************/ +#define TIM_CCMR2_CC3S ((uint16_t)0x0003) /*!< CC3S[1:0] bits (Capture/Compare 3 Selection) */ +#define TIM_CCMR2_CC3S_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_CCMR2_CC3S_1 ((uint16_t)0x0002) /*!< Bit 1 */ + +#define TIM_CCMR2_OC3FE ((uint16_t)0x0004) /*!< Output Compare 3 Fast enable */ +#define TIM_CCMR2_OC3PE ((uint16_t)0x0008) /*!< Output Compare 3 Preload enable */ + +#define TIM_CCMR2_OC3M ((uint16_t)0x0070) /*!< OC3M[2:0] bits (Output Compare 3 Mode) */ +#define TIM_CCMR2_OC3M_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CCMR2_OC3M_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CCMR2_OC3M_2 ((uint16_t)0x0040) /*!< Bit 2 */ + +#define TIM_CCMR2_OC3CE ((uint16_t)0x0080) /*!< Output Compare 3 Clear Enable */ + +#define TIM_CCMR2_CC4S ((uint16_t)0x0300) /*!< CC4S[1:0] bits (Capture/Compare 4 Selection) */ +#define TIM_CCMR2_CC4S_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_CCMR2_CC4S_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define TIM_CCMR2_OC4FE ((uint16_t)0x0400) /*!< Output Compare 4 Fast enable */ +#define TIM_CCMR2_OC4PE ((uint16_t)0x0800) /*!< Output Compare 4 Preload enable */ + +#define TIM_CCMR2_OC4M ((uint16_t)0x7000) /*!< OC4M[2:0] bits (Output Compare 4 Mode) */ +#define TIM_CCMR2_OC4M_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_CCMR2_OC4M_1 ((uint16_t)0x2000) /*!< Bit 1 */ +#define TIM_CCMR2_OC4M_2 ((uint16_t)0x4000) /*!< Bit 2 */ + +#define TIM_CCMR2_OC4CE ((uint16_t)0x8000) /*!< Output Compare 4 Clear Enable */ + +/*----------------------------------------------------------------------------*/ + +#define TIM_CCMR2_IC3PSC ((uint16_t)0x000C) /*!< IC3PSC[1:0] bits (Input Capture 3 Prescaler) */ +#define TIM_CCMR2_IC3PSC_0 ((uint16_t)0x0004) /*!< Bit 0 */ +#define TIM_CCMR2_IC3PSC_1 ((uint16_t)0x0008) /*!< Bit 1 */ + +#define TIM_CCMR2_IC3F ((uint16_t)0x00F0) /*!< IC3F[3:0] bits (Input Capture 3 Filter) */ +#define TIM_CCMR2_IC3F_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CCMR2_IC3F_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CCMR2_IC3F_2 ((uint16_t)0x0040) /*!< Bit 2 */ +#define TIM_CCMR2_IC3F_3 ((uint16_t)0x0080) /*!< Bit 3 */ + +#define TIM_CCMR2_IC4PSC ((uint16_t)0x0C00) /*!< IC4PSC[1:0] bits (Input Capture 4 Prescaler) */ +#define TIM_CCMR2_IC4PSC_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define TIM_CCMR2_IC4PSC_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define TIM_CCMR2_IC4F ((uint16_t)0xF000) /*!< IC4F[3:0] bits (Input Capture 4 Filter) */ +#define TIM_CCMR2_IC4F_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_CCMR2_IC4F_1 ((uint16_t)0x2000) /*!< Bit 1 */ +#define TIM_CCMR2_IC4F_2 ((uint16_t)0x4000) /*!< Bit 2 */ +#define TIM_CCMR2_IC4F_3 ((uint16_t)0x8000) /*!< Bit 3 */ + +/******************* Bit definition for TIM_CCER register *******************/ +#define TIM_CCER_CC1E ((uint16_t)0x0001) /*!< Capture/Compare 1 output enable */ +#define TIM_CCER_CC1P ((uint16_t)0x0002) /*!< Capture/Compare 1 output Polarity */ +#define TIM_CCER_CC1NE ((uint16_t)0x0004) /*!< Capture/Compare 1 Complementary output enable */ +#define TIM_CCER_CC1NP ((uint16_t)0x0008) /*!< Capture/Compare 1 Complementary output Polarity */ +#define TIM_CCER_CC2E ((uint16_t)0x0010) /*!< Capture/Compare 2 output enable */ +#define TIM_CCER_CC2P ((uint16_t)0x0020) /*!< Capture/Compare 2 output Polarity */ +#define TIM_CCER_CC2NE ((uint16_t)0x0040) /*!< Capture/Compare 2 Complementary output enable */ +#define TIM_CCER_CC2NP ((uint16_t)0x0080) /*!< Capture/Compare 2 Complementary output Polarity */ +#define TIM_CCER_CC3E ((uint16_t)0x0100) /*!< Capture/Compare 3 output enable */ +#define TIM_CCER_CC3P ((uint16_t)0x0200) /*!< Capture/Compare 3 output Polarity */ +#define TIM_CCER_CC3NE ((uint16_t)0x0400) /*!< Capture/Compare 3 Complementary output enable */ +#define TIM_CCER_CC3NP ((uint16_t)0x0800) /*!< Capture/Compare 3 Complementary output Polarity */ +#define TIM_CCER_CC4E ((uint16_t)0x1000) /*!< Capture/Compare 4 output enable */ +#define TIM_CCER_CC4P ((uint16_t)0x2000) /*!< Capture/Compare 4 output Polarity */ +#define TIM_CCER_CC4NP ((uint16_t)0x8000) /*!< Capture/Compare 4 Complementary output Polarity */ + +/******************* Bit definition for TIM_CNT register ********************/ +#define TIM_CNT_CNT ((uint16_t)0xFFFF) /*!< Counter Value */ + +/******************* Bit definition for TIM_PSC register ********************/ +#define TIM_PSC_PSC ((uint16_t)0xFFFF) /*!< Prescaler Value */ + +/******************* Bit definition for TIM_ARR register ********************/ +#define TIM_ARR_ARR ((uint16_t)0xFFFF) /*!< actual auto-reload Value */ + +/******************* Bit definition for TIM_RCR register ********************/ +#define TIM_RCR_REP ((uint8_t)0xFF) /*!< Repetition Counter Value */ + +/******************* Bit definition for TIM_CCR1 register *******************/ +#define TIM_CCR1_CCR1 ((uint16_t)0xFFFF) /*!< Capture/Compare 1 Value */ + +/******************* Bit definition for TIM_CCR2 register *******************/ +#define TIM_CCR2_CCR2 ((uint16_t)0xFFFF) /*!< Capture/Compare 2 Value */ + +/******************* Bit definition for TIM_CCR3 register *******************/ +#define TIM_CCR3_CCR3 ((uint16_t)0xFFFF) /*!< Capture/Compare 3 Value */ + +/******************* Bit definition for TIM_CCR4 register *******************/ +#define TIM_CCR4_CCR4 ((uint16_t)0xFFFF) /*!< Capture/Compare 4 Value */ + +/******************* Bit definition for TIM_BDTR register *******************/ +#define TIM_BDTR_DTG ((uint16_t)0x00FF) /*!< DTG[0:7] bits (Dead-Time Generator set-up) */ +#define TIM_BDTR_DTG_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_BDTR_DTG_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define TIM_BDTR_DTG_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define TIM_BDTR_DTG_3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define TIM_BDTR_DTG_4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define TIM_BDTR_DTG_5 ((uint16_t)0x0020) /*!< Bit 5 */ +#define TIM_BDTR_DTG_6 ((uint16_t)0x0040) /*!< Bit 6 */ +#define TIM_BDTR_DTG_7 ((uint16_t)0x0080) /*!< Bit 7 */ + +#define TIM_BDTR_LOCK ((uint16_t)0x0300) /*!< LOCK[1:0] bits (Lock Configuration) */ +#define TIM_BDTR_LOCK_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_BDTR_LOCK_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define TIM_BDTR_OSSI ((uint16_t)0x0400) /*!< Off-State Selection for Idle mode */ +#define TIM_BDTR_OSSR ((uint16_t)0x0800) /*!< Off-State Selection for Run mode */ +#define TIM_BDTR_BKE ((uint16_t)0x1000) /*!< Break enable */ +#define TIM_BDTR_BKP ((uint16_t)0x2000) /*!< Break Polarity */ +#define TIM_BDTR_AOE ((uint16_t)0x4000) /*!< Automatic Output enable */ +#define TIM_BDTR_MOE ((uint16_t)0x8000) /*!< Main Output enable */ + +/******************* Bit definition for TIM_DCR register ********************/ +#define TIM_DCR_DBA ((uint16_t)0x001F) /*!< DBA[4:0] bits (DMA Base Address) */ +#define TIM_DCR_DBA_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_DCR_DBA_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define TIM_DCR_DBA_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define TIM_DCR_DBA_3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define TIM_DCR_DBA_4 ((uint16_t)0x0010) /*!< Bit 4 */ + +#define TIM_DCR_DBL ((uint16_t)0x1F00) /*!< DBL[4:0] bits (DMA Burst Length) */ +#define TIM_DCR_DBL_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_DCR_DBL_1 ((uint16_t)0x0200) /*!< Bit 1 */ +#define TIM_DCR_DBL_2 ((uint16_t)0x0400) /*!< Bit 2 */ +#define TIM_DCR_DBL_3 ((uint16_t)0x0800) /*!< Bit 3 */ +#define TIM_DCR_DBL_4 ((uint16_t)0x1000) /*!< Bit 4 */ + +/******************* Bit definition for TIM_DMAR register *******************/ +#define TIM_DMAR_DMAB ((uint16_t)0xFFFF) /*!< DMA register for burst accesses */ + +/******************************************************************************/ +/* */ +/* Real-Time Clock */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for RTC_CRH register ********************/ +#define RTC_CRH_SECIE ((uint8_t)0x01) /*!< Second Interrupt Enable */ +#define RTC_CRH_ALRIE ((uint8_t)0x02) /*!< Alarm Interrupt Enable */ +#define RTC_CRH_OWIE ((uint8_t)0x04) /*!< OverfloW Interrupt Enable */ + +/******************* Bit definition for RTC_CRL register ********************/ +#define RTC_CRL_SECF ((uint8_t)0x01) /*!< Second Flag */ +#define RTC_CRL_ALRF ((uint8_t)0x02) /*!< Alarm Flag */ +#define RTC_CRL_OWF ((uint8_t)0x04) /*!< OverfloW Flag */ +#define RTC_CRL_RSF ((uint8_t)0x08) /*!< Registers Synchronized Flag */ +#define RTC_CRL_CNF ((uint8_t)0x10) /*!< Configuration Flag */ +#define RTC_CRL_RTOFF ((uint8_t)0x20) /*!< RTC operation OFF */ + +/******************* Bit definition for RTC_PRLH register *******************/ +#define RTC_PRLH_PRL ((uint16_t)0x000F) /*!< RTC Prescaler Reload Value High */ + +/******************* Bit definition for RTC_PRLL register *******************/ +#define RTC_PRLL_PRL ((uint16_t)0xFFFF) /*!< RTC Prescaler Reload Value Low */ + +/******************* Bit definition for RTC_DIVH register *******************/ +#define RTC_DIVH_RTC_DIV ((uint16_t)0x000F) /*!< RTC Clock Divider High */ + +/******************* Bit definition for RTC_DIVL register *******************/ +#define RTC_DIVL_RTC_DIV ((uint16_t)0xFFFF) /*!< RTC Clock Divider Low */ + +/******************* Bit definition for RTC_CNTH register *******************/ +#define RTC_CNTH_RTC_CNT ((uint16_t)0xFFFF) /*!< RTC Counter High */ + +/******************* Bit definition for RTC_CNTL register *******************/ +#define RTC_CNTL_RTC_CNT ((uint16_t)0xFFFF) /*!< RTC Counter Low */ + +/******************* Bit definition for RTC_ALRH register *******************/ +#define RTC_ALRH_RTC_ALR ((uint16_t)0xFFFF) /*!< RTC Alarm High */ + +/******************* Bit definition for RTC_ALRL register *******************/ +#define RTC_ALRL_RTC_ALR ((uint16_t)0xFFFF) /*!< RTC Alarm Low */ + +/******************************************************************************/ +/* */ +/* Independent WATCHDOG */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for IWDG_KR register ********************/ +#define IWDG_KR_KEY ((uint16_t)0xFFFF) /*!< Key value (write only, read 0000h) */ + +/******************* Bit definition for IWDG_PR register ********************/ +#define IWDG_PR_PR ((uint8_t)0x07) /*!< PR[2:0] (Prescaler divider) */ +#define IWDG_PR_PR_0 ((uint8_t)0x01) /*!< Bit 0 */ +#define IWDG_PR_PR_1 ((uint8_t)0x02) /*!< Bit 1 */ +#define IWDG_PR_PR_2 ((uint8_t)0x04) /*!< Bit 2 */ + +/******************* Bit definition for IWDG_RLR register *******************/ +#define IWDG_RLR_RL ((uint16_t)0x0FFF) /*!< Watchdog counter reload value */ + +/******************* Bit definition for IWDG_SR register ********************/ +#define IWDG_SR_PVU ((uint8_t)0x01) /*!< Watchdog prescaler value update */ +#define IWDG_SR_RVU ((uint8_t)0x02) /*!< Watchdog counter reload value update */ + +/******************************************************************************/ +/* */ +/* Window WATCHDOG */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for WWDG_CR register ********************/ +#define WWDG_CR_T ((uint8_t)0x7F) /*!< T[6:0] bits (7-Bit counter (MSB to LSB)) */ +#define WWDG_CR_T0 ((uint8_t)0x01) /*!< Bit 0 */ +#define WWDG_CR_T1 ((uint8_t)0x02) /*!< Bit 1 */ +#define WWDG_CR_T2 ((uint8_t)0x04) /*!< Bit 2 */ +#define WWDG_CR_T3 ((uint8_t)0x08) /*!< Bit 3 */ +#define WWDG_CR_T4 ((uint8_t)0x10) /*!< Bit 4 */ +#define WWDG_CR_T5 ((uint8_t)0x20) /*!< Bit 5 */ +#define WWDG_CR_T6 ((uint8_t)0x40) /*!< Bit 6 */ + +#define WWDG_CR_WDGA ((uint8_t)0x80) /*!< Activation bit */ + +/******************* Bit definition for WWDG_CFR register *******************/ +#define WWDG_CFR_W ((uint16_t)0x007F) /*!< W[6:0] bits (7-bit window value) */ +#define WWDG_CFR_W0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define WWDG_CFR_W1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define WWDG_CFR_W2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define WWDG_CFR_W3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define WWDG_CFR_W4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define WWDG_CFR_W5 ((uint16_t)0x0020) /*!< Bit 5 */ +#define WWDG_CFR_W6 ((uint16_t)0x0040) /*!< Bit 6 */ + +#define WWDG_CFR_WDGTB ((uint16_t)0x0180) /*!< WDGTB[1:0] bits (Timer Base) */ +#define WWDG_CFR_WDGTB0 ((uint16_t)0x0080) /*!< Bit 0 */ +#define WWDG_CFR_WDGTB1 ((uint16_t)0x0100) /*!< Bit 1 */ + +#define WWDG_CFR_EWI ((uint16_t)0x0200) /*!< Early Wakeup Interrupt */ + +/******************* Bit definition for WWDG_SR register ********************/ +#define WWDG_SR_EWIF ((uint8_t)0x01) /*!< Early Wakeup Interrupt Flag */ + +/******************************************************************************/ +/* */ +/* Flexible Static Memory Controller */ +/* */ +/******************************************************************************/ + +/****************** Bit definition for FSMC_BCR1 register *******************/ +#define FSMC_BCR1_MBKEN ((uint32_t)0x00000001) /*!< Memory bank enable bit */ +#define FSMC_BCR1_MUXEN ((uint32_t)0x00000002) /*!< Address/data multiplexing enable bit */ + +#define FSMC_BCR1_MTYP ((uint32_t)0x0000000C) /*!< MTYP[1:0] bits (Memory type) */ +#define FSMC_BCR1_MTYP_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define FSMC_BCR1_MTYP_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define FSMC_BCR1_MWID ((uint32_t)0x00000030) /*!< MWID[1:0] bits (Memory data bus width) */ +#define FSMC_BCR1_MWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BCR1_MWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_BCR1_FACCEN ((uint32_t)0x00000040) /*!< Flash access enable */ +#define FSMC_BCR1_BURSTEN ((uint32_t)0x00000100) /*!< Burst enable bit */ +#define FSMC_BCR1_WAITPOL ((uint32_t)0x00000200) /*!< Wait signal polarity bit */ +#define FSMC_BCR1_WRAPMOD ((uint32_t)0x00000400) /*!< Wrapped burst mode support */ +#define FSMC_BCR1_WAITCFG ((uint32_t)0x00000800) /*!< Wait timing configuration */ +#define FSMC_BCR1_WREN ((uint32_t)0x00001000) /*!< Write enable bit */ +#define FSMC_BCR1_WAITEN ((uint32_t)0x00002000) /*!< Wait enable bit */ +#define FSMC_BCR1_EXTMOD ((uint32_t)0x00004000) /*!< Extended mode enable */ +#define FSMC_BCR1_ASYNCWAIT ((uint32_t)0x00008000) /*!< Asynchronous wait */ +#define FSMC_BCR1_CBURSTRW ((uint32_t)0x00080000) /*!< Write burst enable */ + +/****************** Bit definition for FSMC_BCR2 register *******************/ +#define FSMC_BCR2_MBKEN ((uint32_t)0x00000001) /*!< Memory bank enable bit */ +#define FSMC_BCR2_MUXEN ((uint32_t)0x00000002) /*!< Address/data multiplexing enable bit */ + +#define FSMC_BCR2_MTYP ((uint32_t)0x0000000C) /*!< MTYP[1:0] bits (Memory type) */ +#define FSMC_BCR2_MTYP_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define FSMC_BCR2_MTYP_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define FSMC_BCR2_MWID ((uint32_t)0x00000030) /*!< MWID[1:0] bits (Memory data bus width) */ +#define FSMC_BCR2_MWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BCR2_MWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_BCR2_FACCEN ((uint32_t)0x00000040) /*!< Flash access enable */ +#define FSMC_BCR2_BURSTEN ((uint32_t)0x00000100) /*!< Burst enable bit */ +#define FSMC_BCR2_WAITPOL ((uint32_t)0x00000200) /*!< Wait signal polarity bit */ +#define FSMC_BCR2_WRAPMOD ((uint32_t)0x00000400) /*!< Wrapped burst mode support */ +#define FSMC_BCR2_WAITCFG ((uint32_t)0x00000800) /*!< Wait timing configuration */ +#define FSMC_BCR2_WREN ((uint32_t)0x00001000) /*!< Write enable bit */ +#define FSMC_BCR2_WAITEN ((uint32_t)0x00002000) /*!< Wait enable bit */ +#define FSMC_BCR2_EXTMOD ((uint32_t)0x00004000) /*!< Extended mode enable */ +#define FSMC_BCR2_ASYNCWAIT ((uint32_t)0x00008000) /*!< Asynchronous wait */ +#define FSMC_BCR2_CBURSTRW ((uint32_t)0x00080000) /*!< Write burst enable */ + +/****************** Bit definition for FSMC_BCR3 register *******************/ +#define FSMC_BCR3_MBKEN ((uint32_t)0x00000001) /*!< Memory bank enable bit */ +#define FSMC_BCR3_MUXEN ((uint32_t)0x00000002) /*!< Address/data multiplexing enable bit */ + +#define FSMC_BCR3_MTYP ((uint32_t)0x0000000C) /*!< MTYP[1:0] bits (Memory type) */ +#define FSMC_BCR3_MTYP_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define FSMC_BCR3_MTYP_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define FSMC_BCR3_MWID ((uint32_t)0x00000030) /*!< MWID[1:0] bits (Memory data bus width) */ +#define FSMC_BCR3_MWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BCR3_MWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_BCR3_FACCEN ((uint32_t)0x00000040) /*!< Flash access enable */ +#define FSMC_BCR3_BURSTEN ((uint32_t)0x00000100) /*!< Burst enable bit */ +#define FSMC_BCR3_WAITPOL ((uint32_t)0x00000200) /*!< Wait signal polarity bit. */ +#define FSMC_BCR3_WRAPMOD ((uint32_t)0x00000400) /*!< Wrapped burst mode support */ +#define FSMC_BCR3_WAITCFG ((uint32_t)0x00000800) /*!< Wait timing configuration */ +#define FSMC_BCR3_WREN ((uint32_t)0x00001000) /*!< Write enable bit */ +#define FSMC_BCR3_WAITEN ((uint32_t)0x00002000) /*!< Wait enable bit */ +#define FSMC_BCR3_EXTMOD ((uint32_t)0x00004000) /*!< Extended mode enable */ +#define FSMC_BCR3_ASYNCWAIT ((uint32_t)0x00008000) /*!< Asynchronous wait */ +#define FSMC_BCR3_CBURSTRW ((uint32_t)0x00080000) /*!< Write burst enable */ + +/****************** Bit definition for FSMC_BCR4 register *******************/ +#define FSMC_BCR4_MBKEN ((uint32_t)0x00000001) /*!< Memory bank enable bit */ +#define FSMC_BCR4_MUXEN ((uint32_t)0x00000002) /*!< Address/data multiplexing enable bit */ + +#define FSMC_BCR4_MTYP ((uint32_t)0x0000000C) /*!< MTYP[1:0] bits (Memory type) */ +#define FSMC_BCR4_MTYP_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define FSMC_BCR4_MTYP_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define FSMC_BCR4_MWID ((uint32_t)0x00000030) /*!< MWID[1:0] bits (Memory data bus width) */ +#define FSMC_BCR4_MWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BCR4_MWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_BCR4_FACCEN ((uint32_t)0x00000040) /*!< Flash access enable */ +#define FSMC_BCR4_BURSTEN ((uint32_t)0x00000100) /*!< Burst enable bit */ +#define FSMC_BCR4_WAITPOL ((uint32_t)0x00000200) /*!< Wait signal polarity bit */ +#define FSMC_BCR4_WRAPMOD ((uint32_t)0x00000400) /*!< Wrapped burst mode support */ +#define FSMC_BCR4_WAITCFG ((uint32_t)0x00000800) /*!< Wait timing configuration */ +#define FSMC_BCR4_WREN ((uint32_t)0x00001000) /*!< Write enable bit */ +#define FSMC_BCR4_WAITEN ((uint32_t)0x00002000) /*!< Wait enable bit */ +#define FSMC_BCR4_EXTMOD ((uint32_t)0x00004000) /*!< Extended mode enable */ +#define FSMC_BCR4_ASYNCWAIT ((uint32_t)0x00008000) /*!< Asynchronous wait */ +#define FSMC_BCR4_CBURSTRW ((uint32_t)0x00080000) /*!< Write burst enable */ + +/****************** Bit definition for FSMC_BTR1 register ******************/ +#define FSMC_BTR1_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BTR1_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BTR1_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BTR1_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BTR1_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BTR1_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BTR1_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BTR1_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BTR1_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BTR1_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BTR1_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BTR1_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BTR1_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BTR1_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BTR1_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BTR1_BUSTURN ((uint32_t)0x000F0000) /*!< BUSTURN[3:0] bits (Bus turnaround phase duration) */ +#define FSMC_BTR1_BUSTURN_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_BTR1_BUSTURN_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_BTR1_BUSTURN_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_BTR1_BUSTURN_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define FSMC_BTR1_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BTR1_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BTR1_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BTR1_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BTR1_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BTR1_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BTR1_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BTR1_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BTR1_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BTR1_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BTR1_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BTR1_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BTR1_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BTR2 register *******************/ +#define FSMC_BTR2_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BTR2_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BTR2_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BTR2_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BTR2_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BTR2_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BTR2_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BTR2_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BTR2_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BTR2_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BTR2_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BTR2_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BTR2_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BTR2_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BTR2_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BTR2_BUSTURN ((uint32_t)0x000F0000) /*!< BUSTURN[3:0] bits (Bus turnaround phase duration) */ +#define FSMC_BTR2_BUSTURN_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_BTR2_BUSTURN_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_BTR2_BUSTURN_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_BTR2_BUSTURN_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define FSMC_BTR2_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BTR2_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BTR2_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BTR2_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BTR2_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BTR2_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BTR2_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BTR2_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BTR2_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BTR2_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BTR2_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BTR2_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BTR2_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/******************* Bit definition for FSMC_BTR3 register *******************/ +#define FSMC_BTR3_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BTR3_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BTR3_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BTR3_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BTR3_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BTR3_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BTR3_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BTR3_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BTR3_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BTR3_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BTR3_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BTR3_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BTR3_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BTR3_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BTR3_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BTR3_BUSTURN ((uint32_t)0x000F0000) /*!< BUSTURN[3:0] bits (Bus turnaround phase duration) */ +#define FSMC_BTR3_BUSTURN_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_BTR3_BUSTURN_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_BTR3_BUSTURN_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_BTR3_BUSTURN_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define FSMC_BTR3_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BTR3_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BTR3_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BTR3_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BTR3_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BTR3_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BTR3_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BTR3_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BTR3_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BTR3_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BTR3_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BTR3_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BTR3_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BTR4 register *******************/ +#define FSMC_BTR4_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BTR4_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BTR4_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BTR4_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BTR4_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BTR4_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BTR4_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BTR4_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BTR4_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BTR4_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BTR4_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BTR4_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BTR4_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BTR4_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BTR4_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BTR4_BUSTURN ((uint32_t)0x000F0000) /*!< BUSTURN[3:0] bits (Bus turnaround phase duration) */ +#define FSMC_BTR4_BUSTURN_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_BTR4_BUSTURN_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_BTR4_BUSTURN_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_BTR4_BUSTURN_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define FSMC_BTR4_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BTR4_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BTR4_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BTR4_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BTR4_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BTR4_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BTR4_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BTR4_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BTR4_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BTR4_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BTR4_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BTR4_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BTR4_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BWTR1 register ******************/ +#define FSMC_BWTR1_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BWTR1_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BWTR1_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BWTR1_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BWTR1_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BWTR1_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BWTR1_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BWTR1_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BWTR1_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BWTR1_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BWTR1_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BWTR1_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BWTR1_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BWTR1_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BWTR1_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BWTR1_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BWTR1_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BWTR1_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BWTR1_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BWTR1_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BWTR1_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BWTR1_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BWTR1_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BWTR1_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BWTR1_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BWTR1_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BWTR1_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BWTR1_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BWTR2 register ******************/ +#define FSMC_BWTR2_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BWTR2_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BWTR2_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BWTR2_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BWTR2_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BWTR2_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BWTR2_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BWTR2_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BWTR2_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BWTR2_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BWTR2_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BWTR2_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BWTR2_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BWTR2_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BWTR2_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BWTR2_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BWTR2_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BWTR2_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1*/ +#define FSMC_BWTR2_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BWTR2_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BWTR2_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BWTR2_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BWTR2_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BWTR2_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BWTR2_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BWTR2_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BWTR2_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BWTR2_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BWTR3 register ******************/ +#define FSMC_BWTR3_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BWTR3_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BWTR3_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BWTR3_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BWTR3_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BWTR3_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BWTR3_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BWTR3_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BWTR3_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BWTR3_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BWTR3_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BWTR3_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BWTR3_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BWTR3_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BWTR3_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BWTR3_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BWTR3_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BWTR3_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BWTR3_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BWTR3_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BWTR3_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BWTR3_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BWTR3_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BWTR3_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BWTR3_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BWTR3_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BWTR3_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BWTR3_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BWTR4 register ******************/ +#define FSMC_BWTR4_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BWTR4_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BWTR4_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BWTR4_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BWTR4_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BWTR4_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BWTR4_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BWTR4_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BWTR4_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BWTR4_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BWTR4_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BWTR4_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BWTR4_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BWTR4_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BWTR4_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BWTR4_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BWTR4_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BWTR4_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BWTR4_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BWTR4_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BWTR4_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BWTR4_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BWTR4_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BWTR4_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BWTR4_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BWTR4_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BWTR4_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BWTR4_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_PCR2 register *******************/ +#define FSMC_PCR2_PWAITEN ((uint32_t)0x00000002) /*!< Wait feature enable bit */ +#define FSMC_PCR2_PBKEN ((uint32_t)0x00000004) /*!< PC Card/NAND Flash memory bank enable bit */ +#define FSMC_PCR2_PTYP ((uint32_t)0x00000008) /*!< Memory type */ + +#define FSMC_PCR2_PWID ((uint32_t)0x00000030) /*!< PWID[1:0] bits (NAND Flash databus width) */ +#define FSMC_PCR2_PWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_PCR2_PWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_PCR2_ECCEN ((uint32_t)0x00000040) /*!< ECC computation logic enable bit */ + +#define FSMC_PCR2_TCLR ((uint32_t)0x00001E00) /*!< TCLR[3:0] bits (CLE to RE delay) */ +#define FSMC_PCR2_TCLR_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define FSMC_PCR2_TCLR_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define FSMC_PCR2_TCLR_2 ((uint32_t)0x00000800) /*!< Bit 2 */ +#define FSMC_PCR2_TCLR_3 ((uint32_t)0x00001000) /*!< Bit 3 */ + +#define FSMC_PCR2_TAR ((uint32_t)0x0001E000) /*!< TAR[3:0] bits (ALE to RE delay) */ +#define FSMC_PCR2_TAR_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define FSMC_PCR2_TAR_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define FSMC_PCR2_TAR_2 ((uint32_t)0x00008000) /*!< Bit 2 */ +#define FSMC_PCR2_TAR_3 ((uint32_t)0x00010000) /*!< Bit 3 */ + +#define FSMC_PCR2_ECCPS ((uint32_t)0x000E0000) /*!< ECCPS[1:0] bits (ECC page size) */ +#define FSMC_PCR2_ECCPS_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define FSMC_PCR2_ECCPS_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define FSMC_PCR2_ECCPS_2 ((uint32_t)0x00080000) /*!< Bit 2 */ + +/****************** Bit definition for FSMC_PCR3 register *******************/ +#define FSMC_PCR3_PWAITEN ((uint32_t)0x00000002) /*!< Wait feature enable bit */ +#define FSMC_PCR3_PBKEN ((uint32_t)0x00000004) /*!< PC Card/NAND Flash memory bank enable bit */ +#define FSMC_PCR3_PTYP ((uint32_t)0x00000008) /*!< Memory type */ + +#define FSMC_PCR3_PWID ((uint32_t)0x00000030) /*!< PWID[1:0] bits (NAND Flash databus width) */ +#define FSMC_PCR3_PWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_PCR3_PWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_PCR3_ECCEN ((uint32_t)0x00000040) /*!< ECC computation logic enable bit */ + +#define FSMC_PCR3_TCLR ((uint32_t)0x00001E00) /*!< TCLR[3:0] bits (CLE to RE delay) */ +#define FSMC_PCR3_TCLR_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define FSMC_PCR3_TCLR_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define FSMC_PCR3_TCLR_2 ((uint32_t)0x00000800) /*!< Bit 2 */ +#define FSMC_PCR3_TCLR_3 ((uint32_t)0x00001000) /*!< Bit 3 */ + +#define FSMC_PCR3_TAR ((uint32_t)0x0001E000) /*!< TAR[3:0] bits (ALE to RE delay) */ +#define FSMC_PCR3_TAR_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define FSMC_PCR3_TAR_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define FSMC_PCR3_TAR_2 ((uint32_t)0x00008000) /*!< Bit 2 */ +#define FSMC_PCR3_TAR_3 ((uint32_t)0x00010000) /*!< Bit 3 */ + +#define FSMC_PCR3_ECCPS ((uint32_t)0x000E0000) /*!< ECCPS[2:0] bits (ECC page size) */ +#define FSMC_PCR3_ECCPS_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define FSMC_PCR3_ECCPS_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define FSMC_PCR3_ECCPS_2 ((uint32_t)0x00080000) /*!< Bit 2 */ + +/****************** Bit definition for FSMC_PCR4 register *******************/ +#define FSMC_PCR4_PWAITEN ((uint32_t)0x00000002) /*!< Wait feature enable bit */ +#define FSMC_PCR4_PBKEN ((uint32_t)0x00000004) /*!< PC Card/NAND Flash memory bank enable bit */ +#define FSMC_PCR4_PTYP ((uint32_t)0x00000008) /*!< Memory type */ + +#define FSMC_PCR4_PWID ((uint32_t)0x00000030) /*!< PWID[1:0] bits (NAND Flash databus width) */ +#define FSMC_PCR4_PWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_PCR4_PWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_PCR4_ECCEN ((uint32_t)0x00000040) /*!< ECC computation logic enable bit */ + +#define FSMC_PCR4_TCLR ((uint32_t)0x00001E00) /*!< TCLR[3:0] bits (CLE to RE delay) */ +#define FSMC_PCR4_TCLR_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define FSMC_PCR4_TCLR_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define FSMC_PCR4_TCLR_2 ((uint32_t)0x00000800) /*!< Bit 2 */ +#define FSMC_PCR4_TCLR_3 ((uint32_t)0x00001000) /*!< Bit 3 */ + +#define FSMC_PCR4_TAR ((uint32_t)0x0001E000) /*!< TAR[3:0] bits (ALE to RE delay) */ +#define FSMC_PCR4_TAR_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define FSMC_PCR4_TAR_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define FSMC_PCR4_TAR_2 ((uint32_t)0x00008000) /*!< Bit 2 */ +#define FSMC_PCR4_TAR_3 ((uint32_t)0x00010000) /*!< Bit 3 */ + +#define FSMC_PCR4_ECCPS ((uint32_t)0x000E0000) /*!< ECCPS[2:0] bits (ECC page size) */ +#define FSMC_PCR4_ECCPS_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define FSMC_PCR4_ECCPS_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define FSMC_PCR4_ECCPS_2 ((uint32_t)0x00080000) /*!< Bit 2 */ + +/******************* Bit definition for FSMC_SR2 register *******************/ +#define FSMC_SR2_IRS ((uint8_t)0x01) /*!< Interrupt Rising Edge status */ +#define FSMC_SR2_ILS ((uint8_t)0x02) /*!< Interrupt Level status */ +#define FSMC_SR2_IFS ((uint8_t)0x04) /*!< Interrupt Falling Edge status */ +#define FSMC_SR2_IREN ((uint8_t)0x08) /*!< Interrupt Rising Edge detection Enable bit */ +#define FSMC_SR2_ILEN ((uint8_t)0x10) /*!< Interrupt Level detection Enable bit */ +#define FSMC_SR2_IFEN ((uint8_t)0x20) /*!< Interrupt Falling Edge detection Enable bit */ +#define FSMC_SR2_FEMPT ((uint8_t)0x40) /*!< FIFO empty */ + +/******************* Bit definition for FSMC_SR3 register *******************/ +#define FSMC_SR3_IRS ((uint8_t)0x01) /*!< Interrupt Rising Edge status */ +#define FSMC_SR3_ILS ((uint8_t)0x02) /*!< Interrupt Level status */ +#define FSMC_SR3_IFS ((uint8_t)0x04) /*!< Interrupt Falling Edge status */ +#define FSMC_SR3_IREN ((uint8_t)0x08) /*!< Interrupt Rising Edge detection Enable bit */ +#define FSMC_SR3_ILEN ((uint8_t)0x10) /*!< Interrupt Level detection Enable bit */ +#define FSMC_SR3_IFEN ((uint8_t)0x20) /*!< Interrupt Falling Edge detection Enable bit */ +#define FSMC_SR3_FEMPT ((uint8_t)0x40) /*!< FIFO empty */ + +/******************* Bit definition for FSMC_SR4 register *******************/ +#define FSMC_SR4_IRS ((uint8_t)0x01) /*!< Interrupt Rising Edge status */ +#define FSMC_SR4_ILS ((uint8_t)0x02) /*!< Interrupt Level status */ +#define FSMC_SR4_IFS ((uint8_t)0x04) /*!< Interrupt Falling Edge status */ +#define FSMC_SR4_IREN ((uint8_t)0x08) /*!< Interrupt Rising Edge detection Enable bit */ +#define FSMC_SR4_ILEN ((uint8_t)0x10) /*!< Interrupt Level detection Enable bit */ +#define FSMC_SR4_IFEN ((uint8_t)0x20) /*!< Interrupt Falling Edge detection Enable bit */ +#define FSMC_SR4_FEMPT ((uint8_t)0x40) /*!< FIFO empty */ + +/****************** Bit definition for FSMC_PMEM2 register ******************/ +#define FSMC_PMEM2_MEMSET2 ((uint32_t)0x000000FF) /*!< MEMSET2[7:0] bits (Common memory 2 setup time) */ +#define FSMC_PMEM2_MEMSET2_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PMEM2_MEMSET2_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PMEM2_MEMSET2_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PMEM2_MEMSET2_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PMEM2_MEMSET2_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PMEM2_MEMSET2_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PMEM2_MEMSET2_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PMEM2_MEMSET2_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PMEM2_MEMWAIT2 ((uint32_t)0x0000FF00) /*!< MEMWAIT2[7:0] bits (Common memory 2 wait time) */ +#define FSMC_PMEM2_MEMWAIT2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PMEM2_MEMWAIT2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PMEM2_MEMWAIT2_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PMEM2_MEMWAIT2_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PMEM2_MEMWAIT2_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PMEM2_MEMWAIT2_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PMEM2_MEMWAIT2_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PMEM2_MEMWAIT2_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PMEM2_MEMHOLD2 ((uint32_t)0x00FF0000) /*!< MEMHOLD2[7:0] bits (Common memory 2 hold time) */ +#define FSMC_PMEM2_MEMHOLD2_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PMEM2_MEMHOLD2_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PMEM2_MEMHOLD2_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PMEM2_MEMHOLD2_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PMEM2_MEMHOLD2_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PMEM2_MEMHOLD2_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PMEM2_MEMHOLD2_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PMEM2_MEMHOLD2_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PMEM2_MEMHIZ2 ((uint32_t)0xFF000000) /*!< MEMHIZ2[7:0] bits (Common memory 2 databus HiZ time) */ +#define FSMC_PMEM2_MEMHIZ2_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PMEM2_MEMHIZ2_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PMEM2_MEMHIZ2_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PMEM2_MEMHIZ2_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PMEM2_MEMHIZ2_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PMEM2_MEMHIZ2_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PMEM2_MEMHIZ2_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PMEM2_MEMHIZ2_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PMEM3 register ******************/ +#define FSMC_PMEM3_MEMSET3 ((uint32_t)0x000000FF) /*!< MEMSET3[7:0] bits (Common memory 3 setup time) */ +#define FSMC_PMEM3_MEMSET3_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PMEM3_MEMSET3_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PMEM3_MEMSET3_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PMEM3_MEMSET3_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PMEM3_MEMSET3_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PMEM3_MEMSET3_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PMEM3_MEMSET3_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PMEM3_MEMSET3_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PMEM3_MEMWAIT3 ((uint32_t)0x0000FF00) /*!< MEMWAIT3[7:0] bits (Common memory 3 wait time) */ +#define FSMC_PMEM3_MEMWAIT3_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PMEM3_MEMWAIT3_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PMEM3_MEMWAIT3_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PMEM3_MEMWAIT3_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PMEM3_MEMWAIT3_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PMEM3_MEMWAIT3_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PMEM3_MEMWAIT3_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PMEM3_MEMWAIT3_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PMEM3_MEMHOLD3 ((uint32_t)0x00FF0000) /*!< MEMHOLD3[7:0] bits (Common memory 3 hold time) */ +#define FSMC_PMEM3_MEMHOLD3_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PMEM3_MEMHOLD3_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PMEM3_MEMHOLD3_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PMEM3_MEMHOLD3_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PMEM3_MEMHOLD3_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PMEM3_MEMHOLD3_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PMEM3_MEMHOLD3_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PMEM3_MEMHOLD3_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PMEM3_MEMHIZ3 ((uint32_t)0xFF000000) /*!< MEMHIZ3[7:0] bits (Common memory 3 databus HiZ time) */ +#define FSMC_PMEM3_MEMHIZ3_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PMEM3_MEMHIZ3_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PMEM3_MEMHIZ3_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PMEM3_MEMHIZ3_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PMEM3_MEMHIZ3_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PMEM3_MEMHIZ3_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PMEM3_MEMHIZ3_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PMEM3_MEMHIZ3_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PMEM4 register ******************/ +#define FSMC_PMEM4_MEMSET4 ((uint32_t)0x000000FF) /*!< MEMSET4[7:0] bits (Common memory 4 setup time) */ +#define FSMC_PMEM4_MEMSET4_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PMEM4_MEMSET4_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PMEM4_MEMSET4_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PMEM4_MEMSET4_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PMEM4_MEMSET4_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PMEM4_MEMSET4_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PMEM4_MEMSET4_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PMEM4_MEMSET4_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PMEM4_MEMWAIT4 ((uint32_t)0x0000FF00) /*!< MEMWAIT4[7:0] bits (Common memory 4 wait time) */ +#define FSMC_PMEM4_MEMWAIT4_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PMEM4_MEMWAIT4_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PMEM4_MEMWAIT4_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PMEM4_MEMWAIT4_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PMEM4_MEMWAIT4_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PMEM4_MEMWAIT4_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PMEM4_MEMWAIT4_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PMEM4_MEMWAIT4_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PMEM4_MEMHOLD4 ((uint32_t)0x00FF0000) /*!< MEMHOLD4[7:0] bits (Common memory 4 hold time) */ +#define FSMC_PMEM4_MEMHOLD4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PMEM4_MEMHOLD4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PMEM4_MEMHOLD4_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PMEM4_MEMHOLD4_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PMEM4_MEMHOLD4_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PMEM4_MEMHOLD4_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PMEM4_MEMHOLD4_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PMEM4_MEMHOLD4_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PMEM4_MEMHIZ4 ((uint32_t)0xFF000000) /*!< MEMHIZ4[7:0] bits (Common memory 4 databus HiZ time) */ +#define FSMC_PMEM4_MEMHIZ4_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PMEM4_MEMHIZ4_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PMEM4_MEMHIZ4_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PMEM4_MEMHIZ4_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PMEM4_MEMHIZ4_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PMEM4_MEMHIZ4_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PMEM4_MEMHIZ4_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PMEM4_MEMHIZ4_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PATT2 register ******************/ +#define FSMC_PATT2_ATTSET2 ((uint32_t)0x000000FF) /*!< ATTSET2[7:0] bits (Attribute memory 2 setup time) */ +#define FSMC_PATT2_ATTSET2_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PATT2_ATTSET2_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PATT2_ATTSET2_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PATT2_ATTSET2_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PATT2_ATTSET2_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PATT2_ATTSET2_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PATT2_ATTSET2_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PATT2_ATTSET2_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PATT2_ATTWAIT2 ((uint32_t)0x0000FF00) /*!< ATTWAIT2[7:0] bits (Attribute memory 2 wait time) */ +#define FSMC_PATT2_ATTWAIT2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PATT2_ATTWAIT2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PATT2_ATTWAIT2_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PATT2_ATTWAIT2_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PATT2_ATTWAIT2_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PATT2_ATTWAIT2_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PATT2_ATTWAIT2_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PATT2_ATTWAIT2_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PATT2_ATTHOLD2 ((uint32_t)0x00FF0000) /*!< ATTHOLD2[7:0] bits (Attribute memory 2 hold time) */ +#define FSMC_PATT2_ATTHOLD2_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PATT2_ATTHOLD2_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PATT2_ATTHOLD2_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PATT2_ATTHOLD2_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PATT2_ATTHOLD2_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PATT2_ATTHOLD2_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PATT2_ATTHOLD2_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PATT2_ATTHOLD2_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PATT2_ATTHIZ2 ((uint32_t)0xFF000000) /*!< ATTHIZ2[7:0] bits (Attribute memory 2 databus HiZ time) */ +#define FSMC_PATT2_ATTHIZ2_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PATT2_ATTHIZ2_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PATT2_ATTHIZ2_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PATT2_ATTHIZ2_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PATT2_ATTHIZ2_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PATT2_ATTHIZ2_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PATT2_ATTHIZ2_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PATT2_ATTHIZ2_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PATT3 register ******************/ +#define FSMC_PATT3_ATTSET3 ((uint32_t)0x000000FF) /*!< ATTSET3[7:0] bits (Attribute memory 3 setup time) */ +#define FSMC_PATT3_ATTSET3_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PATT3_ATTSET3_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PATT3_ATTSET3_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PATT3_ATTSET3_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PATT3_ATTSET3_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PATT3_ATTSET3_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PATT3_ATTSET3_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PATT3_ATTSET3_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PATT3_ATTWAIT3 ((uint32_t)0x0000FF00) /*!< ATTWAIT3[7:0] bits (Attribute memory 3 wait time) */ +#define FSMC_PATT3_ATTWAIT3_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PATT3_ATTWAIT3_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PATT3_ATTWAIT3_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PATT3_ATTWAIT3_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PATT3_ATTWAIT3_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PATT3_ATTWAIT3_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PATT3_ATTWAIT3_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PATT3_ATTWAIT3_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PATT3_ATTHOLD3 ((uint32_t)0x00FF0000) /*!< ATTHOLD3[7:0] bits (Attribute memory 3 hold time) */ +#define FSMC_PATT3_ATTHOLD3_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PATT3_ATTHOLD3_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PATT3_ATTHOLD3_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PATT3_ATTHOLD3_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PATT3_ATTHOLD3_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PATT3_ATTHOLD3_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PATT3_ATTHOLD3_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PATT3_ATTHOLD3_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PATT3_ATTHIZ3 ((uint32_t)0xFF000000) /*!< ATTHIZ3[7:0] bits (Attribute memory 3 databus HiZ time) */ +#define FSMC_PATT3_ATTHIZ3_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PATT3_ATTHIZ3_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PATT3_ATTHIZ3_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PATT3_ATTHIZ3_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PATT3_ATTHIZ3_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PATT3_ATTHIZ3_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PATT3_ATTHIZ3_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PATT3_ATTHIZ3_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PATT4 register ******************/ +#define FSMC_PATT4_ATTSET4 ((uint32_t)0x000000FF) /*!< ATTSET4[7:0] bits (Attribute memory 4 setup time) */ +#define FSMC_PATT4_ATTSET4_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PATT4_ATTSET4_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PATT4_ATTSET4_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PATT4_ATTSET4_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PATT4_ATTSET4_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PATT4_ATTSET4_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PATT4_ATTSET4_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PATT4_ATTSET4_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PATT4_ATTWAIT4 ((uint32_t)0x0000FF00) /*!< ATTWAIT4[7:0] bits (Attribute memory 4 wait time) */ +#define FSMC_PATT4_ATTWAIT4_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PATT4_ATTWAIT4_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PATT4_ATTWAIT4_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PATT4_ATTWAIT4_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PATT4_ATTWAIT4_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PATT4_ATTWAIT4_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PATT4_ATTWAIT4_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PATT4_ATTWAIT4_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PATT4_ATTHOLD4 ((uint32_t)0x00FF0000) /*!< ATTHOLD4[7:0] bits (Attribute memory 4 hold time) */ +#define FSMC_PATT4_ATTHOLD4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PATT4_ATTHOLD4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PATT4_ATTHOLD4_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PATT4_ATTHOLD4_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PATT4_ATTHOLD4_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PATT4_ATTHOLD4_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PATT4_ATTHOLD4_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PATT4_ATTHOLD4_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PATT4_ATTHIZ4 ((uint32_t)0xFF000000) /*!< ATTHIZ4[7:0] bits (Attribute memory 4 databus HiZ time) */ +#define FSMC_PATT4_ATTHIZ4_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PATT4_ATTHIZ4_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PATT4_ATTHIZ4_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PATT4_ATTHIZ4_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PATT4_ATTHIZ4_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PATT4_ATTHIZ4_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PATT4_ATTHIZ4_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PATT4_ATTHIZ4_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PIO4 register *******************/ +#define FSMC_PIO4_IOSET4 ((uint32_t)0x000000FF) /*!< IOSET4[7:0] bits (I/O 4 setup time) */ +#define FSMC_PIO4_IOSET4_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PIO4_IOSET4_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PIO4_IOSET4_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PIO4_IOSET4_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PIO4_IOSET4_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PIO4_IOSET4_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PIO4_IOSET4_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PIO4_IOSET4_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PIO4_IOWAIT4 ((uint32_t)0x0000FF00) /*!< IOWAIT4[7:0] bits (I/O 4 wait time) */ +#define FSMC_PIO4_IOWAIT4_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PIO4_IOWAIT4_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PIO4_IOWAIT4_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PIO4_IOWAIT4_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PIO4_IOWAIT4_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PIO4_IOWAIT4_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PIO4_IOWAIT4_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PIO4_IOWAIT4_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PIO4_IOHOLD4 ((uint32_t)0x00FF0000) /*!< IOHOLD4[7:0] bits (I/O 4 hold time) */ +#define FSMC_PIO4_IOHOLD4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PIO4_IOHOLD4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PIO4_IOHOLD4_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PIO4_IOHOLD4_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PIO4_IOHOLD4_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PIO4_IOHOLD4_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PIO4_IOHOLD4_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PIO4_IOHOLD4_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PIO4_IOHIZ4 ((uint32_t)0xFF000000) /*!< IOHIZ4[7:0] bits (I/O 4 databus HiZ time) */ +#define FSMC_PIO4_IOHIZ4_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PIO4_IOHIZ4_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PIO4_IOHIZ4_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PIO4_IOHIZ4_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PIO4_IOHIZ4_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PIO4_IOHIZ4_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PIO4_IOHIZ4_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PIO4_IOHIZ4_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_ECCR2 register ******************/ +#define FSMC_ECCR2_ECC2 ((uint32_t)0xFFFFFFFF) /*!< ECC result */ + +/****************** Bit definition for FSMC_ECCR3 register ******************/ +#define FSMC_ECCR3_ECC3 ((uint32_t)0xFFFFFFFF) /*!< ECC result */ + +/******************************************************************************/ +/* */ +/* SD host Interface */ +/* */ +/******************************************************************************/ + +/****************** Bit definition for SDIO_POWER register ******************/ +#define SDIO_POWER_PWRCTRL ((uint8_t)0x03) /*!< PWRCTRL[1:0] bits (Power supply control bits) */ +#define SDIO_POWER_PWRCTRL_0 ((uint8_t)0x01) /*!< Bit 0 */ +#define SDIO_POWER_PWRCTRL_1 ((uint8_t)0x02) /*!< Bit 1 */ + +/****************** Bit definition for SDIO_CLKCR register ******************/ +#define SDIO_CLKCR_CLKDIV ((uint16_t)0x00FF) /*!< Clock divide factor */ +#define SDIO_CLKCR_CLKEN ((uint16_t)0x0100) /*!< Clock enable bit */ +#define SDIO_CLKCR_PWRSAV ((uint16_t)0x0200) /*!< Power saving configuration bit */ +#define SDIO_CLKCR_BYPASS ((uint16_t)0x0400) /*!< Clock divider bypass enable bit */ + +#define SDIO_CLKCR_WIDBUS ((uint16_t)0x1800) /*!< WIDBUS[1:0] bits (Wide bus mode enable bit) */ +#define SDIO_CLKCR_WIDBUS_0 ((uint16_t)0x0800) /*!< Bit 0 */ +#define SDIO_CLKCR_WIDBUS_1 ((uint16_t)0x1000) /*!< Bit 1 */ + +#define SDIO_CLKCR_NEGEDGE ((uint16_t)0x2000) /*!< SDIO_CK dephasing selection bit */ +#define SDIO_CLKCR_HWFC_EN ((uint16_t)0x4000) /*!< HW Flow Control enable */ + +/******************* Bit definition for SDIO_ARG register *******************/ +#define SDIO_ARG_CMDARG ((uint32_t)0xFFFFFFFF) /*!< Command argument */ + +/******************* Bit definition for SDIO_CMD register *******************/ +#define SDIO_CMD_CMDINDEX ((uint16_t)0x003F) /*!< Command Index */ + +#define SDIO_CMD_WAITRESP ((uint16_t)0x00C0) /*!< WAITRESP[1:0] bits (Wait for response bits) */ +#define SDIO_CMD_WAITRESP_0 ((uint16_t)0x0040) /*!< Bit 0 */ +#define SDIO_CMD_WAITRESP_1 ((uint16_t)0x0080) /*!< Bit 1 */ + +#define SDIO_CMD_WAITINT ((uint16_t)0x0100) /*!< CPSM Waits for Interrupt Request */ +#define SDIO_CMD_WAITPEND ((uint16_t)0x0200) /*!< CPSM Waits for ends of data transfer (CmdPend internal signal) */ +#define SDIO_CMD_CPSMEN ((uint16_t)0x0400) /*!< Command path state machine (CPSM) Enable bit */ +#define SDIO_CMD_SDIOSUSPEND ((uint16_t)0x0800) /*!< SD I/O suspend command */ +#define SDIO_CMD_ENCMDCOMPL ((uint16_t)0x1000) /*!< Enable CMD completion */ +#define SDIO_CMD_NIEN ((uint16_t)0x2000) /*!< Not Interrupt Enable */ +#define SDIO_CMD_CEATACMD ((uint16_t)0x4000) /*!< CE-ATA command */ + +/***************** Bit definition for SDIO_RESPCMD register *****************/ +#define SDIO_RESPCMD_RESPCMD ((uint8_t)0x3F) /*!< Response command index */ + +/****************** Bit definition for SDIO_RESP0 register ******************/ +#define SDIO_RESP0_CARDSTATUS0 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_RESP1 register ******************/ +#define SDIO_RESP1_CARDSTATUS1 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_RESP2 register ******************/ +#define SDIO_RESP2_CARDSTATUS2 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_RESP3 register ******************/ +#define SDIO_RESP3_CARDSTATUS3 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_RESP4 register ******************/ +#define SDIO_RESP4_CARDSTATUS4 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_DTIMER register *****************/ +#define SDIO_DTIMER_DATATIME ((uint32_t)0xFFFFFFFF) /*!< Data timeout period. */ + +/****************** Bit definition for SDIO_DLEN register *******************/ +#define SDIO_DLEN_DATALENGTH ((uint32_t)0x01FFFFFF) /*!< Data length value */ + +/****************** Bit definition for SDIO_DCTRL register ******************/ +#define SDIO_DCTRL_DTEN ((uint16_t)0x0001) /*!< Data transfer enabled bit */ +#define SDIO_DCTRL_DTDIR ((uint16_t)0x0002) /*!< Data transfer direction selection */ +#define SDIO_DCTRL_DTMODE ((uint16_t)0x0004) /*!< Data transfer mode selection */ +#define SDIO_DCTRL_DMAEN ((uint16_t)0x0008) /*!< DMA enabled bit */ + +#define SDIO_DCTRL_DBLOCKSIZE ((uint16_t)0x00F0) /*!< DBLOCKSIZE[3:0] bits (Data block size) */ +#define SDIO_DCTRL_DBLOCKSIZE_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define SDIO_DCTRL_DBLOCKSIZE_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define SDIO_DCTRL_DBLOCKSIZE_2 ((uint16_t)0x0040) /*!< Bit 2 */ +#define SDIO_DCTRL_DBLOCKSIZE_3 ((uint16_t)0x0080) /*!< Bit 3 */ + +#define SDIO_DCTRL_RWSTART ((uint16_t)0x0100) /*!< Read wait start */ +#define SDIO_DCTRL_RWSTOP ((uint16_t)0x0200) /*!< Read wait stop */ +#define SDIO_DCTRL_RWMOD ((uint16_t)0x0400) /*!< Read wait mode */ +#define SDIO_DCTRL_SDIOEN ((uint16_t)0x0800) /*!< SD I/O enable functions */ + +/****************** Bit definition for SDIO_DCOUNT register *****************/ +#define SDIO_DCOUNT_DATACOUNT ((uint32_t)0x01FFFFFF) /*!< Data count value */ + +/****************** Bit definition for SDIO_STA register ********************/ +#define SDIO_STA_CCRCFAIL ((uint32_t)0x00000001) /*!< Command response received (CRC check failed) */ +#define SDIO_STA_DCRCFAIL ((uint32_t)0x00000002) /*!< Data block sent/received (CRC check failed) */ +#define SDIO_STA_CTIMEOUT ((uint32_t)0x00000004) /*!< Command response timeout */ +#define SDIO_STA_DTIMEOUT ((uint32_t)0x00000008) /*!< Data timeout */ +#define SDIO_STA_TXUNDERR ((uint32_t)0x00000010) /*!< Transmit FIFO underrun error */ +#define SDIO_STA_RXOVERR ((uint32_t)0x00000020) /*!< Received FIFO overrun error */ +#define SDIO_STA_CMDREND ((uint32_t)0x00000040) /*!< Command response received (CRC check passed) */ +#define SDIO_STA_CMDSENT ((uint32_t)0x00000080) /*!< Command sent (no response required) */ +#define SDIO_STA_DATAEND ((uint32_t)0x00000100) /*!< Data end (data counter, SDIDCOUNT, is zero) */ +#define SDIO_STA_STBITERR ((uint32_t)0x00000200) /*!< Start bit not detected on all data signals in wide bus mode */ +#define SDIO_STA_DBCKEND ((uint32_t)0x00000400) /*!< Data block sent/received (CRC check passed) */ +#define SDIO_STA_CMDACT ((uint32_t)0x00000800) /*!< Command transfer in progress */ +#define SDIO_STA_TXACT ((uint32_t)0x00001000) /*!< Data transmit in progress */ +#define SDIO_STA_RXACT ((uint32_t)0x00002000) /*!< Data receive in progress */ +#define SDIO_STA_TXFIFOHE ((uint32_t)0x00004000) /*!< Transmit FIFO Half Empty: at least 8 words can be written into the FIFO */ +#define SDIO_STA_RXFIFOHF ((uint32_t)0x00008000) /*!< Receive FIFO Half Full: there are at least 8 words in the FIFO */ +#define SDIO_STA_TXFIFOF ((uint32_t)0x00010000) /*!< Transmit FIFO full */ +#define SDIO_STA_RXFIFOF ((uint32_t)0x00020000) /*!< Receive FIFO full */ +#define SDIO_STA_TXFIFOE ((uint32_t)0x00040000) /*!< Transmit FIFO empty */ +#define SDIO_STA_RXFIFOE ((uint32_t)0x00080000) /*!< Receive FIFO empty */ +#define SDIO_STA_TXDAVL ((uint32_t)0x00100000) /*!< Data available in transmit FIFO */ +#define SDIO_STA_RXDAVL ((uint32_t)0x00200000) /*!< Data available in receive FIFO */ +#define SDIO_STA_SDIOIT ((uint32_t)0x00400000) /*!< SDIO interrupt received */ +#define SDIO_STA_CEATAEND ((uint32_t)0x00800000) /*!< CE-ATA command completion signal received for CMD61 */ + +/******************* Bit definition for SDIO_ICR register *******************/ +#define SDIO_ICR_CCRCFAILC ((uint32_t)0x00000001) /*!< CCRCFAIL flag clear bit */ +#define SDIO_ICR_DCRCFAILC ((uint32_t)0x00000002) /*!< DCRCFAIL flag clear bit */ +#define SDIO_ICR_CTIMEOUTC ((uint32_t)0x00000004) /*!< CTIMEOUT flag clear bit */ +#define SDIO_ICR_DTIMEOUTC ((uint32_t)0x00000008) /*!< DTIMEOUT flag clear bit */ +#define SDIO_ICR_TXUNDERRC ((uint32_t)0x00000010) /*!< TXUNDERR flag clear bit */ +#define SDIO_ICR_RXOVERRC ((uint32_t)0x00000020) /*!< RXOVERR flag clear bit */ +#define SDIO_ICR_CMDRENDC ((uint32_t)0x00000040) /*!< CMDREND flag clear bit */ +#define SDIO_ICR_CMDSENTC ((uint32_t)0x00000080) /*!< CMDSENT flag clear bit */ +#define SDIO_ICR_DATAENDC ((uint32_t)0x00000100) /*!< DATAEND flag clear bit */ +#define SDIO_ICR_STBITERRC ((uint32_t)0x00000200) /*!< STBITERR flag clear bit */ +#define SDIO_ICR_DBCKENDC ((uint32_t)0x00000400) /*!< DBCKEND flag clear bit */ +#define SDIO_ICR_SDIOITC ((uint32_t)0x00400000) /*!< SDIOIT flag clear bit */ +#define SDIO_ICR_CEATAENDC ((uint32_t)0x00800000) /*!< CEATAEND flag clear bit */ + +/****************** Bit definition for SDIO_MASK register *******************/ +#define SDIO_MASK_CCRCFAILIE ((uint32_t)0x00000001) /*!< Command CRC Fail Interrupt Enable */ +#define SDIO_MASK_DCRCFAILIE ((uint32_t)0x00000002) /*!< Data CRC Fail Interrupt Enable */ +#define SDIO_MASK_CTIMEOUTIE ((uint32_t)0x00000004) /*!< Command TimeOut Interrupt Enable */ +#define SDIO_MASK_DTIMEOUTIE ((uint32_t)0x00000008) /*!< Data TimeOut Interrupt Enable */ +#define SDIO_MASK_TXUNDERRIE ((uint32_t)0x00000010) /*!< Tx FIFO UnderRun Error Interrupt Enable */ +#define SDIO_MASK_RXOVERRIE ((uint32_t)0x00000020) /*!< Rx FIFO OverRun Error Interrupt Enable */ +#define SDIO_MASK_CMDRENDIE ((uint32_t)0x00000040) /*!< Command Response Received Interrupt Enable */ +#define SDIO_MASK_CMDSENTIE ((uint32_t)0x00000080) /*!< Command Sent Interrupt Enable */ +#define SDIO_MASK_DATAENDIE ((uint32_t)0x00000100) /*!< Data End Interrupt Enable */ +#define SDIO_MASK_STBITERRIE ((uint32_t)0x00000200) /*!< Start Bit Error Interrupt Enable */ +#define SDIO_MASK_DBCKENDIE ((uint32_t)0x00000400) /*!< Data Block End Interrupt Enable */ +#define SDIO_MASK_CMDACTIE ((uint32_t)0x00000800) /*!< Command Acting Interrupt Enable */ +#define SDIO_MASK_TXACTIE ((uint32_t)0x00001000) /*!< Data Transmit Acting Interrupt Enable */ +#define SDIO_MASK_RXACTIE ((uint32_t)0x00002000) /*!< Data receive acting interrupt enabled */ +#define SDIO_MASK_TXFIFOHEIE ((uint32_t)0x00004000) /*!< Tx FIFO Half Empty interrupt Enable */ +#define SDIO_MASK_RXFIFOHFIE ((uint32_t)0x00008000) /*!< Rx FIFO Half Full interrupt Enable */ +#define SDIO_MASK_TXFIFOFIE ((uint32_t)0x00010000) /*!< Tx FIFO Full interrupt Enable */ +#define SDIO_MASK_RXFIFOFIE ((uint32_t)0x00020000) /*!< Rx FIFO Full interrupt Enable */ +#define SDIO_MASK_TXFIFOEIE ((uint32_t)0x00040000) /*!< Tx FIFO Empty interrupt Enable */ +#define SDIO_MASK_RXFIFOEIE ((uint32_t)0x00080000) /*!< Rx FIFO Empty interrupt Enable */ +#define SDIO_MASK_TXDAVLIE ((uint32_t)0x00100000) /*!< Data available in Tx FIFO interrupt Enable */ +#define SDIO_MASK_RXDAVLIE ((uint32_t)0x00200000) /*!< Data available in Rx FIFO interrupt Enable */ +#define SDIO_MASK_SDIOITIE ((uint32_t)0x00400000) /*!< SDIO Mode Interrupt Received interrupt Enable */ +#define SDIO_MASK_CEATAENDIE ((uint32_t)0x00800000) /*!< CE-ATA command completion signal received Interrupt Enable */ + +/***************** Bit definition for SDIO_FIFOCNT register *****************/ +#define SDIO_FIFOCNT_FIFOCOUNT ((uint32_t)0x00FFFFFF) /*!< Remaining number of words to be written to or read from the FIFO */ + +/****************** Bit definition for SDIO_FIFO register *******************/ +#define SDIO_FIFO_FIFODATA ((uint32_t)0xFFFFFFFF) /*!< Receive and transmit FIFO data */ + +/******************************************************************************/ +/* */ +/* USB Device FS */ +/* */ +/******************************************************************************/ + +/*!< Endpoint-specific registers */ +/******************* Bit definition for USB_EP0R register *******************/ +#define USB_EP0R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP0R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP0R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP0R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP0R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP0R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP0R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP0R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP0R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP0R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP0R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP0R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP0R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP0R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP0R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP0R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP1R register *******************/ +#define USB_EP1R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP1R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP1R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP1R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP1R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP1R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP1R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP1R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP1R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP1R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP1R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP1R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP1R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP1R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP1R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP1R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP2R register *******************/ +#define USB_EP2R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP2R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP2R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP2R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP2R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP2R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP2R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP2R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP2R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP2R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP2R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP2R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP2R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP2R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP2R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP2R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP3R register *******************/ +#define USB_EP3R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP3R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP3R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP3R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP3R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP3R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP3R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP3R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP3R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP3R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP3R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP3R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP3R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP3R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP3R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP3R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP4R register *******************/ +#define USB_EP4R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP4R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP4R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP4R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP4R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP4R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP4R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP4R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP4R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP4R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP4R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP4R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP4R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP4R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP4R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP4R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP5R register *******************/ +#define USB_EP5R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP5R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP5R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP5R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP5R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP5R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP5R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP5R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP5R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP5R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP5R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP5R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP5R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP5R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP5R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP5R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP6R register *******************/ +#define USB_EP6R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP6R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP6R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP6R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP6R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP6R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP6R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP6R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP6R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP6R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP6R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP6R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP6R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP6R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP6R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP6R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP7R register *******************/ +#define USB_EP7R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP7R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP7R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP7R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP7R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP7R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP7R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP7R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP7R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP7R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP7R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP7R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP7R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP7R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP7R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP7R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/*!< Common registers */ +/******************* Bit definition for USB_CNTR register *******************/ +#define USB_CNTR_FRES ((uint16_t)0x0001) /*!< Force USB Reset */ +#define USB_CNTR_PDWN ((uint16_t)0x0002) /*!< Power down */ +#define USB_CNTR_LP_MODE ((uint16_t)0x0004) /*!< Low-power mode */ +#define USB_CNTR_FSUSP ((uint16_t)0x0008) /*!< Force suspend */ +#define USB_CNTR_RESUME ((uint16_t)0x0010) /*!< Resume request */ +#define USB_CNTR_ESOFM ((uint16_t)0x0100) /*!< Expected Start Of Frame Interrupt Mask */ +#define USB_CNTR_SOFM ((uint16_t)0x0200) /*!< Start Of Frame Interrupt Mask */ +#define USB_CNTR_RESETM ((uint16_t)0x0400) /*!< RESET Interrupt Mask */ +#define USB_CNTR_SUSPM ((uint16_t)0x0800) /*!< Suspend mode Interrupt Mask */ +#define USB_CNTR_WKUPM ((uint16_t)0x1000) /*!< Wakeup Interrupt Mask */ +#define USB_CNTR_ERRM ((uint16_t)0x2000) /*!< Error Interrupt Mask */ +#define USB_CNTR_PMAOVRM ((uint16_t)0x4000) /*!< Packet Memory Area Over / Underrun Interrupt Mask */ +#define USB_CNTR_CTRM ((uint16_t)0x8000) /*!< Correct Transfer Interrupt Mask */ + +/******************* Bit definition for USB_ISTR register *******************/ +#define USB_ISTR_EP_ID ((uint16_t)0x000F) /*!< Endpoint Identifier */ +#define USB_ISTR_DIR ((uint16_t)0x0010) /*!< Direction of transaction */ +#define USB_ISTR_ESOF ((uint16_t)0x0100) /*!< Expected Start Of Frame */ +#define USB_ISTR_SOF ((uint16_t)0x0200) /*!< Start Of Frame */ +#define USB_ISTR_RESET ((uint16_t)0x0400) /*!< USB RESET request */ +#define USB_ISTR_SUSP ((uint16_t)0x0800) /*!< Suspend mode request */ +#define USB_ISTR_WKUP ((uint16_t)0x1000) /*!< Wake up */ +#define USB_ISTR_ERR ((uint16_t)0x2000) /*!< Error */ +#define USB_ISTR_PMAOVR ((uint16_t)0x4000) /*!< Packet Memory Area Over / Underrun */ +#define USB_ISTR_CTR ((uint16_t)0x8000) /*!< Correct Transfer */ + +/******************* Bit definition for USB_FNR register ********************/ +#define USB_FNR_FN ((uint16_t)0x07FF) /*!< Frame Number */ +#define USB_FNR_LSOF ((uint16_t)0x1800) /*!< Lost SOF */ +#define USB_FNR_LCK ((uint16_t)0x2000) /*!< Locked */ +#define USB_FNR_RXDM ((uint16_t)0x4000) /*!< Receive Data - Line Status */ +#define USB_FNR_RXDP ((uint16_t)0x8000) /*!< Receive Data + Line Status */ + +/****************** Bit definition for USB_DADDR register *******************/ +#define USB_DADDR_ADD ((uint8_t)0x7F) /*!< ADD[6:0] bits (Device Address) */ +#define USB_DADDR_ADD0 ((uint8_t)0x01) /*!< Bit 0 */ +#define USB_DADDR_ADD1 ((uint8_t)0x02) /*!< Bit 1 */ +#define USB_DADDR_ADD2 ((uint8_t)0x04) /*!< Bit 2 */ +#define USB_DADDR_ADD3 ((uint8_t)0x08) /*!< Bit 3 */ +#define USB_DADDR_ADD4 ((uint8_t)0x10) /*!< Bit 4 */ +#define USB_DADDR_ADD5 ((uint8_t)0x20) /*!< Bit 5 */ +#define USB_DADDR_ADD6 ((uint8_t)0x40) /*!< Bit 6 */ + +#define USB_DADDR_EF ((uint8_t)0x80) /*!< Enable Function */ + +/****************** Bit definition for USB_BTABLE register ******************/ +#define USB_BTABLE_BTABLE ((uint16_t)0xFFF8) /*!< Buffer Table */ + +/*!< Buffer descriptor table */ +/***************** Bit definition for USB_ADDR0_TX register *****************/ +#define USB_ADDR0_TX_ADDR0_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 0 */ + +/***************** Bit definition for USB_ADDR1_TX register *****************/ +#define USB_ADDR1_TX_ADDR1_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 1 */ + +/***************** Bit definition for USB_ADDR2_TX register *****************/ +#define USB_ADDR2_TX_ADDR2_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 2 */ + +/***************** Bit definition for USB_ADDR3_TX register *****************/ +#define USB_ADDR3_TX_ADDR3_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 3 */ + +/***************** Bit definition for USB_ADDR4_TX register *****************/ +#define USB_ADDR4_TX_ADDR4_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 4 */ + +/***************** Bit definition for USB_ADDR5_TX register *****************/ +#define USB_ADDR5_TX_ADDR5_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 5 */ + +/***************** Bit definition for USB_ADDR6_TX register *****************/ +#define USB_ADDR6_TX_ADDR6_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 6 */ + +/***************** Bit definition for USB_ADDR7_TX register *****************/ +#define USB_ADDR7_TX_ADDR7_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 7 */ + +/*----------------------------------------------------------------------------*/ + +/***************** Bit definition for USB_COUNT0_TX register ****************/ +#define USB_COUNT0_TX_COUNT0_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 0 */ + +/***************** Bit definition for USB_COUNT1_TX register ****************/ +#define USB_COUNT1_TX_COUNT1_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 1 */ + +/***************** Bit definition for USB_COUNT2_TX register ****************/ +#define USB_COUNT2_TX_COUNT2_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 2 */ + +/***************** Bit definition for USB_COUNT3_TX register ****************/ +#define USB_COUNT3_TX_COUNT3_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 3 */ + +/***************** Bit definition for USB_COUNT4_TX register ****************/ +#define USB_COUNT4_TX_COUNT4_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 4 */ + +/***************** Bit definition for USB_COUNT5_TX register ****************/ +#define USB_COUNT5_TX_COUNT5_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 5 */ + +/***************** Bit definition for USB_COUNT6_TX register ****************/ +#define USB_COUNT6_TX_COUNT6_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 6 */ + +/***************** Bit definition for USB_COUNT7_TX register ****************/ +#define USB_COUNT7_TX_COUNT7_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 7 */ + +/*----------------------------------------------------------------------------*/ + +/**************** Bit definition for USB_COUNT0_TX_0 register ***************/ +#define USB_COUNT0_TX_0_COUNT0_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 0 (low) */ + +/**************** Bit definition for USB_COUNT0_TX_1 register ***************/ +#define USB_COUNT0_TX_1_COUNT0_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 0 (high) */ + +/**************** Bit definition for USB_COUNT1_TX_0 register ***************/ +#define USB_COUNT1_TX_0_COUNT1_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 1 (low) */ + +/**************** Bit definition for USB_COUNT1_TX_1 register ***************/ +#define USB_COUNT1_TX_1_COUNT1_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 1 (high) */ + +/**************** Bit definition for USB_COUNT2_TX_0 register ***************/ +#define USB_COUNT2_TX_0_COUNT2_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 2 (low) */ + +/**************** Bit definition for USB_COUNT2_TX_1 register ***************/ +#define USB_COUNT2_TX_1_COUNT2_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 2 (high) */ + +/**************** Bit definition for USB_COUNT3_TX_0 register ***************/ +#define USB_COUNT3_TX_0_COUNT3_TX_0 ((uint16_t)0x000003FF) /*!< Transmission Byte Count 3 (low) */ + +/**************** Bit definition for USB_COUNT3_TX_1 register ***************/ +#define USB_COUNT3_TX_1_COUNT3_TX_1 ((uint16_t)0x03FF0000) /*!< Transmission Byte Count 3 (high) */ + +/**************** Bit definition for USB_COUNT4_TX_0 register ***************/ +#define USB_COUNT4_TX_0_COUNT4_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 4 (low) */ + +/**************** Bit definition for USB_COUNT4_TX_1 register ***************/ +#define USB_COUNT4_TX_1_COUNT4_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 4 (high) */ + +/**************** Bit definition for USB_COUNT5_TX_0 register ***************/ +#define USB_COUNT5_TX_0_COUNT5_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 5 (low) */ + +/**************** Bit definition for USB_COUNT5_TX_1 register ***************/ +#define USB_COUNT5_TX_1_COUNT5_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 5 (high) */ + +/**************** Bit definition for USB_COUNT6_TX_0 register ***************/ +#define USB_COUNT6_TX_0_COUNT6_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 6 (low) */ + +/**************** Bit definition for USB_COUNT6_TX_1 register ***************/ +#define USB_COUNT6_TX_1_COUNT6_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 6 (high) */ + +/**************** Bit definition for USB_COUNT7_TX_0 register ***************/ +#define USB_COUNT7_TX_0_COUNT7_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 7 (low) */ + +/**************** Bit definition for USB_COUNT7_TX_1 register ***************/ +#define USB_COUNT7_TX_1_COUNT7_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 7 (high) */ + +/*----------------------------------------------------------------------------*/ + +/***************** Bit definition for USB_ADDR0_RX register *****************/ +#define USB_ADDR0_RX_ADDR0_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 0 */ + +/***************** Bit definition for USB_ADDR1_RX register *****************/ +#define USB_ADDR1_RX_ADDR1_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 1 */ + +/***************** Bit definition for USB_ADDR2_RX register *****************/ +#define USB_ADDR2_RX_ADDR2_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 2 */ + +/***************** Bit definition for USB_ADDR3_RX register *****************/ +#define USB_ADDR3_RX_ADDR3_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 3 */ + +/***************** Bit definition for USB_ADDR4_RX register *****************/ +#define USB_ADDR4_RX_ADDR4_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 4 */ + +/***************** Bit definition for USB_ADDR5_RX register *****************/ +#define USB_ADDR5_RX_ADDR5_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 5 */ + +/***************** Bit definition for USB_ADDR6_RX register *****************/ +#define USB_ADDR6_RX_ADDR6_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 6 */ + +/***************** Bit definition for USB_ADDR7_RX register *****************/ +#define USB_ADDR7_RX_ADDR7_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 7 */ + +/*----------------------------------------------------------------------------*/ + +/***************** Bit definition for USB_COUNT0_RX register ****************/ +#define USB_COUNT0_RX_COUNT0_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT0_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT0_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT0_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT0_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT0_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT0_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT0_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT1_RX register ****************/ +#define USB_COUNT1_RX_COUNT1_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT1_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT1_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT1_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT1_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT1_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT1_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT1_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT2_RX register ****************/ +#define USB_COUNT2_RX_COUNT2_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT2_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT2_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT2_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT2_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT2_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT2_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT2_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT3_RX register ****************/ +#define USB_COUNT3_RX_COUNT3_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT3_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT3_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT3_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT3_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT3_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT3_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT3_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT4_RX register ****************/ +#define USB_COUNT4_RX_COUNT4_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT4_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT4_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT4_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT4_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT4_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT4_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT4_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT5_RX register ****************/ +#define USB_COUNT5_RX_COUNT5_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT5_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT5_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT5_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT5_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT5_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT5_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT5_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT6_RX register ****************/ +#define USB_COUNT6_RX_COUNT6_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT6_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT6_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT6_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT6_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT6_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT6_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT6_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT7_RX register ****************/ +#define USB_COUNT7_RX_COUNT7_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT7_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT7_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT7_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT7_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT7_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT7_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT7_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/*----------------------------------------------------------------------------*/ + +/**************** Bit definition for USB_COUNT0_RX_0 register ***************/ +#define USB_COUNT0_RX_0_COUNT0_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT0_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT0_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT0_RX_1 register ***************/ +#define USB_COUNT0_RX_1_COUNT0_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT0_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT0_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT1_RX_0 register ***************/ +#define USB_COUNT1_RX_0_COUNT1_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT1_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT1_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT1_RX_1 register ***************/ +#define USB_COUNT1_RX_1_COUNT1_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT1_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT1_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT2_RX_0 register ***************/ +#define USB_COUNT2_RX_0_COUNT2_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT2_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT2_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT2_RX_1 register ***************/ +#define USB_COUNT2_RX_1_COUNT2_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT2_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT2_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT3_RX_0 register ***************/ +#define USB_COUNT3_RX_0_COUNT3_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT3_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT3_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT3_RX_1 register ***************/ +#define USB_COUNT3_RX_1_COUNT3_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT3_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT3_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT4_RX_0 register ***************/ +#define USB_COUNT4_RX_0_COUNT4_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT4_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT4_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT4_RX_1 register ***************/ +#define USB_COUNT4_RX_1_COUNT4_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT4_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT4_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT5_RX_0 register ***************/ +#define USB_COUNT5_RX_0_COUNT5_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT5_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT5_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT5_RX_1 register ***************/ +#define USB_COUNT5_RX_1_COUNT5_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT5_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT5_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/*************** Bit definition for USB_COUNT6_RX_0 register ***************/ +#define USB_COUNT6_RX_0_COUNT6_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT6_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT6_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT6_RX_1 register ***************/ +#define USB_COUNT6_RX_1_COUNT6_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT6_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT6_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/*************** Bit definition for USB_COUNT7_RX_0 register ****************/ +#define USB_COUNT7_RX_0_COUNT7_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT7_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT7_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/*************** Bit definition for USB_COUNT7_RX_1 register ****************/ +#define USB_COUNT7_RX_1_COUNT7_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT7_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT7_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/******************************************************************************/ +/* */ +/* Controller Area Network */ +/* */ +/******************************************************************************/ + +/*!< CAN control and status registers */ +/******************* Bit definition for CAN_MCR register ********************/ +#define CAN_MCR_INRQ ((uint16_t)0x0001) /*!< Initialization Request */ +#define CAN_MCR_SLEEP ((uint16_t)0x0002) /*!< Sleep Mode Request */ +#define CAN_MCR_TXFP ((uint16_t)0x0004) /*!< Transmit FIFO Priority */ +#define CAN_MCR_RFLM ((uint16_t)0x0008) /*!< Receive FIFO Locked Mode */ +#define CAN_MCR_NART ((uint16_t)0x0010) /*!< No Automatic Retransmission */ +#define CAN_MCR_AWUM ((uint16_t)0x0020) /*!< Automatic Wakeup Mode */ +#define CAN_MCR_ABOM ((uint16_t)0x0040) /*!< Automatic Bus-Off Management */ +#define CAN_MCR_TTCM ((uint16_t)0x0080) /*!< Time Triggered Communication Mode */ +#define CAN_MCR_RESET ((uint16_t)0x8000) /*!< CAN software master reset */ + +/******************* Bit definition for CAN_MSR register ********************/ +#define CAN_MSR_INAK ((uint16_t)0x0001) /*!< Initialization Acknowledge */ +#define CAN_MSR_SLAK ((uint16_t)0x0002) /*!< Sleep Acknowledge */ +#define CAN_MSR_ERRI ((uint16_t)0x0004) /*!< Error Interrupt */ +#define CAN_MSR_WKUI ((uint16_t)0x0008) /*!< Wakeup Interrupt */ +#define CAN_MSR_SLAKI ((uint16_t)0x0010) /*!< Sleep Acknowledge Interrupt */ +#define CAN_MSR_TXM ((uint16_t)0x0100) /*!< Transmit Mode */ +#define CAN_MSR_RXM ((uint16_t)0x0200) /*!< Receive Mode */ +#define CAN_MSR_SAMP ((uint16_t)0x0400) /*!< Last Sample Point */ +#define CAN_MSR_RX ((uint16_t)0x0800) /*!< CAN Rx Signal */ + +/******************* Bit definition for CAN_TSR register ********************/ +#define CAN_TSR_RQCP0 ((uint32_t)0x00000001) /*!< Request Completed Mailbox0 */ +#define CAN_TSR_TXOK0 ((uint32_t)0x00000002) /*!< Transmission OK of Mailbox0 */ +#define CAN_TSR_ALST0 ((uint32_t)0x00000004) /*!< Arbitration Lost for Mailbox0 */ +#define CAN_TSR_TERR0 ((uint32_t)0x00000008) /*!< Transmission Error of Mailbox0 */ +#define CAN_TSR_ABRQ0 ((uint32_t)0x00000080) /*!< Abort Request for Mailbox0 */ +#define CAN_TSR_RQCP1 ((uint32_t)0x00000100) /*!< Request Completed Mailbox1 */ +#define CAN_TSR_TXOK1 ((uint32_t)0x00000200) /*!< Transmission OK of Mailbox1 */ +#define CAN_TSR_ALST1 ((uint32_t)0x00000400) /*!< Arbitration Lost for Mailbox1 */ +#define CAN_TSR_TERR1 ((uint32_t)0x00000800) /*!< Transmission Error of Mailbox1 */ +#define CAN_TSR_ABRQ1 ((uint32_t)0x00008000) /*!< Abort Request for Mailbox 1 */ +#define CAN_TSR_RQCP2 ((uint32_t)0x00010000) /*!< Request Completed Mailbox2 */ +#define CAN_TSR_TXOK2 ((uint32_t)0x00020000) /*!< Transmission OK of Mailbox 2 */ +#define CAN_TSR_ALST2 ((uint32_t)0x00040000) /*!< Arbitration Lost for mailbox 2 */ +#define CAN_TSR_TERR2 ((uint32_t)0x00080000) /*!< Transmission Error of Mailbox 2 */ +#define CAN_TSR_ABRQ2 ((uint32_t)0x00800000) /*!< Abort Request for Mailbox 2 */ +#define CAN_TSR_CODE ((uint32_t)0x03000000) /*!< Mailbox Code */ + +#define CAN_TSR_TME ((uint32_t)0x1C000000) /*!< TME[2:0] bits */ +#define CAN_TSR_TME0 ((uint32_t)0x04000000) /*!< Transmit Mailbox 0 Empty */ +#define CAN_TSR_TME1 ((uint32_t)0x08000000) /*!< Transmit Mailbox 1 Empty */ +#define CAN_TSR_TME2 ((uint32_t)0x10000000) /*!< Transmit Mailbox 2 Empty */ + +#define CAN_TSR_LOW ((uint32_t)0xE0000000) /*!< LOW[2:0] bits */ +#define CAN_TSR_LOW0 ((uint32_t)0x20000000) /*!< Lowest Priority Flag for Mailbox 0 */ +#define CAN_TSR_LOW1 ((uint32_t)0x40000000) /*!< Lowest Priority Flag for Mailbox 1 */ +#define CAN_TSR_LOW2 ((uint32_t)0x80000000) /*!< Lowest Priority Flag for Mailbox 2 */ + +/******************* Bit definition for CAN_RF0R register *******************/ +#define CAN_RF0R_FMP0 ((uint8_t)0x03) /*!< FIFO 0 Message Pending */ +#define CAN_RF0R_FULL0 ((uint8_t)0x08) /*!< FIFO 0 Full */ +#define CAN_RF0R_FOVR0 ((uint8_t)0x10) /*!< FIFO 0 Overrun */ +#define CAN_RF0R_RFOM0 ((uint8_t)0x20) /*!< Release FIFO 0 Output Mailbox */ + +/******************* Bit definition for CAN_RF1R register *******************/ +#define CAN_RF1R_FMP1 ((uint8_t)0x03) /*!< FIFO 1 Message Pending */ +#define CAN_RF1R_FULL1 ((uint8_t)0x08) /*!< FIFO 1 Full */ +#define CAN_RF1R_FOVR1 ((uint8_t)0x10) /*!< FIFO 1 Overrun */ +#define CAN_RF1R_RFOM1 ((uint8_t)0x20) /*!< Release FIFO 1 Output Mailbox */ + +/******************** Bit definition for CAN_IER register *******************/ +#define CAN_IER_TMEIE ((uint32_t)0x00000001) /*!< Transmit Mailbox Empty Interrupt Enable */ +#define CAN_IER_FMPIE0 ((uint32_t)0x00000002) /*!< FIFO Message Pending Interrupt Enable */ +#define CAN_IER_FFIE0 ((uint32_t)0x00000004) /*!< FIFO Full Interrupt Enable */ +#define CAN_IER_FOVIE0 ((uint32_t)0x00000008) /*!< FIFO Overrun Interrupt Enable */ +#define CAN_IER_FMPIE1 ((uint32_t)0x00000010) /*!< FIFO Message Pending Interrupt Enable */ +#define CAN_IER_FFIE1 ((uint32_t)0x00000020) /*!< FIFO Full Interrupt Enable */ +#define CAN_IER_FOVIE1 ((uint32_t)0x00000040) /*!< FIFO Overrun Interrupt Enable */ +#define CAN_IER_EWGIE ((uint32_t)0x00000100) /*!< Error Warning Interrupt Enable */ +#define CAN_IER_EPVIE ((uint32_t)0x00000200) /*!< Error Passive Interrupt Enable */ +#define CAN_IER_BOFIE ((uint32_t)0x00000400) /*!< Bus-Off Interrupt Enable */ +#define CAN_IER_LECIE ((uint32_t)0x00000800) /*!< Last Error Code Interrupt Enable */ +#define CAN_IER_ERRIE ((uint32_t)0x00008000) /*!< Error Interrupt Enable */ +#define CAN_IER_WKUIE ((uint32_t)0x00010000) /*!< Wakeup Interrupt Enable */ +#define CAN_IER_SLKIE ((uint32_t)0x00020000) /*!< Sleep Interrupt Enable */ + +/******************** Bit definition for CAN_ESR register *******************/ +#define CAN_ESR_EWGF ((uint32_t)0x00000001) /*!< Error Warning Flag */ +#define CAN_ESR_EPVF ((uint32_t)0x00000002) /*!< Error Passive Flag */ +#define CAN_ESR_BOFF ((uint32_t)0x00000004) /*!< Bus-Off Flag */ + +#define CAN_ESR_LEC ((uint32_t)0x00000070) /*!< LEC[2:0] bits (Last Error Code) */ +#define CAN_ESR_LEC_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define CAN_ESR_LEC_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define CAN_ESR_LEC_2 ((uint32_t)0x00000040) /*!< Bit 2 */ + +#define CAN_ESR_TEC ((uint32_t)0x00FF0000) /*!< Least significant byte of the 9-bit Transmit Error Counter */ +#define CAN_ESR_REC ((uint32_t)0xFF000000) /*!< Receive Error Counter */ + +/******************* Bit definition for CAN_BTR register ********************/ +#define CAN_BTR_BRP ((uint32_t)0x000003FF) /*!< Baud Rate Prescaler */ +#define CAN_BTR_TS1 ((uint32_t)0x000F0000) /*!< Time Segment 1 */ +#define CAN_BTR_TS2 ((uint32_t)0x00700000) /*!< Time Segment 2 */ +#define CAN_BTR_SJW ((uint32_t)0x03000000) /*!< Resynchronization Jump Width */ +#define CAN_BTR_LBKM ((uint32_t)0x40000000) /*!< Loop Back Mode (Debug) */ +#define CAN_BTR_SILM ((uint32_t)0x80000000) /*!< Silent Mode */ + +/*!< Mailbox registers */ +/****************** Bit definition for CAN_TI0R register ********************/ +#define CAN_TI0R_TXRQ ((uint32_t)0x00000001) /*!< Transmit Mailbox Request */ +#define CAN_TI0R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_TI0R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_TI0R_EXID ((uint32_t)0x001FFFF8) /*!< Extended Identifier */ +#define CAN_TI0R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/****************** Bit definition for CAN_TDT0R register *******************/ +#define CAN_TDT0R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_TDT0R_TGT ((uint32_t)0x00000100) /*!< Transmit Global Time */ +#define CAN_TDT0R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/****************** Bit definition for CAN_TDL0R register *******************/ +#define CAN_TDL0R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_TDL0R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_TDL0R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_TDL0R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/****************** Bit definition for CAN_TDH0R register *******************/ +#define CAN_TDH0R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_TDH0R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_TDH0R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_TDH0R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/******************* Bit definition for CAN_TI1R register *******************/ +#define CAN_TI1R_TXRQ ((uint32_t)0x00000001) /*!< Transmit Mailbox Request */ +#define CAN_TI1R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_TI1R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_TI1R_EXID ((uint32_t)0x001FFFF8) /*!< Extended Identifier */ +#define CAN_TI1R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_TDT1R register ******************/ +#define CAN_TDT1R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_TDT1R_TGT ((uint32_t)0x00000100) /*!< Transmit Global Time */ +#define CAN_TDT1R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/******************* Bit definition for CAN_TDL1R register ******************/ +#define CAN_TDL1R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_TDL1R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_TDL1R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_TDL1R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/******************* Bit definition for CAN_TDH1R register ******************/ +#define CAN_TDH1R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_TDH1R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_TDH1R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_TDH1R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/******************* Bit definition for CAN_TI2R register *******************/ +#define CAN_TI2R_TXRQ ((uint32_t)0x00000001) /*!< Transmit Mailbox Request */ +#define CAN_TI2R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_TI2R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_TI2R_EXID ((uint32_t)0x001FFFF8) /*!< Extended identifier */ +#define CAN_TI2R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_TDT2R register ******************/ +#define CAN_TDT2R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_TDT2R_TGT ((uint32_t)0x00000100) /*!< Transmit Global Time */ +#define CAN_TDT2R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/******************* Bit definition for CAN_TDL2R register ******************/ +#define CAN_TDL2R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_TDL2R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_TDL2R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_TDL2R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/******************* Bit definition for CAN_TDH2R register ******************/ +#define CAN_TDH2R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_TDH2R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_TDH2R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_TDH2R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/******************* Bit definition for CAN_RI0R register *******************/ +#define CAN_RI0R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_RI0R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_RI0R_EXID ((uint32_t)0x001FFFF8) /*!< Extended Identifier */ +#define CAN_RI0R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_RDT0R register ******************/ +#define CAN_RDT0R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_RDT0R_FMI ((uint32_t)0x0000FF00) /*!< Filter Match Index */ +#define CAN_RDT0R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/******************* Bit definition for CAN_RDL0R register ******************/ +#define CAN_RDL0R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_RDL0R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_RDL0R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_RDL0R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/******************* Bit definition for CAN_RDH0R register ******************/ +#define CAN_RDH0R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_RDH0R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_RDH0R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_RDH0R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/******************* Bit definition for CAN_RI1R register *******************/ +#define CAN_RI1R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_RI1R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_RI1R_EXID ((uint32_t)0x001FFFF8) /*!< Extended identifier */ +#define CAN_RI1R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_RDT1R register ******************/ +#define CAN_RDT1R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_RDT1R_FMI ((uint32_t)0x0000FF00) /*!< Filter Match Index */ +#define CAN_RDT1R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/******************* Bit definition for CAN_RDL1R register ******************/ +#define CAN_RDL1R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_RDL1R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_RDL1R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_RDL1R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/******************* Bit definition for CAN_RDH1R register ******************/ +#define CAN_RDH1R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_RDH1R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_RDH1R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_RDH1R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/*!< CAN filter registers */ +/******************* Bit definition for CAN_FMR register ********************/ +#define CAN_FMR_FINIT ((uint8_t)0x01) /*!< Filter Init Mode */ + +/******************* Bit definition for CAN_FM1R register *******************/ +#define CAN_FM1R_FBM ((uint16_t)0x3FFF) /*!< Filter Mode */ +#define CAN_FM1R_FBM0 ((uint16_t)0x0001) /*!< Filter Init Mode bit 0 */ +#define CAN_FM1R_FBM1 ((uint16_t)0x0002) /*!< Filter Init Mode bit 1 */ +#define CAN_FM1R_FBM2 ((uint16_t)0x0004) /*!< Filter Init Mode bit 2 */ +#define CAN_FM1R_FBM3 ((uint16_t)0x0008) /*!< Filter Init Mode bit 3 */ +#define CAN_FM1R_FBM4 ((uint16_t)0x0010) /*!< Filter Init Mode bit 4 */ +#define CAN_FM1R_FBM5 ((uint16_t)0x0020) /*!< Filter Init Mode bit 5 */ +#define CAN_FM1R_FBM6 ((uint16_t)0x0040) /*!< Filter Init Mode bit 6 */ +#define CAN_FM1R_FBM7 ((uint16_t)0x0080) /*!< Filter Init Mode bit 7 */ +#define CAN_FM1R_FBM8 ((uint16_t)0x0100) /*!< Filter Init Mode bit 8 */ +#define CAN_FM1R_FBM9 ((uint16_t)0x0200) /*!< Filter Init Mode bit 9 */ +#define CAN_FM1R_FBM10 ((uint16_t)0x0400) /*!< Filter Init Mode bit 10 */ +#define CAN_FM1R_FBM11 ((uint16_t)0x0800) /*!< Filter Init Mode bit 11 */ +#define CAN_FM1R_FBM12 ((uint16_t)0x1000) /*!< Filter Init Mode bit 12 */ +#define CAN_FM1R_FBM13 ((uint16_t)0x2000) /*!< Filter Init Mode bit 13 */ + +/******************* Bit definition for CAN_FS1R register *******************/ +#define CAN_FS1R_FSC ((uint16_t)0x3FFF) /*!< Filter Scale Configuration */ +#define CAN_FS1R_FSC0 ((uint16_t)0x0001) /*!< Filter Scale Configuration bit 0 */ +#define CAN_FS1R_FSC1 ((uint16_t)0x0002) /*!< Filter Scale Configuration bit 1 */ +#define CAN_FS1R_FSC2 ((uint16_t)0x0004) /*!< Filter Scale Configuration bit 2 */ +#define CAN_FS1R_FSC3 ((uint16_t)0x0008) /*!< Filter Scale Configuration bit 3 */ +#define CAN_FS1R_FSC4 ((uint16_t)0x0010) /*!< Filter Scale Configuration bit 4 */ +#define CAN_FS1R_FSC5 ((uint16_t)0x0020) /*!< Filter Scale Configuration bit 5 */ +#define CAN_FS1R_FSC6 ((uint16_t)0x0040) /*!< Filter Scale Configuration bit 6 */ +#define CAN_FS1R_FSC7 ((uint16_t)0x0080) /*!< Filter Scale Configuration bit 7 */ +#define CAN_FS1R_FSC8 ((uint16_t)0x0100) /*!< Filter Scale Configuration bit 8 */ +#define CAN_FS1R_FSC9 ((uint16_t)0x0200) /*!< Filter Scale Configuration bit 9 */ +#define CAN_FS1R_FSC10 ((uint16_t)0x0400) /*!< Filter Scale Configuration bit 10 */ +#define CAN_FS1R_FSC11 ((uint16_t)0x0800) /*!< Filter Scale Configuration bit 11 */ +#define CAN_FS1R_FSC12 ((uint16_t)0x1000) /*!< Filter Scale Configuration bit 12 */ +#define CAN_FS1R_FSC13 ((uint16_t)0x2000) /*!< Filter Scale Configuration bit 13 */ + +/****************** Bit definition for CAN_FFA1R register *******************/ +#define CAN_FFA1R_FFA ((uint16_t)0x3FFF) /*!< Filter FIFO Assignment */ +#define CAN_FFA1R_FFA0 ((uint16_t)0x0001) /*!< Filter FIFO Assignment for Filter 0 */ +#define CAN_FFA1R_FFA1 ((uint16_t)0x0002) /*!< Filter FIFO Assignment for Filter 1 */ +#define CAN_FFA1R_FFA2 ((uint16_t)0x0004) /*!< Filter FIFO Assignment for Filter 2 */ +#define CAN_FFA1R_FFA3 ((uint16_t)0x0008) /*!< Filter FIFO Assignment for Filter 3 */ +#define CAN_FFA1R_FFA4 ((uint16_t)0x0010) /*!< Filter FIFO Assignment for Filter 4 */ +#define CAN_FFA1R_FFA5 ((uint16_t)0x0020) /*!< Filter FIFO Assignment for Filter 5 */ +#define CAN_FFA1R_FFA6 ((uint16_t)0x0040) /*!< Filter FIFO Assignment for Filter 6 */ +#define CAN_FFA1R_FFA7 ((uint16_t)0x0080) /*!< Filter FIFO Assignment for Filter 7 */ +#define CAN_FFA1R_FFA8 ((uint16_t)0x0100) /*!< Filter FIFO Assignment for Filter 8 */ +#define CAN_FFA1R_FFA9 ((uint16_t)0x0200) /*!< Filter FIFO Assignment for Filter 9 */ +#define CAN_FFA1R_FFA10 ((uint16_t)0x0400) /*!< Filter FIFO Assignment for Filter 10 */ +#define CAN_FFA1R_FFA11 ((uint16_t)0x0800) /*!< Filter FIFO Assignment for Filter 11 */ +#define CAN_FFA1R_FFA12 ((uint16_t)0x1000) /*!< Filter FIFO Assignment for Filter 12 */ +#define CAN_FFA1R_FFA13 ((uint16_t)0x2000) /*!< Filter FIFO Assignment for Filter 13 */ + +/******************* Bit definition for CAN_FA1R register *******************/ +#define CAN_FA1R_FACT ((uint16_t)0x3FFF) /*!< Filter Active */ +#define CAN_FA1R_FACT0 ((uint16_t)0x0001) /*!< Filter 0 Active */ +#define CAN_FA1R_FACT1 ((uint16_t)0x0002) /*!< Filter 1 Active */ +#define CAN_FA1R_FACT2 ((uint16_t)0x0004) /*!< Filter 2 Active */ +#define CAN_FA1R_FACT3 ((uint16_t)0x0008) /*!< Filter 3 Active */ +#define CAN_FA1R_FACT4 ((uint16_t)0x0010) /*!< Filter 4 Active */ +#define CAN_FA1R_FACT5 ((uint16_t)0x0020) /*!< Filter 5 Active */ +#define CAN_FA1R_FACT6 ((uint16_t)0x0040) /*!< Filter 6 Active */ +#define CAN_FA1R_FACT7 ((uint16_t)0x0080) /*!< Filter 7 Active */ +#define CAN_FA1R_FACT8 ((uint16_t)0x0100) /*!< Filter 8 Active */ +#define CAN_FA1R_FACT9 ((uint16_t)0x0200) /*!< Filter 9 Active */ +#define CAN_FA1R_FACT10 ((uint16_t)0x0400) /*!< Filter 10 Active */ +#define CAN_FA1R_FACT11 ((uint16_t)0x0800) /*!< Filter 11 Active */ +#define CAN_FA1R_FACT12 ((uint16_t)0x1000) /*!< Filter 12 Active */ +#define CAN_FA1R_FACT13 ((uint16_t)0x2000) /*!< Filter 13 Active */ + +/******************* Bit definition for CAN_F0R1 register *******************/ +#define CAN_F0R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F0R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F0R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F0R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F0R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F0R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F0R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F0R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F0R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F0R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F0R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F0R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F0R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F0R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F0R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F0R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F0R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F0R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F0R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F0R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F0R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F0R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F0R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F0R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F0R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F0R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F0R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F0R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F0R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F0R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F0R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F0R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F1R1 register *******************/ +#define CAN_F1R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F1R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F1R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F1R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F1R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F1R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F1R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F1R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F1R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F1R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F1R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F1R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F1R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F1R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F1R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F1R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F1R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F1R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F1R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F1R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F1R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F1R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F1R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F1R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F1R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F1R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F1R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F1R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F1R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F1R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F1R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F1R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F2R1 register *******************/ +#define CAN_F2R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F2R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F2R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F2R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F2R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F2R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F2R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F2R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F2R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F2R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F2R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F2R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F2R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F2R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F2R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F2R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F2R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F2R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F2R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F2R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F2R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F2R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F2R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F2R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F2R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F2R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F2R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F2R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F2R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F2R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F2R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F2R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F3R1 register *******************/ +#define CAN_F3R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F3R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F3R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F3R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F3R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F3R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F3R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F3R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F3R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F3R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F3R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F3R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F3R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F3R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F3R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F3R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F3R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F3R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F3R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F3R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F3R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F3R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F3R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F3R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F3R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F3R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F3R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F3R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F3R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F3R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F3R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F3R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F4R1 register *******************/ +#define CAN_F4R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F4R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F4R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F4R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F4R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F4R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F4R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F4R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F4R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F4R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F4R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F4R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F4R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F4R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F4R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F4R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F4R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F4R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F4R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F4R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F4R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F4R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F4R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F4R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F4R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F4R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F4R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F4R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F4R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F4R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F4R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F4R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F5R1 register *******************/ +#define CAN_F5R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F5R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F5R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F5R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F5R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F5R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F5R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F5R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F5R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F5R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F5R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F5R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F5R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F5R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F5R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F5R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F5R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F5R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F5R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F5R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F5R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F5R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F5R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F5R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F5R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F5R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F5R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F5R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F5R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F5R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F5R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F5R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F6R1 register *******************/ +#define CAN_F6R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F6R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F6R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F6R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F6R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F6R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F6R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F6R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F6R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F6R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F6R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F6R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F6R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F6R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F6R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F6R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F6R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F6R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F6R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F6R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F6R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F6R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F6R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F6R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F6R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F6R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F6R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F6R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F6R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F6R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F6R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F6R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F7R1 register *******************/ +#define CAN_F7R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F7R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F7R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F7R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F7R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F7R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F7R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F7R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F7R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F7R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F7R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F7R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F7R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F7R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F7R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F7R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F7R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F7R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F7R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F7R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F7R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F7R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F7R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F7R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F7R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F7R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F7R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F7R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F7R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F7R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F7R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F7R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F8R1 register *******************/ +#define CAN_F8R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F8R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F8R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F8R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F8R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F8R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F8R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F8R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F8R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F8R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F8R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F8R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F8R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F8R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F8R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F8R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F8R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F8R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F8R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F8R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F8R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F8R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F8R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F8R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F8R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F8R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F8R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F8R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F8R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F8R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F8R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F8R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F9R1 register *******************/ +#define CAN_F9R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F9R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F9R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F9R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F9R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F9R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F9R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F9R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F9R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F9R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F9R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F9R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F9R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F9R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F9R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F9R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F9R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F9R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F9R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F9R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F9R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F9R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F9R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F9R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F9R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F9R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F9R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F9R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F9R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F9R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F9R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F9R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F10R1 register ******************/ +#define CAN_F10R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F10R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F10R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F10R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F10R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F10R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F10R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F10R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F10R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F10R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F10R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F10R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F10R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F10R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F10R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F10R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F10R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F10R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F10R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F10R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F10R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F10R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F10R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F10R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F10R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F10R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F10R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F10R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F10R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F10R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F10R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F10R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F11R1 register ******************/ +#define CAN_F11R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F11R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F11R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F11R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F11R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F11R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F11R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F11R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F11R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F11R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F11R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F11R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F11R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F11R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F11R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F11R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F11R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F11R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F11R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F11R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F11R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F11R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F11R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F11R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F11R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F11R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F11R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F11R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F11R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F11R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F11R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F11R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F12R1 register ******************/ +#define CAN_F12R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F12R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F12R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F12R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F12R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F12R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F12R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F12R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F12R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F12R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F12R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F12R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F12R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F12R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F12R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F12R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F12R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F12R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F12R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F12R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F12R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F12R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F12R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F12R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F12R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F12R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F12R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F12R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F12R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F12R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F12R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F12R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F13R1 register ******************/ +#define CAN_F13R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F13R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F13R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F13R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F13R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F13R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F13R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F13R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F13R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F13R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F13R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F13R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F13R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F13R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F13R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F13R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F13R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F13R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F13R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F13R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F13R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F13R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F13R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F13R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F13R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F13R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F13R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F13R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F13R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F13R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F13R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F13R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F0R2 register *******************/ +#define CAN_F0R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F0R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F0R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F0R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F0R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F0R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F0R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F0R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F0R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F0R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F0R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F0R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F0R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F0R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F0R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F0R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F0R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F0R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F0R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F0R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F0R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F0R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F0R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F0R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F0R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F0R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F0R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F0R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F0R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F0R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F0R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F0R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F1R2 register *******************/ +#define CAN_F1R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F1R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F1R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F1R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F1R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F1R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F1R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F1R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F1R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F1R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F1R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F1R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F1R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F1R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F1R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F1R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F1R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F1R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F1R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F1R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F1R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F1R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F1R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F1R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F1R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F1R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F1R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F1R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F1R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F1R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F1R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F1R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F2R2 register *******************/ +#define CAN_F2R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F2R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F2R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F2R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F2R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F2R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F2R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F2R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F2R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F2R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F2R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F2R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F2R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F2R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F2R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F2R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F2R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F2R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F2R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F2R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F2R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F2R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F2R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F2R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F2R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F2R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F2R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F2R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F2R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F2R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F2R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F2R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F3R2 register *******************/ +#define CAN_F3R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F3R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F3R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F3R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F3R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F3R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F3R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F3R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F3R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F3R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F3R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F3R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F3R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F3R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F3R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F3R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F3R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F3R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F3R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F3R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F3R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F3R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F3R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F3R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F3R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F3R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F3R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F3R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F3R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F3R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F3R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F3R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F4R2 register *******************/ +#define CAN_F4R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F4R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F4R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F4R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F4R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F4R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F4R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F4R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F4R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F4R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F4R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F4R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F4R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F4R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F4R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F4R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F4R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F4R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F4R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F4R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F4R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F4R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F4R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F4R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F4R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F4R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F4R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F4R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F4R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F4R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F4R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F4R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F5R2 register *******************/ +#define CAN_F5R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F5R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F5R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F5R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F5R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F5R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F5R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F5R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F5R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F5R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F5R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F5R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F5R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F5R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F5R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F5R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F5R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F5R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F5R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F5R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F5R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F5R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F5R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F5R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F5R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F5R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F5R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F5R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F5R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F5R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F5R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F5R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F6R2 register *******************/ +#define CAN_F6R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F6R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F6R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F6R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F6R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F6R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F6R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F6R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F6R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F6R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F6R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F6R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F6R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F6R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F6R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F6R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F6R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F6R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F6R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F6R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F6R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F6R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F6R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F6R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F6R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F6R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F6R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F6R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F6R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F6R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F6R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F6R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F7R2 register *******************/ +#define CAN_F7R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F7R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F7R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F7R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F7R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F7R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F7R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F7R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F7R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F7R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F7R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F7R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F7R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F7R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F7R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F7R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F7R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F7R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F7R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F7R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F7R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F7R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F7R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F7R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F7R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F7R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F7R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F7R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F7R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F7R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F7R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F7R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F8R2 register *******************/ +#define CAN_F8R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F8R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F8R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F8R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F8R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F8R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F8R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F8R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F8R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F8R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F8R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F8R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F8R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F8R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F8R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F8R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F8R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F8R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F8R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F8R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F8R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F8R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F8R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F8R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F8R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F8R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F8R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F8R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F8R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F8R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F8R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F8R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F9R2 register *******************/ +#define CAN_F9R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F9R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F9R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F9R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F9R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F9R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F9R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F9R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F9R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F9R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F9R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F9R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F9R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F9R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F9R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F9R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F9R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F9R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F9R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F9R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F9R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F9R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F9R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F9R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F9R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F9R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F9R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F9R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F9R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F9R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F9R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F9R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F10R2 register ******************/ +#define CAN_F10R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F10R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F10R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F10R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F10R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F10R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F10R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F10R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F10R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F10R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F10R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F10R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F10R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F10R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F10R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F10R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F10R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F10R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F10R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F10R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F10R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F10R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F10R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F10R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F10R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F10R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F10R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F10R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F10R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F10R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F10R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F10R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F11R2 register ******************/ +#define CAN_F11R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F11R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F11R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F11R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F11R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F11R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F11R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F11R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F11R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F11R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F11R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F11R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F11R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F11R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F11R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F11R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F11R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F11R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F11R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F11R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F11R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F11R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F11R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F11R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F11R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F11R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F11R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F11R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F11R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F11R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F11R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F11R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F12R2 register ******************/ +#define CAN_F12R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F12R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F12R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F12R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F12R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F12R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F12R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F12R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F12R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F12R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F12R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F12R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F12R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F12R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F12R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F12R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F12R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F12R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F12R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F12R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F12R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F12R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F12R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F12R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F12R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F12R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F12R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F12R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F12R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F12R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F12R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F12R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F13R2 register ******************/ +#define CAN_F13R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F13R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F13R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F13R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F13R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F13R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F13R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F13R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F13R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F13R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F13R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F13R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F13R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F13R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F13R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F13R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F13R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F13R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F13R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F13R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F13R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F13R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F13R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F13R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F13R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F13R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F13R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F13R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F13R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F13R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F13R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F13R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************************************************************************/ +/* */ +/* Serial Peripheral Interface */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for SPI_CR1 register ********************/ +#define SPI_CR1_CPHA ((uint16_t)0x0001) /*!< Clock Phase */ +#define SPI_CR1_CPOL ((uint16_t)0x0002) /*!< Clock Polarity */ +#define SPI_CR1_MSTR ((uint16_t)0x0004) /*!< Master Selection */ + +#define SPI_CR1_BR ((uint16_t)0x0038) /*!< BR[2:0] bits (Baud Rate Control) */ +#define SPI_CR1_BR_0 ((uint16_t)0x0008) /*!< Bit 0 */ +#define SPI_CR1_BR_1 ((uint16_t)0x0010) /*!< Bit 1 */ +#define SPI_CR1_BR_2 ((uint16_t)0x0020) /*!< Bit 2 */ + +#define SPI_CR1_SPE ((uint16_t)0x0040) /*!< SPI Enable */ +#define SPI_CR1_LSBFIRST ((uint16_t)0x0080) /*!< Frame Format */ +#define SPI_CR1_SSI ((uint16_t)0x0100) /*!< Internal slave select */ +#define SPI_CR1_SSM ((uint16_t)0x0200) /*!< Software slave management */ +#define SPI_CR1_RXONLY ((uint16_t)0x0400) /*!< Receive only */ +#define SPI_CR1_DFF ((uint16_t)0x0800) /*!< Data Frame Format */ +#define SPI_CR1_CRCNEXT ((uint16_t)0x1000) /*!< Transmit CRC next */ +#define SPI_CR1_CRCEN ((uint16_t)0x2000) /*!< Hardware CRC calculation enable */ +#define SPI_CR1_BIDIOE ((uint16_t)0x4000) /*!< Output enable in bidirectional mode */ +#define SPI_CR1_BIDIMODE ((uint16_t)0x8000) /*!< Bidirectional data mode enable */ + +/******************* Bit definition for SPI_CR2 register ********************/ +#define SPI_CR2_RXDMAEN ((uint8_t)0x01) /*!< Rx Buffer DMA Enable */ +#define SPI_CR2_TXDMAEN ((uint8_t)0x02) /*!< Tx Buffer DMA Enable */ +#define SPI_CR2_SSOE ((uint8_t)0x04) /*!< SS Output Enable */ +#define SPI_CR2_ERRIE ((uint8_t)0x20) /*!< Error Interrupt Enable */ +#define SPI_CR2_RXNEIE ((uint8_t)0x40) /*!< RX buffer Not Empty Interrupt Enable */ +#define SPI_CR2_TXEIE ((uint8_t)0x80) /*!< Tx buffer Empty Interrupt Enable */ + +/******************** Bit definition for SPI_SR register ********************/ +#define SPI_SR_RXNE ((uint8_t)0x01) /*!< Receive buffer Not Empty */ +#define SPI_SR_TXE ((uint8_t)0x02) /*!< Transmit buffer Empty */ +#define SPI_SR_CHSIDE ((uint8_t)0x04) /*!< Channel side */ +#define SPI_SR_UDR ((uint8_t)0x08) /*!< Underrun flag */ +#define SPI_SR_CRCERR ((uint8_t)0x10) /*!< CRC Error flag */ +#define SPI_SR_MODF ((uint8_t)0x20) /*!< Mode fault */ +#define SPI_SR_OVR ((uint8_t)0x40) /*!< Overrun flag */ +#define SPI_SR_BSY ((uint8_t)0x80) /*!< Busy flag */ + +/******************** Bit definition for SPI_DR register ********************/ +#define SPI_DR_DR ((uint16_t)0xFFFF) /*!< Data Register */ + +/******************* Bit definition for SPI_CRCPR register ******************/ +#define SPI_CRCPR_CRCPOLY ((uint16_t)0xFFFF) /*!< CRC polynomial register */ + +/****************** Bit definition for SPI_RXCRCR register ******************/ +#define SPI_RXCRCR_RXCRC ((uint16_t)0xFFFF) /*!< Rx CRC Register */ + +/****************** Bit definition for SPI_TXCRCR register ******************/ +#define SPI_TXCRCR_TXCRC ((uint16_t)0xFFFF) /*!< Tx CRC Register */ + +/****************** Bit definition for SPI_I2SCFGR register *****************/ +#define SPI_I2SCFGR_CHLEN ((uint16_t)0x0001) /*!< Channel length (number of bits per audio channel) */ + +#define SPI_I2SCFGR_DATLEN ((uint16_t)0x0006) /*!< DATLEN[1:0] bits (Data length to be transferred) */ +#define SPI_I2SCFGR_DATLEN_0 ((uint16_t)0x0002) /*!< Bit 0 */ +#define SPI_I2SCFGR_DATLEN_1 ((uint16_t)0x0004) /*!< Bit 1 */ + +#define SPI_I2SCFGR_CKPOL ((uint16_t)0x0008) /*!< steady state clock polarity */ + +#define SPI_I2SCFGR_I2SSTD ((uint16_t)0x0030) /*!< I2SSTD[1:0] bits (I2S standard selection) */ +#define SPI_I2SCFGR_I2SSTD_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define SPI_I2SCFGR_I2SSTD_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define SPI_I2SCFGR_PCMSYNC ((uint16_t)0x0080) /*!< PCM frame synchronization */ + +#define SPI_I2SCFGR_I2SCFG ((uint16_t)0x0300) /*!< I2SCFG[1:0] bits (I2S configuration mode) */ +#define SPI_I2SCFGR_I2SCFG_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define SPI_I2SCFGR_I2SCFG_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define SPI_I2SCFGR_I2SE ((uint16_t)0x0400) /*!< I2S Enable */ +#define SPI_I2SCFGR_I2SMOD ((uint16_t)0x0800) /*!< I2S mode selection */ + +/****************** Bit definition for SPI_I2SPR register *******************/ +#define SPI_I2SPR_I2SDIV ((uint16_t)0x00FF) /*!< I2S Linear prescaler */ +#define SPI_I2SPR_ODD ((uint16_t)0x0100) /*!< Odd factor for the prescaler */ +#define SPI_I2SPR_MCKOE ((uint16_t)0x0200) /*!< Master Clock Output Enable */ + +/******************************************************************************/ +/* */ +/* Inter-integrated Circuit Interface */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for I2C_CR1 register ********************/ +#define I2C_CR1_PE ((uint16_t)0x0001) /*!< Peripheral Enable */ +#define I2C_CR1_SMBUS ((uint16_t)0x0002) /*!< SMBus Mode */ +#define I2C_CR1_SMBTYPE ((uint16_t)0x0008) /*!< SMBus Type */ +#define I2C_CR1_ENARP ((uint16_t)0x0010) /*!< ARP Enable */ +#define I2C_CR1_ENPEC ((uint16_t)0x0020) /*!< PEC Enable */ +#define I2C_CR1_ENGC ((uint16_t)0x0040) /*!< General Call Enable */ +#define I2C_CR1_NOSTRETCH ((uint16_t)0x0080) /*!< Clock Stretching Disable (Slave mode) */ +#define I2C_CR1_START ((uint16_t)0x0100) /*!< Start Generation */ +#define I2C_CR1_STOP ((uint16_t)0x0200) /*!< Stop Generation */ +#define I2C_CR1_ACK ((uint16_t)0x0400) /*!< Acknowledge Enable */ +#define I2C_CR1_POS ((uint16_t)0x0800) /*!< Acknowledge/PEC Position (for data reception) */ +#define I2C_CR1_PEC ((uint16_t)0x1000) /*!< Packet Error Checking */ +#define I2C_CR1_ALERT ((uint16_t)0x2000) /*!< SMBus Alert */ +#define I2C_CR1_SWRST ((uint16_t)0x8000) /*!< Software Reset */ + +/******************* Bit definition for I2C_CR2 register ********************/ +#define I2C_CR2_FREQ ((uint16_t)0x003F) /*!< FREQ[5:0] bits (Peripheral Clock Frequency) */ +#define I2C_CR2_FREQ_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define I2C_CR2_FREQ_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define I2C_CR2_FREQ_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define I2C_CR2_FREQ_3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define I2C_CR2_FREQ_4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define I2C_CR2_FREQ_5 ((uint16_t)0x0020) /*!< Bit 5 */ + +#define I2C_CR2_ITERREN ((uint16_t)0x0100) /*!< Error Interrupt Enable */ +#define I2C_CR2_ITEVTEN ((uint16_t)0x0200) /*!< Event Interrupt Enable */ +#define I2C_CR2_ITBUFEN ((uint16_t)0x0400) /*!< Buffer Interrupt Enable */ +#define I2C_CR2_DMAEN ((uint16_t)0x0800) /*!< DMA Requests Enable */ +#define I2C_CR2_LAST ((uint16_t)0x1000) /*!< DMA Last Transfer */ + +/******************* Bit definition for I2C_OAR1 register *******************/ +#define I2C_OAR1_ADD1_7 ((uint16_t)0x00FE) /*!< Interface Address */ +#define I2C_OAR1_ADD8_9 ((uint16_t)0x0300) /*!< Interface Address */ + +#define I2C_OAR1_ADD0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define I2C_OAR1_ADD1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define I2C_OAR1_ADD2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define I2C_OAR1_ADD3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define I2C_OAR1_ADD4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define I2C_OAR1_ADD5 ((uint16_t)0x0020) /*!< Bit 5 */ +#define I2C_OAR1_ADD6 ((uint16_t)0x0040) /*!< Bit 6 */ +#define I2C_OAR1_ADD7 ((uint16_t)0x0080) /*!< Bit 7 */ +#define I2C_OAR1_ADD8 ((uint16_t)0x0100) /*!< Bit 8 */ +#define I2C_OAR1_ADD9 ((uint16_t)0x0200) /*!< Bit 9 */ + +#define I2C_OAR1_ADDMODE ((uint16_t)0x8000) /*!< Addressing Mode (Slave mode) */ + +/******************* Bit definition for I2C_OAR2 register *******************/ +#define I2C_OAR2_ENDUAL ((uint8_t)0x01) /*!< Dual addressing mode enable */ +#define I2C_OAR2_ADD2 ((uint8_t)0xFE) /*!< Interface address */ + +/******************** Bit definition for I2C_DR register ********************/ +#define I2C_DR_DR ((uint8_t)0xFF) /*!< 8-bit Data Register */ + +/******************* Bit definition for I2C_SR1 register ********************/ +#define I2C_SR1_SB ((uint16_t)0x0001) /*!< Start Bit (Master mode) */ +#define I2C_SR1_ADDR ((uint16_t)0x0002) /*!< Address sent (master mode)/matched (slave mode) */ +#define I2C_SR1_BTF ((uint16_t)0x0004) /*!< Byte Transfer Finished */ +#define I2C_SR1_ADD10 ((uint16_t)0x0008) /*!< 10-bit header sent (Master mode) */ +#define I2C_SR1_STOPF ((uint16_t)0x0010) /*!< Stop detection (Slave mode) */ +#define I2C_SR1_RXNE ((uint16_t)0x0040) /*!< Data Register not Empty (receivers) */ +#define I2C_SR1_TXE ((uint16_t)0x0080) /*!< Data Register Empty (transmitters) */ +#define I2C_SR1_BERR ((uint16_t)0x0100) /*!< Bus Error */ +#define I2C_SR1_ARLO ((uint16_t)0x0200) /*!< Arbitration Lost (master mode) */ +#define I2C_SR1_AF ((uint16_t)0x0400) /*!< Acknowledge Failure */ +#define I2C_SR1_OVR ((uint16_t)0x0800) /*!< Overrun/Underrun */ +#define I2C_SR1_PECERR ((uint16_t)0x1000) /*!< PEC Error in reception */ +#define I2C_SR1_TIMEOUT ((uint16_t)0x4000) /*!< Timeout or Tlow Error */ +#define I2C_SR1_SMBALERT ((uint16_t)0x8000) /*!< SMBus Alert */ + +/******************* Bit definition for I2C_SR2 register ********************/ +#define I2C_SR2_MSL ((uint16_t)0x0001) /*!< Master/Slave */ +#define I2C_SR2_BUSY ((uint16_t)0x0002) /*!< Bus Busy */ +#define I2C_SR2_TRA ((uint16_t)0x0004) /*!< Transmitter/Receiver */ +#define I2C_SR2_GENCALL ((uint16_t)0x0010) /*!< General Call Address (Slave mode) */ +#define I2C_SR2_SMBDEFAULT ((uint16_t)0x0020) /*!< SMBus Device Default Address (Slave mode) */ +#define I2C_SR2_SMBHOST ((uint16_t)0x0040) /*!< SMBus Host Header (Slave mode) */ +#define I2C_SR2_DUALF ((uint16_t)0x0080) /*!< Dual Flag (Slave mode) */ +#define I2C_SR2_PEC ((uint16_t)0xFF00) /*!< Packet Error Checking Register */ + +/******************* Bit definition for I2C_CCR register ********************/ +#define I2C_CCR_CCR ((uint16_t)0x0FFF) /*!< Clock Control Register in Fast/Standard mode (Master mode) */ +#define I2C_CCR_DUTY ((uint16_t)0x4000) /*!< Fast Mode Duty Cycle */ +#define I2C_CCR_FS ((uint16_t)0x8000) /*!< I2C Master Mode Selection */ + +/****************** Bit definition for I2C_TRISE register *******************/ +#define I2C_TRISE_TRISE ((uint8_t)0x3F) /*!< Maximum Rise Time in Fast/Standard mode (Master mode) */ + +/******************************************************************************/ +/* */ +/* Universal Synchronous Asynchronous Receiver Transmitter */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for USART_SR register *******************/ +#define USART_SR_PE ((uint16_t)0x0001) /*!< Parity Error */ +#define USART_SR_FE ((uint16_t)0x0002) /*!< Framing Error */ +#define USART_SR_NE ((uint16_t)0x0004) /*!< Noise Error Flag */ +#define USART_SR_ORE ((uint16_t)0x0008) /*!< OverRun Error */ +#define USART_SR_IDLE ((uint16_t)0x0010) /*!< IDLE line detected */ +#define USART_SR_RXNE ((uint16_t)0x0020) /*!< Read Data Register Not Empty */ +#define USART_SR_TC ((uint16_t)0x0040) /*!< Transmission Complete */ +#define USART_SR_TXE ((uint16_t)0x0080) /*!< Transmit Data Register Empty */ +#define USART_SR_LBD ((uint16_t)0x0100) /*!< LIN Break Detection Flag */ +#define USART_SR_CTS ((uint16_t)0x0200) /*!< CTS Flag */ + +/******************* Bit definition for USART_DR register *******************/ +#define USART_DR_DR ((uint16_t)0x01FF) /*!< Data value */ + +/****************** Bit definition for USART_BRR register *******************/ +#define USART_BRR_DIV_Fraction ((uint16_t)0x000F) /*!< Fraction of USARTDIV */ +#define USART_BRR_DIV_Mantissa ((uint16_t)0xFFF0) /*!< Mantissa of USARTDIV */ + +/****************** Bit definition for USART_CR1 register *******************/ +#define USART_CR1_SBK ((uint16_t)0x0001) /*!< Send Break */ +#define USART_CR1_RWU ((uint16_t)0x0002) /*!< Receiver wakeup */ +#define USART_CR1_RE ((uint16_t)0x0004) /*!< Receiver Enable */ +#define USART_CR1_TE ((uint16_t)0x0008) /*!< Transmitter Enable */ +#define USART_CR1_IDLEIE ((uint16_t)0x0010) /*!< IDLE Interrupt Enable */ +#define USART_CR1_RXNEIE ((uint16_t)0x0020) /*!< RXNE Interrupt Enable */ +#define USART_CR1_TCIE ((uint16_t)0x0040) /*!< Transmission Complete Interrupt Enable */ +#define USART_CR1_TXEIE ((uint16_t)0x0080) /*!< PE Interrupt Enable */ +#define USART_CR1_PEIE ((uint16_t)0x0100) /*!< PE Interrupt Enable */ +#define USART_CR1_PS ((uint16_t)0x0200) /*!< Parity Selection */ +#define USART_CR1_PCE ((uint16_t)0x0400) /*!< Parity Control Enable */ +#define USART_CR1_WAKE ((uint16_t)0x0800) /*!< Wakeup method */ +#define USART_CR1_M ((uint16_t)0x1000) /*!< Word length */ +#define USART_CR1_UE ((uint16_t)0x2000) /*!< USART Enable */ +#define USART_CR1_OVER8 ((uint16_t)0x8000) /*!< USART Oversmapling 8-bits */ + +/****************** Bit definition for USART_CR2 register *******************/ +#define USART_CR2_ADD ((uint16_t)0x000F) /*!< Address of the USART node */ +#define USART_CR2_LBDL ((uint16_t)0x0020) /*!< LIN Break Detection Length */ +#define USART_CR2_LBDIE ((uint16_t)0x0040) /*!< LIN Break Detection Interrupt Enable */ +#define USART_CR2_LBCL ((uint16_t)0x0100) /*!< Last Bit Clock pulse */ +#define USART_CR2_CPHA ((uint16_t)0x0200) /*!< Clock Phase */ +#define USART_CR2_CPOL ((uint16_t)0x0400) /*!< Clock Polarity */ +#define USART_CR2_CLKEN ((uint16_t)0x0800) /*!< Clock Enable */ + +#define USART_CR2_STOP ((uint16_t)0x3000) /*!< STOP[1:0] bits (STOP bits) */ +#define USART_CR2_STOP_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USART_CR2_STOP_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USART_CR2_LINEN ((uint16_t)0x4000) /*!< LIN mode enable */ + +/****************** Bit definition for USART_CR3 register *******************/ +#define USART_CR3_EIE ((uint16_t)0x0001) /*!< Error Interrupt Enable */ +#define USART_CR3_IREN ((uint16_t)0x0002) /*!< IrDA mode Enable */ +#define USART_CR3_IRLP ((uint16_t)0x0004) /*!< IrDA Low-Power */ +#define USART_CR3_HDSEL ((uint16_t)0x0008) /*!< Half-Duplex Selection */ +#define USART_CR3_NACK ((uint16_t)0x0010) /*!< Smartcard NACK enable */ +#define USART_CR3_SCEN ((uint16_t)0x0020) /*!< Smartcard mode enable */ +#define USART_CR3_DMAR ((uint16_t)0x0040) /*!< DMA Enable Receiver */ +#define USART_CR3_DMAT ((uint16_t)0x0080) /*!< DMA Enable Transmitter */ +#define USART_CR3_RTSE ((uint16_t)0x0100) /*!< RTS Enable */ +#define USART_CR3_CTSE ((uint16_t)0x0200) /*!< CTS Enable */ +#define USART_CR3_CTSIE ((uint16_t)0x0400) /*!< CTS Interrupt Enable */ +#define USART_CR3_ONEBIT ((uint16_t)0x0800) /*!< One Bit method */ + +/****************** Bit definition for USART_GTPR register ******************/ +#define USART_GTPR_PSC ((uint16_t)0x00FF) /*!< PSC[7:0] bits (Prescaler value) */ +#define USART_GTPR_PSC_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define USART_GTPR_PSC_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define USART_GTPR_PSC_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define USART_GTPR_PSC_3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define USART_GTPR_PSC_4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define USART_GTPR_PSC_5 ((uint16_t)0x0020) /*!< Bit 5 */ +#define USART_GTPR_PSC_6 ((uint16_t)0x0040) /*!< Bit 6 */ +#define USART_GTPR_PSC_7 ((uint16_t)0x0080) /*!< Bit 7 */ + +#define USART_GTPR_GT ((uint16_t)0xFF00) /*!< Guard time value */ + +/******************************************************************************/ +/* */ +/* Debug MCU */ +/* */ +/******************************************************************************/ + +/**************** Bit definition for DBGMCU_IDCODE register *****************/ +#define DBGMCU_IDCODE_DEV_ID ((uint32_t)0x00000FFF) /*!< Device Identifier */ + +#define DBGMCU_IDCODE_REV_ID ((uint32_t)0xFFFF0000) /*!< REV_ID[15:0] bits (Revision Identifier) */ +#define DBGMCU_IDCODE_REV_ID_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define DBGMCU_IDCODE_REV_ID_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define DBGMCU_IDCODE_REV_ID_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define DBGMCU_IDCODE_REV_ID_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define DBGMCU_IDCODE_REV_ID_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define DBGMCU_IDCODE_REV_ID_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define DBGMCU_IDCODE_REV_ID_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define DBGMCU_IDCODE_REV_ID_7 ((uint32_t)0x00800000) /*!< Bit 7 */ +#define DBGMCU_IDCODE_REV_ID_8 ((uint32_t)0x01000000) /*!< Bit 8 */ +#define DBGMCU_IDCODE_REV_ID_9 ((uint32_t)0x02000000) /*!< Bit 9 */ +#define DBGMCU_IDCODE_REV_ID_10 ((uint32_t)0x04000000) /*!< Bit 10 */ +#define DBGMCU_IDCODE_REV_ID_11 ((uint32_t)0x08000000) /*!< Bit 11 */ +#define DBGMCU_IDCODE_REV_ID_12 ((uint32_t)0x10000000) /*!< Bit 12 */ +#define DBGMCU_IDCODE_REV_ID_13 ((uint32_t)0x20000000) /*!< Bit 13 */ +#define DBGMCU_IDCODE_REV_ID_14 ((uint32_t)0x40000000) /*!< Bit 14 */ +#define DBGMCU_IDCODE_REV_ID_15 ((uint32_t)0x80000000) /*!< Bit 15 */ + +/****************** Bit definition for DBGMCU_CR register *******************/ +#define DBGMCU_CR_DBG_SLEEP ((uint32_t)0x00000001) /*!< Debug Sleep Mode */ +#define DBGMCU_CR_DBG_STOP ((uint32_t)0x00000002) /*!< Debug Stop Mode */ +#define DBGMCU_CR_DBG_STANDBY ((uint32_t)0x00000004) /*!< Debug Standby mode */ +#define DBGMCU_CR_TRACE_IOEN ((uint32_t)0x00000020) /*!< Trace Pin Assignment Control */ + +#define DBGMCU_CR_TRACE_MODE ((uint32_t)0x000000C0) /*!< TRACE_MODE[1:0] bits (Trace Pin Assignment Control) */ +#define DBGMCU_CR_TRACE_MODE_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define DBGMCU_CR_TRACE_MODE_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define DBGMCU_CR_DBG_IWDG_STOP ((uint32_t)0x00000100) /*!< Debug Independent Watchdog stopped when Core is halted */ +#define DBGMCU_CR_DBG_WWDG_STOP ((uint32_t)0x00000200) /*!< Debug Window Watchdog stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM1_STOP ((uint32_t)0x00000400) /*!< TIM1 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM2_STOP ((uint32_t)0x00000800) /*!< TIM2 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM3_STOP ((uint32_t)0x00001000) /*!< TIM3 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM4_STOP ((uint32_t)0x00002000) /*!< TIM4 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_CAN1_STOP ((uint32_t)0x00004000) /*!< Debug CAN1 stopped when Core is halted */ +#define DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT ((uint32_t)0x00008000) /*!< SMBUS timeout mode stopped when Core is halted */ +#define DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT ((uint32_t)0x00010000) /*!< SMBUS timeout mode stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM8_STOP ((uint32_t)0x00020000) /*!< TIM8 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM5_STOP ((uint32_t)0x00040000) /*!< TIM5 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM6_STOP ((uint32_t)0x00080000) /*!< TIM6 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM7_STOP ((uint32_t)0x00100000) /*!< TIM7 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_CAN2_STOP ((uint32_t)0x00200000) /*!< Debug CAN2 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM15_STOP ((uint32_t)0x00400000) /*!< Debug TIM15 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM16_STOP ((uint32_t)0x00800000) /*!< Debug TIM16 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM17_STOP ((uint32_t)0x01000000) /*!< Debug TIM17 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM12_STOP ((uint32_t)0x02000000) /*!< Debug TIM12 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM13_STOP ((uint32_t)0x04000000) /*!< Debug TIM13 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM14_STOP ((uint32_t)0x08000000) /*!< Debug TIM14 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM9_STOP ((uint32_t)0x10000000) /*!< Debug TIM9 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM10_STOP ((uint32_t)0x20000000) /*!< Debug TIM10 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM11_STOP ((uint32_t)0x40000000) /*!< Debug TIM11 stopped when Core is halted */ + +/******************************************************************************/ +/* */ +/* FLASH and Option Bytes Registers */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for FLASH_ACR register ******************/ +#define FLASH_ACR_LATENCY ((uint8_t)0x03) /*!< LATENCY[2:0] bits (Latency) */ +#define FLASH_ACR_LATENCY_0 ((uint8_t)0x00) /*!< Bit 0 */ +#define FLASH_ACR_LATENCY_1 ((uint8_t)0x01) /*!< Bit 0 */ +#define FLASH_ACR_LATENCY_2 ((uint8_t)0x02) /*!< Bit 1 */ + +#define FLASH_ACR_HLFCYA ((uint8_t)0x08) /*!< Flash Half Cycle Access Enable */ +#define FLASH_ACR_PRFTBE ((uint8_t)0x10) /*!< Prefetch Buffer Enable */ +#define FLASH_ACR_PRFTBS ((uint8_t)0x20) /*!< Prefetch Buffer Status */ + +/****************** Bit definition for FLASH_KEYR register ******************/ +#define FLASH_KEYR_FKEYR ((uint32_t)0xFFFFFFFF) /*!< FPEC Key */ + +/***************** Bit definition for FLASH_OPTKEYR register ****************/ +#define FLASH_OPTKEYR_OPTKEYR ((uint32_t)0xFFFFFFFF) /*!< Option Byte Key */ + +/****************** Bit definition for FLASH_SR register *******************/ +#define FLASH_SR_BSY ((uint8_t)0x01) /*!< Busy */ +#define FLASH_SR_PGERR ((uint8_t)0x04) /*!< Programming Error */ +#define FLASH_SR_WRPRTERR ((uint8_t)0x10) /*!< Write Protection Error */ +#define FLASH_SR_EOP ((uint8_t)0x20) /*!< End of operation */ + +/******************* Bit definition for FLASH_CR register *******************/ +#define FLASH_CR_PG ((uint16_t)0x0001) /*!< Programming */ +#define FLASH_CR_PER ((uint16_t)0x0002) /*!< Page Erase */ +#define FLASH_CR_MER ((uint16_t)0x0004) /*!< Mass Erase */ +#define FLASH_CR_OPTPG ((uint16_t)0x0010) /*!< Option Byte Programming */ +#define FLASH_CR_OPTER ((uint16_t)0x0020) /*!< Option Byte Erase */ +#define FLASH_CR_STRT ((uint16_t)0x0040) /*!< Start */ +#define FLASH_CR_LOCK ((uint16_t)0x0080) /*!< Lock */ +#define FLASH_CR_OPTWRE ((uint16_t)0x0200) /*!< Option Bytes Write Enable */ +#define FLASH_CR_ERRIE ((uint16_t)0x0400) /*!< Error Interrupt Enable */ +#define FLASH_CR_EOPIE ((uint16_t)0x1000) /*!< End of operation interrupt enable */ + +/******************* Bit definition for FLASH_AR register *******************/ +#define FLASH_AR_FAR ((uint32_t)0xFFFFFFFF) /*!< Flash Address */ + +/****************** Bit definition for FLASH_OBR register *******************/ +#define FLASH_OBR_OPTERR ((uint16_t)0x0001) /*!< Option Byte Error */ +#define FLASH_OBR_RDPRT ((uint16_t)0x0002) /*!< Read protection */ + +#define FLASH_OBR_USER ((uint16_t)0x03FC) /*!< User Option Bytes */ +#define FLASH_OBR_WDG_SW ((uint16_t)0x0004) /*!< WDG_SW */ +#define FLASH_OBR_nRST_STOP ((uint16_t)0x0008) /*!< nRST_STOP */ +#define FLASH_OBR_nRST_STDBY ((uint16_t)0x0010) /*!< nRST_STDBY */ +#define FLASH_OBR_BFB2 ((uint16_t)0x0020) /*!< BFB2 */ + +/****************** Bit definition for FLASH_WRPR register ******************/ +#define FLASH_WRPR_WRP ((uint32_t)0xFFFFFFFF) /*!< Write Protect */ + +/*----------------------------------------------------------------------------*/ + +/****************** Bit definition for FLASH_RDP register *******************/ +#define FLASH_RDP_RDP ((uint32_t)0x000000FF) /*!< Read protection option byte */ +#define FLASH_RDP_nRDP ((uint32_t)0x0000FF00) /*!< Read protection complemented option byte */ + +/****************** Bit definition for FLASH_USER register ******************/ +#define FLASH_USER_USER ((uint32_t)0x00FF0000) /*!< User option byte */ +#define FLASH_USER_nUSER ((uint32_t)0xFF000000) /*!< User complemented option byte */ + +/****************** Bit definition for FLASH_Data0 register *****************/ +#define FLASH_Data0_Data0 ((uint32_t)0x000000FF) /*!< User data storage option byte */ +#define FLASH_Data0_nData0 ((uint32_t)0x0000FF00) /*!< User data storage complemented option byte */ + +/****************** Bit definition for FLASH_Data1 register *****************/ +#define FLASH_Data1_Data1 ((uint32_t)0x00FF0000) /*!< User data storage option byte */ +#define FLASH_Data1_nData1 ((uint32_t)0xFF000000) /*!< User data storage complemented option byte */ + +/****************** Bit definition for FLASH_WRP0 register ******************/ +#define FLASH_WRP0_WRP0 ((uint32_t)0x000000FF) /*!< Flash memory write protection option bytes */ +#define FLASH_WRP0_nWRP0 ((uint32_t)0x0000FF00) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP1 register ******************/ +#define FLASH_WRP1_WRP1 ((uint32_t)0x00FF0000) /*!< Flash memory write protection option bytes */ +#define FLASH_WRP1_nWRP1 ((uint32_t)0xFF000000) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP2 register ******************/ +#define FLASH_WRP2_WRP2 ((uint32_t)0x000000FF) /*!< Flash memory write protection option bytes */ +#define FLASH_WRP2_nWRP2 ((uint32_t)0x0000FF00) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP3 register ******************/ +#define FLASH_WRP3_WRP3 ((uint32_t)0x00FF0000) /*!< Flash memory write protection option bytes */ +#define FLASH_WRP3_nWRP3 ((uint32_t)0xFF000000) /*!< Flash memory write protection complemented option bytes */ + +#ifdef STM32F10X_CL +/******************************************************************************/ +/* Ethernet MAC Registers bits definitions */ +/******************************************************************************/ +/* Bit definition for Ethernet MAC Control Register register */ +#define ETH_MACCR_WD ((uint32_t)0x00800000) /* Watchdog disable */ +#define ETH_MACCR_JD ((uint32_t)0x00400000) /* Jabber disable */ +#define ETH_MACCR_IFG ((uint32_t)0x000E0000) /* Inter-frame gap */ + #define ETH_MACCR_IFG_96Bit ((uint32_t)0x00000000) /* Minimum IFG between frames during transmission is 96Bit */ + #define ETH_MACCR_IFG_88Bit ((uint32_t)0x00020000) /* Minimum IFG between frames during transmission is 88Bit */ + #define ETH_MACCR_IFG_80Bit ((uint32_t)0x00040000) /* Minimum IFG between frames during transmission is 80Bit */ + #define ETH_MACCR_IFG_72Bit ((uint32_t)0x00060000) /* Minimum IFG between frames during transmission is 72Bit */ + #define ETH_MACCR_IFG_64Bit ((uint32_t)0x00080000) /* Minimum IFG between frames during transmission is 64Bit */ + #define ETH_MACCR_IFG_56Bit ((uint32_t)0x000A0000) /* Minimum IFG between frames during transmission is 56Bit */ + #define ETH_MACCR_IFG_48Bit ((uint32_t)0x000C0000) /* Minimum IFG between frames during transmission is 48Bit */ + #define ETH_MACCR_IFG_40Bit ((uint32_t)0x000E0000) /* Minimum IFG between frames during transmission is 40Bit */ +#define ETH_MACCR_CSD ((uint32_t)0x00010000) /* Carrier sense disable (during transmission) */ +#define ETH_MACCR_FES ((uint32_t)0x00004000) /* Fast ethernet speed */ +#define ETH_MACCR_ROD ((uint32_t)0x00002000) /* Receive own disable */ +#define ETH_MACCR_LM ((uint32_t)0x00001000) /* loopback mode */ +#define ETH_MACCR_DM ((uint32_t)0x00000800) /* Duplex mode */ +#define ETH_MACCR_IPCO ((uint32_t)0x00000400) /* IP Checksum offload */ +#define ETH_MACCR_RD ((uint32_t)0x00000200) /* Retry disable */ +#define ETH_MACCR_APCS ((uint32_t)0x00000080) /* Automatic Pad/CRC stripping */ +#define ETH_MACCR_BL ((uint32_t)0x00000060) /* Back-off limit: random integer number (r) of slot time delays before rescheduling + a transmission attempt during retries after a collision: 0 =< r <2^k */ + #define ETH_MACCR_BL_10 ((uint32_t)0x00000000) /* k = min (n, 10) */ + #define ETH_MACCR_BL_8 ((uint32_t)0x00000020) /* k = min (n, 8) */ + #define ETH_MACCR_BL_4 ((uint32_t)0x00000040) /* k = min (n, 4) */ + #define ETH_MACCR_BL_1 ((uint32_t)0x00000060) /* k = min (n, 1) */ +#define ETH_MACCR_DC ((uint32_t)0x00000010) /* Defferal check */ +#define ETH_MACCR_TE ((uint32_t)0x00000008) /* Transmitter enable */ +#define ETH_MACCR_RE ((uint32_t)0x00000004) /* Receiver enable */ + +/* Bit definition for Ethernet MAC Frame Filter Register */ +#define ETH_MACFFR_RA ((uint32_t)0x80000000) /* Receive all */ +#define ETH_MACFFR_HPF ((uint32_t)0x00000400) /* Hash or perfect filter */ +#define ETH_MACFFR_SAF ((uint32_t)0x00000200) /* Source address filter enable */ +#define ETH_MACFFR_SAIF ((uint32_t)0x00000100) /* SA inverse filtering */ +#define ETH_MACFFR_PCF ((uint32_t)0x000000C0) /* Pass control frames: 3 cases */ + #define ETH_MACFFR_PCF_BlockAll ((uint32_t)0x00000040) /* MAC filters all control frames from reaching the application */ + #define ETH_MACFFR_PCF_ForwardAll ((uint32_t)0x00000080) /* MAC forwards all control frames to application even if they fail the Address Filter */ + #define ETH_MACFFR_PCF_ForwardPassedAddrFilter ((uint32_t)0x000000C0) /* MAC forwards control frames that pass the Address Filter. */ +#define ETH_MACFFR_BFD ((uint32_t)0x00000020) /* Broadcast frame disable */ +#define ETH_MACFFR_PAM ((uint32_t)0x00000010) /* Pass all mutlicast */ +#define ETH_MACFFR_DAIF ((uint32_t)0x00000008) /* DA Inverse filtering */ +#define ETH_MACFFR_HM ((uint32_t)0x00000004) /* Hash multicast */ +#define ETH_MACFFR_HU ((uint32_t)0x00000002) /* Hash unicast */ +#define ETH_MACFFR_PM ((uint32_t)0x00000001) /* Promiscuous mode */ + +/* Bit definition for Ethernet MAC Hash Table High Register */ +#define ETH_MACHTHR_HTH ((uint32_t)0xFFFFFFFF) /* Hash table high */ + +/* Bit definition for Ethernet MAC Hash Table Low Register */ +#define ETH_MACHTLR_HTL ((uint32_t)0xFFFFFFFF) /* Hash table low */ + +/* Bit definition for Ethernet MAC MII Address Register */ +#define ETH_MACMIIAR_PA ((uint32_t)0x0000F800) /* Physical layer address */ +#define ETH_MACMIIAR_MR ((uint32_t)0x000007C0) /* MII register in the selected PHY */ +#define ETH_MACMIIAR_CR ((uint32_t)0x0000001C) /* CR clock range: 6 cases */ + #define ETH_MACMIIAR_CR_Div42 ((uint32_t)0x00000000) /* HCLK:60-72 MHz; MDC clock= HCLK/42 */ + #define ETH_MACMIIAR_CR_Div16 ((uint32_t)0x00000008) /* HCLK:20-35 MHz; MDC clock= HCLK/16 */ + #define ETH_MACMIIAR_CR_Div26 ((uint32_t)0x0000000C) /* HCLK:35-60 MHz; MDC clock= HCLK/26 */ +#define ETH_MACMIIAR_MW ((uint32_t)0x00000002) /* MII write */ +#define ETH_MACMIIAR_MB ((uint32_t)0x00000001) /* MII busy */ + +/* Bit definition for Ethernet MAC MII Data Register */ +#define ETH_MACMIIDR_MD ((uint32_t)0x0000FFFF) /* MII data: read/write data from/to PHY */ + +/* Bit definition for Ethernet MAC Flow Control Register */ +#define ETH_MACFCR_PT ((uint32_t)0xFFFF0000) /* Pause time */ +#define ETH_MACFCR_ZQPD ((uint32_t)0x00000080) /* Zero-quanta pause disable */ +#define ETH_MACFCR_PLT ((uint32_t)0x00000030) /* Pause low threshold: 4 cases */ + #define ETH_MACFCR_PLT_Minus4 ((uint32_t)0x00000000) /* Pause time minus 4 slot times */ + #define ETH_MACFCR_PLT_Minus28 ((uint32_t)0x00000010) /* Pause time minus 28 slot times */ + #define ETH_MACFCR_PLT_Minus144 ((uint32_t)0x00000020) /* Pause time minus 144 slot times */ + #define ETH_MACFCR_PLT_Minus256 ((uint32_t)0x00000030) /* Pause time minus 256 slot times */ +#define ETH_MACFCR_UPFD ((uint32_t)0x00000008) /* Unicast pause frame detect */ +#define ETH_MACFCR_RFCE ((uint32_t)0x00000004) /* Receive flow control enable */ +#define ETH_MACFCR_TFCE ((uint32_t)0x00000002) /* Transmit flow control enable */ +#define ETH_MACFCR_FCBBPA ((uint32_t)0x00000001) /* Flow control busy/backpressure activate */ + +/* Bit definition for Ethernet MAC VLAN Tag Register */ +#define ETH_MACVLANTR_VLANTC ((uint32_t)0x00010000) /* 12-bit VLAN tag comparison */ +#define ETH_MACVLANTR_VLANTI ((uint32_t)0x0000FFFF) /* VLAN tag identifier (for receive frames) */ + +/* Bit definition for Ethernet MAC Remote Wake-UpFrame Filter Register */ +#define ETH_MACRWUFFR_D ((uint32_t)0xFFFFFFFF) /* Wake-up frame filter register data */ +/* Eight sequential Writes to this address (offset 0x28) will write all Wake-UpFrame Filter Registers. + Eight sequential Reads from this address (offset 0x28) will read all Wake-UpFrame Filter Registers. */ +/* Wake-UpFrame Filter Reg0 : Filter 0 Byte Mask + Wake-UpFrame Filter Reg1 : Filter 1 Byte Mask + Wake-UpFrame Filter Reg2 : Filter 2 Byte Mask + Wake-UpFrame Filter Reg3 : Filter 3 Byte Mask + Wake-UpFrame Filter Reg4 : RSVD - Filter3 Command - RSVD - Filter2 Command - + RSVD - Filter1 Command - RSVD - Filter0 Command + Wake-UpFrame Filter Re5 : Filter3 Offset - Filter2 Offset - Filter1 Offset - Filter0 Offset + Wake-UpFrame Filter Re6 : Filter1 CRC16 - Filter0 CRC16 + Wake-UpFrame Filter Re7 : Filter3 CRC16 - Filter2 CRC16 */ + +/* Bit definition for Ethernet MAC PMT Control and Status Register */ +#define ETH_MACPMTCSR_WFFRPR ((uint32_t)0x80000000) /* Wake-Up Frame Filter Register Pointer Reset */ +#define ETH_MACPMTCSR_GU ((uint32_t)0x00000200) /* Global Unicast */ +#define ETH_MACPMTCSR_WFR ((uint32_t)0x00000040) /* Wake-Up Frame Received */ +#define ETH_MACPMTCSR_MPR ((uint32_t)0x00000020) /* Magic Packet Received */ +#define ETH_MACPMTCSR_WFE ((uint32_t)0x00000004) /* Wake-Up Frame Enable */ +#define ETH_MACPMTCSR_MPE ((uint32_t)0x00000002) /* Magic Packet Enable */ +#define ETH_MACPMTCSR_PD ((uint32_t)0x00000001) /* Power Down */ + +/* Bit definition for Ethernet MAC Status Register */ +#define ETH_MACSR_TSTS ((uint32_t)0x00000200) /* Time stamp trigger status */ +#define ETH_MACSR_MMCTS ((uint32_t)0x00000040) /* MMC transmit status */ +#define ETH_MACSR_MMMCRS ((uint32_t)0x00000020) /* MMC receive status */ +#define ETH_MACSR_MMCS ((uint32_t)0x00000010) /* MMC status */ +#define ETH_MACSR_PMTS ((uint32_t)0x00000008) /* PMT status */ + +/* Bit definition for Ethernet MAC Interrupt Mask Register */ +#define ETH_MACIMR_TSTIM ((uint32_t)0x00000200) /* Time stamp trigger interrupt mask */ +#define ETH_MACIMR_PMTIM ((uint32_t)0x00000008) /* PMT interrupt mask */ + +/* Bit definition for Ethernet MAC Address0 High Register */ +#define ETH_MACA0HR_MACA0H ((uint32_t)0x0000FFFF) /* MAC address0 high */ + +/* Bit definition for Ethernet MAC Address0 Low Register */ +#define ETH_MACA0LR_MACA0L ((uint32_t)0xFFFFFFFF) /* MAC address0 low */ + +/* Bit definition for Ethernet MAC Address1 High Register */ +#define ETH_MACA1HR_AE ((uint32_t)0x80000000) /* Address enable */ +#define ETH_MACA1HR_SA ((uint32_t)0x40000000) /* Source address */ +#define ETH_MACA1HR_MBC ((uint32_t)0x3F000000) /* Mask byte control: bits to mask for comparison of the MAC Address bytes */ + #define ETH_MACA1HR_MBC_HBits15_8 ((uint32_t)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA1HR_MBC_HBits7_0 ((uint32_t)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA1HR_MBC_LBits31_24 ((uint32_t)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA1HR_MBC_LBits23_16 ((uint32_t)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA1HR_MBC_LBits15_8 ((uint32_t)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA1HR_MBC_LBits7_0 ((uint32_t)0x01000000) /* Mask MAC Address low reg bits [7:0] */ +#define ETH_MACA1HR_MACA1H ((uint32_t)0x0000FFFF) /* MAC address1 high */ + +/* Bit definition for Ethernet MAC Address1 Low Register */ +#define ETH_MACA1LR_MACA1L ((uint32_t)0xFFFFFFFF) /* MAC address1 low */ + +/* Bit definition for Ethernet MAC Address2 High Register */ +#define ETH_MACA2HR_AE ((uint32_t)0x80000000) /* Address enable */ +#define ETH_MACA2HR_SA ((uint32_t)0x40000000) /* Source address */ +#define ETH_MACA2HR_MBC ((uint32_t)0x3F000000) /* Mask byte control */ + #define ETH_MACA2HR_MBC_HBits15_8 ((uint32_t)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA2HR_MBC_HBits7_0 ((uint32_t)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA2HR_MBC_LBits31_24 ((uint32_t)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA2HR_MBC_LBits23_16 ((uint32_t)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA2HR_MBC_LBits15_8 ((uint32_t)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA2HR_MBC_LBits7_0 ((uint32_t)0x01000000) /* Mask MAC Address low reg bits [70] */ +#define ETH_MACA2HR_MACA2H ((uint32_t)0x0000FFFF) /* MAC address1 high */ + +/* Bit definition for Ethernet MAC Address2 Low Register */ +#define ETH_MACA2LR_MACA2L ((uint32_t)0xFFFFFFFF) /* MAC address2 low */ + +/* Bit definition for Ethernet MAC Address3 High Register */ +#define ETH_MACA3HR_AE ((uint32_t)0x80000000) /* Address enable */ +#define ETH_MACA3HR_SA ((uint32_t)0x40000000) /* Source address */ +#define ETH_MACA3HR_MBC ((uint32_t)0x3F000000) /* Mask byte control */ + #define ETH_MACA3HR_MBC_HBits15_8 ((uint32_t)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA3HR_MBC_HBits7_0 ((uint32_t)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA3HR_MBC_LBits31_24 ((uint32_t)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA3HR_MBC_LBits23_16 ((uint32_t)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA3HR_MBC_LBits15_8 ((uint32_t)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA3HR_MBC_LBits7_0 ((uint32_t)0x01000000) /* Mask MAC Address low reg bits [70] */ +#define ETH_MACA3HR_MACA3H ((uint32_t)0x0000FFFF) /* MAC address3 high */ + +/* Bit definition for Ethernet MAC Address3 Low Register */ +#define ETH_MACA3LR_MACA3L ((uint32_t)0xFFFFFFFF) /* MAC address3 low */ + +/******************************************************************************/ +/* Ethernet MMC Registers bits definition */ +/******************************************************************************/ + +/* Bit definition for Ethernet MMC Contol Register */ +#define ETH_MMCCR_MCF ((uint32_t)0x00000008) /* MMC Counter Freeze */ +#define ETH_MMCCR_ROR ((uint32_t)0x00000004) /* Reset on Read */ +#define ETH_MMCCR_CSR ((uint32_t)0x00000002) /* Counter Stop Rollover */ +#define ETH_MMCCR_CR ((uint32_t)0x00000001) /* Counters Reset */ + +/* Bit definition for Ethernet MMC Receive Interrupt Register */ +#define ETH_MMCRIR_RGUFS ((uint32_t)0x00020000) /* Set when Rx good unicast frames counter reaches half the maximum value */ +#define ETH_MMCRIR_RFAES ((uint32_t)0x00000040) /* Set when Rx alignment error counter reaches half the maximum value */ +#define ETH_MMCRIR_RFCES ((uint32_t)0x00000020) /* Set when Rx crc error counter reaches half the maximum value */ + +/* Bit definition for Ethernet MMC Transmit Interrupt Register */ +#define ETH_MMCTIR_TGFS ((uint32_t)0x00200000) /* Set when Tx good frame count counter reaches half the maximum value */ +#define ETH_MMCTIR_TGFMSCS ((uint32_t)0x00008000) /* Set when Tx good multi col counter reaches half the maximum value */ +#define ETH_MMCTIR_TGFSCS ((uint32_t)0x00004000) /* Set when Tx good single col counter reaches half the maximum value */ + +/* Bit definition for Ethernet MMC Receive Interrupt Mask Register */ +#define ETH_MMCRIMR_RGUFM ((uint32_t)0x00020000) /* Mask the interrupt when Rx good unicast frames counter reaches half the maximum value */ +#define ETH_MMCRIMR_RFAEM ((uint32_t)0x00000040) /* Mask the interrupt when when Rx alignment error counter reaches half the maximum value */ +#define ETH_MMCRIMR_RFCEM ((uint32_t)0x00000020) /* Mask the interrupt when Rx crc error counter reaches half the maximum value */ + +/* Bit definition for Ethernet MMC Transmit Interrupt Mask Register */ +#define ETH_MMCTIMR_TGFM ((uint32_t)0x00200000) /* Mask the interrupt when Tx good frame count counter reaches half the maximum value */ +#define ETH_MMCTIMR_TGFMSCM ((uint32_t)0x00008000) /* Mask the interrupt when Tx good multi col counter reaches half the maximum value */ +#define ETH_MMCTIMR_TGFSCM ((uint32_t)0x00004000) /* Mask the interrupt when Tx good single col counter reaches half the maximum value */ + +/* Bit definition for Ethernet MMC Transmitted Good Frames after Single Collision Counter Register */ +#define ETH_MMCTGFSCCR_TGFSCC ((uint32_t)0xFFFFFFFF) /* Number of successfully transmitted frames after a single collision in Half-duplex mode. */ + +/* Bit definition for Ethernet MMC Transmitted Good Frames after More than a Single Collision Counter Register */ +#define ETH_MMCTGFMSCCR_TGFMSCC ((uint32_t)0xFFFFFFFF) /* Number of successfully transmitted frames after more than a single collision in Half-duplex mode. */ + +/* Bit definition for Ethernet MMC Transmitted Good Frames Counter Register */ +#define ETH_MMCTGFCR_TGFC ((uint32_t)0xFFFFFFFF) /* Number of good frames transmitted. */ + +/* Bit definition for Ethernet MMC Received Frames with CRC Error Counter Register */ +#define ETH_MMCRFCECR_RFCEC ((uint32_t)0xFFFFFFFF) /* Number of frames received with CRC error. */ + +/* Bit definition for Ethernet MMC Received Frames with Alignement Error Counter Register */ +#define ETH_MMCRFAECR_RFAEC ((uint32_t)0xFFFFFFFF) /* Number of frames received with alignment (dribble) error */ + +/* Bit definition for Ethernet MMC Received Good Unicast Frames Counter Register */ +#define ETH_MMCRGUFCR_RGUFC ((uint32_t)0xFFFFFFFF) /* Number of good unicast frames received. */ + +/******************************************************************************/ +/* Ethernet PTP Registers bits definition */ +/******************************************************************************/ + +/* Bit definition for Ethernet PTP Time Stamp Contol Register */ +#define ETH_PTPTSCR_TSARU ((uint32_t)0x00000020) /* Addend register update */ +#define ETH_PTPTSCR_TSITE ((uint32_t)0x00000010) /* Time stamp interrupt trigger enable */ +#define ETH_PTPTSCR_TSSTU ((uint32_t)0x00000008) /* Time stamp update */ +#define ETH_PTPTSCR_TSSTI ((uint32_t)0x00000004) /* Time stamp initialize */ +#define ETH_PTPTSCR_TSFCU ((uint32_t)0x00000002) /* Time stamp fine or coarse update */ +#define ETH_PTPTSCR_TSE ((uint32_t)0x00000001) /* Time stamp enable */ + +/* Bit definition for Ethernet PTP Sub-Second Increment Register */ +#define ETH_PTPSSIR_STSSI ((uint32_t)0x000000FF) /* System time Sub-second increment value */ + +/* Bit definition for Ethernet PTP Time Stamp High Register */ +#define ETH_PTPTSHR_STS ((uint32_t)0xFFFFFFFF) /* System Time second */ + +/* Bit definition for Ethernet PTP Time Stamp Low Register */ +#define ETH_PTPTSLR_STPNS ((uint32_t)0x80000000) /* System Time Positive or negative time */ +#define ETH_PTPTSLR_STSS ((uint32_t)0x7FFFFFFF) /* System Time sub-seconds */ + +/* Bit definition for Ethernet PTP Time Stamp High Update Register */ +#define ETH_PTPTSHUR_TSUS ((uint32_t)0xFFFFFFFF) /* Time stamp update seconds */ + +/* Bit definition for Ethernet PTP Time Stamp Low Update Register */ +#define ETH_PTPTSLUR_TSUPNS ((uint32_t)0x80000000) /* Time stamp update Positive or negative time */ +#define ETH_PTPTSLUR_TSUSS ((uint32_t)0x7FFFFFFF) /* Time stamp update sub-seconds */ + +/* Bit definition for Ethernet PTP Time Stamp Addend Register */ +#define ETH_PTPTSAR_TSA ((uint32_t)0xFFFFFFFF) /* Time stamp addend */ + +/* Bit definition for Ethernet PTP Target Time High Register */ +#define ETH_PTPTTHR_TTSH ((uint32_t)0xFFFFFFFF) /* Target time stamp high */ + +/* Bit definition for Ethernet PTP Target Time Low Register */ +#define ETH_PTPTTLR_TTSL ((uint32_t)0xFFFFFFFF) /* Target time stamp low */ + +/******************************************************************************/ +/* Ethernet DMA Registers bits definition */ +/******************************************************************************/ + +/* Bit definition for Ethernet DMA Bus Mode Register */ +#define ETH_DMABMR_AAB ((uint32_t)0x02000000) /* Address-Aligned beats */ +#define ETH_DMABMR_FPM ((uint32_t)0x01000000) /* 4xPBL mode */ +#define ETH_DMABMR_USP ((uint32_t)0x00800000) /* Use separate PBL */ +#define ETH_DMABMR_RDP ((uint32_t)0x007E0000) /* RxDMA PBL */ + #define ETH_DMABMR_RDP_1Beat ((uint32_t)0x00020000) /* maximum number of beats to be transferred in one RxDMA transaction is 1 */ + #define ETH_DMABMR_RDP_2Beat ((uint32_t)0x00040000) /* maximum number of beats to be transferred in one RxDMA transaction is 2 */ + #define ETH_DMABMR_RDP_4Beat ((uint32_t)0x00080000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */ + #define ETH_DMABMR_RDP_8Beat ((uint32_t)0x00100000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */ + #define ETH_DMABMR_RDP_16Beat ((uint32_t)0x00200000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */ + #define ETH_DMABMR_RDP_32Beat ((uint32_t)0x00400000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */ + #define ETH_DMABMR_RDP_4xPBL_4Beat ((uint32_t)0x01020000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */ + #define ETH_DMABMR_RDP_4xPBL_8Beat ((uint32_t)0x01040000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */ + #define ETH_DMABMR_RDP_4xPBL_16Beat ((uint32_t)0x01080000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */ + #define ETH_DMABMR_RDP_4xPBL_32Beat ((uint32_t)0x01100000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */ + #define ETH_DMABMR_RDP_4xPBL_64Beat ((uint32_t)0x01200000) /* maximum number of beats to be transferred in one RxDMA transaction is 64 */ + #define ETH_DMABMR_RDP_4xPBL_128Beat ((uint32_t)0x01400000) /* maximum number of beats to be transferred in one RxDMA transaction is 128 */ +#define ETH_DMABMR_FB ((uint32_t)0x00010000) /* Fixed Burst */ +#define ETH_DMABMR_RTPR ((uint32_t)0x0000C000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_1_1 ((uint32_t)0x00000000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_2_1 ((uint32_t)0x00004000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_3_1 ((uint32_t)0x00008000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_4_1 ((uint32_t)0x0000C000) /* Rx Tx priority ratio */ +#define ETH_DMABMR_PBL ((uint32_t)0x00003F00) /* Programmable burst length */ + #define ETH_DMABMR_PBL_1Beat ((uint32_t)0x00000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 1 */ + #define ETH_DMABMR_PBL_2Beat ((uint32_t)0x00000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 2 */ + #define ETH_DMABMR_PBL_4Beat ((uint32_t)0x00000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */ + #define ETH_DMABMR_PBL_8Beat ((uint32_t)0x00000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */ + #define ETH_DMABMR_PBL_16Beat ((uint32_t)0x00001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */ + #define ETH_DMABMR_PBL_32Beat ((uint32_t)0x00002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */ + #define ETH_DMABMR_PBL_4xPBL_4Beat ((uint32_t)0x01000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */ + #define ETH_DMABMR_PBL_4xPBL_8Beat ((uint32_t)0x01000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */ + #define ETH_DMABMR_PBL_4xPBL_16Beat ((uint32_t)0x01000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */ + #define ETH_DMABMR_PBL_4xPBL_32Beat ((uint32_t)0x01000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */ + #define ETH_DMABMR_PBL_4xPBL_64Beat ((uint32_t)0x01001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 64 */ + #define ETH_DMABMR_PBL_4xPBL_128Beat ((uint32_t)0x01002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 128 */ +#define ETH_DMABMR_DSL ((uint32_t)0x0000007C) /* Descriptor Skip Length */ +#define ETH_DMABMR_DA ((uint32_t)0x00000002) /* DMA arbitration scheme */ +#define ETH_DMABMR_SR ((uint32_t)0x00000001) /* Software reset */ + +/* Bit definition for Ethernet DMA Transmit Poll Demand Register */ +#define ETH_DMATPDR_TPD ((uint32_t)0xFFFFFFFF) /* Transmit poll demand */ + +/* Bit definition for Ethernet DMA Receive Poll Demand Register */ +#define ETH_DMARPDR_RPD ((uint32_t)0xFFFFFFFF) /* Receive poll demand */ + +/* Bit definition for Ethernet DMA Receive Descriptor List Address Register */ +#define ETH_DMARDLAR_SRL ((uint32_t)0xFFFFFFFF) /* Start of receive list */ + +/* Bit definition for Ethernet DMA Transmit Descriptor List Address Register */ +#define ETH_DMATDLAR_STL ((uint32_t)0xFFFFFFFF) /* Start of transmit list */ + +/* Bit definition for Ethernet DMA Status Register */ +#define ETH_DMASR_TSTS ((uint32_t)0x20000000) /* Time-stamp trigger status */ +#define ETH_DMASR_PMTS ((uint32_t)0x10000000) /* PMT status */ +#define ETH_DMASR_MMCS ((uint32_t)0x08000000) /* MMC status */ +#define ETH_DMASR_EBS ((uint32_t)0x03800000) /* Error bits status */ + /* combination with EBS[2:0] for GetFlagStatus function */ + #define ETH_DMASR_EBS_DescAccess ((uint32_t)0x02000000) /* Error bits 0-data buffer, 1-desc. access */ + #define ETH_DMASR_EBS_ReadTransf ((uint32_t)0x01000000) /* Error bits 0-write trnsf, 1-read transfr */ + #define ETH_DMASR_EBS_DataTransfTx ((uint32_t)0x00800000) /* Error bits 0-Rx DMA, 1-Tx DMA */ +#define ETH_DMASR_TPS ((uint32_t)0x00700000) /* Transmit process state */ + #define ETH_DMASR_TPS_Stopped ((uint32_t)0x00000000) /* Stopped - Reset or Stop Tx Command issued */ + #define ETH_DMASR_TPS_Fetching ((uint32_t)0x00100000) /* Running - fetching the Tx descriptor */ + #define ETH_DMASR_TPS_Waiting ((uint32_t)0x00200000) /* Running - waiting for status */ + #define ETH_DMASR_TPS_Reading ((uint32_t)0x00300000) /* Running - reading the data from host memory */ + #define ETH_DMASR_TPS_Suspended ((uint32_t)0x00600000) /* Suspended - Tx Descriptor unavailabe */ + #define ETH_DMASR_TPS_Closing ((uint32_t)0x00700000) /* Running - closing Rx descriptor */ +#define ETH_DMASR_RPS ((uint32_t)0x000E0000) /* Receive process state */ + #define ETH_DMASR_RPS_Stopped ((uint32_t)0x00000000) /* Stopped - Reset or Stop Rx Command issued */ + #define ETH_DMASR_RPS_Fetching ((uint32_t)0x00020000) /* Running - fetching the Rx descriptor */ + #define ETH_DMASR_RPS_Waiting ((uint32_t)0x00060000) /* Running - waiting for packet */ + #define ETH_DMASR_RPS_Suspended ((uint32_t)0x00080000) /* Suspended - Rx Descriptor unavailable */ + #define ETH_DMASR_RPS_Closing ((uint32_t)0x000A0000) /* Running - closing descriptor */ + #define ETH_DMASR_RPS_Queuing ((uint32_t)0x000E0000) /* Running - queuing the recieve frame into host memory */ +#define ETH_DMASR_NIS ((uint32_t)0x00010000) /* Normal interrupt summary */ +#define ETH_DMASR_AIS ((uint32_t)0x00008000) /* Abnormal interrupt summary */ +#define ETH_DMASR_ERS ((uint32_t)0x00004000) /* Early receive status */ +#define ETH_DMASR_FBES ((uint32_t)0x00002000) /* Fatal bus error status */ +#define ETH_DMASR_ETS ((uint32_t)0x00000400) /* Early transmit status */ +#define ETH_DMASR_RWTS ((uint32_t)0x00000200) /* Receive watchdog timeout status */ +#define ETH_DMASR_RPSS ((uint32_t)0x00000100) /* Receive process stopped status */ +#define ETH_DMASR_RBUS ((uint32_t)0x00000080) /* Receive buffer unavailable status */ +#define ETH_DMASR_RS ((uint32_t)0x00000040) /* Receive status */ +#define ETH_DMASR_TUS ((uint32_t)0x00000020) /* Transmit underflow status */ +#define ETH_DMASR_ROS ((uint32_t)0x00000010) /* Receive overflow status */ +#define ETH_DMASR_TJTS ((uint32_t)0x00000008) /* Transmit jabber timeout status */ +#define ETH_DMASR_TBUS ((uint32_t)0x00000004) /* Transmit buffer unavailable status */ +#define ETH_DMASR_TPSS ((uint32_t)0x00000002) /* Transmit process stopped status */ +#define ETH_DMASR_TS ((uint32_t)0x00000001) /* Transmit status */ + +/* Bit definition for Ethernet DMA Operation Mode Register */ +#define ETH_DMAOMR_DTCEFD ((uint32_t)0x04000000) /* Disable Dropping of TCP/IP checksum error frames */ +#define ETH_DMAOMR_RSF ((uint32_t)0x02000000) /* Receive store and forward */ +#define ETH_DMAOMR_DFRF ((uint32_t)0x01000000) /* Disable flushing of received frames */ +#define ETH_DMAOMR_TSF ((uint32_t)0x00200000) /* Transmit store and forward */ +#define ETH_DMAOMR_FTF ((uint32_t)0x00100000) /* Flush transmit FIFO */ +#define ETH_DMAOMR_TTC ((uint32_t)0x0001C000) /* Transmit threshold control */ + #define ETH_DMAOMR_TTC_64Bytes ((uint32_t)0x00000000) /* threshold level of the MTL Transmit FIFO is 64 Bytes */ + #define ETH_DMAOMR_TTC_128Bytes ((uint32_t)0x00004000) /* threshold level of the MTL Transmit FIFO is 128 Bytes */ + #define ETH_DMAOMR_TTC_192Bytes ((uint32_t)0x00008000) /* threshold level of the MTL Transmit FIFO is 192 Bytes */ + #define ETH_DMAOMR_TTC_256Bytes ((uint32_t)0x0000C000) /* threshold level of the MTL Transmit FIFO is 256 Bytes */ + #define ETH_DMAOMR_TTC_40Bytes ((uint32_t)0x00010000) /* threshold level of the MTL Transmit FIFO is 40 Bytes */ + #define ETH_DMAOMR_TTC_32Bytes ((uint32_t)0x00014000) /* threshold level of the MTL Transmit FIFO is 32 Bytes */ + #define ETH_DMAOMR_TTC_24Bytes ((uint32_t)0x00018000) /* threshold level of the MTL Transmit FIFO is 24 Bytes */ + #define ETH_DMAOMR_TTC_16Bytes ((uint32_t)0x0001C000) /* threshold level of the MTL Transmit FIFO is 16 Bytes */ +#define ETH_DMAOMR_ST ((uint32_t)0x00002000) /* Start/stop transmission command */ +#define ETH_DMAOMR_FEF ((uint32_t)0x00000080) /* Forward error frames */ +#define ETH_DMAOMR_FUGF ((uint32_t)0x00000040) /* Forward undersized good frames */ +#define ETH_DMAOMR_RTC ((uint32_t)0x00000018) /* receive threshold control */ + #define ETH_DMAOMR_RTC_64Bytes ((uint32_t)0x00000000) /* threshold level of the MTL Receive FIFO is 64 Bytes */ + #define ETH_DMAOMR_RTC_32Bytes ((uint32_t)0x00000008) /* threshold level of the MTL Receive FIFO is 32 Bytes */ + #define ETH_DMAOMR_RTC_96Bytes ((uint32_t)0x00000010) /* threshold level of the MTL Receive FIFO is 96 Bytes */ + #define ETH_DMAOMR_RTC_128Bytes ((uint32_t)0x00000018) /* threshold level of the MTL Receive FIFO is 128 Bytes */ +#define ETH_DMAOMR_OSF ((uint32_t)0x00000004) /* operate on second frame */ +#define ETH_DMAOMR_SR ((uint32_t)0x00000002) /* Start/stop receive */ + +/* Bit definition for Ethernet DMA Interrupt Enable Register */ +#define ETH_DMAIER_NISE ((uint32_t)0x00010000) /* Normal interrupt summary enable */ +#define ETH_DMAIER_AISE ((uint32_t)0x00008000) /* Abnormal interrupt summary enable */ +#define ETH_DMAIER_ERIE ((uint32_t)0x00004000) /* Early receive interrupt enable */ +#define ETH_DMAIER_FBEIE ((uint32_t)0x00002000) /* Fatal bus error interrupt enable */ +#define ETH_DMAIER_ETIE ((uint32_t)0x00000400) /* Early transmit interrupt enable */ +#define ETH_DMAIER_RWTIE ((uint32_t)0x00000200) /* Receive watchdog timeout interrupt enable */ +#define ETH_DMAIER_RPSIE ((uint32_t)0x00000100) /* Receive process stopped interrupt enable */ +#define ETH_DMAIER_RBUIE ((uint32_t)0x00000080) /* Receive buffer unavailable interrupt enable */ +#define ETH_DMAIER_RIE ((uint32_t)0x00000040) /* Receive interrupt enable */ +#define ETH_DMAIER_TUIE ((uint32_t)0x00000020) /* Transmit Underflow interrupt enable */ +#define ETH_DMAIER_ROIE ((uint32_t)0x00000010) /* Receive Overflow interrupt enable */ +#define ETH_DMAIER_TJTIE ((uint32_t)0x00000008) /* Transmit jabber timeout interrupt enable */ +#define ETH_DMAIER_TBUIE ((uint32_t)0x00000004) /* Transmit buffer unavailable interrupt enable */ +#define ETH_DMAIER_TPSIE ((uint32_t)0x00000002) /* Transmit process stopped interrupt enable */ +#define ETH_DMAIER_TIE ((uint32_t)0x00000001) /* Transmit interrupt enable */ + +/* Bit definition for Ethernet DMA Missed Frame and Buffer Overflow Counter Register */ +#define ETH_DMAMFBOCR_OFOC ((uint32_t)0x10000000) /* Overflow bit for FIFO overflow counter */ +#define ETH_DMAMFBOCR_MFA ((uint32_t)0x0FFE0000) /* Number of frames missed by the application */ +#define ETH_DMAMFBOCR_OMFC ((uint32_t)0x00010000) /* Overflow bit for missed frame counter */ +#define ETH_DMAMFBOCR_MFC ((uint32_t)0x0000FFFF) /* Number of frames missed by the controller */ + +/* Bit definition for Ethernet DMA Current Host Transmit Descriptor Register */ +#define ETH_DMACHTDR_HTDAP ((uint32_t)0xFFFFFFFF) /* Host transmit descriptor address pointer */ + +/* Bit definition for Ethernet DMA Current Host Receive Descriptor Register */ +#define ETH_DMACHRDR_HRDAP ((uint32_t)0xFFFFFFFF) /* Host receive descriptor address pointer */ + +/* Bit definition for Ethernet DMA Current Host Transmit Buffer Address Register */ +#define ETH_DMACHTBAR_HTBAP ((uint32_t)0xFFFFFFFF) /* Host transmit buffer address pointer */ + +/* Bit definition for Ethernet DMA Current Host Receive Buffer Address Register */ +#define ETH_DMACHRBAR_HRBAP ((uint32_t)0xFFFFFFFF) /* Host receive buffer address pointer */ +#endif /* STM32F10X_CL */ + +/** + * @} + */ + + /** + * @} + */ + +#ifdef USE_STDPERIPH_DRIVER + #include "stm32f10x_conf.h" +#endif + +/** @addtogroup Exported_macro + * @{ + */ + +#define SET_BIT(REG, BIT) ((REG) |= (BIT)) + +#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) + +#define READ_BIT(REG, BIT) ((REG) & (BIT)) + +#define CLEAR_REG(REG) ((REG) = (0x0)) + +#define WRITE_REG(REG, VAL) ((REG) = (VAL)) + +#define READ_REG(REG) ((REG)) + +#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_H */ + +/** + * @} + */ + + /** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c new file mode 100644 index 00000000..6fb4579e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c @@ -0,0 +1,1094 @@ +/** + ****************************************************************************** + * @file system_stm32f10x.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * factors, AHB/APBx prescalers and Flash settings). + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f10x_xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * 2. After each device reset the HSI (8 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32f10x_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 3. If the system clock source selected by user fails to startup, the SystemInit() + * function will do nothing and HSI still used as system clock source. User can + * add some code to deal with this issue inside the SetSysClock() function. + * + * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depedning on + * the product used), refer to "HSE_VALUE" define in "stm32f10x.h" file. + * When HSE is used as system clock source, directly or through PLL, and you + * are using different crystal you have to adapt the HSE value to your own + * configuration. + * + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f10x_system + * @{ + */ + +/** @addtogroup STM32F10x_System_Private_Includes + * @{ + */ + +#include "stm32f10x.h" + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Defines + * @{ + */ + +/*!< Uncomment the line corresponding to the desired System clock (SYSCLK) + frequency (after reset the HSI is used as SYSCLK source) + + IMPORTANT NOTE: + ============== + 1. After each device reset the HSI is used as System clock source. + + 2. Please make sure that the selected System clock doesn't exceed your device's + maximum frequency. + + 3. If none of the define below is enabled, the HSI is used as System clock + source. + + 4. The System clock configuration functions provided within this file assume that: + - For Low, Medium and High density Value line devices an external 8MHz + crystal is used to drive the System clock. + - For Low, Medium and High density devices an external 8MHz crystal is + used to drive the System clock. + - For Connectivity line devices an external 25MHz crystal is used to drive + the System clock. + If you are using different crystal you have to adapt those functions accordingly. + */ + +#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) +/* #define SYSCLK_FREQ_HSE HSE_VALUE */ + #define SYSCLK_FREQ_24MHz 24000000 +#else +/* #define SYSCLK_FREQ_HSE HSE_VALUE */ +/* #define SYSCLK_FREQ_24MHz 24000000 */ +/* #define SYSCLK_FREQ_36MHz 36000000 */ +/* #define SYSCLK_FREQ_48MHz 48000000 */ +/* #define SYSCLK_FREQ_56MHz 56000000 */ +#define SYSCLK_FREQ_72MHz 72000000 +#endif + +/*!< Uncomment the following line if you need to use external SRAM mounted + on STM3210E-EVAL board (STM32 High density and XL-density devices) or on + STM32100E-EVAL board (STM32 High-density value line devices) as data memory */ +#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) +/* #define DATA_IN_ExtSRAM */ +#endif + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ + + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Variables + * @{ + */ + +/******************************************************************************* +* Clock Definitions +*******************************************************************************/ +#ifdef SYSCLK_FREQ_HSE + uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_24MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_24MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_36MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */ +#else /*!< HSI Selected as System Clock source */ + uint32_t SystemCoreClock = HSI_VALUE; /*!< System Clock Frequency (Core Clock) */ +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_FunctionPrototypes + * @{ + */ + +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE + static void SetSysClockToHSE(void); +#elif defined SYSCLK_FREQ_24MHz + static void SetSysClockTo24(void); +#elif defined SYSCLK_FREQ_36MHz + static void SetSysClockTo36(void); +#elif defined SYSCLK_FREQ_48MHz + static void SetSysClockTo48(void); +#elif defined SYSCLK_FREQ_56MHz + static void SetSysClockTo56(void); +#elif defined SYSCLK_FREQ_72MHz + static void SetSysClockTo72(void); +#endif + +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ +#ifndef STM32F10X_CL + RCC->CFGR &= (uint32_t)0xF8FF0000; +#else + RCC->CFGR &= (uint32_t)0xF0FF0000; +#endif /* STM32F10X_CL */ + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (uint32_t)0xFF80FFFF; + +#ifdef STM32F10X_CL + /* Reset PLL2ON and PLL3ON bits */ + RCC->CR &= (uint32_t)0xEBFFFFFF; + + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x00FF0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#else + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) + #ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); + #endif /* DATA_IN_ExtSRAM */ +#endif + + /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */ + /* Configure the Flash Latency cycles and enable prefetch buffer */ + SetSysClock(); + +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz or 25 MHz, depedning on the product used), user has to ensure + * that HSE_VALUE is same as the real frequency of the crystal used. + * Otherwise, this function may have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0; + +#ifdef STM32F10X_CL + uint32_t prediv1source = 0, prediv1factor = 0, prediv2factor = 0, pll2mull = 0; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + uint32_t prediv1factor = 0; +#endif /* STM32F10X_LD_VL or STM32F10X_MD_VL or STM32F10X_HD_VL */ + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + +#ifndef STM32F10X_CL + pllmull = ( pllmull >> 18) + 2; + + if (pllsource == 0x00) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + { + #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) + {/* HSE oscillator clock divided by 2 */ + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; + } + else + { + SystemCoreClock = HSE_VALUE * pllmull; + } + #endif + } +#else + pllmull = pllmull >> 18; + + if (pllmull != 0x0D) + { + pllmull += 2; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13 / 2; + } + + if (pllsource == 0x00) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1; + + if (prediv1source == 0) + { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4) + 1; + pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8 ) + 2; + SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F10X_CL */ + break; + + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* Compute HCLK clock frequency ----------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +/** + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * @param None + * @retval None + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_24MHz + SetSysClockTo24(); +#elif defined SYSCLK_FREQ_36MHz + SetSysClockTo36(); +#elif defined SYSCLK_FREQ_48MHz + SetSysClockTo48(); +#elif defined SYSCLK_FREQ_56MHz + SetSysClockTo56(); +#elif defined SYSCLK_FREQ_72MHz + SetSysClockTo72(); +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + source (default after reset) */ +} + +/** + * @brief Setup the external memory controller. Called in startup_stm32f10x.s + * before jump to __main + * @param None + * @retval None + */ +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f10x_xx.s/.c before jump to main. + * This function configures the external SRAM mounted on STM3210E-EVAL + * board (STM32 High density devices). This SRAM will be used as program + * data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ +/*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is + required, then adjust the Register Addresses */ + + /* Enable FSMC clock */ + RCC->AHBENR = 0x00000114; + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ + RCC->APB2ENR = 0x000001E0; + +/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ +/*---------------- SRAM Address lines configuration -------------------------*/ +/*---------------- NOE and NWE configuration --------------------------------*/ +/*---------------- NE3 configuration ----------------------------------------*/ +/*---------------- NBL0, NBL1 configuration ---------------------------------*/ + + GPIOD->CRL = 0x44BB44BB; + GPIOD->CRH = 0xBBBBBBBB; + + GPIOE->CRL = 0xB44444BB; + GPIOE->CRH = 0xBBBBBBBB; + + GPIOF->CRL = 0x44BBBBBB; + GPIOF->CRH = 0xBBBB4444; + + GPIOG->CRL = 0x44BBBBBB; + GPIOG->CRH = 0x44444B44; + +/*---------------- FSMC Configuration ---------------------------------------*/ +/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ + + FSMC_Bank1->BTCR[4] = 0x00001011; + FSMC_Bank1->BTCR[5] = 0x00000200; +} +#endif /* DATA_IN_ExtSRAM */ + +#ifdef SYSCLK_FREQ_HSE +/** + * @brief Selects HSE as System clock source and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + +#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 0 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + +#ifndef STM32F10X_CL + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; +#else + if (HSE_VALUE <= 24000000) + { + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; + } + else + { + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + } +#endif /* STM32F10X_CL */ +#endif + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + + /* Select HSE as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_24MHz +/** + * @brief Sets System clock frequency to 24MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo24(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { +#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 0 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; +#endif + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL configuration: PLLCLK = PREDIV1 * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL6); + + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 10 = 4 MHz */ + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV10); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + /* PLL configuration: = (HSE / 2) * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1_Div2 | RCC_CFGR_PLLMULL6); +#else + /* PLL configuration: = (HSE / 2) * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL6); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_36MHz +/** + * @brief Sets System clock frequency to 36MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo36(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 1 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + + /* PLL configuration: PLLCLK = PREDIV1 * 9 = 36 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL9); + + /*!< PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 10 = 4 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV10); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + +#else + /* PLL configuration: PLLCLK = (HSE / 2) * 9 = 36 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL9); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_48MHz +/** + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo48(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 1 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 6 = 48 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL6); +#else + /* PLL configuration: PLLCLK = HSE * 6 = 48 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +#elif defined SYSCLK_FREQ_56MHz +/** + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo56(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 2 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 7 = 56 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL7); +#else + /* PLL configuration: PLLCLK = HSE * 7 = 56 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL7); + +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +#elif defined SYSCLK_FREQ_72MHz +/** + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo72(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 2 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; + + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL9); +#else + /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | + RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#endif + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h new file mode 100644 index 00000000..739f3328 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h @@ -0,0 +1,98 @@ +/** + ****************************************************************************** + * @file system_stm32f10x.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Header File. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f10x_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32F10X_H +#define __SYSTEM_STM32F10X_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup STM32F10x_System_Includes + * @{ + */ + +/** + * @} + */ + + +/** @addtogroup STM32F10x_System_Exported_types + * @{ + */ + +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32F10X_H */ + +/** + * @} + */ + +/** + * @} + */ +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CMSIS debug support.htm b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CMSIS debug support.htm new file mode 100644 index 00000000..efda685b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CMSIS debug support.htm @@ -0,0 +1,243 @@ + + + +CMSIS Debug Support + + + + + + + + +

    CMSIS Debug Support

    + +
    + +

    Cortex-M3 ITM Debug Access

    +

    + The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that provides together with + the Serial Viewer Output trace capabilities for the microcontroller system. The ITM has + 32 communication channels which are able to transmit 32 / 16 / 8 bit values; two ITM + communication channels are used by CMSIS to output the following information: +

    +
      +
    • ITM Channel 0: used for printf-style output via the debug interface.
    • +
    • ITM Channel 31: is reserved for RTOS kernel awareness debugging.
    • +
    + +

    Debug IN / OUT functions

    +

    CMSIS provides following debug functions:

    +
      +
    • ITM_SendChar (uses ITM channel 0)
    • +
    • ITM_ReceiveChar (uses global variable)
    • +
    • ITM_CheckChar (uses global variable)
    • +
    + +

    ITM_SendChar

    +

    + ITM_SendChar is used to transmit a character over ITM channel 0 from + the microcontroller system to the debug system.
    + Only a 8 bit value is transmitted. +

    +
    +static __INLINE uint32_t ITM_SendChar (uint32_t ch)
    +{
    +  /* check if debugger connected and ITM channel enabled for tracing */
    +  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA)  &&
    +      (ITM->TCR & ITM_TCR_ITMENA)                  &&
    +      (ITM->TER & (1UL << 0))  ) 
    +  {
    +    while (ITM->PORT[0].u32 == 0);
    +    ITM->PORT[0].u8 = (uint8_t)ch;
    +  }  
    +  return (ch);
    +}
    + +

    ITM_ReceiveChar

    +

    + ITM communication channel is only capable for OUT direction. For IN direction + a globel variable is used. A simple mechansim detects if a character is received. + The project to test need to be build with debug information. +

    + +

    + The globale variable ITM_RxBuffer is used to transmit a 8 bit value from debug system + to microcontroller system. ITM_RxBuffer is 32 bit wide to enshure a proper handshake. +

    +
    +extern volatile int ITM_RxBuffer;                    /* variable to receive characters                             */
    +
    +

    + A dedicated bit pattern is used to determin if ITM_RxBuffer is empty + or contains a valid value. +

    +
    +#define             ITM_RXBUFFER_EMPTY    0x5AA55AA5 /* value identifying ITM_RxBuffer is ready for next character */
    +
    +

    + ITM_ReceiveChar is used to receive a 8 bit value from the debug system. The function is nonblocking. + It returns the received character or '-1' if no character was available. +

    +
    +static __INLINE int ITM_ReceiveChar (void) {
    +  int ch = -1;                               /* no character available */
    +
    +  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
    +    ch = ITM_RxBuffer;
    +    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
    +  }
    +  
    +  return (ch); 
    +}
    +
    + +

    ITM_CheckChar

    +

    + ITM_CheckChar is used to check if a character is received. +

    +
    +static __INLINE int ITM_CheckChar (void) {
    +
    +  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {
    +    return (0);                                 /* no character available */
    +  } else {
    +    return (1);                                 /*    character available */
    +  }
    +}
    + + +

    ITM Debug Support in uVision

    +

    + uVision uses in a debug session the Debug (printf) Viewer window to + display the debug data. +

    +

    Direction microcontroller system -> uVision:

    +
      +
    • + Characters received via ITM communication channel 0 are written in a printf style + to Debug (printf) Viewer window. +
    • +
    + +

    Direction uVision -> microcontroller system:

    +
      +
    • Check if ITM_RxBuffer variable is available (only performed once).
    • +
    • Read character from Debug (printf) Viewer window.
    • +
    • If ITM_RxBuffer empty write character to ITM_RxBuffer.
    • +
    + +

    Note

    +
      +
    • Current solution does not use a buffer machanism for trasmitting the characters.

      +
    • +
    + +

    RTX Kernel awareness in uVision

    +

    + uVision / RTX are using a simple and efficient solution for RTX Kernel awareness. + No format overhead is necessary.
    + uVsion debugger decodes the RTX events via the 32 / 16 / 8 bit ITM write access + to ITM communication channel 31. +

    + +

    Following RTX events are traced:

    +
      +
    • Task Create / Delete event +
        +
      1. 32 bit access. Task start address is transmitted
      2. +
      3. 16 bit access. Task ID and Create/Delete flag are transmitted
        + High byte holds Create/Delete flag, Low byte holds TASK ID. +
      4. +
      +
    • +
    • Task switch event +
        +
      1. 8 bit access. Task ID of current task is transmitted
      2. +
      +
    • +
    + +

    Note

    +
      +
    • Other RTOS information could be retrieved via memory read access in a polling mode manner.

      +
    • +
    + + +

     

    + +
    + +
    + + + + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CMSIS_changes.htm b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CMSIS_changes.htm new file mode 100644 index 00000000..162ffcc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/CMSIS_changes.htm @@ -0,0 +1,320 @@ + + + +CMSIS Changes + + + + + + + + +

    Changes to CMSIS version V1.20

    + +
    + +

    1. Removed CMSIS Middelware packages

    +

    + CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found. +

    + +

    2. SystemFrequency renamed to SystemCoreClock

    +

    + The variable name SystemCoreClock is more precise than SystemFrequency + because the variable holds the clock value at which the core is running. +

    + +

    3. Changed startup concept

    +

    + The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit + from main) has the weakness that it does not work for controllers which need a already + configuerd clock system to configure the external memory controller. +

    + +

    Changed startup concept

    +
      +
    • + SystemInit() is called from startup file before premain. +
    • +
    • + SystemInit() configures the clock system and also configures + an existing external memory controller. +
    • +
    • + SystemInit() must not use global variables. +
    • +
    • + SystemCoreClock is initialized with a correct predefined value. +
    • +
    • + Additional function void SystemCoreClockUpdate (void) is provided.
      + SystemCoreClockUpdate() updates the variable SystemCoreClock + and must be called whenever the core clock is changed.
      + SystemCoreClockUpdate() evaluates the clock register settings and calculates + the current core clock. +
    • +
    + + +

    4. Advanced Debug Functions

    +

    + ITM communication channel is only capable for OUT direction. To allow also communication for + IN direction a simple concept is provided. +

    +
      +
    • + Global variable volatile int ITM_RxBuffer used for IN data. +
    • +
    • + Function int ITM_CheckChar (void) checks if a new character is available. +
    • +
    • + Function int ITM_ReceiveChar (void) retrieves the new character. +
    • +
    + +

    + For detailed explanation see file CMSIS debug support.htm. +

    + + +

    5. Core Register Bit Definitions

    +

    + Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the + defines correspond with the Cortex-M Technical Reference Manual. +

    +

    + e.g. SysTick structure with bit definitions +

    +
    +/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick
    +  memory mapped structure for SysTick
    +  @{
    + */
    +typedef struct
    +{
    +  __IO uint32_t CTRL;                         /*!< Offset: 0x00  SysTick Control and Status Register */
    +  __IO uint32_t LOAD;                         /*!< Offset: 0x04  SysTick Reload Value Register       */
    +  __IO uint32_t VAL;                          /*!< Offset: 0x08  SysTick Current Value Register      */
    +  __I  uint32_t CALIB;                        /*!< Offset: 0x0C  SysTick Calibration Register        */
    +} SysTick_Type;
    +
    +/* SysTick Control / Status Register Definitions */
    +#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */
    +#define SysTick_CTRL_COUNTFLAG_Msk         (1ul << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
    +
    +#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */
    +#define SysTick_CTRL_CLKSOURCE_Msk         (1ul << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
    +
    +#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */
    +#define SysTick_CTRL_TICKINT_Msk           (1ul << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
    +
    +#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */
    +#define SysTick_CTRL_ENABLE_Msk            (1ul << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */
    +
    +/* SysTick Reload Register Definitions */
    +#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */
    +#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */
    +
    +/* SysTick Current Register Definitions */
    +#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */
    +#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFul << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */
    +
    +/* SysTick Calibration Register Definitions */
    +#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */
    +#define SysTick_CALIB_NOREF_Msk            (1ul << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
    +
    +#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */
    +#define SysTick_CALIB_SKEW_Msk             (1ul << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
    +
    +#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */
    +#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFul << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */
    +/*@}*/ /* end of group CMSIS_CM3_SysTick */
    + +

    7. DoxyGen Tags

    +

    + DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation + using DoxyGen. +

    + +

    8. Folder Structure

    +

    + The folder structure is changed to differentiate the single support packages. +

    + +
      +
    • CM0
    • +
    • CM3 +
        +
      • CoreSupport
      • +
      • DeviceSupport
      • +
          +
        • Vendor +
            +
          • Device +
              +
            • Startup +
                +
              • Toolchain
              • +
              • Toolchain
              • +
              • ...
              • +
              +
            • +
            +
          • +
          • Device
          • +
          • ...
          • +
          +
        • +
        • Vendor
        • +
        • ...
        • +
        + +
      • Example +
          +
        • Toolchain +
            +
          • Device
          • +
          • Device
          • +
          • ...
          • +
          +
        • +
        • Toolchain
        • +
        • ...
        • +
        +
      • +
      +
    • + +
    • Documentation
    • +
    + +

    9. Open Points

    +

    + Following points need to be clarified and solved: +

    +
      +
    • +

      + Equivalent C and Assembler startup files. +

      +

      + Is there a need for having C startup files although assembler startup files are + very efficient and do not need to be changed? +

      +

    • +
    • +

      + Placing of HEAP in external RAM. +

      +

      + It must be possible to place HEAP in external RAM if the device supports an + external memory controller. +

      +
    • +
    • +

      + Placing of STACK /HEAP. +

      +

      + STACK should always be placed at the end of internal RAM. +

      +

      + If HEAP is placed in internal RAM than it should be placed after RW ZI section. +

      +
    • +
    • +

      + Removing core_cm3.c and core_cm0.c. +

      +

      + On a long term the functions in core_cm3.c and core_cm0.c must be replaced with + appropriate compiler intrinsics. +

      +
    • +
    + + +

    10. Limitations

    +

    + The following limitations are not covered with the current CMSIS version: +

    +
      +
    • + No C startup files for ARM toolchain are provided. +
    • +
    • + No C startup files for GNU toolchain are provided. +
    • +
    • + No C startup files for IAR toolchain are provided. +
    • +
    • + No Tasking projects are provided yet. +
    • +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/Documentation/CMSIS_Core.htm b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/Documentation/CMSIS_Core.htm new file mode 100644 index 00000000..6fd131e1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/Documentation/CMSIS_Core.htm @@ -0,0 +1,1337 @@ + + + + CMSIS: Cortex Microcontroller Software Interface Standard + + + +

    Cortex Microcontroller Software Interface Standard

    + +

    This file describes the Cortex Microcontroller Software Interface Standard (CMSIS).

    +

    Version: 1.30 - 30. October 2009

    + +

    Information in this file, the accompany manuals, and software is
    + Copyright © ARM Ltd.
    All rights reserved. +

    + +
    + +

    Revision History

    +
      +
    • Version 1.00: initial release.
    • +
    • Version 1.01: added __LDREXx, __STREXx, and __CLREX.
    • +
    • Version 1.02: added Cortex-M0.
    • +
    • Version 1.10: second review.
    • +
    • Version 1.20: third review.
    • +
    • Version 1.30 PRE-RELEASE: reworked Startup Concept, additional Debug Functionality.
    • +
    • Version 1.30 2nd PRE-RELEASE: changed folder structure, added doxyGen comments, added Bit definitions.
    • +
    • Version 1.30: updated Device Support Packages.
    • +
    + +
    + +

    Contents

    + +
      +
    1. About
    2. +
    3. Coding Rules and Conventions
    4. +
    5. CMSIS Files
    6. +
    7. Core Peripheral Access Layer
    8. +
    9. CMSIS Example
    10. +
    + +

    About

    + +

    + The Cortex Microcontroller Software Interface Standard (CMSIS) answers the challenges + that are faced when software components are deployed to physical microcontroller devices based on a + Cortex-M0 or Cortex-M3 processor. The CMSIS will be also expanded to future Cortex-M + processor cores (the term Cortex-M is used to indicate that). The CMSIS is defined in close co-operation + with various silicon and software vendors and provides a common approach to interface to peripherals, + real-time operating systems, and middleware components. +

    + +

    ARM provides as part of the CMSIS the following software layers that are +available for various compiler implementations:

    +
      +
    • Core Peripheral Access Layer: contains name definitions, + address definitions and helper functions to + access core registers and peripherals. It defines also a device + independent interface for RTOS Kernels that includes debug channel + definitions.
    • +
    + +

    These software layers are expanded by Silicon partners with:

    +
      +
    • Device Peripheral Access Layer: provides definitions + for all device peripherals
    • +
    • Access Functions for Peripherals (optional): provides + additional helper functions for peripherals
    • +
    + +

    CMSIS defines for a Cortex-M Microcontroller System:

    +
      +
    • A common way to access peripheral registers + and a common way to define exception vectors.
    • +
    • The register names of the Core + Peripherals and the names of the Core + Exception Vectors.
    • +
    • An device independent interface for RTOS Kernels including a debug + channel.
    • +
    + +

    + By using CMSIS compliant software components, the user can easier re-use template code. + CMSIS is intended to enable the combination of software components from multiple middleware vendors. +

    + +

    Coding Rules and Conventions

    + +

    + The following section describes the coding rules and conventions used in the CMSIS + implementation. It contains also information about data types and version number information. +

    + +

    Essentials

    +
      +
    • The CMSIS C code conforms to MISRA 2004 rules. In case of MISRA violations, + there are disable and enable sequences for PC-LINT inserted.
    • +
    • ANSI standard data types defined in the ANSI C header file + <stdint.h> are used.
    • +
    • #define constants that include expressions must be enclosed by + parenthesis.
    • +
    • Variables and parameters have a complete data type.
    • +
    • All functions in the Core Peripheral Access Layer are + re-entrant.
    • +
    • The Core Peripheral Access Layer has no blocking code + (which means that wait/query loops are done at other software layers).
    • +
    • For each exception/interrupt there is definition for: +
        +
      • an exception/interrupt handler with the postfix _Handler + (for exceptions) or _IRQHandler (for interrupts).
      • +
      • a default exception/interrupt handler (weak definition) that contains an endless loop.
      • +
      • a #define of the interrupt number with the postfix _IRQn.
      • +
    • +
    + +

    Recommendations

    + +

    The CMSIS recommends the following conventions for identifiers.

    +
      +
    • CAPITAL names to identify Core Registers, Peripheral Registers, and CPU Instructions.
    • +
    • CamelCase names to identify peripherals access functions and interrupts.
    • +
    • PERIPHERAL_ prefix to identify functions that belong to specify peripherals.
    • +
    • Doxygen comments for all functions are included as described under Function Comments below.
    • +
    + +Comments + +
      +
    • Comments use the ANSI C90 style (/* comment */) or C++ style + (// comment). It is assumed that the programming tools support today + consistently the C++ comment style.
    • +
    • Function Comments provide for each function the following information: +
        +
      • one-line brief function overview.
      • +
      • detailed parameter explanation.
      • +
      • detailed information about return values.
      • +
      • detailed description of the actual function.
      • +
      +

      Doxygen Example:

      +
      +/** 
      + * @brief  Enable Interrupt in NVIC Interrupt Controller
      + * @param  IRQn  interrupt number that specifies the interrupt
      + * @return none.
      + * Enable the specified interrupt in the NVIC Interrupt Controller.
      + * Other settings of the interrupt such as priority are not affected.
      + */
      +
    • +
    + +

    Data Types and IO Type Qualifiers

    + +

    + The Cortex-M HAL uses the standard types from the standard ANSI C header file + <stdint.h>. IO Type Qualifiers are used to specify the access + to peripheral variables. IO Type Qualifiers are indented to be used for automatic generation of + debug information of peripheral registers. +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    IO Type Qualifier#defineDescription
    __Ivolatile constRead access only
    __OvolatileWrite access only
    __IOvolatileRead and write access
    + +

    CMSIS Version Number

    +

    + File core_cm3.h contains the version number of the CMSIS with the following define: +

    + +
    +#define __CM3_CMSIS_VERSION_MAIN  (0x01)      /* [31:16] main version       */
    +#define __CM3_CMSIS_VERSION_SUB   (0x30)      /* [15:0]  sub version        */
    +#define __CM3_CMSIS_VERSION       ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB)
    + +

    + File core_cm0.h contains the version number of the CMSIS with the following define: +

    + +
    +#define __CM0_CMSIS_VERSION_MAIN  (0x01)      /* [31:16] main version       */
    +#define __CM0_CMSIS_VERSION_SUB   (0x30)      /* [15:0]  sub version        */
    +#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16) | __CM0_CMSIS_VERSION_SUB)
    + + +

    CMSIS Cortex Core

    +

    + File core_cm3.h contains the type of the CMSIS Cortex-M with the following define: +

    + +
    +#define __CORTEX_M                (0x03)
    + +

    + File core_cm0.h contains the type of the CMSIS Cortex-M with the following define: +

    + +
    +#define __CORTEX_M                (0x00)
    + + +

    CMSIS Files

    +

    + This section describes the Files provided in context with the CMSIS to access the Cortex-M + hardware and peripherals. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FileProviderDescription
    device.hDevice specific (provided by silicon partner)Defines the peripherals for the actual device. The file may use + several other include files to define the peripherals of the actual device.
    core_cm0.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the core peripherals for the Cortex-M0 CPU and core peripherals.
    core_cm3.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the core peripherals for the Cortex-M3 CPU and core peripherals.
    core_cm0.cARM (for RealView ARMCC, IAR, and GNU GCC)Provides helper functions that access core registers.
    core_cm3.cARM (for RealView ARMCC, IAR, and GNU GCC)Provides helper functions that access core registers.
    startup_deviceARM (adapted by compiler partner / silicon partner)Provides the Cortex-M startup code and the complete (device specific) Interrupt Vector Table
    system_deviceARM (adapted by silicon partner)Provides a device specific configuration file for the device. It configures the device initializes + typically the oscillator (PLL) that is part of the microcontroller device
    + +

    device.h

    + +

    + The file device.h is provided by the silicon vendor and is the + central include file that the application programmer is using in + the C source code. This file contains: +

    +
      +
    • +

      Interrupt Number Definition: provides interrupt numbers + (IRQn) for all core and device specific exceptions and interrupts.

      +
    • +
    • +

      Configuration for core_cm0.h / core_cm3.h: reflects the + actual configuration of the Cortex-M processor that is part of the actual + device. As such the file core_cm0.h / core_cm3.h is included that + implements access to processor registers and core peripherals.

      +
    • +
    • +

      Device Peripheral Access Layer: provides definitions + for all device peripherals. It contains all data structures and the address + mapping for the device specific peripherals.

      +
    • +
    • Access Functions for Peripherals (optional): provides + additional helper functions for peripherals that are useful for programming + of these peripherals. Access Functions may be provided as inline functions + or can be extern references to a device specific library provided by the + silicon vendor.
    • +
    + + +

    Interrupt Number Definition

    + +

    To access the device specific interrupts the device.h file defines IRQn +numbers for the complete device using a enum typedef as shown below:

    +
    +typedef enum IRQn
    +{
    +/******  Cortex-M3 Processor Exceptions/Interrupt Numbers ************************************************/
    +  NonMaskableInt_IRQn             = -14,      /*!< 2 Non Maskable Interrupt                              */
    +  HardFault_IRQn                  = -13,      /*!< 3 Cortex-M3 Hard Fault Interrupt                      */
    +  MemoryManagement_IRQn           = -12,      /*!< 4 Cortex-M3 Memory Management Interrupt               */
    +  BusFault_IRQn                   = -11,      /*!< 5 Cortex-M3 Bus Fault Interrupt                       */
    +  UsageFault_IRQn                 = -10,      /*!< 6 Cortex-M3 Usage Fault Interrupt                     */
    +  SVCall_IRQn                     = -5,       /*!< 11 Cortex-M3 SV Call Interrupt                        */
    +  DebugMonitor_IRQn               = -4,       /*!< 12 Cortex-M3 Debug Monitor Interrupt                  */
    +  PendSV_IRQn                     = -2,       /*!< 14 Cortex-M3 Pend SV Interrupt                        */
    +  SysTick_IRQn                    = -1,       /*!< 15 Cortex-M3 System Tick Interrupt                    */
    +/******  STM32 specific Interrupt Numbers ****************************************************************/
    +  WWDG_STM_IRQn                   = 0,        /*!< Window WatchDog Interrupt                             */
    +  PVD_STM_IRQn                    = 1,        /*!< PVD through EXTI Line detection Interrupt             */
    +  :
    +  :
    +  } IRQn_Type;
    + + +

    Configuration for core_cm0.h / core_cm3.h

    +

    + The Cortex-M core configuration options which are defined for each device implementation. Some + configuration options are reflected in the CMSIS layer using the #define settings described below. +

    +

    + To access core peripherals file device.h includes file core_cm0.h / core_cm3.h. + Several features in core_cm0.h / core_cm3.h are configured by the following defines that must be + defined before #include <core_cm0.h> / #include <core_cm3.h> + preprocessor command. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #defineFileValueDescription
    __NVIC_PRIO_BITScore_cm0.h(2)Number of priority bits implemented in the NVIC (device specific)
    __NVIC_PRIO_BITScore_cm3.h(2 ... 8)Number of priority bits implemented in the NVIC (device specific)
    __MPU_PRESENTcore_cm0.h, core_cm3.h(0, 1)Defines if an MPU is present or not
    __Vendor_SysTickConfigcore_cm0.h, core_cm3.h(1)When this define is setup to 1, the SysTickConfig function + in core_cm3.h is excluded. In this case the device.h + file must contain a vendor specific implementation of this function.
    + + +

    Device Peripheral Access Layer

    +

    + Each peripheral uses a prefix which consists of <device abbreviation>_ + and <peripheral name>_ to identify peripheral registers that access this + specific peripheral. The intention of this is to avoid name collisions caused + due to short names. If more than one peripheral of the same type exists, + identifiers have a postfix (digit or letter). For example: +

    +
      +
    • <device abbreviation>_UART_Type: defines the generic register layout for all UART channels in a device. +
      +typedef struct
      +{
      +  union {
      +  __I  uint8_t  RBR;                     /*!< Offset: 0x000   Receiver Buffer Register    */
      +  __O  uint8_t  THR;                     /*!< Offset: 0x000   Transmit Holding Register   */
      +  __IO uint8_t  DLL;                     /*!< Offset: 0x000   Divisor Latch LSB           */
      +       uint32_t RESERVED0;
      +  };
      +  union {
      +  __IO uint8_t  DLM;                     /*!< Offset: 0x004   Divisor Latch MSB           */
      +  __IO uint32_t IER;                     /*!< Offset: 0x004   Interrupt Enable Register   */
      +  };
      +  union {
      +  __I  uint32_t IIR;                     /*!< Offset: 0x008   Interrupt ID Register       */
      +  __O  uint8_t  FCR;                     /*!< Offset: 0x008   FIFO Control Register       */
      +  };
      +  __IO uint8_t  LCR;                     /*!< Offset: 0x00C   Line Control Register       */
      +       uint8_t  RESERVED1[7];
      +  __I  uint8_t  LSR;                     /*!< Offset: 0x014   Line Status Register        */
      +       uint8_t  RESERVED2[7];
      +  __IO uint8_t  SCR;                     /*!< Offset: 0x01C   Scratch Pad Register        */
      +       uint8_t  RESERVED3[3];
      +  __IO uint32_t ACR;                     /*!< Offset: 0x020   Autobaud Control Register   */
      +  __IO uint8_t  ICR;                     /*!< Offset: 0x024   IrDA Control Register       */
      +       uint8_t  RESERVED4[3];
      +  __IO uint8_t  FDR;                     /*!< Offset: 0x028   Fractional Divider Register */
      +       uint8_t  RESERVED5[7];
      +  __IO uint8_t  TER;                     /*!< Offset: 0x030   Transmit Enable Register    */
      +       uint8_t  RESERVED6[39];
      +  __I  uint8_t  FIFOLVL;                 /*!< Offset: 0x058   FIFO Level Register         */
      +} LPC_UART_TypeDef;
      +
    • +
    • <device abbreviation>_UART1: is a pointer to a register structure that refers to a specific UART. + For example UART1->DR is the data register of UART1. +
      +#define LPC_UART2             ((LPC_UART_TypeDef      *) LPC_UART2_BASE    )
      +#define LPC_UART3             ((LPC_UART_TypeDef      *) LPC_UART3_BASE    )
      +
    • +
    + +
    Minimal Requiements
    +

    + To access the peripheral registers and related function in a device the files device.h + and core_cm0.h / core_cm3.h defines as a minimum: +

    +
      +
    • The Register Layout Typedef for each peripheral that defines all register names. + Names that start with RESERVE are used to introduce space into the structure to adjust the addresses of + the peripheral registers. For example: +
      +typedef struct {
      +  __IO uint32_t CTRL;      /* SysTick Control and Status Register */
      +  __IO uint32_t LOAD;      /* SysTick Reload Value Register       */
      +  __IO uint32_t VAL;       /* SysTick Current Value Register      */
      +  __I  uint32_t CALIB;     /* SysTick Calibration Register        */
      +  } SysTick_Type;
      +
    • + +
    • + Base Address for each peripheral (in case of multiple peripherals + that use the same register layout typedef multiple base addresses are defined). For example: +
      +#define SysTick_BASE (SCS_BASE + 0x0010)            /* SysTick Base Address */
      +
    • + +
    • + Access Definition for each peripheral (in case of multiple peripherals that use + the same register layout typedef multiple access definitions exist, i.e. LPC_UART0, + LPC_UART2). For Example: +
      +#define SysTick ((SysTick_Type *) SysTick_BASE)     /* SysTick access definition */
      +
    • +
    + +

    + These definitions allow to access the peripheral registers from user code with simple assignments like: +

    +
    SysTick->CTRL = 0;
    + +
    Optional Features
    +

    In addition the device.h file may define:

    +
      +
    • + #define constants that simplify access to the peripheral registers. + These constant define bit-positions or other specific patterns are that required for the + programming of the peripheral registers. The identifiers used start with + <device abbreviation>_ and <peripheral name>_. + It is recommended to use CAPITAL letters for such #define constants. +
    • +
    • + Functions that perform more complex functions with the peripheral (i.e. status query before + a sending register is accessed). Again these function start with + <device abbreviation>_ and <peripheral name>_. +
    • +
    + +

    core_cm0.h and core_cm0.c

    +

    + File core_cm0.h describes the data structures for the Cortex-M0 core peripherals and does + the address mapping of this structures. It also provides basic access to the Cortex-M0 core registers + and core peripherals with efficient functions (defined as static inline). +

    +

    + File core_cm0.c defines several helper functions that access processor registers. +

    +

    Together these files implement the Core Peripheral Access Layer for a Cortex-M0.

    + +

    core_cm3.h and core_cm3.c

    +

    + File core_cm3.h describes the data structures for the Cortex-M3 core peripherals and does + the address mapping of this structures. It also provides basic access to the Cortex-M3 core registers + and core peripherals with efficient functions (defined as static inline). +

    +

    + File core_cm3.c defines several helper functions that access processor registers. +

    +

    Together these files implement the Core Peripheral Access Layer for a Cortex-M3.

    + +

    startup_device

    +

    + A template file for startup_device is provided by ARM for each supported + compiler. It is adapted by the silicon vendor to include interrupt vectors for all device specific + interrupt handlers. Each interrupt handler is defined as weak function + to an dummy handler. Therefore the interrupt handler can be directly used in application software + without any requirements to adapt the startup_device file. +

    +

    + The following exception names are fixed and define the start of the vector table for a Cortex-M0: +

    +
    +__Vectors       DCD     __initial_sp              ; Top of Stack
    +                DCD     Reset_Handler             ; Reset Handler
    +                DCD     NMI_Handler               ; NMI Handler
    +                DCD     HardFault_Handler         ; Hard Fault Handler
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     SVC_Handler               ; SVCall Handler
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     PendSV_Handler            ; PendSV Handler
    +                DCD     SysTick_Handler           ; SysTick Handler
    + +

    + The following exception names are fixed and define the start of the vector table for a Cortex-M3: +

    +
    +__Vectors       DCD     __initial_sp              ; Top of Stack
    +                DCD     Reset_Handler             ; Reset Handler
    +                DCD     NMI_Handler               ; NMI Handler
    +                DCD     HardFault_Handler         ; Hard Fault Handler
    +                DCD     MemManage_Handler         ; MPU Fault Handler
    +                DCD     BusFault_Handler          ; Bus Fault Handler
    +                DCD     UsageFault_Handler        ; Usage Fault Handler
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     SVC_Handler               ; SVCall Handler
    +                DCD     DebugMon_Handler          ; Debug Monitor Handler
    +                DCD     0                         ; Reserved
    +                DCD     PendSV_Handler            ; PendSV Handler
    +                DCD     SysTick_Handler           ; SysTick Handler
    + +

    + In the following examples for device specific interrupts are shown: +

    +
    +; External Interrupts
    +                DCD     WWDG_IRQHandler           ; Window Watchdog
    +                DCD     PVD_IRQHandler            ; PVD through EXTI Line detect
    +                DCD     TAMPER_IRQHandler         ; Tamper
    + +

    + Device specific interrupts must have a dummy function that can be overwritten in user code. + Below is an example for this dummy function. +

    +
    +Default_Handler PROC
    +                EXPORT WWDG_IRQHandler   [WEAK]
    +                EXPORT PVD_IRQHandler    [WEAK]
    +                EXPORT TAMPER_IRQHandler [WEAK]
    +                :
    +                :
    +                WWDG_IRQHandler
    +                PVD_IRQHandler
    +                TAMPER_IRQHandler
    +                :
    +                :
    +                B .
    +                ENDP
    + +

    + The user application may simply define an interrupt handler function by using the handler name + as shown below. +

    +
    +void WWDG_IRQHandler(void)
    +{
    +  :
    +  :
    +}
    + + +

    system_device.c

    +

    + A template file for system_device.c is provided by ARM but adapted by + the silicon vendor to match their actual device. As a minimum requirement + this file must provide a device specific system configuration function and a global variable + that contains the system frequency. It configures the device and initializes typically the + oscillator (PLL) that is part of the microcontroller device. +

    +

    + The file system_device.c must provide + as a minimum requirement the SystemInit function as shown below. +

    + + + + + + + + + + + + + + + + +
    Function DefinitionDescription
    void SystemInit (void)Setup the microcontroller system. Typically this function configures the + oscillator (PLL) that is part of the microcontroller device. For systems + with variable clock speed it also updates the variable SystemCoreClock.
    + SystemInit is called from startup_device file.
    void SystemCoreClockUpdate (void)Updates the variable SystemCoreClock and must be called whenever the + core clock is changed during program execution. SystemCoreClockUpdate() + evaluates the clock register settings and calculates the current core clock. +
    + +

    + Also part of the file system_device.c + is the variable SystemCoreClock which contains the current CPU clock speed shown below. +

    + + + + + + + + + + + + +
    Variable DefinitionDescription
    uint32_t SystemCoreClockContains the system core clock (which is the system clock frequency supplied + to the SysTick timer and the processor core clock). This variable can be + used by the user application to setup the SysTick timer or configure other + parameters. It may also be used by debugger to query the frequency of the + debug timer or configure the trace clock speed.
    + SystemCoreClock is initialized with a correct predefined value.

    + The compiler must be configured to avoid the removal of this variable in + case that the application program is not using it. It is important for + debug systems that the variable is physically present in memory so that + it can be examined to configure the debugger.
    + +

    Note

    +
      +
    • The above definitions are the minimum requirements for the file + system_device.c. This + file may export more functions or variables that provide a more flexible + configuration of the microcontroller system.

      +
    • +
    + + +

    Core Peripheral Access Layer

    + +

    Cortex-M Core Register Access

    +

    + The following functions are defined in core_cm0.h / core_cm3.h + and provide access to Cortex-M core registers. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Function DefinitionCoreCore RegisterDescription
    void __enable_irq (void)M0, M3PRIMASK = 0Global Interrupt enable (using the instruction CPSIE + i)
    void __disable_irq (void)M0, M3PRIMASK = 1Global Interrupt disable (using the instruction + CPSID i)
    void __set_PRIMASK (uint32_t value)M0, M3PRIMASK = valueAssign value to Priority Mask Register (using the instruction + MSR)
    uint32_t __get_PRIMASK (void)M0, M3return PRIMASKReturn Priority Mask Register (using the instruction + MRS)
    void __enable_fault_irq (void)M3FAULTMASK = 0Global Fault exception and Interrupt enable (using the + instruction CPSIE + f)
    void __disable_fault_irq (void)M3FAULTMASK = 1Global Fault exception and Interrupt disable (using the + instruction CPSID f)
    void __set_FAULTMASK (uint32_t value)M3FAULTMASK = valueAssign value to Fault Mask Register (using the instruction + MSR)
    uint32_t __get_FAULTMASK (void)M3return FAULTMASKReturn Fault Mask Register (using the instruction MRS)
    void __set_BASEPRI (uint32_t value)M3BASEPRI = valueSet Base Priority (using the instruction MSR)
    uiuint32_t __get_BASEPRI (void)M3return BASEPRIReturn Base Priority (using the instruction MRS)
    void __set_CONTROL (uint32_t value)M0, M3CONTROL = valueSet CONTROL register value (using the instruction MSR)
    uint32_t __get_CONTROL (void)M0, M3return CONTROLReturn Control Register Value (using the instruction + MRS)
    void __set_PSP (uint32_t TopOfProcStack)M0, M3PSP = TopOfProcStackSet Process Stack Pointer value (using the instruction + MSR)
    uint32_t __get_PSP (void)M0, M3return PSPReturn Process Stack Pointer (using the instruction MRS)
    void __set_MSP (uint32_t TopOfMainStack)M0, M3MSP = TopOfMainStackSet Main Stack Pointer (using the instruction MSR)
    uint32_t __get_MSP (void)M0, M3return MSPReturn Main Stack Pointer (using the instruction MRS)
    + +

    Cortex-M Instruction Access

    +

    + The following functions are defined in core_cm0.h / core_cm3.hand + generate specific Cortex-M instructions. The functions are implemented in the file + core_cm0.c / core_cm3.c. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCoreGenerated CPU InstructionDescription
    void __NOP (void)M0, M3NOPNo Operation
    void __WFI (void)M0, M3WFIWait for Interrupt
    void __WFE (void)M0, M3WFEWait for Event
    void __SEV (void)M0, M3SEVSet Event
    void __ISB (void)M0, M3ISBInstruction Synchronization Barrier
    void __DSB (void)M0, M3DSBData Synchronization Barrier
    void __DMB (void)M0, M3DMBData Memory Barrier
    uint32_t __REV (uint32_t value)M0, M3REVReverse byte order in integer value.
    uint32_t __REV16 (uint16_t value)M0, M3REV16Reverse byte order in unsigned short value.
    sint32_t __REVSH (sint16_t value)M0, M3REVSHReverse byte order in signed short value with sign extension to integer.
    uint32_t __RBIT (uint32_t value)M3RBITReverse bit order of value
    uint8_t __LDREXB (uint8_t *addr)M3LDREXBLoad exclusive byte
    uint16_t __LDREXH (uint16_t *addr)M3LDREXHLoad exclusive half-word
    uint32_t __LDREXW (uint32_t *addr)M3LDREXWLoad exclusive word
    uint32_t __STREXB (uint8_t value, uint8_t *addr)M3STREXBStore exclusive byte
    uint32_t __STREXB (uint16_t value, uint16_t *addr)M3STREXHStore exclusive half-word
    uint32_t __STREXB (uint32_t value, uint32_t *addr)M3STREXWStore exclusive word
    void __CLREX (void)M3CLREXRemove the exclusive lock created by __LDREXB, __LDREXH, or __LDREXW
    + + +

    NVIC Access Functions

    +

    + The CMSIS provides access to the NVIC via the register interface structure and several helper + functions that simplify the setup of the NVIC. The CMSIS HAL uses IRQ numbers (IRQn) to + identify the interrupts. The first device interrupt has the IRQn value 0. Therefore negative + IRQn values are used for processor core exceptions. +

    +

    + For the IRQn values of core exceptions the file device.h provides + the following enum names. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Core Exception enum ValueCoreIRQnDescription
    NonMaskableInt_IRQnM0, M3-14Cortex-M Non Maskable Interrupt
    HardFault_IRQnM0, M3-13Cortex-M Hard Fault Interrupt
    MemoryManagement_IRQnM3-12Cortex-M Memory Management Interrupt
    BusFault_IRQnM3-11Cortex-M Bus Fault Interrupt
    UsageFault_IRQnM3-10Cortex-M Usage Fault Interrupt
    SVCall_IRQnM0, M3-5Cortex-M SV Call Interrupt
    DebugMonitor_IRQnM3-4Cortex-M Debug Monitor Interrupt
    PendSV_IRQnM0, M3-2Cortex-M Pend SV Interrupt
    SysTick_IRQnM0, M3-1Cortex-M System Tick Interrupt
    + +

    The following functions simplify the setup of the NVIC. +The functions are defined as static inline.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCoreParameterDescription
    void NVIC_SetPriorityGrouping (uint32_t PriorityGroup)M3Priority Grouping ValueSet the Priority Grouping (Groups . Subgroups)
    uint32_t NVIC_GetPriorityGrouping (void)M3(void)Get the Priority Grouping (Groups . Subgroups)
    void NVIC_EnableIRQ (IRQn_Type IRQn)M0, M3IRQ NumberEnable IRQn
    void NVIC_DisableIRQ (IRQn_Type IRQn)M0, M3IRQ NumberDisable IRQn
    uint32_t NVIC_GetPendingIRQ (IRQn_Type IRQn)M0, M3IRQ NumberReturn 1 if IRQn is pending else 0
    void NVIC_SetPendingIRQ (IRQn_Type IRQn)M0, M3IRQ NumberSet IRQn Pending
    void NVIC_ClearPendingIRQ (IRQn_Type IRQn)M0, M3IRQ NumberClear IRQn Pending Status
    uint32_t NVIC_GetActive (IRQn_Type IRQn)M3IRQ NumberReturn 1 if IRQn is active else 0
    void NVIC_SetPriority (IRQn_Type IRQn, uint32_t priority)M0, M3IRQ Number, PrioritySet Priority for IRQn
    + (not threadsafe for Cortex-M0)
    uint32_t NVIC_GetPriority (IRQn_Type IRQn)M0, M3IRQ NumberGet Priority for IRQn
    uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)M3IRQ Number, Priority Group, Preemptive Priority, Sub PriorityEncode priority for given group, preemptive and sub priority
    NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)M3IRQ Number, Priority, pointer to Priority Group, pointer to Preemptive Priority, pointer to Sub PriorityDeccode given priority to group, preemptive and sub priority
    void NVIC_SystemReset (void)M0, M3(void)Resets the System
    +

    Note

    +
      +
    • The processor exceptions have negative enum values. Device specific interrupts + have positive enum values and start with 0. The values are defined in + device.h file. +

      +
    • +
    • The values for PreemptPriority and SubPriority + used in functions NVIC_EncodePriority and NVIC_DecodePriority + depend on the available __NVIC_PRIO_BITS implemented in the NVIC. +

      +
    • +
    + + +

    SysTick Configuration Function

    + +

    The following function is used to configure the SysTick timer and start the +SysTick interrupt.

    + + + + + + + + + + + + + + +
    NameParameterDescription
    uint32_t SysTickConfig + (uint32_t ticks)ticks is SysTick counter reload valueSetup the SysTick timer and enable the SysTick interrupt. After this + call the SysTick timer creates interrupts with the specified time + interval.
    +
    + Return: 0 when successful, 1 on failure.
    +
    + + +

    Cortex-M3 ITM Debug Access

    + +

    The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that +provides together with the Serial Viewer Output trace capabilities for the +microcontroller system. The ITM has 32 communication channels; two ITM +communication channels are used by CMSIS to output the following information:

    +
      +
    • ITM Channel 0: implements the ITM_SendChar function + which can be used for printf-style output via the debug interface.
    • +
    • ITM Channel 31: is reserved for the RTOS kernel and can be used for + kernel awareness debugging.
    • +
    +

    Note

    +
      +
    • The ITM channel 31 is selected for the RTOS kernel since some kernels + may use the Privileged level for program execution. ITM + channels have 4 groups with 8 channels each, whereby each group can be + configured for access rights in the Unprivileged level. The ITM channel 0 + may be therefore enabled for the user task whereas ITM channel 31 may be + accessible only in Privileged level from the RTOS kernel itself.

      +
    • +
    + +

    The prototype of the ITM_SendChar routine is shown in the +table below.

    + + + + + + + + + + + + + + +
    NameParameterDescription
    void uint32_t ITM_SendChar(uint32_t chr)character to outputThe function outputs a character via the ITM channel 0. The + function returns when no debugger is connected that has booked the + output. It is blocking when a debugger is connected, but the + previous character send is not transmitted.

    + Return: the input character 'chr'.
    + +

    + Example for the usage of the ITM Channel 31 for RTOS Kernels: +

    +
    +  // check if debugger connected and ITM channel enabled for tracing
    +  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA) &&
    +  (ITM->TCR & ITM_TCR_ITMENA) &&
    +  (ITM->TER & (1UL << 31))) {
    +    // transmit trace data
    +    while (ITM->PORT31_U32 == 0);
    +    ITM->PORT[31].u8 = task_id;      // id of next task
    +    while (ITM->PORT[31].u32 == 0);
    +    ITM->PORT[31].u32 = task_status; // status information
    +  }
    + + +

    Cortex-M3 additional Debug Access

    + +

    CMSIS provides additional debug functions to enlarge the Cortex-M3 Debug Access. +Data can be transmitted via a certain global buffer variable towards the target system.

    + +

    The buffer variable and the prototypes of the additional functions are shown in the +table below.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    NameParameterDescription
    extern volatile int ITM_RxBuffer Buffer to transmit data towards debug system.

    + Value 0x5AA55AA5 indicates that buffer is empty.
    int ITM_ReceiveChar (void)noneThe nonblocking functions returns the character stored in + ITM_RxBuffer.

    + Return: -1 indicates that no character was received.
    int ITM_CheckChar (void)noneThe function checks if a character is available in ITM_RxBuffer.

    + Return: 1 indicates that a character is available, 0 indicates that + no character is available.
    + + +

    CMSIS Example

    +

    + The following section shows a typical example for using the CMSIS layer in user applications. + The example is based on a STM32F10x Device. +

    +
    +#include "stm32f10x.h"
    +
    +volatile uint32_t msTicks;                       /* timeTicks counter */
    +
    +void SysTick_Handler(void) {
    +  msTicks++;                                     /* increment timeTicks counter */
    +}
    +
    +__INLINE static void Delay (uint32_t dlyTicks) {
    +  uint32_t curTicks = msTicks;
    +
    +  while ((msTicks - curTicks) < dlyTicks);
    +}
    +
    +__INLINE static void LED_Config(void) {
    +  ;                                              /* Configure the LEDs */
    +}
    +
    +__INLINE static void LED_On (uint32_t led) {
    +  ;                                              /* Turn On  LED */
    +}
    +
    +__INLINE static void LED_Off (uint32_t led) {
    +  ;                                              /* Turn Off LED */
    +}
    +
    +int main (void) {
    +  if (SysTick_Config (SystemCoreClock / 1000)) { /* Setup SysTick for 1 msec interrupts */
    +    ;                                            /* Handle Error */
    +    while (1);
    +  }
    +  
    +  LED_Config();                                  /* configure the LEDs */                            
    + 
    +  while(1) {
    +    LED_On (0x100);                              /* Turn  on the LED   */
    +    Delay (100);                                 /* delay  100 Msec    */
    +    LED_Off (0x100);                             /* Turn off the LED   */
    +    Delay (100);                                 /* delay  100 Msec    */
    +  }
    +}
    + + + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/License.doc b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/lib/CMSIS/License.doc new file mode 100644 index 0000000000000000000000000000000000000000..b6b8acecc137bca709444106cba045d3d01daedd GIT binary patch literal 39936 zcmeI53w&Hvz3*2ZZBuBVr4Jqg-IP)q2qBafkZ1Flwy9}S@}SfrFqxSo(8g!^moP(odvq z?1-P~rSnWxy)k$1Uu5y=1Ks4`kH|Iruxr=e*@t}heulg3&0El=OJVTdj~gA%QG|Cj zO)+Lpu`#RnaU+7^2}E5={8@zmi%^7jOmp+yxSuhvaXWRk`>gP6Zlm7w=Y;hFFQKlHfxaQ}ERf8S{OfPon%>RWR!E`Qf)aD%tq)`9jqjy!`t7(C??8 zN6#+|{a z7IHL08H+OOzPDoR@5VzOOM$dFX^6)r68iU4Fg?y;)TbzaJ;w zfA-UD=0C%aU$0-4&mXn(2YTc4*$@5p{bxV)%jXOIe4|5O9{n(1c|ZOc=#m^xbd7Gu zfA;z8Kj#bm`hEQn3@<~+{E9)35(eW{#(!42uD!^k`MrctL%f<0wU(VHKEEdlwYX3W z-7+I9V|p%J1rF>!2i7P1Q%++%5=%s4PA2KJrwO`aPAl=m)Fq=aC!B~nt$ndbyfYpN zXX43()0s@!Ty@D*Cbq>{6OW{lkz^v1O7`@`QWWmY41`lLry-Gvr8>h@)S97|a4LFY zd3oEahE^xkRPVI6hFYA)hPqHwUC60f*%At^2{pAjq}Di%p_Mg_fyl+zdl|P?IJKd+ zb)is`v%b0ASsZF;TSYZBPHRKc%Epk>&{W@WMnipjO=G3g+~UW&)lqvx+xiNphQ@1J z*3kBvhPF_>vv>hd3o4uy6reT{<}|Ocx2?_XEl^k2Tn~v9Yh4?vYgo}xSJT$e+~m~M z)itkKThp|jw#g3V9+g#&ZGed8rpEQox`xI^o2A*!K>ccG{L0&!Z4YUtu9;5R2HRHE zwAol%4y|o-Y8o4TO4~v$Yg+04C^~A_J9QBC5jB5(gUiuv;tUB5O|5Ozpd=!i#mIFH z(AF+qDypt|t?in}WR)VQ>1Yg>?)HYB1Y)Yjgjv6_SwAe>cBdHMB$Il0a0jfE3wI|wV_iv}DxJ|Jq`SjCJx(H-apH+cPd`0e9Ivp2 z;=O%6vEEoB<7%X2r;|i)rJTP0j-GhBI~H})L88-6D%KfGNzFy6%T_U>yC+dIRfiLU zPAn0o4iOiNbSIKM$*y=ztPW?K-teH)5pxo;NGzQWrv{}md&8Sz4hpd!)v4lrsbsW2 zl2KG2`ce8)l*J&?))7fUx@r_7#u8HLbo6H&X-{>VlD+9z&t|g6w)CZFwP(;t$1)lO zO52{q)1%b$;#gHzm7{jzQpcSsR5QJbrYnhrhh4EmEEUcqQ$%!xBb&Umo_I$poDyY_ z?sC(wqtXed)3M$TRYxM+*~DFtKPNex!#(k+HySA?8tdrqa?<`vK%s8bzgC5loNylu zaF-G&NcM>s@jE@3&cu4vKr|KKOap%Llbn`@);gFH>5kKAreC$dXN>~6d$s-q6D#a! zGMv5P^rnGiYE#-SVtw6%Y1-{^dcuRr{tW%>goBw_7wsb!k$5W7AJ0H~I^LB?pCm#S z$2V6vEp3g%Ea{GSbvr$=&9NRtN+aUS-~`n%!OH!`Ze>eNQ(J5KF)S0U{T&!|xWY*eB`cXC2o)m|OQezfm_xl<9wnc!$>|FZYNDx;{zSO5 zGu{)o{K|C4Q&CcpacGp4u(+ebiBSq75SC;#?oKu@inclsD_7*lvo9oVzK}oq!ov8InkN-=GR)6$F&|m1#1josM`yQ&%izL>aK$-GP)72AS3N+YE1V}@Z!qhG|nN+*>Z4EMlpakkPy{(7PVaps+6v9+^K zEJu$`cQporCz3V#BQ#Q0&-V4F`jRLYq%|tJOZHh^*&W`jN#jMuqLoN{q91FE=@HB@ z9IHIZPRLX_ScPJtJNmWx)BViLL8ZYyJO2mbG#iblGpRUANhzLkLwR+_Bi&ZVAUnA= z*-3OVUU7$e(N}4ozCp-DFggdVz@(+EJ>zqf)w!7A^_Dh~tw&<(uXum2 zOsaIJd=z=Mvs2U9YL(PxmJ=2~@hpYT$!I-*S7`*-E``JE*zjDEov;M0(l&~jV@-H1 zFs=&lX1k^gn#5HDEDd&il#3yk&V@j74pY+;9&q#6d6ck2k?zMd*M zrqXKCaOAxHxLt!C%lt|w6VIR;#U<&DSXw5@#HvgM^6TTQl9bAf#S>L{O!UHGmZOYZ z<41bIn=S%3=4?M1;ecHtGK@(w6|+oLbB3vA#n^B)ZkIIF7UiLFS-?fz*$$* zqBXoBge!aI+LlmjYo*h$W^H2wrQ`*))wH#@HMguMwyCbMy&i|E5;w37H=xb+JFN#< zX({px1}eo5S`%uiTSXf+wGEB9t(8tIMOs(X)Tv(QbUa)e+tl3D(6pk323+@<)>kyN zH9?W}XKS3bH7#uob?uEcEza8ZmbJ~Tp-C}9j*m-w$O*NyG`F;RY@oBDmNV$MnAy^> za#fpLIsuJswHR(4#tD;#I)%KUQ8ylgQH<&pN*Kz9<8T8o5h zd1vP+=6>c4WbF{w? zS10U5dcyJE>|%xqO<`0IdeCP<1xBO#D^qmXu7i2QHrp7YtZEESXqosG&Vp>E3p|%t zbWwL4p8H!;*1GW@AQZI+O|Fi>_UnagFV$TNu=ebj$pn!-rQF=IKvg=M7=4>QFhB(Ezd01)hM7RMvJ$qUxSO&mCRh3W?u0ScFLs>xw~6 zr>r=)MbQ@PV)3QPa1?g5dAkD%zf(}&i;b&+p?DN~ zEu89zb89Oexy*N6;cr5Z~NOO^(1jBrsPB2P<8 z50-l@C38l$y`&?Sip1giAnsl`oz&g{3GxBFCRF19`vP(%{Y{D7tsw5363~eUEN4ls zWr)FMyF#*MBSqRqq$(YaN9@*tJH@j3B1|OogsXkzN82q3*@+zU4mU?w2DDz?j3aNdpLvhvULhXC!s;OSYtM1$} zX^0;7#oPK9vdJOdZuCfs$N2pT1c;p~_Mkd#*J!{O{7Lj>TQFTDD;x&Ov^V{ zCs=8$E>Nf7WDbh6f-how!&~CL{k_y;RTmT{2V5oZ?K5dhgZae<%<&#;$0ydxudLFs zR-^++!PUiLtOCEZuQdNyf|?UUoYy5@%`iG>v*avVOZ+#AI?eqqGsi zIKQZ8 zTJ9`}Mx8ZWxaM37oU@LQbF?zV`?@t)@pGz=L$ztq`LZqxzndlpY7B)*WnJV z4YjnbcNWwk@BNHYlO<$m{UO?I1i*i8hiyj1QzXK%rbEIp2mC?+zY+| zUjFgR-@5DitsA$l+q&X}!$p`gxBJ$zkD7Vivris0b*uL=&8v&e>ELV-=Gh!Dulvhq zY|EWSX{C*m{q2F|Yfe;&oA8IIum2K;+aF5mOR8}FjFmx5(} z5PbM%@Zo{H51$XFjCcqp1n=QR$-u%s*cwSgmz z;anlP?DJOhm@#mY=e;jGuz1#GzkK^_!gC32`kNKo?V+YX`p82H)YyHY40p?ZstAe!qC>1tRF&;Xv zTT^D-Jggv^CP4-3SEAKLVxBV%9e(@;r=T0#omX<_pmgcQFXm3mmd;y$R;Me+s2+@6 z0jN(Ca2$G}ChsarTk3_|mkHaVrhIGeEREe)!G8e{g0F+e!H>Ydfqw^o1kIcZUkhR& z13nIJ05^g!fv7*>25~FJ5rw z__fiZte{cSF_IVNAdN*DWI#W-0DKDE0{%O=mUVs`coIAX{sm;$f9_ufe**s>%*P&B z0PX{ig6{y?2s?kd^XZ+B?R@$hPv8CYV>f+bAiiPshSmHGkL}32?A*|DnR70~=}({Y z^So)lKKa{u)AH6i8Qnu3l^>U<(6(kpYu@%H1^N1vSF*Ak$(w^#mt?+?x8}R{cqV7s zej1-SoTQ!$_64VbCeRGR;5G0DXv4-k2b>4e;0ACHxDPxHehPj8ehpp)vI*Y+zXxxD zU0@a`-46qcz~Nvi*aU6@H-lTiz2H&sZSc?F8Sv_}+h2X?)jMB(_SI+Yk8WPw{_IuH zUUlbH7kK|VFX+4~JAXE;`0V&hivCtKTuvxwRxapOt_d7eDvt_kx@xcX7gg!E)7 zpRhKwSo|&HIQjwLXfTbxJ}Cp!!CG)SXa{G30dPLJ99#je2KR!Oz#HHl@cIj{KmPE2 zw|(ZKzS}Ok?K9`x)^yP+BPVzEDJ#<(KK!$svN^1AkDhhj1UY`aWJm5C6KIOO+8|5a zU9*qOU2`@^-c_2mrKR)D_Iy6-aKH2Bn54u_C@E&P=BdWJ>|kTApU?O?#{3pE;}fg} zr-M&|E5WCLe1)sPXTde#T5vts25tm5frIfS=7SyCvF7HL;KOslhY=|w9{wemZN$Tf zZ13jb$zav*;{*QQ@b&2MZT7BoZ_^dM;iF5;9($Ye?PaET+pNWh78Sd3_RlLv`*3+Z zJ_*|x4=-`C*aU6{KLalUhrdWW1bhsf4L%QU2mc$q1PJ&&_F^6Ck+z{FbS6X^>ks6Vfk$x@J4 zk3zveCzs`{-x2>G1&1;BD?k`r3#1Ef0;f2}EC&r>JxGHL_^;rfz-z$Q89TXu6TJG9 zNBQ@)&+Fe+{JU_|$5xt2UF^xpd&=(>1@`3VRbF2#%M(qkoccGL<42YMBX15@I`WPz zb+|dk8yh!AUP`ml`e&5uY@KR*T&u*)(RdXff(`)ZEx`T{vm+|MI_H=pF(0kZ?-_h+_G@{|iIX|& z%(j|W(#Dfh`Xb3NyCe7PZWk?z=A6r)fMd02hL-KzqUZ z+y4>U!N1q^^snFgHws5&8}aa~V79{j`_6%YrD%8eOK1AF<;*;`tJ=!`#X08+y8pYy`+*tPe7E=mG*lmuu3la|*X)Cvc`L6aOS63*zRN}x zZVDWDA33lbQ}K7Zip_E}BP)DUO_NEQl<75L(?i=*Kl@=E?PtzeRa6=#>|HgzEDbVX zEOGUwX8F!tUoiD%#uPtw9#1jTNsax~nK6!8%Y6!T+220XP239FO^~Xq#l+3;cYU33 zxRx2FjS?Ny5F__UDi1XKzKMIX^rurz(HVG zAOW_5!RhRxajNRa2*lHR3(s5j47+u|0jj@@o!RU6Wp{;L`QL(OcGcE`)4?afmEcq0 zCU7wQaKHsXJ8zmQDTnVcNfID0drv#r`(S*&duZIP{BR?ipT1}B>3{Y<*jBzgLHe25 z*|MBK$leF*4BiLp&q4oH_m1L8F#o%}SDnQ<%G$OVj=!`_=u2!@fzN_#z_s9dunpV@ ze3_Xakeds+-|ETF&CqN=Mx}7bgYLNsX)YfMeDV13L6Hegwb*NjU%|bK#+eT#|0rpD zS9`r3A{5-q_B~J9czVL}W#%|_=1Ci;&Y_Z9e5w=<2`>&*nOn@c_MO=KuY-eY@_W_4 zwlBH)GwuCI+xTfyJopme;{F4&M1!Ze9=B zn|2pOJ=usO`7OCFx{>-cG;ixNi@&Q?0iWnxD8v zMss*SAYCP$gjs9k`cTC1;@TVnRJTsJ=q-oJY94Y>!8kx^defnKEBZbRJ_4G-Mc`WS zIdCVq3)~GJ0{;ZQ34RUq9z=bZJukEChN0Q*_V*C`d%$oE9oumNxoC2SC@#jM!3VK^ zqqMD{=jG<$-)RE4-}l^QhK7dpcNH^n?TdF@N5V`~wnO_Iwh(h;Z&R{E63o`!4z?1A zpT5JNK|E%!VzY-WXDBm;Smm!J+{cSABA!15!P(w(huHTB4a_u8s2PJNY|2b&iH7sE zk|NvotQ{&~lL?b>{t|F0xB_VLlY{XLcpe#a+_;Nrgwr6@ z4TtY(NaS1h_uaN~;w0M80G$f@JY0=zT?a0rCl>>`-0Gpf#QSbmK37XzcosYdd~V29 zAI%ZD?mjn4=;=s^BgGTI<(l%byTIj-i#7yY-VP8e9!iG(4d~horqF4$_tAM^OYZ1eK@b4)|~T=O-~R9}7Ee&(qI_BZoW2bv9==bLjY9rMTehnPb)Ei}cv zK|FuO;pWAXBaBW<=-lDG$!fb*^@~%EHT$nS*60Mv_YXMHJkxoy(K-A#SJasM!YfQI zf3$Vil+{LWt98moXJ_@-PKow)M(1)uQ`Z}923=aZ!E88TgPGd3!9>qL+vvQ++_S>w zbG02t@53+LZTg_xV)mW9H3;+l@|y>&)+~XMNA;&5qvh zu0H#5^U8)FnR{!VG9_pH*tB2twE5-v|7wnQerj}5_jKo36FL4_qZ2(Z)x2o*R|z_S zaAfx{%qe^P%IN&M-XZJ6LVM$D=IQd+%}e#K8=ZpeDEXb4y5%kNO3&M-YVj^R#&@Ha zwH0+Un#kWavfD(YY8DF>33RV_?OJYz{Ml{HnIAe~&*3LO4=T%7HQGg6E{(yDcFrVj z?d}-0e}wiFu~vF=e0J&+K@r zm@mKEEaxnJ;&S1|6F;+}*bYxEENNhx7E4c4qGaZ=gd<}WqwA0oW0wK9H8-yCJ6R5t zO}k^tL#*_dTypSI{ej&6_N(o(GPa_^h26PEj{!sMU1i69{5*}5FVBAb$Z*w}dY-;x z*WN6>ry280Q2`Z`|JORie0<>30`B?BYpiyuKTtj!mLRc{W|Qn zC;4q>Hn~sTHf&`%jFH2gY1+|mV6ODp_aB;jdRGz#aY`rbOic2QMYXx*LuQMuzb~7| zrEHqHkobFfC-M@KU60;KP_N$kXjY|t@(bbn#({Uxx~Rr6^%oKI(kE`;`KRXYnfF{< zW{y1k>(5ma_b>^PBc-aDs@ymf(@ts2zEZ5JXvv)TC?7Kzw{?27d z{a+@6_ZkE7L7`R#g<3Nd`t)&IxC$I7aG=0}0tX5lC~%;_fdU5#94K(0z<~k>K7bs^ z=l{!(EdI$4e{yTphh|=X6aIhYpYE$CZpx^*K78*=Ab*{J{T|mx?^9kd1hfb6Nx-2- za}Cg&JMA6F*S`bEm;VZoFMmJK+r9q=pY7_V5-K*zq`u_%4TGWR6CBEpY28z=w7?rpP zh~`^>{Piz;&q~w2$H-3@+N@%sAKlnuOVNBb%KHSNt=-=p(L2zw-#T>ZRjYjQFuQA^ z4;2zsxC$I7aG=0}0tX5lC~%;_fdU5#94K(0z<~k>{_Z&-|5N^@{7!j)@=fKn>V3U@ zY`v$~yLma9^26nm%g2^KDo;~Bz24!=cb8|W)3oy6N1x8ssaqYL;i#DPF6R?E;1I9? zyu$&Og@lKJMc{C-7*v2Gz>%O590jU?+*0|^#{iX;|Icw9vkV*ujt3_Io$6KkNrWeZ zQ^2W!qcmnYr~yiU8`OLEdKNwimrly*?|~f?vZr`boPyh(YaXXZd_GBrrcReMx%)N* zE9`^!^VFQxm*~ubB8R-VW9(@-_b;ivsND+o;_oiizT{TnWC|ZjrU$)qTMTBZw*JR68N!YliaPCm8>a?PG-@qtzTACE&pQv*4=K5Vs z`{H;hm~8txd*YveoHC~8yGPFn9{+9UC)t0UTl3p5GIjJ;XUUrRTkVZX*{y3Iw3pxZ zWc#lM&fBe4#?Sn2+8@8h-AjEh?Mrq)D7r4lr^3C zU;jHIYZ|O+)p<3d?3~tpm7iX9g89RTAN+I9wcVQ;h1?Ty;4iuU4^_6tk7NCBgs4Yd zGXeW;_)97i(V8p0u>QZd^_G g!+ZG+YJlCX=dW%57tSBCAIe6m^l&ZsOP@db55$o82LJ#7 literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/main.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/main.c new file mode 100644 index 00000000..ef5af572 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Boot/main.c @@ -0,0 +1,193 @@ +/**************************************************************************************** +| Description: bootloader application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "boot.h" /* bootloader generic header */ +#include "stm32f10x.h" /* microcontroller registers */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader */ + BootInit(); + + /* start the infinite program loop */ + while (1) + { + /* run the bootloader task */ + BootTask(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. The interrupts are disabled, the +** clocks are configured and the flash wait states are configured. +** +****************************************************************************************/ +static void Init(void) +{ + volatile blt_int32u StartUpCounter = 0, HSEStatus = 0; + blt_int32u pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (blt_int32u)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (blt_int32u)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (blt_int32u)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (blt_int32u)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (blt_int32u)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((blt_int32u)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + ASSERT_RT(BLT_FALSE); + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (blt_int32u)((blt_int32u)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (blt_int32u)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (blt_int32u)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (blt_int32u)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (blt_int32u)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (blt_int32u)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (blt_int32u)((blt_int32u)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* assert that the pll_multiplier is between 2 and 16 */ + ASSERT_CT((BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ) >= 2); + ASSERT_CT((BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ) <= 16); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (blt_int32u)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (blt_int32u)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (blt_int32u)((blt_int32u)~(RCC_CFGR_SW)); + RCC->CFGR |= (blt_int32u)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (blt_int32u)RCC_CFGR_SWS) != (blt_int32u)0x08) + { + } +#if (BOOT_COM_UART_ENABLE > 0) + /* enable clock for USART2 peripheral */ + RCC->APB1ENR |= (blt_int32u)0x00020000; + /* enable clocks for USART2 transmitter and receiver pins (GPIOA and AFIO) */ + RCC->APB2ENR |= (blt_int32u)(0x00000004 | 0x00000001); + /* configure USART2 Tx (GPIOA2) as alternate function push-pull */ + /* first reset the configuration */ + GPIOA->CRL &= ~(blt_int32u)((blt_int32u)0xf << 8); + /* CNF2[1:0] = %10 and MODE2[1:0] = %11 */ + GPIOA->CRL |= (blt_int32u)((blt_int32u)0xb << 8); + /* configure USART2 Rx (GPIOA3) as alternate function input floating */ + /* first reset the configuration */ + GPIOA->CRL &= ~(blt_int32u)((blt_int32u)0xf << 12); + /* CNF2[1:0] = %01 and MODE2[1:0] = %00 */ + GPIOA->CRL |= (blt_int32u)((blt_int32u)0x4 << 12); +#endif +#if (BOOT_COM_CAN_ENABLE > 0) + /* enable clocks for CAN transmitter and receiver pins (GPIOB and AFIO) */ + RCC->APB2ENR |= (blt_int32u)(0x00000008 | 0x00000001); + /* configure CAN Rx (GPIOB8) as alternate function input pull-up */ + /* first reset the configuration */ + GPIOB->CRH &= ~(blt_int32u)((blt_int32u)0xf << 0); + /* CNF8[1:0] = %10 and MODE8[1:0] = %00 */ + GPIOB->CRH |= (blt_int32u)((blt_int32u)0x8 << 0); + /* configure CAN Tx (GPIOB9) as alternate function push-pull */ + /* first reset the configuration */ + GPIOB->CRH &= ~(blt_int32u)((blt_int32u)0xf << 4); + /* CNF9[1:0] = %10 and MODE9[1:0] = %11 */ + GPIOB->CRH |= (blt_int32u)((blt_int32u)0xb << 4); + /* remap CAN1 pins to PortB */ + AFIO->MAPR &= ~(blt_int32u)((blt_int32u)0x3 << 13); + AFIO->MAPR |= (blt_int32u)((blt_int32u)0x2 << 13); + /* enable clocks for CAN controller peripheral */ + RCC->APB1ENR |= (blt_int32u)0x02000000; +#endif +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.cproject b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.cproject new file mode 100644 index 00000000..1c2e0a69 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.cproject @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.project b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.project new file mode 100644 index 00000000..9b8da01b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.project @@ -0,0 +1,82 @@ + + + Prog + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + cs-make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/Prog/Debug} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.settings/org.eclipse.cdt.core.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 00000000..ccaafbe3 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,163 @@ +#Fri Dec 02 15:00:26 CET 2011 +eclipse.preferences.version=1 +org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.cdt.core.formatter.alignment_for_assignment=16 +org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80 +org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.cdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=34 +org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18 +org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=0 +org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 +org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48 +org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 +org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.cdt.core.formatter.alignment_for_member_access=0 +org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=16 +org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.cdt.core.formatter.brace_position_for_block=next_line +org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line +org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1 +org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.cdt.core.formatter.compact_else_if=true +org.eclipse.cdt.core.formatter.continuation_indentation=2 +org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false +org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0 +org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true +org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false +org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false +org.eclipse.cdt.core.formatter.indent_empty_lines=false +org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.cdt.core.formatter.indentation.size=2 +org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert +org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.cdt.core.formatter.join_wrapped_lines=true +org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.cdt.core.formatter.lineSplit=90 +org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.cdt.core.formatter.tabulation.char=space +org.eclipse.cdt.core.formatter.tabulation.size=2 +org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.settings/org.eclipse.cdt.ui.prefs b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.settings/org.eclipse.cdt.ui.prefs new file mode 100644 index 00000000..379e5255 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/.settings/org.eclipse.cdt.ui.prefs @@ -0,0 +1,4 @@ +#Fri Dec 02 15:00:26 CET 2011 +eclipse.preferences.version=1 +formatter_profile=_Feaser +formatter_settings_version=1 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/bin/demoprog_olimex_stm32p103.map b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/bin/demoprog_olimex_stm32p103.map new file mode 100644 index 00000000..8aa1dce7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/bin/demoprog_olimex_stm32p103.map @@ -0,0 +1,2032 @@ +Archive member included because of file (symbol) + +c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-ctype_.o) + ./lib/stdio_mini.o (__ctype_ptr__) +c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtol.o) + ./lib/stdio_mini.o (strtol) +c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtoul.o) + ./lib/stdio_mini.o (strtoul) +c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-impure.o) + c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtol.o) (_impure_ptr) +c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_udivsi3.o) + c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtol.o) (__aeabi_uidiv) +c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_dvmd_tls.o) + c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_udivsi3.o) (__aeabi_idiv0) + +Discarded input sections + + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .text.NVIC_PriorityGroupConfig + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .text.NVIC_Init + 0x00000000 0xec ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .text.NVIC_SetVectorTable + 0x00000000 0x2c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .text.NVIC_SystemLPConfig + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .text.SysTick_CLKSourceConfig + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_DeInit + 0x00000000 0x88 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_Init + 0x00000000 0xc0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_StructInit + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_Cmd 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_DMACmd + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_ITConfig + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_ResetCalibration + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetResetCalibrationStatus + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_StartCalibration + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetCalibrationStatus + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_SoftwareStartConvCmd + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetSoftwareStartConvStatus + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_DiscModeChannelCountConfig + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_DiscModeCmd + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_RegularChannelConfig + 0x00000000 0x1d0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_ExternalTrigConvCmd + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetConversionValue + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetDualModeConversionValue + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_AutoInjectedConvCmd + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_InjectedDiscModeCmd + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_ExternalTrigInjectedConvConfig + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_ExternalTrigInjectedConvCmd + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_SoftwareStartInjectedConvCmd + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetSoftwareStartInjectedConvCmdStatus + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_InjectedChannelConfig + 0x00000000 0x150 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_InjectedSequencerLengthConfig + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_SetInjectedOffset + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetInjectedConversionValue + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_AnalogWatchdogCmd + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_AnalogWatchdogThresholdsConfig + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_AnalogWatchdogSingleChannelConfig + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_TempSensorVrefintCmd + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetFlagStatus + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_ClearFlag + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_GetITStatus + 0x00000000 0x6c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text.ADC_ClearITPendingBit + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_DeInit + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_TamperPinLevelConfig + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_TamperPinCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_ITConfig + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_RTCOutputConfig + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_SetRTCCalibrationValue + 0x00000000 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_WriteBackupRegister + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_ReadBackupRegister + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_GetFlagStatus + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_ClearFlag + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_GetITStatus + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text.BKP_ClearITPendingBit + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_DeInit + 0x00000000 0x50 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_Init + 0x00000000 0x1c0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_FilterInit + 0x00000000 0x238 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_StructInit + 0x00000000 0x6c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_SlaveStartBank + 0x00000000 0x90 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_DBGFreeze + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_TTComModeCmd + 0x00000000 0x98 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_Transmit + 0x00000000 0x1f0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_TransmitStatus + 0x00000000 0x118 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_CancelTransmit + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_Receive + 0x00000000 0x1a8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_FIFORelease + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_MessagePending + 0x00000000 0x50 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_OperatingModeRequest + 0x00000000 0x114 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_Sleep + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_WakeUp + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_GetLastErrorCode + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_GetReceiveErrorCounter + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_GetLSBTransmitErrorCounter + 0x00000000 0x2c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_ITConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_GetFlagStatus + 0x00000000 0x10c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_ClearFlag + 0x00000000 0x7c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_GetITStatus + 0x00000000 0x1bc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CAN_ClearITPendingBit + 0x00000000 0xf8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text.CheckITStatus + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_DeInit + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_Init + 0x00000000 0x50 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_Cmd 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_ITConfig + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_OwnAddressConfig + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_SetPrescaler + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_SendDataByte + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_ReceiveDataByte + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_StartOfMessage + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_EndOfMessageCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_GetFlagStatus + 0x00000000 0x80 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_ClearFlag + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_GetITStatus + 0x00000000 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text.CEC_ClearITPendingBit + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .text.CRC_ResetDR + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .text.CRC_CalcCRC + 0x00000000 0x2c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .text.CRC_CalcBlockCRC + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .text.CRC_GetCRC + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .text.CRC_SetIDRegister + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .text.CRC_GetIDRegister + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_DeInit + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_Init + 0x00000000 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_StructInit + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_Cmd 0x00000000 0x6c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_DMACmd + 0x00000000 0x6c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_SoftwareTriggerCmd + 0x00000000 0x74 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_DualSoftwareTriggerCmd + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_WaveGenerationCmd + 0x00000000 0x68 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_SetChannel1Data + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_SetChannel2Data + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_SetDualChannelData + 0x00000000 0x68 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text.DAC_GetDataOutputValue + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .text.DBGMCU_GetREVID + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .text.DBGMCU_GetDEVID + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .text.DBGMCU_Config + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_DeInit + 0x00000000 0x224 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_Init + 0x00000000 0x84 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_StructInit + 0x00000000 0x6c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_Cmd 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_ITConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_SetCurrDataCounter + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_GetCurrDataCounter + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_GetFlagStatus + 0x00000000 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_ClearFlag + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_GetITStatus + 0x00000000 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text.DMA_ClearITPendingBit + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text.EXTI_DeInit + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text.EXTI_Init + 0x00000000 0x158 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text.EXTI_StructInit + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text.EXTI_GenerateSWInterrupt + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text.EXTI_GetFlagStatus + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text.EXTI_ClearFlag + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text.EXTI_GetITStatus + 0x00000000 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text.EXTI_ClearITPendingBit + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_SetLatency + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_HalfCycleAccessCmd + 0x00000000 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_PrefetchBufferCmd + 0x00000000 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_Unlock + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_UnlockBank1 + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_Lock + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_LockBank1 + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_ErasePage + 0x00000000 0x94 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_EraseAllPages + 0x00000000 0x84 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_EraseAllBank1Pages + 0x00000000 0x84 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_EraseOptionBytes + 0x00000000 0x140 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_ProgramWord + 0x00000000 0xc4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_ProgramHalfWord + 0x00000000 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_ProgramOptionByteData + 0x00000000 0xa4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_EnableWriteProtection + 0x00000000 0x160 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_ReadOutProtection + 0x00000000 0x148 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_UserOptionByteConfig + 0x00000000 0xc4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_GetUserOptionByte + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_GetWriteProtectionOptionByte + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_GetReadOutProtectionStatus + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_GetPrefetchBufferStatus + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_ITConfig + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_GetFlagStatus + 0x00000000 0x6c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_ClearFlag + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_GetStatus + 0x00000000 0x70 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_GetBank1Status + 0x00000000 0x70 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text.FLASH_WaitForLastBank1Operation + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NORSRAMDeInit + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NANDDeInit + 0x00000000 0x8c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_PCCARDDeInit + 0x00000000 0x50 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NORSRAMInit + 0x00000000 0x158 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NANDInit + 0x00000000 0x104 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_PCCARDInit + 0x00000000 0xdc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NORSRAMStructInit + 0x00000000 0x108 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NANDStructInit + 0x00000000 0x9c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_PCCARDStructInit + 0x00000000 0xa4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NORSRAMCmd + 0x00000000 0x58 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NANDCmd + 0x00000000 0xa4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_PCCARDCmd + 0x00000000 0x58 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_NANDECCCmd + 0x00000000 0xa4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_GetECC + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_ITConfig + 0x00000000 0xf8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_GetFlagStatus + 0x00000000 0x74 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_ClearFlag + 0x00000000 0x88 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_GetITStatus + 0x00000000 0x98 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text.FSMC_ClearITPendingBit + 0x00000000 0x94 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_DeInit + 0x00000000 0x128 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_AFIODeInit + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_StructInit + 0x00000000 0x2c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_ReadInputDataBit + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_ReadInputData + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_ReadOutputDataBit + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_ReadOutputData + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_WriteBit + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_Write + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_PinLockConfig + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_EventOutputConfig + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_EventOutputCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_PinRemapConfig + 0x00000000 0x124 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_EXTILineConfig + 0x00000000 0xb4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text.GPIO_ETH_MediaInterfaceConfig + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_DeInit + 0x00000000 0x50 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_Init + 0x00000000 0x1b8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_StructInit + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_Cmd 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_DMACmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_DMALastTransferCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_GenerateSTART + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_GenerateSTOP + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_AcknowledgeConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_OwnAddress2Config + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_DualAddressCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_GeneralCallCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_ITConfig + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_SendData + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_ReceiveData + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_Send7bitAddress + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_ReadRegister + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_SoftwareResetCmd + 0x00000000 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_NACKPositionConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_SMBusAlertConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_TransmitPEC + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_PECPositionConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_CalculatePEC + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_GetPEC + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_ARPCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_StretchClockCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_FastModeDutyCycleConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_CheckEvent + 0x00000000 0x70 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_GetLastEvent + 0x00000000 0x50 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_GetFlagStatus + 0x00000000 0x7c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_ClearFlag + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_GetITStatus + 0x00000000 0x68 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text.I2C_ClearITPendingBit + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .text.IWDG_WriteAccessCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .text.IWDG_SetPrescaler + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .text.IWDG_SetReload + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .text.IWDG_ReloadCounter + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .text.IWDG_Enable + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .text.IWDG_GetFlagStatus + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.__WFI 0x00000000 0xc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.__WFE 0x00000000 0xc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_DeInit + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_BackupAccessCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_PVDCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_PVDLevelConfig + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_WakeUpPinCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_EnterSTOPMode + 0x00000000 0x84 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_EnterSTANDBYMode + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_GetFlagStatus + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text.PWR_ClearFlag + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_DeInit + 0x00000000 0xa0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_HSEConfig + 0x00000000 0x88 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_WaitForHSEStartUp + 0x00000000 0x64 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_AdjustHSICalibrationValue + 0x00000000 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_HSICmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_PLLConfig + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_PLLCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_SYSCLKConfig + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_GetSYSCLKSource + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_HCLKConfig + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_PCLK1Config + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_PCLK2Config + 0x00000000 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_ITConfig + 0x00000000 0x64 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_USBCLKConfig + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_ADCCLKConfig + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_LSEConfig + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_LSICmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_RTCCLKConfig + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_RTCCLKCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_AHBPeriphClockCmd + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_APB2PeriphResetCmd + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_APB1PeriphResetCmd + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_BackupResetCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_ClockSecuritySystemCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_MCOConfig + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_GetFlagStatus + 0x00000000 0x90 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_ClearFlag + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_GetITStatus + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text.RCC_ClearITPendingBit + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_ITConfig + 0x00000000 0x64 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_EnterConfigMode + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_ExitConfigMode + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_GetCounter + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_SetCounter + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_SetPrescaler + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_SetAlarm + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_GetDivider + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_WaitForLastTask + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_WaitForSynchro + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_GetFlagStatus + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_ClearFlag + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_GetITStatus + 0x00000000 0x64 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text.RTC_ClearITPendingBit + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_DeInit + 0x00000000 0x8c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_Init + 0x00000000 0x6c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_StructInit + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_ClockCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_SetPowerState + 0x00000000 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_GetPowerState + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_ITConfig + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_DMACmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_SendCommand + 0x00000000 0x6c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_CmdStructInit + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_GetCommandResponse + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_GetResponse + 0x00000000 0x2c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_DataConfig + 0x00000000 0x74 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_DataStructInit + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_GetDataCounter + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_ReadData + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_WriteData + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_GetFIFOCount + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_StartSDIOReadWait + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_StopSDIOReadWait + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_SetSDIOReadWaitMode + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_SetSDIOOperation + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_SendSDIOSuspendCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_CommandCompletionCmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_CEATAITCmd + 0x00000000 0x2c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_SendCEATACmd + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_GetFlagStatus + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_ClearFlag + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_GetITStatus + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text.SDIO_ClearITPendingBit + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_DeInit + 0x00000000 0x88 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_Init + 0x00000000 0x98 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.I2S_Init + 0x00000000 0x1a4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_StructInit + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.I2S_StructInit + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_Cmd 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.I2S_Cmd 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_ITConfig + 0x00000000 0x70 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_DMACmd + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_SendData + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_ReceiveData + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_NSSInternalSoftwareConfig + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_SSOutputCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_DataSizeConfig + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_TransmitCRC + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_CalculateCRC + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_GetCRC + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_GetCRCPolynomial + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_BiDirectionalLineConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_GetFlagStatus + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_ClearFlag + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_GetITStatus + 0x00000000 0x8c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text.SPI_I2S_ClearITPendingBit + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_DeInit + 0x00000000 0x2b0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_TimeBaseInit + 0x00000000 0x120 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC1Init + 0x00000000 0x134 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC2Init + 0x00000000 0x134 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC3Init + 0x00000000 0x130 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC4Init + 0x00000000 0xe8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ICInit + 0x00000000 0xa8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_PWMIConfig + 0x00000000 0xc4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_BDTRConfig + 0x00000000 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_TimeBaseStructInit + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OCStructInit + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ICStructInit + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_BDTRStructInit + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_Cmd 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_CtrlPWMOutputs + 0x00000000 0x50 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ITConfig + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GenerateEvent + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_DMAConfig + 0x00000000 0x2c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_DMACmd + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_InternalClockConfig + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ITRxExternalClockConfig + 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_TIxExternalClockConfig + 0x00000000 0x58 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ETRClockMode1Config + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ETRClockMode2Config + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ETRConfig + 0x00000000 0x54 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_PrescalerConfig + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_CounterModeConfig + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectInputTrigger + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_EncoderInterfaceConfig + 0x00000000 0x98 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ForcedOC1Config + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ForcedOC2Config + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ForcedOC3Config + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ForcedOC4Config + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ARRPreloadConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectCOM + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectCCDMA + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_CCPreloadControl + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC1PreloadConfig + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC2PreloadConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC3PreloadConfig + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC4PreloadConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC1FastConfig + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC2FastConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC3FastConfig + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC4FastConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ClearOC1Ref + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ClearOC2Ref + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ClearOC3Ref + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ClearOC4Ref + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC1PolarityConfig + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC1NPolarityConfig + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC2PolarityConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC2NPolarityConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC3PolarityConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC3NPolarityConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_OC4PolarityConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_CCxCmd + 0x00000000 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_CCxNCmd + 0x00000000 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectOCxM + 0x00000000 0xc0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_UpdateDisableConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_UpdateRequestConfig + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectHallSensor + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectOnePulseMode + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectOutputTrigger + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectSlaveMode + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SelectMasterSlaveMode + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetCounter + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetAutoreload + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetCompare1 + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetCompare2 + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetCompare3 + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetCompare4 + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetIC1Prescaler + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetIC2Prescaler + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetIC3Prescaler + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetIC4Prescaler + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_SetClockDivision + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GetCapture1 + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GetCapture2 + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GetCapture3 + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GetCapture4 + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GetCounter + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GetPrescaler + 0x00000000 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GetFlagStatus + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ClearFlag + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_GetITStatus + 0x00000000 0x64 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TIM_ClearITPendingBit + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TI1_Config + 0x00000000 0xec ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TI2_Config + 0x00000000 0x10c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TI3_Config + 0x00000000 0xfc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text.TI4_Config + 0x00000000 0x114 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_DeInit + 0x00000000 0xd8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_StructInit + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_ClockInit + 0x00000000 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_ClockStructInit + 0x00000000 0x34 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_ITConfig + 0x00000000 0xa8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_DMACmd + 0x00000000 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_SetAddress + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_WakeUpConfig + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_ReceiverWakeUpCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_LINBreakDetectLengthConfig + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_LINCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_SendBreak + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_SetGuardTime + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_SetPrescaler + 0x00000000 0x3c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_SmartCardCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_SmartCardNACKCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_HalfDuplexCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_OverSampling8Cmd + 0x00000000 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_OneBitMethodCmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_IrDAConfig + 0x00000000 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_IrDACmd + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_ClearFlag + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_GetITStatus + 0x00000000 0xcc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text.USART_ClearITPendingBit + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .text 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .data 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text.WWDG_DeInit + 0x00000000 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text.WWDG_SetPrescaler + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text.WWDG_SetWindowValue + 0x00000000 0x44 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text.WWDG_EnableIT + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text.WWDG_SetCounter + 0x00000000 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text.WWDG_Enable + 0x00000000 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text.WWDG_GetFlagStatus + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text.WWDG_ClearFlag + 0x00000000 0x18 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .text 0x00000000 0x0 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .data 0x00000000 0x0 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .data.SystemCoreClock + 0x00000000 0x4 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .data.AHBPrescTable + 0x00000000 0x10 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .text.SystemInit + 0x00000000 0xac ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .text.SystemCoreClockUpdate + 0x00000000 0x148 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .text.SetSysClock + 0x00000000 0xc ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .text.SetSysClockTo72 + 0x00000000 0x1ac ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .text 0x00000000 0x0 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .data 0x00000000 0x0 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .bss 0x00000000 0x0 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__get_PSP + 0x00000000 0x10 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__set_PSP + 0x00000000 0x8 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__get_MSP + 0x00000000 0x10 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__set_MSP + 0x00000000 0x8 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__get_BASEPRI + 0x00000000 0x20 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__set_BASEPRI + 0x00000000 0x18 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__get_PRIMASK + 0x00000000 0x20 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__set_PRIMASK + 0x00000000 0x18 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__get_FAULTMASK + 0x00000000 0x20 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__set_FAULTMASK + 0x00000000 0x18 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__get_CONTROL + 0x00000000 0x20 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__set_CONTROL + 0x00000000 0x18 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__REV 0x00000000 0x24 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__REV16 0x00000000 0x24 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__REVSH 0x00000000 0x24 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__RBIT 0x00000000 0x24 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__LDREXB + 0x00000000 0x24 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__LDREXH + 0x00000000 0x24 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__LDREXW + 0x00000000 0x24 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__STREXB + 0x00000000 0x2c ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__STREXH + 0x00000000 0x2c ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text.__STREXW + 0x00000000 0x28 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .text 0x00000000 0x0 ./lib/stdio_mini.o + .data 0x00000000 0x0 ./lib/stdio_mini.o + .bss 0x00000000 0x0 ./lib/stdio_mini.o + .text.puts 0x00000000 0x44 ./lib/stdio_mini.o + .text.scanf 0x00000000 0x398 ./lib/stdio_mini.o + .text 0x00000000 0x0 ./boot.o + .data 0x00000000 0x0 ./boot.o + .bss 0x00000000 0x0 ./boot.o + .text 0x00000000 0x0 ./cstart.o + .data 0x00000000 0x0 ./cstart.o + .bss 0x00000000 0x0 ./cstart.o + .text 0x00000000 0x0 ./irq.o + .data 0x00000000 0x0 ./irq.o + .bss 0x00000000 0x0 ./irq.o + .text.__disable_irq + 0x00000000 0xc ./irq.o + .bss.interruptNesting + 0x00000000 0x1 ./irq.o + .text.IrqInterruptDisable + 0x00000000 0x34 ./irq.o + .text.IrqInterruptRestore + 0x00000000 0x34 ./irq.o + .text 0x00000000 0x0 ./led.o + .data 0x00000000 0x0 ./led.o + .bss 0x00000000 0x0 ./led.o + .text 0x00000000 0x0 ./main.o + .data 0x00000000 0x0 ./main.o + .bss 0x00000000 0x0 ./main.o + .text 0x00000000 0x0 ./timer.o + .data 0x00000000 0x0 ./timer.o + .bss 0x00000000 0x0 ./timer.o + .text 0x00000000 0x0 ./uart.o + .data 0x00000000 0x0 ./uart.o + .bss 0x00000000 0x0 ./uart.o + .text 0x00000000 0x0 ./vectors.o + .data 0x00000000 0x0 ./vectors.o + .bss 0x00000000 0x0 ./vectors.o + .text 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-ctype_.o) + .bss 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-ctype_.o) + .text 0x00000000 0x17c c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtol.o) + .data 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtol.o) + .bss 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtol.o) + .text 0x00000000 0x17c c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtoul.o) + .data 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtoul.o) + .bss 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtoul.o) + .text 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-impure.o) + .data 0x00000000 0xf4 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-impure.o) + .bss 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-impure.o) + .rodata 0x00000000 0x4 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-impure.o) + .rodata.str1.4 + 0x00000000 0x4 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-impure.o) + .text 0x00000000 0x278 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_udivsi3.o) + .data 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_udivsi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_udivsi3.o) + .text 0x00000000 0x4 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_dvmd_tls.o) + .data 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_dvmd_tls.o) + .bss 0x00000000 0x0 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_dvmd_tls.o) + +Memory Configuration + +Name Origin Length Attributes +FLASH 0x08002000 0x0001e000 xr +SRAM 0x20000000 0x00005000 xrw +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o +LOAD ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o +LOAD ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o +LOAD ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o +LOAD ./lib/stdio_mini.o +LOAD ./boot.o +LOAD ./cstart.o +LOAD ./irq.o +LOAD ./led.o +LOAD ./main.o +LOAD ./timer.o +LOAD ./uart.o +LOAD ./vectors.o +START GROUP +LOAD c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a +LOAD c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a +END GROUP + 0x00000400 __STACKSIZE__ = 0x400 + +.text 0x08002000 0x1ba0 + *(.isr_vector) + .isr_vector 0x08002000 0x154 ./vectors.o + 0x08002000 _vectab + *(.text*) + .text.GPIO_Init + 0x08002154 0x1c0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + 0x08002154 GPIO_Init + .text.GPIO_SetBits + 0x08002314 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + 0x08002314 GPIO_SetBits + .text.GPIO_ResetBits + 0x08002330 0x1c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + 0x08002330 GPIO_ResetBits + .text.RCC_GetClocksFreq + 0x0800234c 0x1d4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + 0x0800234c RCC_GetClocksFreq + .text.RCC_APB2PeriphClockCmd + 0x08002520 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + 0x08002520 RCC_APB2PeriphClockCmd + .text.RCC_APB1PeriphClockCmd + 0x0800257c 0x5c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + 0x0800257c RCC_APB1PeriphClockCmd + .text.USART_Init + 0x080025d8 0x1c0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + 0x080025d8 USART_Init + .text.USART_Cmd + 0x08002798 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + 0x08002798 USART_Cmd + .text.USART_SendData + 0x080027d8 0x28 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + 0x080027d8 USART_SendData + .text.USART_ReceiveData + 0x08002800 0x24 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + 0x08002800 USART_ReceiveData + .text.USART_GetFlagStatus + 0x08002824 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + 0x08002824 USART_GetFlagStatus + .text.printf 0x08002864 0x2c ./lib/stdio_mini.o + 0x08002864 printf + .text.output_dup + 0x08002890 0x50 ./lib/stdio_mini.o + .text.format_integer + 0x080028e0 0x2b8 ./lib/stdio_mini.o + .text.parse_conversion + 0x08002b98 0x2c8 ./lib/stdio_mini.o + .text.libvprintf + 0x08002e60 0x330 ./lib/stdio_mini.o + .text.BootActivate + 0x08003190 0x1c ./boot.o + .text.BootComInit + 0x080031ac 0x10 ./boot.o + 0x080031ac BootComInit + .text.BootComCheckActivationRequest + 0x080031bc 0xe8 ./boot.o + 0x080031bc BootComCheckActivationRequest + .text.reset_handler + 0x080032a4 0x70 ./cstart.o + 0x080032a4 reset_handler + .text.__enable_irq + 0x08003314 0xc ./irq.o + .text.IrqInterruptEnable + 0x08003320 0xc ./irq.o + 0x08003320 IrqInterruptEnable + .text.LedInit 0x0800332c 0x40 ./led.o + 0x0800332c LedInit + .text.LedToggle + 0x0800336c 0x88 ./led.o + 0x0800336c LedToggle + .text.main 0x080033f4 0x1c ./main.o + 0x080033f4 main + .text.DisplayUptime + 0x08003410 0x10c ./main.o + .text.Init 0x0800351c 0x254 ./main.o + .text.NVIC_SetPriority + 0x08003770 0x5c ./timer.o + .text.SysTick_Config + 0x080037cc 0x64 ./timer.o + .text.TimerInit + 0x08003830 0x1c ./timer.o + 0x08003830 TimerInit + .text.TimerSet + 0x0800384c 0x20 ./timer.o + 0x0800384c TimerSet + .text.TimerGet + 0x0800386c 0x18 ./timer.o + 0x0800386c TimerGet + .text.TimerISRHandler + 0x08003884 0x24 ./timer.o + 0x08003884 TimerISRHandler + .text.UartInit + 0x080038a8 0xb0 ./uart.o + 0x080038a8 UartInit + .text.UartTxChar + 0x08003958 0x40 ./uart.o + 0x08003958 UartTxChar + .text.UartRxChar + 0x08003998 0x5c ./uart.o + 0x08003998 UartRxChar + .text.UnusedISR + 0x080039f4 0x8 ./vectors.o + 0x080039f4 UnusedISR + *(.rodata*) + .rodata 0x080039fc 0x40 ./lib/stdio_mini.o + .rodata.base_d + 0x08003a3c 0x10 ./lib/stdio_mini.o + .rodata.base_o + 0x08003a4c 0x10 ./lib/stdio_mini.o + .rodata.base_x + 0x08003a5c 0x10 ./lib/stdio_mini.o + .rodata.base_X + 0x08003a6c 0x10 ./lib/stdio_mini.o + .rodata 0x08003a7c 0x20 ./main.o + .rodata 0x08003a9c 0x104 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-ctype_.o) + 0x08003a9c _ctype_ + 0x08003ba0 _etext = . + +.glue_7 0x08003ba0 0x0 + .glue_7 0x00000000 0x0 linker stubs + +.glue_7t 0x08003ba0 0x0 + .glue_7t 0x00000000 0x0 linker stubs + +.vfp11_veneer 0x08003ba0 0x0 + .vfp11_veneer 0x00000000 0x0 linker stubs + +.v4_bx 0x08003ba0 0x0 + .v4_bx 0x00000000 0x0 linker stubs + +.data 0x20000000 0x18 load address 0x08003ba0 + 0x20000000 _data = . + *(vtable) + *(.data*) + .data.APBAHBPrescTable + 0x20000000 0x10 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .data.ADCPrescTable + 0x20000010 0x4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .data 0x20000014 0x4 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-ctype_.o) + 0x20000014 __ctype_ptr__ + 0x20000018 _edata = . + +.bss 0x20000018 0x464 load address 0x08003bb8 + 0x20000018 _bss = . + *(.bss*) + .bss.txcharcnt + 0x20000018 0x4 ./lib/stdio_mini.o + .bss.xcpCtoRxInProgress.3649 + 0x2000001c 0x1 ./boot.o + *fill* 0x2000001d 0x3 00 + .bss.xcpCtoReqPacket.3647 + 0x20000020 0x44 ./boot.o + .bss.xcpCtoRxLength.3648 + 0x20000064 0x1 ./boot.o + *fill* 0x20000065 0x3 00 + .bss.timer_counter_last.3644 + 0x20000068 0x4 ./led.o + .bss.led_toggle_state.3643 + 0x2000006c 0x1 ./led.o + *fill* 0x2000006d 0x3 00 + .bss.uptime_ms_last.4547 + 0x20000070 0x4 ./main.o + .bss.sec.4551 0x20000074 0x1 ./main.o + .bss.min.4550 0x20000075 0x1 ./main.o + .bss.hr.4549 0x20000076 0x1 ./main.o + *fill* 0x20000077 0x1 00 + .bss.millisecond_counter + 0x20000078 0x4 ./timer.o + *(COMMON) + 0x2000007c _ebss = . + 0x2000007c _stack = . + 0x2000047c . = ALIGN (MAX ((_stack + __STACKSIZE__), .), 0x4) + *fill* 0x2000007c 0x400 00 + 0x2000047c _estack = . +OUTPUT(demoprog_olimex_stm32p103.elf elf32-littlearm) + +.debug_abbrev 0x00000000 0x2ad9 + .debug_abbrev 0x00000000 0x139 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_abbrev 0x00000139 0x178 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_abbrev 0x000002b1 0x15a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_abbrev 0x0000040b 0x1b0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_abbrev 0x000005bb 0x18d ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_abbrev 0x00000748 0x10e ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_abbrev 0x00000856 0x16d ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_abbrev 0x000009c3 0xde ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_abbrev 0x00000aa1 0x152 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_abbrev 0x00000bf3 0x14e ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_abbrev 0x00000d41 0x166 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_abbrev 0x00000ea7 0x16a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_abbrev 0x00001011 0x1a8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_abbrev 0x000011b9 0x161 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_abbrev 0x0000131a 0xfe ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_abbrev 0x00001418 0x188 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_abbrev 0x000015a0 0x195 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_abbrev 0x00001735 0x16a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_abbrev 0x0000189f 0x1a6 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_abbrev 0x00001a45 0x161 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_abbrev 0x00001ba6 0x176 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_abbrev 0x00001d1c 0x15f ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_abbrev 0x00001e7b 0xfc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_abbrev 0x00001f77 0x182 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_abbrev 0x000020f9 0xd9 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_abbrev 0x000021d2 0x1b8 ./lib/stdio_mini.o + .debug_abbrev 0x0000238a 0xc7 ./boot.o + .debug_abbrev 0x00002451 0x86 ./cstart.o + .debug_abbrev 0x000024d7 0x7b ./irq.o + .debug_abbrev 0x00002552 0xf0 ./led.o + .debug_abbrev 0x00002642 0xf4 ./main.o + .debug_abbrev 0x00002736 0x199 ./timer.o + .debug_abbrev 0x000028cf 0x130 ./uart.o + .debug_abbrev 0x000029ff 0xda ./vectors.o + +.debug_info 0x00000000 0xd359 + .debug_info 0x00000000 0x54e ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_info 0x0000054e 0xc16 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_info 0x00001164 0x881 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_info 0x000019e5 0xc5f ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_info 0x00002644 0x444 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_info 0x00002a88 0x208 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_info 0x00002c90 0x4e0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_info 0x00003170 0x162 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_info 0x000032d2 0x4aa ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_info 0x0000377c 0x369 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_info 0x00003ae5 0x821 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_info 0x00004306 0x9a1 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_info 0x00004ca7 0x72b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_info 0x000053d2 0xb9c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_info 0x00005f6e 0x208 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_info 0x00006176 0x463 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_info 0x000065d9 0x909 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_info 0x00006ee2 0x472 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_info 0x00007354 0x897 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_info 0x00007beb 0x979 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_info 0x00008564 0x1e20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_info 0x0000a384 0xa74 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_info 0x0000adf8 0x23d ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_info 0x0000b035 0x4a8 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_info 0x0000b4dd 0x550 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_info 0x0000ba2d 0x579 ./lib/stdio_mini.o + .debug_info 0x0000bfa6 0x143 ./boot.o + .debug_info 0x0000c0e9 0x11f ./cstart.o + .debug_info 0x0000c208 0x10d ./irq.o + .debug_info 0x0000c315 0x260 ./led.o + .debug_info 0x0000c575 0x2dd ./main.o + .debug_info 0x0000c852 0x5f8 ./timer.o + .debug_info 0x0000ce4a 0x3f2 ./uart.o + .debug_info 0x0000d23c 0x11d ./vectors.o + +.debug_line 0x00000000 0xe71a + .debug_line 0x00000000 0x5c0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_line 0x000005c0 0x896 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_line 0x00000e56 0x644 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_line 0x0000149a 0x8e4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_line 0x00001d7e 0x686 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_line 0x00002404 0x5dd ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_line 0x000029e1 0x663 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_line 0x00003044 0x598 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_line 0x000035dc 0x676 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_line 0x00003c52 0x61a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_line 0x0000426c 0x84b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_line 0x00004ab7 0x7d2 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_line 0x00005289 0x721 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_line 0x000059aa 0x837 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_line 0x000061e1 0x5ce ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_line 0x000067af 0x63a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_line 0x00006de9 0x839 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_line 0x00007622 0x68b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_line 0x00007cad 0x7bd ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_line 0x0000846a 0x782 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_line 0x00008bec 0xe08 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_line 0x000099f4 0x7f9 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_line 0x0000a1ed 0x5f5 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_line 0x0000a7e2 0x61d ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_line 0x0000adff 0x2f9 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_line 0x0000b0f8 0x58b ./lib/stdio_mini.o + .debug_line 0x0000b683 0x5d4 ./boot.o + .debug_line 0x0000bc57 0x5a9 ./cstart.o + .debug_line 0x0000c200 0x5e8 ./irq.o + .debug_line 0x0000c7e8 0x5bc ./led.o + .debug_line 0x0000cda4 0x7e8 ./main.o + .debug_line 0x0000d58c 0x60a ./timer.o + .debug_line 0x0000db96 0x5e3 ./uart.o + .debug_line 0x0000e179 0x5a1 ./vectors.o + +.debug_macinfo 0x00000000 0xa11171 + .debug_macinfo + 0x00000000 0x5020b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_macinfo + 0x0005020b 0x50872 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_macinfo + 0x000a0a7d 0x5045d ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_macinfo + 0x000f0eda 0x503e7 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_macinfo + 0x001412c1 0x50405 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_macinfo + 0x001916c6 0x501df ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_macinfo + 0x001e18a5 0x502f6 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_macinfo + 0x00231b9b 0x5020a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_macinfo + 0x00281da5 0x506ce ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_macinfo + 0x002d2473 0x50203 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_macinfo + 0x00322676 0x505fb ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_macinfo + 0x00372c71 0x50324 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_macinfo + 0x003c2f95 0x5043a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_macinfo + 0x004133cf 0x506bb ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_macinfo + 0x00463a8a 0x50225 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_macinfo + 0x004b3caf 0x503a8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_macinfo + 0x00504057 0x50971 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_macinfo + 0x005549c8 0x5022c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_macinfo + 0x005a4bf4 0x5076a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_macinfo + 0x005f535e 0x5045e ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_macinfo + 0x006457bc 0x50268 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_macinfo + 0x00695a24 0x505f5 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_macinfo + 0x006e6019 0x50312 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_macinfo + 0x0073632b 0x5020f ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_macinfo + 0x0078653a 0x1f9c ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_macinfo + 0x007884d6 0x3cb0 ./lib/stdio_mini.o + .debug_macinfo + 0x0078c186 0x50496 ./boot.o + .debug_macinfo + 0x007dc61c 0x50496 ./cstart.o + .debug_macinfo + 0x0082cab2 0x50496 ./irq.o + .debug_macinfo + 0x0087cf48 0x504ac ./led.o + .debug_macinfo + 0x008cd3f4 0x52fbb ./main.o + .debug_macinfo + 0x009203af 0x50496 ./timer.o + .debug_macinfo + 0x00970845 0x50496 ./uart.o + .debug_macinfo + 0x009c0cdb 0x50496 ./vectors.o + +.debug_loc 0x00000000 0x7094 + .debug_loc 0x00000000 0x118 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_loc 0x00000118 0x7d4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_loc 0x000008ec 0x264 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_loc 0x00000b50 0x578 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_loc 0x000010c8 0x2ec ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_loc 0x000013b4 0x12c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_loc 0x000014e0 0x294 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_loc 0x00001774 0x90 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_loc 0x00001804 0x268 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_loc 0x00001a6c 0x1b4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_loc 0x00001c20 0x5d8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_loc 0x000021f8 0x41c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_loc 0x00002614 0x3e4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_loc 0x000029f8 0x738 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_loc 0x00003130 0x138 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_loc 0x00003268 0x238 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_loc 0x000034a0 0x6dc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_loc 0x00003b7c 0x2e0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_loc 0x00003e5c 0x648 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_loc 0x000044a4 0x508 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_loc 0x000049ac 0x13e8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_loc 0x00005d94 0x658 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_loc 0x000063ec 0x190 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_loc 0x0000657c 0xc8 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_loc 0x00006644 0x3f0 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_loc 0x00006a34 0x1a4 ./lib/stdio_mini.o + .debug_loc 0x00006bd8 0x9c ./boot.o + .debug_loc 0x00006c74 0x38 ./cstart.o + .debug_loc 0x00006cac 0xdc ./irq.o + .debug_loc 0x00006d88 0x70 ./led.o + .debug_loc 0x00006df8 0x9c ./main.o + .debug_loc 0x00006e94 0x12c ./timer.o + .debug_loc 0x00006fc0 0xa8 ./uart.o + .debug_loc 0x00007068 0x2c ./vectors.o + +.debug_pubnames + 0x00000000 0x2e00 + .debug_pubnames + 0x00000000 0x89 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_pubnames + 0x00000089 0x401 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_pubnames + 0x0000048a 0x128 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_pubnames + 0x000005b2 0x208 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_pubnames + 0x000007ba 0x12b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_pubnames + 0x000008e5 0x82 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_pubnames + 0x00000967 0x116 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_pubnames + 0x00000a7d 0x4c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_pubnames + 0x00000ac9 0xea ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_pubnames + 0x00000bb3 0xbb ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_pubnames + 0x00000c6e 0x2f2 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_pubnames + 0x00000f60 0x1a3 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_pubnames + 0x00001103 0x19d ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_pubnames + 0x000012a0 0x2cb ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_pubnames + 0x0000156b 0x91 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_pubnames + 0x000015fc 0xcb ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_pubnames + 0x000016c7 0x2c4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_pubnames + 0x0000198b 0x136 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_pubnames + 0x00001ac1 0x2ac ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_pubnames + 0x00001d6d 0x1f6 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_pubnames + 0x00001f63 0x7b0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_pubnames + 0x00002713 0x294 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_pubnames + 0x000029a7 0xb0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_pubnames + 0x00002a57 0x61 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_pubnames + 0x00002ab8 0x159 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_pubnames + 0x00002c11 0x30 ./lib/stdio_mini.o + .debug_pubnames + 0x00002c41 0x44 ./boot.o + .debug_pubnames + 0x00002c85 0x24 ./cstart.o + .debug_pubnames + 0x00002ca9 0x59 ./irq.o + .debug_pubnames + 0x00002d02 0x2c ./led.o + .debug_pubnames + 0x00002d2e 0x1b ./main.o + .debug_pubnames + 0x00002d49 0x4e ./timer.o + .debug_pubnames + 0x00002d97 0x3d ./uart.o + .debug_pubnames + 0x00002dd4 0x2c ./vectors.o + +.debug_pubtypes + 0x00000000 0x115b + .debug_pubtypes + 0x00000000 0x80 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_pubtypes + 0x00000080 0x8c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_pubtypes + 0x0000010c 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_pubtypes + 0x00000184 0x115 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_pubtypes + 0x00000299 0x8c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_pubtypes + 0x00000325 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_pubtypes + 0x0000036d 0x70 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_pubtypes + 0x000003dd 0x46 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_pubtypes + 0x00000423 0x98 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_pubtypes + 0x000004bb 0xa2 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_pubtypes + 0x0000055d 0x8d ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_pubtypes + 0x000005ea 0x168 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_pubtypes + 0x00000752 0xc3 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_pubtypes + 0x00000815 0xb2 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_pubtypes + 0x000008c7 0x58 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_pubtypes + 0x0000091f 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_pubtypes + 0x00000997 0x9e ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_pubtypes + 0x00000a35 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_pubtypes + 0x00000aad 0xb2 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_pubtypes + 0x00000b5f 0xb6 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_pubtypes + 0x00000c15 0xd8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_pubtypes + 0x00000ced 0xc9 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_pubtypes + 0x00000db6 0x4b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_pubtypes + 0x00000e01 0x67 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_pubtypes + 0x00000e68 0x50 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_pubtypes + 0x00000eb8 0x71 ./lib/stdio_mini.o + .debug_pubtypes + 0x00000f29 0x12 ./boot.o + .debug_pubtypes + 0x00000f3b 0x12 ./cstart.o + .debug_pubtypes + 0x00000f4d 0x12 ./irq.o + .debug_pubtypes + 0x00000f5f 0x7d ./led.o + .debug_pubtypes + 0x00000fdc 0x4d ./main.o + .debug_pubtypes + 0x00001029 0x6e ./timer.o + .debug_pubtypes + 0x00001097 0xa5 ./uart.o + .debug_pubtypes + 0x0000113c 0x1f ./vectors.o + +.debug_aranges 0x00000000 0x13c8 + .debug_aranges + 0x00000000 0x40 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_aranges + 0x00000040 0x138 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_aranges + 0x00000178 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_aranges + 0x000001f0 0xe0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_aranges + 0x000002d0 0x88 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_aranges + 0x00000358 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_aranges + 0x000003a0 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_aranges + 0x00000418 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_aranges + 0x00000448 0x70 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_aranges + 0x000004b8 0x58 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_aranges + 0x00000510 0xf8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_aranges + 0x00000608 0xb0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_aranges + 0x000006b8 0xa8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_aranges + 0x00000760 0x120 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_aranges + 0x00000880 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_aranges + 0x000008c8 0x70 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_aranges + 0x00000938 0x118 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_aranges + 0x00000a50 0x88 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_aranges + 0x00000ad8 0x108 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_aranges + 0x00000be0 0xd0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_aranges + 0x00000cb0 0x2f0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_aranges + 0x00000fa0 0x100 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_aranges + 0x000010a0 0x58 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_aranges + 0x000010f8 0x38 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_aranges + 0x00001130 0xc8 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_aranges + 0x000011f8 0x50 ./lib/stdio_mini.o + .debug_aranges + 0x00001248 0x30 ./boot.o + .debug_aranges + 0x00001278 0x20 ./cstart.o + .debug_aranges + 0x00001298 0x40 ./irq.o + .debug_aranges + 0x000012d8 0x28 ./led.o + .debug_aranges + 0x00001300 0x30 ./main.o + .debug_aranges + 0x00001330 0x48 ./timer.o + .debug_aranges + 0x00001378 0x30 ./uart.o + .debug_aranges + 0x000013a8 0x20 ./vectors.o + +.debug_ranges 0x00000000 0x11a8 + .debug_ranges 0x00000000 0x30 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_ranges 0x00000030 0x128 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_ranges 0x00000158 0x68 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_ranges 0x000001c0 0xd0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_ranges 0x00000290 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_ranges 0x00000308 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_ranges 0x00000340 0x68 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_ranges 0x000003a8 0x20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_ranges 0x000003c8 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_ranges 0x00000428 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_ranges 0x00000470 0xe8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_ranges 0x00000558 0xa0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_ranges 0x000005f8 0x98 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_ranges 0x00000690 0x110 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_ranges 0x000007a0 0x38 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_ranges 0x000007d8 0x60 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_ranges 0x00000838 0x108 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_ranges 0x00000940 0x78 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_ranges 0x000009b8 0xf8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_ranges 0x00000ab0 0xc0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_ranges 0x00000b70 0x2e0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_ranges 0x00000e50 0xf0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_ranges 0x00000f40 0x48 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_ranges 0x00000f88 0x28 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_ranges 0x00000fb0 0xb8 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_ranges 0x00001068 0x40 ./lib/stdio_mini.o + .debug_ranges 0x000010a8 0x20 ./boot.o + .debug_ranges 0x000010c8 0x10 ./cstart.o + .debug_ranges 0x000010d8 0x30 ./irq.o + .debug_ranges 0x00001108 0x18 ./led.o + .debug_ranges 0x00001120 0x20 ./main.o + .debug_ranges 0x00001140 0x38 ./timer.o + .debug_ranges 0x00001178 0x20 ./uart.o + .debug_ranges 0x00001198 0x10 ./vectors.o + +.debug_str 0x00000000 0x5496 + .debug_str 0x00000000 0x340 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + 0x380 (size before relaxing) + .debug_str 0x00000340 0x54b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + 0x6b8 (size before relaxing) + .debug_str 0x0000088b 0x3cc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + 0x572 (size before relaxing) + .debug_str 0x00000c57 0x51e ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + 0x6eb (size before relaxing) + .debug_str 0x00001175 0x1b4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + 0x333 (size before relaxing) + .debug_str 0x00001329 0xca ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + 0x1f8 (size before relaxing) + .debug_str 0x000013f3 0x215 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + 0x36c (size before relaxing) + .debug_str 0x00001608 0x98 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + 0x1c4 (size before relaxing) + .debug_str 0x000016a0 0x21e ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + 0x37e (size before relaxing) + .debug_str 0x000018be 0x1c7 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + 0x31b (size before relaxing) + .debug_str 0x00001a85 0x427 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + 0x5a5 (size before relaxing) + .debug_str 0x00001eac 0x5d5 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + 0x741 (size before relaxing) + .debug_str 0x00002481 0x37e ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + 0x4d6 (size before relaxing) + .debug_str 0x000027ff 0x440 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + 0x623 (size before relaxing) + .debug_str 0x00002c3f 0xe2 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + 0x219 (size before relaxing) + .debug_str 0x00002d21 0x122 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + 0x2cf (size before relaxing) + .debug_str 0x00002e43 0x3d2 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + 0x5d7 (size before relaxing) + .debug_str 0x00003215 0x19a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + 0x35f (size before relaxing) + .debug_str 0x000033af 0x47b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + 0x5f8 (size before relaxing) + .debug_str 0x0000382a 0x36b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + 0x5ba (size before relaxing) + .debug_str 0x00003b95 0xafc ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + 0xd9a (size before relaxing) + .debug_str 0x00004691 0x42a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + 0x64d (size before relaxing) + .debug_str 0x00004abb 0xde ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + 0x225 (size before relaxing) + .debug_str 0x00004b99 0x99 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + 0x2a3 (size before relaxing) + .debug_str 0x00004c32 0x161 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + 0x286 (size before relaxing) + .debug_str 0x00004d93 0x175 ./lib/stdio_mini.o + 0x287 (size before relaxing) + .debug_str 0x00004f08 0x85 ./boot.o + 0x180 (size before relaxing) + .debug_str 0x00004f8d 0x39 ./cstart.o + 0x134 (size before relaxing) + .debug_str 0x00004fc6 0x70 ./irq.o + 0x16b (size before relaxing) + .debug_str 0x00005036 0x5b ./led.o + 0x294 (size before relaxing) + .debug_str 0x00005091 0x49 ./main.o + 0x1e6 (size before relaxing) + .debug_str 0x000050da 0x34c ./timer.o + 0x534 (size before relaxing) + .debug_str 0x00005426 0x3b ./uart.o + 0x367 (size before relaxing) + .debug_str 0x00005461 0x35 ./vectors.o + 0x130 (size before relaxing) + +.comment 0x00000000 0x2a + .comment 0x00000000 0x2a ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + 0x2b (size before relaxing) + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .comment 0x00000000 0x2b ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .comment 0x00000000 0x2b ./lib/stdio_mini.o + .comment 0x00000000 0x2b ./boot.o + .comment 0x00000000 0x2b ./cstart.o + .comment 0x00000000 0x2b ./irq.o + .comment 0x00000000 0x2b ./led.o + .comment 0x00000000 0x2b ./main.o + .comment 0x00000000 0x2b ./timer.o + .comment 0x00000000 0x2b ./uart.o + .comment 0x00000000 0x2b ./vectors.o + +.ARM.attributes + 0x00000000 0x31 + .ARM.attributes + 0x00000000 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .ARM.attributes + 0x00000031 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .ARM.attributes + 0x00000062 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .ARM.attributes + 0x00000093 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .ARM.attributes + 0x000000c4 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .ARM.attributes + 0x000000f5 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .ARM.attributes + 0x00000126 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .ARM.attributes + 0x00000157 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .ARM.attributes + 0x00000188 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .ARM.attributes + 0x000001b9 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .ARM.attributes + 0x000001ea 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .ARM.attributes + 0x0000021b 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .ARM.attributes + 0x0000024c 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .ARM.attributes + 0x0000027d 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .ARM.attributes + 0x000002ae 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .ARM.attributes + 0x000002df 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .ARM.attributes + 0x00000310 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .ARM.attributes + 0x00000341 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .ARM.attributes + 0x00000372 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .ARM.attributes + 0x000003a3 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .ARM.attributes + 0x000003d4 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .ARM.attributes + 0x00000405 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .ARM.attributes + 0x00000436 0x31 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .ARM.attributes + 0x00000467 0x31 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .ARM.attributes + 0x00000498 0x31 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .ARM.attributes + 0x000004c9 0x31 ./lib/stdio_mini.o + .ARM.attributes + 0x000004fa 0x31 ./boot.o + .ARM.attributes + 0x0000052b 0x31 ./cstart.o + .ARM.attributes + 0x0000055c 0x31 ./irq.o + .ARM.attributes + 0x0000058d 0x31 ./led.o + .ARM.attributes + 0x000005be 0x31 ./main.o + .ARM.attributes + 0x000005ef 0x31 ./timer.o + .ARM.attributes + 0x00000620 0x31 ./uart.o + .ARM.attributes + 0x00000651 0x31 ./vectors.o + .ARM.attributes + 0x00000682 0x29 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-ctype_.o) + .ARM.attributes + 0x000006ab 0x29 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtol.o) + .ARM.attributes + 0x000006d4 0x29 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtoul.o) + .ARM.attributes + 0x000006fd 0x29 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-impure.o) + .ARM.attributes + 0x00000726 0x1b c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_udivsi3.o) + .ARM.attributes + 0x00000741 0x1b c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_dvmd_tls.o) + +.debug_frame 0x00000000 0x3df4 + .debug_frame 0x00000000 0x9c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.o + .debug_frame 0x0000009c 0x404 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.o + .debug_frame 0x000004a0 0x160 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.o + .debug_frame 0x00000600 0x2d4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.o + .debug_frame 0x000008d4 0x198 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.o + .debug_frame 0x00000a6c 0xb8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.o + .debug_frame 0x00000b24 0x160 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.o + .debug_frame 0x00000c84 0x64 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.o + .debug_frame 0x00000ce8 0x144 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.o + .debug_frame 0x00000e2c 0xf0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.o + .debug_frame 0x00000f1c 0x350 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.o + .debug_frame 0x0000126c 0x224 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.o + .debug_frame 0x00001490 0x210 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.o + .debug_frame 0x000016a0 0x3b4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.o + .debug_frame 0x00001a54 0xb8 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.o + .debug_frame 0x00001b0c 0x148 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.o + .debug_frame 0x00001c54 0x394 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.o + .debug_frame 0x00001fe8 0x1a4 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.o + .debug_frame 0x0000218c 0x358 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.o + .debug_frame 0x000024e4 0x29c ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.o + .debug_frame 0x00002780 0xa20 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.o + .debug_frame 0x000031a0 0x344 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.o + .debug_frame 0x000034e4 0xf0 ./lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.o + .debug_frame 0x000035d4 0x80 ./lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.o + .debug_frame 0x00003654 0x280 ./lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.o + .debug_frame 0x000038d4 0x10c ./lib/stdio_mini.o + .debug_frame 0x000039e0 0x6c ./boot.o + .debug_frame 0x00003a4c 0x30 ./cstart.o + .debug_frame 0x00003a7c 0x9c ./irq.o + .debug_frame 0x00003b18 0x50 ./led.o + .debug_frame 0x00003b68 0x6c ./main.o + .debug_frame 0x00003bd4 0xbc ./timer.o + .debug_frame 0x00003c90 0x70 ./uart.o + .debug_frame 0x00003d00 0x2c ./vectors.o + .debug_frame 0x00003d2c 0x54 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtol.o) + .debug_frame 0x00003d80 0x54 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-strtoul.o) + .debug_frame 0x00003dd4 0x20 c:/program files (x86)/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5.1/thumb2\libgcc.a(_udivsi3.o) diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/bin/demoprog_olimex_stm32p103.srec b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/bin/demoprog_olimex_stm32p103.srec new file mode 100644 index 00000000..2008a8fc --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/bin/demoprog_olimex_stm32p103.srec @@ -0,0 +1,446 @@ +S021000064656D6F70726F675F6F6C696D65785F73746D3332703130332E737265639D +S315080020007C040020A5320008F5390008F5390008D7 +S31508002010F5390008F5390008F5390008F5390008DA +S31508002020F5390008F5390008F5390008F5390008CA +S31508002030F5390008F5390008F5390008853800082B +S31508002040F5390008F5390008F5390008F5390008AA +S31508002050F5390008F5390008F5390008F53900089A +S31508002060F5390008F5390008F5390008F53900088A +S31508002070F5390008F5390008F5390008F53900087A +S31508002080F5390008F5390008F5390008F53900086A +S31508002090F5390008F5390008F5390008F53900085A +S315080020A0F5390008F5390008F5390008F53900084A +S315080020B0F5390008F5390008F5390008F53900083A +S315080020C0F5390008F5390008F5390008F53900082A +S315080020D0F5390008F5390008F5390008F53900081A +S315080020E0F5390008F5390008F5390008F53900080A +S315080020F0F5390008F5390008F5390008F5390008FA +S31508002100F5390008F5390008F5390008F5390008E9 +S31508002110F5390008F5390008F5390008F5390008D9 +S31508002120F5390008F5390008F5390008F5390008C9 +S31508002130F5390008F5390008F5390008F5390008B9 +S31508002140F5390008F5390008F5390008F5390008A9 +S31508002150EE11AA5580B489B000AF786039604FF0A7 +S315080021600003FB614FF000033B614FF00003BB61C6 +S315080021704FF00003FB604FF000037B614FF0000354 +S31508002180BB603B68DB7803F00F03FB613B68DB78D9 +S3150800219003F01003002B05D03B689B78FA6942EAE6 +S315080021A00303FB613B681B8803F0FF03002B51D038 +S315080021B07B681B687B614FF00003BB6144E0BB6929 +S315080021C04FF0010202FA03F3FB603B681B881A46CC +S315080021D0FB6802EA03033B613A69FB689A422FD11E +S315080021E0BB694FEA8303FB60FB684FF00F0202FAF4 +S315080021F003F3BB60BB686FEA03037A6902EA030369 +S315080022007B61FB68FA6902FA03F37A6942EA030317 +S315080022107B613B68DB78282B07D1BB694FF001024D +S3150800222002FA03F27B685A610AE03B68DB78482BBE +S3150800223006D1BB694FF0010202FA03F27B681A6104 +S31508002240BB6903F10103BB61BB69072BB7D97B687F +S315080022507A691A603B681B88FF2B56D97B685B68CE +S315080022607B614FF00003BB6149E0BB6903F10803DA +S315080022704FF0010202FA03F3FB603B681B881A461B +S31508002280FB6802EA03033B613A69FB689A4232D16A +S31508002290BB694FEA8303FB60FB684FF00F0202FA43 +S315080022A003F3BB60BB686FEA03037A6902EA0303B8 +S315080022B07B61FB68FA6902FA03F37A6942EA030367 +S315080022C07B613B68DB78282B08D1BB6903F10803DF +S315080022D04FF0010202FA03F27B685A613B68DB7829 +S315080022E0482B08D1BB6903F108034FF0010202FA33 +S315080022F003F27B681A61BB6903F10103BB61BB6921 +S31508002300072BB2D97B687A695A6007F12407BD465C +S3150800231080BC704780B483B000AF78600B467B8082 +S315080023207A887B681A6107F10C07BD4680BC70473E +S3150800233080B483B000AF78600B467B807A887B6870 +S315080023405A6107F10C07BD4680BC704780B487B058 +S3150800235000AF78604FF000037B614FF000033B61EC +S315080023604FF00003FB604FF00003BB604FF480534F +S31508002370C4F202035B6803F00C037B617B69042BE0 +S315080023800AD0082B0FD0002B4DD17A684FF4905302 +S31508002390C0F27A0313604DE07A684FF49053C0F2A6 +S315080023A07A03136046E04FF48053C4F202035B6875 +S315080023B003F470133B614FF48053C4F202035B6865 +S315080023C003F48033FB603B694FEA934303F102034E +S315080023D03B61FB68002B09D13A694FF41063C0F2E0 +S315080023E03D0303FB02F27B681A6023E04FF4805337 +S315080023F0C4F202035B6803F40033002B09D03A6980 +S315080024004FF41063C0F23D0303FB02F27B681A60C7 +S3150800241010E03A694FF49053C0F27A0303FB02F2D4 +S315080024207B681A6006E07A684FF49053C0F27A0324 +S31508002430136000BF4FF48053C4F202035B6803F0D5 +S31508002440F0037B617B694FEA13137B6140F200035B +S31508002450C2F200037A699B181B78DBB2BB607B6803 +S315080024601A68BB6822FA03F27B685A604FF48053F5 +S31508002470C4F202035B6803F4E0637B617B694FEA9D +S3150800248013237B6140F20003C2F200037A699B18AA +S315080024901B78DBB2BB607B685A68BB6822FA03F21A +S315080024A07B689A604FF48053C4F202035B6803F4B6 +S315080024B060537B617B694FEAD3237B6140F200035B +S315080024C0C2F200037A699B181B78DBB2BB607B6893 +S315080024D05A68BB6822FA03F27B68DA604FF48053C5 +S315080024E0C4F202035B6803F440437B617B694FEAED +S315080024F093337B6140F21003C2F200037A699B189A +S315080025001B78DBB2BB607B68DA68BB68B2FBF3F2A8 +S315080025107B681A6107F11C07BD4680BC704700BF7F +S3150800252080B483B000AF78600B46FB70FB78002B55 +S315080025300ED04FF48053C4F202034FF48052C4F213 +S315080025400202926911467A6841EA02029A610FE02C +S315080025504FF48053C4F202034FF48052C4F20202CD +S31508002560926911467A686FEA020201EA02029A61E2 +S3150800257007F10C07BD4680BC704700BF80B483B026 +S3150800258000AF78600B46FB70FB78002B0ED04FF43B +S315080025908053C4F202034FF48052C4F20202D26995 +S315080025A011467A6841EA0202DA610FE04FF4805375 +S315080025B0C4F202034FF48052C4F20202D2691146F1 +S315080025C07A686FEA020201EA0202DA6107F10C0789 +S315080025D0BD4680BC704700BF80B58CB000AF786040 +S315080025E039604FF00003FB624FF00003BB624FF007 +S315080025F000037B624FF000033B624FF00003FB6170 +S315080026007B68FB617B681B8A9BB2FB62FA6A4CF6A5 +S31508002610FF7302EA0303FB623B68DB88FA6A42EA55 +S315080026200303FB62FB6A9AB27B681A827B689B8902 +S315080026309BB2FB62FA6A4EF6F31302EA0303FB62E5 +S315080026403B689A883B681B8942EA03039AB23B684F +S315080026505B8942EA03039BB2FA6A42EA0303FB6216 +S31508002660FB6A9AB27B689A817B689B8A9BB2FB62FB +S31508002670FA6A4FF6FF4302EA0303FB623B689B894B +S31508002680FA6A42EA0303FB62FB6A9AB27B689A8299 +S3150800269007F108031846FFF759FEFA694FF4605325 +S315080026A0C4F201039A4202D17B69BB6201E03B692D +S315080026B0BB627B689B899BB29BB21BB2002B0FDA6D +S315080026C0BA6A13464FEA83039B184FEA83029A189D +S315080026D03B681B684FEA4303B2FBF3F37B620EE0E9 +S315080026E0BA6A13464FEA83039B184FEA83029A187D +S315080026F03B681B684FEA8303B2FBF3F37B627A6A93 +S3150800270048F21F53C5F2EB13A3FB02134FEA531308 +S315080027104FEA0313FB62FB6A4FEA13134FF0640296 +S3150800272002FB03F37A6AD31A3B627B689B899BB2E6 +S315080027309BB21BB2002B13DA3B6A4FEAC30303F1C1 +S31508002740320248F21F53C5F2EB13A3FB02134FEAFA +S31508002750531303F00703FA6A42EA0303FB6212E023 +S315080027603B6A4FEA031303F1320248F21F53C5F2DC +S31508002770EB13A3FB02134FEA531303F00F03FA6A92 +S3150800278042EA0303FB62FB6A9AB27B681A8107F185 +S315080027903007BD4680BD00BF80B483B000AF786007 +S315080027A00B46FB70FB78002B08D07B689B899BB295 +S315080027B043F400539AB27B689A8107E07B689B8949 +S315080027C09BB223F400539AB27B689A8107F10C07EF +S315080027D0BD4680BC704700BF80B483B000AF786048 +S315080027E00B467B807B884FEAC3534FEAD3539AB292 +S315080027F07B689A8007F10C07BD4680BC704700BF0E +S3150800280080B483B000AF78607B689B889BB24FEA40 +S31508002810C3534FEAD3539BB2184607F10C07BD467C +S3150800282080BC704780B485B000AF78600B467B806B +S315080028304FF00003FB737B681B889AB27B8802EA19 +S3150800284003039BB2002B03D04FF00103FB7302E096 +S315080028504FF00003FB73FB7B184607F11407BD46D0 +S3150800286080BC70470FB480B582B000AF07F114037F +S315080028703B603869396800F0F3FA78607B68184677 +S3150800288007F10807BD46BDE8804004B0704700BFA1 +S3150800289080B582B000AF03463960FB710FE0FB7963 +S315080028A0184601F059F840F21803C2F200031B68F3 +S315080028B003F1010240F21803C2F200031A603B68F2 +S315080028C0002B0CBF00230123DBB23A6802F1FF326A +S315080028D03A60002BE3D107F10807BD4680BD00BF6B +S315080028E080B59AB000AFF8607B600B46FB72134662 +S315080028F0BB724FF000033B66FB7A002B25D03B6F7B +S315080029001B7803F00203002B09D0BB7A002B02D0F8 +S315080029104FF02D0301E04FF02B033B6615E03B6FAC +S315080029201B7803F00403002B09D0BB7A002B02D0D6 +S315080029304FF02D0301E04FF020033B6605E0BB7A1C +S31508002940002B02D04FF02D033B663B6F1B7803F03C +S315080029500803002B05D0FB68002B02D07B689B6818 +S3150800296001E04FF000037B6507F110037B664FF02B +S315080029700003BB6537E03B6F1B7803F02003002B91 +S3150800298014D0BB6D002B11DD7B68DA68BB6D93FB39 +S31508002990F2F102FB01F29B1A002B07D17B6E4FF076 +S315080029A02C021A707B6E03F101037B667B685968FB +S315080029B07B681B681A46FB68B3FBF2F002FB00F261 +S315080029C09B1ACB181A787B6E1A707B6E03F101037B +S315080029D07B667B681B68FA68B2FBF3F3FB60BB6D2A +S315080029E003F10103BB65FB68002BC4D13B6F9B68F1 +S315080029F0002B02DB3B6F9B6801E04FF001033B6550 +S31508002A0007E07B6E4FF030021A707B6E03F101030C +S31508002A107B667A6E07F11003D21A3B6D9A4206DA84 +S31508002A2007F1100303F13F037A6E9A42E9D33B6F2D +S31508002A301B7803F00803002B16D07B681B68082B4D +S31508002A4012D107F110037A6E9A4205D07B6E03F114 +S31508002A50FF331B78302B07D07B6E4FF030021A708D +S31508002A607B6E03F101037B663B6F5A6807F1100121 +S31508002A707B6ECB1AD2187B6D002B02D04FF0020367 +S31508002A8001E04FF00003D21A3B6E002B0CBF002367 +S31508002A900123D31AFB65FB6D002B02DA4FF0000306 +S31508002AA0FB653B6F1B7803F01103002B05D1FB6D0B +S31508002AB04FF020001946FFF7EBFE3B6E002B0ED0B9 +S31508002AC0386E00F049FF40F21803C2F200031B6893 +S31508002AD003F1010240F21803C2F200031A607B6D8B +S31508002AE0002B1ED04FF0300000F036FF40F21803DE +S31508002AF0C2F200031B6803F1010240F21803C2F296 +S31508002B0000031A60786D00F027FF40F21803C2F23E +S31508002B1000031B6803F1010240F21803C2F2000326 +S31508002B201A603B6F1B7803F01003002B1CD0FB6D5B +S31508002B304FF030001946FFF7ABFE16E07B6E03F147 +S31508002B40FF337B667B6E1B78184600F005FF40F264 +S31508002B501803C2F200031B6803F1010240F21803CE +S31508002B60C2F200031A6000E000BF07F110037A6E94 +S31508002B709A42E3D83B6F1B7803F00103DBB2002BC4 +S31508002B8005D0FB6D4FF020001946FFF781FE07F1CF +S31508002B906807BD4680BD00BF80B485B000AFF86049 +S31508002BA0B9607A60BB684FF000021A70FB681B7840 +S31508002BB0FA6802F10102FA60A3F12003102B55D836 +S31508002BC001A252F823F000BF2D2C00086D2C000836 +S31508002BD06D2C00083D2C00086D2C00086D2C000893 +S31508002BE06D2C00085D2C00086D2C00086D2C000863 +S31508002BF06D2C00081D2C00086D2C00080D2C0008F3 +S31508002C006D2C00086D2C00084D2C0008BB681B783D +S31508002C1043F00103DAB2BB681A7034E0BB681B786C +S31508002C2043F00203DAB2BB681A702CE0BB681B7863 +S31508002C3043F00403DAB2BB681A7024E0BB681B7859 +S31508002C4043F00803DAB2BB681A701CE0BB681B784D +S31508002C5043F01003DAB2BB681A7014E0BB681B783D +S31508002C6043F02003DAB2BB681A700CE0FB6803F184 +S31508002C70FF33FB6000BFBB681B7803F00103DBB2C0 +S31508002C80002B08D000E091E7BB681B7823F01003FF +S31508002C90DAB2BB681A70BB681B7803F00203002B14 +S31508002CA006D0BB681B7823F00403DAB2BB681A7037 +S31508002CB0BB684FF000025A60FB681B782A2B22D1AA +S31508002CC0FB6803F10103FB607B681B6803F10401E1 +S31508002CD07A6811601A68BB685A6024E0BB685A684B +S31508002CE013464FEA83039B184FEA43031A46FB68C9 +S31508002CF01B78D318A3F13002BB685A60FB6803F14E +S31508002D000103FB6000E000BF40F21403C2F20003B7 +S31508002D101A68FB681B7803F10103D3181B7803F0C4 +S31508002D200403002BDAD1BB685B68002B0CDABB689E +S31508002D305B68C3F10002BB685A60BB681B7843F046 +S31508002D400103DAB2BB681A70BB684FF0FF329A60AB +S31508002D50FB681B782E2B45D1FB6803F10103FB604A +S31508002D60FB681B782A2B0DD1FB6803F10103FB6076 +S31508002D707B681B6803F104017A6811601A68BB68EE +S31508002D809A6027E0BB684FF000029A6013E0BB68C0 +S31508002D909A6813464FEA83039B184FEA43031A4679 +S31508002DA0FB681B78D318A3F13002BB689A60FB68EE +S31508002DB003F10103FB6040F21403C2F200031A6830 +S31508002DC0FB681B7803F10103D3181B7803F004038F +S31508002DD0002BDCD1BB689B68002B03DABB684FF07D +S31508002DE0FF329A60BB689B68002B06DBBB681B78C2 +S31508002DF023F01003DAB2BB681A70BB684FF00302FF +S31508002E001A73FB681B78FA6802F10102FA60682BEC +S31508002E1002D06C2B12D016E0FB681B78682B08D101 +S31508002E20FB6803F10103FB60BB684FF001021A73EC +S31508002E300EE0BB684FF002021A7309E0BB684FF058 +S31508002E4005021A7304E0FB6803F1FF33FB6000BF59 +S31508002E50FB68184607F11407BD4680BC704700BFDB +S31508002E6080B58CB002AF7860396082E17B681B78E8 +S31508002E70252B11D07B681B78184600F06DFD40F2B3 +S31508002E801803C2F200031B6803F1010240F218039B +S31508002E90C2F200031A6068E17B6803F101037B60F4 +S31508002EA07B681B78252B11D17B681B78184600F0A8 +S31508002EB053FD40F21803C2F200031B6803F1010236 +S31508002EC040F21803C2F200031A604EE107F10C0241 +S31508002ED03B46786811461A46FFF75EFE78607B68BF +S31508002EE01B78A3F15803202B00F23E8101A252F869 +S31508002EF023F000BF13300008693100086931000863 +S31508002F00693100086931000869310008693100082B +S31508002F10693100086931000869310008693100081B +S31508002F2069310008792F00086931000869310008FD +S31508002F306931000869310008792F000869310008ED +S31508002F4069310008693100086931000869310008EB +S31508002F501330000869310008693100086931000832 +S31508002F606931000869310008133000086931000822 +S31508002F7069310008133000083B7E03F1FF33042B48 +S31508002F802CD801A252F823F09D2F0008AF2F000875 +S31508002F90C12F0008DD2F0008CF2F00083B6803F17A +S31508002FA004023A601B68DBB25BB27B621AE03B68DC +S31508002FB003F104023A601B689BB21BB27B6211E004 +S31508002FC03B6803F104023A601B687B620AE03B68CF +S31508002FD003F104023A601B687B6203E04FF00003CA +S31508002FE07B6200BF7B6A002BB8BF5B421A467B6ACE +S31508002FF04FEAD373DBB207F10C01009110464FF08C +S3150800300001011A4643F63C23C0F60003FFF768FCA5 +S31508003010ABE03B7E03F1FF33042B2BD801A252F819 +S3150800302023F000BF3930000849300008593000083D +S3150800303075300008673000083B6803F104023A60FF +S315080030401B68DBB23B6219E03B6803F104023A6095 +S315080030501B689BB23B6211E03B6803F104023A60CD +S315080030601B683B620AE03B6803F104023A601B688E +S315080030703B6203E04FF000033B6200BF7B681B78AE +S31508003080A3F15803202B5DD801A252F823F000BF04 +S315080030903931000845310008453100084531000836 +S315080030A0453100084531000845310008453100081A +S315080030B0453100084531000845310008453100080A +S315080030C045310008453100084531000845310008FA +S315080030D045310008453100084531000845310008EA +S315080030E0453100084531000845310008153100080A +S315080030F045310008453100084531000845310008CA +S3150800310045310008213100084531000845310008DD +S315080031102D31000843F64C23C0F60003FB6117E087 +S3150800312043F63C23C0F60003FB6111E043F65C233B +S31508003130C0F60003FB610BE043F66C23C0F6000300 +S31508003140FB6105E043F63C23C0F60003FB6100BFC4 +S3150800315007F10C030093386A4FF000014FF00002A4 +S31508003160FB69FFF7BDFB00E000BF7B6803F10103C5 +S315080031707B607B681B78002B7FF478AE40F21803DF +S31508003180C2F200031B68184607F12807BD4680BD32 +S3150800319080B582B000AF40F25113C0F600037B60E1 +S315080031A07B68984707F10807BD4680BD80B500AF24 +S315080031B04FF4614000F078FB80BD00BF80B582B057 +S315080031C000AF40F21C03C2F200031B78002B1ED18D +S315080031D04FF0000000F0E0FB78607B68B3F1FF3F3A +S315080031E05CD07B68DAB240F22003C2F200031A70A0 +S315080031F040F21C03C2F200034FF001021A7040F2BB +S315080032006403C2F200034FF000021A7046E04FF062 +S31508003210000000F0C1FB78607B68B3F1FF3F3DD04A +S3150800322040F26403C2F200031B7803F101027B68D3 +S31508003230D9B240F22003C2F20003995440F2640363 +S31508003240C2F200031B7803F10103DAB240F2640309 +S31508003250C2F200031A7040F22003C2F200031A7881 +S3150800326040F26403C2F200031B789A4216D140F278 +S315080032701C03C2F200034FF000021A7040F220034A +S31508003280C2F200035B78FF2B08D140F22003C2F29A +S3150800329000039B78002B01D1FFF77AFF07F1080797 +S315080032A0BD4680BD80B582B000AF17498D4643F64E +S315080032B0A033C0F600037B6040F20003C2F20003AD +S315080032C03B600BE07B681A683B681A603B6803F151 +S315080032D004033B607B6803F104037B603A6840F2B1 +S315080032E01803C2F200039A42ECD3084808494FF083 +S315080032F000028842B8BF40F8042BFADB00F07AF8DF +S3150800330007F10807BD4680BD7C0400201800002090 +S315080033107C00002080B400AF62B6BD4680BC704712 +S3150800332080B500AFFFF7F6FF80BD00BF80B582B05D +S3150800333000AF4FF010004FF00101FFF7F1F84FF41E +S315080033408053BB804FF00303BB714FF01003FB7132 +S3150800335007F104034FF48050C4F201001946FEF742 +S31508003360F9FE07F10807BD4680BD00BF80B582B0EB +S3150800337000AF00F07BFA786040F26803C2F20003FF +S315080033801B687A68D21A40F2F3139A422CD940F293 +S315080033906C03C2F200031B78002B0FD140F26C03BA +S315080033A0C2F200034FF001021A704FF48050C4F2C3 +S315080033B001004FF48051FEF7BBFF0EE040F26C03AC +S315080033C0C2F200034FF000021A704FF48050C4F2A4 +S315080033D001004FF48051FEF79DFF40F26803C2F2E8 +S315080033E000037A681A6000E000BF07F10807BD46C7 +S315080033F080BD00BF80B500AF00F090F8FFF7D6FE9D +S31508003400FFF7B4FF00F004F8FFF7D8FEF8E700BFAF +S3150800341080B582B000AF00F029FA786040F27003F8 +S31508003420C2F200031B687A68D21A40F2E7339A425E +S315080034306ED940F27403C2F200031B7803F101034C +S31508003440DAB240F27403C2F200031A7040F274034F +S31508003450C2F200031B783B2B3CD940F27403C2F23C +S3150800346000034FF000021A7040F27503C2F200031F +S315080034701B7803F10103DAB240F27503C2F20003C6 +S315080034801A7040F27503C2F200031B783B2B21D950 +S3150800349040F27503C2F200034FF000021A7040F2C0 +S315080034A07603C2F200031B7803F10103DAB240F295 +S315080034B07603C2F200031A7040F27603C2F20003E2 +S315080034C01B78172B06D940F27603C2F200034FF099 +S315080034D000021A7040F27603C2F200031B781946FE +S315080034E040F27503C2F200031B781A4640F27403D1 +S315080034F0C2F200031B7843F67C20C0F60000FFF7F3 +S31508003500B1F940F27003C2F200037A681A6000E06B +S3150800351000BF07F10807BD4680BD00BF80B584B06F +S3150800352000AF4FF00003BB604FF000037B604FF421 +S315080035308053C4F202034FF48052C4F202021268A6 +S3150800354042F001021A604FF48052C4F202024FF4AC +S315080035508053C4F202035B6819464FF00003CFF6A6 +S31508003560FF0301EA030353604FF48053C4F20203D6 +S315080035704FF48052C4F20202126822F0847222F4D6 +S3150800358080321A604FF48053C4F202034FF480521B +S31508003590C4F20202126822F480221A604FF48053A1 +S315080035A0C4F202034FF48052C4F20202526822F4B3 +S315080035B0FE025A604FF48053C4F202034FF41F020E +S315080035C09A604FF48053C4F202034FF48052C4F257 +S315080035D00202126842F480321A604FF48053C4F231 +S315080035E002031B6803F400337B60BB6803F1010325 +S315080035F0BB607B68002B04D1BA6840F2DC539A4260 +S31508003600EBD14FF48053C4F202031B6803F4003372 +S31508003610002B00D1FEE74FF40053C4F202034FF427 +S315080036200052C4F20202126842F010021A604FF405 +S315080036300053C4F202034FF40052C4F202021268A5 +S3150800364022F003021A604FF40053C4F202034FF447 +S315080036500052C4F20202126842F002021A604FF4E3 +S315080036608053C4F202034FF48052C4F20202526835 +S315080036705A604FF48053C4F202034FF48052C4F2E6 +S315080036800202526842F400525A604FF48053C4F260 +S3150800369002034FF48052C4F20202526842F4806276 +S315080036A05A604FF48053C4F202034FF48052C4F2B6 +S315080036B00202526822F47C125A604FF00903FB603A +S315080036C0FB68A3F102034FEA8343FB604FF4805380 +S315080036D0C4F202034FF48052C4F202025268114641 +S315080036E0FA6841EA020242F480325A604FF4805383 +S315080036F0C4F202034FF48052C4F20202126842F086 +S3150800370080721A6000BF4FF48053C4F202031B682C +S3150800371003F00073002BF6D04FF48053C4F2020373 +S315080037204FF48052C4F20202526822F003025A6031 +S315080037304FF48053C4F202034FF48052C4F20202DB +S31508003740526842F002025A6000BF4FF48053C4F236 +S3150800375002035B6803F00C03082BF6D1FFF7E6FDBE +S3150800376000F066F8FFF7DCFD07F11007BD4680BDDF +S3150800377080B483B000AF03463960FB7197F9073010 +S31508003780002B10DA4FF46D43CEF20003FA7902F0FB +S315080037900F02A2F104013A68D2B24FEA0212D2B27B +S315080037A05B181A760DE04FF46143CEF2000397F9E1 +S315080037B007103A68D2B24FEA0212D2B25B1883F8FF +S315080037C0002307F10C07BD4680BC704780B582B060 +S315080037D000AF78607A686FF07F439A4202D94FF05B +S315080037E001031FE04EF21003CEF200037A6822F0BE +S315080037F07F4202F1FF325A604FF0FF304FF00F015F +S31508003800FFF7B6FF4EF21003CEF200034FF00002A8 +S315080038109A604EF21003CEF200034FF007021A60C8 +S315080038204FF00003184607F10807BD4680BD00BFE4 +S3150800383080B500AF4FF4CA50C0F20100FFF7C6FFCB +S315080038404FF0000000F002F880BD00BF80B483B0DE +S3150800385000AF786040F27803C2F200037A681A6013 +S3150800386007F10C07BD4680BC704700BF80B400AFA7 +S3150800387040F27803C2F200031B681846BD4680BCB6 +S31508003880704700BF80B400AF40F27803C2F200036D +S315080038901B6803F1010240F27803C2F200031A60C2 +S315080038A0BD4680BC704700BF80B588B000AF786061 +S315080038B04FF400304FF00101FEF760FE4FF00500AF +S315080038C04FF00101FEF72CFE4FF01803FB774FF07F +S315080038D00403BB834FF00303BB7707F11C034FF4C4 +S315080038E00060C4F201001946FEF734FC4FF00403E9 +S315080038F0FB774FF00803BB8307F11C034FF4006006 +S31508003900C4F201001946FEF725FC7B68FB604FF000 +S3150800391000033B824FF000037B824FF00003BB821B +S315080039204FF000033B834FF00C03FB8207F10C03B7 +S315080039304FF48840C4F200001946FEF74DFE4FF4D6 +S315080039408840C4F200004FF00101FEF725FF07F199 +S315080039502007BD4680BD00BF80B582B000AF786045 +S3150800396000BF4FF48840C4F200004FF08001FEF714 +S3150800397059FF0346002BF4D07B68DBB24FF488402E +S31508003980C4F200001946FEF727FF7B68184607F1C0 +S315080039900807BD4680BD00BF80B582B000AF0346AC +S315080039A0FB71FB79002B0DD14FF48840C4F200005F +S315080039B04FF02001FEF736FF0346002B0ED14FF0DD +S315080039C0FF3312E000BF4FF48840C4F200004FF006 +S315080039D02001FEF727FF0346002BF4D04FF488405A +S315080039E0C4F20000FEF70CFF0346184607F1080765 +S315080039F0BD4680BD80B400AFFEE700BF303132332C +S31508003A0034353637383900003031323334353637C5 +S31508003A1000000000303132333435363738396162C8 +S31508003A20636465660000000030313233343536375A +S31508003A303839414243444546000000000A00000068 +S31508003A40FC39000800000000030000000800000020 +S31508003A50083A0008000000000300000010000000FB +S31508003A60143A000878000000040000001000000066 +S31508003A70283A0008580000000400000050726F67DA +S31508003A8072616D20757074696D653A2025303264EF +S31508003A903A253032643A253032640D000020202061 +S31508003AA020202020202028282828282020202020E0 +S31508003AB020202020202020202020202020881010B0 +S31508003AC0101010101010101010101010100404040C +S31508003AD004040404040404101010101010104141CA +S31508003AE041414141010101010101010101010101B8 +S31508003AF001010101010101011010101010104242CC +S31508003B004242424202020202020202020202020287 +S31508003B100202020202020202101010102000000027 +S31508003B200000000000000000000000000000000087 +S31508003B300000000000000000000000000000000077 +S31508003B400000000000000000000000000000000067 +S31508003B500000000000000000000000000000000057 +S31508003B600000000000000000000000000000000047 +S31508003B700000000000000000000000000000000037 +S31508003B800000000000000000000000000000000027 +S31508003B900000000000000000000000000000000017 +S31508003BA000000000010203040102030406070809D5 +S30D08003BB0020406089C3A00080D +S70508002000D2 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/boot.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/boot.c new file mode 100644 index 00000000..dc4ce0fe --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/boot.c @@ -0,0 +1,322 @@ +/**************************************************************************************** +| Description: demo program bootloader interface source file +| File Name: boot.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: BootActivate +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Bootloader activation function. +** +****************************************************************************************/ +static void BootActivate(void) +{ + void (*pEntryFromProgFnc)(void); + + /* set pointer to the address of function EntryFromProg in the bootloader. note that + * 1 is added to this address to enable a switch from Thumb2 to Thumb mode + */ + pEntryFromProgFnc = (void*)0x08000150 + 1; + /* call EntryFromProg to activate the bootloader. */ + pEntryFromProgFnc(); +} /*** end of BootActivate ***/ + + +#if (BOOT_COM_UART_ENABLE > 0) +/**************************************************************************************** +* U N I V E R S A L A S Y N C H R O N O U S R X T X I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + UartInit(BOOT_COM_UART_BAUDRATE); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + static unsigned char xcpCtoReqPacket[BOOT_COM_UART_RX_MAX_DATA+1]; + static unsigned char xcpCtoRxLength; + static unsigned char xcpCtoRxInProgress = 0; + int ch; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == 0) + { + /* store the message length when received */ + ch = UartRxChar(0); + if (ch != -1) + { + xcpCtoReqPacket[0] = (unsigned char)ch; + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = 1; + + /* reset packet data count */ + xcpCtoRxLength = 0; + } + } + else + { + /* store the next packet byte */ + ch = UartRxChar(0); + if (ch != -1) + { + xcpCtoReqPacket[xcpCtoRxLength+1] = (unsigned char)ch; + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* done with cto packet reception */ + xcpCtoRxInProgress = 0; + + /* check if this was an XCP CONNECT command */ + if ((xcpCtoReqPacket[1] == 0xff) && (xcpCtoReqPacket[2] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_UART_ENABLE > 0 */ + + +#if (BOOT_COM_CAN_ENABLE > 0) +/**************************************************************************************** +* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E +****************************************************************************************/ + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef struct t_can_bus_timing +{ + unsigned char tseg1; /* CAN time segment 1 */ + unsigned char tseg2; /* CAN time segment 2 */ +} tCanBusTiming; /* bus timing structure type */ + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +/* According to the CAN protocol 1 bit-time can be made up of between 8..25 time quanta + * (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC always being 1. + * The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2) * 100%. This array contains + * possible and valid time quanta configurations with a sample point between 68..78%. + */ +static const tCanBusTiming canTiming[] = +{ /* TQ | TSEG1 | TSEG2 | SP */ + /* ------------------------- */ + { 5, 2 }, /* 8 | 5 | 2 | 75% */ + { 6, 2 }, /* 9 | 6 | 2 | 78% */ + { 6, 3 }, /* 10 | 6 | 3 | 70% */ + { 7, 3 }, /* 11 | 7 | 3 | 73% */ + { 8, 3 }, /* 12 | 8 | 3 | 75% */ + { 9, 3 }, /* 13 | 9 | 3 | 77% */ + { 9, 4 }, /* 14 | 9 | 4 | 71% */ + { 10, 4 }, /* 15 | 10 | 4 | 73% */ + { 11, 4 }, /* 16 | 11 | 4 | 75% */ + { 12, 4 }, /* 17 | 12 | 4 | 76% */ + { 12, 5 }, /* 18 | 12 | 5 | 72% */ + { 13, 5 }, /* 19 | 13 | 5 | 74% */ + { 14, 5 }, /* 20 | 14 | 5 | 75% */ + { 15, 5 }, /* 21 | 15 | 5 | 76% */ + { 15, 6 }, /* 22 | 15 | 6 | 73% */ + { 16, 6 }, /* 23 | 16 | 6 | 74% */ + { 16, 7 }, /* 24 | 16 | 7 | 71% */ + { 16, 8 } /* 25 | 16 | 8 | 68% */ +}; + + +/**************************************************************************************** +** NAME: CanGetSpeedConfig +** PARAMETER: baud The desired baudrate in kbps. Valid values are 10..1000. +** prescaler Pointer to where the value for the prescaler will be stored. +** tseg1 Pointer to where the value for TSEG2 will be stored. +** tseg2 Pointer to where the value for TSEG2 will be stored. +** RETURN VALUE: 1 if the CAN bustiming register values were found, 0 otherwise. +** DESCRIPTION: Search algorithm to match the desired baudrate to a possible bus +** timing configuration. +** +****************************************************************************************/ +static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned short *prescaler, + unsigned char *tseg1, unsigned char *tseg2) +{ + unsigned char cnt; + + /* loop through all possible time quanta configurations to find a match */ + for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++) + { + if (((BOOT_CPU_SYSTEM_SPEED_KHZ/2) % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0) + { + /* compute the prescaler that goes with this TQ configuration */ + *prescaler = (BOOT_CPU_SYSTEM_SPEED_KHZ/2)/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)); + + /* make sure the prescaler is valid */ + if ( (*prescaler > 0) && (*prescaler <= 1024) ) + { + /* store the bustiming configuration */ + *tseg1 = canTiming[cnt].tseg1; + *tseg2 = canTiming[cnt].tseg2; + /* found a good bus timing configuration */ + return 1; + } + } + } + /* could not find a good bus timing configuration */ + return 0; +} /*** end of CanGetSpeedConfig ***/ + + +/**************************************************************************************** +** NAME: BootComInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the CAN communication interface +** +****************************************************************************************/ +void BootComInit(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + CAN_InitTypeDef CAN_InitStructure; + CAN_FilterInitTypeDef CAN_FilterInitStructure; + unsigned short prescaler; + unsigned char tseg1, tseg2; + + /* GPIO clock enable */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + /* Configure CAN pin: RX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Configure CAN pin: TX */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOB, &GPIO_InitStructure); + /* Remap CAN1 pins to PortB */ + GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE); + /* CAN1 Periph clock enable */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); + /* CAN register init */ + CAN_DeInit(CAN1); + CAN_StructInit(&CAN_InitStructure); + /* obtain the bittiming configuration for this baudrate */ + CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &prescaler, &tseg1, &tseg2); + /* CAN controller init */ + CAN_InitStructure.CAN_TTCM = DISABLE; + CAN_InitStructure.CAN_ABOM = DISABLE; + CAN_InitStructure.CAN_AWUM = DISABLE; + CAN_InitStructure.CAN_NART = DISABLE; + CAN_InitStructure.CAN_RFLM = DISABLE; + CAN_InitStructure.CAN_TXFP = DISABLE; + CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; + /* CAN Baudrate init */ + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + CAN_InitStructure.CAN_BS1 = tseg1 - 1; + CAN_InitStructure.CAN_BS2 = tseg2 - 1; + CAN_InitStructure.CAN_Prescaler = prescaler; + CAN_Init(CAN1, &CAN_InitStructure); + /* CAN filter init - receive all messages */ + CAN_FilterInitStructure.CAN_FilterNumber = 0; + CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; + CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; + CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; + CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; + CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; + CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; + CAN_FilterInit(&CAN_FilterInitStructure); +} /*** end of BootComInit ***/ + + +/**************************************************************************************** +** NAME: BootComCheckActivationRequest +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Receives the CONNECT request from the host, which indicates that the +** bootloader should be activated and, if so, activates it. +** +****************************************************************************************/ +void BootComCheckActivationRequest(void) +{ + CanRxMsg RxMessage; + + /* check if a new message was received */ + if (CAN_MessagePending(CAN1, CAN_FIFO0) > 0) + { + /* receive the message */ + CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); + if (RxMessage.StdId == BOOT_COM_CAN_RX_MSG_ID) + { + /* check if this was an XCP CONNECT command */ + if ((RxMessage.Data[0] == 0xff) && (RxMessage.Data[1] == 0x00)) + { + /* connection request received so start the bootloader */ + BootActivate(); + } + } + } +} /*** end of BootComCheckActivationRequest ***/ +#endif /* BOOT_COM_CAN_ENABLE > 0 */ + + +/*********************************** end of boot.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/boot.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/boot.h new file mode 100644 index 00000000..92789052 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/boot.h @@ -0,0 +1,42 @@ +/**************************************************************************************** +| Description: demo program bootloader interface header file +| File Name: boot.h +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ +#ifndef BOOT_H +#define BOOT_H + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +void BootComInit(void); +void BootComCheckActivationRequest(void); + + +#endif /* BOOT_H */ +/*********************************** end of boot.h *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/cstart.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/cstart.c new file mode 100644 index 00000000..b22b30be --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/cstart.c @@ -0,0 +1,91 @@ +/**************************************************************************************** +| Description: Demo program C startup source file +| File Name: cstart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* External function protoypes +****************************************************************************************/ +extern int main(void); + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +/* these externals are declared by the linker */ +extern unsigned long _etext; +extern unsigned long _data; +extern unsigned long _edata; + + +/**************************************************************************************** +** NAME: reset_handler +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Reset interrupt service routine. Configures the stack, initializes +** RAM and jumps to function main. +** +****************************************************************************************/ +void reset_handler(void) +{ + unsigned long *pSrc, *pDest; + + /* initialize stack pointer */ + __asm(" ldr r1, =_estack\n" + " mov sp, r1"); + /* copy the data segment initializers from flash to SRAM */ + pSrc = &_etext; + for(pDest = &_data; pDest < &_edata; ) + { + *pDest++ = *pSrc++; + } + /* zero fill the bss segment. this is done with inline assembly since this will + * clear the value of pDest if it is not kept in a register. + */ + __asm(" ldr r0, =_bss\n" + " ldr r1, =_ebss\n" + " mov r2, #0\n" + " .thumb_func\n" + "zero_loop:\n" + " cmp r0, r1\n" + " it lt\n" + " strlt r2, [r0], #4\n" + " blt zero_loop"); + /* start the software application by calling its entry point */ + main(); +} /*** end of reset_handler ***/ + + +/************************************ end of cstart.c **********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/header.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/header.h new file mode 100644 index 00000000..cc2e9522 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/header.h @@ -0,0 +1,48 @@ +/**************************************************************************************** +| Description: generic header file +| File Name: header.h +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ +#ifndef HEADER_H +#define HEADER_H + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "../Boot/config.h" /* bootloader configuration */ +#include "stm32f10x.h" /* STM32 register definitions */ +#include "stm32f10x_conf.h" /* STM32 peripheral drivers */ +#include "boot.h" /* bootloader interface driver */ +#include "irq.h" /* IRQ driver */ +#include "led.h" /* LED driver */ +#include "uart.h" /* UART driver */ +#include "timer.h" /* Timer driver */ + + +#endif /* HEADER_H */ +/*********************************** end of header.h ***********************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/ide/readme.txt b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/ide/readme.txt new file mode 100644 index 00000000..9441d3f0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/ide/readme.txt @@ -0,0 +1,16 @@ +Integrated Development Environment +---------------------------------- +Eclipse IDE for C/C++ Developers (version 3.7) was used as the editor during the development of this software. It can be downloaded +from http://www.eclipse.org. + +Plugins +------- +The following plugins are required. Refer to the plugin's website for installation instructions: +- GNU ARM Eclipse Plug-in (http://sourceforge.net/projects/gnuarmeclipse/) + +The following plugins are optional in case you can to use the terminal in Eclipse. The URL's are direct links to the update site for +Eclipse's "Help->Install New Software..." menu item. +- Target Management Terminal (http://download.eclipse.org/releases/indigo) +- RXTX Ebd-Usr Runtime (http://rxtx.qbang.org/eclipse/) + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/irq.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/irq.c new file mode 100644 index 00000000..a5cd3cd8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/irq.c @@ -0,0 +1,97 @@ +/**************************************************************************************** +| Description: IRQ driver source file +| File Name: irq.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* Local data definitions +****************************************************************************************/ +static unsigned char interruptNesting = 0; /* used for global interrupt en/disable */ + + +/**************************************************************************************** +** NAME: IrqInterruptEnable +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Enables the generation IRQ interrupts. Typically called once during +** software startup after completion of the initialization. +** +****************************************************************************************/ +void IrqInterruptEnable(void) +{ + __enable_irq(); +} /*** end of IrqInterruptEnable ***/ + + +/**************************************************************************************** +** NAME: HwInterruptDisable +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Disables the generation IRQ interrupts and stores information on +** whether or not the interrupts were already disabled before explicitly +** disabling them with this function. Normally used as a pair together +** with IrqInterruptRestore during a critical section. +** +****************************************************************************************/ +void IrqInterruptDisable(void) +{ + if (interruptNesting == 0) + { + __disable_irq(); + } + interruptNesting++; +} /*** end of IrqInterruptDisable ***/ + + +/**************************************************************************************** +** NAME: IrqInterruptRestore +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Restore the generation IRQ interrupts to the setting it had prior to +** calling IrqInterruptDisable. Normally used as a pair together with +** IrqInterruptDisable during a critical section. +** +****************************************************************************************/ +void IrqInterruptRestore(void) +{ + interruptNesting--; + if (interruptNesting == 0) + { + __enable_irq(); + } +} /*** end of IrqInterruptRestore ***/ + + +/*********************************** end of irq.c **************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/irq.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/irq.h new file mode 100644 index 00000000..9f12faf4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/irq.h @@ -0,0 +1,43 @@ +/**************************************************************************************** +| Description: IRQ driver header file +| File Name: irq.h +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ +#ifndef IRQ_H +#define IRQ_H + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +void IrqInterruptEnable(void); +void IrqInterruptDisable(void); +void IrqInterruptRestore(void); + + +#endif /* IRQ_H */ +/*********************************** end of irq.h **************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/led.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/led.c new file mode 100644 index 00000000..74c43174 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/led.c @@ -0,0 +1,103 @@ +/**************************************************************************************** +| Description: LED driver source file +| File Name: led.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ +#define LED_TOGGLE_MS (500) /* toggle interval time in milliseconds */ + + +/**************************************************************************************** +** NAME: LedInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the LED. +** +****************************************************************************************/ +void LedInit(void) +{ + GPIO_InitTypeDef gpio_init; + + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); + gpio_init.GPIO_Pin = GPIO_Pin_12; + gpio_init.GPIO_Speed = GPIO_Speed_50MHz; + gpio_init.GPIO_Mode = GPIO_Mode_Out_PP; + GPIO_Init(GPIOC, &gpio_init); +} /*** end of LedInit ***/ + + +/**************************************************************************************** +** NAME: LedToggle +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Toggles the LED at a fixed time interval. +** +****************************************************************************************/ +void LedToggle(void) +{ + static unsigned char led_toggle_state = 0; + static unsigned long timer_counter_last = 0; + unsigned long timer_counter_now; + + /* check if toggle interval time passed */ + timer_counter_now = TimerGet(); + if ( (timer_counter_now - timer_counter_last) < LED_TOGGLE_MS) + { + /* not yet time to toggle */ + return; + } + + /* determine toggle action */ + if (led_toggle_state == 0) + { + led_toggle_state = 1; + /* turn the LED on */ + GPIO_ResetBits(GPIOC, GPIO_Pin_12); + } + else + { + led_toggle_state = 0; + /* turn the LED off */ + GPIO_SetBits(GPIOC, GPIO_Pin_12); + } + + /* store toggle time to determine next toggle interval */ + timer_counter_last = timer_counter_now; +} /*** end of LedToggle ***/ + + +/*********************************** end of led.c **************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/led.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/led.h new file mode 100644 index 00000000..f69b6a44 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/led.h @@ -0,0 +1,42 @@ +/**************************************************************************************** +| Description: LED driver header file +| File Name: led.h +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ +#ifndef LED_H +#define LED_H + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +void LedInit(void); +void LedToggle(void); + + +#endif /* LED_H */ +/*********************************** end of led.h **************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdio_mini.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdio_mini.c new file mode 100644 index 00000000..97ba4565 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdio_mini.c @@ -0,0 +1,668 @@ +/**************************************************************************************** +| Description: Standard I/O integer optimized library source file +| The following functions are implemented: +| +| - int printf (const char *format, ...) +| - int scanf(const char *fmt, ...) +| File Name: stdio_mini.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include +#include +#include +#include +#include "../uart.h" + + +/**************************************************************************************** +* Structure definitions +****************************************************************************************/ +struct printf_conversion /* A printf() conversion. */ +{ + /* Flags. */ + enum + { + MINUS = 1 << 0, /* '-' */ + PLUS = 1 << 1, /* '+' */ + SPACE = 1 << 2, /* ' ' */ + POUND = 1 << 3, /* '#' */ + ZERO = 1 << 4, /* '0' */ + GROUP = 1 << 5 /* '\'' */ + } + flags; + + /* Minimum field width. */ + int width; + + /* Numeric precision. -1 indicates no precision was specified. */ + int precision; + + /* Type of argument to format. */ + enum + { + CHAR = 1, /* hh */ + SHORT = 2, /* h */ + INT = 3, /* (none) */ + LONG = 5, /* l */ + } + type; +}; + + +struct integer_base +{ + int base; /* Base. */ + const char *digits; /* Collection of digits. */ + int x; /* `x' character to use, for base 16 only. */ + int group; /* Number of digits to group with ' flag. */ +}; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void output_dup(char ch, size_t cnt); +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c); +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args); +static int libvprintf(const char *format, va_list args); + + +/**************************************************************************************** +* Local constant declarations +****************************************************************************************/ +static const struct integer_base base_d = {10, "0123456789", 0, 3}; +static const struct integer_base base_o = {8, "01234567", 0, 3}; +static const struct integer_base base_x = {16, "0123456789abcdef", 'x', 4}; +static const struct integer_base base_X = {16, "0123456789ABCDEF", 'X', 4}; + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static volatile unsigned int txcharcnt; + + +/**************************************************************************************** +** NAME: puts +** PARAMETER: character to write +** RETURN VALUE: the character written. +** DESCRIPTION: writes the string s and a newline to the terminal and returns a non- +** negative value. +** +****************************************************************************************/ +int puts(const char *s) +{ + while(*s != '\0') + { + UartTxChar(*s); + s++; + } + UartTxChar('\n'); + UartTxChar('\r'); + + return 0; +} /*** end of puts ***/ + + +/**************************************************************************************** +** NAME: printf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of printed characters. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,i,o,u,x,X format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libvprintf (format, args); + va_end (args); + + return retval; +} + + +/**************************************************************************************** +** NAME: scanf +** PARAMETER: format string and specifiers +** RETURN VALUE: number of conversions. +** DESCRIPTION: This is a minimal implementation of the STDIO ANSI-C library function +** with support for the d,u,o,x format string specifiers. If this +** library is linked before the standard ANSI-C library iwth STDIO, the +** standard library functions are automatically overridden. +** +****************************************************************************************/ +int scanf(const char *fmt, ...) +{ + char *s0, c; + char buf[64]; + char *s = &buf[0]; + va_list ap; + long L, *Lp; + int i, *ip, rc = 0; + + do + { + c = UartRxChar(1); /* read byte */ + UartTxChar(c); + *s++ = c; /* store in buf */ + } + while((c != '\r') && (c != '\n')); /* read bytes until enter is pressed */ + *s = '\0'; /* add string termination */ + s = &buf[0]; /* set pointer to start of buf for further processing */ + + va_start(ap, fmt); + + for( ; ; ) + { + for(;;) + { + switch(i = *(unsigned char *)fmt++) + { + case 0: + goto done; + case '%': + break; + default: + if (i <= ' ') + { + while(*s <= ' ') + if (!*s++) + goto done; + } + else if (*s++ != i) + goto done; + continue; + } + break; + } + + switch(*fmt++) + { + case 'l': + if (*fmt == 'd') + { + fmt++; + Lp = va_arg(ap, long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'u') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'x') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else if (*fmt == 'o') + { + fmt++; + Lp = (long*)va_arg(ap, unsigned long*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *Lp = L; + continue; + } + } + else + goto error; + goto done; + case 'd': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'u': + ip = (int*)va_arg(ap, unsigned int*); + L = strtoul(s0 = s, &s, 10); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'x': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 16); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + case 'o': + ip = va_arg(ap, int*); + L = strtol(s0 = s, &s, 8); + if (s > s0) + { + rc++; + *ip = (int)L; + continue; + } + goto done; + default: + goto error; /* wrong format */ + } + } + + done: + va_end(ap); + return rc; + + error: + va_end(ap); + return 0; + +} /*** end of scanf ***/ + + +/**************************************************************************************** +** NAME: output_dup +** PARAMETER: character to output and how many times. +** RETURN VALUE: none +** DESCRIPTION: writes ch to output cnt times. +** +****************************************************************************************/ +static void output_dup(char ch, size_t cnt) +{ + while (cnt-- > 0) + { + UartTxChar(ch); + txcharcnt++; + } +} /*** end of output_dup ***/ + + +/**************************************************************************************** +** NAME: format_integer +** PARAMETER: all necessary conversion information. +** RETURN VALUE: none +** DESCRIPTION: Formats an integer to a string and transmits each character through +** the terminal communication interface. +** +****************************************************************************************/ +static void format_integer(unsigned long value, char is_signed, char negative, + const struct integer_base *b, + const struct printf_conversion *c) +{ + char buf[64], *cp; /* Buffer and current position. */ + int x; /* `x' character to use or 0 if none. */ + int sign; /* Sign character or 0 if none. */ + int precision; /* Rendered precision. */ + int pad_cnt; /* # of pad characters to fill field width. */ + int digit_cnt; /* # of digits output so far. */ + + /* Determine sign character, if any. + An unsigned conversion will never have a sign character, + even if one of the flags requests one. */ + sign = 0; + if (is_signed) + { + if (c->flags & PLUS) + sign = negative ? '-' : '+'; + else if (c->flags & SPACE) + sign = negative ? '-' : ' '; + else if (negative) + sign = '-'; + } + + /* Determine whether to include `0x' or `0X'. + It will only be included with a hexadecimal conversion of a + nonzero value with the # flag. */ + x = (c->flags & POUND) && value ? b->x : 0; + + /* Accumulate digits into buffer. + This algorithm produces digits in reverse order, so later we + will output the buffer's content in reverse. */ + cp = buf; + digit_cnt = 0; + while (value > 0) + { + if ((c->flags & GROUP) && digit_cnt > 0 && digit_cnt % b->group == 0) + *cp++ = ','; + *cp++ = b->digits[value % b->base]; + value /= b->base; + digit_cnt++; + } + + /* Append enough zeros to match precision. + If requested precision is 0, then a value of zero is + rendered as a null string, otherwise as "0". + If the # flag is used with base 8, the result must always + begin with a zero. */ + precision = c->precision < 0 ? 1 : c->precision; + while (cp - buf < precision && cp < buf + sizeof buf - 1) + *cp++ = '0'; + if ((c->flags & POUND) && b->base == 8 && (cp == buf || cp[-1] != '0')) + *cp++ = '0'; + + /* Calculate number of pad characters to fill field width. */ + pad_cnt = c->width - (cp - buf) - (x ? 2 : 0) - (sign != 0); + if (pad_cnt < 0) + pad_cnt = 0; + + /* Do output. */ + if ((c->flags & (MINUS | ZERO)) == 0) + output_dup (' ', pad_cnt); + if (sign) + { + UartTxChar(sign); + txcharcnt++; + } + if (x) + { + UartTxChar ('0'); + txcharcnt++; + UartTxChar(x); + txcharcnt++; + } + if (c->flags & ZERO) + output_dup ('0', pad_cnt); + while (cp > buf) + { + UartTxChar (*--cp); + txcharcnt++; + } + if (c->flags & MINUS) + output_dup (' ', pad_cnt); +} /*** end of format_integer ***/ + + +/**************************************************************************************** +** NAME: parse_conversion +** PARAMETER: all necessary parsing information and the format string. +** RETURN VALUE: pointer to the unchanged format string. +** DESCRIPTION: Parses the actual printf format string for all arguments. +** +****************************************************************************************/ +static const char *parse_conversion(const char *format, struct printf_conversion *c, + va_list *args) +{ + /* Parse flag characters. */ + c->flags = 0; + for (;;) + { + switch (*format++) + { + case '-': + c->flags |= MINUS; + break; + case '+': + c->flags |= PLUS; + break; + case ' ': + c->flags |= SPACE; + break; + case '#': + c->flags |= POUND; + break; + case '0': + c->flags |= ZERO; + break; + case '\'': + c->flags |= GROUP; + break; + default: + format--; + goto not_a_flag; + } + } + not_a_flag: + if (c->flags & MINUS) + c->flags &= ~ZERO; + if (c->flags & PLUS) + c->flags &= ~SPACE; + + /* Parse field width. */ + c->width = 0; + if (*format == '*') + { + format++; + c->width = va_arg (*args, int); + } + else + { + for (; isdigit ((int)*format); format++) + c->width = c->width * 10 + *format - '0'; + } + if (c->width < 0) + { + c->width = -c->width; + c->flags |= MINUS; + } + + /* Parse precision. */ + c->precision = -1; + if (*format == '.') + { + format++; + if (*format == '*') + { + format++; + c->precision = va_arg (*args, int); + } + else + { + c->precision = 0; + for (; isdigit ((int)*format); format++) + c->precision = c->precision * 10 + *format - '0'; + } + if (c->precision < 0) + c->precision = -1; + } + if (c->precision >= 0) + c->flags &= ~ZERO; + + /* Parse type. */ + c->type = INT; + switch (*format++) + { + case 'h': + if (*format == 'h') + { + format++; + c->type = CHAR; + } + else + c->type = SHORT; + break; + + case 'l': + c->type = LONG; + break; + + default: + format--; + break; + } + + return format; +} /*** end of parse_conversion ***/ + + +/**************************************************************************************** +** NAME: libvprintf +** PARAMETER: format string and argument list. +** RETURN VALUE: number of printed characters. +** DESCRIPTION: low level virtual library printf function. +** +****************************************************************************************/ +static int libvprintf(const char *format, va_list args) +{ + for (; *format != '\0'; format++) + { + struct printf_conversion c; + + /* Literally copy non-conversions to output. */ + if (*format != '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + format++; + + /* %% => %. */ + if (*format == '%') + { + UartTxChar (*format); + txcharcnt++; + continue; + } + + /* Parse conversion specifiers. */ + format = parse_conversion (format, &c, &args); + + /* Do conversion. */ + switch (*format) + { + case 'd': + case 'i': + { + /* Signed integer conversions. */ + signed long value; + + switch (c.type) + { + case CHAR: + value = (signed char) va_arg (args, int); + break; + case SHORT: + value = (short) va_arg (args, int); + break; + case INT: + value = va_arg (args, int); + break; + case LONG: + value = va_arg (args, long); + break; + default: + value = 0; + break; + } + + format_integer (value < 0 ? -value : value, + 1, value < 0, &base_d, &c); + } + break; + + case 'o': + case 'u': + case 'x': + case 'X': + { + /* Unsigned integer conversions. */ + unsigned long value; + const struct integer_base *b; + + switch (c.type) + { + case CHAR: + value = (unsigned char) va_arg (args, unsigned); + break; + case SHORT: + value = (unsigned short) va_arg (args, unsigned); + break; + case INT: + value = va_arg (args, unsigned); + break; + case LONG: + value = va_arg (args, unsigned long); + break; + default: + value = 0; + break; + } + + switch (*format) + { + case 'o': b = &base_o; break; + case 'u': b = &base_d; break; + case 'x': b = &base_x; break; + case 'X': b = &base_X; break; + default: b = &base_d; break; + } + + format_integer (value, 0, 0, b, &c); + } + break; + + default: + break; + } + } + return txcharcnt; +} /*** end of libvprintf ***/ + + +/************************************ end of stdio.c ***********************************/ + + diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c new file mode 100644 index 00000000..56fddc52 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.c @@ -0,0 +1,784 @@ +/**************************************************************************//** + * @file core_cm3.c + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File + * @version V1.30 + * @date 30. October 2009 + * + * @note + * Copyright (C) 2009 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include + +/* define compiler specific symbols */ +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + + +/* ################### Compiler specific Intrinsics ########################### */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +__ASM uint32_t __get_PSP(void) +{ + mrs r0, psp + bx lr +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +__ASM void __set_PSP(uint32_t topOfProcStack) +{ + msr psp, r0 + bx lr +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +__ASM uint32_t __get_MSP(void) +{ + mrs r0, msp + bx lr +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +__ASM void __set_MSP(uint32_t mainStackPointer) +{ + msr msp, r0 + bx lr +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +__ASM uint32_t __REV16(uint16_t value) +{ + rev16 r0, r0 + bx lr +} + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +__ASM int32_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} + + +#if (__ARMCC_VERSION < 400000) + +/** + * @brief Remove the exclusive lock created by ldrex + * + * Removes the exclusive lock which is created by ldrex. + */ +__ASM void __CLREX(void) +{ + clrex +} + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +__ASM uint32_t __get_BASEPRI(void) +{ + mrs r0, basepri + bx lr +} + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +__ASM void __set_BASEPRI(uint32_t basePri) +{ + msr basepri, r0 + bx lr +} + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +__ASM uint32_t __get_PRIMASK(void) +{ + mrs r0, primask + bx lr +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +__ASM void __set_PRIMASK(uint32_t priMask) +{ + msr primask, r0 + bx lr +} + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +__ASM uint32_t __get_FAULTMASK(void) +{ + mrs r0, faultmask + bx lr +} + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +__ASM void __set_FAULTMASK(uint32_t faultMask) +{ + msr faultmask, r0 + bx lr +} + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +__ASM uint32_t __get_CONTROL(void) +{ + mrs r0, control + bx lr +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +__ASM void __set_CONTROL(uint32_t control) +{ + msr control, r0 + bx lr +} + +#endif /* __ARMCC_VERSION */ + + + +#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ +#pragma diag_suppress=Pe940 + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +uint32_t __get_PSP(void) +{ + __ASM("mrs r0, psp"); + __ASM("bx lr"); +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +void __set_PSP(uint32_t topOfProcStack) +{ + __ASM("msr psp, r0"); + __ASM("bx lr"); +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +uint32_t __get_MSP(void) +{ + __ASM("mrs r0, msp"); + __ASM("bx lr"); +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +void __set_MSP(uint32_t topOfMainStack) +{ + __ASM("msr msp, r0"); + __ASM("bx lr"); +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +uint32_t __REV16(uint16_t value) +{ + __ASM("rev16 r0, r0"); + __ASM("bx lr"); +} + +/** + * @brief Reverse bit order of value + * + * @param value value to reverse + * @return reversed value + * + * Reverse bit order of value + */ +uint32_t __RBIT(uint32_t value) +{ + __ASM("rbit r0, r0"); + __ASM("bx lr"); +} + +/** + * @brief LDR Exclusive (8 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 8 bit values) + */ +uint8_t __LDREXB(uint8_t *addr) +{ + __ASM("ldrexb r0, [r0]"); + __ASM("bx lr"); +} + +/** + * @brief LDR Exclusive (16 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 16 bit values + */ +uint16_t __LDREXH(uint16_t *addr) +{ + __ASM("ldrexh r0, [r0]"); + __ASM("bx lr"); +} + +/** + * @brief LDR Exclusive (32 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 32 bit values + */ +uint32_t __LDREXW(uint32_t *addr) +{ + __ASM("ldrex r0, [r0]"); + __ASM("bx lr"); +} + +/** + * @brief STR Exclusive (8 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 8 bit values + */ +uint32_t __STREXB(uint8_t value, uint8_t *addr) +{ + __ASM("strexb r0, r0, [r1]"); + __ASM("bx lr"); +} + +/** + * @brief STR Exclusive (16 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 16 bit values + */ +uint32_t __STREXH(uint16_t value, uint16_t *addr) +{ + __ASM("strexh r0, r0, [r1]"); + __ASM("bx lr"); +} + +/** + * @brief STR Exclusive (32 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 32 bit values + */ +uint32_t __STREXW(uint32_t value, uint32_t *addr) +{ + __ASM("strex r0, r0, [r1]"); + __ASM("bx lr"); +} + +#pragma diag_default=Pe940 + + +#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +uint32_t __get_PSP(void) __attribute__( ( naked ) ); +uint32_t __get_PSP(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, psp\n\t" + "MOV r0, %0 \n\t" + "BX lr \n\t" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); +void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0\n\t" + "BX lr \n\t" : : "r" (topOfProcStack) ); +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +uint32_t __get_MSP(void) __attribute__( ( naked ) ); +uint32_t __get_MSP(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, msp\n\t" + "MOV r0, %0 \n\t" + "BX lr \n\t" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); +void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0\n\t" + "BX lr \n\t" : : "r" (topOfMainStack) ); +} + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +uint32_t __get_BASEPRI(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, basepri_max" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +void __set_BASEPRI(uint32_t value) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (value) ); +} + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +uint32_t __get_PRIMASK(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); +} + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +uint32_t __get_FAULTMASK(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) ); +} + +/** + * @brief Return the Control Register value +* +* @return Control value + * + * Return the content of the control register + */ +uint32_t __get_CONTROL(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) ); +} + + +/** + * @brief Reverse byte order in integer value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in integer value + */ +uint32_t __REV(uint32_t value) +{ + uint32_t result=0; + + __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +uint32_t __REV16(uint16_t value) +{ + uint32_t result=0; + + __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +int32_t __REVSH(int16_t value) +{ + uint32_t result=0; + + __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief Reverse bit order of value + * + * @param value value to reverse + * @return reversed value + * + * Reverse bit order of value + */ +uint32_t __RBIT(uint32_t value) +{ + uint32_t result=0; + + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief LDR Exclusive (8 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 8 bit value + */ +uint8_t __LDREXB(uint8_t *addr) +{ + uint8_t result=0; + + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + +/** + * @brief LDR Exclusive (16 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 16 bit values + */ +uint16_t __LDREXH(uint16_t *addr) +{ + uint16_t result=0; + + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + +/** + * @brief LDR Exclusive (32 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 32 bit values + */ +uint32_t __LDREXW(uint32_t *addr) +{ + uint32_t result=0; + + __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); + return(result); +} + +/** + * @brief STR Exclusive (8 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 8 bit values + */ +uint32_t __STREXB(uint8_t value, uint8_t *addr) +{ + uint32_t result=0; + + __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + +/** + * @brief STR Exclusive (16 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 16 bit values + */ +uint32_t __STREXH(uint16_t value, uint16_t *addr) +{ + uint32_t result=0; + + __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + +/** + * @brief STR Exclusive (32 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 32 bit values + */ +uint32_t __STREXW(uint32_t value, uint32_t *addr) +{ + uint32_t result=0; + + __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) ); + return(result); +} + + +#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h new file mode 100644 index 00000000..2b6b51a7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/CoreSupport/core_cm3.h @@ -0,0 +1,1818 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V1.30 + * @date 30. October 2009 + * + * @note + * Copyright (C) 2009 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#ifndef __CM3_CORE_H__ +#define __CM3_CORE_H__ + +/** @addtogroup CMSIS_CM3_core_LintCinfiguration CMSIS CM3 Core Lint Configuration + * + * List of Lint messages which will be suppressed and not shown: + * - Error 10: \n + * register uint32_t __regBasePri __asm("basepri"); \n + * Error 10: Expecting ';' + * . + * - Error 530: \n + * return(__regBasePri); \n + * Warning 530: Symbol '__regBasePri' (line 264) not initialized + * . + * - Error 550: \n + * __regBasePri = (basePri & 0x1ff); \n + * Warning 550: Symbol '__regBasePri' (line 271) not accessed + * . + * - Error 754: \n + * uint32_t RESERVED0[24]; \n + * Info 754: local structure member '' (line 109, file ./cm3_core.h) not referenced + * . + * - Error 750: \n + * #define __CM3_CORE_H__ \n + * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced + * . + * - Error 528: \n + * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n + * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced + * . + * - Error 751: \n + * } InterruptType_Type; \n + * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced + * . + * Note: To re-enable a Message, insert a space before 'lint' * + * + */ + +/*lint -save */ +/*lint -e10 */ +/*lint -e530 */ +/*lint -e550 */ +/*lint -e754 */ +/*lint -e750 */ +/*lint -e528 */ +/*lint -e751 */ + + +/** @addtogroup CMSIS_CM3_core_definitions CM3 Core Definitions + This file defines all structures and symbols for CMSIS core: + - CMSIS version number + - Cortex-M core registers and bitfields + - Cortex-M core peripheral base address + @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +#define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x03) /*!< Cortex core */ + +#include /* Include standard types */ + +#if defined (__ICCARM__) + #include /* IAR Intrinsics */ +#endif + + +#ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */ +#endif + + + + +/** + * IO definitions + * + * define access restrictions to peripheral registers + */ + +#ifdef __cplusplus + #define __I volatile /*!< defines 'read only' permissions */ +#else + #define __I volatile const /*!< defines 'read only' permissions */ +#endif +#define __O volatile /*!< defines 'write only' permissions */ +#define __IO volatile /*!< defines 'read / write' permissions */ + + + +/******************************************************************************* + * Register Abstraction + ******************************************************************************/ +/** @addtogroup CMSIS_CM3_core_register CMSIS CM3 Core Register + @{ +*/ + + +/** @addtogroup CMSIS_CM3_NVIC CMSIS CM3 NVIC + memory mapped structure for Nested Vectored Interrupt Controller (NVIC) + @{ + */ +typedef struct +{ + __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ + uint32_t RESERVED0[24]; + __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ + uint32_t RSERVED1[24]; + __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ + uint32_t RESERVED2[24]; + __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ + uint32_t RESERVED3[24]; + __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ + uint32_t RESERVED4[56]; + __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644]; + __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ +} NVIC_Type; +/*@}*/ /* end of group CMSIS_CM3_NVIC */ + + +/** @addtogroup CMSIS_CM3_SCB CMSIS CM3 SCB + memory mapped structure for System Control Block (SCB) + @{ + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ + __IO uint32_t VTOR; /*!< Offset: 0x08 Vector Table Offset Register */ + __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ + __IO uint8_t SHP[12]; /*!< Offset: 0x18 System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ + __IO uint32_t CFSR; /*!< Offset: 0x28 Configurable Fault Status Register */ + __IO uint32_t HFSR; /*!< Offset: 0x2C Hard Fault Status Register */ + __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ + __IO uint32_t MMFAR; /*!< Offset: 0x34 Mem Manage Address Register */ + __IO uint32_t BFAR; /*!< Offset: 0x38 Bus Fault Address Register */ + __IO uint32_t AFSR; /*!< Offset: 0x3C Auxiliary Fault Status Register */ + __I uint32_t PFR[2]; /*!< Offset: 0x40 Processor Feature Register */ + __I uint32_t DFR; /*!< Offset: 0x48 Debug Feature Register */ + __I uint32_t ADR; /*!< Offset: 0x4C Auxiliary Feature Register */ + __I uint32_t MMFR[4]; /*!< Offset: 0x50 Memory Model Feature Register */ + __I uint32_t ISAR[5]; /*!< Offset: 0x60 ISA Feature Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11 /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1ul << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29 /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (0x1FFul << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7 /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFul << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7ul << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0 /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1ul << SCB_AIRCR_VECTRESET_Pos) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8 /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1ul << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4 /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1ul << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1 /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1ul << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0 /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1ul << SCB_CCR_NONBASETHRDENA_Pos) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18 /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1ul << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17 /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1ul << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16 /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1ul << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14 /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1ul << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13 /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1ul << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12 /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1ul << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11 /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1ul << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10 /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1ul << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8 /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1ul << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7 /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1ul << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3 /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1ul << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1 /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1ul << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0 /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1ul << SCB_SHCSR_MEMFAULTACT_Pos) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Registers Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16 /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFul << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8 /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFul << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0 /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFul << SCB_CFSR_MEMFAULTSR_Pos) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* SCB Hard Fault Status Registers Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31 /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1ul << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30 /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1ul << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1 /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1ul << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ +/*@}*/ /* end of group CMSIS_CM3_SCB */ + + +/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick + memory mapped structure for SysTick + @{ + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ +/*@}*/ /* end of group CMSIS_CM3_SysTick */ + + +/** @addtogroup CMSIS_CM3_ITM CMSIS CM3 ITM + memory mapped structure for Instrumentation Trace Macrocell (ITM) + @{ + */ +typedef struct +{ + __O union + { + __O uint8_t u8; /*!< Offset: ITM Stimulus Port 8-bit */ + __O uint16_t u16; /*!< Offset: ITM Stimulus Port 16-bit */ + __O uint32_t u32; /*!< Offset: ITM Stimulus Port 32-bit */ + } PORT [32]; /*!< Offset: 0x00 ITM Stimulus Port Registers */ + uint32_t RESERVED0[864]; + __IO uint32_t TER; /*!< Offset: ITM Trace Enable Register */ + uint32_t RESERVED1[15]; + __IO uint32_t TPR; /*!< Offset: ITM Trace Privilege Register */ + uint32_t RESERVED2[15]; + __IO uint32_t TCR; /*!< Offset: ITM Trace Control Register */ + uint32_t RESERVED3[29]; + __IO uint32_t IWR; /*!< Offset: ITM Integration Write Register */ + __IO uint32_t IRR; /*!< Offset: ITM Integration Read Register */ + __IO uint32_t IMCR; /*!< Offset: ITM Integration Mode Control Register */ + uint32_t RESERVED4[43]; + __IO uint32_t LAR; /*!< Offset: ITM Lock Access Register */ + __IO uint32_t LSR; /*!< Offset: ITM Lock Status Register */ + uint32_t RESERVED5[6]; + __I uint32_t PID4; /*!< Offset: ITM Peripheral Identification Register #4 */ + __I uint32_t PID5; /*!< Offset: ITM Peripheral Identification Register #5 */ + __I uint32_t PID6; /*!< Offset: ITM Peripheral Identification Register #6 */ + __I uint32_t PID7; /*!< Offset: ITM Peripheral Identification Register #7 */ + __I uint32_t PID0; /*!< Offset: ITM Peripheral Identification Register #0 */ + __I uint32_t PID1; /*!< Offset: ITM Peripheral Identification Register #1 */ + __I uint32_t PID2; /*!< Offset: ITM Peripheral Identification Register #2 */ + __I uint32_t PID3; /*!< Offset: ITM Peripheral Identification Register #3 */ + __I uint32_t CID0; /*!< Offset: ITM Component Identification Register #0 */ + __I uint32_t CID1; /*!< Offset: ITM Component Identification Register #1 */ + __I uint32_t CID2; /*!< Offset: ITM Component Identification Register #2 */ + __I uint32_t CID3; /*!< Offset: ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0 /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFul << ITM_TPR_PRIVMASK_Pos) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23 /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1ul << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_ATBID_Pos 16 /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_ATBID_Msk (0x7Ful << ITM_TCR_ATBID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_TSPrescale_Pos 8 /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3ul << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4 /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1ul << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3 /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1ul << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2 /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1ul << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1 /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1ul << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0 /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1ul << ITM_TCR_ITMENA_Pos) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0 /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1ul << ITM_IWR_ATVALIDM_Pos) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0 /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1ul << ITM_IRR_ATREADYM_Pos) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0 /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1ul << ITM_IMCR_INTEGRATION_Pos) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2 /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1ul << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1 /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1ul << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0 /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1ul << ITM_LSR_Present_Pos) /*!< ITM LSR: Present Mask */ +/*@}*/ /* end of group CMSIS_CM3_ITM */ + + +/** @addtogroup CMSIS_CM3_InterruptType CMSIS CM3 Interrupt Type + memory mapped structure for Interrupt Type + @{ + */ +typedef struct +{ + uint32_t RESERVED0; + __I uint32_t ICTR; /*!< Offset: 0x04 Interrupt Control Type Register */ +#if ((defined __CM3_REV) && (__CM3_REV >= 0x200)) + __IO uint32_t ACTLR; /*!< Offset: 0x08 Auxiliary Control Register */ +#else + uint32_t RESERVED1; +#endif +} InterruptType_Type; + +/* Interrupt Controller Type Register Definitions */ +#define InterruptType_ICTR_INTLINESNUM_Pos 0 /*!< InterruptType ICTR: INTLINESNUM Position */ +#define InterruptType_ICTR_INTLINESNUM_Msk (0x1Ful << InterruptType_ICTR_INTLINESNUM_Pos) /*!< InterruptType ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define InterruptType_ACTLR_DISFOLD_Pos 2 /*!< InterruptType ACTLR: DISFOLD Position */ +#define InterruptType_ACTLR_DISFOLD_Msk (1ul << InterruptType_ACTLR_DISFOLD_Pos) /*!< InterruptType ACTLR: DISFOLD Mask */ + +#define InterruptType_ACTLR_DISDEFWBUF_Pos 1 /*!< InterruptType ACTLR: DISDEFWBUF Position */ +#define InterruptType_ACTLR_DISDEFWBUF_Msk (1ul << InterruptType_ACTLR_DISDEFWBUF_Pos) /*!< InterruptType ACTLR: DISDEFWBUF Mask */ + +#define InterruptType_ACTLR_DISMCYCINT_Pos 0 /*!< InterruptType ACTLR: DISMCYCINT Position */ +#define InterruptType_ACTLR_DISMCYCINT_Msk (1ul << InterruptType_ACTLR_DISMCYCINT_Pos) /*!< InterruptType ACTLR: DISMCYCINT Mask */ +/*@}*/ /* end of group CMSIS_CM3_InterruptType */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) +/** @addtogroup CMSIS_CM3_MPU CMSIS CM3 MPU + memory mapped structure for Memory Protection Unit (MPU) + @{ + */ +typedef struct +{ + __I uint32_t TYPE; /*!< Offset: 0x00 MPU Type Register */ + __IO uint32_t CTRL; /*!< Offset: 0x04 MPU Control Register */ + __IO uint32_t RNR; /*!< Offset: 0x08 MPU Region RNRber Register */ + __IO uint32_t RBAR; /*!< Offset: 0x0C MPU Region Base Address Register */ + __IO uint32_t RASR; /*!< Offset: 0x10 MPU Region Attribute and Size Register */ + __IO uint32_t RBAR_A1; /*!< Offset: 0x14 MPU Alias 1 Region Base Address Register */ + __IO uint32_t RASR_A1; /*!< Offset: 0x18 MPU Alias 1 Region Attribute and Size Register */ + __IO uint32_t RBAR_A2; /*!< Offset: 0x1C MPU Alias 2 Region Base Address Register */ + __IO uint32_t RASR_A2; /*!< Offset: 0x20 MPU Alias 2 Region Attribute and Size Register */ + __IO uint32_t RBAR_A3; /*!< Offset: 0x24 MPU Alias 3 Region Base Address Register */ + __IO uint32_t RASR_A3; /*!< Offset: 0x28 MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register */ +#define MPU_TYPE_IREGION_Pos 16 /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFul << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8 /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFul << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0 /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1ul << MPU_TYPE_SEPARATE_Pos) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register */ +#define MPU_CTRL_PRIVDEFENA_Pos 2 /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1ul << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1 /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1ul << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0 /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1ul << MPU_CTRL_ENABLE_Pos) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register */ +#define MPU_RNR_REGION_Pos 0 /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFul << MPU_RNR_REGION_Pos) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register */ +#define MPU_RBAR_ADDR_Pos 5 /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFul << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4 /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1ul << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0 /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFul << MPU_RBAR_REGION_Pos) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register */ +#define MPU_RASR_XN_Pos 28 /*!< MPU RASR: XN Position */ +#define MPU_RASR_XN_Msk (1ul << MPU_RASR_XN_Pos) /*!< MPU RASR: XN Mask */ + +#define MPU_RASR_AP_Pos 24 /*!< MPU RASR: AP Position */ +#define MPU_RASR_AP_Msk (7ul << MPU_RASR_AP_Pos) /*!< MPU RASR: AP Mask */ + +#define MPU_RASR_TEX_Pos 19 /*!< MPU RASR: TEX Position */ +#define MPU_RASR_TEX_Msk (7ul << MPU_RASR_TEX_Pos) /*!< MPU RASR: TEX Mask */ + +#define MPU_RASR_S_Pos 18 /*!< MPU RASR: Shareable bit Position */ +#define MPU_RASR_S_Msk (1ul << MPU_RASR_S_Pos) /*!< MPU RASR: Shareable bit Mask */ + +#define MPU_RASR_C_Pos 17 /*!< MPU RASR: Cacheable bit Position */ +#define MPU_RASR_C_Msk (1ul << MPU_RASR_C_Pos) /*!< MPU RASR: Cacheable bit Mask */ + +#define MPU_RASR_B_Pos 16 /*!< MPU RASR: Bufferable bit Position */ +#define MPU_RASR_B_Msk (1ul << MPU_RASR_B_Pos) /*!< MPU RASR: Bufferable bit Mask */ + +#define MPU_RASR_SRD_Pos 8 /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFul << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1 /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1Ful << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENA_Pos 0 /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENA_Msk (0x1Ful << MPU_RASR_ENA_Pos) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@}*/ /* end of group CMSIS_CM3_MPU */ +#endif + + +/** @addtogroup CMSIS_CM3_CoreDebug CMSIS CM3 Core Debug + memory mapped structure for Core Debug Register + @{ + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5 /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1ul << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_TRCENA_Pos 24 /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1ul << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19 /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1ul << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18 /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1ul << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17 /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1ul << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16 /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1ul << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9 /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1ul << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8 /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1ul << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7 /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1ul << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6 /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1ul << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5 /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1ul << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4 /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1ul << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ +/*@}*/ /* end of group CMSIS_CM3_CoreDebug */ + + +/* Memory mapping of Cortex-M3 Hardware */ +#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000) /*!< ITM Base Address */ +#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ + +#define InterruptType ((InterruptType_Type *) SCS_BASE) /*!< Interrupt Type Register */ +#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE) /*!< ITM configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1) + #define MPU_BASE (SCS_BASE + 0x0D90) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type*) MPU_BASE) /*!< Memory Protection Unit */ +#endif + +/*@}*/ /* end of group CMSIS_CM3_core_register */ + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + + +/* ################### Compiler specific Intrinsics ########################### */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#define __enable_fault_irq __enable_fiq +#define __disable_fault_irq __disable_fiq + +#define __NOP __nop +#define __WFI __wfi +#define __WFE __wfe +#define __SEV __sev +#define __ISB() __isb(0) +#define __DSB() __dsb(0) +#define __DMB() __dmb(0) +#define __REV __rev +#define __RBIT __rbit +#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr)) +#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr)) +#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr)) +#define __STREXB(value, ptr) __strex(value, ptr) +#define __STREXH(value, ptr) __strex(value, ptr) +#define __STREXW(value, ptr) __strex(value, ptr) + + +/* intrinsic unsigned long long __ldrexd(volatile void *ptr) */ +/* intrinsic int __strexd(unsigned long long val, volatile void *ptr) */ +/* intrinsic void __enable_irq(); */ +/* intrinsic void __disable_irq(); */ + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +extern int32_t __REVSH(int16_t value); + + +#if (__ARMCC_VERSION < 400000) + +/** + * @brief Remove the exclusive lock created by ldrex + * + * Removes the exclusive lock which is created by ldrex. + */ +extern void __CLREX(void); + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +extern uint32_t __get_BASEPRI(void); + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +extern void __set_BASEPRI(uint32_t basePri); + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +extern uint32_t __get_PRIMASK(void); + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +extern void __set_PRIMASK(uint32_t priMask); + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +extern uint32_t __get_FAULTMASK(void); + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +extern void __set_FAULTMASK(uint32_t faultMask); + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +extern uint32_t __get_CONTROL(void); + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +extern void __set_CONTROL(uint32_t control); + +#else /* (__ARMCC_VERSION >= 400000) */ + +/** + * @brief Remove the exclusive lock created by ldrex + * + * Removes the exclusive lock which is created by ldrex. + */ +#define __CLREX __clrex + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +static __INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +static __INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xff); +} + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +static __INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +static __INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +static __INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +static __INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & 1); +} + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +static __INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +static __INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + +#endif /* __ARMCC_VERSION */ + + + +#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ +#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ + +static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } +static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } + +#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ +static __INLINE void __WFI() { __ASM ("wfi"); } +static __INLINE void __WFE() { __ASM ("wfe"); } +static __INLINE void __SEV() { __ASM ("sev"); } +static __INLINE void __CLREX() { __ASM ("clrex"); } + +/* intrinsic void __ISB(void) */ +/* intrinsic void __DSB(void) */ +/* intrinsic void __DMB(void) */ +/* intrinsic void __set_PRIMASK(); */ +/* intrinsic void __get_PRIMASK(); */ +/* intrinsic void __set_FAULTMASK(); */ +/* intrinsic void __get_FAULTMASK(); */ +/* intrinsic uint32_t __REV(uint32_t value); */ +/* intrinsic uint32_t __REVSH(uint32_t value); */ +/* intrinsic unsigned long __STREX(unsigned long, unsigned long); */ +/* intrinsic unsigned long __LDREX(unsigned long *); */ + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + +/** + * @brief Reverse bit order of value + * + * @param value value to reverse + * @return reversed value + * + * Reverse bit order of value + */ +extern uint32_t __RBIT(uint32_t value); + +/** + * @brief LDR Exclusive (8 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 8 bit values) + */ +extern uint8_t __LDREXB(uint8_t *addr); + +/** + * @brief LDR Exclusive (16 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 16 bit values + */ +extern uint16_t __LDREXH(uint16_t *addr); + +/** + * @brief LDR Exclusive (32 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 32 bit values + */ +extern uint32_t __LDREXW(uint32_t *addr); + +/** + * @brief STR Exclusive (8 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 8 bit values + */ +extern uint32_t __STREXB(uint8_t value, uint8_t *addr); + +/** + * @brief STR Exclusive (16 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 16 bit values + */ +extern uint32_t __STREXH(uint16_t value, uint16_t *addr); + +/** + * @brief STR Exclusive (32 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 32 bit values + */ +extern uint32_t __STREXW(uint32_t value, uint32_t *addr); + + + +#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +static __INLINE void __enable_irq() { __ASM volatile ("cpsie i"); } +static __INLINE void __disable_irq() { __ASM volatile ("cpsid i"); } + +static __INLINE void __enable_fault_irq() { __ASM volatile ("cpsie f"); } +static __INLINE void __disable_fault_irq() { __ASM volatile ("cpsid f"); } + +static __INLINE void __NOP() { __ASM volatile ("nop"); } +static __INLINE void __WFI() { __ASM volatile ("wfi"); } +static __INLINE void __WFE() { __ASM volatile ("wfe"); } +static __INLINE void __SEV() { __ASM volatile ("sev"); } +static __INLINE void __ISB() { __ASM volatile ("isb"); } +static __INLINE void __DSB() { __ASM volatile ("dsb"); } +static __INLINE void __DMB() { __ASM volatile ("dmb"); } +static __INLINE void __CLREX() { __ASM volatile ("clrex"); } + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Return the Base Priority value + * + * @return BasePriority + * + * Return the content of the base priority register + */ +extern uint32_t __get_BASEPRI(void); + +/** + * @brief Set the Base Priority value + * + * @param basePri BasePriority + * + * Set the base priority register + */ +extern void __set_BASEPRI(uint32_t basePri); + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +extern uint32_t __get_PRIMASK(void); + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +extern void __set_PRIMASK(uint32_t priMask); + +/** + * @brief Return the Fault Mask value + * + * @return FaultMask + * + * Return the content of the fault mask register + */ +extern uint32_t __get_FAULTMASK(void); + +/** + * @brief Set the Fault Mask value + * + * @param faultMask faultMask value + * + * Set the fault mask register + */ +extern void __set_FAULTMASK(uint32_t faultMask); + +/** + * @brief Return the Control Register value +* +* @return Control value + * + * Return the content of the control register + */ +extern uint32_t __get_CONTROL(void); + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +extern void __set_CONTROL(uint32_t control); + +/** + * @brief Reverse byte order in integer value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in integer value + */ +extern uint32_t __REV(uint32_t value); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +extern int32_t __REVSH(int16_t value); + +/** + * @brief Reverse bit order of value + * + * @param value value to reverse + * @return reversed value + * + * Reverse bit order of value + */ +extern uint32_t __RBIT(uint32_t value); + +/** + * @brief LDR Exclusive (8 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 8 bit value + */ +extern uint8_t __LDREXB(uint8_t *addr); + +/** + * @brief LDR Exclusive (16 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 16 bit values + */ +extern uint16_t __LDREXH(uint16_t *addr); + +/** + * @brief LDR Exclusive (32 bit) + * + * @param *addr address pointer + * @return value of (*address) + * + * Exclusive LDR command for 32 bit values + */ +extern uint32_t __LDREXW(uint32_t *addr); + +/** + * @brief STR Exclusive (8 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 8 bit values + */ +extern uint32_t __STREXB(uint8_t value, uint8_t *addr); + +/** + * @brief STR Exclusive (16 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 16 bit values + */ +extern uint32_t __STREXH(uint16_t value, uint16_t *addr); + +/** + * @brief STR Exclusive (32 bit) + * + * @param value value to store + * @param *addr address pointer + * @return successful / failed + * + * Exclusive STR command for 32 bit values + */ +extern uint32_t __STREXW(uint32_t value, uint32_t *addr); + + +#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif + + +/** @addtogroup CMSIS_CM3_Core_FunctionInterface CMSIS CM3 Core Function Interface + Core Function Interface containing: + - Core NVIC Functions + - Core SysTick Functions + - Core Reset Functions +*/ +/*@{*/ + +/* ########################## NVIC functions #################################### */ + +/** + * @brief Set the Priority Grouping in NVIC Interrupt Controller + * + * @param PriorityGroup is priority grouping field + * + * Set the priority grouping field using the required unlock sequence. + * The parameter priority_grouping is assigned to the field + * SCB->AIRCR [10:8] PRIGROUP field. Only values from 0..7 are used. + * In case of a conflict between priority grouping and available + * priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + */ +static __INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); /* clear bits to change */ + reg_value = (reg_value | + (0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8)); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + +/** + * @brief Get the Priority Grouping from NVIC Interrupt Controller + * + * @return priority grouping field + * + * Get the priority grouping from NVIC Interrupt Controller. + * priority grouping is SCB->AIRCR [10:8] PRIGROUP field. + */ +static __INLINE uint32_t NVIC_GetPriorityGrouping(void) +{ + return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos); /* read priority grouping field */ +} + +/** + * @brief Enable Interrupt in NVIC Interrupt Controller + * + * @param IRQn The positive number of the external interrupt to enable + * + * Enable a device specific interupt in the NVIC interrupt controller. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ +} + +/** + * @brief Disable the interrupt line for external interrupt specified + * + * @param IRQn The positive number of the external interrupt to disable + * + * Disable a device specific interupt in the NVIC interrupt controller. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + +/** + * @brief Read the interrupt pending bit for a device specific interrupt source + * + * @param IRQn The number of the device specifc interrupt + * @return 1 = interrupt pending, 0 = interrupt not pending + * + * Read the pending register in NVIC and return 1 if its status is pending, + * otherwise it returns 0 + */ +static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + +/** + * @brief Set the pending bit for an external interrupt + * + * @param IRQn The number of the interrupt for set pending + * + * Set the pending bit for the specified interrupt. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + +/** + * @brief Clear the pending bit for an external interrupt + * + * @param IRQn The number of the interrupt for clear pending + * + * Clear the pending bit for the specified interrupt. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + +/** + * @brief Read the active bit for an external interrupt + * + * @param IRQn The number of the interrupt for read active bit + * @return 1 = interrupt active, 0 = interrupt not active + * + * Read the active register in NVIC and returns 1 if its status is active, + * otherwise it returns 0. + */ +static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */ +} + +/** + * @brief Set the priority for an interrupt + * + * @param IRQn The number of the interrupt for set priority + * @param priority The priority to set + * + * Set the priority for the specified interrupt. The interrupt + * number can be positive to specify an external (device specific) + * interrupt, or negative to specify an internal (core) interrupt. + * + * Note: The priority cannot be set for every core interrupt. + */ +static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */ + else { + NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */ +} + +/** + * @brief Read the priority for an interrupt + * + * @param IRQn The number of the interrupt for get priority + * @return The priority for the interrupt + * + * Read the priority for the specified interrupt. The interrupt + * number can be positive to specify an external (device specific) + * interrupt, or negative to specify an internal (core) interrupt. + * + * The returned priority value is automatically aligned to the implemented + * priority bits of the microcontroller. + * + * Note: The priority cannot be set for every core interrupt. + */ +static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M3 system interrupts */ + else { + return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)] >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + +/** + * @brief Encode the priority for an interrupt + * + * @param PriorityGroup The used priority group + * @param PreemptPriority The preemptive priority value (starting from 0) + * @param SubPriority The sub priority value (starting from 0) + * @return The encoded priority for the interrupt + * + * Encode the priority for an interrupt with the given priority group, + * preemptive priority value and sub priority value. + * In case of a conflict between priority grouping and available + * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + * + * The returned priority value can be used for NVIC_SetPriority(...) function + */ +static __INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + return ( + ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | + ((SubPriority & ((1 << (SubPriorityBits )) - 1))) + ); +} + + +/** + * @brief Decode the priority of an interrupt + * + * @param Priority The priority for the interrupt + * @param PriorityGroup The used priority group + * @param pPreemptPriority The preemptive priority value (starting from 0) + * @param pSubPriority The sub priority value (starting from 0) + * + * Decode an interrupt priority value with the given priority group to + * preemptive priority value and sub priority value. + * In case of a conflict between priority grouping and available + * priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set. + * + * The priority value can be retrieved with NVIC_GetPriority(...) function + */ +static __INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & 0x07); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; + SubPriorityBits = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; + + *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1); + *pSubPriority = (Priority ) & ((1 << (SubPriorityBits )) - 1); +} + + + +/* ################################## SysTick function ############################################ */ + +#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) + +/** + * @brief Initialize and start the SysTick counter and its interrupt. + * + * @param ticks number of ticks between two interrupts + * @return 1 = failed, 0 = successful + * + * Initialise the system tick timer and its interrupt and start the + * system tick timer / counter in free running mode to generate + * periodical interrupts. + */ +static __INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + + + + +/* ################################## Reset function ############################################ */ + +/** + * @brief Initiate a system reset request. + * + * Initiate a system reset request to reset the MCU + */ +static __INLINE void NVIC_SystemReset(void) +{ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@}*/ /* end of group CMSIS_CM3_Core_FunctionInterface */ + + + +/* ##################################### Debug In/Output function ########################################### */ + +/** @addtogroup CMSIS_CM3_CoreDebugInterface CMSIS CM3 Core Debug Interface + Core Debug Interface containing: + - Core Debug Receive / Transmit Functions + - Core Debug Defines + - Core Debug Variables +*/ +/*@{*/ + +extern volatile int ITM_RxBuffer; /*!< variable to receive characters */ +#define ITM_RXBUFFER_EMPTY 0x5AA55AA5 /*!< value identifying ITM_RxBuffer is ready for next character */ + + +/** + * @brief Outputs a character via the ITM channel 0 + * + * @param ch character to output + * @return character to output + * + * The function outputs a character via the ITM channel 0. + * The function returns when no debugger is connected that has booked the output. + * It is blocking when a debugger is connected, but the previous character send is not transmitted. + */ +static __INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) && /* Trace enabled */ + (ITM->TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */ + (ITM->TER & (1ul << 0) ) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0].u32 == 0); + ITM->PORT[0].u8 = (uint8_t) ch; + } + return (ch); +} + + +/** + * @brief Inputs a character via variable ITM_RxBuffer + * + * @return received character, -1 = no character received + * + * The function inputs a character via variable ITM_RxBuffer. + * The function returns when no debugger is connected that has booked the output. + * It is blocking when a debugger is connected, but the previous character send is not transmitted. + */ +static __INLINE int ITM_ReceiveChar (void) { + int ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + * @brief Check if a character via variable ITM_RxBuffer is available + * + * @return 1 = character available, 0 = no character available + * + * The function checks variable ITM_RxBuffer whether a character is available or not. + * The function returns '1' if a character is available and '0' if no character is available. + */ +static __INLINE int ITM_CheckChar (void) { + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) { + return (0); /* no character available */ + } else { + return (1); /* character available */ + } +} + +/*@}*/ /* end of group CMSIS_CM3_core_DebugInterface */ + + +#ifdef __cplusplus +} +#endif + +/*@}*/ /* end of group CMSIS_CM3_core_definitions */ + +#endif /* __CM3_CORE_H__ */ + +/*lint -restore */ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html new file mode 100644 index 00000000..b80f38df --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/Release_Notes.html @@ -0,0 +1,284 @@ + + + + + + + + + + + + +Release Notes for STM32F10x CMSIS + + + + + +
    +


    +

    +
    + + + + + + +
    + + + + + + + + + +
    Back to Release page
    +

    Release +Notes for STM32F10x CMSIS

    +

    Copyright 2011 STMicroelectronics

    +

    +
    +

     

    + + + + + + +
    +

    Contents

    +
      +
    1. STM32F10x CMSIS +update History
    2. +
    3. License
    4. +
    + +

    STM32F10x CMSIS +update History


    +

    V3.5.0 / 11-March-2011

    +

    Main +Changes

    + +
      +
    • stm32f10x.h +and startup_stm32f10x_hd_vl.s files: remove the FSMC interrupt +definition for STM32F10x High-density Value line devices.
      +
    • +
    • system_stm32f10x.c file provided within the CMSIS folder.
      +
    • + +
    + +

    3.4.0 +- 10/15/2010

    + +
      +
    1. General
    2. +
    + +
      +
    • Add support +for STM32F10x High-density Value line devices.
    • +
    +
      +
    1. STM32F10x CMSIS Device Peripheral Access Layer
    2. +
    + + + +
      +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
      +
      • Update to support High-density Value line devices
        • Add new define STM32F10X_HD_VL
        • +
        • RCC, AFIO, FSMC bits definition updated
        • +
        +
      • + + All +STM32 devices definitions are commented by default. User has to select the +appropriate device before starting else an error will be signaled on compile +time.
      • +
      • Add new IRQs definitons inside the IRQn_Type enumeration for STM23 High-density Value line devices.
      • +
      • "bool" type removed.
        +
      • +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
      +
    • +
        +
      • "system_stm32f10x.c" moved to to "STM32F10x_StdPeriph_Template" directory. This file is also moved to each example directory under "STM32F10x_StdPeriph_Examples".
        +
      • +
      • SystemInit_ExtMemCtl() function: update to support High-density Value line devices.
      • +
      • Add "VECT_TAB_SRAM" inside "system_stm32f10x.c" +to select if the user want to place the Vector Table in internal SRAM. +An additional define is also to specify the Vector Table offset "VECT_TAB_OFFSET".
        +
      • + +
      +
    • STM32F10x CMSIS startup files:startup_stm32f10x_xx.s
      • Add three +startup files for STM32 High-density Value line devices: + startup_stm32f10x_hd_vl.s
      +
    +

    3.3.0 +- 04/16/2010

    + +
    1. General
    +
    • Add support +for STM32F10x XL-density devices.
    • Add startup files for TrueSTUDIO toolchain
    1. STM32F10x CMSIS Device Peripheral Access Layer
    + +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
      +
      • Update to support XL-density devices
        • Add new define STM32F10X_XL
        • Add new IRQs for TIM9..14
        • Update FLASH_TypeDef structure
        • Add new IP instances TIM9..14
        • RCC, AFIO, DBGMCU bits definition updated
      • Correct IRQs definition for MD-, LD-, MD_VL- and LD_VL-density devices (remove comma "," at the end of enum list)
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
      +
      • SystemInit_ExtMemCtl() function: update to support XL-density devices
      • SystemInit() function: swap the order of SetSysClock() and SystemInit_ExtMemCtl() functions. 
        +
    • STM32F10x CMSIS startup files:
      • add three +startup files for STM32 XL-density devices: + startup_stm32f10x_xl.s
      • startup_stm32f10x_md_vl.s for RIDE7: add USART3 IRQ Handler (was missing in previous version)
      • Add startup files for TrueSTUDIO toolchain
    +

    3.2.0 +- 03/01/2010

    +
      +
    1. General
    2. +
    +
      + +
    • STM32F10x CMSIS files updated to CMSIS V1.30 release
    • +
    • Directory structure updated to be aligned with CMSIS V1.30
      +
    • +
    • Add support +for STM32 Low-density Value line (STM32F100x4/6) and +Medium-density Value line (STM32F100x8/B) devices
    • + +
    +
      +
    1. CMSIS Core Peripheral Access Layer
    + +
      +
    1. STM32F10x CMSIS Device Peripheral Access Layer
    2. + +
    + +
      + +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer Header File: stm32f10x.h
      +
    • +
        +
      • Update +the stm32f10x.h file to support new Value line devices features: CEC +peripheral, new General purpose timers TIM15, TIM16 and TIM17.
      • +
      • Peripherals Bits definitions updated to be in line with Value line devices available features.
        +
      • +
      • HSE_Value, +HSI_Value and HSEStartup_TimeOut changed to upper case: HSE_VALUE, +HSI_VALUE and HSE_STARTUP_TIMEOUT. Old names are kept for legacy +purposes.
        +
      • +
      +
    • STM32F10x CMSIS Cortex-M3 Device Peripheral Access Layer System Files: system_stm32f10x.h and system_stm32f10x.c
      +
    • +
        +
      • SystemFrequency variable name changed to SystemCoreClock
        +
      • +
      • Default + SystemCoreClock is changed to 24MHz when Value line devices are selected and to 72MHz on other devices.
        +
      • +
      • All while(1) loop were removed from all clock setting functions. User has to handle the HSE startup failure.
        +
      • +
      • Additional function void SystemCoreClockUpdate (void) is provided.
        +
      • +
      +
    • STM32F10x CMSIS Startup files: startup_stm32f10x_xx.s
    • +
        +
      • Add new +startup files for STM32 Low-density Value line devices: + startup_stm32f10x_ld_vl.s
      • +
      • Add new startup +files for STM32 Medium-density Value line devices: + startup_stm32f10x_md_vl.s
      • +
      • SystemInit() function is called from startup file (startup_stm32f10x_xx.s) before to branch to application main.
        +To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file
        +
      • +
      • GNU startup file for Low density devices (startup_stm32f10x_ld.s) is updated to fix compilation errors.
        +
      • +
      + +
    + +
      +
    +

    License

    +

    The +enclosed firmware and all the related documentation are not covered by +a License Agreement, if you need such License you can contact your +local STMicroelectronics office.

    +

    THE +PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO +SAVE TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR +ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY +CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY +CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH +THEIR PRODUCTS.

    +

     

    +
    +
    +

    For +complete documentation on STM32(CORTEX M3) 32-Bit Microcontrollers +visit www.st.com/STM32

    +
    +

    +
    +
    +

     

    +
    + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h new file mode 100644 index 00000000..af0c7c9a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h @@ -0,0 +1,8336 @@ +/** + ****************************************************************************** + * @file stm32f10x.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for STM32F10x Connectivity line, + * High density, High density value line, Medium density, + * Medium density Value line, Low density, Low density Value line + * and XL-density devices. + * + * The file is the unique include file that the application programmer + * is using in the C source code, usually in main.c. This file contains: + * - Configuration section that allows to select: + * - The device used in the target application + * - To use or not the peripheral’s drivers in application code(i.e. + * code will be based on direct access to peripheral’s registers + * rather than drivers API), this option is controlled by + * "#define USE_STDPERIPH_DRIVER" + * - To change few application-specific parameters such as the HSE + * crystal frequency + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral’s registers hardware + * + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f10x + * @{ + */ + +#ifndef __STM32F10x_H +#define __STM32F10x_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup Library_configuration_section + * @{ + */ + +/* Uncomment the line below according to the target STM32 device used in your + application + */ + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) + /* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */ + /* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */ + /* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */ + /* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */ + /* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */ + /* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */ + /* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */ + /* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */ +#endif +/* Tip: To avoid modifying this file each time you need to switch between these + devices, you can define the device in your toolchain compiler preprocessor. + + - Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers + where the Flash memory density ranges between 16 and 32 Kbytes. + - Low-density value line devices are STM32F100xx microcontrollers where the Flash + memory density ranges between 16 and 32 Kbytes. + - Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx microcontrollers + where the Flash memory density ranges between 64 and 128 Kbytes. + - Medium-density value line devices are STM32F100xx microcontrollers where the + Flash memory density ranges between 64 and 128 Kbytes. + - High-density devices are STM32F101xx and STM32F103xx microcontrollers where + the Flash memory density ranges between 256 and 512 Kbytes. + - High-density value line devices are STM32F100xx microcontrollers where the + Flash memory density ranges between 256 and 512 Kbytes. + - XL-density devices are STM32F101xx and STM32F103xx microcontrollers where + the Flash memory density ranges between 512 and 1024 Kbytes. + - Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers. + */ + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) + #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)" +#endif + +#if !defined USE_STDPERIPH_DRIVER +/** + * @brief Comment the line below if you will not use the peripherals drivers. + In this case, these drivers will not be included and the application code will + be based on direct access to peripherals registers + */ + /*#define USE_STDPERIPH_DRIVER*/ +#endif + +/** + * @brief In the following line adjust the value of External High Speed oscillator (HSE) + used in your application + + Tip: To avoid modifying this file each time you need to use different HSE, you + can define the HSE value in your toolchain compiler preprocessor. + */ +#if !defined HSE_VALUE + #ifdef STM32F10X_CL + #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ + #else + #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ + #endif /* STM32F10X_CL */ +#endif /* HSE_VALUE */ + + +/** + * @brief In the following line adjust the External High Speed oscillator (HSE) Startup + Timeout value + */ +#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up */ + +#define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ + +/** + * @brief STM32F10x Standard Peripheral Library version number + */ +#define __STM32F10X_STDPERIPH_VERSION_MAIN (0x03) /*!< [31:24] main version */ +#define __STM32F10X_STDPERIPH_VERSION_SUB1 (0x05) /*!< [23:16] sub1 version */ +#define __STM32F10X_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */ +#define __STM32F10X_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32F10X_STDPERIPH_VERSION ( (__STM32F10X_STDPERIPH_VERSION_MAIN << 24)\ + |(__STM32F10X_STDPERIPH_VERSION_SUB1 << 16)\ + |(__STM32F10X_STDPERIPH_VERSION_SUB2 << 8)\ + |(__STM32F10X_STDPERIPH_VERSION_RC)) + +/** + * @} + */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ +#ifdef STM32F10X_XL + #define __MPU_PRESENT 1 /*!< STM32 XL-density devices provide an MPU */ +#else + #define __MPU_PRESENT 0 /*!< Other STM32 devices does not provide an MPU */ +#endif /* STM32F10X_XL */ +#define __NVIC_PRIO_BITS 4 /*!< STM32 uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + +/** + * @brief STM32F10x Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ + +/****** STM32 specific Interrupt Numbers *********************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_IRQn = 2, /*!< Tamper Interrupt */ + RTC_IRQn = 3, /*!< RTC global Interrupt */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ + +#ifdef STM32F10X_LD + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42 /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ +#endif /* STM32F10X_LD */ + +#ifdef STM32F10X_LD_VL + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + CEC_IRQn = 42, /*!< HDMI-CEC Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 and DAC underrun Interrupt */ + TIM7_IRQn = 55 /*!< TIM7 Interrupt */ +#endif /* STM32F10X_LD_VL */ + +#ifdef STM32F10X_MD + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42 /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ +#endif /* STM32F10X_MD */ + +#ifdef STM32F10X_MD_VL + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + CEC_IRQn = 42, /*!< HDMI-CEC Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 and DAC underrun Interrupt */ + TIM7_IRQn = 55 /*!< TIM7 Interrupt */ +#endif /* STM32F10X_MD_VL */ + +#ifdef STM32F10X_HD + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ + FSMC_IRQn = 48, /*!< FSMC global Interrupt */ + SDIO_IRQn = 49, /*!< SDIO global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ + TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_5_IRQn = 59 /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ +#endif /* STM32F10X_HD */ + +#ifdef STM32F10X_HD_VL + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break and TIM15 Interrupts */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update and TIM16 Interrupts */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation and TIM17 Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + CEC_IRQn = 42, /*!< HDMI-CEC Interrupt */ + TIM12_IRQn = 43, /*!< TIM12 global Interrupt */ + TIM13_IRQn = 44, /*!< TIM13 global Interrupt */ + TIM14_IRQn = 45, /*!< TIM14 global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 and DAC underrun Interrupt */ + TIM7_IRQn = 55, /*!< TIM7 Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_5_IRQn = 59, /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ + DMA2_Channel5_IRQn = 60 /*!< DMA2 Channel 5 global Interrupt (DMA2 Channel 5 is + mapped at position 60 only if the MISC_REMAP bit in + the AFIO_MAPR2 register is set) */ +#endif /* STM32F10X_HD_VL */ + +#ifdef STM32F10X_XL + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM9_IRQn = 24, /*!< TIM1 Break Interrupt and TIM9 global Interrupt */ + TIM1_UP_TIM10_IRQn = 25, /*!< TIM1 Update Interrupt and TIM10 global Interrupt */ + TIM1_TRG_COM_TIM11_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt and TIM11 global interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ + TIM8_BRK_TIM12_IRQn = 43, /*!< TIM8 Break Interrupt and TIM12 global Interrupt */ + TIM8_UP_TIM13_IRQn = 44, /*!< TIM8 Update Interrupt and TIM13 global Interrupt */ + TIM8_TRG_COM_TIM14_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ + FSMC_IRQn = 48, /*!< FSMC global Interrupt */ + SDIO_IRQn = 49, /*!< SDIO global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ + TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_5_IRQn = 59 /*!< DMA2 Channel 4 and Channel 5 global Interrupt */ +#endif /* STM32F10X_XL */ + +#ifdef STM32F10X_CL + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS WakeUp from suspend through EXTI Line Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_IRQn = 54, /*!< TIM6 global Interrupt */ + TIM7_IRQn = 55, /*!< TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ + ETH_IRQn = 61, /*!< Ethernet global Interrupt */ + ETH_WKUP_IRQn = 62, /*!< Ethernet Wakeup through EXTI line Interrupt */ + CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */ + CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */ + CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */ + CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */ + OTG_FS_IRQn = 67 /*!< USB OTG FS global Interrupt */ +#endif /* STM32F10X_CL */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm3.h" +#include "system_stm32f10x.h" +#include + +/** @addtogroup Exported_types + * @{ + */ + +/*!< STM32F10x Standard Peripheral Library old types (maintained for legacy purpose) */ +typedef int32_t s32; +typedef int16_t s16; +typedef int8_t s8; + +typedef const int32_t sc32; /*!< Read Only */ +typedef const int16_t sc16; /*!< Read Only */ +typedef const int8_t sc8; /*!< Read Only */ + +typedef __IO int32_t vs32; +typedef __IO int16_t vs16; +typedef __IO int8_t vs8; + +typedef __I int32_t vsc32; /*!< Read Only */ +typedef __I int16_t vsc16; /*!< Read Only */ +typedef __I int8_t vsc8; /*!< Read Only */ + +typedef uint32_t u32; +typedef uint16_t u16; +typedef uint8_t u8; + +typedef const uint32_t uc32; /*!< Read Only */ +typedef const uint16_t uc16; /*!< Read Only */ +typedef const uint8_t uc8; /*!< Read Only */ + +typedef __IO uint32_t vu32; +typedef __IO uint16_t vu16; +typedef __IO uint8_t vu8; + +typedef __I uint32_t vuc32; /*!< Read Only */ +typedef __I uint16_t vuc16; /*!< Read Only */ +typedef __I uint8_t vuc8; /*!< Read Only */ + +typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; + +typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; +#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) + +typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; + +/*!< STM32F10x Standard Peripheral Library old definitions (maintained for legacy purpose) */ +#define HSEStartUp_TimeOut HSE_STARTUP_TIMEOUT +#define HSE_Value HSE_VALUE +#define HSI_Value HSI_VALUE +/** + * @} + */ + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t SR; + __IO uint32_t CR1; + __IO uint32_t CR2; + __IO uint32_t SMPR1; + __IO uint32_t SMPR2; + __IO uint32_t JOFR1; + __IO uint32_t JOFR2; + __IO uint32_t JOFR3; + __IO uint32_t JOFR4; + __IO uint32_t HTR; + __IO uint32_t LTR; + __IO uint32_t SQR1; + __IO uint32_t SQR2; + __IO uint32_t SQR3; + __IO uint32_t JSQR; + __IO uint32_t JDR1; + __IO uint32_t JDR2; + __IO uint32_t JDR3; + __IO uint32_t JDR4; + __IO uint32_t DR; +} ADC_TypeDef; + +/** + * @brief Backup Registers + */ + +typedef struct +{ + uint32_t RESERVED0; + __IO uint16_t DR1; + uint16_t RESERVED1; + __IO uint16_t DR2; + uint16_t RESERVED2; + __IO uint16_t DR3; + uint16_t RESERVED3; + __IO uint16_t DR4; + uint16_t RESERVED4; + __IO uint16_t DR5; + uint16_t RESERVED5; + __IO uint16_t DR6; + uint16_t RESERVED6; + __IO uint16_t DR7; + uint16_t RESERVED7; + __IO uint16_t DR8; + uint16_t RESERVED8; + __IO uint16_t DR9; + uint16_t RESERVED9; + __IO uint16_t DR10; + uint16_t RESERVED10; + __IO uint16_t RTCCR; + uint16_t RESERVED11; + __IO uint16_t CR; + uint16_t RESERVED12; + __IO uint16_t CSR; + uint16_t RESERVED13[5]; + __IO uint16_t DR11; + uint16_t RESERVED14; + __IO uint16_t DR12; + uint16_t RESERVED15; + __IO uint16_t DR13; + uint16_t RESERVED16; + __IO uint16_t DR14; + uint16_t RESERVED17; + __IO uint16_t DR15; + uint16_t RESERVED18; + __IO uint16_t DR16; + uint16_t RESERVED19; + __IO uint16_t DR17; + uint16_t RESERVED20; + __IO uint16_t DR18; + uint16_t RESERVED21; + __IO uint16_t DR19; + uint16_t RESERVED22; + __IO uint16_t DR20; + uint16_t RESERVED23; + __IO uint16_t DR21; + uint16_t RESERVED24; + __IO uint16_t DR22; + uint16_t RESERVED25; + __IO uint16_t DR23; + uint16_t RESERVED26; + __IO uint16_t DR24; + uint16_t RESERVED27; + __IO uint16_t DR25; + uint16_t RESERVED28; + __IO uint16_t DR26; + uint16_t RESERVED29; + __IO uint16_t DR27; + uint16_t RESERVED30; + __IO uint16_t DR28; + uint16_t RESERVED31; + __IO uint16_t DR29; + uint16_t RESERVED32; + __IO uint16_t DR30; + uint16_t RESERVED33; + __IO uint16_t DR31; + uint16_t RESERVED34; + __IO uint16_t DR32; + uint16_t RESERVED35; + __IO uint16_t DR33; + uint16_t RESERVED36; + __IO uint16_t DR34; + uint16_t RESERVED37; + __IO uint16_t DR35; + uint16_t RESERVED38; + __IO uint16_t DR36; + uint16_t RESERVED39; + __IO uint16_t DR37; + uint16_t RESERVED40; + __IO uint16_t DR38; + uint16_t RESERVED41; + __IO uint16_t DR39; + uint16_t RESERVED42; + __IO uint16_t DR40; + uint16_t RESERVED43; + __IO uint16_t DR41; + uint16_t RESERVED44; + __IO uint16_t DR42; + uint16_t RESERVED45; +} BKP_TypeDef; + +/** + * @brief Controller Area Network TxMailBox + */ + +typedef struct +{ + __IO uint32_t TIR; + __IO uint32_t TDTR; + __IO uint32_t TDLR; + __IO uint32_t TDHR; +} CAN_TxMailBox_TypeDef; + +/** + * @brief Controller Area Network FIFOMailBox + */ + +typedef struct +{ + __IO uint32_t RIR; + __IO uint32_t RDTR; + __IO uint32_t RDLR; + __IO uint32_t RDHR; +} CAN_FIFOMailBox_TypeDef; + +/** + * @brief Controller Area Network FilterRegister + */ + +typedef struct +{ + __IO uint32_t FR1; + __IO uint32_t FR2; +} CAN_FilterRegister_TypeDef; + +/** + * @brief Controller Area Network + */ + +typedef struct +{ + __IO uint32_t MCR; + __IO uint32_t MSR; + __IO uint32_t TSR; + __IO uint32_t RF0R; + __IO uint32_t RF1R; + __IO uint32_t IER; + __IO uint32_t ESR; + __IO uint32_t BTR; + uint32_t RESERVED0[88]; + CAN_TxMailBox_TypeDef sTxMailBox[3]; + CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; + uint32_t RESERVED1[12]; + __IO uint32_t FMR; + __IO uint32_t FM1R; + uint32_t RESERVED2; + __IO uint32_t FS1R; + uint32_t RESERVED3; + __IO uint32_t FFA1R; + uint32_t RESERVED4; + __IO uint32_t FA1R; + uint32_t RESERVED5[8]; +#ifndef STM32F10X_CL + CAN_FilterRegister_TypeDef sFilterRegister[14]; +#else + CAN_FilterRegister_TypeDef sFilterRegister[28]; +#endif /* STM32F10X_CL */ +} CAN_TypeDef; + +/** + * @brief Consumer Electronics Control (CEC) + */ +typedef struct +{ + __IO uint32_t CFGR; + __IO uint32_t OAR; + __IO uint32_t PRES; + __IO uint32_t ESR; + __IO uint32_t CSR; + __IO uint32_t TXD; + __IO uint32_t RXD; +} CEC_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; + __IO uint8_t IDR; + uint8_t RESERVED0; + uint16_t RESERVED1; + __IO uint32_t CR; +} CRC_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t SWTRIGR; + __IO uint32_t DHR12R1; + __IO uint32_t DHR12L1; + __IO uint32_t DHR8R1; + __IO uint32_t DHR12R2; + __IO uint32_t DHR12L2; + __IO uint32_t DHR8R2; + __IO uint32_t DHR12RD; + __IO uint32_t DHR12LD; + __IO uint32_t DHR8RD; + __IO uint32_t DOR1; + __IO uint32_t DOR2; +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + __IO uint32_t SR; +#endif +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; + __IO uint32_t CR; +}DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; + __IO uint32_t CNDTR; + __IO uint32_t CPAR; + __IO uint32_t CMAR; +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; + __IO uint32_t IFCR; +} DMA_TypeDef; + +/** + * @brief Ethernet MAC + */ + +typedef struct +{ + __IO uint32_t MACCR; + __IO uint32_t MACFFR; + __IO uint32_t MACHTHR; + __IO uint32_t MACHTLR; + __IO uint32_t MACMIIAR; + __IO uint32_t MACMIIDR; + __IO uint32_t MACFCR; + __IO uint32_t MACVLANTR; /* 8 */ + uint32_t RESERVED0[2]; + __IO uint32_t MACRWUFFR; /* 11 */ + __IO uint32_t MACPMTCSR; + uint32_t RESERVED1[2]; + __IO uint32_t MACSR; /* 15 */ + __IO uint32_t MACIMR; + __IO uint32_t MACA0HR; + __IO uint32_t MACA0LR; + __IO uint32_t MACA1HR; + __IO uint32_t MACA1LR; + __IO uint32_t MACA2HR; + __IO uint32_t MACA2LR; + __IO uint32_t MACA3HR; + __IO uint32_t MACA3LR; /* 24 */ + uint32_t RESERVED2[40]; + __IO uint32_t MMCCR; /* 65 */ + __IO uint32_t MMCRIR; + __IO uint32_t MMCTIR; + __IO uint32_t MMCRIMR; + __IO uint32_t MMCTIMR; /* 69 */ + uint32_t RESERVED3[14]; + __IO uint32_t MMCTGFSCCR; /* 84 */ + __IO uint32_t MMCTGFMSCCR; + uint32_t RESERVED4[5]; + __IO uint32_t MMCTGFCR; + uint32_t RESERVED5[10]; + __IO uint32_t MMCRFCECR; + __IO uint32_t MMCRFAECR; + uint32_t RESERVED6[10]; + __IO uint32_t MMCRGUFCR; + uint32_t RESERVED7[334]; + __IO uint32_t PTPTSCR; + __IO uint32_t PTPSSIR; + __IO uint32_t PTPTSHR; + __IO uint32_t PTPTSLR; + __IO uint32_t PTPTSHUR; + __IO uint32_t PTPTSLUR; + __IO uint32_t PTPTSAR; + __IO uint32_t PTPTTHR; + __IO uint32_t PTPTTLR; + uint32_t RESERVED8[567]; + __IO uint32_t DMABMR; + __IO uint32_t DMATPDR; + __IO uint32_t DMARPDR; + __IO uint32_t DMARDLAR; + __IO uint32_t DMATDLAR; + __IO uint32_t DMASR; + __IO uint32_t DMAOMR; + __IO uint32_t DMAIER; + __IO uint32_t DMAMFBOCR; + uint32_t RESERVED9[9]; + __IO uint32_t DMACHTDR; + __IO uint32_t DMACHRDR; + __IO uint32_t DMACHTBAR; + __IO uint32_t DMACHRBAR; +} ETH_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; + __IO uint32_t EMR; + __IO uint32_t RTSR; + __IO uint32_t FTSR; + __IO uint32_t SWIER; + __IO uint32_t PR; +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; + __IO uint32_t KEYR; + __IO uint32_t OPTKEYR; + __IO uint32_t SR; + __IO uint32_t CR; + __IO uint32_t AR; + __IO uint32_t RESERVED; + __IO uint32_t OBR; + __IO uint32_t WRPR; +#ifdef STM32F10X_XL + uint32_t RESERVED1[8]; + __IO uint32_t KEYR2; + uint32_t RESERVED2; + __IO uint32_t SR2; + __IO uint32_t CR2; + __IO uint32_t AR2; +#endif /* STM32F10X_XL */ +} FLASH_TypeDef; + +/** + * @brief Option Bytes Registers + */ + +typedef struct +{ + __IO uint16_t RDP; + __IO uint16_t USER; + __IO uint16_t Data0; + __IO uint16_t Data1; + __IO uint16_t WRP0; + __IO uint16_t WRP1; + __IO uint16_t WRP2; + __IO uint16_t WRP3; +} OB_TypeDef; + +/** + * @brief Flexible Static Memory Controller + */ + +typedef struct +{ + __IO uint32_t BTCR[8]; +} FSMC_Bank1_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank1E + */ + +typedef struct +{ + __IO uint32_t BWTR[7]; +} FSMC_Bank1E_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank2 + */ + +typedef struct +{ + __IO uint32_t PCR2; + __IO uint32_t SR2; + __IO uint32_t PMEM2; + __IO uint32_t PATT2; + uint32_t RESERVED0; + __IO uint32_t ECCR2; +} FSMC_Bank2_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank3 + */ + +typedef struct +{ + __IO uint32_t PCR3; + __IO uint32_t SR3; + __IO uint32_t PMEM3; + __IO uint32_t PATT3; + uint32_t RESERVED0; + __IO uint32_t ECCR3; +} FSMC_Bank3_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank4 + */ + +typedef struct +{ + __IO uint32_t PCR4; + __IO uint32_t SR4; + __IO uint32_t PMEM4; + __IO uint32_t PATT4; + __IO uint32_t PIO4; +} FSMC_Bank4_TypeDef; + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t CRL; + __IO uint32_t CRH; + __IO uint32_t IDR; + __IO uint32_t ODR; + __IO uint32_t BSRR; + __IO uint32_t BRR; + __IO uint32_t LCKR; +} GPIO_TypeDef; + +/** + * @brief Alternate Function I/O + */ + +typedef struct +{ + __IO uint32_t EVCR; + __IO uint32_t MAPR; + __IO uint32_t EXTICR[4]; + uint32_t RESERVED0; + __IO uint32_t MAPR2; +} AFIO_TypeDef; +/** + * @brief Inter Integrated Circuit Interface + */ + +typedef struct +{ + __IO uint16_t CR1; + uint16_t RESERVED0; + __IO uint16_t CR2; + uint16_t RESERVED1; + __IO uint16_t OAR1; + uint16_t RESERVED2; + __IO uint16_t OAR2; + uint16_t RESERVED3; + __IO uint16_t DR; + uint16_t RESERVED4; + __IO uint16_t SR1; + uint16_t RESERVED5; + __IO uint16_t SR2; + uint16_t RESERVED6; + __IO uint16_t CCR; + uint16_t RESERVED7; + __IO uint16_t TRISE; + uint16_t RESERVED8; +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; + __IO uint32_t PR; + __IO uint32_t RLR; + __IO uint32_t SR; +} IWDG_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t CSR; +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t CFGR; + __IO uint32_t CIR; + __IO uint32_t APB2RSTR; + __IO uint32_t APB1RSTR; + __IO uint32_t AHBENR; + __IO uint32_t APB2ENR; + __IO uint32_t APB1ENR; + __IO uint32_t BDCR; + __IO uint32_t CSR; + +#ifdef STM32F10X_CL + __IO uint32_t AHBRSTR; + __IO uint32_t CFGR2; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + uint32_t RESERVED0; + __IO uint32_t CFGR2; +#endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ + +typedef struct +{ + __IO uint16_t CRH; + uint16_t RESERVED0; + __IO uint16_t CRL; + uint16_t RESERVED1; + __IO uint16_t PRLH; + uint16_t RESERVED2; + __IO uint16_t PRLL; + uint16_t RESERVED3; + __IO uint16_t DIVH; + uint16_t RESERVED4; + __IO uint16_t DIVL; + uint16_t RESERVED5; + __IO uint16_t CNTH; + uint16_t RESERVED6; + __IO uint16_t CNTL; + uint16_t RESERVED7; + __IO uint16_t ALRH; + uint16_t RESERVED8; + __IO uint16_t ALRL; + uint16_t RESERVED9; +} RTC_TypeDef; + +/** + * @brief SD host Interface + */ + +typedef struct +{ + __IO uint32_t POWER; + __IO uint32_t CLKCR; + __IO uint32_t ARG; + __IO uint32_t CMD; + __I uint32_t RESPCMD; + __I uint32_t RESP1; + __I uint32_t RESP2; + __I uint32_t RESP3; + __I uint32_t RESP4; + __IO uint32_t DTIMER; + __IO uint32_t DLEN; + __IO uint32_t DCTRL; + __I uint32_t DCOUNT; + __I uint32_t STA; + __IO uint32_t ICR; + __IO uint32_t MASK; + uint32_t RESERVED0[2]; + __I uint32_t FIFOCNT; + uint32_t RESERVED1[13]; + __IO uint32_t FIFO; +} SDIO_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint16_t CR1; + uint16_t RESERVED0; + __IO uint16_t CR2; + uint16_t RESERVED1; + __IO uint16_t SR; + uint16_t RESERVED2; + __IO uint16_t DR; + uint16_t RESERVED3; + __IO uint16_t CRCPR; + uint16_t RESERVED4; + __IO uint16_t RXCRCR; + uint16_t RESERVED5; + __IO uint16_t TXCRCR; + uint16_t RESERVED6; + __IO uint16_t I2SCFGR; + uint16_t RESERVED7; + __IO uint16_t I2SPR; + uint16_t RESERVED8; +} SPI_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint16_t CR1; + uint16_t RESERVED0; + __IO uint16_t CR2; + uint16_t RESERVED1; + __IO uint16_t SMCR; + uint16_t RESERVED2; + __IO uint16_t DIER; + uint16_t RESERVED3; + __IO uint16_t SR; + uint16_t RESERVED4; + __IO uint16_t EGR; + uint16_t RESERVED5; + __IO uint16_t CCMR1; + uint16_t RESERVED6; + __IO uint16_t CCMR2; + uint16_t RESERVED7; + __IO uint16_t CCER; + uint16_t RESERVED8; + __IO uint16_t CNT; + uint16_t RESERVED9; + __IO uint16_t PSC; + uint16_t RESERVED10; + __IO uint16_t ARR; + uint16_t RESERVED11; + __IO uint16_t RCR; + uint16_t RESERVED12; + __IO uint16_t CCR1; + uint16_t RESERVED13; + __IO uint16_t CCR2; + uint16_t RESERVED14; + __IO uint16_t CCR3; + uint16_t RESERVED15; + __IO uint16_t CCR4; + uint16_t RESERVED16; + __IO uint16_t BDTR; + uint16_t RESERVED17; + __IO uint16_t DCR; + uint16_t RESERVED18; + __IO uint16_t DMAR; + uint16_t RESERVED19; +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ + +typedef struct +{ + __IO uint16_t SR; + uint16_t RESERVED0; + __IO uint16_t DR; + uint16_t RESERVED1; + __IO uint16_t BRR; + uint16_t RESERVED2; + __IO uint16_t CR1; + uint16_t RESERVED3; + __IO uint16_t CR2; + uint16_t RESERVED4; + __IO uint16_t CR3; + uint16_t RESERVED5; + __IO uint16_t GTPR; + uint16_t RESERVED6; +} USART_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t CFR; + __IO uint32_t SR; +} WWDG_TypeDef; + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + + +#define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */ +#define SRAM_BASE ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */ +#define PERIPH_BASE ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */ + +#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the bit-band region */ +#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the bit-band region */ + +#define FSMC_R_BASE ((uint32_t)0xA0000000) /*!< FSMC registers base address */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) + +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) +#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) +#define TIM12_BASE (APB1PERIPH_BASE + 0x1800) +#define TIM13_BASE (APB1PERIPH_BASE + 0x1C00) +#define TIM14_BASE (APB1PERIPH_BASE + 0x2000) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) +#define UART5_BASE (APB1PERIPH_BASE + 0x5000) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) +#define CAN1_BASE (APB1PERIPH_BASE + 0x6400) +#define CAN2_BASE (APB1PERIPH_BASE + 0x6800) +#define BKP_BASE (APB1PERIPH_BASE + 0x6C00) +#define PWR_BASE (APB1PERIPH_BASE + 0x7000) +#define DAC_BASE (APB1PERIPH_BASE + 0x7400) +#define CEC_BASE (APB1PERIPH_BASE + 0x7800) + +#define AFIO_BASE (APB2PERIPH_BASE + 0x0000) +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) +#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) +#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) +#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) +#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) +#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) +#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) +#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) +#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) +#define ADC2_BASE (APB2PERIPH_BASE + 0x2800) +#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) +#define TIM8_BASE (APB2PERIPH_BASE + 0x3400) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800) +#define ADC3_BASE (APB2PERIPH_BASE + 0x3C00) +#define TIM15_BASE (APB2PERIPH_BASE + 0x4000) +#define TIM16_BASE (APB2PERIPH_BASE + 0x4400) +#define TIM17_BASE (APB2PERIPH_BASE + 0x4800) +#define TIM9_BASE (APB2PERIPH_BASE + 0x4C00) +#define TIM10_BASE (APB2PERIPH_BASE + 0x5000) +#define TIM11_BASE (APB2PERIPH_BASE + 0x5400) + +#define SDIO_BASE (PERIPH_BASE + 0x18000) + +#define DMA1_BASE (AHBPERIPH_BASE + 0x0000) +#define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008) +#define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C) +#define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030) +#define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044) +#define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058) +#define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C) +#define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080) +#define DMA2_BASE (AHBPERIPH_BASE + 0x0400) +#define DMA2_Channel1_BASE (AHBPERIPH_BASE + 0x0408) +#define DMA2_Channel2_BASE (AHBPERIPH_BASE + 0x041C) +#define DMA2_Channel3_BASE (AHBPERIPH_BASE + 0x0430) +#define DMA2_Channel4_BASE (AHBPERIPH_BASE + 0x0444) +#define DMA2_Channel5_BASE (AHBPERIPH_BASE + 0x0458) +#define RCC_BASE (AHBPERIPH_BASE + 0x1000) +#define CRC_BASE (AHBPERIPH_BASE + 0x3000) + +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x2000) /*!< Flash registers base address */ +#define OB_BASE ((uint32_t)0x1FFFF800) /*!< Flash Option Bytes base address */ + +#define ETH_BASE (AHBPERIPH_BASE + 0x8000) +#define ETH_MAC_BASE (ETH_BASE) +#define ETH_MMC_BASE (ETH_BASE + 0x0100) +#define ETH_PTP_BASE (ETH_BASE + 0x0700) +#define ETH_DMA_BASE (ETH_BASE + 0x1000) + +#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!< FSMC Bank1 registers base address */ +#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!< FSMC Bank1E registers base address */ +#define FSMC_Bank2_R_BASE (FSMC_R_BASE + 0x0060) /*!< FSMC Bank2 registers base address */ +#define FSMC_Bank3_R_BASE (FSMC_R_BASE + 0x0080) /*!< FSMC Bank3 registers base address */ +#define FSMC_Bank4_R_BASE (FSMC_R_BASE + 0x00A0) /*!< FSMC Bank4 registers base address */ + +#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ + +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define TIM12 ((TIM_TypeDef *) TIM12_BASE) +#define TIM13 ((TIM_TypeDef *) TIM13_BASE) +#define TIM14 ((TIM_TypeDef *) TIM14_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +#define CAN2 ((CAN_TypeDef *) CAN2_BASE) +#define BKP ((BKP_TypeDef *) BKP_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) +#define CEC ((CEC_TypeDef *) CEC_BASE) +#define AFIO ((AFIO_TypeDef *) AFIO_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define ADC3 ((ADC_TypeDef *) ADC3_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define TIM9 ((TIM_TypeDef *) TIM9_BASE) +#define TIM10 ((TIM_TypeDef *) TIM10_BASE) +#define TIM11 ((TIM_TypeDef *) TIM11_BASE) +#define SDIO ((SDIO_TypeDef *) SDIO_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define OB ((OB_TypeDef *) OB_BASE) +#define ETH ((ETH_TypeDef *) ETH_BASE) +#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) +#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) +#define FSMC_Bank2 ((FSMC_Bank2_TypeDef *) FSMC_Bank2_R_BASE) +#define FSMC_Bank3 ((FSMC_Bank3_TypeDef *) FSMC_Bank3_R_BASE) +#define FSMC_Bank4 ((FSMC_Bank4_TypeDef *) FSMC_Bank4_R_BASE) +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* CRC calculation unit */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ + + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ + + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET ((uint8_t)0x01) /*!< RESET bit */ + +/******************************************************************************/ +/* */ +/* Power Control */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for PWR_CR register ********************/ +#define PWR_CR_LPDS ((uint16_t)0x0001) /*!< Low-Power Deepsleep */ +#define PWR_CR_PDDS ((uint16_t)0x0002) /*!< Power Down Deepsleep */ +#define PWR_CR_CWUF ((uint16_t)0x0004) /*!< Clear Wakeup Flag */ +#define PWR_CR_CSBF ((uint16_t)0x0008) /*!< Clear Standby Flag */ +#define PWR_CR_PVDE ((uint16_t)0x0010) /*!< Power Voltage Detector Enable */ + +#define PWR_CR_PLS ((uint16_t)0x00E0) /*!< PLS[2:0] bits (PVD Level Selection) */ +#define PWR_CR_PLS_0 ((uint16_t)0x0020) /*!< Bit 0 */ +#define PWR_CR_PLS_1 ((uint16_t)0x0040) /*!< Bit 1 */ +#define PWR_CR_PLS_2 ((uint16_t)0x0080) /*!< Bit 2 */ + +/*!< PVD level configuration */ +#define PWR_CR_PLS_2V2 ((uint16_t)0x0000) /*!< PVD level 2.2V */ +#define PWR_CR_PLS_2V3 ((uint16_t)0x0020) /*!< PVD level 2.3V */ +#define PWR_CR_PLS_2V4 ((uint16_t)0x0040) /*!< PVD level 2.4V */ +#define PWR_CR_PLS_2V5 ((uint16_t)0x0060) /*!< PVD level 2.5V */ +#define PWR_CR_PLS_2V6 ((uint16_t)0x0080) /*!< PVD level 2.6V */ +#define PWR_CR_PLS_2V7 ((uint16_t)0x00A0) /*!< PVD level 2.7V */ +#define PWR_CR_PLS_2V8 ((uint16_t)0x00C0) /*!< PVD level 2.8V */ +#define PWR_CR_PLS_2V9 ((uint16_t)0x00E0) /*!< PVD level 2.9V */ + +#define PWR_CR_DBP ((uint16_t)0x0100) /*!< Disable Backup Domain write protection */ + + +/******************* Bit definition for PWR_CSR register ********************/ +#define PWR_CSR_WUF ((uint16_t)0x0001) /*!< Wakeup Flag */ +#define PWR_CSR_SBF ((uint16_t)0x0002) /*!< Standby Flag */ +#define PWR_CSR_PVDO ((uint16_t)0x0004) /*!< PVD Output */ +#define PWR_CSR_EWUP ((uint16_t)0x0100) /*!< Enable WKUP pin */ + +/******************************************************************************/ +/* */ +/* Backup registers */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for BKP_DR1 register ********************/ +#define BKP_DR1_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR2 register ********************/ +#define BKP_DR2_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR3 register ********************/ +#define BKP_DR3_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR4 register ********************/ +#define BKP_DR4_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR5 register ********************/ +#define BKP_DR5_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR6 register ********************/ +#define BKP_DR6_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR7 register ********************/ +#define BKP_DR7_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR8 register ********************/ +#define BKP_DR8_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR9 register ********************/ +#define BKP_DR9_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR10 register *******************/ +#define BKP_DR10_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR11 register *******************/ +#define BKP_DR11_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR12 register *******************/ +#define BKP_DR12_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR13 register *******************/ +#define BKP_DR13_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR14 register *******************/ +#define BKP_DR14_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR15 register *******************/ +#define BKP_DR15_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR16 register *******************/ +#define BKP_DR16_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR17 register *******************/ +#define BKP_DR17_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/****************** Bit definition for BKP_DR18 register ********************/ +#define BKP_DR18_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR19 register *******************/ +#define BKP_DR19_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR20 register *******************/ +#define BKP_DR20_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR21 register *******************/ +#define BKP_DR21_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR22 register *******************/ +#define BKP_DR22_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR23 register *******************/ +#define BKP_DR23_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR24 register *******************/ +#define BKP_DR24_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR25 register *******************/ +#define BKP_DR25_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR26 register *******************/ +#define BKP_DR26_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR27 register *******************/ +#define BKP_DR27_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR28 register *******************/ +#define BKP_DR28_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR29 register *******************/ +#define BKP_DR29_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR30 register *******************/ +#define BKP_DR30_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR31 register *******************/ +#define BKP_DR31_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR32 register *******************/ +#define BKP_DR32_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR33 register *******************/ +#define BKP_DR33_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR34 register *******************/ +#define BKP_DR34_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR35 register *******************/ +#define BKP_DR35_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR36 register *******************/ +#define BKP_DR36_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR37 register *******************/ +#define BKP_DR37_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR38 register *******************/ +#define BKP_DR38_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR39 register *******************/ +#define BKP_DR39_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR40 register *******************/ +#define BKP_DR40_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR41 register *******************/ +#define BKP_DR41_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/******************* Bit definition for BKP_DR42 register *******************/ +#define BKP_DR42_D ((uint16_t)0xFFFF) /*!< Backup data */ + +/****************** Bit definition for BKP_RTCCR register *******************/ +#define BKP_RTCCR_CAL ((uint16_t)0x007F) /*!< Calibration value */ +#define BKP_RTCCR_CCO ((uint16_t)0x0080) /*!< Calibration Clock Output */ +#define BKP_RTCCR_ASOE ((uint16_t)0x0100) /*!< Alarm or Second Output Enable */ +#define BKP_RTCCR_ASOS ((uint16_t)0x0200) /*!< Alarm or Second Output Selection */ + +/******************** Bit definition for BKP_CR register ********************/ +#define BKP_CR_TPE ((uint8_t)0x01) /*!< TAMPER pin enable */ +#define BKP_CR_TPAL ((uint8_t)0x02) /*!< TAMPER pin active level */ + +/******************* Bit definition for BKP_CSR register ********************/ +#define BKP_CSR_CTE ((uint16_t)0x0001) /*!< Clear Tamper event */ +#define BKP_CSR_CTI ((uint16_t)0x0002) /*!< Clear Tamper Interrupt */ +#define BKP_CSR_TPIE ((uint16_t)0x0004) /*!< TAMPER Pin interrupt enable */ +#define BKP_CSR_TEF ((uint16_t)0x0100) /*!< Tamper Event Flag */ +#define BKP_CSR_TIF ((uint16_t)0x0200) /*!< Tamper Interrupt Flag */ + +/******************************************************************************/ +/* */ +/* Reset and Clock Control */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for RCC_CR register ********************/ +#define RCC_CR_HSION ((uint32_t)0x00000001) /*!< Internal High Speed clock enable */ +#define RCC_CR_HSIRDY ((uint32_t)0x00000002) /*!< Internal High Speed clock ready flag */ +#define RCC_CR_HSITRIM ((uint32_t)0x000000F8) /*!< Internal High Speed clock trimming */ +#define RCC_CR_HSICAL ((uint32_t)0x0000FF00) /*!< Internal High Speed clock Calibration */ +#define RCC_CR_HSEON ((uint32_t)0x00010000) /*!< External High Speed clock enable */ +#define RCC_CR_HSERDY ((uint32_t)0x00020000) /*!< External High Speed clock ready flag */ +#define RCC_CR_HSEBYP ((uint32_t)0x00040000) /*!< External High Speed clock Bypass */ +#define RCC_CR_CSSON ((uint32_t)0x00080000) /*!< Clock Security System enable */ +#define RCC_CR_PLLON ((uint32_t)0x01000000) /*!< PLL enable */ +#define RCC_CR_PLLRDY ((uint32_t)0x02000000) /*!< PLL clock ready flag */ + +#ifdef STM32F10X_CL + #define RCC_CR_PLL2ON ((uint32_t)0x04000000) /*!< PLL2 enable */ + #define RCC_CR_PLL2RDY ((uint32_t)0x08000000) /*!< PLL2 clock ready flag */ + #define RCC_CR_PLL3ON ((uint32_t)0x10000000) /*!< PLL3 enable */ + #define RCC_CR_PLL3RDY ((uint32_t)0x20000000) /*!< PLL3 clock ready flag */ +#endif /* STM32F10X_CL */ + +/******************* Bit definition for RCC_CFGR register *******************/ +/*!< SW configuration */ +#define RCC_CFGR_SW ((uint32_t)0x00000003) /*!< SW[1:0] bits (System clock Switch) */ +#define RCC_CFGR_SW_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define RCC_CFGR_SW_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + +#define RCC_CFGR_SW_HSI ((uint32_t)0x00000000) /*!< HSI selected as system clock */ +#define RCC_CFGR_SW_HSE ((uint32_t)0x00000001) /*!< HSE selected as system clock */ +#define RCC_CFGR_SW_PLL ((uint32_t)0x00000002) /*!< PLL selected as system clock */ + +/*!< SWS configuration */ +#define RCC_CFGR_SWS ((uint32_t)0x0000000C) /*!< SWS[1:0] bits (System Clock Switch Status) */ +#define RCC_CFGR_SWS_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define RCC_CFGR_SWS_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define RCC_CFGR_SWS_HSI ((uint32_t)0x00000000) /*!< HSI oscillator used as system clock */ +#define RCC_CFGR_SWS_HSE ((uint32_t)0x00000004) /*!< HSE oscillator used as system clock */ +#define RCC_CFGR_SWS_PLL ((uint32_t)0x00000008) /*!< PLL used as system clock */ + +/*!< HPRE configuration */ +#define RCC_CFGR_HPRE ((uint32_t)0x000000F0) /*!< HPRE[3:0] bits (AHB prescaler) */ +#define RCC_CFGR_HPRE_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define RCC_CFGR_HPRE_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define RCC_CFGR_HPRE_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define RCC_CFGR_HPRE_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define RCC_CFGR_HPRE_DIV1 ((uint32_t)0x00000000) /*!< SYSCLK not divided */ +#define RCC_CFGR_HPRE_DIV2 ((uint32_t)0x00000080) /*!< SYSCLK divided by 2 */ +#define RCC_CFGR_HPRE_DIV4 ((uint32_t)0x00000090) /*!< SYSCLK divided by 4 */ +#define RCC_CFGR_HPRE_DIV8 ((uint32_t)0x000000A0) /*!< SYSCLK divided by 8 */ +#define RCC_CFGR_HPRE_DIV16 ((uint32_t)0x000000B0) /*!< SYSCLK divided by 16 */ +#define RCC_CFGR_HPRE_DIV64 ((uint32_t)0x000000C0) /*!< SYSCLK divided by 64 */ +#define RCC_CFGR_HPRE_DIV128 ((uint32_t)0x000000D0) /*!< SYSCLK divided by 128 */ +#define RCC_CFGR_HPRE_DIV256 ((uint32_t)0x000000E0) /*!< SYSCLK divided by 256 */ +#define RCC_CFGR_HPRE_DIV512 ((uint32_t)0x000000F0) /*!< SYSCLK divided by 512 */ + +/*!< PPRE1 configuration */ +#define RCC_CFGR_PPRE1 ((uint32_t)0x00000700) /*!< PRE1[2:0] bits (APB1 prescaler) */ +#define RCC_CFGR_PPRE1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define RCC_CFGR_PPRE1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define RCC_CFGR_PPRE1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ + +#define RCC_CFGR_PPRE1_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ +#define RCC_CFGR_PPRE1_DIV2 ((uint32_t)0x00000400) /*!< HCLK divided by 2 */ +#define RCC_CFGR_PPRE1_DIV4 ((uint32_t)0x00000500) /*!< HCLK divided by 4 */ +#define RCC_CFGR_PPRE1_DIV8 ((uint32_t)0x00000600) /*!< HCLK divided by 8 */ +#define RCC_CFGR_PPRE1_DIV16 ((uint32_t)0x00000700) /*!< HCLK divided by 16 */ + +/*!< PPRE2 configuration */ +#define RCC_CFGR_PPRE2 ((uint32_t)0x00003800) /*!< PRE2[2:0] bits (APB2 prescaler) */ +#define RCC_CFGR_PPRE2_0 ((uint32_t)0x00000800) /*!< Bit 0 */ +#define RCC_CFGR_PPRE2_1 ((uint32_t)0x00001000) /*!< Bit 1 */ +#define RCC_CFGR_PPRE2_2 ((uint32_t)0x00002000) /*!< Bit 2 */ + +#define RCC_CFGR_PPRE2_DIV1 ((uint32_t)0x00000000) /*!< HCLK not divided */ +#define RCC_CFGR_PPRE2_DIV2 ((uint32_t)0x00002000) /*!< HCLK divided by 2 */ +#define RCC_CFGR_PPRE2_DIV4 ((uint32_t)0x00002800) /*!< HCLK divided by 4 */ +#define RCC_CFGR_PPRE2_DIV8 ((uint32_t)0x00003000) /*!< HCLK divided by 8 */ +#define RCC_CFGR_PPRE2_DIV16 ((uint32_t)0x00003800) /*!< HCLK divided by 16 */ + +/*!< ADCPPRE configuration */ +#define RCC_CFGR_ADCPRE ((uint32_t)0x0000C000) /*!< ADCPRE[1:0] bits (ADC prescaler) */ +#define RCC_CFGR_ADCPRE_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define RCC_CFGR_ADCPRE_1 ((uint32_t)0x00008000) /*!< Bit 1 */ + +#define RCC_CFGR_ADCPRE_DIV2 ((uint32_t)0x00000000) /*!< PCLK2 divided by 2 */ +#define RCC_CFGR_ADCPRE_DIV4 ((uint32_t)0x00004000) /*!< PCLK2 divided by 4 */ +#define RCC_CFGR_ADCPRE_DIV6 ((uint32_t)0x00008000) /*!< PCLK2 divided by 6 */ +#define RCC_CFGR_ADCPRE_DIV8 ((uint32_t)0x0000C000) /*!< PCLK2 divided by 8 */ + +#define RCC_CFGR_PLLSRC ((uint32_t)0x00010000) /*!< PLL entry clock source */ + +#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) /*!< HSE divider for PLL entry */ + +/*!< PLLMUL configuration */ +#define RCC_CFGR_PLLMULL ((uint32_t)0x003C0000) /*!< PLLMUL[3:0] bits (PLL multiplication factor) */ +#define RCC_CFGR_PLLMULL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define RCC_CFGR_PLLMULL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define RCC_CFGR_PLLMULL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ +#define RCC_CFGR_PLLMULL_3 ((uint32_t)0x00200000) /*!< Bit 3 */ + +#ifdef STM32F10X_CL + #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ + #define RCC_CFGR_PLLSRC_PREDIV1 ((uint32_t)0x00010000) /*!< PREDIV1 clock selected as PLL entry clock source */ + + #define RCC_CFGR_PLLXTPRE_PREDIV1 ((uint32_t)0x00000000) /*!< PREDIV1 clock not divided for PLL entry */ + #define RCC_CFGR_PLLXTPRE_PREDIV1_Div2 ((uint32_t)0x00020000) /*!< PREDIV1 clock divided by 2 for PLL entry */ + + #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock * 4 */ + #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock * 5 */ + #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock * 6 */ + #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock * 7 */ + #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock * 8 */ + #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock * 9 */ + #define RCC_CFGR_PLLMULL6_5 ((uint32_t)0x00340000) /*!< PLL input clock * 6.5 */ + + #define RCC_CFGR_OTGFSPRE ((uint32_t)0x00400000) /*!< USB OTG FS prescaler */ + +/*!< MCO configuration */ + #define RCC_CFGR_MCO ((uint32_t)0x0F000000) /*!< MCO[3:0] bits (Microcontroller Clock Output) */ + #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ + #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + #define RCC_CFGR_MCO_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + + #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ + #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ + #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ + #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ + #define RCC_CFGR_MCO_PLLCLK_Div2 ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ + #define RCC_CFGR_MCO_PLL2CLK ((uint32_t)0x08000000) /*!< PLL2 clock selected as MCO source*/ + #define RCC_CFGR_MCO_PLL3CLK_Div2 ((uint32_t)0x09000000) /*!< PLL3 clock divided by 2 selected as MCO source*/ + #define RCC_CFGR_MCO_Ext_HSE ((uint32_t)0x0A000000) /*!< XT1 external 3-25 MHz oscillator clock selected as MCO source */ + #define RCC_CFGR_MCO_PLL3CLK ((uint32_t)0x0B000000) /*!< PLL3 clock selected as MCO source */ +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ + #define RCC_CFGR_PLLSRC_PREDIV1 ((uint32_t)0x00010000) /*!< PREDIV1 clock selected as PLL entry clock source */ + + #define RCC_CFGR_PLLXTPRE_PREDIV1 ((uint32_t)0x00000000) /*!< PREDIV1 clock not divided for PLL entry */ + #define RCC_CFGR_PLLXTPRE_PREDIV1_Div2 ((uint32_t)0x00020000) /*!< PREDIV1 clock divided by 2 for PLL entry */ + + #define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ + #define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ + #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ + #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ + #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ + #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ + #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ + #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ + #define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ + #define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ + #define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ + #define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ + #define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ + #define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ + #define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ + +/*!< MCO configuration */ + #define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ + #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ + #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + + #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ + #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ + #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ + #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ + #define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ +#else + #define RCC_CFGR_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /*!< HSI clock divided by 2 selected as PLL entry clock source */ + #define RCC_CFGR_PLLSRC_HSE ((uint32_t)0x00010000) /*!< HSE clock selected as PLL entry clock source */ + + #define RCC_CFGR_PLLXTPRE_HSE ((uint32_t)0x00000000) /*!< HSE clock not divided for PLL entry */ + #define RCC_CFGR_PLLXTPRE_HSE_Div2 ((uint32_t)0x00020000) /*!< HSE clock divided by 2 for PLL entry */ + + #define RCC_CFGR_PLLMULL2 ((uint32_t)0x00000000) /*!< PLL input clock*2 */ + #define RCC_CFGR_PLLMULL3 ((uint32_t)0x00040000) /*!< PLL input clock*3 */ + #define RCC_CFGR_PLLMULL4 ((uint32_t)0x00080000) /*!< PLL input clock*4 */ + #define RCC_CFGR_PLLMULL5 ((uint32_t)0x000C0000) /*!< PLL input clock*5 */ + #define RCC_CFGR_PLLMULL6 ((uint32_t)0x00100000) /*!< PLL input clock*6 */ + #define RCC_CFGR_PLLMULL7 ((uint32_t)0x00140000) /*!< PLL input clock*7 */ + #define RCC_CFGR_PLLMULL8 ((uint32_t)0x00180000) /*!< PLL input clock*8 */ + #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!< PLL input clock*9 */ + #define RCC_CFGR_PLLMULL10 ((uint32_t)0x00200000) /*!< PLL input clock10 */ + #define RCC_CFGR_PLLMULL11 ((uint32_t)0x00240000) /*!< PLL input clock*11 */ + #define RCC_CFGR_PLLMULL12 ((uint32_t)0x00280000) /*!< PLL input clock*12 */ + #define RCC_CFGR_PLLMULL13 ((uint32_t)0x002C0000) /*!< PLL input clock*13 */ + #define RCC_CFGR_PLLMULL14 ((uint32_t)0x00300000) /*!< PLL input clock*14 */ + #define RCC_CFGR_PLLMULL15 ((uint32_t)0x00340000) /*!< PLL input clock*15 */ + #define RCC_CFGR_PLLMULL16 ((uint32_t)0x00380000) /*!< PLL input clock*16 */ + #define RCC_CFGR_USBPRE ((uint32_t)0x00400000) /*!< USB Device prescaler */ + +/*!< MCO configuration */ + #define RCC_CFGR_MCO ((uint32_t)0x07000000) /*!< MCO[2:0] bits (Microcontroller Clock Output) */ + #define RCC_CFGR_MCO_0 ((uint32_t)0x01000000) /*!< Bit 0 */ + #define RCC_CFGR_MCO_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + #define RCC_CFGR_MCO_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + + #define RCC_CFGR_MCO_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ + #define RCC_CFGR_MCO_SYSCLK ((uint32_t)0x04000000) /*!< System clock selected as MCO source */ + #define RCC_CFGR_MCO_HSI ((uint32_t)0x05000000) /*!< HSI clock selected as MCO source */ + #define RCC_CFGR_MCO_HSE ((uint32_t)0x06000000) /*!< HSE clock selected as MCO source */ + #define RCC_CFGR_MCO_PLL ((uint32_t)0x07000000) /*!< PLL clock divided by 2 selected as MCO source */ +#endif /* STM32F10X_CL */ + +/*!<****************** Bit definition for RCC_CIR register ********************/ +#define RCC_CIR_LSIRDYF ((uint32_t)0x00000001) /*!< LSI Ready Interrupt flag */ +#define RCC_CIR_LSERDYF ((uint32_t)0x00000002) /*!< LSE Ready Interrupt flag */ +#define RCC_CIR_HSIRDYF ((uint32_t)0x00000004) /*!< HSI Ready Interrupt flag */ +#define RCC_CIR_HSERDYF ((uint32_t)0x00000008) /*!< HSE Ready Interrupt flag */ +#define RCC_CIR_PLLRDYF ((uint32_t)0x00000010) /*!< PLL Ready Interrupt flag */ +#define RCC_CIR_CSSF ((uint32_t)0x00000080) /*!< Clock Security System Interrupt flag */ +#define RCC_CIR_LSIRDYIE ((uint32_t)0x00000100) /*!< LSI Ready Interrupt Enable */ +#define RCC_CIR_LSERDYIE ((uint32_t)0x00000200) /*!< LSE Ready Interrupt Enable */ +#define RCC_CIR_HSIRDYIE ((uint32_t)0x00000400) /*!< HSI Ready Interrupt Enable */ +#define RCC_CIR_HSERDYIE ((uint32_t)0x00000800) /*!< HSE Ready Interrupt Enable */ +#define RCC_CIR_PLLRDYIE ((uint32_t)0x00001000) /*!< PLL Ready Interrupt Enable */ +#define RCC_CIR_LSIRDYC ((uint32_t)0x00010000) /*!< LSI Ready Interrupt Clear */ +#define RCC_CIR_LSERDYC ((uint32_t)0x00020000) /*!< LSE Ready Interrupt Clear */ +#define RCC_CIR_HSIRDYC ((uint32_t)0x00040000) /*!< HSI Ready Interrupt Clear */ +#define RCC_CIR_HSERDYC ((uint32_t)0x00080000) /*!< HSE Ready Interrupt Clear */ +#define RCC_CIR_PLLRDYC ((uint32_t)0x00100000) /*!< PLL Ready Interrupt Clear */ +#define RCC_CIR_CSSC ((uint32_t)0x00800000) /*!< Clock Security System Interrupt Clear */ + +#ifdef STM32F10X_CL + #define RCC_CIR_PLL2RDYF ((uint32_t)0x00000020) /*!< PLL2 Ready Interrupt flag */ + #define RCC_CIR_PLL3RDYF ((uint32_t)0x00000040) /*!< PLL3 Ready Interrupt flag */ + #define RCC_CIR_PLL2RDYIE ((uint32_t)0x00002000) /*!< PLL2 Ready Interrupt Enable */ + #define RCC_CIR_PLL3RDYIE ((uint32_t)0x00004000) /*!< PLL3 Ready Interrupt Enable */ + #define RCC_CIR_PLL2RDYC ((uint32_t)0x00200000) /*!< PLL2 Ready Interrupt Clear */ + #define RCC_CIR_PLL3RDYC ((uint32_t)0x00400000) /*!< PLL3 Ready Interrupt Clear */ +#endif /* STM32F10X_CL */ + +/***************** Bit definition for RCC_APB2RSTR register *****************/ +#define RCC_APB2RSTR_AFIORST ((uint32_t)0x00000001) /*!< Alternate Function I/O reset */ +#define RCC_APB2RSTR_IOPARST ((uint32_t)0x00000004) /*!< I/O port A reset */ +#define RCC_APB2RSTR_IOPBRST ((uint32_t)0x00000008) /*!< I/O port B reset */ +#define RCC_APB2RSTR_IOPCRST ((uint32_t)0x00000010) /*!< I/O port C reset */ +#define RCC_APB2RSTR_IOPDRST ((uint32_t)0x00000020) /*!< I/O port D reset */ +#define RCC_APB2RSTR_ADC1RST ((uint32_t)0x00000200) /*!< ADC 1 interface reset */ + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) +#define RCC_APB2RSTR_ADC2RST ((uint32_t)0x00000400) /*!< ADC 2 interface reset */ +#endif + +#define RCC_APB2RSTR_TIM1RST ((uint32_t)0x00000800) /*!< TIM1 Timer reset */ +#define RCC_APB2RSTR_SPI1RST ((uint32_t)0x00001000) /*!< SPI 1 reset */ +#define RCC_APB2RSTR_USART1RST ((uint32_t)0x00004000) /*!< USART1 reset */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +#define RCC_APB2RSTR_TIM15RST ((uint32_t)0x00010000) /*!< TIM15 Timer reset */ +#define RCC_APB2RSTR_TIM16RST ((uint32_t)0x00020000) /*!< TIM16 Timer reset */ +#define RCC_APB2RSTR_TIM17RST ((uint32_t)0x00040000) /*!< TIM17 Timer reset */ +#endif + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) + #define RCC_APB2RSTR_IOPERST ((uint32_t)0x00000040) /*!< I/O port E reset */ +#endif /* STM32F10X_LD && STM32F10X_LD_VL */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_XL) + #define RCC_APB2RSTR_IOPFRST ((uint32_t)0x00000080) /*!< I/O port F reset */ + #define RCC_APB2RSTR_IOPGRST ((uint32_t)0x00000100) /*!< I/O port G reset */ + #define RCC_APB2RSTR_TIM8RST ((uint32_t)0x00002000) /*!< TIM8 Timer reset */ + #define RCC_APB2RSTR_ADC3RST ((uint32_t)0x00008000) /*!< ADC3 interface reset */ +#endif + +#if defined (STM32F10X_HD_VL) + #define RCC_APB2RSTR_IOPFRST ((uint32_t)0x00000080) /*!< I/O port F reset */ + #define RCC_APB2RSTR_IOPGRST ((uint32_t)0x00000100) /*!< I/O port G reset */ +#endif + +#ifdef STM32F10X_XL + #define RCC_APB2RSTR_TIM9RST ((uint32_t)0x00080000) /*!< TIM9 Timer reset */ + #define RCC_APB2RSTR_TIM10RST ((uint32_t)0x00100000) /*!< TIM10 Timer reset */ + #define RCC_APB2RSTR_TIM11RST ((uint32_t)0x00200000) /*!< TIM11 Timer reset */ +#endif /* STM32F10X_XL */ + +/***************** Bit definition for RCC_APB1RSTR register *****************/ +#define RCC_APB1RSTR_TIM2RST ((uint32_t)0x00000001) /*!< Timer 2 reset */ +#define RCC_APB1RSTR_TIM3RST ((uint32_t)0x00000002) /*!< Timer 3 reset */ +#define RCC_APB1RSTR_WWDGRST ((uint32_t)0x00000800) /*!< Window Watchdog reset */ +#define RCC_APB1RSTR_USART2RST ((uint32_t)0x00020000) /*!< USART 2 reset */ +#define RCC_APB1RSTR_I2C1RST ((uint32_t)0x00200000) /*!< I2C 1 reset */ + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) +#define RCC_APB1RSTR_CAN1RST ((uint32_t)0x02000000) /*!< CAN1 reset */ +#endif + +#define RCC_APB1RSTR_BKPRST ((uint32_t)0x08000000) /*!< Backup interface reset */ +#define RCC_APB1RSTR_PWRRST ((uint32_t)0x10000000) /*!< Power interface reset */ + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) + #define RCC_APB1RSTR_TIM4RST ((uint32_t)0x00000004) /*!< Timer 4 reset */ + #define RCC_APB1RSTR_SPI2RST ((uint32_t)0x00004000) /*!< SPI 2 reset */ + #define RCC_APB1RSTR_USART3RST ((uint32_t)0x00040000) /*!< USART 3 reset */ + #define RCC_APB1RSTR_I2C2RST ((uint32_t)0x00400000) /*!< I2C 2 reset */ +#endif /* STM32F10X_LD && STM32F10X_LD_VL */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_MD) || defined (STM32F10X_LD) || defined (STM32F10X_XL) + #define RCC_APB1RSTR_USBRST ((uint32_t)0x00800000) /*!< USB Device reset */ +#endif + +#if defined (STM32F10X_HD) || defined (STM32F10X_CL) || defined (STM32F10X_XL) + #define RCC_APB1RSTR_TIM5RST ((uint32_t)0x00000008) /*!< Timer 5 reset */ + #define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ + #define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ + #define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI 3 reset */ + #define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< UART 4 reset */ + #define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< UART 5 reset */ + #define RCC_APB1RSTR_DACRST ((uint32_t)0x20000000) /*!< DAC interface reset */ +#endif + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + #define RCC_APB1RSTR_TIM6RST ((uint32_t)0x00000010) /*!< Timer 6 reset */ + #define RCC_APB1RSTR_TIM7RST ((uint32_t)0x00000020) /*!< Timer 7 reset */ + #define RCC_APB1RSTR_DACRST ((uint32_t)0x20000000) /*!< DAC interface reset */ + #define RCC_APB1RSTR_CECRST ((uint32_t)0x40000000) /*!< CEC interface reset */ +#endif + +#if defined (STM32F10X_HD_VL) + #define RCC_APB1RSTR_TIM5RST ((uint32_t)0x00000008) /*!< Timer 5 reset */ + #define RCC_APB1RSTR_TIM12RST ((uint32_t)0x00000040) /*!< TIM12 Timer reset */ + #define RCC_APB1RSTR_TIM13RST ((uint32_t)0x00000080) /*!< TIM13 Timer reset */ + #define RCC_APB1RSTR_TIM14RST ((uint32_t)0x00000100) /*!< TIM14 Timer reset */ + #define RCC_APB1RSTR_SPI3RST ((uint32_t)0x00008000) /*!< SPI 3 reset */ + #define RCC_APB1RSTR_UART4RST ((uint32_t)0x00080000) /*!< UART 4 reset */ + #define RCC_APB1RSTR_UART5RST ((uint32_t)0x00100000) /*!< UART 5 reset */ +#endif + +#ifdef STM32F10X_CL + #define RCC_APB1RSTR_CAN2RST ((uint32_t)0x04000000) /*!< CAN2 reset */ +#endif /* STM32F10X_CL */ + +#ifdef STM32F10X_XL + #define RCC_APB1RSTR_TIM12RST ((uint32_t)0x00000040) /*!< TIM12 Timer reset */ + #define RCC_APB1RSTR_TIM13RST ((uint32_t)0x00000080) /*!< TIM13 Timer reset */ + #define RCC_APB1RSTR_TIM14RST ((uint32_t)0x00000100) /*!< TIM14 Timer reset */ +#endif /* STM32F10X_XL */ + +/****************** Bit definition for RCC_AHBENR register ******************/ +#define RCC_AHBENR_DMA1EN ((uint16_t)0x0001) /*!< DMA1 clock enable */ +#define RCC_AHBENR_SRAMEN ((uint16_t)0x0004) /*!< SRAM interface clock enable */ +#define RCC_AHBENR_FLITFEN ((uint16_t)0x0010) /*!< FLITF clock enable */ +#define RCC_AHBENR_CRCEN ((uint16_t)0x0040) /*!< CRC clock enable */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_CL) || defined (STM32F10X_HD_VL) + #define RCC_AHBENR_DMA2EN ((uint16_t)0x0002) /*!< DMA2 clock enable */ +#endif + +#if defined (STM32F10X_HD) || defined (STM32F10X_XL) + #define RCC_AHBENR_FSMCEN ((uint16_t)0x0100) /*!< FSMC clock enable */ + #define RCC_AHBENR_SDIOEN ((uint16_t)0x0400) /*!< SDIO clock enable */ +#endif + +#if defined (STM32F10X_HD_VL) + #define RCC_AHBENR_FSMCEN ((uint16_t)0x0100) /*!< FSMC clock enable */ +#endif + +#ifdef STM32F10X_CL + #define RCC_AHBENR_OTGFSEN ((uint32_t)0x00001000) /*!< USB OTG FS clock enable */ + #define RCC_AHBENR_ETHMACEN ((uint32_t)0x00004000) /*!< ETHERNET MAC clock enable */ + #define RCC_AHBENR_ETHMACTXEN ((uint32_t)0x00008000) /*!< ETHERNET MAC Tx clock enable */ + #define RCC_AHBENR_ETHMACRXEN ((uint32_t)0x00010000) /*!< ETHERNET MAC Rx clock enable */ +#endif /* STM32F10X_CL */ + +/****************** Bit definition for RCC_APB2ENR register *****************/ +#define RCC_APB2ENR_AFIOEN ((uint32_t)0x00000001) /*!< Alternate Function I/O clock enable */ +#define RCC_APB2ENR_IOPAEN ((uint32_t)0x00000004) /*!< I/O port A clock enable */ +#define RCC_APB2ENR_IOPBEN ((uint32_t)0x00000008) /*!< I/O port B clock enable */ +#define RCC_APB2ENR_IOPCEN ((uint32_t)0x00000010) /*!< I/O port C clock enable */ +#define RCC_APB2ENR_IOPDEN ((uint32_t)0x00000020) /*!< I/O port D clock enable */ +#define RCC_APB2ENR_ADC1EN ((uint32_t)0x00000200) /*!< ADC 1 interface clock enable */ + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) +#define RCC_APB2ENR_ADC2EN ((uint32_t)0x00000400) /*!< ADC 2 interface clock enable */ +#endif + +#define RCC_APB2ENR_TIM1EN ((uint32_t)0x00000800) /*!< TIM1 Timer clock enable */ +#define RCC_APB2ENR_SPI1EN ((uint32_t)0x00001000) /*!< SPI 1 clock enable */ +#define RCC_APB2ENR_USART1EN ((uint32_t)0x00004000) /*!< USART1 clock enable */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +#define RCC_APB2ENR_TIM15EN ((uint32_t)0x00010000) /*!< TIM15 Timer clock enable */ +#define RCC_APB2ENR_TIM16EN ((uint32_t)0x00020000) /*!< TIM16 Timer clock enable */ +#define RCC_APB2ENR_TIM17EN ((uint32_t)0x00040000) /*!< TIM17 Timer clock enable */ +#endif + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) + #define RCC_APB2ENR_IOPEEN ((uint32_t)0x00000040) /*!< I/O port E clock enable */ +#endif /* STM32F10X_LD && STM32F10X_LD_VL */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_XL) + #define RCC_APB2ENR_IOPFEN ((uint32_t)0x00000080) /*!< I/O port F clock enable */ + #define RCC_APB2ENR_IOPGEN ((uint32_t)0x00000100) /*!< I/O port G clock enable */ + #define RCC_APB2ENR_TIM8EN ((uint32_t)0x00002000) /*!< TIM8 Timer clock enable */ + #define RCC_APB2ENR_ADC3EN ((uint32_t)0x00008000) /*!< DMA1 clock enable */ +#endif + +#if defined (STM32F10X_HD_VL) + #define RCC_APB2ENR_IOPFEN ((uint32_t)0x00000080) /*!< I/O port F clock enable */ + #define RCC_APB2ENR_IOPGEN ((uint32_t)0x00000100) /*!< I/O port G clock enable */ +#endif + +#ifdef STM32F10X_XL + #define RCC_APB2ENR_TIM9EN ((uint32_t)0x00080000) /*!< TIM9 Timer clock enable */ + #define RCC_APB2ENR_TIM10EN ((uint32_t)0x00100000) /*!< TIM10 Timer clock enable */ + #define RCC_APB2ENR_TIM11EN ((uint32_t)0x00200000) /*!< TIM11 Timer clock enable */ +#endif + +/***************** Bit definition for RCC_APB1ENR register ******************/ +#define RCC_APB1ENR_TIM2EN ((uint32_t)0x00000001) /*!< Timer 2 clock enabled*/ +#define RCC_APB1ENR_TIM3EN ((uint32_t)0x00000002) /*!< Timer 3 clock enable */ +#define RCC_APB1ENR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */ +#define RCC_APB1ENR_USART2EN ((uint32_t)0x00020000) /*!< USART 2 clock enable */ +#define RCC_APB1ENR_I2C1EN ((uint32_t)0x00200000) /*!< I2C 1 clock enable */ + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) +#define RCC_APB1ENR_CAN1EN ((uint32_t)0x02000000) /*!< CAN1 clock enable */ +#endif + +#define RCC_APB1ENR_BKPEN ((uint32_t)0x08000000) /*!< Backup interface clock enable */ +#define RCC_APB1ENR_PWREN ((uint32_t)0x10000000) /*!< Power interface clock enable */ + +#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) + #define RCC_APB1ENR_TIM4EN ((uint32_t)0x00000004) /*!< Timer 4 clock enable */ + #define RCC_APB1ENR_SPI2EN ((uint32_t)0x00004000) /*!< SPI 2 clock enable */ + #define RCC_APB1ENR_USART3EN ((uint32_t)0x00040000) /*!< USART 3 clock enable */ + #define RCC_APB1ENR_I2C2EN ((uint32_t)0x00400000) /*!< I2C 2 clock enable */ +#endif /* STM32F10X_LD && STM32F10X_LD_VL */ + +#if defined (STM32F10X_HD) || defined (STM32F10X_MD) || defined (STM32F10X_LD) + #define RCC_APB1ENR_USBEN ((uint32_t)0x00800000) /*!< USB Device clock enable */ +#endif + +#if defined (STM32F10X_HD) || defined (STM32F10X_CL) + #define RCC_APB1ENR_TIM5EN ((uint32_t)0x00000008) /*!< Timer 5 clock enable */ + #define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ + #define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ + #define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI 3 clock enable */ + #define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< UART 4 clock enable */ + #define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< UART 5 clock enable */ + #define RCC_APB1ENR_DACEN ((uint32_t)0x20000000) /*!< DAC interface clock enable */ +#endif + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + #define RCC_APB1ENR_TIM6EN ((uint32_t)0x00000010) /*!< Timer 6 clock enable */ + #define RCC_APB1ENR_TIM7EN ((uint32_t)0x00000020) /*!< Timer 7 clock enable */ + #define RCC_APB1ENR_DACEN ((uint32_t)0x20000000) /*!< DAC interface clock enable */ + #define RCC_APB1ENR_CECEN ((uint32_t)0x40000000) /*!< CEC interface clock enable */ +#endif + +#ifdef STM32F10X_HD_VL + #define RCC_APB1ENR_TIM5EN ((uint32_t)0x00000008) /*!< Timer 5 clock enable */ + #define RCC_APB1ENR_TIM12EN ((uint32_t)0x00000040) /*!< TIM12 Timer clock enable */ + #define RCC_APB1ENR_TIM13EN ((uint32_t)0x00000080) /*!< TIM13 Timer clock enable */ + #define RCC_APB1ENR_TIM14EN ((uint32_t)0x00000100) /*!< TIM14 Timer clock enable */ + #define RCC_APB1ENR_SPI3EN ((uint32_t)0x00008000) /*!< SPI 3 clock enable */ + #define RCC_APB1ENR_UART4EN ((uint32_t)0x00080000) /*!< UART 4 clock enable */ + #define RCC_APB1ENR_UART5EN ((uint32_t)0x00100000) /*!< UART 5 clock enable */ +#endif /* STM32F10X_HD_VL */ + +#ifdef STM32F10X_CL + #define RCC_APB1ENR_CAN2EN ((uint32_t)0x04000000) /*!< CAN2 clock enable */ +#endif /* STM32F10X_CL */ + +#ifdef STM32F10X_XL + #define RCC_APB1ENR_TIM12EN ((uint32_t)0x00000040) /*!< TIM12 Timer clock enable */ + #define RCC_APB1ENR_TIM13EN ((uint32_t)0x00000080) /*!< TIM13 Timer clock enable */ + #define RCC_APB1ENR_TIM14EN ((uint32_t)0x00000100) /*!< TIM14 Timer clock enable */ +#endif /* STM32F10X_XL */ + +/******************* Bit definition for RCC_BDCR register *******************/ +#define RCC_BDCR_LSEON ((uint32_t)0x00000001) /*!< External Low Speed oscillator enable */ +#define RCC_BDCR_LSERDY ((uint32_t)0x00000002) /*!< External Low Speed oscillator Ready */ +#define RCC_BDCR_LSEBYP ((uint32_t)0x00000004) /*!< External Low Speed oscillator Bypass */ + +#define RCC_BDCR_RTCSEL ((uint32_t)0x00000300) /*!< RTCSEL[1:0] bits (RTC clock source selection) */ +#define RCC_BDCR_RTCSEL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define RCC_BDCR_RTCSEL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +/*!< RTC congiguration */ +#define RCC_BDCR_RTCSEL_NOCLOCK ((uint32_t)0x00000000) /*!< No clock */ +#define RCC_BDCR_RTCSEL_LSE ((uint32_t)0x00000100) /*!< LSE oscillator clock used as RTC clock */ +#define RCC_BDCR_RTCSEL_LSI ((uint32_t)0x00000200) /*!< LSI oscillator clock used as RTC clock */ +#define RCC_BDCR_RTCSEL_HSE ((uint32_t)0x00000300) /*!< HSE oscillator clock divided by 128 used as RTC clock */ + +#define RCC_BDCR_RTCEN ((uint32_t)0x00008000) /*!< RTC clock enable */ +#define RCC_BDCR_BDRST ((uint32_t)0x00010000) /*!< Backup domain software reset */ + +/******************* Bit definition for RCC_CSR register ********************/ +#define RCC_CSR_LSION ((uint32_t)0x00000001) /*!< Internal Low Speed oscillator enable */ +#define RCC_CSR_LSIRDY ((uint32_t)0x00000002) /*!< Internal Low Speed oscillator Ready */ +#define RCC_CSR_RMVF ((uint32_t)0x01000000) /*!< Remove reset flag */ +#define RCC_CSR_PINRSTF ((uint32_t)0x04000000) /*!< PIN reset flag */ +#define RCC_CSR_PORRSTF ((uint32_t)0x08000000) /*!< POR/PDR reset flag */ +#define RCC_CSR_SFTRSTF ((uint32_t)0x10000000) /*!< Software Reset flag */ +#define RCC_CSR_IWDGRSTF ((uint32_t)0x20000000) /*!< Independent Watchdog reset flag */ +#define RCC_CSR_WWDGRSTF ((uint32_t)0x40000000) /*!< Window watchdog reset flag */ +#define RCC_CSR_LPWRRSTF ((uint32_t)0x80000000) /*!< Low-Power reset flag */ + +#ifdef STM32F10X_CL +/******************* Bit definition for RCC_AHBRSTR register ****************/ + #define RCC_AHBRSTR_OTGFSRST ((uint32_t)0x00001000) /*!< USB OTG FS reset */ + #define RCC_AHBRSTR_ETHMACRST ((uint32_t)0x00004000) /*!< ETHERNET MAC reset */ + +/******************* Bit definition for RCC_CFGR2 register ******************/ +/*!< PREDIV1 configuration */ + #define RCC_CFGR2_PREDIV1 ((uint32_t)0x0000000F) /*!< PREDIV1[3:0] bits */ + #define RCC_CFGR2_PREDIV1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ + #define RCC_CFGR2_PREDIV1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + #define RCC_CFGR2_PREDIV1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + #define RCC_CFGR2_PREDIV1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + + #define RCC_CFGR2_PREDIV1_DIV1 ((uint32_t)0x00000000) /*!< PREDIV1 input clock not divided */ + #define RCC_CFGR2_PREDIV1_DIV2 ((uint32_t)0x00000001) /*!< PREDIV1 input clock divided by 2 */ + #define RCC_CFGR2_PREDIV1_DIV3 ((uint32_t)0x00000002) /*!< PREDIV1 input clock divided by 3 */ + #define RCC_CFGR2_PREDIV1_DIV4 ((uint32_t)0x00000003) /*!< PREDIV1 input clock divided by 4 */ + #define RCC_CFGR2_PREDIV1_DIV5 ((uint32_t)0x00000004) /*!< PREDIV1 input clock divided by 5 */ + #define RCC_CFGR2_PREDIV1_DIV6 ((uint32_t)0x00000005) /*!< PREDIV1 input clock divided by 6 */ + #define RCC_CFGR2_PREDIV1_DIV7 ((uint32_t)0x00000006) /*!< PREDIV1 input clock divided by 7 */ + #define RCC_CFGR2_PREDIV1_DIV8 ((uint32_t)0x00000007) /*!< PREDIV1 input clock divided by 8 */ + #define RCC_CFGR2_PREDIV1_DIV9 ((uint32_t)0x00000008) /*!< PREDIV1 input clock divided by 9 */ + #define RCC_CFGR2_PREDIV1_DIV10 ((uint32_t)0x00000009) /*!< PREDIV1 input clock divided by 10 */ + #define RCC_CFGR2_PREDIV1_DIV11 ((uint32_t)0x0000000A) /*!< PREDIV1 input clock divided by 11 */ + #define RCC_CFGR2_PREDIV1_DIV12 ((uint32_t)0x0000000B) /*!< PREDIV1 input clock divided by 12 */ + #define RCC_CFGR2_PREDIV1_DIV13 ((uint32_t)0x0000000C) /*!< PREDIV1 input clock divided by 13 */ + #define RCC_CFGR2_PREDIV1_DIV14 ((uint32_t)0x0000000D) /*!< PREDIV1 input clock divided by 14 */ + #define RCC_CFGR2_PREDIV1_DIV15 ((uint32_t)0x0000000E) /*!< PREDIV1 input clock divided by 15 */ + #define RCC_CFGR2_PREDIV1_DIV16 ((uint32_t)0x0000000F) /*!< PREDIV1 input clock divided by 16 */ + +/*!< PREDIV2 configuration */ + #define RCC_CFGR2_PREDIV2 ((uint32_t)0x000000F0) /*!< PREDIV2[3:0] bits */ + #define RCC_CFGR2_PREDIV2_0 ((uint32_t)0x00000010) /*!< Bit 0 */ + #define RCC_CFGR2_PREDIV2_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + #define RCC_CFGR2_PREDIV2_2 ((uint32_t)0x00000040) /*!< Bit 2 */ + #define RCC_CFGR2_PREDIV2_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + + #define RCC_CFGR2_PREDIV2_DIV1 ((uint32_t)0x00000000) /*!< PREDIV2 input clock not divided */ + #define RCC_CFGR2_PREDIV2_DIV2 ((uint32_t)0x00000010) /*!< PREDIV2 input clock divided by 2 */ + #define RCC_CFGR2_PREDIV2_DIV3 ((uint32_t)0x00000020) /*!< PREDIV2 input clock divided by 3 */ + #define RCC_CFGR2_PREDIV2_DIV4 ((uint32_t)0x00000030) /*!< PREDIV2 input clock divided by 4 */ + #define RCC_CFGR2_PREDIV2_DIV5 ((uint32_t)0x00000040) /*!< PREDIV2 input clock divided by 5 */ + #define RCC_CFGR2_PREDIV2_DIV6 ((uint32_t)0x00000050) /*!< PREDIV2 input clock divided by 6 */ + #define RCC_CFGR2_PREDIV2_DIV7 ((uint32_t)0x00000060) /*!< PREDIV2 input clock divided by 7 */ + #define RCC_CFGR2_PREDIV2_DIV8 ((uint32_t)0x00000070) /*!< PREDIV2 input clock divided by 8 */ + #define RCC_CFGR2_PREDIV2_DIV9 ((uint32_t)0x00000080) /*!< PREDIV2 input clock divided by 9 */ + #define RCC_CFGR2_PREDIV2_DIV10 ((uint32_t)0x00000090) /*!< PREDIV2 input clock divided by 10 */ + #define RCC_CFGR2_PREDIV2_DIV11 ((uint32_t)0x000000A0) /*!< PREDIV2 input clock divided by 11 */ + #define RCC_CFGR2_PREDIV2_DIV12 ((uint32_t)0x000000B0) /*!< PREDIV2 input clock divided by 12 */ + #define RCC_CFGR2_PREDIV2_DIV13 ((uint32_t)0x000000C0) /*!< PREDIV2 input clock divided by 13 */ + #define RCC_CFGR2_PREDIV2_DIV14 ((uint32_t)0x000000D0) /*!< PREDIV2 input clock divided by 14 */ + #define RCC_CFGR2_PREDIV2_DIV15 ((uint32_t)0x000000E0) /*!< PREDIV2 input clock divided by 15 */ + #define RCC_CFGR2_PREDIV2_DIV16 ((uint32_t)0x000000F0) /*!< PREDIV2 input clock divided by 16 */ + +/*!< PLL2MUL configuration */ + #define RCC_CFGR2_PLL2MUL ((uint32_t)0x00000F00) /*!< PLL2MUL[3:0] bits */ + #define RCC_CFGR2_PLL2MUL_0 ((uint32_t)0x00000100) /*!< Bit 0 */ + #define RCC_CFGR2_PLL2MUL_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + #define RCC_CFGR2_PLL2MUL_2 ((uint32_t)0x00000400) /*!< Bit 2 */ + #define RCC_CFGR2_PLL2MUL_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + + #define RCC_CFGR2_PLL2MUL8 ((uint32_t)0x00000600) /*!< PLL2 input clock * 8 */ + #define RCC_CFGR2_PLL2MUL9 ((uint32_t)0x00000700) /*!< PLL2 input clock * 9 */ + #define RCC_CFGR2_PLL2MUL10 ((uint32_t)0x00000800) /*!< PLL2 input clock * 10 */ + #define RCC_CFGR2_PLL2MUL11 ((uint32_t)0x00000900) /*!< PLL2 input clock * 11 */ + #define RCC_CFGR2_PLL2MUL12 ((uint32_t)0x00000A00) /*!< PLL2 input clock * 12 */ + #define RCC_CFGR2_PLL2MUL13 ((uint32_t)0x00000B00) /*!< PLL2 input clock * 13 */ + #define RCC_CFGR2_PLL2MUL14 ((uint32_t)0x00000C00) /*!< PLL2 input clock * 14 */ + #define RCC_CFGR2_PLL2MUL16 ((uint32_t)0x00000E00) /*!< PLL2 input clock * 16 */ + #define RCC_CFGR2_PLL2MUL20 ((uint32_t)0x00000F00) /*!< PLL2 input clock * 20 */ + +/*!< PLL3MUL configuration */ + #define RCC_CFGR2_PLL3MUL ((uint32_t)0x0000F000) /*!< PLL3MUL[3:0] bits */ + #define RCC_CFGR2_PLL3MUL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ + #define RCC_CFGR2_PLL3MUL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ + #define RCC_CFGR2_PLL3MUL_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + #define RCC_CFGR2_PLL3MUL_3 ((uint32_t)0x00008000) /*!< Bit 3 */ + + #define RCC_CFGR2_PLL3MUL8 ((uint32_t)0x00006000) /*!< PLL3 input clock * 8 */ + #define RCC_CFGR2_PLL3MUL9 ((uint32_t)0x00007000) /*!< PLL3 input clock * 9 */ + #define RCC_CFGR2_PLL3MUL10 ((uint32_t)0x00008000) /*!< PLL3 input clock * 10 */ + #define RCC_CFGR2_PLL3MUL11 ((uint32_t)0x00009000) /*!< PLL3 input clock * 11 */ + #define RCC_CFGR2_PLL3MUL12 ((uint32_t)0x0000A000) /*!< PLL3 input clock * 12 */ + #define RCC_CFGR2_PLL3MUL13 ((uint32_t)0x0000B000) /*!< PLL3 input clock * 13 */ + #define RCC_CFGR2_PLL3MUL14 ((uint32_t)0x0000C000) /*!< PLL3 input clock * 14 */ + #define RCC_CFGR2_PLL3MUL16 ((uint32_t)0x0000E000) /*!< PLL3 input clock * 16 */ + #define RCC_CFGR2_PLL3MUL20 ((uint32_t)0x0000F000) /*!< PLL3 input clock * 20 */ + + #define RCC_CFGR2_PREDIV1SRC ((uint32_t)0x00010000) /*!< PREDIV1 entry clock source */ + #define RCC_CFGR2_PREDIV1SRC_PLL2 ((uint32_t)0x00010000) /*!< PLL2 selected as PREDIV1 entry clock source */ + #define RCC_CFGR2_PREDIV1SRC_HSE ((uint32_t)0x00000000) /*!< HSE selected as PREDIV1 entry clock source */ + #define RCC_CFGR2_I2S2SRC ((uint32_t)0x00020000) /*!< I2S2 entry clock source */ + #define RCC_CFGR2_I2S3SRC ((uint32_t)0x00040000) /*!< I2S3 clock source */ +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +/******************* Bit definition for RCC_CFGR2 register ******************/ +/*!< PREDIV1 configuration */ + #define RCC_CFGR2_PREDIV1 ((uint32_t)0x0000000F) /*!< PREDIV1[3:0] bits */ + #define RCC_CFGR2_PREDIV1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ + #define RCC_CFGR2_PREDIV1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + #define RCC_CFGR2_PREDIV1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + #define RCC_CFGR2_PREDIV1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + + #define RCC_CFGR2_PREDIV1_DIV1 ((uint32_t)0x00000000) /*!< PREDIV1 input clock not divided */ + #define RCC_CFGR2_PREDIV1_DIV2 ((uint32_t)0x00000001) /*!< PREDIV1 input clock divided by 2 */ + #define RCC_CFGR2_PREDIV1_DIV3 ((uint32_t)0x00000002) /*!< PREDIV1 input clock divided by 3 */ + #define RCC_CFGR2_PREDIV1_DIV4 ((uint32_t)0x00000003) /*!< PREDIV1 input clock divided by 4 */ + #define RCC_CFGR2_PREDIV1_DIV5 ((uint32_t)0x00000004) /*!< PREDIV1 input clock divided by 5 */ + #define RCC_CFGR2_PREDIV1_DIV6 ((uint32_t)0x00000005) /*!< PREDIV1 input clock divided by 6 */ + #define RCC_CFGR2_PREDIV1_DIV7 ((uint32_t)0x00000006) /*!< PREDIV1 input clock divided by 7 */ + #define RCC_CFGR2_PREDIV1_DIV8 ((uint32_t)0x00000007) /*!< PREDIV1 input clock divided by 8 */ + #define RCC_CFGR2_PREDIV1_DIV9 ((uint32_t)0x00000008) /*!< PREDIV1 input clock divided by 9 */ + #define RCC_CFGR2_PREDIV1_DIV10 ((uint32_t)0x00000009) /*!< PREDIV1 input clock divided by 10 */ + #define RCC_CFGR2_PREDIV1_DIV11 ((uint32_t)0x0000000A) /*!< PREDIV1 input clock divided by 11 */ + #define RCC_CFGR2_PREDIV1_DIV12 ((uint32_t)0x0000000B) /*!< PREDIV1 input clock divided by 12 */ + #define RCC_CFGR2_PREDIV1_DIV13 ((uint32_t)0x0000000C) /*!< PREDIV1 input clock divided by 13 */ + #define RCC_CFGR2_PREDIV1_DIV14 ((uint32_t)0x0000000D) /*!< PREDIV1 input clock divided by 14 */ + #define RCC_CFGR2_PREDIV1_DIV15 ((uint32_t)0x0000000E) /*!< PREDIV1 input clock divided by 15 */ + #define RCC_CFGR2_PREDIV1_DIV16 ((uint32_t)0x0000000F) /*!< PREDIV1 input clock divided by 16 */ +#endif + +/******************************************************************************/ +/* */ +/* General Purpose and Alternate Function I/O */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for GPIO_CRL register *******************/ +#define GPIO_CRL_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ + +#define GPIO_CRL_MODE0 ((uint32_t)0x00000003) /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */ +#define GPIO_CRL_MODE0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define GPIO_CRL_MODE0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + +#define GPIO_CRL_MODE1 ((uint32_t)0x00000030) /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */ +#define GPIO_CRL_MODE1_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define GPIO_CRL_MODE1_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define GPIO_CRL_MODE2 ((uint32_t)0x00000300) /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */ +#define GPIO_CRL_MODE2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define GPIO_CRL_MODE2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +#define GPIO_CRL_MODE3 ((uint32_t)0x00003000) /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */ +#define GPIO_CRL_MODE3_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define GPIO_CRL_MODE3_1 ((uint32_t)0x00002000) /*!< Bit 1 */ + +#define GPIO_CRL_MODE4 ((uint32_t)0x00030000) /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */ +#define GPIO_CRL_MODE4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define GPIO_CRL_MODE4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ + +#define GPIO_CRL_MODE5 ((uint32_t)0x00300000) /*!< MODE5[1:0] bits (Port x mode bits, pin 5) */ +#define GPIO_CRL_MODE5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define GPIO_CRL_MODE5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +#define GPIO_CRL_MODE6 ((uint32_t)0x03000000) /*!< MODE6[1:0] bits (Port x mode bits, pin 6) */ +#define GPIO_CRL_MODE6_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define GPIO_CRL_MODE6_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + +#define GPIO_CRL_MODE7 ((uint32_t)0x30000000) /*!< MODE7[1:0] bits (Port x mode bits, pin 7) */ +#define GPIO_CRL_MODE7_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define GPIO_CRL_MODE7_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ + +#define GPIO_CRL_CNF0 ((uint32_t)0x0000000C) /*!< CNF0[1:0] bits (Port x configuration bits, pin 0) */ +#define GPIO_CRL_CNF0_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define GPIO_CRL_CNF0_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define GPIO_CRL_CNF1 ((uint32_t)0x000000C0) /*!< CNF1[1:0] bits (Port x configuration bits, pin 1) */ +#define GPIO_CRL_CNF1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define GPIO_CRL_CNF1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define GPIO_CRL_CNF2 ((uint32_t)0x00000C00) /*!< CNF2[1:0] bits (Port x configuration bits, pin 2) */ +#define GPIO_CRL_CNF2_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define GPIO_CRL_CNF2_1 ((uint32_t)0x00000800) /*!< Bit 1 */ + +#define GPIO_CRL_CNF3 ((uint32_t)0x0000C000) /*!< CNF3[1:0] bits (Port x configuration bits, pin 3) */ +#define GPIO_CRL_CNF3_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define GPIO_CRL_CNF3_1 ((uint32_t)0x00008000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF4 ((uint32_t)0x000C0000) /*!< CNF4[1:0] bits (Port x configuration bits, pin 4) */ +#define GPIO_CRL_CNF4_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define GPIO_CRL_CNF4_1 ((uint32_t)0x00080000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF5 ((uint32_t)0x00C00000) /*!< CNF5[1:0] bits (Port x configuration bits, pin 5) */ +#define GPIO_CRL_CNF5_0 ((uint32_t)0x00400000) /*!< Bit 0 */ +#define GPIO_CRL_CNF5_1 ((uint32_t)0x00800000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF6 ((uint32_t)0x0C000000) /*!< CNF6[1:0] bits (Port x configuration bits, pin 6) */ +#define GPIO_CRL_CNF6_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define GPIO_CRL_CNF6_1 ((uint32_t)0x08000000) /*!< Bit 1 */ + +#define GPIO_CRL_CNF7 ((uint32_t)0xC0000000) /*!< CNF7[1:0] bits (Port x configuration bits, pin 7) */ +#define GPIO_CRL_CNF7_0 ((uint32_t)0x40000000) /*!< Bit 0 */ +#define GPIO_CRL_CNF7_1 ((uint32_t)0x80000000) /*!< Bit 1 */ + +/******************* Bit definition for GPIO_CRH register *******************/ +#define GPIO_CRH_MODE ((uint32_t)0x33333333) /*!< Port x mode bits */ + +#define GPIO_CRH_MODE8 ((uint32_t)0x00000003) /*!< MODE8[1:0] bits (Port x mode bits, pin 8) */ +#define GPIO_CRH_MODE8_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define GPIO_CRH_MODE8_1 ((uint32_t)0x00000002) /*!< Bit 1 */ + +#define GPIO_CRH_MODE9 ((uint32_t)0x00000030) /*!< MODE9[1:0] bits (Port x mode bits, pin 9) */ +#define GPIO_CRH_MODE9_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define GPIO_CRH_MODE9_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define GPIO_CRH_MODE10 ((uint32_t)0x00000300) /*!< MODE10[1:0] bits (Port x mode bits, pin 10) */ +#define GPIO_CRH_MODE10_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define GPIO_CRH_MODE10_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +#define GPIO_CRH_MODE11 ((uint32_t)0x00003000) /*!< MODE11[1:0] bits (Port x mode bits, pin 11) */ +#define GPIO_CRH_MODE11_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define GPIO_CRH_MODE11_1 ((uint32_t)0x00002000) /*!< Bit 1 */ + +#define GPIO_CRH_MODE12 ((uint32_t)0x00030000) /*!< MODE12[1:0] bits (Port x mode bits, pin 12) */ +#define GPIO_CRH_MODE12_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define GPIO_CRH_MODE12_1 ((uint32_t)0x00020000) /*!< Bit 1 */ + +#define GPIO_CRH_MODE13 ((uint32_t)0x00300000) /*!< MODE13[1:0] bits (Port x mode bits, pin 13) */ +#define GPIO_CRH_MODE13_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define GPIO_CRH_MODE13_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +#define GPIO_CRH_MODE14 ((uint32_t)0x03000000) /*!< MODE14[1:0] bits (Port x mode bits, pin 14) */ +#define GPIO_CRH_MODE14_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define GPIO_CRH_MODE14_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + +#define GPIO_CRH_MODE15 ((uint32_t)0x30000000) /*!< MODE15[1:0] bits (Port x mode bits, pin 15) */ +#define GPIO_CRH_MODE15_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define GPIO_CRH_MODE15_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF ((uint32_t)0xCCCCCCCC) /*!< Port x configuration bits */ + +#define GPIO_CRH_CNF8 ((uint32_t)0x0000000C) /*!< CNF8[1:0] bits (Port x configuration bits, pin 8) */ +#define GPIO_CRH_CNF8_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define GPIO_CRH_CNF8_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define GPIO_CRH_CNF9 ((uint32_t)0x000000C0) /*!< CNF9[1:0] bits (Port x configuration bits, pin 9) */ +#define GPIO_CRH_CNF9_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define GPIO_CRH_CNF9_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define GPIO_CRH_CNF10 ((uint32_t)0x00000C00) /*!< CNF10[1:0] bits (Port x configuration bits, pin 10) */ +#define GPIO_CRH_CNF10_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define GPIO_CRH_CNF10_1 ((uint32_t)0x00000800) /*!< Bit 1 */ + +#define GPIO_CRH_CNF11 ((uint32_t)0x0000C000) /*!< CNF11[1:0] bits (Port x configuration bits, pin 11) */ +#define GPIO_CRH_CNF11_0 ((uint32_t)0x00004000) /*!< Bit 0 */ +#define GPIO_CRH_CNF11_1 ((uint32_t)0x00008000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF12 ((uint32_t)0x000C0000) /*!< CNF12[1:0] bits (Port x configuration bits, pin 12) */ +#define GPIO_CRH_CNF12_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define GPIO_CRH_CNF12_1 ((uint32_t)0x00080000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF13 ((uint32_t)0x00C00000) /*!< CNF13[1:0] bits (Port x configuration bits, pin 13) */ +#define GPIO_CRH_CNF13_0 ((uint32_t)0x00400000) /*!< Bit 0 */ +#define GPIO_CRH_CNF13_1 ((uint32_t)0x00800000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF14 ((uint32_t)0x0C000000) /*!< CNF14[1:0] bits (Port x configuration bits, pin 14) */ +#define GPIO_CRH_CNF14_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define GPIO_CRH_CNF14_1 ((uint32_t)0x08000000) /*!< Bit 1 */ + +#define GPIO_CRH_CNF15 ((uint32_t)0xC0000000) /*!< CNF15[1:0] bits (Port x configuration bits, pin 15) */ +#define GPIO_CRH_CNF15_0 ((uint32_t)0x40000000) /*!< Bit 0 */ +#define GPIO_CRH_CNF15_1 ((uint32_t)0x80000000) /*!< Bit 1 */ + +/*!<****************** Bit definition for GPIO_IDR register *******************/ +#define GPIO_IDR_IDR0 ((uint16_t)0x0001) /*!< Port input data, bit 0 */ +#define GPIO_IDR_IDR1 ((uint16_t)0x0002) /*!< Port input data, bit 1 */ +#define GPIO_IDR_IDR2 ((uint16_t)0x0004) /*!< Port input data, bit 2 */ +#define GPIO_IDR_IDR3 ((uint16_t)0x0008) /*!< Port input data, bit 3 */ +#define GPIO_IDR_IDR4 ((uint16_t)0x0010) /*!< Port input data, bit 4 */ +#define GPIO_IDR_IDR5 ((uint16_t)0x0020) /*!< Port input data, bit 5 */ +#define GPIO_IDR_IDR6 ((uint16_t)0x0040) /*!< Port input data, bit 6 */ +#define GPIO_IDR_IDR7 ((uint16_t)0x0080) /*!< Port input data, bit 7 */ +#define GPIO_IDR_IDR8 ((uint16_t)0x0100) /*!< Port input data, bit 8 */ +#define GPIO_IDR_IDR9 ((uint16_t)0x0200) /*!< Port input data, bit 9 */ +#define GPIO_IDR_IDR10 ((uint16_t)0x0400) /*!< Port input data, bit 10 */ +#define GPIO_IDR_IDR11 ((uint16_t)0x0800) /*!< Port input data, bit 11 */ +#define GPIO_IDR_IDR12 ((uint16_t)0x1000) /*!< Port input data, bit 12 */ +#define GPIO_IDR_IDR13 ((uint16_t)0x2000) /*!< Port input data, bit 13 */ +#define GPIO_IDR_IDR14 ((uint16_t)0x4000) /*!< Port input data, bit 14 */ +#define GPIO_IDR_IDR15 ((uint16_t)0x8000) /*!< Port input data, bit 15 */ + +/******************* Bit definition for GPIO_ODR register *******************/ +#define GPIO_ODR_ODR0 ((uint16_t)0x0001) /*!< Port output data, bit 0 */ +#define GPIO_ODR_ODR1 ((uint16_t)0x0002) /*!< Port output data, bit 1 */ +#define GPIO_ODR_ODR2 ((uint16_t)0x0004) /*!< Port output data, bit 2 */ +#define GPIO_ODR_ODR3 ((uint16_t)0x0008) /*!< Port output data, bit 3 */ +#define GPIO_ODR_ODR4 ((uint16_t)0x0010) /*!< Port output data, bit 4 */ +#define GPIO_ODR_ODR5 ((uint16_t)0x0020) /*!< Port output data, bit 5 */ +#define GPIO_ODR_ODR6 ((uint16_t)0x0040) /*!< Port output data, bit 6 */ +#define GPIO_ODR_ODR7 ((uint16_t)0x0080) /*!< Port output data, bit 7 */ +#define GPIO_ODR_ODR8 ((uint16_t)0x0100) /*!< Port output data, bit 8 */ +#define GPIO_ODR_ODR9 ((uint16_t)0x0200) /*!< Port output data, bit 9 */ +#define GPIO_ODR_ODR10 ((uint16_t)0x0400) /*!< Port output data, bit 10 */ +#define GPIO_ODR_ODR11 ((uint16_t)0x0800) /*!< Port output data, bit 11 */ +#define GPIO_ODR_ODR12 ((uint16_t)0x1000) /*!< Port output data, bit 12 */ +#define GPIO_ODR_ODR13 ((uint16_t)0x2000) /*!< Port output data, bit 13 */ +#define GPIO_ODR_ODR14 ((uint16_t)0x4000) /*!< Port output data, bit 14 */ +#define GPIO_ODR_ODR15 ((uint16_t)0x8000) /*!< Port output data, bit 15 */ + +/****************** Bit definition for GPIO_BSRR register *******************/ +#define GPIO_BSRR_BS0 ((uint32_t)0x00000001) /*!< Port x Set bit 0 */ +#define GPIO_BSRR_BS1 ((uint32_t)0x00000002) /*!< Port x Set bit 1 */ +#define GPIO_BSRR_BS2 ((uint32_t)0x00000004) /*!< Port x Set bit 2 */ +#define GPIO_BSRR_BS3 ((uint32_t)0x00000008) /*!< Port x Set bit 3 */ +#define GPIO_BSRR_BS4 ((uint32_t)0x00000010) /*!< Port x Set bit 4 */ +#define GPIO_BSRR_BS5 ((uint32_t)0x00000020) /*!< Port x Set bit 5 */ +#define GPIO_BSRR_BS6 ((uint32_t)0x00000040) /*!< Port x Set bit 6 */ +#define GPIO_BSRR_BS7 ((uint32_t)0x00000080) /*!< Port x Set bit 7 */ +#define GPIO_BSRR_BS8 ((uint32_t)0x00000100) /*!< Port x Set bit 8 */ +#define GPIO_BSRR_BS9 ((uint32_t)0x00000200) /*!< Port x Set bit 9 */ +#define GPIO_BSRR_BS10 ((uint32_t)0x00000400) /*!< Port x Set bit 10 */ +#define GPIO_BSRR_BS11 ((uint32_t)0x00000800) /*!< Port x Set bit 11 */ +#define GPIO_BSRR_BS12 ((uint32_t)0x00001000) /*!< Port x Set bit 12 */ +#define GPIO_BSRR_BS13 ((uint32_t)0x00002000) /*!< Port x Set bit 13 */ +#define GPIO_BSRR_BS14 ((uint32_t)0x00004000) /*!< Port x Set bit 14 */ +#define GPIO_BSRR_BS15 ((uint32_t)0x00008000) /*!< Port x Set bit 15 */ + +#define GPIO_BSRR_BR0 ((uint32_t)0x00010000) /*!< Port x Reset bit 0 */ +#define GPIO_BSRR_BR1 ((uint32_t)0x00020000) /*!< Port x Reset bit 1 */ +#define GPIO_BSRR_BR2 ((uint32_t)0x00040000) /*!< Port x Reset bit 2 */ +#define GPIO_BSRR_BR3 ((uint32_t)0x00080000) /*!< Port x Reset bit 3 */ +#define GPIO_BSRR_BR4 ((uint32_t)0x00100000) /*!< Port x Reset bit 4 */ +#define GPIO_BSRR_BR5 ((uint32_t)0x00200000) /*!< Port x Reset bit 5 */ +#define GPIO_BSRR_BR6 ((uint32_t)0x00400000) /*!< Port x Reset bit 6 */ +#define GPIO_BSRR_BR7 ((uint32_t)0x00800000) /*!< Port x Reset bit 7 */ +#define GPIO_BSRR_BR8 ((uint32_t)0x01000000) /*!< Port x Reset bit 8 */ +#define GPIO_BSRR_BR9 ((uint32_t)0x02000000) /*!< Port x Reset bit 9 */ +#define GPIO_BSRR_BR10 ((uint32_t)0x04000000) /*!< Port x Reset bit 10 */ +#define GPIO_BSRR_BR11 ((uint32_t)0x08000000) /*!< Port x Reset bit 11 */ +#define GPIO_BSRR_BR12 ((uint32_t)0x10000000) /*!< Port x Reset bit 12 */ +#define GPIO_BSRR_BR13 ((uint32_t)0x20000000) /*!< Port x Reset bit 13 */ +#define GPIO_BSRR_BR14 ((uint32_t)0x40000000) /*!< Port x Reset bit 14 */ +#define GPIO_BSRR_BR15 ((uint32_t)0x80000000) /*!< Port x Reset bit 15 */ + +/******************* Bit definition for GPIO_BRR register *******************/ +#define GPIO_BRR_BR0 ((uint16_t)0x0001) /*!< Port x Reset bit 0 */ +#define GPIO_BRR_BR1 ((uint16_t)0x0002) /*!< Port x Reset bit 1 */ +#define GPIO_BRR_BR2 ((uint16_t)0x0004) /*!< Port x Reset bit 2 */ +#define GPIO_BRR_BR3 ((uint16_t)0x0008) /*!< Port x Reset bit 3 */ +#define GPIO_BRR_BR4 ((uint16_t)0x0010) /*!< Port x Reset bit 4 */ +#define GPIO_BRR_BR5 ((uint16_t)0x0020) /*!< Port x Reset bit 5 */ +#define GPIO_BRR_BR6 ((uint16_t)0x0040) /*!< Port x Reset bit 6 */ +#define GPIO_BRR_BR7 ((uint16_t)0x0080) /*!< Port x Reset bit 7 */ +#define GPIO_BRR_BR8 ((uint16_t)0x0100) /*!< Port x Reset bit 8 */ +#define GPIO_BRR_BR9 ((uint16_t)0x0200) /*!< Port x Reset bit 9 */ +#define GPIO_BRR_BR10 ((uint16_t)0x0400) /*!< Port x Reset bit 10 */ +#define GPIO_BRR_BR11 ((uint16_t)0x0800) /*!< Port x Reset bit 11 */ +#define GPIO_BRR_BR12 ((uint16_t)0x1000) /*!< Port x Reset bit 12 */ +#define GPIO_BRR_BR13 ((uint16_t)0x2000) /*!< Port x Reset bit 13 */ +#define GPIO_BRR_BR14 ((uint16_t)0x4000) /*!< Port x Reset bit 14 */ +#define GPIO_BRR_BR15 ((uint16_t)0x8000) /*!< Port x Reset bit 15 */ + +/****************** Bit definition for GPIO_LCKR register *******************/ +#define GPIO_LCKR_LCK0 ((uint32_t)0x00000001) /*!< Port x Lock bit 0 */ +#define GPIO_LCKR_LCK1 ((uint32_t)0x00000002) /*!< Port x Lock bit 1 */ +#define GPIO_LCKR_LCK2 ((uint32_t)0x00000004) /*!< Port x Lock bit 2 */ +#define GPIO_LCKR_LCK3 ((uint32_t)0x00000008) /*!< Port x Lock bit 3 */ +#define GPIO_LCKR_LCK4 ((uint32_t)0x00000010) /*!< Port x Lock bit 4 */ +#define GPIO_LCKR_LCK5 ((uint32_t)0x00000020) /*!< Port x Lock bit 5 */ +#define GPIO_LCKR_LCK6 ((uint32_t)0x00000040) /*!< Port x Lock bit 6 */ +#define GPIO_LCKR_LCK7 ((uint32_t)0x00000080) /*!< Port x Lock bit 7 */ +#define GPIO_LCKR_LCK8 ((uint32_t)0x00000100) /*!< Port x Lock bit 8 */ +#define GPIO_LCKR_LCK9 ((uint32_t)0x00000200) /*!< Port x Lock bit 9 */ +#define GPIO_LCKR_LCK10 ((uint32_t)0x00000400) /*!< Port x Lock bit 10 */ +#define GPIO_LCKR_LCK11 ((uint32_t)0x00000800) /*!< Port x Lock bit 11 */ +#define GPIO_LCKR_LCK12 ((uint32_t)0x00001000) /*!< Port x Lock bit 12 */ +#define GPIO_LCKR_LCK13 ((uint32_t)0x00002000) /*!< Port x Lock bit 13 */ +#define GPIO_LCKR_LCK14 ((uint32_t)0x00004000) /*!< Port x Lock bit 14 */ +#define GPIO_LCKR_LCK15 ((uint32_t)0x00008000) /*!< Port x Lock bit 15 */ +#define GPIO_LCKR_LCKK ((uint32_t)0x00010000) /*!< Lock key */ + +/*----------------------------------------------------------------------------*/ + +/****************** Bit definition for AFIO_EVCR register *******************/ +#define AFIO_EVCR_PIN ((uint8_t)0x0F) /*!< PIN[3:0] bits (Pin selection) */ +#define AFIO_EVCR_PIN_0 ((uint8_t)0x01) /*!< Bit 0 */ +#define AFIO_EVCR_PIN_1 ((uint8_t)0x02) /*!< Bit 1 */ +#define AFIO_EVCR_PIN_2 ((uint8_t)0x04) /*!< Bit 2 */ +#define AFIO_EVCR_PIN_3 ((uint8_t)0x08) /*!< Bit 3 */ + +/*!< PIN configuration */ +#define AFIO_EVCR_PIN_PX0 ((uint8_t)0x00) /*!< Pin 0 selected */ +#define AFIO_EVCR_PIN_PX1 ((uint8_t)0x01) /*!< Pin 1 selected */ +#define AFIO_EVCR_PIN_PX2 ((uint8_t)0x02) /*!< Pin 2 selected */ +#define AFIO_EVCR_PIN_PX3 ((uint8_t)0x03) /*!< Pin 3 selected */ +#define AFIO_EVCR_PIN_PX4 ((uint8_t)0x04) /*!< Pin 4 selected */ +#define AFIO_EVCR_PIN_PX5 ((uint8_t)0x05) /*!< Pin 5 selected */ +#define AFIO_EVCR_PIN_PX6 ((uint8_t)0x06) /*!< Pin 6 selected */ +#define AFIO_EVCR_PIN_PX7 ((uint8_t)0x07) /*!< Pin 7 selected */ +#define AFIO_EVCR_PIN_PX8 ((uint8_t)0x08) /*!< Pin 8 selected */ +#define AFIO_EVCR_PIN_PX9 ((uint8_t)0x09) /*!< Pin 9 selected */ +#define AFIO_EVCR_PIN_PX10 ((uint8_t)0x0A) /*!< Pin 10 selected */ +#define AFIO_EVCR_PIN_PX11 ((uint8_t)0x0B) /*!< Pin 11 selected */ +#define AFIO_EVCR_PIN_PX12 ((uint8_t)0x0C) /*!< Pin 12 selected */ +#define AFIO_EVCR_PIN_PX13 ((uint8_t)0x0D) /*!< Pin 13 selected */ +#define AFIO_EVCR_PIN_PX14 ((uint8_t)0x0E) /*!< Pin 14 selected */ +#define AFIO_EVCR_PIN_PX15 ((uint8_t)0x0F) /*!< Pin 15 selected */ + +#define AFIO_EVCR_PORT ((uint8_t)0x70) /*!< PORT[2:0] bits (Port selection) */ +#define AFIO_EVCR_PORT_0 ((uint8_t)0x10) /*!< Bit 0 */ +#define AFIO_EVCR_PORT_1 ((uint8_t)0x20) /*!< Bit 1 */ +#define AFIO_EVCR_PORT_2 ((uint8_t)0x40) /*!< Bit 2 */ + +/*!< PORT configuration */ +#define AFIO_EVCR_PORT_PA ((uint8_t)0x00) /*!< Port A selected */ +#define AFIO_EVCR_PORT_PB ((uint8_t)0x10) /*!< Port B selected */ +#define AFIO_EVCR_PORT_PC ((uint8_t)0x20) /*!< Port C selected */ +#define AFIO_EVCR_PORT_PD ((uint8_t)0x30) /*!< Port D selected */ +#define AFIO_EVCR_PORT_PE ((uint8_t)0x40) /*!< Port E selected */ + +#define AFIO_EVCR_EVOE ((uint8_t)0x80) /*!< Event Output Enable */ + +/****************** Bit definition for AFIO_MAPR register *******************/ +#define AFIO_MAPR_SPI1_REMAP ((uint32_t)0x00000001) /*!< SPI1 remapping */ +#define AFIO_MAPR_I2C1_REMAP ((uint32_t)0x00000002) /*!< I2C1 remapping */ +#define AFIO_MAPR_USART1_REMAP ((uint32_t)0x00000004) /*!< USART1 remapping */ +#define AFIO_MAPR_USART2_REMAP ((uint32_t)0x00000008) /*!< USART2 remapping */ + +#define AFIO_MAPR_USART3_REMAP ((uint32_t)0x00000030) /*!< USART3_REMAP[1:0] bits (USART3 remapping) */ +#define AFIO_MAPR_USART3_REMAP_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define AFIO_MAPR_USART3_REMAP_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +/* USART3_REMAP configuration */ +#define AFIO_MAPR_USART3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */ +#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP ((uint32_t)0x00000010) /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ +#define AFIO_MAPR_USART3_REMAP_FULLREMAP ((uint32_t)0x00000030) /*!< Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */ + +#define AFIO_MAPR_TIM1_REMAP ((uint32_t)0x000000C0) /*!< TIM1_REMAP[1:0] bits (TIM1 remapping) */ +#define AFIO_MAPR_TIM1_REMAP_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define AFIO_MAPR_TIM1_REMAP_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +/*!< TIM1_REMAP configuration */ +#define AFIO_MAPR_TIM1_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */ +#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP ((uint32_t)0x00000040) /*!< Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */ +#define AFIO_MAPR_TIM1_REMAP_FULLREMAP ((uint32_t)0x000000C0) /*!< Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */ + +#define AFIO_MAPR_TIM2_REMAP ((uint32_t)0x00000300) /*!< TIM2_REMAP[1:0] bits (TIM2 remapping) */ +#define AFIO_MAPR_TIM2_REMAP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define AFIO_MAPR_TIM2_REMAP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ + +/*!< TIM2_REMAP configuration */ +#define AFIO_MAPR_TIM2_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */ +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 ((uint32_t)0x00000100) /*!< Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */ +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 ((uint32_t)0x00000200) /*!< Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */ +#define AFIO_MAPR_TIM2_REMAP_FULLREMAP ((uint32_t)0x00000300) /*!< Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ + +#define AFIO_MAPR_TIM3_REMAP ((uint32_t)0x00000C00) /*!< TIM3_REMAP[1:0] bits (TIM3 remapping) */ +#define AFIO_MAPR_TIM3_REMAP_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define AFIO_MAPR_TIM3_REMAP_1 ((uint32_t)0x00000800) /*!< Bit 1 */ + +/*!< TIM3_REMAP configuration */ +#define AFIO_MAPR_TIM3_REMAP_NOREMAP ((uint32_t)0x00000000) /*!< No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */ +#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP ((uint32_t)0x00000800) /*!< Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */ +#define AFIO_MAPR_TIM3_REMAP_FULLREMAP ((uint32_t)0x00000C00) /*!< Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */ + +#define AFIO_MAPR_TIM4_REMAP ((uint32_t)0x00001000) /*!< TIM4_REMAP bit (TIM4 remapping) */ + +#define AFIO_MAPR_CAN_REMAP ((uint32_t)0x00006000) /*!< CAN_REMAP[1:0] bits (CAN Alternate function remapping) */ +#define AFIO_MAPR_CAN_REMAP_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define AFIO_MAPR_CAN_REMAP_1 ((uint32_t)0x00004000) /*!< Bit 1 */ + +/*!< CAN_REMAP configuration */ +#define AFIO_MAPR_CAN_REMAP_REMAP1 ((uint32_t)0x00000000) /*!< CANRX mapped to PA11, CANTX mapped to PA12 */ +#define AFIO_MAPR_CAN_REMAP_REMAP2 ((uint32_t)0x00004000) /*!< CANRX mapped to PB8, CANTX mapped to PB9 */ +#define AFIO_MAPR_CAN_REMAP_REMAP3 ((uint32_t)0x00006000) /*!< CANRX mapped to PD0, CANTX mapped to PD1 */ + +#define AFIO_MAPR_PD01_REMAP ((uint32_t)0x00008000) /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ +#define AFIO_MAPR_TIM5CH4_IREMAP ((uint32_t)0x00010000) /*!< TIM5 Channel4 Internal Remap */ +#define AFIO_MAPR_ADC1_ETRGINJ_REMAP ((uint32_t)0x00020000) /*!< ADC 1 External Trigger Injected Conversion remapping */ +#define AFIO_MAPR_ADC1_ETRGREG_REMAP ((uint32_t)0x00040000) /*!< ADC 1 External Trigger Regular Conversion remapping */ +#define AFIO_MAPR_ADC2_ETRGINJ_REMAP ((uint32_t)0x00080000) /*!< ADC 2 External Trigger Injected Conversion remapping */ +#define AFIO_MAPR_ADC2_ETRGREG_REMAP ((uint32_t)0x00100000) /*!< ADC 2 External Trigger Regular Conversion remapping */ + +/*!< SWJ_CFG configuration */ +#define AFIO_MAPR_SWJ_CFG ((uint32_t)0x07000000) /*!< SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */ +#define AFIO_MAPR_SWJ_CFG_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define AFIO_MAPR_SWJ_CFG_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define AFIO_MAPR_SWJ_CFG_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define AFIO_MAPR_SWJ_CFG_RESET ((uint32_t)0x00000000) /*!< Full SWJ (JTAG-DP + SW-DP) : Reset State */ +#define AFIO_MAPR_SWJ_CFG_NOJNTRST ((uint32_t)0x01000000) /*!< Full SWJ (JTAG-DP + SW-DP) but without JNTRST */ +#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE ((uint32_t)0x02000000) /*!< JTAG-DP Disabled and SW-DP Enabled */ +#define AFIO_MAPR_SWJ_CFG_DISABLE ((uint32_t)0x04000000) /*!< JTAG-DP Disabled and SW-DP Disabled */ + +#ifdef STM32F10X_CL +/*!< ETH_REMAP configuration */ + #define AFIO_MAPR_ETH_REMAP ((uint32_t)0x00200000) /*!< SPI3_REMAP bit (Ethernet MAC I/O remapping) */ + +/*!< CAN2_REMAP configuration */ + #define AFIO_MAPR_CAN2_REMAP ((uint32_t)0x00400000) /*!< CAN2_REMAP bit (CAN2 I/O remapping) */ + +/*!< MII_RMII_SEL configuration */ + #define AFIO_MAPR_MII_RMII_SEL ((uint32_t)0x00800000) /*!< MII_RMII_SEL bit (Ethernet MII or RMII selection) */ + +/*!< SPI3_REMAP configuration */ + #define AFIO_MAPR_SPI3_REMAP ((uint32_t)0x10000000) /*!< SPI3_REMAP bit (SPI3 remapping) */ + +/*!< TIM2ITR1_IREMAP configuration */ + #define AFIO_MAPR_TIM2ITR1_IREMAP ((uint32_t)0x20000000) /*!< TIM2ITR1_IREMAP bit (TIM2 internal trigger 1 remapping) */ + +/*!< PTP_PPS_REMAP configuration */ + #define AFIO_MAPR_PTP_PPS_REMAP ((uint32_t)0x40000000) /*!< PTP_PPS_REMAP bit (Ethernet PTP PPS remapping) */ +#endif + +/***************** Bit definition for AFIO_EXTICR1 register *****************/ +#define AFIO_EXTICR1_EXTI0 ((uint16_t)0x000F) /*!< EXTI 0 configuration */ +#define AFIO_EXTICR1_EXTI1 ((uint16_t)0x00F0) /*!< EXTI 1 configuration */ +#define AFIO_EXTICR1_EXTI2 ((uint16_t)0x0F00) /*!< EXTI 2 configuration */ +#define AFIO_EXTICR1_EXTI3 ((uint16_t)0xF000) /*!< EXTI 3 configuration */ + +/*!< EXTI0 configuration */ +#define AFIO_EXTICR1_EXTI0_PA ((uint16_t)0x0000) /*!< PA[0] pin */ +#define AFIO_EXTICR1_EXTI0_PB ((uint16_t)0x0001) /*!< PB[0] pin */ +#define AFIO_EXTICR1_EXTI0_PC ((uint16_t)0x0002) /*!< PC[0] pin */ +#define AFIO_EXTICR1_EXTI0_PD ((uint16_t)0x0003) /*!< PD[0] pin */ +#define AFIO_EXTICR1_EXTI0_PE ((uint16_t)0x0004) /*!< PE[0] pin */ +#define AFIO_EXTICR1_EXTI0_PF ((uint16_t)0x0005) /*!< PF[0] pin */ +#define AFIO_EXTICR1_EXTI0_PG ((uint16_t)0x0006) /*!< PG[0] pin */ + +/*!< EXTI1 configuration */ +#define AFIO_EXTICR1_EXTI1_PA ((uint16_t)0x0000) /*!< PA[1] pin */ +#define AFIO_EXTICR1_EXTI1_PB ((uint16_t)0x0010) /*!< PB[1] pin */ +#define AFIO_EXTICR1_EXTI1_PC ((uint16_t)0x0020) /*!< PC[1] pin */ +#define AFIO_EXTICR1_EXTI1_PD ((uint16_t)0x0030) /*!< PD[1] pin */ +#define AFIO_EXTICR1_EXTI1_PE ((uint16_t)0x0040) /*!< PE[1] pin */ +#define AFIO_EXTICR1_EXTI1_PF ((uint16_t)0x0050) /*!< PF[1] pin */ +#define AFIO_EXTICR1_EXTI1_PG ((uint16_t)0x0060) /*!< PG[1] pin */ + +/*!< EXTI2 configuration */ +#define AFIO_EXTICR1_EXTI2_PA ((uint16_t)0x0000) /*!< PA[2] pin */ +#define AFIO_EXTICR1_EXTI2_PB ((uint16_t)0x0100) /*!< PB[2] pin */ +#define AFIO_EXTICR1_EXTI2_PC ((uint16_t)0x0200) /*!< PC[2] pin */ +#define AFIO_EXTICR1_EXTI2_PD ((uint16_t)0x0300) /*!< PD[2] pin */ +#define AFIO_EXTICR1_EXTI2_PE ((uint16_t)0x0400) /*!< PE[2] pin */ +#define AFIO_EXTICR1_EXTI2_PF ((uint16_t)0x0500) /*!< PF[2] pin */ +#define AFIO_EXTICR1_EXTI2_PG ((uint16_t)0x0600) /*!< PG[2] pin */ + +/*!< EXTI3 configuration */ +#define AFIO_EXTICR1_EXTI3_PA ((uint16_t)0x0000) /*!< PA[3] pin */ +#define AFIO_EXTICR1_EXTI3_PB ((uint16_t)0x1000) /*!< PB[3] pin */ +#define AFIO_EXTICR1_EXTI3_PC ((uint16_t)0x2000) /*!< PC[3] pin */ +#define AFIO_EXTICR1_EXTI3_PD ((uint16_t)0x3000) /*!< PD[3] pin */ +#define AFIO_EXTICR1_EXTI3_PE ((uint16_t)0x4000) /*!< PE[3] pin */ +#define AFIO_EXTICR1_EXTI3_PF ((uint16_t)0x5000) /*!< PF[3] pin */ +#define AFIO_EXTICR1_EXTI3_PG ((uint16_t)0x6000) /*!< PG[3] pin */ + +/***************** Bit definition for AFIO_EXTICR2 register *****************/ +#define AFIO_EXTICR2_EXTI4 ((uint16_t)0x000F) /*!< EXTI 4 configuration */ +#define AFIO_EXTICR2_EXTI5 ((uint16_t)0x00F0) /*!< EXTI 5 configuration */ +#define AFIO_EXTICR2_EXTI6 ((uint16_t)0x0F00) /*!< EXTI 6 configuration */ +#define AFIO_EXTICR2_EXTI7 ((uint16_t)0xF000) /*!< EXTI 7 configuration */ + +/*!< EXTI4 configuration */ +#define AFIO_EXTICR2_EXTI4_PA ((uint16_t)0x0000) /*!< PA[4] pin */ +#define AFIO_EXTICR2_EXTI4_PB ((uint16_t)0x0001) /*!< PB[4] pin */ +#define AFIO_EXTICR2_EXTI4_PC ((uint16_t)0x0002) /*!< PC[4] pin */ +#define AFIO_EXTICR2_EXTI4_PD ((uint16_t)0x0003) /*!< PD[4] pin */ +#define AFIO_EXTICR2_EXTI4_PE ((uint16_t)0x0004) /*!< PE[4] pin */ +#define AFIO_EXTICR2_EXTI4_PF ((uint16_t)0x0005) /*!< PF[4] pin */ +#define AFIO_EXTICR2_EXTI4_PG ((uint16_t)0x0006) /*!< PG[4] pin */ + +/* EXTI5 configuration */ +#define AFIO_EXTICR2_EXTI5_PA ((uint16_t)0x0000) /*!< PA[5] pin */ +#define AFIO_EXTICR2_EXTI5_PB ((uint16_t)0x0010) /*!< PB[5] pin */ +#define AFIO_EXTICR2_EXTI5_PC ((uint16_t)0x0020) /*!< PC[5] pin */ +#define AFIO_EXTICR2_EXTI5_PD ((uint16_t)0x0030) /*!< PD[5] pin */ +#define AFIO_EXTICR2_EXTI5_PE ((uint16_t)0x0040) /*!< PE[5] pin */ +#define AFIO_EXTICR2_EXTI5_PF ((uint16_t)0x0050) /*!< PF[5] pin */ +#define AFIO_EXTICR2_EXTI5_PG ((uint16_t)0x0060) /*!< PG[5] pin */ + +/*!< EXTI6 configuration */ +#define AFIO_EXTICR2_EXTI6_PA ((uint16_t)0x0000) /*!< PA[6] pin */ +#define AFIO_EXTICR2_EXTI6_PB ((uint16_t)0x0100) /*!< PB[6] pin */ +#define AFIO_EXTICR2_EXTI6_PC ((uint16_t)0x0200) /*!< PC[6] pin */ +#define AFIO_EXTICR2_EXTI6_PD ((uint16_t)0x0300) /*!< PD[6] pin */ +#define AFIO_EXTICR2_EXTI6_PE ((uint16_t)0x0400) /*!< PE[6] pin */ +#define AFIO_EXTICR2_EXTI6_PF ((uint16_t)0x0500) /*!< PF[6] pin */ +#define AFIO_EXTICR2_EXTI6_PG ((uint16_t)0x0600) /*!< PG[6] pin */ + +/*!< EXTI7 configuration */ +#define AFIO_EXTICR2_EXTI7_PA ((uint16_t)0x0000) /*!< PA[7] pin */ +#define AFIO_EXTICR2_EXTI7_PB ((uint16_t)0x1000) /*!< PB[7] pin */ +#define AFIO_EXTICR2_EXTI7_PC ((uint16_t)0x2000) /*!< PC[7] pin */ +#define AFIO_EXTICR2_EXTI7_PD ((uint16_t)0x3000) /*!< PD[7] pin */ +#define AFIO_EXTICR2_EXTI7_PE ((uint16_t)0x4000) /*!< PE[7] pin */ +#define AFIO_EXTICR2_EXTI7_PF ((uint16_t)0x5000) /*!< PF[7] pin */ +#define AFIO_EXTICR2_EXTI7_PG ((uint16_t)0x6000) /*!< PG[7] pin */ + +/***************** Bit definition for AFIO_EXTICR3 register *****************/ +#define AFIO_EXTICR3_EXTI8 ((uint16_t)0x000F) /*!< EXTI 8 configuration */ +#define AFIO_EXTICR3_EXTI9 ((uint16_t)0x00F0) /*!< EXTI 9 configuration */ +#define AFIO_EXTICR3_EXTI10 ((uint16_t)0x0F00) /*!< EXTI 10 configuration */ +#define AFIO_EXTICR3_EXTI11 ((uint16_t)0xF000) /*!< EXTI 11 configuration */ + +/*!< EXTI8 configuration */ +#define AFIO_EXTICR3_EXTI8_PA ((uint16_t)0x0000) /*!< PA[8] pin */ +#define AFIO_EXTICR3_EXTI8_PB ((uint16_t)0x0001) /*!< PB[8] pin */ +#define AFIO_EXTICR3_EXTI8_PC ((uint16_t)0x0002) /*!< PC[8] pin */ +#define AFIO_EXTICR3_EXTI8_PD ((uint16_t)0x0003) /*!< PD[8] pin */ +#define AFIO_EXTICR3_EXTI8_PE ((uint16_t)0x0004) /*!< PE[8] pin */ +#define AFIO_EXTICR3_EXTI8_PF ((uint16_t)0x0005) /*!< PF[8] pin */ +#define AFIO_EXTICR3_EXTI8_PG ((uint16_t)0x0006) /*!< PG[8] pin */ + +/*!< EXTI9 configuration */ +#define AFIO_EXTICR3_EXTI9_PA ((uint16_t)0x0000) /*!< PA[9] pin */ +#define AFIO_EXTICR3_EXTI9_PB ((uint16_t)0x0010) /*!< PB[9] pin */ +#define AFIO_EXTICR3_EXTI9_PC ((uint16_t)0x0020) /*!< PC[9] pin */ +#define AFIO_EXTICR3_EXTI9_PD ((uint16_t)0x0030) /*!< PD[9] pin */ +#define AFIO_EXTICR3_EXTI9_PE ((uint16_t)0x0040) /*!< PE[9] pin */ +#define AFIO_EXTICR3_EXTI9_PF ((uint16_t)0x0050) /*!< PF[9] pin */ +#define AFIO_EXTICR3_EXTI9_PG ((uint16_t)0x0060) /*!< PG[9] pin */ + +/*!< EXTI10 configuration */ +#define AFIO_EXTICR3_EXTI10_PA ((uint16_t)0x0000) /*!< PA[10] pin */ +#define AFIO_EXTICR3_EXTI10_PB ((uint16_t)0x0100) /*!< PB[10] pin */ +#define AFIO_EXTICR3_EXTI10_PC ((uint16_t)0x0200) /*!< PC[10] pin */ +#define AFIO_EXTICR3_EXTI10_PD ((uint16_t)0x0300) /*!< PD[10] pin */ +#define AFIO_EXTICR3_EXTI10_PE ((uint16_t)0x0400) /*!< PE[10] pin */ +#define AFIO_EXTICR3_EXTI10_PF ((uint16_t)0x0500) /*!< PF[10] pin */ +#define AFIO_EXTICR3_EXTI10_PG ((uint16_t)0x0600) /*!< PG[10] pin */ + +/*!< EXTI11 configuration */ +#define AFIO_EXTICR3_EXTI11_PA ((uint16_t)0x0000) /*!< PA[11] pin */ +#define AFIO_EXTICR3_EXTI11_PB ((uint16_t)0x1000) /*!< PB[11] pin */ +#define AFIO_EXTICR3_EXTI11_PC ((uint16_t)0x2000) /*!< PC[11] pin */ +#define AFIO_EXTICR3_EXTI11_PD ((uint16_t)0x3000) /*!< PD[11] pin */ +#define AFIO_EXTICR3_EXTI11_PE ((uint16_t)0x4000) /*!< PE[11] pin */ +#define AFIO_EXTICR3_EXTI11_PF ((uint16_t)0x5000) /*!< PF[11] pin */ +#define AFIO_EXTICR3_EXTI11_PG ((uint16_t)0x6000) /*!< PG[11] pin */ + +/***************** Bit definition for AFIO_EXTICR4 register *****************/ +#define AFIO_EXTICR4_EXTI12 ((uint16_t)0x000F) /*!< EXTI 12 configuration */ +#define AFIO_EXTICR4_EXTI13 ((uint16_t)0x00F0) /*!< EXTI 13 configuration */ +#define AFIO_EXTICR4_EXTI14 ((uint16_t)0x0F00) /*!< EXTI 14 configuration */ +#define AFIO_EXTICR4_EXTI15 ((uint16_t)0xF000) /*!< EXTI 15 configuration */ + +/* EXTI12 configuration */ +#define AFIO_EXTICR4_EXTI12_PA ((uint16_t)0x0000) /*!< PA[12] pin */ +#define AFIO_EXTICR4_EXTI12_PB ((uint16_t)0x0001) /*!< PB[12] pin */ +#define AFIO_EXTICR4_EXTI12_PC ((uint16_t)0x0002) /*!< PC[12] pin */ +#define AFIO_EXTICR4_EXTI12_PD ((uint16_t)0x0003) /*!< PD[12] pin */ +#define AFIO_EXTICR4_EXTI12_PE ((uint16_t)0x0004) /*!< PE[12] pin */ +#define AFIO_EXTICR4_EXTI12_PF ((uint16_t)0x0005) /*!< PF[12] pin */ +#define AFIO_EXTICR4_EXTI12_PG ((uint16_t)0x0006) /*!< PG[12] pin */ + +/* EXTI13 configuration */ +#define AFIO_EXTICR4_EXTI13_PA ((uint16_t)0x0000) /*!< PA[13] pin */ +#define AFIO_EXTICR4_EXTI13_PB ((uint16_t)0x0010) /*!< PB[13] pin */ +#define AFIO_EXTICR4_EXTI13_PC ((uint16_t)0x0020) /*!< PC[13] pin */ +#define AFIO_EXTICR4_EXTI13_PD ((uint16_t)0x0030) /*!< PD[13] pin */ +#define AFIO_EXTICR4_EXTI13_PE ((uint16_t)0x0040) /*!< PE[13] pin */ +#define AFIO_EXTICR4_EXTI13_PF ((uint16_t)0x0050) /*!< PF[13] pin */ +#define AFIO_EXTICR4_EXTI13_PG ((uint16_t)0x0060) /*!< PG[13] pin */ + +/*!< EXTI14 configuration */ +#define AFIO_EXTICR4_EXTI14_PA ((uint16_t)0x0000) /*!< PA[14] pin */ +#define AFIO_EXTICR4_EXTI14_PB ((uint16_t)0x0100) /*!< PB[14] pin */ +#define AFIO_EXTICR4_EXTI14_PC ((uint16_t)0x0200) /*!< PC[14] pin */ +#define AFIO_EXTICR4_EXTI14_PD ((uint16_t)0x0300) /*!< PD[14] pin */ +#define AFIO_EXTICR4_EXTI14_PE ((uint16_t)0x0400) /*!< PE[14] pin */ +#define AFIO_EXTICR4_EXTI14_PF ((uint16_t)0x0500) /*!< PF[14] pin */ +#define AFIO_EXTICR4_EXTI14_PG ((uint16_t)0x0600) /*!< PG[14] pin */ + +/*!< EXTI15 configuration */ +#define AFIO_EXTICR4_EXTI15_PA ((uint16_t)0x0000) /*!< PA[15] pin */ +#define AFIO_EXTICR4_EXTI15_PB ((uint16_t)0x1000) /*!< PB[15] pin */ +#define AFIO_EXTICR4_EXTI15_PC ((uint16_t)0x2000) /*!< PC[15] pin */ +#define AFIO_EXTICR4_EXTI15_PD ((uint16_t)0x3000) /*!< PD[15] pin */ +#define AFIO_EXTICR4_EXTI15_PE ((uint16_t)0x4000) /*!< PE[15] pin */ +#define AFIO_EXTICR4_EXTI15_PF ((uint16_t)0x5000) /*!< PF[15] pin */ +#define AFIO_EXTICR4_EXTI15_PG ((uint16_t)0x6000) /*!< PG[15] pin */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +/****************** Bit definition for AFIO_MAPR2 register ******************/ +#define AFIO_MAPR2_TIM15_REMAP ((uint32_t)0x00000001) /*!< TIM15 remapping */ +#define AFIO_MAPR2_TIM16_REMAP ((uint32_t)0x00000002) /*!< TIM16 remapping */ +#define AFIO_MAPR2_TIM17_REMAP ((uint32_t)0x00000004) /*!< TIM17 remapping */ +#define AFIO_MAPR2_CEC_REMAP ((uint32_t)0x00000008) /*!< CEC remapping */ +#define AFIO_MAPR2_TIM1_DMA_REMAP ((uint32_t)0x00000010) /*!< TIM1_DMA remapping */ +#endif + +#ifdef STM32F10X_HD_VL +#define AFIO_MAPR2_TIM13_REMAP ((uint32_t)0x00000100) /*!< TIM13 remapping */ +#define AFIO_MAPR2_TIM14_REMAP ((uint32_t)0x00000200) /*!< TIM14 remapping */ +#define AFIO_MAPR2_FSMC_NADV_REMAP ((uint32_t)0x00000400) /*!< FSMC NADV remapping */ +#define AFIO_MAPR2_TIM67_DAC_DMA_REMAP ((uint32_t)0x00000800) /*!< TIM6/TIM7 and DAC DMA remapping */ +#define AFIO_MAPR2_TIM12_REMAP ((uint32_t)0x00001000) /*!< TIM12 remapping */ +#define AFIO_MAPR2_MISC_REMAP ((uint32_t)0x00002000) /*!< Miscellaneous remapping */ +#endif + +#ifdef STM32F10X_XL +/****************** Bit definition for AFIO_MAPR2 register ******************/ +#define AFIO_MAPR2_TIM9_REMAP ((uint32_t)0x00000020) /*!< TIM9 remapping */ +#define AFIO_MAPR2_TIM10_REMAP ((uint32_t)0x00000040) /*!< TIM10 remapping */ +#define AFIO_MAPR2_TIM11_REMAP ((uint32_t)0x00000080) /*!< TIM11 remapping */ +#define AFIO_MAPR2_TIM13_REMAP ((uint32_t)0x00000100) /*!< TIM13 remapping */ +#define AFIO_MAPR2_TIM14_REMAP ((uint32_t)0x00000200) /*!< TIM14 remapping */ +#define AFIO_MAPR2_FSMC_NADV_REMAP ((uint32_t)0x00000400) /*!< FSMC NADV remapping */ +#endif + +/******************************************************************************/ +/* */ +/* SystemTick */ +/* */ +/******************************************************************************/ + +/***************** Bit definition for SysTick_CTRL register *****************/ +#define SysTick_CTRL_ENABLE ((uint32_t)0x00000001) /*!< Counter enable */ +#define SysTick_CTRL_TICKINT ((uint32_t)0x00000002) /*!< Counting down to 0 pends the SysTick handler */ +#define SysTick_CTRL_CLKSOURCE ((uint32_t)0x00000004) /*!< Clock source */ +#define SysTick_CTRL_COUNTFLAG ((uint32_t)0x00010000) /*!< Count Flag */ + +/***************** Bit definition for SysTick_LOAD register *****************/ +#define SysTick_LOAD_RELOAD ((uint32_t)0x00FFFFFF) /*!< Value to load into the SysTick Current Value Register when the counter reaches 0 */ + +/***************** Bit definition for SysTick_VAL register ******************/ +#define SysTick_VAL_CURRENT ((uint32_t)0x00FFFFFF) /*!< Current value at the time the register is accessed */ + +/***************** Bit definition for SysTick_CALIB register ****************/ +#define SysTick_CALIB_TENMS ((uint32_t)0x00FFFFFF) /*!< Reload value to use for 10ms timing */ +#define SysTick_CALIB_SKEW ((uint32_t)0x40000000) /*!< Calibration value is not exactly 10 ms */ +#define SysTick_CALIB_NOREF ((uint32_t)0x80000000) /*!< The reference clock is not provided */ + +/******************************************************************************/ +/* */ +/* Nested Vectored Interrupt Controller */ +/* */ +/******************************************************************************/ + +/****************** Bit definition for NVIC_ISER register *******************/ +#define NVIC_ISER_SETENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt set enable bits */ +#define NVIC_ISER_SETENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_ISER_SETENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_ISER_SETENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_ISER_SETENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_ISER_SETENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_ISER_SETENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_ISER_SETENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_ISER_SETENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_ISER_SETENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_ISER_SETENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_ISER_SETENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_ISER_SETENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_ISER_SETENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_ISER_SETENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_ISER_SETENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_ISER_SETENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_ISER_SETENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_ISER_SETENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_ISER_SETENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_ISER_SETENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_ISER_SETENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_ISER_SETENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_ISER_SETENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_ISER_SETENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_ISER_SETENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_ISER_SETENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_ISER_SETENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_ISER_SETENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_ISER_SETENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_ISER_SETENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_ISER_SETENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_ISER_SETENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_ICER register *******************/ +#define NVIC_ICER_CLRENA ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-enable bits */ +#define NVIC_ICER_CLRENA_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_ICER_CLRENA_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_ICER_CLRENA_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_ICER_CLRENA_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_ICER_CLRENA_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_ICER_CLRENA_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_ICER_CLRENA_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_ICER_CLRENA_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_ICER_CLRENA_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_ICER_CLRENA_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_ICER_CLRENA_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_ICER_CLRENA_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_ICER_CLRENA_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_ICER_CLRENA_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_ICER_CLRENA_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_ICER_CLRENA_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_ICER_CLRENA_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_ICER_CLRENA_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_ICER_CLRENA_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_ICER_CLRENA_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_ICER_CLRENA_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_ICER_CLRENA_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_ICER_CLRENA_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_ICER_CLRENA_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_ICER_CLRENA_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_ICER_CLRENA_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_ICER_CLRENA_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_ICER_CLRENA_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_ICER_CLRENA_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_ICER_CLRENA_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_ICER_CLRENA_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_ICER_CLRENA_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_ISPR register *******************/ +#define NVIC_ISPR_SETPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt set-pending bits */ +#define NVIC_ISPR_SETPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_ISPR_SETPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_ISPR_SETPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_ISPR_SETPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_ISPR_SETPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_ISPR_SETPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_ISPR_SETPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_ISPR_SETPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_ISPR_SETPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_ISPR_SETPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_ISPR_SETPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_ISPR_SETPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_ISPR_SETPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_ISPR_SETPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_ISPR_SETPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_ISPR_SETPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_ISPR_SETPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_ISPR_SETPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_ISPR_SETPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_ISPR_SETPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_ISPR_SETPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_ISPR_SETPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_ISPR_SETPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_ISPR_SETPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_ISPR_SETPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_ISPR_SETPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_ISPR_SETPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_ISPR_SETPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_ISPR_SETPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_ISPR_SETPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_ISPR_SETPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_ISPR_SETPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_ICPR register *******************/ +#define NVIC_ICPR_CLRPEND ((uint32_t)0xFFFFFFFF) /*!< Interrupt clear-pending bits */ +#define NVIC_ICPR_CLRPEND_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_ICPR_CLRPEND_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_ICPR_CLRPEND_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_ICPR_CLRPEND_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_ICPR_CLRPEND_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_ICPR_CLRPEND_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_ICPR_CLRPEND_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_ICPR_CLRPEND_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_ICPR_CLRPEND_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_ICPR_CLRPEND_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_ICPR_CLRPEND_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_ICPR_CLRPEND_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_ICPR_CLRPEND_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_ICPR_CLRPEND_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_ICPR_CLRPEND_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_ICPR_CLRPEND_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_ICPR_CLRPEND_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_ICPR_CLRPEND_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_ICPR_CLRPEND_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_ICPR_CLRPEND_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_ICPR_CLRPEND_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_ICPR_CLRPEND_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_ICPR_CLRPEND_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_ICPR_CLRPEND_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_ICPR_CLRPEND_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_ICPR_CLRPEND_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_ICPR_CLRPEND_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_ICPR_CLRPEND_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_ICPR_CLRPEND_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_ICPR_CLRPEND_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_ICPR_CLRPEND_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_ICPR_CLRPEND_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_IABR register *******************/ +#define NVIC_IABR_ACTIVE ((uint32_t)0xFFFFFFFF) /*!< Interrupt active flags */ +#define NVIC_IABR_ACTIVE_0 ((uint32_t)0x00000001) /*!< bit 0 */ +#define NVIC_IABR_ACTIVE_1 ((uint32_t)0x00000002) /*!< bit 1 */ +#define NVIC_IABR_ACTIVE_2 ((uint32_t)0x00000004) /*!< bit 2 */ +#define NVIC_IABR_ACTIVE_3 ((uint32_t)0x00000008) /*!< bit 3 */ +#define NVIC_IABR_ACTIVE_4 ((uint32_t)0x00000010) /*!< bit 4 */ +#define NVIC_IABR_ACTIVE_5 ((uint32_t)0x00000020) /*!< bit 5 */ +#define NVIC_IABR_ACTIVE_6 ((uint32_t)0x00000040) /*!< bit 6 */ +#define NVIC_IABR_ACTIVE_7 ((uint32_t)0x00000080) /*!< bit 7 */ +#define NVIC_IABR_ACTIVE_8 ((uint32_t)0x00000100) /*!< bit 8 */ +#define NVIC_IABR_ACTIVE_9 ((uint32_t)0x00000200) /*!< bit 9 */ +#define NVIC_IABR_ACTIVE_10 ((uint32_t)0x00000400) /*!< bit 10 */ +#define NVIC_IABR_ACTIVE_11 ((uint32_t)0x00000800) /*!< bit 11 */ +#define NVIC_IABR_ACTIVE_12 ((uint32_t)0x00001000) /*!< bit 12 */ +#define NVIC_IABR_ACTIVE_13 ((uint32_t)0x00002000) /*!< bit 13 */ +#define NVIC_IABR_ACTIVE_14 ((uint32_t)0x00004000) /*!< bit 14 */ +#define NVIC_IABR_ACTIVE_15 ((uint32_t)0x00008000) /*!< bit 15 */ +#define NVIC_IABR_ACTIVE_16 ((uint32_t)0x00010000) /*!< bit 16 */ +#define NVIC_IABR_ACTIVE_17 ((uint32_t)0x00020000) /*!< bit 17 */ +#define NVIC_IABR_ACTIVE_18 ((uint32_t)0x00040000) /*!< bit 18 */ +#define NVIC_IABR_ACTIVE_19 ((uint32_t)0x00080000) /*!< bit 19 */ +#define NVIC_IABR_ACTIVE_20 ((uint32_t)0x00100000) /*!< bit 20 */ +#define NVIC_IABR_ACTIVE_21 ((uint32_t)0x00200000) /*!< bit 21 */ +#define NVIC_IABR_ACTIVE_22 ((uint32_t)0x00400000) /*!< bit 22 */ +#define NVIC_IABR_ACTIVE_23 ((uint32_t)0x00800000) /*!< bit 23 */ +#define NVIC_IABR_ACTIVE_24 ((uint32_t)0x01000000) /*!< bit 24 */ +#define NVIC_IABR_ACTIVE_25 ((uint32_t)0x02000000) /*!< bit 25 */ +#define NVIC_IABR_ACTIVE_26 ((uint32_t)0x04000000) /*!< bit 26 */ +#define NVIC_IABR_ACTIVE_27 ((uint32_t)0x08000000) /*!< bit 27 */ +#define NVIC_IABR_ACTIVE_28 ((uint32_t)0x10000000) /*!< bit 28 */ +#define NVIC_IABR_ACTIVE_29 ((uint32_t)0x20000000) /*!< bit 29 */ +#define NVIC_IABR_ACTIVE_30 ((uint32_t)0x40000000) /*!< bit 30 */ +#define NVIC_IABR_ACTIVE_31 ((uint32_t)0x80000000) /*!< bit 31 */ + +/****************** Bit definition for NVIC_PRI0 register *******************/ +#define NVIC_IPR0_PRI_0 ((uint32_t)0x000000FF) /*!< Priority of interrupt 0 */ +#define NVIC_IPR0_PRI_1 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 1 */ +#define NVIC_IPR0_PRI_2 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 2 */ +#define NVIC_IPR0_PRI_3 ((uint32_t)0xFF000000) /*!< Priority of interrupt 3 */ + +/****************** Bit definition for NVIC_PRI1 register *******************/ +#define NVIC_IPR1_PRI_4 ((uint32_t)0x000000FF) /*!< Priority of interrupt 4 */ +#define NVIC_IPR1_PRI_5 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 5 */ +#define NVIC_IPR1_PRI_6 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 6 */ +#define NVIC_IPR1_PRI_7 ((uint32_t)0xFF000000) /*!< Priority of interrupt 7 */ + +/****************** Bit definition for NVIC_PRI2 register *******************/ +#define NVIC_IPR2_PRI_8 ((uint32_t)0x000000FF) /*!< Priority of interrupt 8 */ +#define NVIC_IPR2_PRI_9 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 9 */ +#define NVIC_IPR2_PRI_10 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 10 */ +#define NVIC_IPR2_PRI_11 ((uint32_t)0xFF000000) /*!< Priority of interrupt 11 */ + +/****************** Bit definition for NVIC_PRI3 register *******************/ +#define NVIC_IPR3_PRI_12 ((uint32_t)0x000000FF) /*!< Priority of interrupt 12 */ +#define NVIC_IPR3_PRI_13 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 13 */ +#define NVIC_IPR3_PRI_14 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 14 */ +#define NVIC_IPR3_PRI_15 ((uint32_t)0xFF000000) /*!< Priority of interrupt 15 */ + +/****************** Bit definition for NVIC_PRI4 register *******************/ +#define NVIC_IPR4_PRI_16 ((uint32_t)0x000000FF) /*!< Priority of interrupt 16 */ +#define NVIC_IPR4_PRI_17 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 17 */ +#define NVIC_IPR4_PRI_18 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 18 */ +#define NVIC_IPR4_PRI_19 ((uint32_t)0xFF000000) /*!< Priority of interrupt 19 */ + +/****************** Bit definition for NVIC_PRI5 register *******************/ +#define NVIC_IPR5_PRI_20 ((uint32_t)0x000000FF) /*!< Priority of interrupt 20 */ +#define NVIC_IPR5_PRI_21 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 21 */ +#define NVIC_IPR5_PRI_22 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 22 */ +#define NVIC_IPR5_PRI_23 ((uint32_t)0xFF000000) /*!< Priority of interrupt 23 */ + +/****************** Bit definition for NVIC_PRI6 register *******************/ +#define NVIC_IPR6_PRI_24 ((uint32_t)0x000000FF) /*!< Priority of interrupt 24 */ +#define NVIC_IPR6_PRI_25 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 25 */ +#define NVIC_IPR6_PRI_26 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 26 */ +#define NVIC_IPR6_PRI_27 ((uint32_t)0xFF000000) /*!< Priority of interrupt 27 */ + +/****************** Bit definition for NVIC_PRI7 register *******************/ +#define NVIC_IPR7_PRI_28 ((uint32_t)0x000000FF) /*!< Priority of interrupt 28 */ +#define NVIC_IPR7_PRI_29 ((uint32_t)0x0000FF00) /*!< Priority of interrupt 29 */ +#define NVIC_IPR7_PRI_30 ((uint32_t)0x00FF0000) /*!< Priority of interrupt 30 */ +#define NVIC_IPR7_PRI_31 ((uint32_t)0xFF000000) /*!< Priority of interrupt 31 */ + +/****************** Bit definition for SCB_CPUID register *******************/ +#define SCB_CPUID_REVISION ((uint32_t)0x0000000F) /*!< Implementation defined revision number */ +#define SCB_CPUID_PARTNO ((uint32_t)0x0000FFF0) /*!< Number of processor within family */ +#define SCB_CPUID_Constant ((uint32_t)0x000F0000) /*!< Reads as 0x0F */ +#define SCB_CPUID_VARIANT ((uint32_t)0x00F00000) /*!< Implementation defined variant number */ +#define SCB_CPUID_IMPLEMENTER ((uint32_t)0xFF000000) /*!< Implementer code. ARM is 0x41 */ + +/******************* Bit definition for SCB_ICSR register *******************/ +#define SCB_ICSR_VECTACTIVE ((uint32_t)0x000001FF) /*!< Active ISR number field */ +#define SCB_ICSR_RETTOBASE ((uint32_t)0x00000800) /*!< All active exceptions minus the IPSR_current_exception yields the empty set */ +#define SCB_ICSR_VECTPENDING ((uint32_t)0x003FF000) /*!< Pending ISR number field */ +#define SCB_ICSR_ISRPENDING ((uint32_t)0x00400000) /*!< Interrupt pending flag */ +#define SCB_ICSR_ISRPREEMPT ((uint32_t)0x00800000) /*!< It indicates that a pending interrupt becomes active in the next running cycle */ +#define SCB_ICSR_PENDSTCLR ((uint32_t)0x02000000) /*!< Clear pending SysTick bit */ +#define SCB_ICSR_PENDSTSET ((uint32_t)0x04000000) /*!< Set pending SysTick bit */ +#define SCB_ICSR_PENDSVCLR ((uint32_t)0x08000000) /*!< Clear pending pendSV bit */ +#define SCB_ICSR_PENDSVSET ((uint32_t)0x10000000) /*!< Set pending pendSV bit */ +#define SCB_ICSR_NMIPENDSET ((uint32_t)0x80000000) /*!< Set pending NMI bit */ + +/******************* Bit definition for SCB_VTOR register *******************/ +#define SCB_VTOR_TBLOFF ((uint32_t)0x1FFFFF80) /*!< Vector table base offset field */ +#define SCB_VTOR_TBLBASE ((uint32_t)0x20000000) /*!< Table base in code(0) or RAM(1) */ + +/*!<***************** Bit definition for SCB_AIRCR register *******************/ +#define SCB_AIRCR_VECTRESET ((uint32_t)0x00000001) /*!< System Reset bit */ +#define SCB_AIRCR_VECTCLRACTIVE ((uint32_t)0x00000002) /*!< Clear active vector bit */ +#define SCB_AIRCR_SYSRESETREQ ((uint32_t)0x00000004) /*!< Requests chip control logic to generate a reset */ + +#define SCB_AIRCR_PRIGROUP ((uint32_t)0x00000700) /*!< PRIGROUP[2:0] bits (Priority group) */ +#define SCB_AIRCR_PRIGROUP_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define SCB_AIRCR_PRIGROUP_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define SCB_AIRCR_PRIGROUP_2 ((uint32_t)0x00000400) /*!< Bit 2 */ + +/* prority group configuration */ +#define SCB_AIRCR_PRIGROUP0 ((uint32_t)0x00000000) /*!< Priority group=0 (7 bits of pre-emption priority, 1 bit of subpriority) */ +#define SCB_AIRCR_PRIGROUP1 ((uint32_t)0x00000100) /*!< Priority group=1 (6 bits of pre-emption priority, 2 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP2 ((uint32_t)0x00000200) /*!< Priority group=2 (5 bits of pre-emption priority, 3 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP3 ((uint32_t)0x00000300) /*!< Priority group=3 (4 bits of pre-emption priority, 4 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP4 ((uint32_t)0x00000400) /*!< Priority group=4 (3 bits of pre-emption priority, 5 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP5 ((uint32_t)0x00000500) /*!< Priority group=5 (2 bits of pre-emption priority, 6 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP6 ((uint32_t)0x00000600) /*!< Priority group=6 (1 bit of pre-emption priority, 7 bits of subpriority) */ +#define SCB_AIRCR_PRIGROUP7 ((uint32_t)0x00000700) /*!< Priority group=7 (no pre-emption priority, 8 bits of subpriority) */ + +#define SCB_AIRCR_ENDIANESS ((uint32_t)0x00008000) /*!< Data endianness bit */ +#define SCB_AIRCR_VECTKEY ((uint32_t)0xFFFF0000) /*!< Register key (VECTKEY) - Reads as 0xFA05 (VECTKEYSTAT) */ + +/******************* Bit definition for SCB_SCR register ********************/ +#define SCB_SCR_SLEEPONEXIT ((uint8_t)0x02) /*!< Sleep on exit bit */ +#define SCB_SCR_SLEEPDEEP ((uint8_t)0x04) /*!< Sleep deep bit */ +#define SCB_SCR_SEVONPEND ((uint8_t)0x10) /*!< Wake up from WFE */ + +/******************** Bit definition for SCB_CCR register *******************/ +#define SCB_CCR_NONBASETHRDENA ((uint16_t)0x0001) /*!< Thread mode can be entered from any level in Handler mode by controlled return value */ +#define SCB_CCR_USERSETMPEND ((uint16_t)0x0002) /*!< Enables user code to write the Software Trigger Interrupt register to trigger (pend) a Main exception */ +#define SCB_CCR_UNALIGN_TRP ((uint16_t)0x0008) /*!< Trap for unaligned access */ +#define SCB_CCR_DIV_0_TRP ((uint16_t)0x0010) /*!< Trap on Divide by 0 */ +#define SCB_CCR_BFHFNMIGN ((uint16_t)0x0100) /*!< Handlers running at priority -1 and -2 */ +#define SCB_CCR_STKALIGN ((uint16_t)0x0200) /*!< On exception entry, the SP used prior to the exception is adjusted to be 8-byte aligned */ + +/******************* Bit definition for SCB_SHPR register ********************/ +#define SCB_SHPR_PRI_N ((uint32_t)0x000000FF) /*!< Priority of system handler 4,8, and 12. Mem Manage, reserved and Debug Monitor */ +#define SCB_SHPR_PRI_N1 ((uint32_t)0x0000FF00) /*!< Priority of system handler 5,9, and 13. Bus Fault, reserved and reserved */ +#define SCB_SHPR_PRI_N2 ((uint32_t)0x00FF0000) /*!< Priority of system handler 6,10, and 14. Usage Fault, reserved and PendSV */ +#define SCB_SHPR_PRI_N3 ((uint32_t)0xFF000000) /*!< Priority of system handler 7,11, and 15. Reserved, SVCall and SysTick */ + +/****************** Bit definition for SCB_SHCSR register *******************/ +#define SCB_SHCSR_MEMFAULTACT ((uint32_t)0x00000001) /*!< MemManage is active */ +#define SCB_SHCSR_BUSFAULTACT ((uint32_t)0x00000002) /*!< BusFault is active */ +#define SCB_SHCSR_USGFAULTACT ((uint32_t)0x00000008) /*!< UsageFault is active */ +#define SCB_SHCSR_SVCALLACT ((uint32_t)0x00000080) /*!< SVCall is active */ +#define SCB_SHCSR_MONITORACT ((uint32_t)0x00000100) /*!< Monitor is active */ +#define SCB_SHCSR_PENDSVACT ((uint32_t)0x00000400) /*!< PendSV is active */ +#define SCB_SHCSR_SYSTICKACT ((uint32_t)0x00000800) /*!< SysTick is active */ +#define SCB_SHCSR_USGFAULTPENDED ((uint32_t)0x00001000) /*!< Usage Fault is pended */ +#define SCB_SHCSR_MEMFAULTPENDED ((uint32_t)0x00002000) /*!< MemManage is pended */ +#define SCB_SHCSR_BUSFAULTPENDED ((uint32_t)0x00004000) /*!< Bus Fault is pended */ +#define SCB_SHCSR_SVCALLPENDED ((uint32_t)0x00008000) /*!< SVCall is pended */ +#define SCB_SHCSR_MEMFAULTENA ((uint32_t)0x00010000) /*!< MemManage enable */ +#define SCB_SHCSR_BUSFAULTENA ((uint32_t)0x00020000) /*!< Bus Fault enable */ +#define SCB_SHCSR_USGFAULTENA ((uint32_t)0x00040000) /*!< UsageFault enable */ + +/******************* Bit definition for SCB_CFSR register *******************/ +/*!< MFSR */ +#define SCB_CFSR_IACCVIOL ((uint32_t)0x00000001) /*!< Instruction access violation */ +#define SCB_CFSR_DACCVIOL ((uint32_t)0x00000002) /*!< Data access violation */ +#define SCB_CFSR_MUNSTKERR ((uint32_t)0x00000008) /*!< Unstacking error */ +#define SCB_CFSR_MSTKERR ((uint32_t)0x00000010) /*!< Stacking error */ +#define SCB_CFSR_MMARVALID ((uint32_t)0x00000080) /*!< Memory Manage Address Register address valid flag */ +/*!< BFSR */ +#define SCB_CFSR_IBUSERR ((uint32_t)0x00000100) /*!< Instruction bus error flag */ +#define SCB_CFSR_PRECISERR ((uint32_t)0x00000200) /*!< Precise data bus error */ +#define SCB_CFSR_IMPRECISERR ((uint32_t)0x00000400) /*!< Imprecise data bus error */ +#define SCB_CFSR_UNSTKERR ((uint32_t)0x00000800) /*!< Unstacking error */ +#define SCB_CFSR_STKERR ((uint32_t)0x00001000) /*!< Stacking error */ +#define SCB_CFSR_BFARVALID ((uint32_t)0x00008000) /*!< Bus Fault Address Register address valid flag */ +/*!< UFSR */ +#define SCB_CFSR_UNDEFINSTR ((uint32_t)0x00010000) /*!< The processor attempt to execute an undefined instruction */ +#define SCB_CFSR_INVSTATE ((uint32_t)0x00020000) /*!< Invalid combination of EPSR and instruction */ +#define SCB_CFSR_INVPC ((uint32_t)0x00040000) /*!< Attempt to load EXC_RETURN into pc illegally */ +#define SCB_CFSR_NOCP ((uint32_t)0x00080000) /*!< Attempt to use a coprocessor instruction */ +#define SCB_CFSR_UNALIGNED ((uint32_t)0x01000000) /*!< Fault occurs when there is an attempt to make an unaligned memory access */ +#define SCB_CFSR_DIVBYZERO ((uint32_t)0x02000000) /*!< Fault occurs when SDIV or DIV instruction is used with a divisor of 0 */ + +/******************* Bit definition for SCB_HFSR register *******************/ +#define SCB_HFSR_VECTTBL ((uint32_t)0x00000002) /*!< Fault occurs because of vector table read on exception processing */ +#define SCB_HFSR_FORCED ((uint32_t)0x40000000) /*!< Hard Fault activated when a configurable Fault was received and cannot activate */ +#define SCB_HFSR_DEBUGEVT ((uint32_t)0x80000000) /*!< Fault related to debug */ + +/******************* Bit definition for SCB_DFSR register *******************/ +#define SCB_DFSR_HALTED ((uint8_t)0x01) /*!< Halt request flag */ +#define SCB_DFSR_BKPT ((uint8_t)0x02) /*!< BKPT flag */ +#define SCB_DFSR_DWTTRAP ((uint8_t)0x04) /*!< Data Watchpoint and Trace (DWT) flag */ +#define SCB_DFSR_VCATCH ((uint8_t)0x08) /*!< Vector catch flag */ +#define SCB_DFSR_EXTERNAL ((uint8_t)0x10) /*!< External debug request flag */ + +/******************* Bit definition for SCB_MMFAR register ******************/ +#define SCB_MMFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Mem Manage fault address field */ + +/******************* Bit definition for SCB_BFAR register *******************/ +#define SCB_BFAR_ADDRESS ((uint32_t)0xFFFFFFFF) /*!< Bus fault address field */ + +/******************* Bit definition for SCB_afsr register *******************/ +#define SCB_AFSR_IMPDEF ((uint32_t)0xFFFFFFFF) /*!< Implementation defined */ + +/******************************************************************************/ +/* */ +/* External Interrupt/Event Controller */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for EXTI_IMR register *******************/ +#define EXTI_IMR_MR0 ((uint32_t)0x00000001) /*!< Interrupt Mask on line 0 */ +#define EXTI_IMR_MR1 ((uint32_t)0x00000002) /*!< Interrupt Mask on line 1 */ +#define EXTI_IMR_MR2 ((uint32_t)0x00000004) /*!< Interrupt Mask on line 2 */ +#define EXTI_IMR_MR3 ((uint32_t)0x00000008) /*!< Interrupt Mask on line 3 */ +#define EXTI_IMR_MR4 ((uint32_t)0x00000010) /*!< Interrupt Mask on line 4 */ +#define EXTI_IMR_MR5 ((uint32_t)0x00000020) /*!< Interrupt Mask on line 5 */ +#define EXTI_IMR_MR6 ((uint32_t)0x00000040) /*!< Interrupt Mask on line 6 */ +#define EXTI_IMR_MR7 ((uint32_t)0x00000080) /*!< Interrupt Mask on line 7 */ +#define EXTI_IMR_MR8 ((uint32_t)0x00000100) /*!< Interrupt Mask on line 8 */ +#define EXTI_IMR_MR9 ((uint32_t)0x00000200) /*!< Interrupt Mask on line 9 */ +#define EXTI_IMR_MR10 ((uint32_t)0x00000400) /*!< Interrupt Mask on line 10 */ +#define EXTI_IMR_MR11 ((uint32_t)0x00000800) /*!< Interrupt Mask on line 11 */ +#define EXTI_IMR_MR12 ((uint32_t)0x00001000) /*!< Interrupt Mask on line 12 */ +#define EXTI_IMR_MR13 ((uint32_t)0x00002000) /*!< Interrupt Mask on line 13 */ +#define EXTI_IMR_MR14 ((uint32_t)0x00004000) /*!< Interrupt Mask on line 14 */ +#define EXTI_IMR_MR15 ((uint32_t)0x00008000) /*!< Interrupt Mask on line 15 */ +#define EXTI_IMR_MR16 ((uint32_t)0x00010000) /*!< Interrupt Mask on line 16 */ +#define EXTI_IMR_MR17 ((uint32_t)0x00020000) /*!< Interrupt Mask on line 17 */ +#define EXTI_IMR_MR18 ((uint32_t)0x00040000) /*!< Interrupt Mask on line 18 */ +#define EXTI_IMR_MR19 ((uint32_t)0x00080000) /*!< Interrupt Mask on line 19 */ + +/******************* Bit definition for EXTI_EMR register *******************/ +#define EXTI_EMR_MR0 ((uint32_t)0x00000001) /*!< Event Mask on line 0 */ +#define EXTI_EMR_MR1 ((uint32_t)0x00000002) /*!< Event Mask on line 1 */ +#define EXTI_EMR_MR2 ((uint32_t)0x00000004) /*!< Event Mask on line 2 */ +#define EXTI_EMR_MR3 ((uint32_t)0x00000008) /*!< Event Mask on line 3 */ +#define EXTI_EMR_MR4 ((uint32_t)0x00000010) /*!< Event Mask on line 4 */ +#define EXTI_EMR_MR5 ((uint32_t)0x00000020) /*!< Event Mask on line 5 */ +#define EXTI_EMR_MR6 ((uint32_t)0x00000040) /*!< Event Mask on line 6 */ +#define EXTI_EMR_MR7 ((uint32_t)0x00000080) /*!< Event Mask on line 7 */ +#define EXTI_EMR_MR8 ((uint32_t)0x00000100) /*!< Event Mask on line 8 */ +#define EXTI_EMR_MR9 ((uint32_t)0x00000200) /*!< Event Mask on line 9 */ +#define EXTI_EMR_MR10 ((uint32_t)0x00000400) /*!< Event Mask on line 10 */ +#define EXTI_EMR_MR11 ((uint32_t)0x00000800) /*!< Event Mask on line 11 */ +#define EXTI_EMR_MR12 ((uint32_t)0x00001000) /*!< Event Mask on line 12 */ +#define EXTI_EMR_MR13 ((uint32_t)0x00002000) /*!< Event Mask on line 13 */ +#define EXTI_EMR_MR14 ((uint32_t)0x00004000) /*!< Event Mask on line 14 */ +#define EXTI_EMR_MR15 ((uint32_t)0x00008000) /*!< Event Mask on line 15 */ +#define EXTI_EMR_MR16 ((uint32_t)0x00010000) /*!< Event Mask on line 16 */ +#define EXTI_EMR_MR17 ((uint32_t)0x00020000) /*!< Event Mask on line 17 */ +#define EXTI_EMR_MR18 ((uint32_t)0x00040000) /*!< Event Mask on line 18 */ +#define EXTI_EMR_MR19 ((uint32_t)0x00080000) /*!< Event Mask on line 19 */ + +/****************** Bit definition for EXTI_RTSR register *******************/ +#define EXTI_RTSR_TR0 ((uint32_t)0x00000001) /*!< Rising trigger event configuration bit of line 0 */ +#define EXTI_RTSR_TR1 ((uint32_t)0x00000002) /*!< Rising trigger event configuration bit of line 1 */ +#define EXTI_RTSR_TR2 ((uint32_t)0x00000004) /*!< Rising trigger event configuration bit of line 2 */ +#define EXTI_RTSR_TR3 ((uint32_t)0x00000008) /*!< Rising trigger event configuration bit of line 3 */ +#define EXTI_RTSR_TR4 ((uint32_t)0x00000010) /*!< Rising trigger event configuration bit of line 4 */ +#define EXTI_RTSR_TR5 ((uint32_t)0x00000020) /*!< Rising trigger event configuration bit of line 5 */ +#define EXTI_RTSR_TR6 ((uint32_t)0x00000040) /*!< Rising trigger event configuration bit of line 6 */ +#define EXTI_RTSR_TR7 ((uint32_t)0x00000080) /*!< Rising trigger event configuration bit of line 7 */ +#define EXTI_RTSR_TR8 ((uint32_t)0x00000100) /*!< Rising trigger event configuration bit of line 8 */ +#define EXTI_RTSR_TR9 ((uint32_t)0x00000200) /*!< Rising trigger event configuration bit of line 9 */ +#define EXTI_RTSR_TR10 ((uint32_t)0x00000400) /*!< Rising trigger event configuration bit of line 10 */ +#define EXTI_RTSR_TR11 ((uint32_t)0x00000800) /*!< Rising trigger event configuration bit of line 11 */ +#define EXTI_RTSR_TR12 ((uint32_t)0x00001000) /*!< Rising trigger event configuration bit of line 12 */ +#define EXTI_RTSR_TR13 ((uint32_t)0x00002000) /*!< Rising trigger event configuration bit of line 13 */ +#define EXTI_RTSR_TR14 ((uint32_t)0x00004000) /*!< Rising trigger event configuration bit of line 14 */ +#define EXTI_RTSR_TR15 ((uint32_t)0x00008000) /*!< Rising trigger event configuration bit of line 15 */ +#define EXTI_RTSR_TR16 ((uint32_t)0x00010000) /*!< Rising trigger event configuration bit of line 16 */ +#define EXTI_RTSR_TR17 ((uint32_t)0x00020000) /*!< Rising trigger event configuration bit of line 17 */ +#define EXTI_RTSR_TR18 ((uint32_t)0x00040000) /*!< Rising trigger event configuration bit of line 18 */ +#define EXTI_RTSR_TR19 ((uint32_t)0x00080000) /*!< Rising trigger event configuration bit of line 19 */ + +/****************** Bit definition for EXTI_FTSR register *******************/ +#define EXTI_FTSR_TR0 ((uint32_t)0x00000001) /*!< Falling trigger event configuration bit of line 0 */ +#define EXTI_FTSR_TR1 ((uint32_t)0x00000002) /*!< Falling trigger event configuration bit of line 1 */ +#define EXTI_FTSR_TR2 ((uint32_t)0x00000004) /*!< Falling trigger event configuration bit of line 2 */ +#define EXTI_FTSR_TR3 ((uint32_t)0x00000008) /*!< Falling trigger event configuration bit of line 3 */ +#define EXTI_FTSR_TR4 ((uint32_t)0x00000010) /*!< Falling trigger event configuration bit of line 4 */ +#define EXTI_FTSR_TR5 ((uint32_t)0x00000020) /*!< Falling trigger event configuration bit of line 5 */ +#define EXTI_FTSR_TR6 ((uint32_t)0x00000040) /*!< Falling trigger event configuration bit of line 6 */ +#define EXTI_FTSR_TR7 ((uint32_t)0x00000080) /*!< Falling trigger event configuration bit of line 7 */ +#define EXTI_FTSR_TR8 ((uint32_t)0x00000100) /*!< Falling trigger event configuration bit of line 8 */ +#define EXTI_FTSR_TR9 ((uint32_t)0x00000200) /*!< Falling trigger event configuration bit of line 9 */ +#define EXTI_FTSR_TR10 ((uint32_t)0x00000400) /*!< Falling trigger event configuration bit of line 10 */ +#define EXTI_FTSR_TR11 ((uint32_t)0x00000800) /*!< Falling trigger event configuration bit of line 11 */ +#define EXTI_FTSR_TR12 ((uint32_t)0x00001000) /*!< Falling trigger event configuration bit of line 12 */ +#define EXTI_FTSR_TR13 ((uint32_t)0x00002000) /*!< Falling trigger event configuration bit of line 13 */ +#define EXTI_FTSR_TR14 ((uint32_t)0x00004000) /*!< Falling trigger event configuration bit of line 14 */ +#define EXTI_FTSR_TR15 ((uint32_t)0x00008000) /*!< Falling trigger event configuration bit of line 15 */ +#define EXTI_FTSR_TR16 ((uint32_t)0x00010000) /*!< Falling trigger event configuration bit of line 16 */ +#define EXTI_FTSR_TR17 ((uint32_t)0x00020000) /*!< Falling trigger event configuration bit of line 17 */ +#define EXTI_FTSR_TR18 ((uint32_t)0x00040000) /*!< Falling trigger event configuration bit of line 18 */ +#define EXTI_FTSR_TR19 ((uint32_t)0x00080000) /*!< Falling trigger event configuration bit of line 19 */ + +/****************** Bit definition for EXTI_SWIER register ******************/ +#define EXTI_SWIER_SWIER0 ((uint32_t)0x00000001) /*!< Software Interrupt on line 0 */ +#define EXTI_SWIER_SWIER1 ((uint32_t)0x00000002) /*!< Software Interrupt on line 1 */ +#define EXTI_SWIER_SWIER2 ((uint32_t)0x00000004) /*!< Software Interrupt on line 2 */ +#define EXTI_SWIER_SWIER3 ((uint32_t)0x00000008) /*!< Software Interrupt on line 3 */ +#define EXTI_SWIER_SWIER4 ((uint32_t)0x00000010) /*!< Software Interrupt on line 4 */ +#define EXTI_SWIER_SWIER5 ((uint32_t)0x00000020) /*!< Software Interrupt on line 5 */ +#define EXTI_SWIER_SWIER6 ((uint32_t)0x00000040) /*!< Software Interrupt on line 6 */ +#define EXTI_SWIER_SWIER7 ((uint32_t)0x00000080) /*!< Software Interrupt on line 7 */ +#define EXTI_SWIER_SWIER8 ((uint32_t)0x00000100) /*!< Software Interrupt on line 8 */ +#define EXTI_SWIER_SWIER9 ((uint32_t)0x00000200) /*!< Software Interrupt on line 9 */ +#define EXTI_SWIER_SWIER10 ((uint32_t)0x00000400) /*!< Software Interrupt on line 10 */ +#define EXTI_SWIER_SWIER11 ((uint32_t)0x00000800) /*!< Software Interrupt on line 11 */ +#define EXTI_SWIER_SWIER12 ((uint32_t)0x00001000) /*!< Software Interrupt on line 12 */ +#define EXTI_SWIER_SWIER13 ((uint32_t)0x00002000) /*!< Software Interrupt on line 13 */ +#define EXTI_SWIER_SWIER14 ((uint32_t)0x00004000) /*!< Software Interrupt on line 14 */ +#define EXTI_SWIER_SWIER15 ((uint32_t)0x00008000) /*!< Software Interrupt on line 15 */ +#define EXTI_SWIER_SWIER16 ((uint32_t)0x00010000) /*!< Software Interrupt on line 16 */ +#define EXTI_SWIER_SWIER17 ((uint32_t)0x00020000) /*!< Software Interrupt on line 17 */ +#define EXTI_SWIER_SWIER18 ((uint32_t)0x00040000) /*!< Software Interrupt on line 18 */ +#define EXTI_SWIER_SWIER19 ((uint32_t)0x00080000) /*!< Software Interrupt on line 19 */ + +/******************* Bit definition for EXTI_PR register ********************/ +#define EXTI_PR_PR0 ((uint32_t)0x00000001) /*!< Pending bit for line 0 */ +#define EXTI_PR_PR1 ((uint32_t)0x00000002) /*!< Pending bit for line 1 */ +#define EXTI_PR_PR2 ((uint32_t)0x00000004) /*!< Pending bit for line 2 */ +#define EXTI_PR_PR3 ((uint32_t)0x00000008) /*!< Pending bit for line 3 */ +#define EXTI_PR_PR4 ((uint32_t)0x00000010) /*!< Pending bit for line 4 */ +#define EXTI_PR_PR5 ((uint32_t)0x00000020) /*!< Pending bit for line 5 */ +#define EXTI_PR_PR6 ((uint32_t)0x00000040) /*!< Pending bit for line 6 */ +#define EXTI_PR_PR7 ((uint32_t)0x00000080) /*!< Pending bit for line 7 */ +#define EXTI_PR_PR8 ((uint32_t)0x00000100) /*!< Pending bit for line 8 */ +#define EXTI_PR_PR9 ((uint32_t)0x00000200) /*!< Pending bit for line 9 */ +#define EXTI_PR_PR10 ((uint32_t)0x00000400) /*!< Pending bit for line 10 */ +#define EXTI_PR_PR11 ((uint32_t)0x00000800) /*!< Pending bit for line 11 */ +#define EXTI_PR_PR12 ((uint32_t)0x00001000) /*!< Pending bit for line 12 */ +#define EXTI_PR_PR13 ((uint32_t)0x00002000) /*!< Pending bit for line 13 */ +#define EXTI_PR_PR14 ((uint32_t)0x00004000) /*!< Pending bit for line 14 */ +#define EXTI_PR_PR15 ((uint32_t)0x00008000) /*!< Pending bit for line 15 */ +#define EXTI_PR_PR16 ((uint32_t)0x00010000) /*!< Pending bit for line 16 */ +#define EXTI_PR_PR17 ((uint32_t)0x00020000) /*!< Pending bit for line 17 */ +#define EXTI_PR_PR18 ((uint32_t)0x00040000) /*!< Pending bit for line 18 */ +#define EXTI_PR_PR19 ((uint32_t)0x00080000) /*!< Pending bit for line 19 */ + +/******************************************************************************/ +/* */ +/* DMA Controller */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for DMA_ISR register ********************/ +#define DMA_ISR_GIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt flag */ +#define DMA_ISR_TCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete flag */ +#define DMA_ISR_HTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer flag */ +#define DMA_ISR_TEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error flag */ +#define DMA_ISR_GIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt flag */ +#define DMA_ISR_TCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete flag */ +#define DMA_ISR_HTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer flag */ +#define DMA_ISR_TEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error flag */ +#define DMA_ISR_GIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt flag */ +#define DMA_ISR_TCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete flag */ +#define DMA_ISR_HTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer flag */ +#define DMA_ISR_TEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error flag */ +#define DMA_ISR_GIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt flag */ +#define DMA_ISR_TCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete flag */ +#define DMA_ISR_HTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer flag */ +#define DMA_ISR_TEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error flag */ +#define DMA_ISR_GIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt flag */ +#define DMA_ISR_TCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete flag */ +#define DMA_ISR_HTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer flag */ +#define DMA_ISR_TEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error flag */ +#define DMA_ISR_GIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt flag */ +#define DMA_ISR_TCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete flag */ +#define DMA_ISR_HTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer flag */ +#define DMA_ISR_TEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error flag */ +#define DMA_ISR_GIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt flag */ +#define DMA_ISR_TCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete flag */ +#define DMA_ISR_HTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer flag */ +#define DMA_ISR_TEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error flag */ + +/******************* Bit definition for DMA_IFCR register *******************/ +#define DMA_IFCR_CGIF1 ((uint32_t)0x00000001) /*!< Channel 1 Global interrupt clear */ +#define DMA_IFCR_CTCIF1 ((uint32_t)0x00000002) /*!< Channel 1 Transfer Complete clear */ +#define DMA_IFCR_CHTIF1 ((uint32_t)0x00000004) /*!< Channel 1 Half Transfer clear */ +#define DMA_IFCR_CTEIF1 ((uint32_t)0x00000008) /*!< Channel 1 Transfer Error clear */ +#define DMA_IFCR_CGIF2 ((uint32_t)0x00000010) /*!< Channel 2 Global interrupt clear */ +#define DMA_IFCR_CTCIF2 ((uint32_t)0x00000020) /*!< Channel 2 Transfer Complete clear */ +#define DMA_IFCR_CHTIF2 ((uint32_t)0x00000040) /*!< Channel 2 Half Transfer clear */ +#define DMA_IFCR_CTEIF2 ((uint32_t)0x00000080) /*!< Channel 2 Transfer Error clear */ +#define DMA_IFCR_CGIF3 ((uint32_t)0x00000100) /*!< Channel 3 Global interrupt clear */ +#define DMA_IFCR_CTCIF3 ((uint32_t)0x00000200) /*!< Channel 3 Transfer Complete clear */ +#define DMA_IFCR_CHTIF3 ((uint32_t)0x00000400) /*!< Channel 3 Half Transfer clear */ +#define DMA_IFCR_CTEIF3 ((uint32_t)0x00000800) /*!< Channel 3 Transfer Error clear */ +#define DMA_IFCR_CGIF4 ((uint32_t)0x00001000) /*!< Channel 4 Global interrupt clear */ +#define DMA_IFCR_CTCIF4 ((uint32_t)0x00002000) /*!< Channel 4 Transfer Complete clear */ +#define DMA_IFCR_CHTIF4 ((uint32_t)0x00004000) /*!< Channel 4 Half Transfer clear */ +#define DMA_IFCR_CTEIF4 ((uint32_t)0x00008000) /*!< Channel 4 Transfer Error clear */ +#define DMA_IFCR_CGIF5 ((uint32_t)0x00010000) /*!< Channel 5 Global interrupt clear */ +#define DMA_IFCR_CTCIF5 ((uint32_t)0x00020000) /*!< Channel 5 Transfer Complete clear */ +#define DMA_IFCR_CHTIF5 ((uint32_t)0x00040000) /*!< Channel 5 Half Transfer clear */ +#define DMA_IFCR_CTEIF5 ((uint32_t)0x00080000) /*!< Channel 5 Transfer Error clear */ +#define DMA_IFCR_CGIF6 ((uint32_t)0x00100000) /*!< Channel 6 Global interrupt clear */ +#define DMA_IFCR_CTCIF6 ((uint32_t)0x00200000) /*!< Channel 6 Transfer Complete clear */ +#define DMA_IFCR_CHTIF6 ((uint32_t)0x00400000) /*!< Channel 6 Half Transfer clear */ +#define DMA_IFCR_CTEIF6 ((uint32_t)0x00800000) /*!< Channel 6 Transfer Error clear */ +#define DMA_IFCR_CGIF7 ((uint32_t)0x01000000) /*!< Channel 7 Global interrupt clear */ +#define DMA_IFCR_CTCIF7 ((uint32_t)0x02000000) /*!< Channel 7 Transfer Complete clear */ +#define DMA_IFCR_CHTIF7 ((uint32_t)0x04000000) /*!< Channel 7 Half Transfer clear */ +#define DMA_IFCR_CTEIF7 ((uint32_t)0x08000000) /*!< Channel 7 Transfer Error clear */ + +/******************* Bit definition for DMA_CCR1 register *******************/ +#define DMA_CCR1_EN ((uint16_t)0x0001) /*!< Channel enable*/ +#define DMA_CCR1_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR1_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR1_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR1_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR1_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR1_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR1_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR1_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR1_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR1_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR1_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR1_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR1_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR1_PL ((uint16_t)0x3000) /*!< PL[1:0] bits(Channel Priority level) */ +#define DMA_CCR1_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR1_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR1_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/******************* Bit definition for DMA_CCR2 register *******************/ +#define DMA_CCR2_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR2_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR2_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR2_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR2_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR2_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR2_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR2_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR2_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR2_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR2_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR2_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR2_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR2_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR2_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR2_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR2_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR2_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/******************* Bit definition for DMA_CCR3 register *******************/ +#define DMA_CCR3_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR3_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR3_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR3_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR3_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR3_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR3_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR3_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR3_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR3_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR3_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR3_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR3_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR3_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR3_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR3_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR3_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR3_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/*!<****************** Bit definition for DMA_CCR4 register *******************/ +#define DMA_CCR4_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR4_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR4_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR4_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR4_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR4_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR4_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR4_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR4_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR4_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR4_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR4_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR4_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR4_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR4_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR4_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR4_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR4_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/****************** Bit definition for DMA_CCR5 register *******************/ +#define DMA_CCR5_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR5_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR5_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR5_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR5_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR5_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR5_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR5_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR5_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR5_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR5_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR5_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR5_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR5_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR5_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR5_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR5_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR5_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode enable */ + +/******************* Bit definition for DMA_CCR6 register *******************/ +#define DMA_CCR6_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR6_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR6_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR6_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR6_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR6_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR6_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR6_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR6_PSIZE ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR6_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR6_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR6_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR6_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR6_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR6_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR6_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR6_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR6_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode */ + +/******************* Bit definition for DMA_CCR7 register *******************/ +#define DMA_CCR7_EN ((uint16_t)0x0001) /*!< Channel enable */ +#define DMA_CCR7_TCIE ((uint16_t)0x0002) /*!< Transfer complete interrupt enable */ +#define DMA_CCR7_HTIE ((uint16_t)0x0004) /*!< Half Transfer interrupt enable */ +#define DMA_CCR7_TEIE ((uint16_t)0x0008) /*!< Transfer error interrupt enable */ +#define DMA_CCR7_DIR ((uint16_t)0x0010) /*!< Data transfer direction */ +#define DMA_CCR7_CIRC ((uint16_t)0x0020) /*!< Circular mode */ +#define DMA_CCR7_PINC ((uint16_t)0x0040) /*!< Peripheral increment mode */ +#define DMA_CCR7_MINC ((uint16_t)0x0080) /*!< Memory increment mode */ + +#define DMA_CCR7_PSIZE , ((uint16_t)0x0300) /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR7_PSIZE_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define DMA_CCR7_PSIZE_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define DMA_CCR7_MSIZE ((uint16_t)0x0C00) /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR7_MSIZE_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define DMA_CCR7_MSIZE_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define DMA_CCR7_PL ((uint16_t)0x3000) /*!< PL[1:0] bits (Channel Priority level) */ +#define DMA_CCR7_PL_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define DMA_CCR7_PL_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define DMA_CCR7_MEM2MEM ((uint16_t)0x4000) /*!< Memory to memory mode enable */ + +/****************** Bit definition for DMA_CNDTR1 register ******************/ +#define DMA_CNDTR1_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR2 register ******************/ +#define DMA_CNDTR2_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR3 register ******************/ +#define DMA_CNDTR3_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR4 register ******************/ +#define DMA_CNDTR4_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR5 register ******************/ +#define DMA_CNDTR5_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR6 register ******************/ +#define DMA_CNDTR6_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CNDTR7 register ******************/ +#define DMA_CNDTR7_NDT ((uint16_t)0xFFFF) /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CPAR1 register *******************/ +#define DMA_CPAR1_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CPAR2 register *******************/ +#define DMA_CPAR2_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CPAR3 register *******************/ +#define DMA_CPAR3_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + + +/****************** Bit definition for DMA_CPAR4 register *******************/ +#define DMA_CPAR4_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CPAR5 register *******************/ +#define DMA_CPAR5_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CPAR6 register *******************/ +#define DMA_CPAR6_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + + +/****************** Bit definition for DMA_CPAR7 register *******************/ +#define DMA_CPAR7_PA ((uint32_t)0xFFFFFFFF) /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CMAR1 register *******************/ +#define DMA_CMAR1_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR2 register *******************/ +#define DMA_CMAR2_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR3 register *******************/ +#define DMA_CMAR3_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + + +/****************** Bit definition for DMA_CMAR4 register *******************/ +#define DMA_CMAR4_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR5 register *******************/ +#define DMA_CMAR5_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR6 register *******************/ +#define DMA_CMAR6_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/****************** Bit definition for DMA_CMAR7 register *******************/ +#define DMA_CMAR7_MA ((uint32_t)0xFFFFFFFF) /*!< Memory Address */ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for ADC_SR register ********************/ +#define ADC_SR_AWD ((uint8_t)0x01) /*!< Analog watchdog flag */ +#define ADC_SR_EOC ((uint8_t)0x02) /*!< End of conversion */ +#define ADC_SR_JEOC ((uint8_t)0x04) /*!< Injected channel end of conversion */ +#define ADC_SR_JSTRT ((uint8_t)0x08) /*!< Injected channel Start flag */ +#define ADC_SR_STRT ((uint8_t)0x10) /*!< Regular channel Start flag */ + +/******************* Bit definition for ADC_CR1 register ********************/ +#define ADC_CR1_AWDCH ((uint32_t)0x0000001F) /*!< AWDCH[4:0] bits (Analog watchdog channel select bits) */ +#define ADC_CR1_AWDCH_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_CR1_AWDCH_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_CR1_AWDCH_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_CR1_AWDCH_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_CR1_AWDCH_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_CR1_EOCIE ((uint32_t)0x00000020) /*!< Interrupt enable for EOC */ +#define ADC_CR1_AWDIE ((uint32_t)0x00000040) /*!< Analog Watchdog interrupt enable */ +#define ADC_CR1_JEOCIE ((uint32_t)0x00000080) /*!< Interrupt enable for injected channels */ +#define ADC_CR1_SCAN ((uint32_t)0x00000100) /*!< Scan mode */ +#define ADC_CR1_AWDSGL ((uint32_t)0x00000200) /*!< Enable the watchdog on a single channel in scan mode */ +#define ADC_CR1_JAUTO ((uint32_t)0x00000400) /*!< Automatic injected group conversion */ +#define ADC_CR1_DISCEN ((uint32_t)0x00000800) /*!< Discontinuous mode on regular channels */ +#define ADC_CR1_JDISCEN ((uint32_t)0x00001000) /*!< Discontinuous mode on injected channels */ + +#define ADC_CR1_DISCNUM ((uint32_t)0x0000E000) /*!< DISCNUM[2:0] bits (Discontinuous mode channel count) */ +#define ADC_CR1_DISCNUM_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define ADC_CR1_DISCNUM_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define ADC_CR1_DISCNUM_2 ((uint32_t)0x00008000) /*!< Bit 2 */ + +#define ADC_CR1_DUALMOD ((uint32_t)0x000F0000) /*!< DUALMOD[3:0] bits (Dual mode selection) */ +#define ADC_CR1_DUALMOD_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define ADC_CR1_DUALMOD_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define ADC_CR1_DUALMOD_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define ADC_CR1_DUALMOD_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define ADC_CR1_JAWDEN ((uint32_t)0x00400000) /*!< Analog watchdog enable on injected channels */ +#define ADC_CR1_AWDEN ((uint32_t)0x00800000) /*!< Analog watchdog enable on regular channels */ + + +/******************* Bit definition for ADC_CR2 register ********************/ +#define ADC_CR2_ADON ((uint32_t)0x00000001) /*!< A/D Converter ON / OFF */ +#define ADC_CR2_CONT ((uint32_t)0x00000002) /*!< Continuous Conversion */ +#define ADC_CR2_CAL ((uint32_t)0x00000004) /*!< A/D Calibration */ +#define ADC_CR2_RSTCAL ((uint32_t)0x00000008) /*!< Reset Calibration */ +#define ADC_CR2_DMA ((uint32_t)0x00000100) /*!< Direct Memory access mode */ +#define ADC_CR2_ALIGN ((uint32_t)0x00000800) /*!< Data Alignment */ + +#define ADC_CR2_JEXTSEL ((uint32_t)0x00007000) /*!< JEXTSEL[2:0] bits (External event select for injected group) */ +#define ADC_CR2_JEXTSEL_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_CR2_JEXTSEL_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_CR2_JEXTSEL_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_CR2_JEXTTRIG ((uint32_t)0x00008000) /*!< External Trigger Conversion mode for injected channels */ + +#define ADC_CR2_EXTSEL ((uint32_t)0x000E0000) /*!< EXTSEL[2:0] bits (External Event Select for regular group) */ +#define ADC_CR2_EXTSEL_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define ADC_CR2_EXTSEL_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define ADC_CR2_EXTSEL_2 ((uint32_t)0x00080000) /*!< Bit 2 */ + +#define ADC_CR2_EXTTRIG ((uint32_t)0x00100000) /*!< External Trigger Conversion mode for regular channels */ +#define ADC_CR2_JSWSTART ((uint32_t)0x00200000) /*!< Start Conversion of injected channels */ +#define ADC_CR2_SWSTART ((uint32_t)0x00400000) /*!< Start Conversion of regular channels */ +#define ADC_CR2_TSVREFE ((uint32_t)0x00800000) /*!< Temperature Sensor and VREFINT Enable */ + +/****************** Bit definition for ADC_SMPR1 register *******************/ +#define ADC_SMPR1_SMP10 ((uint32_t)0x00000007) /*!< SMP10[2:0] bits (Channel 10 Sample time selection) */ +#define ADC_SMPR1_SMP10_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR1_SMP10_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR1_SMP10_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP11 ((uint32_t)0x00000038) /*!< SMP11[2:0] bits (Channel 11 Sample time selection) */ +#define ADC_SMPR1_SMP11_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR1_SMP11_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR1_SMP11_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP12 ((uint32_t)0x000001C0) /*!< SMP12[2:0] bits (Channel 12 Sample time selection) */ +#define ADC_SMPR1_SMP12_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR1_SMP12_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR1_SMP12_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP13 ((uint32_t)0x00000E00) /*!< SMP13[2:0] bits (Channel 13 Sample time selection) */ +#define ADC_SMPR1_SMP13_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR1_SMP13_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR1_SMP13_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP14 ((uint32_t)0x00007000) /*!< SMP14[2:0] bits (Channel 14 Sample time selection) */ +#define ADC_SMPR1_SMP14_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP14_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP14_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP15 ((uint32_t)0x00038000) /*!< SMP15[2:0] bits (Channel 15 Sample time selection) */ +#define ADC_SMPR1_SMP15_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP15_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP15_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP16 ((uint32_t)0x001C0000) /*!< SMP16[2:0] bits (Channel 16 Sample time selection) */ +#define ADC_SMPR1_SMP16_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP16_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP16_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP17 ((uint32_t)0x00E00000) /*!< SMP17[2:0] bits (Channel 17 Sample time selection) */ +#define ADC_SMPR1_SMP17_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP17_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP17_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_SMPR2 register *******************/ +#define ADC_SMPR2_SMP0 ((uint32_t)0x00000007) /*!< SMP0[2:0] bits (Channel 0 Sample time selection) */ +#define ADC_SMPR2_SMP0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR2_SMP0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR2_SMP0_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP1 ((uint32_t)0x00000038) /*!< SMP1[2:0] bits (Channel 1 Sample time selection) */ +#define ADC_SMPR2_SMP1_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR2_SMP1_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR2_SMP1_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP2 ((uint32_t)0x000001C0) /*!< SMP2[2:0] bits (Channel 2 Sample time selection) */ +#define ADC_SMPR2_SMP2_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR2_SMP2_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR2_SMP2_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP3 ((uint32_t)0x00000E00) /*!< SMP3[2:0] bits (Channel 3 Sample time selection) */ +#define ADC_SMPR2_SMP3_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR2_SMP3_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR2_SMP3_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP4 ((uint32_t)0x00007000) /*!< SMP4[2:0] bits (Channel 4 Sample time selection) */ +#define ADC_SMPR2_SMP4_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP4_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP4_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP5 ((uint32_t)0x00038000) /*!< SMP5[2:0] bits (Channel 5 Sample time selection) */ +#define ADC_SMPR2_SMP5_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP5_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP5_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP6 ((uint32_t)0x001C0000) /*!< SMP6[2:0] bits (Channel 6 Sample time selection) */ +#define ADC_SMPR2_SMP6_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP6_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP6_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP7 ((uint32_t)0x00E00000) /*!< SMP7[2:0] bits (Channel 7 Sample time selection) */ +#define ADC_SMPR2_SMP7_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP7_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP7_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP8 ((uint32_t)0x07000000) /*!< SMP8[2:0] bits (Channel 8 Sample time selection) */ +#define ADC_SMPR2_SMP8_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP8_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP8_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP9 ((uint32_t)0x38000000) /*!< SMP9[2:0] bits (Channel 9 Sample time selection) */ +#define ADC_SMPR2_SMP9_0 ((uint32_t)0x08000000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP9_1 ((uint32_t)0x10000000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP9_2 ((uint32_t)0x20000000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_JOFR1 register *******************/ +#define ADC_JOFR1_JOFFSET1 ((uint16_t)0x0FFF) /*!< Data offset for injected channel 1 */ + +/****************** Bit definition for ADC_JOFR2 register *******************/ +#define ADC_JOFR2_JOFFSET2 ((uint16_t)0x0FFF) /*!< Data offset for injected channel 2 */ + +/****************** Bit definition for ADC_JOFR3 register *******************/ +#define ADC_JOFR3_JOFFSET3 ((uint16_t)0x0FFF) /*!< Data offset for injected channel 3 */ + +/****************** Bit definition for ADC_JOFR4 register *******************/ +#define ADC_JOFR4_JOFFSET4 ((uint16_t)0x0FFF) /*!< Data offset for injected channel 4 */ + +/******************* Bit definition for ADC_HTR register ********************/ +#define ADC_HTR_HT ((uint16_t)0x0FFF) /*!< Analog watchdog high threshold */ + +/******************* Bit definition for ADC_LTR register ********************/ +#define ADC_LTR_LT ((uint16_t)0x0FFF) /*!< Analog watchdog low threshold */ + +/******************* Bit definition for ADC_SQR1 register *******************/ +#define ADC_SQR1_SQ13 ((uint32_t)0x0000001F) /*!< SQ13[4:0] bits (13th conversion in regular sequence) */ +#define ADC_SQR1_SQ13_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR1_SQ13_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR1_SQ13_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR1_SQ13_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR1_SQ13_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR1_SQ14 ((uint32_t)0x000003E0) /*!< SQ14[4:0] bits (14th conversion in regular sequence) */ +#define ADC_SQR1_SQ14_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR1_SQ14_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR1_SQ14_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR1_SQ14_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR1_SQ14_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR1_SQ15 ((uint32_t)0x00007C00) /*!< SQ15[4:0] bits (15th conversion in regular sequence) */ +#define ADC_SQR1_SQ15_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR1_SQ15_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR1_SQ15_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR1_SQ15_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR1_SQ15_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR1_SQ16 ((uint32_t)0x000F8000) /*!< SQ16[4:0] bits (16th conversion in regular sequence) */ +#define ADC_SQR1_SQ16_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR1_SQ16_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR1_SQ16_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR1_SQ16_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR1_SQ16_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR1_L ((uint32_t)0x00F00000) /*!< L[3:0] bits (Regular channel sequence length) */ +#define ADC_SQR1_L_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR1_L_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR1_L_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR1_L_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +/******************* Bit definition for ADC_SQR2 register *******************/ +#define ADC_SQR2_SQ7 ((uint32_t)0x0000001F) /*!< SQ7[4:0] bits (7th conversion in regular sequence) */ +#define ADC_SQR2_SQ7_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR2_SQ7_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR2_SQ7_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR2_SQ7_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR2_SQ7_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR2_SQ8 ((uint32_t)0x000003E0) /*!< SQ8[4:0] bits (8th conversion in regular sequence) */ +#define ADC_SQR2_SQ8_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR2_SQ8_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR2_SQ8_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR2_SQ8_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR2_SQ8_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR2_SQ9 ((uint32_t)0x00007C00) /*!< SQ9[4:0] bits (9th conversion in regular sequence) */ +#define ADC_SQR2_SQ9_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR2_SQ9_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR2_SQ9_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR2_SQ9_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR2_SQ9_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ10 ((uint32_t)0x000F8000) /*!< SQ10[4:0] bits (10th conversion in regular sequence) */ +#define ADC_SQR2_SQ10_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR2_SQ10_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR2_SQ10_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR2_SQ10_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR2_SQ10_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ11 ((uint32_t)0x01F00000) /*!< SQ11[4:0] bits (11th conversion in regular sequence) */ +#define ADC_SQR2_SQ11_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR2_SQ11_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR2_SQ11_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR2_SQ11_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR2_SQ11_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ12 ((uint32_t)0x3E000000) /*!< SQ12[4:0] bits (12th conversion in regular sequence) */ +#define ADC_SQR2_SQ12_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR2_SQ12_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR2_SQ12_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR2_SQ12_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR2_SQ12_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR3 register *******************/ +#define ADC_SQR3_SQ1 ((uint32_t)0x0000001F) /*!< SQ1[4:0] bits (1st conversion in regular sequence) */ +#define ADC_SQR3_SQ1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR3_SQ1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR3_SQ1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR3_SQ1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR3_SQ1_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR3_SQ2 ((uint32_t)0x000003E0) /*!< SQ2[4:0] bits (2nd conversion in regular sequence) */ +#define ADC_SQR3_SQ2_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR3_SQ2_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR3_SQ2_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR3_SQ2_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR3_SQ2_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR3_SQ3 ((uint32_t)0x00007C00) /*!< SQ3[4:0] bits (3rd conversion in regular sequence) */ +#define ADC_SQR3_SQ3_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR3_SQ3_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR3_SQ3_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR3_SQ3_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR3_SQ3_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ4 ((uint32_t)0x000F8000) /*!< SQ4[4:0] bits (4th conversion in regular sequence) */ +#define ADC_SQR3_SQ4_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR3_SQ4_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR3_SQ4_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR3_SQ4_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR3_SQ4_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ5 ((uint32_t)0x01F00000) /*!< SQ5[4:0] bits (5th conversion in regular sequence) */ +#define ADC_SQR3_SQ5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR3_SQ5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR3_SQ5_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR3_SQ5_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR3_SQ5_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ6 ((uint32_t)0x3E000000) /*!< SQ6[4:0] bits (6th conversion in regular sequence) */ +#define ADC_SQR3_SQ6_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR3_SQ6_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR3_SQ6_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR3_SQ6_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR3_SQ6_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_JSQR register *******************/ +#define ADC_JSQR_JSQ1 ((uint32_t)0x0000001F) /*!< JSQ1[4:0] bits (1st conversion in injected sequence) */ +#define ADC_JSQR_JSQ1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_JSQR_JSQ1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_JSQR_JSQ1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_JSQR_JSQ1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_JSQR_JSQ1_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ2 ((uint32_t)0x000003E0) /*!< JSQ2[4:0] bits (2nd conversion in injected sequence) */ +#define ADC_JSQR_JSQ2_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_JSQR_JSQ2_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_JSQR_JSQ2_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_JSQR_JSQ2_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_JSQR_JSQ2_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ3 ((uint32_t)0x00007C00) /*!< JSQ3[4:0] bits (3rd conversion in injected sequence) */ +#define ADC_JSQR_JSQ3_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_JSQR_JSQ3_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_JSQR_JSQ3_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_JSQR_JSQ3_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_JSQR_JSQ3_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ4 ((uint32_t)0x000F8000) /*!< JSQ4[4:0] bits (4th conversion in injected sequence) */ +#define ADC_JSQR_JSQ4_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_JSQR_JSQ4_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_JSQR_JSQ4_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_JSQR_JSQ4_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_JSQR_JSQ4_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_JSQR_JL ((uint32_t)0x00300000) /*!< JL[1:0] bits (Injected Sequence length) */ +#define ADC_JSQR_JL_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_JSQR_JL_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +/******************* Bit definition for ADC_JDR1 register *******************/ +#define ADC_JDR1_JDATA ((uint16_t)0xFFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR2 register *******************/ +#define ADC_JDR2_JDATA ((uint16_t)0xFFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR3 register *******************/ +#define ADC_JDR3_JDATA ((uint16_t)0xFFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR4 register *******************/ +#define ADC_JDR4_JDATA ((uint16_t)0xFFFF) /*!< Injected data */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_DATA ((uint32_t)0x0000FFFF) /*!< Regular data */ +#define ADC_DR_ADC2DATA ((uint32_t)0xFFFF0000) /*!< ADC2 data */ + +/******************************************************************************/ +/* */ +/* Digital to Analog Converter */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1 ((uint32_t)0x00000001) /*!< DAC channel1 enable */ +#define DAC_CR_BOFF1 ((uint32_t)0x00000002) /*!< DAC channel1 output buffer disable */ +#define DAC_CR_TEN1 ((uint32_t)0x00000004) /*!< DAC channel1 Trigger enable */ + +#define DAC_CR_TSEL1 ((uint32_t)0x00000038) /*!< TSEL1[2:0] (DAC channel1 Trigger selection) */ +#define DAC_CR_TSEL1_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define DAC_CR_TSEL1_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define DAC_CR_TSEL1_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define DAC_CR_WAVE1 ((uint32_t)0x000000C0) /*!< WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable) */ +#define DAC_CR_WAVE1_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define DAC_CR_WAVE1_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define DAC_CR_MAMP1 ((uint32_t)0x00000F00) /*!< MAMP1[3:0] (DAC channel1 Mask/Amplitude selector) */ +#define DAC_CR_MAMP1_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define DAC_CR_MAMP1_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define DAC_CR_MAMP1_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define DAC_CR_MAMP1_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define DAC_CR_DMAEN1 ((uint32_t)0x00001000) /*!< DAC channel1 DMA enable */ +#define DAC_CR_EN2 ((uint32_t)0x00010000) /*!< DAC channel2 enable */ +#define DAC_CR_BOFF2 ((uint32_t)0x00020000) /*!< DAC channel2 output buffer disable */ +#define DAC_CR_TEN2 ((uint32_t)0x00040000) /*!< DAC channel2 Trigger enable */ + +#define DAC_CR_TSEL2 ((uint32_t)0x00380000) /*!< TSEL2[2:0] (DAC channel2 Trigger selection) */ +#define DAC_CR_TSEL2_0 ((uint32_t)0x00080000) /*!< Bit 0 */ +#define DAC_CR_TSEL2_1 ((uint32_t)0x00100000) /*!< Bit 1 */ +#define DAC_CR_TSEL2_2 ((uint32_t)0x00200000) /*!< Bit 2 */ + +#define DAC_CR_WAVE2 ((uint32_t)0x00C00000) /*!< WAVE2[1:0] (DAC channel2 noise/triangle wave generation enable) */ +#define DAC_CR_WAVE2_0 ((uint32_t)0x00400000) /*!< Bit 0 */ +#define DAC_CR_WAVE2_1 ((uint32_t)0x00800000) /*!< Bit 1 */ + +#define DAC_CR_MAMP2 ((uint32_t)0x0F000000) /*!< MAMP2[3:0] (DAC channel2 Mask/Amplitude selector) */ +#define DAC_CR_MAMP2_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define DAC_CR_MAMP2_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define DAC_CR_MAMP2_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define DAC_CR_MAMP2_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define DAC_CR_DMAEN2 ((uint32_t)0x10000000) /*!< DAC channel2 DMA enabled */ + +/***************** Bit definition for DAC_SWTRIGR register ******************/ +#define DAC_SWTRIGR_SWTRIG1 ((uint8_t)0x01) /*!< DAC channel1 software trigger */ +#define DAC_SWTRIGR_SWTRIG2 ((uint8_t)0x02) /*!< DAC channel2 software trigger */ + +/***************** Bit definition for DAC_DHR12R1 register ******************/ +#define DAC_DHR12R1_DACC1DHR ((uint16_t)0x0FFF) /*!< DAC channel1 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12L1 register ******************/ +#define DAC_DHR12L1_DACC1DHR ((uint16_t)0xFFF0) /*!< DAC channel1 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8R1 register ******************/ +#define DAC_DHR8R1_DACC1DHR ((uint8_t)0xFF) /*!< DAC channel1 8-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12R2 register ******************/ +#define DAC_DHR12R2_DACC2DHR ((uint16_t)0x0FFF) /*!< DAC channel2 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12L2 register ******************/ +#define DAC_DHR12L2_DACC2DHR ((uint16_t)0xFFF0) /*!< DAC channel2 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8R2 register ******************/ +#define DAC_DHR8R2_DACC2DHR ((uint8_t)0xFF) /*!< DAC channel2 8-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12RD register ******************/ +#define DAC_DHR12RD_DACC1DHR ((uint32_t)0x00000FFF) /*!< DAC channel1 12-bit Right aligned data */ +#define DAC_DHR12RD_DACC2DHR ((uint32_t)0x0FFF0000) /*!< DAC channel2 12-bit Right aligned data */ + +/***************** Bit definition for DAC_DHR12LD register ******************/ +#define DAC_DHR12LD_DACC1DHR ((uint32_t)0x0000FFF0) /*!< DAC channel1 12-bit Left aligned data */ +#define DAC_DHR12LD_DACC2DHR ((uint32_t)0xFFF00000) /*!< DAC channel2 12-bit Left aligned data */ + +/****************** Bit definition for DAC_DHR8RD register ******************/ +#define DAC_DHR8RD_DACC1DHR ((uint16_t)0x00FF) /*!< DAC channel1 8-bit Right aligned data */ +#define DAC_DHR8RD_DACC2DHR ((uint16_t)0xFF00) /*!< DAC channel2 8-bit Right aligned data */ + +/******************* Bit definition for DAC_DOR1 register *******************/ +#define DAC_DOR1_DACC1DOR ((uint16_t)0x0FFF) /*!< DAC channel1 data output */ + +/******************* Bit definition for DAC_DOR2 register *******************/ +#define DAC_DOR2_DACC2DOR ((uint16_t)0x0FFF) /*!< DAC channel2 data output */ + +/******************** Bit definition for DAC_SR register ********************/ +#define DAC_SR_DMAUDR1 ((uint32_t)0x00002000) /*!< DAC channel1 DMA underrun flag */ +#define DAC_SR_DMAUDR2 ((uint32_t)0x20000000) /*!< DAC channel2 DMA underrun flag */ + +/******************************************************************************/ +/* */ +/* CEC */ +/* */ +/******************************************************************************/ +/******************** Bit definition for CEC_CFGR register ******************/ +#define CEC_CFGR_PE ((uint16_t)0x0001) /*!< Peripheral Enable */ +#define CEC_CFGR_IE ((uint16_t)0x0002) /*!< Interrupt Enable */ +#define CEC_CFGR_BTEM ((uint16_t)0x0004) /*!< Bit Timing Error Mode */ +#define CEC_CFGR_BPEM ((uint16_t)0x0008) /*!< Bit Period Error Mode */ + +/******************** Bit definition for CEC_OAR register ******************/ +#define CEC_OAR_OA ((uint16_t)0x000F) /*!< OA[3:0]: Own Address */ +#define CEC_OAR_OA_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define CEC_OAR_OA_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define CEC_OAR_OA_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define CEC_OAR_OA_3 ((uint16_t)0x0008) /*!< Bit 3 */ + +/******************** Bit definition for CEC_PRES register ******************/ +#define CEC_PRES_PRES ((uint16_t)0x3FFF) /*!< Prescaler Counter Value */ + +/******************** Bit definition for CEC_ESR register ******************/ +#define CEC_ESR_BTE ((uint16_t)0x0001) /*!< Bit Timing Error */ +#define CEC_ESR_BPE ((uint16_t)0x0002) /*!< Bit Period Error */ +#define CEC_ESR_RBTFE ((uint16_t)0x0004) /*!< Rx Block Transfer Finished Error */ +#define CEC_ESR_SBE ((uint16_t)0x0008) /*!< Start Bit Error */ +#define CEC_ESR_ACKE ((uint16_t)0x0010) /*!< Block Acknowledge Error */ +#define CEC_ESR_LINE ((uint16_t)0x0020) /*!< Line Error */ +#define CEC_ESR_TBTFE ((uint16_t)0x0040) /*!< Tx Block Transfer Finished Error */ + +/******************** Bit definition for CEC_CSR register ******************/ +#define CEC_CSR_TSOM ((uint16_t)0x0001) /*!< Tx Start Of Message */ +#define CEC_CSR_TEOM ((uint16_t)0x0002) /*!< Tx End Of Message */ +#define CEC_CSR_TERR ((uint16_t)0x0004) /*!< Tx Error */ +#define CEC_CSR_TBTRF ((uint16_t)0x0008) /*!< Tx Byte Transfer Request or Block Transfer Finished */ +#define CEC_CSR_RSOM ((uint16_t)0x0010) /*!< Rx Start Of Message */ +#define CEC_CSR_REOM ((uint16_t)0x0020) /*!< Rx End Of Message */ +#define CEC_CSR_RERR ((uint16_t)0x0040) /*!< Rx Error */ +#define CEC_CSR_RBTF ((uint16_t)0x0080) /*!< Rx Block Transfer Finished */ + +/******************** Bit definition for CEC_TXD register ******************/ +#define CEC_TXD_TXD ((uint16_t)0x00FF) /*!< Tx Data register */ + +/******************** Bit definition for CEC_RXD register ******************/ +#define CEC_RXD_RXD ((uint16_t)0x00FF) /*!< Rx Data register */ + +/******************************************************************************/ +/* */ +/* TIM */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for TIM_CR1 register ********************/ +#define TIM_CR1_CEN ((uint16_t)0x0001) /*!< Counter enable */ +#define TIM_CR1_UDIS ((uint16_t)0x0002) /*!< Update disable */ +#define TIM_CR1_URS ((uint16_t)0x0004) /*!< Update request source */ +#define TIM_CR1_OPM ((uint16_t)0x0008) /*!< One pulse mode */ +#define TIM_CR1_DIR ((uint16_t)0x0010) /*!< Direction */ + +#define TIM_CR1_CMS ((uint16_t)0x0060) /*!< CMS[1:0] bits (Center-aligned mode selection) */ +#define TIM_CR1_CMS_0 ((uint16_t)0x0020) /*!< Bit 0 */ +#define TIM_CR1_CMS_1 ((uint16_t)0x0040) /*!< Bit 1 */ + +#define TIM_CR1_ARPE ((uint16_t)0x0080) /*!< Auto-reload preload enable */ + +#define TIM_CR1_CKD ((uint16_t)0x0300) /*!< CKD[1:0] bits (clock division) */ +#define TIM_CR1_CKD_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_CR1_CKD_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +/******************* Bit definition for TIM_CR2 register ********************/ +#define TIM_CR2_CCPC ((uint16_t)0x0001) /*!< Capture/Compare Preloaded Control */ +#define TIM_CR2_CCUS ((uint16_t)0x0004) /*!< Capture/Compare Control Update Selection */ +#define TIM_CR2_CCDS ((uint16_t)0x0008) /*!< Capture/Compare DMA Selection */ + +#define TIM_CR2_MMS ((uint16_t)0x0070) /*!< MMS[2:0] bits (Master Mode Selection) */ +#define TIM_CR2_MMS_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CR2_MMS_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CR2_MMS_2 ((uint16_t)0x0040) /*!< Bit 2 */ + +#define TIM_CR2_TI1S ((uint16_t)0x0080) /*!< TI1 Selection */ +#define TIM_CR2_OIS1 ((uint16_t)0x0100) /*!< Output Idle state 1 (OC1 output) */ +#define TIM_CR2_OIS1N ((uint16_t)0x0200) /*!< Output Idle state 1 (OC1N output) */ +#define TIM_CR2_OIS2 ((uint16_t)0x0400) /*!< Output Idle state 2 (OC2 output) */ +#define TIM_CR2_OIS2N ((uint16_t)0x0800) /*!< Output Idle state 2 (OC2N output) */ +#define TIM_CR2_OIS3 ((uint16_t)0x1000) /*!< Output Idle state 3 (OC3 output) */ +#define TIM_CR2_OIS3N ((uint16_t)0x2000) /*!< Output Idle state 3 (OC3N output) */ +#define TIM_CR2_OIS4 ((uint16_t)0x4000) /*!< Output Idle state 4 (OC4 output) */ + +/******************* Bit definition for TIM_SMCR register *******************/ +#define TIM_SMCR_SMS ((uint16_t)0x0007) /*!< SMS[2:0] bits (Slave mode selection) */ +#define TIM_SMCR_SMS_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_SMCR_SMS_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define TIM_SMCR_SMS_2 ((uint16_t)0x0004) /*!< Bit 2 */ + +#define TIM_SMCR_TS ((uint16_t)0x0070) /*!< TS[2:0] bits (Trigger selection) */ +#define TIM_SMCR_TS_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_SMCR_TS_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_SMCR_TS_2 ((uint16_t)0x0040) /*!< Bit 2 */ + +#define TIM_SMCR_MSM ((uint16_t)0x0080) /*!< Master/slave mode */ + +#define TIM_SMCR_ETF ((uint16_t)0x0F00) /*!< ETF[3:0] bits (External trigger filter) */ +#define TIM_SMCR_ETF_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_SMCR_ETF_1 ((uint16_t)0x0200) /*!< Bit 1 */ +#define TIM_SMCR_ETF_2 ((uint16_t)0x0400) /*!< Bit 2 */ +#define TIM_SMCR_ETF_3 ((uint16_t)0x0800) /*!< Bit 3 */ + +#define TIM_SMCR_ETPS ((uint16_t)0x3000) /*!< ETPS[1:0] bits (External trigger prescaler) */ +#define TIM_SMCR_ETPS_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_SMCR_ETPS_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define TIM_SMCR_ECE ((uint16_t)0x4000) /*!< External clock enable */ +#define TIM_SMCR_ETP ((uint16_t)0x8000) /*!< External trigger polarity */ + +/******************* Bit definition for TIM_DIER register *******************/ +#define TIM_DIER_UIE ((uint16_t)0x0001) /*!< Update interrupt enable */ +#define TIM_DIER_CC1IE ((uint16_t)0x0002) /*!< Capture/Compare 1 interrupt enable */ +#define TIM_DIER_CC2IE ((uint16_t)0x0004) /*!< Capture/Compare 2 interrupt enable */ +#define TIM_DIER_CC3IE ((uint16_t)0x0008) /*!< Capture/Compare 3 interrupt enable */ +#define TIM_DIER_CC4IE ((uint16_t)0x0010) /*!< Capture/Compare 4 interrupt enable */ +#define TIM_DIER_COMIE ((uint16_t)0x0020) /*!< COM interrupt enable */ +#define TIM_DIER_TIE ((uint16_t)0x0040) /*!< Trigger interrupt enable */ +#define TIM_DIER_BIE ((uint16_t)0x0080) /*!< Break interrupt enable */ +#define TIM_DIER_UDE ((uint16_t)0x0100) /*!< Update DMA request enable */ +#define TIM_DIER_CC1DE ((uint16_t)0x0200) /*!< Capture/Compare 1 DMA request enable */ +#define TIM_DIER_CC2DE ((uint16_t)0x0400) /*!< Capture/Compare 2 DMA request enable */ +#define TIM_DIER_CC3DE ((uint16_t)0x0800) /*!< Capture/Compare 3 DMA request enable */ +#define TIM_DIER_CC4DE ((uint16_t)0x1000) /*!< Capture/Compare 4 DMA request enable */ +#define TIM_DIER_COMDE ((uint16_t)0x2000) /*!< COM DMA request enable */ +#define TIM_DIER_TDE ((uint16_t)0x4000) /*!< Trigger DMA request enable */ + +/******************** Bit definition for TIM_SR register ********************/ +#define TIM_SR_UIF ((uint16_t)0x0001) /*!< Update interrupt Flag */ +#define TIM_SR_CC1IF ((uint16_t)0x0002) /*!< Capture/Compare 1 interrupt Flag */ +#define TIM_SR_CC2IF ((uint16_t)0x0004) /*!< Capture/Compare 2 interrupt Flag */ +#define TIM_SR_CC3IF ((uint16_t)0x0008) /*!< Capture/Compare 3 interrupt Flag */ +#define TIM_SR_CC4IF ((uint16_t)0x0010) /*!< Capture/Compare 4 interrupt Flag */ +#define TIM_SR_COMIF ((uint16_t)0x0020) /*!< COM interrupt Flag */ +#define TIM_SR_TIF ((uint16_t)0x0040) /*!< Trigger interrupt Flag */ +#define TIM_SR_BIF ((uint16_t)0x0080) /*!< Break interrupt Flag */ +#define TIM_SR_CC1OF ((uint16_t)0x0200) /*!< Capture/Compare 1 Overcapture Flag */ +#define TIM_SR_CC2OF ((uint16_t)0x0400) /*!< Capture/Compare 2 Overcapture Flag */ +#define TIM_SR_CC3OF ((uint16_t)0x0800) /*!< Capture/Compare 3 Overcapture Flag */ +#define TIM_SR_CC4OF ((uint16_t)0x1000) /*!< Capture/Compare 4 Overcapture Flag */ + +/******************* Bit definition for TIM_EGR register ********************/ +#define TIM_EGR_UG ((uint8_t)0x01) /*!< Update Generation */ +#define TIM_EGR_CC1G ((uint8_t)0x02) /*!< Capture/Compare 1 Generation */ +#define TIM_EGR_CC2G ((uint8_t)0x04) /*!< Capture/Compare 2 Generation */ +#define TIM_EGR_CC3G ((uint8_t)0x08) /*!< Capture/Compare 3 Generation */ +#define TIM_EGR_CC4G ((uint8_t)0x10) /*!< Capture/Compare 4 Generation */ +#define TIM_EGR_COMG ((uint8_t)0x20) /*!< Capture/Compare Control Update Generation */ +#define TIM_EGR_TG ((uint8_t)0x40) /*!< Trigger Generation */ +#define TIM_EGR_BG ((uint8_t)0x80) /*!< Break Generation */ + +/****************** Bit definition for TIM_CCMR1 register *******************/ +#define TIM_CCMR1_CC1S ((uint16_t)0x0003) /*!< CC1S[1:0] bits (Capture/Compare 1 Selection) */ +#define TIM_CCMR1_CC1S_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_CCMR1_CC1S_1 ((uint16_t)0x0002) /*!< Bit 1 */ + +#define TIM_CCMR1_OC1FE ((uint16_t)0x0004) /*!< Output Compare 1 Fast enable */ +#define TIM_CCMR1_OC1PE ((uint16_t)0x0008) /*!< Output Compare 1 Preload enable */ + +#define TIM_CCMR1_OC1M ((uint16_t)0x0070) /*!< OC1M[2:0] bits (Output Compare 1 Mode) */ +#define TIM_CCMR1_OC1M_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CCMR1_OC1M_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CCMR1_OC1M_2 ((uint16_t)0x0040) /*!< Bit 2 */ + +#define TIM_CCMR1_OC1CE ((uint16_t)0x0080) /*!< Output Compare 1Clear Enable */ + +#define TIM_CCMR1_CC2S ((uint16_t)0x0300) /*!< CC2S[1:0] bits (Capture/Compare 2 Selection) */ +#define TIM_CCMR1_CC2S_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_CCMR1_CC2S_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define TIM_CCMR1_OC2FE ((uint16_t)0x0400) /*!< Output Compare 2 Fast enable */ +#define TIM_CCMR1_OC2PE ((uint16_t)0x0800) /*!< Output Compare 2 Preload enable */ + +#define TIM_CCMR1_OC2M ((uint16_t)0x7000) /*!< OC2M[2:0] bits (Output Compare 2 Mode) */ +#define TIM_CCMR1_OC2M_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_CCMR1_OC2M_1 ((uint16_t)0x2000) /*!< Bit 1 */ +#define TIM_CCMR1_OC2M_2 ((uint16_t)0x4000) /*!< Bit 2 */ + +#define TIM_CCMR1_OC2CE ((uint16_t)0x8000) /*!< Output Compare 2 Clear Enable */ + +/*----------------------------------------------------------------------------*/ + +#define TIM_CCMR1_IC1PSC ((uint16_t)0x000C) /*!< IC1PSC[1:0] bits (Input Capture 1 Prescaler) */ +#define TIM_CCMR1_IC1PSC_0 ((uint16_t)0x0004) /*!< Bit 0 */ +#define TIM_CCMR1_IC1PSC_1 ((uint16_t)0x0008) /*!< Bit 1 */ + +#define TIM_CCMR1_IC1F ((uint16_t)0x00F0) /*!< IC1F[3:0] bits (Input Capture 1 Filter) */ +#define TIM_CCMR1_IC1F_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CCMR1_IC1F_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CCMR1_IC1F_2 ((uint16_t)0x0040) /*!< Bit 2 */ +#define TIM_CCMR1_IC1F_3 ((uint16_t)0x0080) /*!< Bit 3 */ + +#define TIM_CCMR1_IC2PSC ((uint16_t)0x0C00) /*!< IC2PSC[1:0] bits (Input Capture 2 Prescaler) */ +#define TIM_CCMR1_IC2PSC_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define TIM_CCMR1_IC2PSC_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define TIM_CCMR1_IC2F ((uint16_t)0xF000) /*!< IC2F[3:0] bits (Input Capture 2 Filter) */ +#define TIM_CCMR1_IC2F_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_CCMR1_IC2F_1 ((uint16_t)0x2000) /*!< Bit 1 */ +#define TIM_CCMR1_IC2F_2 ((uint16_t)0x4000) /*!< Bit 2 */ +#define TIM_CCMR1_IC2F_3 ((uint16_t)0x8000) /*!< Bit 3 */ + +/****************** Bit definition for TIM_CCMR2 register *******************/ +#define TIM_CCMR2_CC3S ((uint16_t)0x0003) /*!< CC3S[1:0] bits (Capture/Compare 3 Selection) */ +#define TIM_CCMR2_CC3S_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_CCMR2_CC3S_1 ((uint16_t)0x0002) /*!< Bit 1 */ + +#define TIM_CCMR2_OC3FE ((uint16_t)0x0004) /*!< Output Compare 3 Fast enable */ +#define TIM_CCMR2_OC3PE ((uint16_t)0x0008) /*!< Output Compare 3 Preload enable */ + +#define TIM_CCMR2_OC3M ((uint16_t)0x0070) /*!< OC3M[2:0] bits (Output Compare 3 Mode) */ +#define TIM_CCMR2_OC3M_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CCMR2_OC3M_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CCMR2_OC3M_2 ((uint16_t)0x0040) /*!< Bit 2 */ + +#define TIM_CCMR2_OC3CE ((uint16_t)0x0080) /*!< Output Compare 3 Clear Enable */ + +#define TIM_CCMR2_CC4S ((uint16_t)0x0300) /*!< CC4S[1:0] bits (Capture/Compare 4 Selection) */ +#define TIM_CCMR2_CC4S_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_CCMR2_CC4S_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define TIM_CCMR2_OC4FE ((uint16_t)0x0400) /*!< Output Compare 4 Fast enable */ +#define TIM_CCMR2_OC4PE ((uint16_t)0x0800) /*!< Output Compare 4 Preload enable */ + +#define TIM_CCMR2_OC4M ((uint16_t)0x7000) /*!< OC4M[2:0] bits (Output Compare 4 Mode) */ +#define TIM_CCMR2_OC4M_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_CCMR2_OC4M_1 ((uint16_t)0x2000) /*!< Bit 1 */ +#define TIM_CCMR2_OC4M_2 ((uint16_t)0x4000) /*!< Bit 2 */ + +#define TIM_CCMR2_OC4CE ((uint16_t)0x8000) /*!< Output Compare 4 Clear Enable */ + +/*----------------------------------------------------------------------------*/ + +#define TIM_CCMR2_IC3PSC ((uint16_t)0x000C) /*!< IC3PSC[1:0] bits (Input Capture 3 Prescaler) */ +#define TIM_CCMR2_IC3PSC_0 ((uint16_t)0x0004) /*!< Bit 0 */ +#define TIM_CCMR2_IC3PSC_1 ((uint16_t)0x0008) /*!< Bit 1 */ + +#define TIM_CCMR2_IC3F ((uint16_t)0x00F0) /*!< IC3F[3:0] bits (Input Capture 3 Filter) */ +#define TIM_CCMR2_IC3F_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define TIM_CCMR2_IC3F_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define TIM_CCMR2_IC3F_2 ((uint16_t)0x0040) /*!< Bit 2 */ +#define TIM_CCMR2_IC3F_3 ((uint16_t)0x0080) /*!< Bit 3 */ + +#define TIM_CCMR2_IC4PSC ((uint16_t)0x0C00) /*!< IC4PSC[1:0] bits (Input Capture 4 Prescaler) */ +#define TIM_CCMR2_IC4PSC_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define TIM_CCMR2_IC4PSC_1 ((uint16_t)0x0800) /*!< Bit 1 */ + +#define TIM_CCMR2_IC4F ((uint16_t)0xF000) /*!< IC4F[3:0] bits (Input Capture 4 Filter) */ +#define TIM_CCMR2_IC4F_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define TIM_CCMR2_IC4F_1 ((uint16_t)0x2000) /*!< Bit 1 */ +#define TIM_CCMR2_IC4F_2 ((uint16_t)0x4000) /*!< Bit 2 */ +#define TIM_CCMR2_IC4F_3 ((uint16_t)0x8000) /*!< Bit 3 */ + +/******************* Bit definition for TIM_CCER register *******************/ +#define TIM_CCER_CC1E ((uint16_t)0x0001) /*!< Capture/Compare 1 output enable */ +#define TIM_CCER_CC1P ((uint16_t)0x0002) /*!< Capture/Compare 1 output Polarity */ +#define TIM_CCER_CC1NE ((uint16_t)0x0004) /*!< Capture/Compare 1 Complementary output enable */ +#define TIM_CCER_CC1NP ((uint16_t)0x0008) /*!< Capture/Compare 1 Complementary output Polarity */ +#define TIM_CCER_CC2E ((uint16_t)0x0010) /*!< Capture/Compare 2 output enable */ +#define TIM_CCER_CC2P ((uint16_t)0x0020) /*!< Capture/Compare 2 output Polarity */ +#define TIM_CCER_CC2NE ((uint16_t)0x0040) /*!< Capture/Compare 2 Complementary output enable */ +#define TIM_CCER_CC2NP ((uint16_t)0x0080) /*!< Capture/Compare 2 Complementary output Polarity */ +#define TIM_CCER_CC3E ((uint16_t)0x0100) /*!< Capture/Compare 3 output enable */ +#define TIM_CCER_CC3P ((uint16_t)0x0200) /*!< Capture/Compare 3 output Polarity */ +#define TIM_CCER_CC3NE ((uint16_t)0x0400) /*!< Capture/Compare 3 Complementary output enable */ +#define TIM_CCER_CC3NP ((uint16_t)0x0800) /*!< Capture/Compare 3 Complementary output Polarity */ +#define TIM_CCER_CC4E ((uint16_t)0x1000) /*!< Capture/Compare 4 output enable */ +#define TIM_CCER_CC4P ((uint16_t)0x2000) /*!< Capture/Compare 4 output Polarity */ +#define TIM_CCER_CC4NP ((uint16_t)0x8000) /*!< Capture/Compare 4 Complementary output Polarity */ + +/******************* Bit definition for TIM_CNT register ********************/ +#define TIM_CNT_CNT ((uint16_t)0xFFFF) /*!< Counter Value */ + +/******************* Bit definition for TIM_PSC register ********************/ +#define TIM_PSC_PSC ((uint16_t)0xFFFF) /*!< Prescaler Value */ + +/******************* Bit definition for TIM_ARR register ********************/ +#define TIM_ARR_ARR ((uint16_t)0xFFFF) /*!< actual auto-reload Value */ + +/******************* Bit definition for TIM_RCR register ********************/ +#define TIM_RCR_REP ((uint8_t)0xFF) /*!< Repetition Counter Value */ + +/******************* Bit definition for TIM_CCR1 register *******************/ +#define TIM_CCR1_CCR1 ((uint16_t)0xFFFF) /*!< Capture/Compare 1 Value */ + +/******************* Bit definition for TIM_CCR2 register *******************/ +#define TIM_CCR2_CCR2 ((uint16_t)0xFFFF) /*!< Capture/Compare 2 Value */ + +/******************* Bit definition for TIM_CCR3 register *******************/ +#define TIM_CCR3_CCR3 ((uint16_t)0xFFFF) /*!< Capture/Compare 3 Value */ + +/******************* Bit definition for TIM_CCR4 register *******************/ +#define TIM_CCR4_CCR4 ((uint16_t)0xFFFF) /*!< Capture/Compare 4 Value */ + +/******************* Bit definition for TIM_BDTR register *******************/ +#define TIM_BDTR_DTG ((uint16_t)0x00FF) /*!< DTG[0:7] bits (Dead-Time Generator set-up) */ +#define TIM_BDTR_DTG_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_BDTR_DTG_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define TIM_BDTR_DTG_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define TIM_BDTR_DTG_3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define TIM_BDTR_DTG_4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define TIM_BDTR_DTG_5 ((uint16_t)0x0020) /*!< Bit 5 */ +#define TIM_BDTR_DTG_6 ((uint16_t)0x0040) /*!< Bit 6 */ +#define TIM_BDTR_DTG_7 ((uint16_t)0x0080) /*!< Bit 7 */ + +#define TIM_BDTR_LOCK ((uint16_t)0x0300) /*!< LOCK[1:0] bits (Lock Configuration) */ +#define TIM_BDTR_LOCK_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_BDTR_LOCK_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define TIM_BDTR_OSSI ((uint16_t)0x0400) /*!< Off-State Selection for Idle mode */ +#define TIM_BDTR_OSSR ((uint16_t)0x0800) /*!< Off-State Selection for Run mode */ +#define TIM_BDTR_BKE ((uint16_t)0x1000) /*!< Break enable */ +#define TIM_BDTR_BKP ((uint16_t)0x2000) /*!< Break Polarity */ +#define TIM_BDTR_AOE ((uint16_t)0x4000) /*!< Automatic Output enable */ +#define TIM_BDTR_MOE ((uint16_t)0x8000) /*!< Main Output enable */ + +/******************* Bit definition for TIM_DCR register ********************/ +#define TIM_DCR_DBA ((uint16_t)0x001F) /*!< DBA[4:0] bits (DMA Base Address) */ +#define TIM_DCR_DBA_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define TIM_DCR_DBA_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define TIM_DCR_DBA_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define TIM_DCR_DBA_3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define TIM_DCR_DBA_4 ((uint16_t)0x0010) /*!< Bit 4 */ + +#define TIM_DCR_DBL ((uint16_t)0x1F00) /*!< DBL[4:0] bits (DMA Burst Length) */ +#define TIM_DCR_DBL_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define TIM_DCR_DBL_1 ((uint16_t)0x0200) /*!< Bit 1 */ +#define TIM_DCR_DBL_2 ((uint16_t)0x0400) /*!< Bit 2 */ +#define TIM_DCR_DBL_3 ((uint16_t)0x0800) /*!< Bit 3 */ +#define TIM_DCR_DBL_4 ((uint16_t)0x1000) /*!< Bit 4 */ + +/******************* Bit definition for TIM_DMAR register *******************/ +#define TIM_DMAR_DMAB ((uint16_t)0xFFFF) /*!< DMA register for burst accesses */ + +/******************************************************************************/ +/* */ +/* Real-Time Clock */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for RTC_CRH register ********************/ +#define RTC_CRH_SECIE ((uint8_t)0x01) /*!< Second Interrupt Enable */ +#define RTC_CRH_ALRIE ((uint8_t)0x02) /*!< Alarm Interrupt Enable */ +#define RTC_CRH_OWIE ((uint8_t)0x04) /*!< OverfloW Interrupt Enable */ + +/******************* Bit definition for RTC_CRL register ********************/ +#define RTC_CRL_SECF ((uint8_t)0x01) /*!< Second Flag */ +#define RTC_CRL_ALRF ((uint8_t)0x02) /*!< Alarm Flag */ +#define RTC_CRL_OWF ((uint8_t)0x04) /*!< OverfloW Flag */ +#define RTC_CRL_RSF ((uint8_t)0x08) /*!< Registers Synchronized Flag */ +#define RTC_CRL_CNF ((uint8_t)0x10) /*!< Configuration Flag */ +#define RTC_CRL_RTOFF ((uint8_t)0x20) /*!< RTC operation OFF */ + +/******************* Bit definition for RTC_PRLH register *******************/ +#define RTC_PRLH_PRL ((uint16_t)0x000F) /*!< RTC Prescaler Reload Value High */ + +/******************* Bit definition for RTC_PRLL register *******************/ +#define RTC_PRLL_PRL ((uint16_t)0xFFFF) /*!< RTC Prescaler Reload Value Low */ + +/******************* Bit definition for RTC_DIVH register *******************/ +#define RTC_DIVH_RTC_DIV ((uint16_t)0x000F) /*!< RTC Clock Divider High */ + +/******************* Bit definition for RTC_DIVL register *******************/ +#define RTC_DIVL_RTC_DIV ((uint16_t)0xFFFF) /*!< RTC Clock Divider Low */ + +/******************* Bit definition for RTC_CNTH register *******************/ +#define RTC_CNTH_RTC_CNT ((uint16_t)0xFFFF) /*!< RTC Counter High */ + +/******************* Bit definition for RTC_CNTL register *******************/ +#define RTC_CNTL_RTC_CNT ((uint16_t)0xFFFF) /*!< RTC Counter Low */ + +/******************* Bit definition for RTC_ALRH register *******************/ +#define RTC_ALRH_RTC_ALR ((uint16_t)0xFFFF) /*!< RTC Alarm High */ + +/******************* Bit definition for RTC_ALRL register *******************/ +#define RTC_ALRL_RTC_ALR ((uint16_t)0xFFFF) /*!< RTC Alarm Low */ + +/******************************************************************************/ +/* */ +/* Independent WATCHDOG */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for IWDG_KR register ********************/ +#define IWDG_KR_KEY ((uint16_t)0xFFFF) /*!< Key value (write only, read 0000h) */ + +/******************* Bit definition for IWDG_PR register ********************/ +#define IWDG_PR_PR ((uint8_t)0x07) /*!< PR[2:0] (Prescaler divider) */ +#define IWDG_PR_PR_0 ((uint8_t)0x01) /*!< Bit 0 */ +#define IWDG_PR_PR_1 ((uint8_t)0x02) /*!< Bit 1 */ +#define IWDG_PR_PR_2 ((uint8_t)0x04) /*!< Bit 2 */ + +/******************* Bit definition for IWDG_RLR register *******************/ +#define IWDG_RLR_RL ((uint16_t)0x0FFF) /*!< Watchdog counter reload value */ + +/******************* Bit definition for IWDG_SR register ********************/ +#define IWDG_SR_PVU ((uint8_t)0x01) /*!< Watchdog prescaler value update */ +#define IWDG_SR_RVU ((uint8_t)0x02) /*!< Watchdog counter reload value update */ + +/******************************************************************************/ +/* */ +/* Window WATCHDOG */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for WWDG_CR register ********************/ +#define WWDG_CR_T ((uint8_t)0x7F) /*!< T[6:0] bits (7-Bit counter (MSB to LSB)) */ +#define WWDG_CR_T0 ((uint8_t)0x01) /*!< Bit 0 */ +#define WWDG_CR_T1 ((uint8_t)0x02) /*!< Bit 1 */ +#define WWDG_CR_T2 ((uint8_t)0x04) /*!< Bit 2 */ +#define WWDG_CR_T3 ((uint8_t)0x08) /*!< Bit 3 */ +#define WWDG_CR_T4 ((uint8_t)0x10) /*!< Bit 4 */ +#define WWDG_CR_T5 ((uint8_t)0x20) /*!< Bit 5 */ +#define WWDG_CR_T6 ((uint8_t)0x40) /*!< Bit 6 */ + +#define WWDG_CR_WDGA ((uint8_t)0x80) /*!< Activation bit */ + +/******************* Bit definition for WWDG_CFR register *******************/ +#define WWDG_CFR_W ((uint16_t)0x007F) /*!< W[6:0] bits (7-bit window value) */ +#define WWDG_CFR_W0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define WWDG_CFR_W1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define WWDG_CFR_W2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define WWDG_CFR_W3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define WWDG_CFR_W4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define WWDG_CFR_W5 ((uint16_t)0x0020) /*!< Bit 5 */ +#define WWDG_CFR_W6 ((uint16_t)0x0040) /*!< Bit 6 */ + +#define WWDG_CFR_WDGTB ((uint16_t)0x0180) /*!< WDGTB[1:0] bits (Timer Base) */ +#define WWDG_CFR_WDGTB0 ((uint16_t)0x0080) /*!< Bit 0 */ +#define WWDG_CFR_WDGTB1 ((uint16_t)0x0100) /*!< Bit 1 */ + +#define WWDG_CFR_EWI ((uint16_t)0x0200) /*!< Early Wakeup Interrupt */ + +/******************* Bit definition for WWDG_SR register ********************/ +#define WWDG_SR_EWIF ((uint8_t)0x01) /*!< Early Wakeup Interrupt Flag */ + +/******************************************************************************/ +/* */ +/* Flexible Static Memory Controller */ +/* */ +/******************************************************************************/ + +/****************** Bit definition for FSMC_BCR1 register *******************/ +#define FSMC_BCR1_MBKEN ((uint32_t)0x00000001) /*!< Memory bank enable bit */ +#define FSMC_BCR1_MUXEN ((uint32_t)0x00000002) /*!< Address/data multiplexing enable bit */ + +#define FSMC_BCR1_MTYP ((uint32_t)0x0000000C) /*!< MTYP[1:0] bits (Memory type) */ +#define FSMC_BCR1_MTYP_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define FSMC_BCR1_MTYP_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define FSMC_BCR1_MWID ((uint32_t)0x00000030) /*!< MWID[1:0] bits (Memory data bus width) */ +#define FSMC_BCR1_MWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BCR1_MWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_BCR1_FACCEN ((uint32_t)0x00000040) /*!< Flash access enable */ +#define FSMC_BCR1_BURSTEN ((uint32_t)0x00000100) /*!< Burst enable bit */ +#define FSMC_BCR1_WAITPOL ((uint32_t)0x00000200) /*!< Wait signal polarity bit */ +#define FSMC_BCR1_WRAPMOD ((uint32_t)0x00000400) /*!< Wrapped burst mode support */ +#define FSMC_BCR1_WAITCFG ((uint32_t)0x00000800) /*!< Wait timing configuration */ +#define FSMC_BCR1_WREN ((uint32_t)0x00001000) /*!< Write enable bit */ +#define FSMC_BCR1_WAITEN ((uint32_t)0x00002000) /*!< Wait enable bit */ +#define FSMC_BCR1_EXTMOD ((uint32_t)0x00004000) /*!< Extended mode enable */ +#define FSMC_BCR1_ASYNCWAIT ((uint32_t)0x00008000) /*!< Asynchronous wait */ +#define FSMC_BCR1_CBURSTRW ((uint32_t)0x00080000) /*!< Write burst enable */ + +/****************** Bit definition for FSMC_BCR2 register *******************/ +#define FSMC_BCR2_MBKEN ((uint32_t)0x00000001) /*!< Memory bank enable bit */ +#define FSMC_BCR2_MUXEN ((uint32_t)0x00000002) /*!< Address/data multiplexing enable bit */ + +#define FSMC_BCR2_MTYP ((uint32_t)0x0000000C) /*!< MTYP[1:0] bits (Memory type) */ +#define FSMC_BCR2_MTYP_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define FSMC_BCR2_MTYP_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define FSMC_BCR2_MWID ((uint32_t)0x00000030) /*!< MWID[1:0] bits (Memory data bus width) */ +#define FSMC_BCR2_MWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BCR2_MWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_BCR2_FACCEN ((uint32_t)0x00000040) /*!< Flash access enable */ +#define FSMC_BCR2_BURSTEN ((uint32_t)0x00000100) /*!< Burst enable bit */ +#define FSMC_BCR2_WAITPOL ((uint32_t)0x00000200) /*!< Wait signal polarity bit */ +#define FSMC_BCR2_WRAPMOD ((uint32_t)0x00000400) /*!< Wrapped burst mode support */ +#define FSMC_BCR2_WAITCFG ((uint32_t)0x00000800) /*!< Wait timing configuration */ +#define FSMC_BCR2_WREN ((uint32_t)0x00001000) /*!< Write enable bit */ +#define FSMC_BCR2_WAITEN ((uint32_t)0x00002000) /*!< Wait enable bit */ +#define FSMC_BCR2_EXTMOD ((uint32_t)0x00004000) /*!< Extended mode enable */ +#define FSMC_BCR2_ASYNCWAIT ((uint32_t)0x00008000) /*!< Asynchronous wait */ +#define FSMC_BCR2_CBURSTRW ((uint32_t)0x00080000) /*!< Write burst enable */ + +/****************** Bit definition for FSMC_BCR3 register *******************/ +#define FSMC_BCR3_MBKEN ((uint32_t)0x00000001) /*!< Memory bank enable bit */ +#define FSMC_BCR3_MUXEN ((uint32_t)0x00000002) /*!< Address/data multiplexing enable bit */ + +#define FSMC_BCR3_MTYP ((uint32_t)0x0000000C) /*!< MTYP[1:0] bits (Memory type) */ +#define FSMC_BCR3_MTYP_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define FSMC_BCR3_MTYP_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define FSMC_BCR3_MWID ((uint32_t)0x00000030) /*!< MWID[1:0] bits (Memory data bus width) */ +#define FSMC_BCR3_MWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BCR3_MWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_BCR3_FACCEN ((uint32_t)0x00000040) /*!< Flash access enable */ +#define FSMC_BCR3_BURSTEN ((uint32_t)0x00000100) /*!< Burst enable bit */ +#define FSMC_BCR3_WAITPOL ((uint32_t)0x00000200) /*!< Wait signal polarity bit. */ +#define FSMC_BCR3_WRAPMOD ((uint32_t)0x00000400) /*!< Wrapped burst mode support */ +#define FSMC_BCR3_WAITCFG ((uint32_t)0x00000800) /*!< Wait timing configuration */ +#define FSMC_BCR3_WREN ((uint32_t)0x00001000) /*!< Write enable bit */ +#define FSMC_BCR3_WAITEN ((uint32_t)0x00002000) /*!< Wait enable bit */ +#define FSMC_BCR3_EXTMOD ((uint32_t)0x00004000) /*!< Extended mode enable */ +#define FSMC_BCR3_ASYNCWAIT ((uint32_t)0x00008000) /*!< Asynchronous wait */ +#define FSMC_BCR3_CBURSTRW ((uint32_t)0x00080000) /*!< Write burst enable */ + +/****************** Bit definition for FSMC_BCR4 register *******************/ +#define FSMC_BCR4_MBKEN ((uint32_t)0x00000001) /*!< Memory bank enable bit */ +#define FSMC_BCR4_MUXEN ((uint32_t)0x00000002) /*!< Address/data multiplexing enable bit */ + +#define FSMC_BCR4_MTYP ((uint32_t)0x0000000C) /*!< MTYP[1:0] bits (Memory type) */ +#define FSMC_BCR4_MTYP_0 ((uint32_t)0x00000004) /*!< Bit 0 */ +#define FSMC_BCR4_MTYP_1 ((uint32_t)0x00000008) /*!< Bit 1 */ + +#define FSMC_BCR4_MWID ((uint32_t)0x00000030) /*!< MWID[1:0] bits (Memory data bus width) */ +#define FSMC_BCR4_MWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BCR4_MWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_BCR4_FACCEN ((uint32_t)0x00000040) /*!< Flash access enable */ +#define FSMC_BCR4_BURSTEN ((uint32_t)0x00000100) /*!< Burst enable bit */ +#define FSMC_BCR4_WAITPOL ((uint32_t)0x00000200) /*!< Wait signal polarity bit */ +#define FSMC_BCR4_WRAPMOD ((uint32_t)0x00000400) /*!< Wrapped burst mode support */ +#define FSMC_BCR4_WAITCFG ((uint32_t)0x00000800) /*!< Wait timing configuration */ +#define FSMC_BCR4_WREN ((uint32_t)0x00001000) /*!< Write enable bit */ +#define FSMC_BCR4_WAITEN ((uint32_t)0x00002000) /*!< Wait enable bit */ +#define FSMC_BCR4_EXTMOD ((uint32_t)0x00004000) /*!< Extended mode enable */ +#define FSMC_BCR4_ASYNCWAIT ((uint32_t)0x00008000) /*!< Asynchronous wait */ +#define FSMC_BCR4_CBURSTRW ((uint32_t)0x00080000) /*!< Write burst enable */ + +/****************** Bit definition for FSMC_BTR1 register ******************/ +#define FSMC_BTR1_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BTR1_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BTR1_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BTR1_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BTR1_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BTR1_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BTR1_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BTR1_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BTR1_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BTR1_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BTR1_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BTR1_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BTR1_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BTR1_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BTR1_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BTR1_BUSTURN ((uint32_t)0x000F0000) /*!< BUSTURN[3:0] bits (Bus turnaround phase duration) */ +#define FSMC_BTR1_BUSTURN_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_BTR1_BUSTURN_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_BTR1_BUSTURN_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_BTR1_BUSTURN_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define FSMC_BTR1_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BTR1_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BTR1_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BTR1_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BTR1_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BTR1_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BTR1_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BTR1_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BTR1_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BTR1_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BTR1_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BTR1_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BTR1_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BTR2 register *******************/ +#define FSMC_BTR2_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BTR2_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BTR2_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BTR2_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BTR2_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BTR2_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BTR2_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BTR2_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BTR2_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BTR2_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BTR2_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BTR2_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BTR2_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BTR2_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BTR2_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BTR2_BUSTURN ((uint32_t)0x000F0000) /*!< BUSTURN[3:0] bits (Bus turnaround phase duration) */ +#define FSMC_BTR2_BUSTURN_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_BTR2_BUSTURN_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_BTR2_BUSTURN_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_BTR2_BUSTURN_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define FSMC_BTR2_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BTR2_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BTR2_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BTR2_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BTR2_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BTR2_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BTR2_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BTR2_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BTR2_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BTR2_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BTR2_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BTR2_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BTR2_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/******************* Bit definition for FSMC_BTR3 register *******************/ +#define FSMC_BTR3_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BTR3_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BTR3_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BTR3_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BTR3_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BTR3_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BTR3_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BTR3_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BTR3_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BTR3_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BTR3_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BTR3_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BTR3_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BTR3_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BTR3_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BTR3_BUSTURN ((uint32_t)0x000F0000) /*!< BUSTURN[3:0] bits (Bus turnaround phase duration) */ +#define FSMC_BTR3_BUSTURN_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_BTR3_BUSTURN_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_BTR3_BUSTURN_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_BTR3_BUSTURN_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define FSMC_BTR3_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BTR3_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BTR3_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BTR3_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BTR3_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BTR3_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BTR3_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BTR3_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BTR3_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BTR3_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BTR3_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BTR3_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BTR3_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BTR4 register *******************/ +#define FSMC_BTR4_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BTR4_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BTR4_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BTR4_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BTR4_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BTR4_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BTR4_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BTR4_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BTR4_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BTR4_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BTR4_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BTR4_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BTR4_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BTR4_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BTR4_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BTR4_BUSTURN ((uint32_t)0x000F0000) /*!< BUSTURN[3:0] bits (Bus turnaround phase duration) */ +#define FSMC_BTR4_BUSTURN_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_BTR4_BUSTURN_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_BTR4_BUSTURN_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_BTR4_BUSTURN_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define FSMC_BTR4_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BTR4_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BTR4_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BTR4_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BTR4_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BTR4_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BTR4_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BTR4_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BTR4_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BTR4_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BTR4_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BTR4_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BTR4_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BWTR1 register ******************/ +#define FSMC_BWTR1_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BWTR1_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BWTR1_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BWTR1_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BWTR1_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BWTR1_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BWTR1_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BWTR1_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BWTR1_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BWTR1_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BWTR1_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BWTR1_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BWTR1_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BWTR1_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BWTR1_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BWTR1_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BWTR1_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BWTR1_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BWTR1_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BWTR1_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BWTR1_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BWTR1_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BWTR1_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BWTR1_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BWTR1_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BWTR1_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BWTR1_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BWTR1_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BWTR2 register ******************/ +#define FSMC_BWTR2_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BWTR2_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BWTR2_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BWTR2_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BWTR2_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BWTR2_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BWTR2_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BWTR2_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BWTR2_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BWTR2_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BWTR2_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BWTR2_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BWTR2_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BWTR2_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BWTR2_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BWTR2_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BWTR2_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BWTR2_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1*/ +#define FSMC_BWTR2_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BWTR2_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BWTR2_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BWTR2_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BWTR2_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BWTR2_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BWTR2_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BWTR2_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BWTR2_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BWTR2_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BWTR3 register ******************/ +#define FSMC_BWTR3_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BWTR3_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BWTR3_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BWTR3_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BWTR3_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BWTR3_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BWTR3_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BWTR3_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BWTR3_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BWTR3_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BWTR3_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BWTR3_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BWTR3_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BWTR3_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BWTR3_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BWTR3_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BWTR3_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BWTR3_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BWTR3_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BWTR3_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BWTR3_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BWTR3_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BWTR3_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BWTR3_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BWTR3_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BWTR3_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BWTR3_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BWTR3_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_BWTR4 register ******************/ +#define FSMC_BWTR4_ADDSET ((uint32_t)0x0000000F) /*!< ADDSET[3:0] bits (Address setup phase duration) */ +#define FSMC_BWTR4_ADDSET_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_BWTR4_ADDSET_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_BWTR4_ADDSET_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_BWTR4_ADDSET_3 ((uint32_t)0x00000008) /*!< Bit 3 */ + +#define FSMC_BWTR4_ADDHLD ((uint32_t)0x000000F0) /*!< ADDHLD[3:0] bits (Address-hold phase duration) */ +#define FSMC_BWTR4_ADDHLD_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_BWTR4_ADDHLD_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define FSMC_BWTR4_ADDHLD_2 ((uint32_t)0x00000040) /*!< Bit 2 */ +#define FSMC_BWTR4_ADDHLD_3 ((uint32_t)0x00000080) /*!< Bit 3 */ + +#define FSMC_BWTR4_DATAST ((uint32_t)0x0000FF00) /*!< DATAST [3:0] bits (Data-phase duration) */ +#define FSMC_BWTR4_DATAST_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_BWTR4_DATAST_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_BWTR4_DATAST_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_BWTR4_DATAST_3 ((uint32_t)0x00000800) /*!< Bit 3 */ + +#define FSMC_BWTR4_CLKDIV ((uint32_t)0x00F00000) /*!< CLKDIV[3:0] bits (Clock divide ratio) */ +#define FSMC_BWTR4_CLKDIV_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define FSMC_BWTR4_CLKDIV_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define FSMC_BWTR4_CLKDIV_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define FSMC_BWTR4_CLKDIV_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define FSMC_BWTR4_DATLAT ((uint32_t)0x0F000000) /*!< DATLA[3:0] bits (Data latency) */ +#define FSMC_BWTR4_DATLAT_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_BWTR4_DATLAT_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_BWTR4_DATLAT_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_BWTR4_DATLAT_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define FSMC_BWTR4_ACCMOD ((uint32_t)0x30000000) /*!< ACCMOD[1:0] bits (Access mode) */ +#define FSMC_BWTR4_ACCMOD_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define FSMC_BWTR4_ACCMOD_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +/****************** Bit definition for FSMC_PCR2 register *******************/ +#define FSMC_PCR2_PWAITEN ((uint32_t)0x00000002) /*!< Wait feature enable bit */ +#define FSMC_PCR2_PBKEN ((uint32_t)0x00000004) /*!< PC Card/NAND Flash memory bank enable bit */ +#define FSMC_PCR2_PTYP ((uint32_t)0x00000008) /*!< Memory type */ + +#define FSMC_PCR2_PWID ((uint32_t)0x00000030) /*!< PWID[1:0] bits (NAND Flash databus width) */ +#define FSMC_PCR2_PWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_PCR2_PWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_PCR2_ECCEN ((uint32_t)0x00000040) /*!< ECC computation logic enable bit */ + +#define FSMC_PCR2_TCLR ((uint32_t)0x00001E00) /*!< TCLR[3:0] bits (CLE to RE delay) */ +#define FSMC_PCR2_TCLR_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define FSMC_PCR2_TCLR_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define FSMC_PCR2_TCLR_2 ((uint32_t)0x00000800) /*!< Bit 2 */ +#define FSMC_PCR2_TCLR_3 ((uint32_t)0x00001000) /*!< Bit 3 */ + +#define FSMC_PCR2_TAR ((uint32_t)0x0001E000) /*!< TAR[3:0] bits (ALE to RE delay) */ +#define FSMC_PCR2_TAR_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define FSMC_PCR2_TAR_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define FSMC_PCR2_TAR_2 ((uint32_t)0x00008000) /*!< Bit 2 */ +#define FSMC_PCR2_TAR_3 ((uint32_t)0x00010000) /*!< Bit 3 */ + +#define FSMC_PCR2_ECCPS ((uint32_t)0x000E0000) /*!< ECCPS[1:0] bits (ECC page size) */ +#define FSMC_PCR2_ECCPS_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define FSMC_PCR2_ECCPS_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define FSMC_PCR2_ECCPS_2 ((uint32_t)0x00080000) /*!< Bit 2 */ + +/****************** Bit definition for FSMC_PCR3 register *******************/ +#define FSMC_PCR3_PWAITEN ((uint32_t)0x00000002) /*!< Wait feature enable bit */ +#define FSMC_PCR3_PBKEN ((uint32_t)0x00000004) /*!< PC Card/NAND Flash memory bank enable bit */ +#define FSMC_PCR3_PTYP ((uint32_t)0x00000008) /*!< Memory type */ + +#define FSMC_PCR3_PWID ((uint32_t)0x00000030) /*!< PWID[1:0] bits (NAND Flash databus width) */ +#define FSMC_PCR3_PWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_PCR3_PWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_PCR3_ECCEN ((uint32_t)0x00000040) /*!< ECC computation logic enable bit */ + +#define FSMC_PCR3_TCLR ((uint32_t)0x00001E00) /*!< TCLR[3:0] bits (CLE to RE delay) */ +#define FSMC_PCR3_TCLR_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define FSMC_PCR3_TCLR_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define FSMC_PCR3_TCLR_2 ((uint32_t)0x00000800) /*!< Bit 2 */ +#define FSMC_PCR3_TCLR_3 ((uint32_t)0x00001000) /*!< Bit 3 */ + +#define FSMC_PCR3_TAR ((uint32_t)0x0001E000) /*!< TAR[3:0] bits (ALE to RE delay) */ +#define FSMC_PCR3_TAR_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define FSMC_PCR3_TAR_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define FSMC_PCR3_TAR_2 ((uint32_t)0x00008000) /*!< Bit 2 */ +#define FSMC_PCR3_TAR_3 ((uint32_t)0x00010000) /*!< Bit 3 */ + +#define FSMC_PCR3_ECCPS ((uint32_t)0x000E0000) /*!< ECCPS[2:0] bits (ECC page size) */ +#define FSMC_PCR3_ECCPS_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define FSMC_PCR3_ECCPS_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define FSMC_PCR3_ECCPS_2 ((uint32_t)0x00080000) /*!< Bit 2 */ + +/****************** Bit definition for FSMC_PCR4 register *******************/ +#define FSMC_PCR4_PWAITEN ((uint32_t)0x00000002) /*!< Wait feature enable bit */ +#define FSMC_PCR4_PBKEN ((uint32_t)0x00000004) /*!< PC Card/NAND Flash memory bank enable bit */ +#define FSMC_PCR4_PTYP ((uint32_t)0x00000008) /*!< Memory type */ + +#define FSMC_PCR4_PWID ((uint32_t)0x00000030) /*!< PWID[1:0] bits (NAND Flash databus width) */ +#define FSMC_PCR4_PWID_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define FSMC_PCR4_PWID_1 ((uint32_t)0x00000020) /*!< Bit 1 */ + +#define FSMC_PCR4_ECCEN ((uint32_t)0x00000040) /*!< ECC computation logic enable bit */ + +#define FSMC_PCR4_TCLR ((uint32_t)0x00001E00) /*!< TCLR[3:0] bits (CLE to RE delay) */ +#define FSMC_PCR4_TCLR_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define FSMC_PCR4_TCLR_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define FSMC_PCR4_TCLR_2 ((uint32_t)0x00000800) /*!< Bit 2 */ +#define FSMC_PCR4_TCLR_3 ((uint32_t)0x00001000) /*!< Bit 3 */ + +#define FSMC_PCR4_TAR ((uint32_t)0x0001E000) /*!< TAR[3:0] bits (ALE to RE delay) */ +#define FSMC_PCR4_TAR_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define FSMC_PCR4_TAR_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define FSMC_PCR4_TAR_2 ((uint32_t)0x00008000) /*!< Bit 2 */ +#define FSMC_PCR4_TAR_3 ((uint32_t)0x00010000) /*!< Bit 3 */ + +#define FSMC_PCR4_ECCPS ((uint32_t)0x000E0000) /*!< ECCPS[2:0] bits (ECC page size) */ +#define FSMC_PCR4_ECCPS_0 ((uint32_t)0x00020000) /*!< Bit 0 */ +#define FSMC_PCR4_ECCPS_1 ((uint32_t)0x00040000) /*!< Bit 1 */ +#define FSMC_PCR4_ECCPS_2 ((uint32_t)0x00080000) /*!< Bit 2 */ + +/******************* Bit definition for FSMC_SR2 register *******************/ +#define FSMC_SR2_IRS ((uint8_t)0x01) /*!< Interrupt Rising Edge status */ +#define FSMC_SR2_ILS ((uint8_t)0x02) /*!< Interrupt Level status */ +#define FSMC_SR2_IFS ((uint8_t)0x04) /*!< Interrupt Falling Edge status */ +#define FSMC_SR2_IREN ((uint8_t)0x08) /*!< Interrupt Rising Edge detection Enable bit */ +#define FSMC_SR2_ILEN ((uint8_t)0x10) /*!< Interrupt Level detection Enable bit */ +#define FSMC_SR2_IFEN ((uint8_t)0x20) /*!< Interrupt Falling Edge detection Enable bit */ +#define FSMC_SR2_FEMPT ((uint8_t)0x40) /*!< FIFO empty */ + +/******************* Bit definition for FSMC_SR3 register *******************/ +#define FSMC_SR3_IRS ((uint8_t)0x01) /*!< Interrupt Rising Edge status */ +#define FSMC_SR3_ILS ((uint8_t)0x02) /*!< Interrupt Level status */ +#define FSMC_SR3_IFS ((uint8_t)0x04) /*!< Interrupt Falling Edge status */ +#define FSMC_SR3_IREN ((uint8_t)0x08) /*!< Interrupt Rising Edge detection Enable bit */ +#define FSMC_SR3_ILEN ((uint8_t)0x10) /*!< Interrupt Level detection Enable bit */ +#define FSMC_SR3_IFEN ((uint8_t)0x20) /*!< Interrupt Falling Edge detection Enable bit */ +#define FSMC_SR3_FEMPT ((uint8_t)0x40) /*!< FIFO empty */ + +/******************* Bit definition for FSMC_SR4 register *******************/ +#define FSMC_SR4_IRS ((uint8_t)0x01) /*!< Interrupt Rising Edge status */ +#define FSMC_SR4_ILS ((uint8_t)0x02) /*!< Interrupt Level status */ +#define FSMC_SR4_IFS ((uint8_t)0x04) /*!< Interrupt Falling Edge status */ +#define FSMC_SR4_IREN ((uint8_t)0x08) /*!< Interrupt Rising Edge detection Enable bit */ +#define FSMC_SR4_ILEN ((uint8_t)0x10) /*!< Interrupt Level detection Enable bit */ +#define FSMC_SR4_IFEN ((uint8_t)0x20) /*!< Interrupt Falling Edge detection Enable bit */ +#define FSMC_SR4_FEMPT ((uint8_t)0x40) /*!< FIFO empty */ + +/****************** Bit definition for FSMC_PMEM2 register ******************/ +#define FSMC_PMEM2_MEMSET2 ((uint32_t)0x000000FF) /*!< MEMSET2[7:0] bits (Common memory 2 setup time) */ +#define FSMC_PMEM2_MEMSET2_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PMEM2_MEMSET2_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PMEM2_MEMSET2_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PMEM2_MEMSET2_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PMEM2_MEMSET2_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PMEM2_MEMSET2_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PMEM2_MEMSET2_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PMEM2_MEMSET2_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PMEM2_MEMWAIT2 ((uint32_t)0x0000FF00) /*!< MEMWAIT2[7:0] bits (Common memory 2 wait time) */ +#define FSMC_PMEM2_MEMWAIT2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PMEM2_MEMWAIT2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PMEM2_MEMWAIT2_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PMEM2_MEMWAIT2_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PMEM2_MEMWAIT2_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PMEM2_MEMWAIT2_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PMEM2_MEMWAIT2_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PMEM2_MEMWAIT2_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PMEM2_MEMHOLD2 ((uint32_t)0x00FF0000) /*!< MEMHOLD2[7:0] bits (Common memory 2 hold time) */ +#define FSMC_PMEM2_MEMHOLD2_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PMEM2_MEMHOLD2_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PMEM2_MEMHOLD2_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PMEM2_MEMHOLD2_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PMEM2_MEMHOLD2_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PMEM2_MEMHOLD2_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PMEM2_MEMHOLD2_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PMEM2_MEMHOLD2_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PMEM2_MEMHIZ2 ((uint32_t)0xFF000000) /*!< MEMHIZ2[7:0] bits (Common memory 2 databus HiZ time) */ +#define FSMC_PMEM2_MEMHIZ2_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PMEM2_MEMHIZ2_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PMEM2_MEMHIZ2_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PMEM2_MEMHIZ2_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PMEM2_MEMHIZ2_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PMEM2_MEMHIZ2_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PMEM2_MEMHIZ2_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PMEM2_MEMHIZ2_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PMEM3 register ******************/ +#define FSMC_PMEM3_MEMSET3 ((uint32_t)0x000000FF) /*!< MEMSET3[7:0] bits (Common memory 3 setup time) */ +#define FSMC_PMEM3_MEMSET3_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PMEM3_MEMSET3_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PMEM3_MEMSET3_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PMEM3_MEMSET3_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PMEM3_MEMSET3_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PMEM3_MEMSET3_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PMEM3_MEMSET3_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PMEM3_MEMSET3_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PMEM3_MEMWAIT3 ((uint32_t)0x0000FF00) /*!< MEMWAIT3[7:0] bits (Common memory 3 wait time) */ +#define FSMC_PMEM3_MEMWAIT3_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PMEM3_MEMWAIT3_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PMEM3_MEMWAIT3_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PMEM3_MEMWAIT3_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PMEM3_MEMWAIT3_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PMEM3_MEMWAIT3_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PMEM3_MEMWAIT3_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PMEM3_MEMWAIT3_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PMEM3_MEMHOLD3 ((uint32_t)0x00FF0000) /*!< MEMHOLD3[7:0] bits (Common memory 3 hold time) */ +#define FSMC_PMEM3_MEMHOLD3_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PMEM3_MEMHOLD3_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PMEM3_MEMHOLD3_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PMEM3_MEMHOLD3_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PMEM3_MEMHOLD3_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PMEM3_MEMHOLD3_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PMEM3_MEMHOLD3_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PMEM3_MEMHOLD3_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PMEM3_MEMHIZ3 ((uint32_t)0xFF000000) /*!< MEMHIZ3[7:0] bits (Common memory 3 databus HiZ time) */ +#define FSMC_PMEM3_MEMHIZ3_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PMEM3_MEMHIZ3_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PMEM3_MEMHIZ3_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PMEM3_MEMHIZ3_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PMEM3_MEMHIZ3_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PMEM3_MEMHIZ3_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PMEM3_MEMHIZ3_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PMEM3_MEMHIZ3_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PMEM4 register ******************/ +#define FSMC_PMEM4_MEMSET4 ((uint32_t)0x000000FF) /*!< MEMSET4[7:0] bits (Common memory 4 setup time) */ +#define FSMC_PMEM4_MEMSET4_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PMEM4_MEMSET4_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PMEM4_MEMSET4_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PMEM4_MEMSET4_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PMEM4_MEMSET4_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PMEM4_MEMSET4_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PMEM4_MEMSET4_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PMEM4_MEMSET4_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PMEM4_MEMWAIT4 ((uint32_t)0x0000FF00) /*!< MEMWAIT4[7:0] bits (Common memory 4 wait time) */ +#define FSMC_PMEM4_MEMWAIT4_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PMEM4_MEMWAIT4_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PMEM4_MEMWAIT4_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PMEM4_MEMWAIT4_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PMEM4_MEMWAIT4_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PMEM4_MEMWAIT4_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PMEM4_MEMWAIT4_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PMEM4_MEMWAIT4_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PMEM4_MEMHOLD4 ((uint32_t)0x00FF0000) /*!< MEMHOLD4[7:0] bits (Common memory 4 hold time) */ +#define FSMC_PMEM4_MEMHOLD4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PMEM4_MEMHOLD4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PMEM4_MEMHOLD4_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PMEM4_MEMHOLD4_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PMEM4_MEMHOLD4_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PMEM4_MEMHOLD4_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PMEM4_MEMHOLD4_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PMEM4_MEMHOLD4_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PMEM4_MEMHIZ4 ((uint32_t)0xFF000000) /*!< MEMHIZ4[7:0] bits (Common memory 4 databus HiZ time) */ +#define FSMC_PMEM4_MEMHIZ4_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PMEM4_MEMHIZ4_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PMEM4_MEMHIZ4_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PMEM4_MEMHIZ4_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PMEM4_MEMHIZ4_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PMEM4_MEMHIZ4_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PMEM4_MEMHIZ4_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PMEM4_MEMHIZ4_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PATT2 register ******************/ +#define FSMC_PATT2_ATTSET2 ((uint32_t)0x000000FF) /*!< ATTSET2[7:0] bits (Attribute memory 2 setup time) */ +#define FSMC_PATT2_ATTSET2_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PATT2_ATTSET2_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PATT2_ATTSET2_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PATT2_ATTSET2_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PATT2_ATTSET2_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PATT2_ATTSET2_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PATT2_ATTSET2_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PATT2_ATTSET2_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PATT2_ATTWAIT2 ((uint32_t)0x0000FF00) /*!< ATTWAIT2[7:0] bits (Attribute memory 2 wait time) */ +#define FSMC_PATT2_ATTWAIT2_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PATT2_ATTWAIT2_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PATT2_ATTWAIT2_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PATT2_ATTWAIT2_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PATT2_ATTWAIT2_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PATT2_ATTWAIT2_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PATT2_ATTWAIT2_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PATT2_ATTWAIT2_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PATT2_ATTHOLD2 ((uint32_t)0x00FF0000) /*!< ATTHOLD2[7:0] bits (Attribute memory 2 hold time) */ +#define FSMC_PATT2_ATTHOLD2_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PATT2_ATTHOLD2_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PATT2_ATTHOLD2_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PATT2_ATTHOLD2_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PATT2_ATTHOLD2_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PATT2_ATTHOLD2_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PATT2_ATTHOLD2_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PATT2_ATTHOLD2_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PATT2_ATTHIZ2 ((uint32_t)0xFF000000) /*!< ATTHIZ2[7:0] bits (Attribute memory 2 databus HiZ time) */ +#define FSMC_PATT2_ATTHIZ2_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PATT2_ATTHIZ2_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PATT2_ATTHIZ2_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PATT2_ATTHIZ2_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PATT2_ATTHIZ2_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PATT2_ATTHIZ2_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PATT2_ATTHIZ2_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PATT2_ATTHIZ2_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PATT3 register ******************/ +#define FSMC_PATT3_ATTSET3 ((uint32_t)0x000000FF) /*!< ATTSET3[7:0] bits (Attribute memory 3 setup time) */ +#define FSMC_PATT3_ATTSET3_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PATT3_ATTSET3_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PATT3_ATTSET3_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PATT3_ATTSET3_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PATT3_ATTSET3_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PATT3_ATTSET3_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PATT3_ATTSET3_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PATT3_ATTSET3_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PATT3_ATTWAIT3 ((uint32_t)0x0000FF00) /*!< ATTWAIT3[7:0] bits (Attribute memory 3 wait time) */ +#define FSMC_PATT3_ATTWAIT3_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PATT3_ATTWAIT3_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PATT3_ATTWAIT3_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PATT3_ATTWAIT3_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PATT3_ATTWAIT3_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PATT3_ATTWAIT3_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PATT3_ATTWAIT3_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PATT3_ATTWAIT3_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PATT3_ATTHOLD3 ((uint32_t)0x00FF0000) /*!< ATTHOLD3[7:0] bits (Attribute memory 3 hold time) */ +#define FSMC_PATT3_ATTHOLD3_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PATT3_ATTHOLD3_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PATT3_ATTHOLD3_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PATT3_ATTHOLD3_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PATT3_ATTHOLD3_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PATT3_ATTHOLD3_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PATT3_ATTHOLD3_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PATT3_ATTHOLD3_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PATT3_ATTHIZ3 ((uint32_t)0xFF000000) /*!< ATTHIZ3[7:0] bits (Attribute memory 3 databus HiZ time) */ +#define FSMC_PATT3_ATTHIZ3_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PATT3_ATTHIZ3_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PATT3_ATTHIZ3_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PATT3_ATTHIZ3_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PATT3_ATTHIZ3_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PATT3_ATTHIZ3_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PATT3_ATTHIZ3_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PATT3_ATTHIZ3_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PATT4 register ******************/ +#define FSMC_PATT4_ATTSET4 ((uint32_t)0x000000FF) /*!< ATTSET4[7:0] bits (Attribute memory 4 setup time) */ +#define FSMC_PATT4_ATTSET4_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PATT4_ATTSET4_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PATT4_ATTSET4_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PATT4_ATTSET4_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PATT4_ATTSET4_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PATT4_ATTSET4_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PATT4_ATTSET4_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PATT4_ATTSET4_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PATT4_ATTWAIT4 ((uint32_t)0x0000FF00) /*!< ATTWAIT4[7:0] bits (Attribute memory 4 wait time) */ +#define FSMC_PATT4_ATTWAIT4_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PATT4_ATTWAIT4_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PATT4_ATTWAIT4_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PATT4_ATTWAIT4_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PATT4_ATTWAIT4_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PATT4_ATTWAIT4_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PATT4_ATTWAIT4_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PATT4_ATTWAIT4_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PATT4_ATTHOLD4 ((uint32_t)0x00FF0000) /*!< ATTHOLD4[7:0] bits (Attribute memory 4 hold time) */ +#define FSMC_PATT4_ATTHOLD4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PATT4_ATTHOLD4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PATT4_ATTHOLD4_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PATT4_ATTHOLD4_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PATT4_ATTHOLD4_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PATT4_ATTHOLD4_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PATT4_ATTHOLD4_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PATT4_ATTHOLD4_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PATT4_ATTHIZ4 ((uint32_t)0xFF000000) /*!< ATTHIZ4[7:0] bits (Attribute memory 4 databus HiZ time) */ +#define FSMC_PATT4_ATTHIZ4_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PATT4_ATTHIZ4_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PATT4_ATTHIZ4_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PATT4_ATTHIZ4_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PATT4_ATTHIZ4_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PATT4_ATTHIZ4_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PATT4_ATTHIZ4_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PATT4_ATTHIZ4_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_PIO4 register *******************/ +#define FSMC_PIO4_IOSET4 ((uint32_t)0x000000FF) /*!< IOSET4[7:0] bits (I/O 4 setup time) */ +#define FSMC_PIO4_IOSET4_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define FSMC_PIO4_IOSET4_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define FSMC_PIO4_IOSET4_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define FSMC_PIO4_IOSET4_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define FSMC_PIO4_IOSET4_4 ((uint32_t)0x00000010) /*!< Bit 4 */ +#define FSMC_PIO4_IOSET4_5 ((uint32_t)0x00000020) /*!< Bit 5 */ +#define FSMC_PIO4_IOSET4_6 ((uint32_t)0x00000040) /*!< Bit 6 */ +#define FSMC_PIO4_IOSET4_7 ((uint32_t)0x00000080) /*!< Bit 7 */ + +#define FSMC_PIO4_IOWAIT4 ((uint32_t)0x0000FF00) /*!< IOWAIT4[7:0] bits (I/O 4 wait time) */ +#define FSMC_PIO4_IOWAIT4_0 ((uint32_t)0x00000100) /*!< Bit 0 */ +#define FSMC_PIO4_IOWAIT4_1 ((uint32_t)0x00000200) /*!< Bit 1 */ +#define FSMC_PIO4_IOWAIT4_2 ((uint32_t)0x00000400) /*!< Bit 2 */ +#define FSMC_PIO4_IOWAIT4_3 ((uint32_t)0x00000800) /*!< Bit 3 */ +#define FSMC_PIO4_IOWAIT4_4 ((uint32_t)0x00001000) /*!< Bit 4 */ +#define FSMC_PIO4_IOWAIT4_5 ((uint32_t)0x00002000) /*!< Bit 5 */ +#define FSMC_PIO4_IOWAIT4_6 ((uint32_t)0x00004000) /*!< Bit 6 */ +#define FSMC_PIO4_IOWAIT4_7 ((uint32_t)0x00008000) /*!< Bit 7 */ + +#define FSMC_PIO4_IOHOLD4 ((uint32_t)0x00FF0000) /*!< IOHOLD4[7:0] bits (I/O 4 hold time) */ +#define FSMC_PIO4_IOHOLD4_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define FSMC_PIO4_IOHOLD4_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define FSMC_PIO4_IOHOLD4_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define FSMC_PIO4_IOHOLD4_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define FSMC_PIO4_IOHOLD4_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define FSMC_PIO4_IOHOLD4_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define FSMC_PIO4_IOHOLD4_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define FSMC_PIO4_IOHOLD4_7 ((uint32_t)0x00800000) /*!< Bit 7 */ + +#define FSMC_PIO4_IOHIZ4 ((uint32_t)0xFF000000) /*!< IOHIZ4[7:0] bits (I/O 4 databus HiZ time) */ +#define FSMC_PIO4_IOHIZ4_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define FSMC_PIO4_IOHIZ4_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define FSMC_PIO4_IOHIZ4_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define FSMC_PIO4_IOHIZ4_3 ((uint32_t)0x08000000) /*!< Bit 3 */ +#define FSMC_PIO4_IOHIZ4_4 ((uint32_t)0x10000000) /*!< Bit 4 */ +#define FSMC_PIO4_IOHIZ4_5 ((uint32_t)0x20000000) /*!< Bit 5 */ +#define FSMC_PIO4_IOHIZ4_6 ((uint32_t)0x40000000) /*!< Bit 6 */ +#define FSMC_PIO4_IOHIZ4_7 ((uint32_t)0x80000000) /*!< Bit 7 */ + +/****************** Bit definition for FSMC_ECCR2 register ******************/ +#define FSMC_ECCR2_ECC2 ((uint32_t)0xFFFFFFFF) /*!< ECC result */ + +/****************** Bit definition for FSMC_ECCR3 register ******************/ +#define FSMC_ECCR3_ECC3 ((uint32_t)0xFFFFFFFF) /*!< ECC result */ + +/******************************************************************************/ +/* */ +/* SD host Interface */ +/* */ +/******************************************************************************/ + +/****************** Bit definition for SDIO_POWER register ******************/ +#define SDIO_POWER_PWRCTRL ((uint8_t)0x03) /*!< PWRCTRL[1:0] bits (Power supply control bits) */ +#define SDIO_POWER_PWRCTRL_0 ((uint8_t)0x01) /*!< Bit 0 */ +#define SDIO_POWER_PWRCTRL_1 ((uint8_t)0x02) /*!< Bit 1 */ + +/****************** Bit definition for SDIO_CLKCR register ******************/ +#define SDIO_CLKCR_CLKDIV ((uint16_t)0x00FF) /*!< Clock divide factor */ +#define SDIO_CLKCR_CLKEN ((uint16_t)0x0100) /*!< Clock enable bit */ +#define SDIO_CLKCR_PWRSAV ((uint16_t)0x0200) /*!< Power saving configuration bit */ +#define SDIO_CLKCR_BYPASS ((uint16_t)0x0400) /*!< Clock divider bypass enable bit */ + +#define SDIO_CLKCR_WIDBUS ((uint16_t)0x1800) /*!< WIDBUS[1:0] bits (Wide bus mode enable bit) */ +#define SDIO_CLKCR_WIDBUS_0 ((uint16_t)0x0800) /*!< Bit 0 */ +#define SDIO_CLKCR_WIDBUS_1 ((uint16_t)0x1000) /*!< Bit 1 */ + +#define SDIO_CLKCR_NEGEDGE ((uint16_t)0x2000) /*!< SDIO_CK dephasing selection bit */ +#define SDIO_CLKCR_HWFC_EN ((uint16_t)0x4000) /*!< HW Flow Control enable */ + +/******************* Bit definition for SDIO_ARG register *******************/ +#define SDIO_ARG_CMDARG ((uint32_t)0xFFFFFFFF) /*!< Command argument */ + +/******************* Bit definition for SDIO_CMD register *******************/ +#define SDIO_CMD_CMDINDEX ((uint16_t)0x003F) /*!< Command Index */ + +#define SDIO_CMD_WAITRESP ((uint16_t)0x00C0) /*!< WAITRESP[1:0] bits (Wait for response bits) */ +#define SDIO_CMD_WAITRESP_0 ((uint16_t)0x0040) /*!< Bit 0 */ +#define SDIO_CMD_WAITRESP_1 ((uint16_t)0x0080) /*!< Bit 1 */ + +#define SDIO_CMD_WAITINT ((uint16_t)0x0100) /*!< CPSM Waits for Interrupt Request */ +#define SDIO_CMD_WAITPEND ((uint16_t)0x0200) /*!< CPSM Waits for ends of data transfer (CmdPend internal signal) */ +#define SDIO_CMD_CPSMEN ((uint16_t)0x0400) /*!< Command path state machine (CPSM) Enable bit */ +#define SDIO_CMD_SDIOSUSPEND ((uint16_t)0x0800) /*!< SD I/O suspend command */ +#define SDIO_CMD_ENCMDCOMPL ((uint16_t)0x1000) /*!< Enable CMD completion */ +#define SDIO_CMD_NIEN ((uint16_t)0x2000) /*!< Not Interrupt Enable */ +#define SDIO_CMD_CEATACMD ((uint16_t)0x4000) /*!< CE-ATA command */ + +/***************** Bit definition for SDIO_RESPCMD register *****************/ +#define SDIO_RESPCMD_RESPCMD ((uint8_t)0x3F) /*!< Response command index */ + +/****************** Bit definition for SDIO_RESP0 register ******************/ +#define SDIO_RESP0_CARDSTATUS0 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_RESP1 register ******************/ +#define SDIO_RESP1_CARDSTATUS1 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_RESP2 register ******************/ +#define SDIO_RESP2_CARDSTATUS2 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_RESP3 register ******************/ +#define SDIO_RESP3_CARDSTATUS3 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_RESP4 register ******************/ +#define SDIO_RESP4_CARDSTATUS4 ((uint32_t)0xFFFFFFFF) /*!< Card Status */ + +/****************** Bit definition for SDIO_DTIMER register *****************/ +#define SDIO_DTIMER_DATATIME ((uint32_t)0xFFFFFFFF) /*!< Data timeout period. */ + +/****************** Bit definition for SDIO_DLEN register *******************/ +#define SDIO_DLEN_DATALENGTH ((uint32_t)0x01FFFFFF) /*!< Data length value */ + +/****************** Bit definition for SDIO_DCTRL register ******************/ +#define SDIO_DCTRL_DTEN ((uint16_t)0x0001) /*!< Data transfer enabled bit */ +#define SDIO_DCTRL_DTDIR ((uint16_t)0x0002) /*!< Data transfer direction selection */ +#define SDIO_DCTRL_DTMODE ((uint16_t)0x0004) /*!< Data transfer mode selection */ +#define SDIO_DCTRL_DMAEN ((uint16_t)0x0008) /*!< DMA enabled bit */ + +#define SDIO_DCTRL_DBLOCKSIZE ((uint16_t)0x00F0) /*!< DBLOCKSIZE[3:0] bits (Data block size) */ +#define SDIO_DCTRL_DBLOCKSIZE_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define SDIO_DCTRL_DBLOCKSIZE_1 ((uint16_t)0x0020) /*!< Bit 1 */ +#define SDIO_DCTRL_DBLOCKSIZE_2 ((uint16_t)0x0040) /*!< Bit 2 */ +#define SDIO_DCTRL_DBLOCKSIZE_3 ((uint16_t)0x0080) /*!< Bit 3 */ + +#define SDIO_DCTRL_RWSTART ((uint16_t)0x0100) /*!< Read wait start */ +#define SDIO_DCTRL_RWSTOP ((uint16_t)0x0200) /*!< Read wait stop */ +#define SDIO_DCTRL_RWMOD ((uint16_t)0x0400) /*!< Read wait mode */ +#define SDIO_DCTRL_SDIOEN ((uint16_t)0x0800) /*!< SD I/O enable functions */ + +/****************** Bit definition for SDIO_DCOUNT register *****************/ +#define SDIO_DCOUNT_DATACOUNT ((uint32_t)0x01FFFFFF) /*!< Data count value */ + +/****************** Bit definition for SDIO_STA register ********************/ +#define SDIO_STA_CCRCFAIL ((uint32_t)0x00000001) /*!< Command response received (CRC check failed) */ +#define SDIO_STA_DCRCFAIL ((uint32_t)0x00000002) /*!< Data block sent/received (CRC check failed) */ +#define SDIO_STA_CTIMEOUT ((uint32_t)0x00000004) /*!< Command response timeout */ +#define SDIO_STA_DTIMEOUT ((uint32_t)0x00000008) /*!< Data timeout */ +#define SDIO_STA_TXUNDERR ((uint32_t)0x00000010) /*!< Transmit FIFO underrun error */ +#define SDIO_STA_RXOVERR ((uint32_t)0x00000020) /*!< Received FIFO overrun error */ +#define SDIO_STA_CMDREND ((uint32_t)0x00000040) /*!< Command response received (CRC check passed) */ +#define SDIO_STA_CMDSENT ((uint32_t)0x00000080) /*!< Command sent (no response required) */ +#define SDIO_STA_DATAEND ((uint32_t)0x00000100) /*!< Data end (data counter, SDIDCOUNT, is zero) */ +#define SDIO_STA_STBITERR ((uint32_t)0x00000200) /*!< Start bit not detected on all data signals in wide bus mode */ +#define SDIO_STA_DBCKEND ((uint32_t)0x00000400) /*!< Data block sent/received (CRC check passed) */ +#define SDIO_STA_CMDACT ((uint32_t)0x00000800) /*!< Command transfer in progress */ +#define SDIO_STA_TXACT ((uint32_t)0x00001000) /*!< Data transmit in progress */ +#define SDIO_STA_RXACT ((uint32_t)0x00002000) /*!< Data receive in progress */ +#define SDIO_STA_TXFIFOHE ((uint32_t)0x00004000) /*!< Transmit FIFO Half Empty: at least 8 words can be written into the FIFO */ +#define SDIO_STA_RXFIFOHF ((uint32_t)0x00008000) /*!< Receive FIFO Half Full: there are at least 8 words in the FIFO */ +#define SDIO_STA_TXFIFOF ((uint32_t)0x00010000) /*!< Transmit FIFO full */ +#define SDIO_STA_RXFIFOF ((uint32_t)0x00020000) /*!< Receive FIFO full */ +#define SDIO_STA_TXFIFOE ((uint32_t)0x00040000) /*!< Transmit FIFO empty */ +#define SDIO_STA_RXFIFOE ((uint32_t)0x00080000) /*!< Receive FIFO empty */ +#define SDIO_STA_TXDAVL ((uint32_t)0x00100000) /*!< Data available in transmit FIFO */ +#define SDIO_STA_RXDAVL ((uint32_t)0x00200000) /*!< Data available in receive FIFO */ +#define SDIO_STA_SDIOIT ((uint32_t)0x00400000) /*!< SDIO interrupt received */ +#define SDIO_STA_CEATAEND ((uint32_t)0x00800000) /*!< CE-ATA command completion signal received for CMD61 */ + +/******************* Bit definition for SDIO_ICR register *******************/ +#define SDIO_ICR_CCRCFAILC ((uint32_t)0x00000001) /*!< CCRCFAIL flag clear bit */ +#define SDIO_ICR_DCRCFAILC ((uint32_t)0x00000002) /*!< DCRCFAIL flag clear bit */ +#define SDIO_ICR_CTIMEOUTC ((uint32_t)0x00000004) /*!< CTIMEOUT flag clear bit */ +#define SDIO_ICR_DTIMEOUTC ((uint32_t)0x00000008) /*!< DTIMEOUT flag clear bit */ +#define SDIO_ICR_TXUNDERRC ((uint32_t)0x00000010) /*!< TXUNDERR flag clear bit */ +#define SDIO_ICR_RXOVERRC ((uint32_t)0x00000020) /*!< RXOVERR flag clear bit */ +#define SDIO_ICR_CMDRENDC ((uint32_t)0x00000040) /*!< CMDREND flag clear bit */ +#define SDIO_ICR_CMDSENTC ((uint32_t)0x00000080) /*!< CMDSENT flag clear bit */ +#define SDIO_ICR_DATAENDC ((uint32_t)0x00000100) /*!< DATAEND flag clear bit */ +#define SDIO_ICR_STBITERRC ((uint32_t)0x00000200) /*!< STBITERR flag clear bit */ +#define SDIO_ICR_DBCKENDC ((uint32_t)0x00000400) /*!< DBCKEND flag clear bit */ +#define SDIO_ICR_SDIOITC ((uint32_t)0x00400000) /*!< SDIOIT flag clear bit */ +#define SDIO_ICR_CEATAENDC ((uint32_t)0x00800000) /*!< CEATAEND flag clear bit */ + +/****************** Bit definition for SDIO_MASK register *******************/ +#define SDIO_MASK_CCRCFAILIE ((uint32_t)0x00000001) /*!< Command CRC Fail Interrupt Enable */ +#define SDIO_MASK_DCRCFAILIE ((uint32_t)0x00000002) /*!< Data CRC Fail Interrupt Enable */ +#define SDIO_MASK_CTIMEOUTIE ((uint32_t)0x00000004) /*!< Command TimeOut Interrupt Enable */ +#define SDIO_MASK_DTIMEOUTIE ((uint32_t)0x00000008) /*!< Data TimeOut Interrupt Enable */ +#define SDIO_MASK_TXUNDERRIE ((uint32_t)0x00000010) /*!< Tx FIFO UnderRun Error Interrupt Enable */ +#define SDIO_MASK_RXOVERRIE ((uint32_t)0x00000020) /*!< Rx FIFO OverRun Error Interrupt Enable */ +#define SDIO_MASK_CMDRENDIE ((uint32_t)0x00000040) /*!< Command Response Received Interrupt Enable */ +#define SDIO_MASK_CMDSENTIE ((uint32_t)0x00000080) /*!< Command Sent Interrupt Enable */ +#define SDIO_MASK_DATAENDIE ((uint32_t)0x00000100) /*!< Data End Interrupt Enable */ +#define SDIO_MASK_STBITERRIE ((uint32_t)0x00000200) /*!< Start Bit Error Interrupt Enable */ +#define SDIO_MASK_DBCKENDIE ((uint32_t)0x00000400) /*!< Data Block End Interrupt Enable */ +#define SDIO_MASK_CMDACTIE ((uint32_t)0x00000800) /*!< Command Acting Interrupt Enable */ +#define SDIO_MASK_TXACTIE ((uint32_t)0x00001000) /*!< Data Transmit Acting Interrupt Enable */ +#define SDIO_MASK_RXACTIE ((uint32_t)0x00002000) /*!< Data receive acting interrupt enabled */ +#define SDIO_MASK_TXFIFOHEIE ((uint32_t)0x00004000) /*!< Tx FIFO Half Empty interrupt Enable */ +#define SDIO_MASK_RXFIFOHFIE ((uint32_t)0x00008000) /*!< Rx FIFO Half Full interrupt Enable */ +#define SDIO_MASK_TXFIFOFIE ((uint32_t)0x00010000) /*!< Tx FIFO Full interrupt Enable */ +#define SDIO_MASK_RXFIFOFIE ((uint32_t)0x00020000) /*!< Rx FIFO Full interrupt Enable */ +#define SDIO_MASK_TXFIFOEIE ((uint32_t)0x00040000) /*!< Tx FIFO Empty interrupt Enable */ +#define SDIO_MASK_RXFIFOEIE ((uint32_t)0x00080000) /*!< Rx FIFO Empty interrupt Enable */ +#define SDIO_MASK_TXDAVLIE ((uint32_t)0x00100000) /*!< Data available in Tx FIFO interrupt Enable */ +#define SDIO_MASK_RXDAVLIE ((uint32_t)0x00200000) /*!< Data available in Rx FIFO interrupt Enable */ +#define SDIO_MASK_SDIOITIE ((uint32_t)0x00400000) /*!< SDIO Mode Interrupt Received interrupt Enable */ +#define SDIO_MASK_CEATAENDIE ((uint32_t)0x00800000) /*!< CE-ATA command completion signal received Interrupt Enable */ + +/***************** Bit definition for SDIO_FIFOCNT register *****************/ +#define SDIO_FIFOCNT_FIFOCOUNT ((uint32_t)0x00FFFFFF) /*!< Remaining number of words to be written to or read from the FIFO */ + +/****************** Bit definition for SDIO_FIFO register *******************/ +#define SDIO_FIFO_FIFODATA ((uint32_t)0xFFFFFFFF) /*!< Receive and transmit FIFO data */ + +/******************************************************************************/ +/* */ +/* USB Device FS */ +/* */ +/******************************************************************************/ + +/*!< Endpoint-specific registers */ +/******************* Bit definition for USB_EP0R register *******************/ +#define USB_EP0R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP0R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP0R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP0R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP0R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP0R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP0R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP0R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP0R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP0R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP0R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP0R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP0R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP0R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP0R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP0R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP1R register *******************/ +#define USB_EP1R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP1R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP1R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP1R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP1R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP1R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP1R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP1R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP1R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP1R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP1R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP1R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP1R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP1R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP1R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP1R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP2R register *******************/ +#define USB_EP2R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP2R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP2R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP2R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP2R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP2R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP2R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP2R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP2R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP2R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP2R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP2R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP2R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP2R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP2R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP2R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP3R register *******************/ +#define USB_EP3R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP3R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP3R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP3R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP3R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP3R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP3R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP3R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP3R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP3R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP3R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP3R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP3R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP3R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP3R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP3R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP4R register *******************/ +#define USB_EP4R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP4R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP4R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP4R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP4R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP4R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP4R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP4R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP4R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP4R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP4R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP4R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP4R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP4R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP4R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP4R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP5R register *******************/ +#define USB_EP5R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP5R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP5R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP5R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP5R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP5R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP5R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP5R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP5R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP5R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP5R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP5R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP5R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP5R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP5R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP5R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP6R register *******************/ +#define USB_EP6R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP6R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP6R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP6R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP6R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP6R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP6R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP6R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP6R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP6R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP6R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP6R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP6R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP6R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP6R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP6R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/******************* Bit definition for USB_EP7R register *******************/ +#define USB_EP7R_EA ((uint16_t)0x000F) /*!< Endpoint Address */ + +#define USB_EP7R_STAT_TX ((uint16_t)0x0030) /*!< STAT_TX[1:0] bits (Status bits, for transmission transfers) */ +#define USB_EP7R_STAT_TX_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define USB_EP7R_STAT_TX_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define USB_EP7R_DTOG_TX ((uint16_t)0x0040) /*!< Data Toggle, for transmission transfers */ +#define USB_EP7R_CTR_TX ((uint16_t)0x0080) /*!< Correct Transfer for transmission */ +#define USB_EP7R_EP_KIND ((uint16_t)0x0100) /*!< Endpoint Kind */ + +#define USB_EP7R_EP_TYPE ((uint16_t)0x0600) /*!< EP_TYPE[1:0] bits (Endpoint type) */ +#define USB_EP7R_EP_TYPE_0 ((uint16_t)0x0200) /*!< Bit 0 */ +#define USB_EP7R_EP_TYPE_1 ((uint16_t)0x0400) /*!< Bit 1 */ + +#define USB_EP7R_SETUP ((uint16_t)0x0800) /*!< Setup transaction completed */ + +#define USB_EP7R_STAT_RX ((uint16_t)0x3000) /*!< STAT_RX[1:0] bits (Status bits, for reception transfers) */ +#define USB_EP7R_STAT_RX_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USB_EP7R_STAT_RX_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USB_EP7R_DTOG_RX ((uint16_t)0x4000) /*!< Data Toggle, for reception transfers */ +#define USB_EP7R_CTR_RX ((uint16_t)0x8000) /*!< Correct Transfer for reception */ + +/*!< Common registers */ +/******************* Bit definition for USB_CNTR register *******************/ +#define USB_CNTR_FRES ((uint16_t)0x0001) /*!< Force USB Reset */ +#define USB_CNTR_PDWN ((uint16_t)0x0002) /*!< Power down */ +#define USB_CNTR_LP_MODE ((uint16_t)0x0004) /*!< Low-power mode */ +#define USB_CNTR_FSUSP ((uint16_t)0x0008) /*!< Force suspend */ +#define USB_CNTR_RESUME ((uint16_t)0x0010) /*!< Resume request */ +#define USB_CNTR_ESOFM ((uint16_t)0x0100) /*!< Expected Start Of Frame Interrupt Mask */ +#define USB_CNTR_SOFM ((uint16_t)0x0200) /*!< Start Of Frame Interrupt Mask */ +#define USB_CNTR_RESETM ((uint16_t)0x0400) /*!< RESET Interrupt Mask */ +#define USB_CNTR_SUSPM ((uint16_t)0x0800) /*!< Suspend mode Interrupt Mask */ +#define USB_CNTR_WKUPM ((uint16_t)0x1000) /*!< Wakeup Interrupt Mask */ +#define USB_CNTR_ERRM ((uint16_t)0x2000) /*!< Error Interrupt Mask */ +#define USB_CNTR_PMAOVRM ((uint16_t)0x4000) /*!< Packet Memory Area Over / Underrun Interrupt Mask */ +#define USB_CNTR_CTRM ((uint16_t)0x8000) /*!< Correct Transfer Interrupt Mask */ + +/******************* Bit definition for USB_ISTR register *******************/ +#define USB_ISTR_EP_ID ((uint16_t)0x000F) /*!< Endpoint Identifier */ +#define USB_ISTR_DIR ((uint16_t)0x0010) /*!< Direction of transaction */ +#define USB_ISTR_ESOF ((uint16_t)0x0100) /*!< Expected Start Of Frame */ +#define USB_ISTR_SOF ((uint16_t)0x0200) /*!< Start Of Frame */ +#define USB_ISTR_RESET ((uint16_t)0x0400) /*!< USB RESET request */ +#define USB_ISTR_SUSP ((uint16_t)0x0800) /*!< Suspend mode request */ +#define USB_ISTR_WKUP ((uint16_t)0x1000) /*!< Wake up */ +#define USB_ISTR_ERR ((uint16_t)0x2000) /*!< Error */ +#define USB_ISTR_PMAOVR ((uint16_t)0x4000) /*!< Packet Memory Area Over / Underrun */ +#define USB_ISTR_CTR ((uint16_t)0x8000) /*!< Correct Transfer */ + +/******************* Bit definition for USB_FNR register ********************/ +#define USB_FNR_FN ((uint16_t)0x07FF) /*!< Frame Number */ +#define USB_FNR_LSOF ((uint16_t)0x1800) /*!< Lost SOF */ +#define USB_FNR_LCK ((uint16_t)0x2000) /*!< Locked */ +#define USB_FNR_RXDM ((uint16_t)0x4000) /*!< Receive Data - Line Status */ +#define USB_FNR_RXDP ((uint16_t)0x8000) /*!< Receive Data + Line Status */ + +/****************** Bit definition for USB_DADDR register *******************/ +#define USB_DADDR_ADD ((uint8_t)0x7F) /*!< ADD[6:0] bits (Device Address) */ +#define USB_DADDR_ADD0 ((uint8_t)0x01) /*!< Bit 0 */ +#define USB_DADDR_ADD1 ((uint8_t)0x02) /*!< Bit 1 */ +#define USB_DADDR_ADD2 ((uint8_t)0x04) /*!< Bit 2 */ +#define USB_DADDR_ADD3 ((uint8_t)0x08) /*!< Bit 3 */ +#define USB_DADDR_ADD4 ((uint8_t)0x10) /*!< Bit 4 */ +#define USB_DADDR_ADD5 ((uint8_t)0x20) /*!< Bit 5 */ +#define USB_DADDR_ADD6 ((uint8_t)0x40) /*!< Bit 6 */ + +#define USB_DADDR_EF ((uint8_t)0x80) /*!< Enable Function */ + +/****************** Bit definition for USB_BTABLE register ******************/ +#define USB_BTABLE_BTABLE ((uint16_t)0xFFF8) /*!< Buffer Table */ + +/*!< Buffer descriptor table */ +/***************** Bit definition for USB_ADDR0_TX register *****************/ +#define USB_ADDR0_TX_ADDR0_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 0 */ + +/***************** Bit definition for USB_ADDR1_TX register *****************/ +#define USB_ADDR1_TX_ADDR1_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 1 */ + +/***************** Bit definition for USB_ADDR2_TX register *****************/ +#define USB_ADDR2_TX_ADDR2_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 2 */ + +/***************** Bit definition for USB_ADDR3_TX register *****************/ +#define USB_ADDR3_TX_ADDR3_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 3 */ + +/***************** Bit definition for USB_ADDR4_TX register *****************/ +#define USB_ADDR4_TX_ADDR4_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 4 */ + +/***************** Bit definition for USB_ADDR5_TX register *****************/ +#define USB_ADDR5_TX_ADDR5_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 5 */ + +/***************** Bit definition for USB_ADDR6_TX register *****************/ +#define USB_ADDR6_TX_ADDR6_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 6 */ + +/***************** Bit definition for USB_ADDR7_TX register *****************/ +#define USB_ADDR7_TX_ADDR7_TX ((uint16_t)0xFFFE) /*!< Transmission Buffer Address 7 */ + +/*----------------------------------------------------------------------------*/ + +/***************** Bit definition for USB_COUNT0_TX register ****************/ +#define USB_COUNT0_TX_COUNT0_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 0 */ + +/***************** Bit definition for USB_COUNT1_TX register ****************/ +#define USB_COUNT1_TX_COUNT1_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 1 */ + +/***************** Bit definition for USB_COUNT2_TX register ****************/ +#define USB_COUNT2_TX_COUNT2_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 2 */ + +/***************** Bit definition for USB_COUNT3_TX register ****************/ +#define USB_COUNT3_TX_COUNT3_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 3 */ + +/***************** Bit definition for USB_COUNT4_TX register ****************/ +#define USB_COUNT4_TX_COUNT4_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 4 */ + +/***************** Bit definition for USB_COUNT5_TX register ****************/ +#define USB_COUNT5_TX_COUNT5_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 5 */ + +/***************** Bit definition for USB_COUNT6_TX register ****************/ +#define USB_COUNT6_TX_COUNT6_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 6 */ + +/***************** Bit definition for USB_COUNT7_TX register ****************/ +#define USB_COUNT7_TX_COUNT7_TX ((uint16_t)0x03FF) /*!< Transmission Byte Count 7 */ + +/*----------------------------------------------------------------------------*/ + +/**************** Bit definition for USB_COUNT0_TX_0 register ***************/ +#define USB_COUNT0_TX_0_COUNT0_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 0 (low) */ + +/**************** Bit definition for USB_COUNT0_TX_1 register ***************/ +#define USB_COUNT0_TX_1_COUNT0_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 0 (high) */ + +/**************** Bit definition for USB_COUNT1_TX_0 register ***************/ +#define USB_COUNT1_TX_0_COUNT1_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 1 (low) */ + +/**************** Bit definition for USB_COUNT1_TX_1 register ***************/ +#define USB_COUNT1_TX_1_COUNT1_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 1 (high) */ + +/**************** Bit definition for USB_COUNT2_TX_0 register ***************/ +#define USB_COUNT2_TX_0_COUNT2_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 2 (low) */ + +/**************** Bit definition for USB_COUNT2_TX_1 register ***************/ +#define USB_COUNT2_TX_1_COUNT2_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 2 (high) */ + +/**************** Bit definition for USB_COUNT3_TX_0 register ***************/ +#define USB_COUNT3_TX_0_COUNT3_TX_0 ((uint16_t)0x000003FF) /*!< Transmission Byte Count 3 (low) */ + +/**************** Bit definition for USB_COUNT3_TX_1 register ***************/ +#define USB_COUNT3_TX_1_COUNT3_TX_1 ((uint16_t)0x03FF0000) /*!< Transmission Byte Count 3 (high) */ + +/**************** Bit definition for USB_COUNT4_TX_0 register ***************/ +#define USB_COUNT4_TX_0_COUNT4_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 4 (low) */ + +/**************** Bit definition for USB_COUNT4_TX_1 register ***************/ +#define USB_COUNT4_TX_1_COUNT4_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 4 (high) */ + +/**************** Bit definition for USB_COUNT5_TX_0 register ***************/ +#define USB_COUNT5_TX_0_COUNT5_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 5 (low) */ + +/**************** Bit definition for USB_COUNT5_TX_1 register ***************/ +#define USB_COUNT5_TX_1_COUNT5_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 5 (high) */ + +/**************** Bit definition for USB_COUNT6_TX_0 register ***************/ +#define USB_COUNT6_TX_0_COUNT6_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 6 (low) */ + +/**************** Bit definition for USB_COUNT6_TX_1 register ***************/ +#define USB_COUNT6_TX_1_COUNT6_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 6 (high) */ + +/**************** Bit definition for USB_COUNT7_TX_0 register ***************/ +#define USB_COUNT7_TX_0_COUNT7_TX_0 ((uint32_t)0x000003FF) /*!< Transmission Byte Count 7 (low) */ + +/**************** Bit definition for USB_COUNT7_TX_1 register ***************/ +#define USB_COUNT7_TX_1_COUNT7_TX_1 ((uint32_t)0x03FF0000) /*!< Transmission Byte Count 7 (high) */ + +/*----------------------------------------------------------------------------*/ + +/***************** Bit definition for USB_ADDR0_RX register *****************/ +#define USB_ADDR0_RX_ADDR0_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 0 */ + +/***************** Bit definition for USB_ADDR1_RX register *****************/ +#define USB_ADDR1_RX_ADDR1_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 1 */ + +/***************** Bit definition for USB_ADDR2_RX register *****************/ +#define USB_ADDR2_RX_ADDR2_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 2 */ + +/***************** Bit definition for USB_ADDR3_RX register *****************/ +#define USB_ADDR3_RX_ADDR3_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 3 */ + +/***************** Bit definition for USB_ADDR4_RX register *****************/ +#define USB_ADDR4_RX_ADDR4_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 4 */ + +/***************** Bit definition for USB_ADDR5_RX register *****************/ +#define USB_ADDR5_RX_ADDR5_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 5 */ + +/***************** Bit definition for USB_ADDR6_RX register *****************/ +#define USB_ADDR6_RX_ADDR6_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 6 */ + +/***************** Bit definition for USB_ADDR7_RX register *****************/ +#define USB_ADDR7_RX_ADDR7_RX ((uint16_t)0xFFFE) /*!< Reception Buffer Address 7 */ + +/*----------------------------------------------------------------------------*/ + +/***************** Bit definition for USB_COUNT0_RX register ****************/ +#define USB_COUNT0_RX_COUNT0_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT0_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT0_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT0_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT0_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT0_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT0_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT0_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT1_RX register ****************/ +#define USB_COUNT1_RX_COUNT1_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT1_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT1_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT1_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT1_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT1_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT1_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT1_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT2_RX register ****************/ +#define USB_COUNT2_RX_COUNT2_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT2_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT2_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT2_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT2_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT2_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT2_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT2_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT3_RX register ****************/ +#define USB_COUNT3_RX_COUNT3_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT3_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT3_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT3_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT3_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT3_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT3_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT3_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT4_RX register ****************/ +#define USB_COUNT4_RX_COUNT4_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT4_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT4_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT4_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT4_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT4_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT4_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT4_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT5_RX register ****************/ +#define USB_COUNT5_RX_COUNT5_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT5_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT5_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT5_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT5_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT5_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT5_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT5_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT6_RX register ****************/ +#define USB_COUNT6_RX_COUNT6_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT6_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT6_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT6_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT6_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT6_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT6_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT6_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/***************** Bit definition for USB_COUNT7_RX register ****************/ +#define USB_COUNT7_RX_COUNT7_RX ((uint16_t)0x03FF) /*!< Reception Byte Count */ + +#define USB_COUNT7_RX_NUM_BLOCK ((uint16_t)0x7C00) /*!< NUM_BLOCK[4:0] bits (Number of blocks) */ +#define USB_COUNT7_RX_NUM_BLOCK_0 ((uint16_t)0x0400) /*!< Bit 0 */ +#define USB_COUNT7_RX_NUM_BLOCK_1 ((uint16_t)0x0800) /*!< Bit 1 */ +#define USB_COUNT7_RX_NUM_BLOCK_2 ((uint16_t)0x1000) /*!< Bit 2 */ +#define USB_COUNT7_RX_NUM_BLOCK_3 ((uint16_t)0x2000) /*!< Bit 3 */ +#define USB_COUNT7_RX_NUM_BLOCK_4 ((uint16_t)0x4000) /*!< Bit 4 */ + +#define USB_COUNT7_RX_BLSIZE ((uint16_t)0x8000) /*!< BLock SIZE */ + +/*----------------------------------------------------------------------------*/ + +/**************** Bit definition for USB_COUNT0_RX_0 register ***************/ +#define USB_COUNT0_RX_0_COUNT0_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT0_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT0_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT0_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT0_RX_1 register ***************/ +#define USB_COUNT0_RX_1_COUNT0_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT0_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT0_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT0_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT1_RX_0 register ***************/ +#define USB_COUNT1_RX_0_COUNT1_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT1_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT1_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT1_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT1_RX_1 register ***************/ +#define USB_COUNT1_RX_1_COUNT1_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT1_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT1_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT1_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT2_RX_0 register ***************/ +#define USB_COUNT2_RX_0_COUNT2_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT2_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT2_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT2_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT2_RX_1 register ***************/ +#define USB_COUNT2_RX_1_COUNT2_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT2_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT2_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT2_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT3_RX_0 register ***************/ +#define USB_COUNT3_RX_0_COUNT3_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT3_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT3_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT3_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT3_RX_1 register ***************/ +#define USB_COUNT3_RX_1_COUNT3_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT3_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT3_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT3_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT4_RX_0 register ***************/ +#define USB_COUNT4_RX_0_COUNT4_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT4_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT4_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT4_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT4_RX_1 register ***************/ +#define USB_COUNT4_RX_1_COUNT4_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT4_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT4_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT4_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/**************** Bit definition for USB_COUNT5_RX_0 register ***************/ +#define USB_COUNT5_RX_0_COUNT5_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT5_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT5_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT5_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT5_RX_1 register ***************/ +#define USB_COUNT5_RX_1_COUNT5_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT5_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT5_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT5_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/*************** Bit definition for USB_COUNT6_RX_0 register ***************/ +#define USB_COUNT6_RX_0_COUNT6_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT6_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT6_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT6_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/**************** Bit definition for USB_COUNT6_RX_1 register ***************/ +#define USB_COUNT6_RX_1_COUNT6_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT6_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT6_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT6_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/*************** Bit definition for USB_COUNT7_RX_0 register ****************/ +#define USB_COUNT7_RX_0_COUNT7_RX_0 ((uint32_t)0x000003FF) /*!< Reception Byte Count (low) */ + +#define USB_COUNT7_RX_0_NUM_BLOCK_0 ((uint32_t)0x00007C00) /*!< NUM_BLOCK_0[4:0] bits (Number of blocks) (low) */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define USB_COUNT7_RX_0_NUM_BLOCK_0_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define USB_COUNT7_RX_0_BLSIZE_0 ((uint32_t)0x00008000) /*!< BLock SIZE (low) */ + +/*************** Bit definition for USB_COUNT7_RX_1 register ****************/ +#define USB_COUNT7_RX_1_COUNT7_RX_1 ((uint32_t)0x03FF0000) /*!< Reception Byte Count (high) */ + +#define USB_COUNT7_RX_1_NUM_BLOCK_1 ((uint32_t)0x7C000000) /*!< NUM_BLOCK_1[4:0] bits (Number of blocks) (high) */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_0 ((uint32_t)0x04000000) /*!< Bit 0 */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_1 ((uint32_t)0x08000000) /*!< Bit 1 */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_2 ((uint32_t)0x10000000) /*!< Bit 2 */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_3 ((uint32_t)0x20000000) /*!< Bit 3 */ +#define USB_COUNT7_RX_1_NUM_BLOCK_1_4 ((uint32_t)0x40000000) /*!< Bit 4 */ + +#define USB_COUNT7_RX_1_BLSIZE_1 ((uint32_t)0x80000000) /*!< BLock SIZE (high) */ + +/******************************************************************************/ +/* */ +/* Controller Area Network */ +/* */ +/******************************************************************************/ + +/*!< CAN control and status registers */ +/******************* Bit definition for CAN_MCR register ********************/ +#define CAN_MCR_INRQ ((uint16_t)0x0001) /*!< Initialization Request */ +#define CAN_MCR_SLEEP ((uint16_t)0x0002) /*!< Sleep Mode Request */ +#define CAN_MCR_TXFP ((uint16_t)0x0004) /*!< Transmit FIFO Priority */ +#define CAN_MCR_RFLM ((uint16_t)0x0008) /*!< Receive FIFO Locked Mode */ +#define CAN_MCR_NART ((uint16_t)0x0010) /*!< No Automatic Retransmission */ +#define CAN_MCR_AWUM ((uint16_t)0x0020) /*!< Automatic Wakeup Mode */ +#define CAN_MCR_ABOM ((uint16_t)0x0040) /*!< Automatic Bus-Off Management */ +#define CAN_MCR_TTCM ((uint16_t)0x0080) /*!< Time Triggered Communication Mode */ +#define CAN_MCR_RESET ((uint16_t)0x8000) /*!< CAN software master reset */ + +/******************* Bit definition for CAN_MSR register ********************/ +#define CAN_MSR_INAK ((uint16_t)0x0001) /*!< Initialization Acknowledge */ +#define CAN_MSR_SLAK ((uint16_t)0x0002) /*!< Sleep Acknowledge */ +#define CAN_MSR_ERRI ((uint16_t)0x0004) /*!< Error Interrupt */ +#define CAN_MSR_WKUI ((uint16_t)0x0008) /*!< Wakeup Interrupt */ +#define CAN_MSR_SLAKI ((uint16_t)0x0010) /*!< Sleep Acknowledge Interrupt */ +#define CAN_MSR_TXM ((uint16_t)0x0100) /*!< Transmit Mode */ +#define CAN_MSR_RXM ((uint16_t)0x0200) /*!< Receive Mode */ +#define CAN_MSR_SAMP ((uint16_t)0x0400) /*!< Last Sample Point */ +#define CAN_MSR_RX ((uint16_t)0x0800) /*!< CAN Rx Signal */ + +/******************* Bit definition for CAN_TSR register ********************/ +#define CAN_TSR_RQCP0 ((uint32_t)0x00000001) /*!< Request Completed Mailbox0 */ +#define CAN_TSR_TXOK0 ((uint32_t)0x00000002) /*!< Transmission OK of Mailbox0 */ +#define CAN_TSR_ALST0 ((uint32_t)0x00000004) /*!< Arbitration Lost for Mailbox0 */ +#define CAN_TSR_TERR0 ((uint32_t)0x00000008) /*!< Transmission Error of Mailbox0 */ +#define CAN_TSR_ABRQ0 ((uint32_t)0x00000080) /*!< Abort Request for Mailbox0 */ +#define CAN_TSR_RQCP1 ((uint32_t)0x00000100) /*!< Request Completed Mailbox1 */ +#define CAN_TSR_TXOK1 ((uint32_t)0x00000200) /*!< Transmission OK of Mailbox1 */ +#define CAN_TSR_ALST1 ((uint32_t)0x00000400) /*!< Arbitration Lost for Mailbox1 */ +#define CAN_TSR_TERR1 ((uint32_t)0x00000800) /*!< Transmission Error of Mailbox1 */ +#define CAN_TSR_ABRQ1 ((uint32_t)0x00008000) /*!< Abort Request for Mailbox 1 */ +#define CAN_TSR_RQCP2 ((uint32_t)0x00010000) /*!< Request Completed Mailbox2 */ +#define CAN_TSR_TXOK2 ((uint32_t)0x00020000) /*!< Transmission OK of Mailbox 2 */ +#define CAN_TSR_ALST2 ((uint32_t)0x00040000) /*!< Arbitration Lost for mailbox 2 */ +#define CAN_TSR_TERR2 ((uint32_t)0x00080000) /*!< Transmission Error of Mailbox 2 */ +#define CAN_TSR_ABRQ2 ((uint32_t)0x00800000) /*!< Abort Request for Mailbox 2 */ +#define CAN_TSR_CODE ((uint32_t)0x03000000) /*!< Mailbox Code */ + +#define CAN_TSR_TME ((uint32_t)0x1C000000) /*!< TME[2:0] bits */ +#define CAN_TSR_TME0 ((uint32_t)0x04000000) /*!< Transmit Mailbox 0 Empty */ +#define CAN_TSR_TME1 ((uint32_t)0x08000000) /*!< Transmit Mailbox 1 Empty */ +#define CAN_TSR_TME2 ((uint32_t)0x10000000) /*!< Transmit Mailbox 2 Empty */ + +#define CAN_TSR_LOW ((uint32_t)0xE0000000) /*!< LOW[2:0] bits */ +#define CAN_TSR_LOW0 ((uint32_t)0x20000000) /*!< Lowest Priority Flag for Mailbox 0 */ +#define CAN_TSR_LOW1 ((uint32_t)0x40000000) /*!< Lowest Priority Flag for Mailbox 1 */ +#define CAN_TSR_LOW2 ((uint32_t)0x80000000) /*!< Lowest Priority Flag for Mailbox 2 */ + +/******************* Bit definition for CAN_RF0R register *******************/ +#define CAN_RF0R_FMP0 ((uint8_t)0x03) /*!< FIFO 0 Message Pending */ +#define CAN_RF0R_FULL0 ((uint8_t)0x08) /*!< FIFO 0 Full */ +#define CAN_RF0R_FOVR0 ((uint8_t)0x10) /*!< FIFO 0 Overrun */ +#define CAN_RF0R_RFOM0 ((uint8_t)0x20) /*!< Release FIFO 0 Output Mailbox */ + +/******************* Bit definition for CAN_RF1R register *******************/ +#define CAN_RF1R_FMP1 ((uint8_t)0x03) /*!< FIFO 1 Message Pending */ +#define CAN_RF1R_FULL1 ((uint8_t)0x08) /*!< FIFO 1 Full */ +#define CAN_RF1R_FOVR1 ((uint8_t)0x10) /*!< FIFO 1 Overrun */ +#define CAN_RF1R_RFOM1 ((uint8_t)0x20) /*!< Release FIFO 1 Output Mailbox */ + +/******************** Bit definition for CAN_IER register *******************/ +#define CAN_IER_TMEIE ((uint32_t)0x00000001) /*!< Transmit Mailbox Empty Interrupt Enable */ +#define CAN_IER_FMPIE0 ((uint32_t)0x00000002) /*!< FIFO Message Pending Interrupt Enable */ +#define CAN_IER_FFIE0 ((uint32_t)0x00000004) /*!< FIFO Full Interrupt Enable */ +#define CAN_IER_FOVIE0 ((uint32_t)0x00000008) /*!< FIFO Overrun Interrupt Enable */ +#define CAN_IER_FMPIE1 ((uint32_t)0x00000010) /*!< FIFO Message Pending Interrupt Enable */ +#define CAN_IER_FFIE1 ((uint32_t)0x00000020) /*!< FIFO Full Interrupt Enable */ +#define CAN_IER_FOVIE1 ((uint32_t)0x00000040) /*!< FIFO Overrun Interrupt Enable */ +#define CAN_IER_EWGIE ((uint32_t)0x00000100) /*!< Error Warning Interrupt Enable */ +#define CAN_IER_EPVIE ((uint32_t)0x00000200) /*!< Error Passive Interrupt Enable */ +#define CAN_IER_BOFIE ((uint32_t)0x00000400) /*!< Bus-Off Interrupt Enable */ +#define CAN_IER_LECIE ((uint32_t)0x00000800) /*!< Last Error Code Interrupt Enable */ +#define CAN_IER_ERRIE ((uint32_t)0x00008000) /*!< Error Interrupt Enable */ +#define CAN_IER_WKUIE ((uint32_t)0x00010000) /*!< Wakeup Interrupt Enable */ +#define CAN_IER_SLKIE ((uint32_t)0x00020000) /*!< Sleep Interrupt Enable */ + +/******************** Bit definition for CAN_ESR register *******************/ +#define CAN_ESR_EWGF ((uint32_t)0x00000001) /*!< Error Warning Flag */ +#define CAN_ESR_EPVF ((uint32_t)0x00000002) /*!< Error Passive Flag */ +#define CAN_ESR_BOFF ((uint32_t)0x00000004) /*!< Bus-Off Flag */ + +#define CAN_ESR_LEC ((uint32_t)0x00000070) /*!< LEC[2:0] bits (Last Error Code) */ +#define CAN_ESR_LEC_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define CAN_ESR_LEC_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define CAN_ESR_LEC_2 ((uint32_t)0x00000040) /*!< Bit 2 */ + +#define CAN_ESR_TEC ((uint32_t)0x00FF0000) /*!< Least significant byte of the 9-bit Transmit Error Counter */ +#define CAN_ESR_REC ((uint32_t)0xFF000000) /*!< Receive Error Counter */ + +/******************* Bit definition for CAN_BTR register ********************/ +#define CAN_BTR_BRP ((uint32_t)0x000003FF) /*!< Baud Rate Prescaler */ +#define CAN_BTR_TS1 ((uint32_t)0x000F0000) /*!< Time Segment 1 */ +#define CAN_BTR_TS2 ((uint32_t)0x00700000) /*!< Time Segment 2 */ +#define CAN_BTR_SJW ((uint32_t)0x03000000) /*!< Resynchronization Jump Width */ +#define CAN_BTR_LBKM ((uint32_t)0x40000000) /*!< Loop Back Mode (Debug) */ +#define CAN_BTR_SILM ((uint32_t)0x80000000) /*!< Silent Mode */ + +/*!< Mailbox registers */ +/****************** Bit definition for CAN_TI0R register ********************/ +#define CAN_TI0R_TXRQ ((uint32_t)0x00000001) /*!< Transmit Mailbox Request */ +#define CAN_TI0R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_TI0R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_TI0R_EXID ((uint32_t)0x001FFFF8) /*!< Extended Identifier */ +#define CAN_TI0R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/****************** Bit definition for CAN_TDT0R register *******************/ +#define CAN_TDT0R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_TDT0R_TGT ((uint32_t)0x00000100) /*!< Transmit Global Time */ +#define CAN_TDT0R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/****************** Bit definition for CAN_TDL0R register *******************/ +#define CAN_TDL0R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_TDL0R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_TDL0R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_TDL0R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/****************** Bit definition for CAN_TDH0R register *******************/ +#define CAN_TDH0R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_TDH0R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_TDH0R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_TDH0R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/******************* Bit definition for CAN_TI1R register *******************/ +#define CAN_TI1R_TXRQ ((uint32_t)0x00000001) /*!< Transmit Mailbox Request */ +#define CAN_TI1R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_TI1R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_TI1R_EXID ((uint32_t)0x001FFFF8) /*!< Extended Identifier */ +#define CAN_TI1R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_TDT1R register ******************/ +#define CAN_TDT1R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_TDT1R_TGT ((uint32_t)0x00000100) /*!< Transmit Global Time */ +#define CAN_TDT1R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/******************* Bit definition for CAN_TDL1R register ******************/ +#define CAN_TDL1R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_TDL1R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_TDL1R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_TDL1R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/******************* Bit definition for CAN_TDH1R register ******************/ +#define CAN_TDH1R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_TDH1R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_TDH1R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_TDH1R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/******************* Bit definition for CAN_TI2R register *******************/ +#define CAN_TI2R_TXRQ ((uint32_t)0x00000001) /*!< Transmit Mailbox Request */ +#define CAN_TI2R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_TI2R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_TI2R_EXID ((uint32_t)0x001FFFF8) /*!< Extended identifier */ +#define CAN_TI2R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_TDT2R register ******************/ +#define CAN_TDT2R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_TDT2R_TGT ((uint32_t)0x00000100) /*!< Transmit Global Time */ +#define CAN_TDT2R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/******************* Bit definition for CAN_TDL2R register ******************/ +#define CAN_TDL2R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_TDL2R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_TDL2R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_TDL2R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/******************* Bit definition for CAN_TDH2R register ******************/ +#define CAN_TDH2R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_TDH2R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_TDH2R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_TDH2R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/******************* Bit definition for CAN_RI0R register *******************/ +#define CAN_RI0R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_RI0R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_RI0R_EXID ((uint32_t)0x001FFFF8) /*!< Extended Identifier */ +#define CAN_RI0R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_RDT0R register ******************/ +#define CAN_RDT0R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_RDT0R_FMI ((uint32_t)0x0000FF00) /*!< Filter Match Index */ +#define CAN_RDT0R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/******************* Bit definition for CAN_RDL0R register ******************/ +#define CAN_RDL0R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_RDL0R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_RDL0R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_RDL0R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/******************* Bit definition for CAN_RDH0R register ******************/ +#define CAN_RDH0R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_RDH0R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_RDH0R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_RDH0R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/******************* Bit definition for CAN_RI1R register *******************/ +#define CAN_RI1R_RTR ((uint32_t)0x00000002) /*!< Remote Transmission Request */ +#define CAN_RI1R_IDE ((uint32_t)0x00000004) /*!< Identifier Extension */ +#define CAN_RI1R_EXID ((uint32_t)0x001FFFF8) /*!< Extended identifier */ +#define CAN_RI1R_STID ((uint32_t)0xFFE00000) /*!< Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_RDT1R register ******************/ +#define CAN_RDT1R_DLC ((uint32_t)0x0000000F) /*!< Data Length Code */ +#define CAN_RDT1R_FMI ((uint32_t)0x0000FF00) /*!< Filter Match Index */ +#define CAN_RDT1R_TIME ((uint32_t)0xFFFF0000) /*!< Message Time Stamp */ + +/******************* Bit definition for CAN_RDL1R register ******************/ +#define CAN_RDL1R_DATA0 ((uint32_t)0x000000FF) /*!< Data byte 0 */ +#define CAN_RDL1R_DATA1 ((uint32_t)0x0000FF00) /*!< Data byte 1 */ +#define CAN_RDL1R_DATA2 ((uint32_t)0x00FF0000) /*!< Data byte 2 */ +#define CAN_RDL1R_DATA3 ((uint32_t)0xFF000000) /*!< Data byte 3 */ + +/******************* Bit definition for CAN_RDH1R register ******************/ +#define CAN_RDH1R_DATA4 ((uint32_t)0x000000FF) /*!< Data byte 4 */ +#define CAN_RDH1R_DATA5 ((uint32_t)0x0000FF00) /*!< Data byte 5 */ +#define CAN_RDH1R_DATA6 ((uint32_t)0x00FF0000) /*!< Data byte 6 */ +#define CAN_RDH1R_DATA7 ((uint32_t)0xFF000000) /*!< Data byte 7 */ + +/*!< CAN filter registers */ +/******************* Bit definition for CAN_FMR register ********************/ +#define CAN_FMR_FINIT ((uint8_t)0x01) /*!< Filter Init Mode */ + +/******************* Bit definition for CAN_FM1R register *******************/ +#define CAN_FM1R_FBM ((uint16_t)0x3FFF) /*!< Filter Mode */ +#define CAN_FM1R_FBM0 ((uint16_t)0x0001) /*!< Filter Init Mode bit 0 */ +#define CAN_FM1R_FBM1 ((uint16_t)0x0002) /*!< Filter Init Mode bit 1 */ +#define CAN_FM1R_FBM2 ((uint16_t)0x0004) /*!< Filter Init Mode bit 2 */ +#define CAN_FM1R_FBM3 ((uint16_t)0x0008) /*!< Filter Init Mode bit 3 */ +#define CAN_FM1R_FBM4 ((uint16_t)0x0010) /*!< Filter Init Mode bit 4 */ +#define CAN_FM1R_FBM5 ((uint16_t)0x0020) /*!< Filter Init Mode bit 5 */ +#define CAN_FM1R_FBM6 ((uint16_t)0x0040) /*!< Filter Init Mode bit 6 */ +#define CAN_FM1R_FBM7 ((uint16_t)0x0080) /*!< Filter Init Mode bit 7 */ +#define CAN_FM1R_FBM8 ((uint16_t)0x0100) /*!< Filter Init Mode bit 8 */ +#define CAN_FM1R_FBM9 ((uint16_t)0x0200) /*!< Filter Init Mode bit 9 */ +#define CAN_FM1R_FBM10 ((uint16_t)0x0400) /*!< Filter Init Mode bit 10 */ +#define CAN_FM1R_FBM11 ((uint16_t)0x0800) /*!< Filter Init Mode bit 11 */ +#define CAN_FM1R_FBM12 ((uint16_t)0x1000) /*!< Filter Init Mode bit 12 */ +#define CAN_FM1R_FBM13 ((uint16_t)0x2000) /*!< Filter Init Mode bit 13 */ + +/******************* Bit definition for CAN_FS1R register *******************/ +#define CAN_FS1R_FSC ((uint16_t)0x3FFF) /*!< Filter Scale Configuration */ +#define CAN_FS1R_FSC0 ((uint16_t)0x0001) /*!< Filter Scale Configuration bit 0 */ +#define CAN_FS1R_FSC1 ((uint16_t)0x0002) /*!< Filter Scale Configuration bit 1 */ +#define CAN_FS1R_FSC2 ((uint16_t)0x0004) /*!< Filter Scale Configuration bit 2 */ +#define CAN_FS1R_FSC3 ((uint16_t)0x0008) /*!< Filter Scale Configuration bit 3 */ +#define CAN_FS1R_FSC4 ((uint16_t)0x0010) /*!< Filter Scale Configuration bit 4 */ +#define CAN_FS1R_FSC5 ((uint16_t)0x0020) /*!< Filter Scale Configuration bit 5 */ +#define CAN_FS1R_FSC6 ((uint16_t)0x0040) /*!< Filter Scale Configuration bit 6 */ +#define CAN_FS1R_FSC7 ((uint16_t)0x0080) /*!< Filter Scale Configuration bit 7 */ +#define CAN_FS1R_FSC8 ((uint16_t)0x0100) /*!< Filter Scale Configuration bit 8 */ +#define CAN_FS1R_FSC9 ((uint16_t)0x0200) /*!< Filter Scale Configuration bit 9 */ +#define CAN_FS1R_FSC10 ((uint16_t)0x0400) /*!< Filter Scale Configuration bit 10 */ +#define CAN_FS1R_FSC11 ((uint16_t)0x0800) /*!< Filter Scale Configuration bit 11 */ +#define CAN_FS1R_FSC12 ((uint16_t)0x1000) /*!< Filter Scale Configuration bit 12 */ +#define CAN_FS1R_FSC13 ((uint16_t)0x2000) /*!< Filter Scale Configuration bit 13 */ + +/****************** Bit definition for CAN_FFA1R register *******************/ +#define CAN_FFA1R_FFA ((uint16_t)0x3FFF) /*!< Filter FIFO Assignment */ +#define CAN_FFA1R_FFA0 ((uint16_t)0x0001) /*!< Filter FIFO Assignment for Filter 0 */ +#define CAN_FFA1R_FFA1 ((uint16_t)0x0002) /*!< Filter FIFO Assignment for Filter 1 */ +#define CAN_FFA1R_FFA2 ((uint16_t)0x0004) /*!< Filter FIFO Assignment for Filter 2 */ +#define CAN_FFA1R_FFA3 ((uint16_t)0x0008) /*!< Filter FIFO Assignment for Filter 3 */ +#define CAN_FFA1R_FFA4 ((uint16_t)0x0010) /*!< Filter FIFO Assignment for Filter 4 */ +#define CAN_FFA1R_FFA5 ((uint16_t)0x0020) /*!< Filter FIFO Assignment for Filter 5 */ +#define CAN_FFA1R_FFA6 ((uint16_t)0x0040) /*!< Filter FIFO Assignment for Filter 6 */ +#define CAN_FFA1R_FFA7 ((uint16_t)0x0080) /*!< Filter FIFO Assignment for Filter 7 */ +#define CAN_FFA1R_FFA8 ((uint16_t)0x0100) /*!< Filter FIFO Assignment for Filter 8 */ +#define CAN_FFA1R_FFA9 ((uint16_t)0x0200) /*!< Filter FIFO Assignment for Filter 9 */ +#define CAN_FFA1R_FFA10 ((uint16_t)0x0400) /*!< Filter FIFO Assignment for Filter 10 */ +#define CAN_FFA1R_FFA11 ((uint16_t)0x0800) /*!< Filter FIFO Assignment for Filter 11 */ +#define CAN_FFA1R_FFA12 ((uint16_t)0x1000) /*!< Filter FIFO Assignment for Filter 12 */ +#define CAN_FFA1R_FFA13 ((uint16_t)0x2000) /*!< Filter FIFO Assignment for Filter 13 */ + +/******************* Bit definition for CAN_FA1R register *******************/ +#define CAN_FA1R_FACT ((uint16_t)0x3FFF) /*!< Filter Active */ +#define CAN_FA1R_FACT0 ((uint16_t)0x0001) /*!< Filter 0 Active */ +#define CAN_FA1R_FACT1 ((uint16_t)0x0002) /*!< Filter 1 Active */ +#define CAN_FA1R_FACT2 ((uint16_t)0x0004) /*!< Filter 2 Active */ +#define CAN_FA1R_FACT3 ((uint16_t)0x0008) /*!< Filter 3 Active */ +#define CAN_FA1R_FACT4 ((uint16_t)0x0010) /*!< Filter 4 Active */ +#define CAN_FA1R_FACT5 ((uint16_t)0x0020) /*!< Filter 5 Active */ +#define CAN_FA1R_FACT6 ((uint16_t)0x0040) /*!< Filter 6 Active */ +#define CAN_FA1R_FACT7 ((uint16_t)0x0080) /*!< Filter 7 Active */ +#define CAN_FA1R_FACT8 ((uint16_t)0x0100) /*!< Filter 8 Active */ +#define CAN_FA1R_FACT9 ((uint16_t)0x0200) /*!< Filter 9 Active */ +#define CAN_FA1R_FACT10 ((uint16_t)0x0400) /*!< Filter 10 Active */ +#define CAN_FA1R_FACT11 ((uint16_t)0x0800) /*!< Filter 11 Active */ +#define CAN_FA1R_FACT12 ((uint16_t)0x1000) /*!< Filter 12 Active */ +#define CAN_FA1R_FACT13 ((uint16_t)0x2000) /*!< Filter 13 Active */ + +/******************* Bit definition for CAN_F0R1 register *******************/ +#define CAN_F0R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F0R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F0R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F0R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F0R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F0R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F0R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F0R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F0R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F0R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F0R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F0R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F0R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F0R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F0R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F0R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F0R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F0R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F0R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F0R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F0R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F0R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F0R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F0R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F0R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F0R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F0R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F0R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F0R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F0R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F0R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F0R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F1R1 register *******************/ +#define CAN_F1R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F1R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F1R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F1R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F1R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F1R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F1R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F1R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F1R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F1R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F1R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F1R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F1R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F1R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F1R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F1R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F1R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F1R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F1R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F1R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F1R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F1R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F1R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F1R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F1R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F1R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F1R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F1R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F1R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F1R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F1R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F1R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F2R1 register *******************/ +#define CAN_F2R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F2R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F2R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F2R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F2R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F2R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F2R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F2R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F2R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F2R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F2R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F2R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F2R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F2R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F2R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F2R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F2R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F2R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F2R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F2R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F2R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F2R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F2R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F2R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F2R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F2R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F2R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F2R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F2R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F2R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F2R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F2R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F3R1 register *******************/ +#define CAN_F3R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F3R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F3R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F3R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F3R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F3R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F3R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F3R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F3R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F3R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F3R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F3R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F3R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F3R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F3R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F3R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F3R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F3R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F3R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F3R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F3R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F3R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F3R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F3R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F3R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F3R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F3R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F3R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F3R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F3R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F3R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F3R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F4R1 register *******************/ +#define CAN_F4R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F4R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F4R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F4R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F4R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F4R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F4R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F4R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F4R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F4R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F4R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F4R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F4R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F4R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F4R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F4R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F4R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F4R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F4R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F4R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F4R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F4R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F4R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F4R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F4R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F4R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F4R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F4R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F4R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F4R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F4R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F4R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F5R1 register *******************/ +#define CAN_F5R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F5R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F5R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F5R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F5R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F5R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F5R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F5R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F5R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F5R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F5R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F5R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F5R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F5R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F5R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F5R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F5R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F5R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F5R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F5R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F5R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F5R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F5R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F5R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F5R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F5R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F5R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F5R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F5R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F5R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F5R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F5R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F6R1 register *******************/ +#define CAN_F6R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F6R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F6R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F6R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F6R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F6R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F6R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F6R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F6R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F6R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F6R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F6R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F6R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F6R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F6R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F6R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F6R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F6R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F6R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F6R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F6R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F6R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F6R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F6R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F6R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F6R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F6R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F6R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F6R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F6R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F6R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F6R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F7R1 register *******************/ +#define CAN_F7R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F7R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F7R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F7R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F7R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F7R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F7R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F7R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F7R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F7R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F7R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F7R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F7R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F7R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F7R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F7R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F7R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F7R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F7R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F7R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F7R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F7R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F7R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F7R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F7R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F7R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F7R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F7R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F7R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F7R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F7R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F7R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F8R1 register *******************/ +#define CAN_F8R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F8R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F8R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F8R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F8R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F8R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F8R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F8R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F8R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F8R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F8R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F8R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F8R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F8R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F8R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F8R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F8R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F8R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F8R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F8R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F8R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F8R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F8R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F8R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F8R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F8R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F8R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F8R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F8R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F8R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F8R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F8R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F9R1 register *******************/ +#define CAN_F9R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F9R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F9R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F9R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F9R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F9R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F9R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F9R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F9R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F9R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F9R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F9R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F9R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F9R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F9R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F9R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F9R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F9R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F9R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F9R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F9R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F9R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F9R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F9R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F9R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F9R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F9R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F9R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F9R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F9R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F9R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F9R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F10R1 register ******************/ +#define CAN_F10R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F10R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F10R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F10R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F10R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F10R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F10R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F10R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F10R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F10R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F10R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F10R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F10R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F10R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F10R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F10R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F10R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F10R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F10R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F10R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F10R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F10R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F10R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F10R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F10R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F10R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F10R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F10R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F10R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F10R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F10R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F10R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F11R1 register ******************/ +#define CAN_F11R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F11R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F11R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F11R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F11R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F11R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F11R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F11R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F11R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F11R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F11R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F11R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F11R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F11R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F11R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F11R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F11R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F11R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F11R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F11R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F11R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F11R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F11R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F11R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F11R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F11R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F11R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F11R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F11R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F11R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F11R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F11R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F12R1 register ******************/ +#define CAN_F12R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F12R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F12R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F12R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F12R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F12R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F12R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F12R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F12R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F12R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F12R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F12R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F12R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F12R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F12R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F12R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F12R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F12R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F12R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F12R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F12R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F12R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F12R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F12R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F12R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F12R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F12R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F12R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F12R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F12R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F12R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F12R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F13R1 register ******************/ +#define CAN_F13R1_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F13R1_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F13R1_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F13R1_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F13R1_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F13R1_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F13R1_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F13R1_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F13R1_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F13R1_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F13R1_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F13R1_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F13R1_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F13R1_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F13R1_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F13R1_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F13R1_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F13R1_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F13R1_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F13R1_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F13R1_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F13R1_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F13R1_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F13R1_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F13R1_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F13R1_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F13R1_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F13R1_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F13R1_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F13R1_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F13R1_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F13R1_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F0R2 register *******************/ +#define CAN_F0R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F0R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F0R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F0R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F0R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F0R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F0R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F0R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F0R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F0R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F0R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F0R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F0R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F0R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F0R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F0R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F0R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F0R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F0R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F0R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F0R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F0R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F0R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F0R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F0R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F0R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F0R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F0R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F0R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F0R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F0R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F0R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F1R2 register *******************/ +#define CAN_F1R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F1R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F1R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F1R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F1R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F1R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F1R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F1R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F1R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F1R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F1R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F1R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F1R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F1R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F1R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F1R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F1R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F1R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F1R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F1R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F1R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F1R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F1R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F1R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F1R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F1R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F1R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F1R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F1R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F1R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F1R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F1R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F2R2 register *******************/ +#define CAN_F2R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F2R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F2R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F2R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F2R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F2R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F2R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F2R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F2R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F2R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F2R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F2R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F2R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F2R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F2R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F2R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F2R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F2R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F2R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F2R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F2R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F2R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F2R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F2R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F2R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F2R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F2R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F2R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F2R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F2R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F2R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F2R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F3R2 register *******************/ +#define CAN_F3R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F3R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F3R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F3R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F3R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F3R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F3R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F3R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F3R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F3R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F3R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F3R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F3R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F3R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F3R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F3R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F3R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F3R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F3R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F3R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F3R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F3R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F3R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F3R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F3R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F3R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F3R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F3R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F3R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F3R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F3R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F3R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F4R2 register *******************/ +#define CAN_F4R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F4R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F4R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F4R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F4R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F4R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F4R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F4R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F4R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F4R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F4R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F4R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F4R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F4R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F4R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F4R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F4R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F4R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F4R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F4R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F4R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F4R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F4R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F4R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F4R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F4R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F4R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F4R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F4R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F4R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F4R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F4R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F5R2 register *******************/ +#define CAN_F5R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F5R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F5R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F5R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F5R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F5R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F5R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F5R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F5R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F5R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F5R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F5R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F5R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F5R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F5R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F5R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F5R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F5R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F5R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F5R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F5R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F5R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F5R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F5R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F5R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F5R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F5R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F5R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F5R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F5R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F5R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F5R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F6R2 register *******************/ +#define CAN_F6R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F6R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F6R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F6R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F6R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F6R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F6R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F6R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F6R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F6R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F6R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F6R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F6R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F6R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F6R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F6R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F6R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F6R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F6R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F6R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F6R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F6R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F6R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F6R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F6R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F6R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F6R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F6R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F6R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F6R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F6R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F6R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F7R2 register *******************/ +#define CAN_F7R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F7R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F7R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F7R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F7R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F7R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F7R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F7R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F7R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F7R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F7R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F7R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F7R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F7R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F7R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F7R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F7R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F7R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F7R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F7R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F7R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F7R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F7R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F7R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F7R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F7R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F7R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F7R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F7R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F7R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F7R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F7R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F8R2 register *******************/ +#define CAN_F8R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F8R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F8R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F8R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F8R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F8R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F8R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F8R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F8R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F8R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F8R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F8R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F8R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F8R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F8R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F8R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F8R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F8R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F8R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F8R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F8R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F8R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F8R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F8R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F8R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F8R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F8R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F8R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F8R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F8R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F8R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F8R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F9R2 register *******************/ +#define CAN_F9R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F9R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F9R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F9R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F9R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F9R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F9R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F9R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F9R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F9R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F9R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F9R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F9R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F9R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F9R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F9R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F9R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F9R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F9R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F9R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F9R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F9R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F9R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F9R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F9R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F9R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F9R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F9R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F9R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F9R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F9R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F9R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F10R2 register ******************/ +#define CAN_F10R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F10R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F10R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F10R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F10R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F10R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F10R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F10R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F10R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F10R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F10R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F10R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F10R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F10R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F10R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F10R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F10R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F10R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F10R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F10R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F10R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F10R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F10R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F10R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F10R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F10R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F10R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F10R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F10R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F10R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F10R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F10R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F11R2 register ******************/ +#define CAN_F11R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F11R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F11R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F11R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F11R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F11R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F11R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F11R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F11R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F11R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F11R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F11R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F11R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F11R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F11R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F11R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F11R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F11R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F11R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F11R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F11R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F11R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F11R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F11R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F11R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F11R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F11R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F11R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F11R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F11R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F11R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F11R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F12R2 register ******************/ +#define CAN_F12R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F12R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F12R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F12R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F12R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F12R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F12R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F12R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F12R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F12R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F12R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F12R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F12R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F12R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F12R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F12R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F12R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F12R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F12R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F12R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F12R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F12R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F12R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F12R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F12R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F12R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F12R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F12R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F12R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F12R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F12R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F12R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************* Bit definition for CAN_F13R2 register ******************/ +#define CAN_F13R2_FB0 ((uint32_t)0x00000001) /*!< Filter bit 0 */ +#define CAN_F13R2_FB1 ((uint32_t)0x00000002) /*!< Filter bit 1 */ +#define CAN_F13R2_FB2 ((uint32_t)0x00000004) /*!< Filter bit 2 */ +#define CAN_F13R2_FB3 ((uint32_t)0x00000008) /*!< Filter bit 3 */ +#define CAN_F13R2_FB4 ((uint32_t)0x00000010) /*!< Filter bit 4 */ +#define CAN_F13R2_FB5 ((uint32_t)0x00000020) /*!< Filter bit 5 */ +#define CAN_F13R2_FB6 ((uint32_t)0x00000040) /*!< Filter bit 6 */ +#define CAN_F13R2_FB7 ((uint32_t)0x00000080) /*!< Filter bit 7 */ +#define CAN_F13R2_FB8 ((uint32_t)0x00000100) /*!< Filter bit 8 */ +#define CAN_F13R2_FB9 ((uint32_t)0x00000200) /*!< Filter bit 9 */ +#define CAN_F13R2_FB10 ((uint32_t)0x00000400) /*!< Filter bit 10 */ +#define CAN_F13R2_FB11 ((uint32_t)0x00000800) /*!< Filter bit 11 */ +#define CAN_F13R2_FB12 ((uint32_t)0x00001000) /*!< Filter bit 12 */ +#define CAN_F13R2_FB13 ((uint32_t)0x00002000) /*!< Filter bit 13 */ +#define CAN_F13R2_FB14 ((uint32_t)0x00004000) /*!< Filter bit 14 */ +#define CAN_F13R2_FB15 ((uint32_t)0x00008000) /*!< Filter bit 15 */ +#define CAN_F13R2_FB16 ((uint32_t)0x00010000) /*!< Filter bit 16 */ +#define CAN_F13R2_FB17 ((uint32_t)0x00020000) /*!< Filter bit 17 */ +#define CAN_F13R2_FB18 ((uint32_t)0x00040000) /*!< Filter bit 18 */ +#define CAN_F13R2_FB19 ((uint32_t)0x00080000) /*!< Filter bit 19 */ +#define CAN_F13R2_FB20 ((uint32_t)0x00100000) /*!< Filter bit 20 */ +#define CAN_F13R2_FB21 ((uint32_t)0x00200000) /*!< Filter bit 21 */ +#define CAN_F13R2_FB22 ((uint32_t)0x00400000) /*!< Filter bit 22 */ +#define CAN_F13R2_FB23 ((uint32_t)0x00800000) /*!< Filter bit 23 */ +#define CAN_F13R2_FB24 ((uint32_t)0x01000000) /*!< Filter bit 24 */ +#define CAN_F13R2_FB25 ((uint32_t)0x02000000) /*!< Filter bit 25 */ +#define CAN_F13R2_FB26 ((uint32_t)0x04000000) /*!< Filter bit 26 */ +#define CAN_F13R2_FB27 ((uint32_t)0x08000000) /*!< Filter bit 27 */ +#define CAN_F13R2_FB28 ((uint32_t)0x10000000) /*!< Filter bit 28 */ +#define CAN_F13R2_FB29 ((uint32_t)0x20000000) /*!< Filter bit 29 */ +#define CAN_F13R2_FB30 ((uint32_t)0x40000000) /*!< Filter bit 30 */ +#define CAN_F13R2_FB31 ((uint32_t)0x80000000) /*!< Filter bit 31 */ + +/******************************************************************************/ +/* */ +/* Serial Peripheral Interface */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for SPI_CR1 register ********************/ +#define SPI_CR1_CPHA ((uint16_t)0x0001) /*!< Clock Phase */ +#define SPI_CR1_CPOL ((uint16_t)0x0002) /*!< Clock Polarity */ +#define SPI_CR1_MSTR ((uint16_t)0x0004) /*!< Master Selection */ + +#define SPI_CR1_BR ((uint16_t)0x0038) /*!< BR[2:0] bits (Baud Rate Control) */ +#define SPI_CR1_BR_0 ((uint16_t)0x0008) /*!< Bit 0 */ +#define SPI_CR1_BR_1 ((uint16_t)0x0010) /*!< Bit 1 */ +#define SPI_CR1_BR_2 ((uint16_t)0x0020) /*!< Bit 2 */ + +#define SPI_CR1_SPE ((uint16_t)0x0040) /*!< SPI Enable */ +#define SPI_CR1_LSBFIRST ((uint16_t)0x0080) /*!< Frame Format */ +#define SPI_CR1_SSI ((uint16_t)0x0100) /*!< Internal slave select */ +#define SPI_CR1_SSM ((uint16_t)0x0200) /*!< Software slave management */ +#define SPI_CR1_RXONLY ((uint16_t)0x0400) /*!< Receive only */ +#define SPI_CR1_DFF ((uint16_t)0x0800) /*!< Data Frame Format */ +#define SPI_CR1_CRCNEXT ((uint16_t)0x1000) /*!< Transmit CRC next */ +#define SPI_CR1_CRCEN ((uint16_t)0x2000) /*!< Hardware CRC calculation enable */ +#define SPI_CR1_BIDIOE ((uint16_t)0x4000) /*!< Output enable in bidirectional mode */ +#define SPI_CR1_BIDIMODE ((uint16_t)0x8000) /*!< Bidirectional data mode enable */ + +/******************* Bit definition for SPI_CR2 register ********************/ +#define SPI_CR2_RXDMAEN ((uint8_t)0x01) /*!< Rx Buffer DMA Enable */ +#define SPI_CR2_TXDMAEN ((uint8_t)0x02) /*!< Tx Buffer DMA Enable */ +#define SPI_CR2_SSOE ((uint8_t)0x04) /*!< SS Output Enable */ +#define SPI_CR2_ERRIE ((uint8_t)0x20) /*!< Error Interrupt Enable */ +#define SPI_CR2_RXNEIE ((uint8_t)0x40) /*!< RX buffer Not Empty Interrupt Enable */ +#define SPI_CR2_TXEIE ((uint8_t)0x80) /*!< Tx buffer Empty Interrupt Enable */ + +/******************** Bit definition for SPI_SR register ********************/ +#define SPI_SR_RXNE ((uint8_t)0x01) /*!< Receive buffer Not Empty */ +#define SPI_SR_TXE ((uint8_t)0x02) /*!< Transmit buffer Empty */ +#define SPI_SR_CHSIDE ((uint8_t)0x04) /*!< Channel side */ +#define SPI_SR_UDR ((uint8_t)0x08) /*!< Underrun flag */ +#define SPI_SR_CRCERR ((uint8_t)0x10) /*!< CRC Error flag */ +#define SPI_SR_MODF ((uint8_t)0x20) /*!< Mode fault */ +#define SPI_SR_OVR ((uint8_t)0x40) /*!< Overrun flag */ +#define SPI_SR_BSY ((uint8_t)0x80) /*!< Busy flag */ + +/******************** Bit definition for SPI_DR register ********************/ +#define SPI_DR_DR ((uint16_t)0xFFFF) /*!< Data Register */ + +/******************* Bit definition for SPI_CRCPR register ******************/ +#define SPI_CRCPR_CRCPOLY ((uint16_t)0xFFFF) /*!< CRC polynomial register */ + +/****************** Bit definition for SPI_RXCRCR register ******************/ +#define SPI_RXCRCR_RXCRC ((uint16_t)0xFFFF) /*!< Rx CRC Register */ + +/****************** Bit definition for SPI_TXCRCR register ******************/ +#define SPI_TXCRCR_TXCRC ((uint16_t)0xFFFF) /*!< Tx CRC Register */ + +/****************** Bit definition for SPI_I2SCFGR register *****************/ +#define SPI_I2SCFGR_CHLEN ((uint16_t)0x0001) /*!< Channel length (number of bits per audio channel) */ + +#define SPI_I2SCFGR_DATLEN ((uint16_t)0x0006) /*!< DATLEN[1:0] bits (Data length to be transferred) */ +#define SPI_I2SCFGR_DATLEN_0 ((uint16_t)0x0002) /*!< Bit 0 */ +#define SPI_I2SCFGR_DATLEN_1 ((uint16_t)0x0004) /*!< Bit 1 */ + +#define SPI_I2SCFGR_CKPOL ((uint16_t)0x0008) /*!< steady state clock polarity */ + +#define SPI_I2SCFGR_I2SSTD ((uint16_t)0x0030) /*!< I2SSTD[1:0] bits (I2S standard selection) */ +#define SPI_I2SCFGR_I2SSTD_0 ((uint16_t)0x0010) /*!< Bit 0 */ +#define SPI_I2SCFGR_I2SSTD_1 ((uint16_t)0x0020) /*!< Bit 1 */ + +#define SPI_I2SCFGR_PCMSYNC ((uint16_t)0x0080) /*!< PCM frame synchronization */ + +#define SPI_I2SCFGR_I2SCFG ((uint16_t)0x0300) /*!< I2SCFG[1:0] bits (I2S configuration mode) */ +#define SPI_I2SCFGR_I2SCFG_0 ((uint16_t)0x0100) /*!< Bit 0 */ +#define SPI_I2SCFGR_I2SCFG_1 ((uint16_t)0x0200) /*!< Bit 1 */ + +#define SPI_I2SCFGR_I2SE ((uint16_t)0x0400) /*!< I2S Enable */ +#define SPI_I2SCFGR_I2SMOD ((uint16_t)0x0800) /*!< I2S mode selection */ + +/****************** Bit definition for SPI_I2SPR register *******************/ +#define SPI_I2SPR_I2SDIV ((uint16_t)0x00FF) /*!< I2S Linear prescaler */ +#define SPI_I2SPR_ODD ((uint16_t)0x0100) /*!< Odd factor for the prescaler */ +#define SPI_I2SPR_MCKOE ((uint16_t)0x0200) /*!< Master Clock Output Enable */ + +/******************************************************************************/ +/* */ +/* Inter-integrated Circuit Interface */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for I2C_CR1 register ********************/ +#define I2C_CR1_PE ((uint16_t)0x0001) /*!< Peripheral Enable */ +#define I2C_CR1_SMBUS ((uint16_t)0x0002) /*!< SMBus Mode */ +#define I2C_CR1_SMBTYPE ((uint16_t)0x0008) /*!< SMBus Type */ +#define I2C_CR1_ENARP ((uint16_t)0x0010) /*!< ARP Enable */ +#define I2C_CR1_ENPEC ((uint16_t)0x0020) /*!< PEC Enable */ +#define I2C_CR1_ENGC ((uint16_t)0x0040) /*!< General Call Enable */ +#define I2C_CR1_NOSTRETCH ((uint16_t)0x0080) /*!< Clock Stretching Disable (Slave mode) */ +#define I2C_CR1_START ((uint16_t)0x0100) /*!< Start Generation */ +#define I2C_CR1_STOP ((uint16_t)0x0200) /*!< Stop Generation */ +#define I2C_CR1_ACK ((uint16_t)0x0400) /*!< Acknowledge Enable */ +#define I2C_CR1_POS ((uint16_t)0x0800) /*!< Acknowledge/PEC Position (for data reception) */ +#define I2C_CR1_PEC ((uint16_t)0x1000) /*!< Packet Error Checking */ +#define I2C_CR1_ALERT ((uint16_t)0x2000) /*!< SMBus Alert */ +#define I2C_CR1_SWRST ((uint16_t)0x8000) /*!< Software Reset */ + +/******************* Bit definition for I2C_CR2 register ********************/ +#define I2C_CR2_FREQ ((uint16_t)0x003F) /*!< FREQ[5:0] bits (Peripheral Clock Frequency) */ +#define I2C_CR2_FREQ_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define I2C_CR2_FREQ_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define I2C_CR2_FREQ_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define I2C_CR2_FREQ_3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define I2C_CR2_FREQ_4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define I2C_CR2_FREQ_5 ((uint16_t)0x0020) /*!< Bit 5 */ + +#define I2C_CR2_ITERREN ((uint16_t)0x0100) /*!< Error Interrupt Enable */ +#define I2C_CR2_ITEVTEN ((uint16_t)0x0200) /*!< Event Interrupt Enable */ +#define I2C_CR2_ITBUFEN ((uint16_t)0x0400) /*!< Buffer Interrupt Enable */ +#define I2C_CR2_DMAEN ((uint16_t)0x0800) /*!< DMA Requests Enable */ +#define I2C_CR2_LAST ((uint16_t)0x1000) /*!< DMA Last Transfer */ + +/******************* Bit definition for I2C_OAR1 register *******************/ +#define I2C_OAR1_ADD1_7 ((uint16_t)0x00FE) /*!< Interface Address */ +#define I2C_OAR1_ADD8_9 ((uint16_t)0x0300) /*!< Interface Address */ + +#define I2C_OAR1_ADD0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define I2C_OAR1_ADD1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define I2C_OAR1_ADD2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define I2C_OAR1_ADD3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define I2C_OAR1_ADD4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define I2C_OAR1_ADD5 ((uint16_t)0x0020) /*!< Bit 5 */ +#define I2C_OAR1_ADD6 ((uint16_t)0x0040) /*!< Bit 6 */ +#define I2C_OAR1_ADD7 ((uint16_t)0x0080) /*!< Bit 7 */ +#define I2C_OAR1_ADD8 ((uint16_t)0x0100) /*!< Bit 8 */ +#define I2C_OAR1_ADD9 ((uint16_t)0x0200) /*!< Bit 9 */ + +#define I2C_OAR1_ADDMODE ((uint16_t)0x8000) /*!< Addressing Mode (Slave mode) */ + +/******************* Bit definition for I2C_OAR2 register *******************/ +#define I2C_OAR2_ENDUAL ((uint8_t)0x01) /*!< Dual addressing mode enable */ +#define I2C_OAR2_ADD2 ((uint8_t)0xFE) /*!< Interface address */ + +/******************** Bit definition for I2C_DR register ********************/ +#define I2C_DR_DR ((uint8_t)0xFF) /*!< 8-bit Data Register */ + +/******************* Bit definition for I2C_SR1 register ********************/ +#define I2C_SR1_SB ((uint16_t)0x0001) /*!< Start Bit (Master mode) */ +#define I2C_SR1_ADDR ((uint16_t)0x0002) /*!< Address sent (master mode)/matched (slave mode) */ +#define I2C_SR1_BTF ((uint16_t)0x0004) /*!< Byte Transfer Finished */ +#define I2C_SR1_ADD10 ((uint16_t)0x0008) /*!< 10-bit header sent (Master mode) */ +#define I2C_SR1_STOPF ((uint16_t)0x0010) /*!< Stop detection (Slave mode) */ +#define I2C_SR1_RXNE ((uint16_t)0x0040) /*!< Data Register not Empty (receivers) */ +#define I2C_SR1_TXE ((uint16_t)0x0080) /*!< Data Register Empty (transmitters) */ +#define I2C_SR1_BERR ((uint16_t)0x0100) /*!< Bus Error */ +#define I2C_SR1_ARLO ((uint16_t)0x0200) /*!< Arbitration Lost (master mode) */ +#define I2C_SR1_AF ((uint16_t)0x0400) /*!< Acknowledge Failure */ +#define I2C_SR1_OVR ((uint16_t)0x0800) /*!< Overrun/Underrun */ +#define I2C_SR1_PECERR ((uint16_t)0x1000) /*!< PEC Error in reception */ +#define I2C_SR1_TIMEOUT ((uint16_t)0x4000) /*!< Timeout or Tlow Error */ +#define I2C_SR1_SMBALERT ((uint16_t)0x8000) /*!< SMBus Alert */ + +/******************* Bit definition for I2C_SR2 register ********************/ +#define I2C_SR2_MSL ((uint16_t)0x0001) /*!< Master/Slave */ +#define I2C_SR2_BUSY ((uint16_t)0x0002) /*!< Bus Busy */ +#define I2C_SR2_TRA ((uint16_t)0x0004) /*!< Transmitter/Receiver */ +#define I2C_SR2_GENCALL ((uint16_t)0x0010) /*!< General Call Address (Slave mode) */ +#define I2C_SR2_SMBDEFAULT ((uint16_t)0x0020) /*!< SMBus Device Default Address (Slave mode) */ +#define I2C_SR2_SMBHOST ((uint16_t)0x0040) /*!< SMBus Host Header (Slave mode) */ +#define I2C_SR2_DUALF ((uint16_t)0x0080) /*!< Dual Flag (Slave mode) */ +#define I2C_SR2_PEC ((uint16_t)0xFF00) /*!< Packet Error Checking Register */ + +/******************* Bit definition for I2C_CCR register ********************/ +#define I2C_CCR_CCR ((uint16_t)0x0FFF) /*!< Clock Control Register in Fast/Standard mode (Master mode) */ +#define I2C_CCR_DUTY ((uint16_t)0x4000) /*!< Fast Mode Duty Cycle */ +#define I2C_CCR_FS ((uint16_t)0x8000) /*!< I2C Master Mode Selection */ + +/****************** Bit definition for I2C_TRISE register *******************/ +#define I2C_TRISE_TRISE ((uint8_t)0x3F) /*!< Maximum Rise Time in Fast/Standard mode (Master mode) */ + +/******************************************************************************/ +/* */ +/* Universal Synchronous Asynchronous Receiver Transmitter */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for USART_SR register *******************/ +#define USART_SR_PE ((uint16_t)0x0001) /*!< Parity Error */ +#define USART_SR_FE ((uint16_t)0x0002) /*!< Framing Error */ +#define USART_SR_NE ((uint16_t)0x0004) /*!< Noise Error Flag */ +#define USART_SR_ORE ((uint16_t)0x0008) /*!< OverRun Error */ +#define USART_SR_IDLE ((uint16_t)0x0010) /*!< IDLE line detected */ +#define USART_SR_RXNE ((uint16_t)0x0020) /*!< Read Data Register Not Empty */ +#define USART_SR_TC ((uint16_t)0x0040) /*!< Transmission Complete */ +#define USART_SR_TXE ((uint16_t)0x0080) /*!< Transmit Data Register Empty */ +#define USART_SR_LBD ((uint16_t)0x0100) /*!< LIN Break Detection Flag */ +#define USART_SR_CTS ((uint16_t)0x0200) /*!< CTS Flag */ + +/******************* Bit definition for USART_DR register *******************/ +#define USART_DR_DR ((uint16_t)0x01FF) /*!< Data value */ + +/****************** Bit definition for USART_BRR register *******************/ +#define USART_BRR_DIV_Fraction ((uint16_t)0x000F) /*!< Fraction of USARTDIV */ +#define USART_BRR_DIV_Mantissa ((uint16_t)0xFFF0) /*!< Mantissa of USARTDIV */ + +/****************** Bit definition for USART_CR1 register *******************/ +#define USART_CR1_SBK ((uint16_t)0x0001) /*!< Send Break */ +#define USART_CR1_RWU ((uint16_t)0x0002) /*!< Receiver wakeup */ +#define USART_CR1_RE ((uint16_t)0x0004) /*!< Receiver Enable */ +#define USART_CR1_TE ((uint16_t)0x0008) /*!< Transmitter Enable */ +#define USART_CR1_IDLEIE ((uint16_t)0x0010) /*!< IDLE Interrupt Enable */ +#define USART_CR1_RXNEIE ((uint16_t)0x0020) /*!< RXNE Interrupt Enable */ +#define USART_CR1_TCIE ((uint16_t)0x0040) /*!< Transmission Complete Interrupt Enable */ +#define USART_CR1_TXEIE ((uint16_t)0x0080) /*!< PE Interrupt Enable */ +#define USART_CR1_PEIE ((uint16_t)0x0100) /*!< PE Interrupt Enable */ +#define USART_CR1_PS ((uint16_t)0x0200) /*!< Parity Selection */ +#define USART_CR1_PCE ((uint16_t)0x0400) /*!< Parity Control Enable */ +#define USART_CR1_WAKE ((uint16_t)0x0800) /*!< Wakeup method */ +#define USART_CR1_M ((uint16_t)0x1000) /*!< Word length */ +#define USART_CR1_UE ((uint16_t)0x2000) /*!< USART Enable */ +#define USART_CR1_OVER8 ((uint16_t)0x8000) /*!< USART Oversmapling 8-bits */ + +/****************** Bit definition for USART_CR2 register *******************/ +#define USART_CR2_ADD ((uint16_t)0x000F) /*!< Address of the USART node */ +#define USART_CR2_LBDL ((uint16_t)0x0020) /*!< LIN Break Detection Length */ +#define USART_CR2_LBDIE ((uint16_t)0x0040) /*!< LIN Break Detection Interrupt Enable */ +#define USART_CR2_LBCL ((uint16_t)0x0100) /*!< Last Bit Clock pulse */ +#define USART_CR2_CPHA ((uint16_t)0x0200) /*!< Clock Phase */ +#define USART_CR2_CPOL ((uint16_t)0x0400) /*!< Clock Polarity */ +#define USART_CR2_CLKEN ((uint16_t)0x0800) /*!< Clock Enable */ + +#define USART_CR2_STOP ((uint16_t)0x3000) /*!< STOP[1:0] bits (STOP bits) */ +#define USART_CR2_STOP_0 ((uint16_t)0x1000) /*!< Bit 0 */ +#define USART_CR2_STOP_1 ((uint16_t)0x2000) /*!< Bit 1 */ + +#define USART_CR2_LINEN ((uint16_t)0x4000) /*!< LIN mode enable */ + +/****************** Bit definition for USART_CR3 register *******************/ +#define USART_CR3_EIE ((uint16_t)0x0001) /*!< Error Interrupt Enable */ +#define USART_CR3_IREN ((uint16_t)0x0002) /*!< IrDA mode Enable */ +#define USART_CR3_IRLP ((uint16_t)0x0004) /*!< IrDA Low-Power */ +#define USART_CR3_HDSEL ((uint16_t)0x0008) /*!< Half-Duplex Selection */ +#define USART_CR3_NACK ((uint16_t)0x0010) /*!< Smartcard NACK enable */ +#define USART_CR3_SCEN ((uint16_t)0x0020) /*!< Smartcard mode enable */ +#define USART_CR3_DMAR ((uint16_t)0x0040) /*!< DMA Enable Receiver */ +#define USART_CR3_DMAT ((uint16_t)0x0080) /*!< DMA Enable Transmitter */ +#define USART_CR3_RTSE ((uint16_t)0x0100) /*!< RTS Enable */ +#define USART_CR3_CTSE ((uint16_t)0x0200) /*!< CTS Enable */ +#define USART_CR3_CTSIE ((uint16_t)0x0400) /*!< CTS Interrupt Enable */ +#define USART_CR3_ONEBIT ((uint16_t)0x0800) /*!< One Bit method */ + +/****************** Bit definition for USART_GTPR register ******************/ +#define USART_GTPR_PSC ((uint16_t)0x00FF) /*!< PSC[7:0] bits (Prescaler value) */ +#define USART_GTPR_PSC_0 ((uint16_t)0x0001) /*!< Bit 0 */ +#define USART_GTPR_PSC_1 ((uint16_t)0x0002) /*!< Bit 1 */ +#define USART_GTPR_PSC_2 ((uint16_t)0x0004) /*!< Bit 2 */ +#define USART_GTPR_PSC_3 ((uint16_t)0x0008) /*!< Bit 3 */ +#define USART_GTPR_PSC_4 ((uint16_t)0x0010) /*!< Bit 4 */ +#define USART_GTPR_PSC_5 ((uint16_t)0x0020) /*!< Bit 5 */ +#define USART_GTPR_PSC_6 ((uint16_t)0x0040) /*!< Bit 6 */ +#define USART_GTPR_PSC_7 ((uint16_t)0x0080) /*!< Bit 7 */ + +#define USART_GTPR_GT ((uint16_t)0xFF00) /*!< Guard time value */ + +/******************************************************************************/ +/* */ +/* Debug MCU */ +/* */ +/******************************************************************************/ + +/**************** Bit definition for DBGMCU_IDCODE register *****************/ +#define DBGMCU_IDCODE_DEV_ID ((uint32_t)0x00000FFF) /*!< Device Identifier */ + +#define DBGMCU_IDCODE_REV_ID ((uint32_t)0xFFFF0000) /*!< REV_ID[15:0] bits (Revision Identifier) */ +#define DBGMCU_IDCODE_REV_ID_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define DBGMCU_IDCODE_REV_ID_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define DBGMCU_IDCODE_REV_ID_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define DBGMCU_IDCODE_REV_ID_3 ((uint32_t)0x00080000) /*!< Bit 3 */ +#define DBGMCU_IDCODE_REV_ID_4 ((uint32_t)0x00100000) /*!< Bit 4 */ +#define DBGMCU_IDCODE_REV_ID_5 ((uint32_t)0x00200000) /*!< Bit 5 */ +#define DBGMCU_IDCODE_REV_ID_6 ((uint32_t)0x00400000) /*!< Bit 6 */ +#define DBGMCU_IDCODE_REV_ID_7 ((uint32_t)0x00800000) /*!< Bit 7 */ +#define DBGMCU_IDCODE_REV_ID_8 ((uint32_t)0x01000000) /*!< Bit 8 */ +#define DBGMCU_IDCODE_REV_ID_9 ((uint32_t)0x02000000) /*!< Bit 9 */ +#define DBGMCU_IDCODE_REV_ID_10 ((uint32_t)0x04000000) /*!< Bit 10 */ +#define DBGMCU_IDCODE_REV_ID_11 ((uint32_t)0x08000000) /*!< Bit 11 */ +#define DBGMCU_IDCODE_REV_ID_12 ((uint32_t)0x10000000) /*!< Bit 12 */ +#define DBGMCU_IDCODE_REV_ID_13 ((uint32_t)0x20000000) /*!< Bit 13 */ +#define DBGMCU_IDCODE_REV_ID_14 ((uint32_t)0x40000000) /*!< Bit 14 */ +#define DBGMCU_IDCODE_REV_ID_15 ((uint32_t)0x80000000) /*!< Bit 15 */ + +/****************** Bit definition for DBGMCU_CR register *******************/ +#define DBGMCU_CR_DBG_SLEEP ((uint32_t)0x00000001) /*!< Debug Sleep Mode */ +#define DBGMCU_CR_DBG_STOP ((uint32_t)0x00000002) /*!< Debug Stop Mode */ +#define DBGMCU_CR_DBG_STANDBY ((uint32_t)0x00000004) /*!< Debug Standby mode */ +#define DBGMCU_CR_TRACE_IOEN ((uint32_t)0x00000020) /*!< Trace Pin Assignment Control */ + +#define DBGMCU_CR_TRACE_MODE ((uint32_t)0x000000C0) /*!< TRACE_MODE[1:0] bits (Trace Pin Assignment Control) */ +#define DBGMCU_CR_TRACE_MODE_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define DBGMCU_CR_TRACE_MODE_1 ((uint32_t)0x00000080) /*!< Bit 1 */ + +#define DBGMCU_CR_DBG_IWDG_STOP ((uint32_t)0x00000100) /*!< Debug Independent Watchdog stopped when Core is halted */ +#define DBGMCU_CR_DBG_WWDG_STOP ((uint32_t)0x00000200) /*!< Debug Window Watchdog stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM1_STOP ((uint32_t)0x00000400) /*!< TIM1 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM2_STOP ((uint32_t)0x00000800) /*!< TIM2 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM3_STOP ((uint32_t)0x00001000) /*!< TIM3 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM4_STOP ((uint32_t)0x00002000) /*!< TIM4 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_CAN1_STOP ((uint32_t)0x00004000) /*!< Debug CAN1 stopped when Core is halted */ +#define DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT ((uint32_t)0x00008000) /*!< SMBUS timeout mode stopped when Core is halted */ +#define DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT ((uint32_t)0x00010000) /*!< SMBUS timeout mode stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM8_STOP ((uint32_t)0x00020000) /*!< TIM8 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM5_STOP ((uint32_t)0x00040000) /*!< TIM5 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM6_STOP ((uint32_t)0x00080000) /*!< TIM6 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_TIM7_STOP ((uint32_t)0x00100000) /*!< TIM7 counter stopped when core is halted */ +#define DBGMCU_CR_DBG_CAN2_STOP ((uint32_t)0x00200000) /*!< Debug CAN2 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM15_STOP ((uint32_t)0x00400000) /*!< Debug TIM15 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM16_STOP ((uint32_t)0x00800000) /*!< Debug TIM16 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM17_STOP ((uint32_t)0x01000000) /*!< Debug TIM17 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM12_STOP ((uint32_t)0x02000000) /*!< Debug TIM12 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM13_STOP ((uint32_t)0x04000000) /*!< Debug TIM13 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM14_STOP ((uint32_t)0x08000000) /*!< Debug TIM14 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM9_STOP ((uint32_t)0x10000000) /*!< Debug TIM9 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM10_STOP ((uint32_t)0x20000000) /*!< Debug TIM10 stopped when Core is halted */ +#define DBGMCU_CR_DBG_TIM11_STOP ((uint32_t)0x40000000) /*!< Debug TIM11 stopped when Core is halted */ + +/******************************************************************************/ +/* */ +/* FLASH and Option Bytes Registers */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for FLASH_ACR register ******************/ +#define FLASH_ACR_LATENCY ((uint8_t)0x03) /*!< LATENCY[2:0] bits (Latency) */ +#define FLASH_ACR_LATENCY_0 ((uint8_t)0x00) /*!< Bit 0 */ +#define FLASH_ACR_LATENCY_1 ((uint8_t)0x01) /*!< Bit 0 */ +#define FLASH_ACR_LATENCY_2 ((uint8_t)0x02) /*!< Bit 1 */ + +#define FLASH_ACR_HLFCYA ((uint8_t)0x08) /*!< Flash Half Cycle Access Enable */ +#define FLASH_ACR_PRFTBE ((uint8_t)0x10) /*!< Prefetch Buffer Enable */ +#define FLASH_ACR_PRFTBS ((uint8_t)0x20) /*!< Prefetch Buffer Status */ + +/****************** Bit definition for FLASH_KEYR register ******************/ +#define FLASH_KEYR_FKEYR ((uint32_t)0xFFFFFFFF) /*!< FPEC Key */ + +/***************** Bit definition for FLASH_OPTKEYR register ****************/ +#define FLASH_OPTKEYR_OPTKEYR ((uint32_t)0xFFFFFFFF) /*!< Option Byte Key */ + +/****************** Bit definition for FLASH_SR register *******************/ +#define FLASH_SR_BSY ((uint8_t)0x01) /*!< Busy */ +#define FLASH_SR_PGERR ((uint8_t)0x04) /*!< Programming Error */ +#define FLASH_SR_WRPRTERR ((uint8_t)0x10) /*!< Write Protection Error */ +#define FLASH_SR_EOP ((uint8_t)0x20) /*!< End of operation */ + +/******************* Bit definition for FLASH_CR register *******************/ +#define FLASH_CR_PG ((uint16_t)0x0001) /*!< Programming */ +#define FLASH_CR_PER ((uint16_t)0x0002) /*!< Page Erase */ +#define FLASH_CR_MER ((uint16_t)0x0004) /*!< Mass Erase */ +#define FLASH_CR_OPTPG ((uint16_t)0x0010) /*!< Option Byte Programming */ +#define FLASH_CR_OPTER ((uint16_t)0x0020) /*!< Option Byte Erase */ +#define FLASH_CR_STRT ((uint16_t)0x0040) /*!< Start */ +#define FLASH_CR_LOCK ((uint16_t)0x0080) /*!< Lock */ +#define FLASH_CR_OPTWRE ((uint16_t)0x0200) /*!< Option Bytes Write Enable */ +#define FLASH_CR_ERRIE ((uint16_t)0x0400) /*!< Error Interrupt Enable */ +#define FLASH_CR_EOPIE ((uint16_t)0x1000) /*!< End of operation interrupt enable */ + +/******************* Bit definition for FLASH_AR register *******************/ +#define FLASH_AR_FAR ((uint32_t)0xFFFFFFFF) /*!< Flash Address */ + +/****************** Bit definition for FLASH_OBR register *******************/ +#define FLASH_OBR_OPTERR ((uint16_t)0x0001) /*!< Option Byte Error */ +#define FLASH_OBR_RDPRT ((uint16_t)0x0002) /*!< Read protection */ + +#define FLASH_OBR_USER ((uint16_t)0x03FC) /*!< User Option Bytes */ +#define FLASH_OBR_WDG_SW ((uint16_t)0x0004) /*!< WDG_SW */ +#define FLASH_OBR_nRST_STOP ((uint16_t)0x0008) /*!< nRST_STOP */ +#define FLASH_OBR_nRST_STDBY ((uint16_t)0x0010) /*!< nRST_STDBY */ +#define FLASH_OBR_BFB2 ((uint16_t)0x0020) /*!< BFB2 */ + +/****************** Bit definition for FLASH_WRPR register ******************/ +#define FLASH_WRPR_WRP ((uint32_t)0xFFFFFFFF) /*!< Write Protect */ + +/*----------------------------------------------------------------------------*/ + +/****************** Bit definition for FLASH_RDP register *******************/ +#define FLASH_RDP_RDP ((uint32_t)0x000000FF) /*!< Read protection option byte */ +#define FLASH_RDP_nRDP ((uint32_t)0x0000FF00) /*!< Read protection complemented option byte */ + +/****************** Bit definition for FLASH_USER register ******************/ +#define FLASH_USER_USER ((uint32_t)0x00FF0000) /*!< User option byte */ +#define FLASH_USER_nUSER ((uint32_t)0xFF000000) /*!< User complemented option byte */ + +/****************** Bit definition for FLASH_Data0 register *****************/ +#define FLASH_Data0_Data0 ((uint32_t)0x000000FF) /*!< User data storage option byte */ +#define FLASH_Data0_nData0 ((uint32_t)0x0000FF00) /*!< User data storage complemented option byte */ + +/****************** Bit definition for FLASH_Data1 register *****************/ +#define FLASH_Data1_Data1 ((uint32_t)0x00FF0000) /*!< User data storage option byte */ +#define FLASH_Data1_nData1 ((uint32_t)0xFF000000) /*!< User data storage complemented option byte */ + +/****************** Bit definition for FLASH_WRP0 register ******************/ +#define FLASH_WRP0_WRP0 ((uint32_t)0x000000FF) /*!< Flash memory write protection option bytes */ +#define FLASH_WRP0_nWRP0 ((uint32_t)0x0000FF00) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP1 register ******************/ +#define FLASH_WRP1_WRP1 ((uint32_t)0x00FF0000) /*!< Flash memory write protection option bytes */ +#define FLASH_WRP1_nWRP1 ((uint32_t)0xFF000000) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP2 register ******************/ +#define FLASH_WRP2_WRP2 ((uint32_t)0x000000FF) /*!< Flash memory write protection option bytes */ +#define FLASH_WRP2_nWRP2 ((uint32_t)0x0000FF00) /*!< Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRP3 register ******************/ +#define FLASH_WRP3_WRP3 ((uint32_t)0x00FF0000) /*!< Flash memory write protection option bytes */ +#define FLASH_WRP3_nWRP3 ((uint32_t)0xFF000000) /*!< Flash memory write protection complemented option bytes */ + +#ifdef STM32F10X_CL +/******************************************************************************/ +/* Ethernet MAC Registers bits definitions */ +/******************************************************************************/ +/* Bit definition for Ethernet MAC Control Register register */ +#define ETH_MACCR_WD ((uint32_t)0x00800000) /* Watchdog disable */ +#define ETH_MACCR_JD ((uint32_t)0x00400000) /* Jabber disable */ +#define ETH_MACCR_IFG ((uint32_t)0x000E0000) /* Inter-frame gap */ + #define ETH_MACCR_IFG_96Bit ((uint32_t)0x00000000) /* Minimum IFG between frames during transmission is 96Bit */ + #define ETH_MACCR_IFG_88Bit ((uint32_t)0x00020000) /* Minimum IFG between frames during transmission is 88Bit */ + #define ETH_MACCR_IFG_80Bit ((uint32_t)0x00040000) /* Minimum IFG between frames during transmission is 80Bit */ + #define ETH_MACCR_IFG_72Bit ((uint32_t)0x00060000) /* Minimum IFG between frames during transmission is 72Bit */ + #define ETH_MACCR_IFG_64Bit ((uint32_t)0x00080000) /* Minimum IFG between frames during transmission is 64Bit */ + #define ETH_MACCR_IFG_56Bit ((uint32_t)0x000A0000) /* Minimum IFG between frames during transmission is 56Bit */ + #define ETH_MACCR_IFG_48Bit ((uint32_t)0x000C0000) /* Minimum IFG between frames during transmission is 48Bit */ + #define ETH_MACCR_IFG_40Bit ((uint32_t)0x000E0000) /* Minimum IFG between frames during transmission is 40Bit */ +#define ETH_MACCR_CSD ((uint32_t)0x00010000) /* Carrier sense disable (during transmission) */ +#define ETH_MACCR_FES ((uint32_t)0x00004000) /* Fast ethernet speed */ +#define ETH_MACCR_ROD ((uint32_t)0x00002000) /* Receive own disable */ +#define ETH_MACCR_LM ((uint32_t)0x00001000) /* loopback mode */ +#define ETH_MACCR_DM ((uint32_t)0x00000800) /* Duplex mode */ +#define ETH_MACCR_IPCO ((uint32_t)0x00000400) /* IP Checksum offload */ +#define ETH_MACCR_RD ((uint32_t)0x00000200) /* Retry disable */ +#define ETH_MACCR_APCS ((uint32_t)0x00000080) /* Automatic Pad/CRC stripping */ +#define ETH_MACCR_BL ((uint32_t)0x00000060) /* Back-off limit: random integer number (r) of slot time delays before rescheduling + a transmission attempt during retries after a collision: 0 =< r <2^k */ + #define ETH_MACCR_BL_10 ((uint32_t)0x00000000) /* k = min (n, 10) */ + #define ETH_MACCR_BL_8 ((uint32_t)0x00000020) /* k = min (n, 8) */ + #define ETH_MACCR_BL_4 ((uint32_t)0x00000040) /* k = min (n, 4) */ + #define ETH_MACCR_BL_1 ((uint32_t)0x00000060) /* k = min (n, 1) */ +#define ETH_MACCR_DC ((uint32_t)0x00000010) /* Defferal check */ +#define ETH_MACCR_TE ((uint32_t)0x00000008) /* Transmitter enable */ +#define ETH_MACCR_RE ((uint32_t)0x00000004) /* Receiver enable */ + +/* Bit definition for Ethernet MAC Frame Filter Register */ +#define ETH_MACFFR_RA ((uint32_t)0x80000000) /* Receive all */ +#define ETH_MACFFR_HPF ((uint32_t)0x00000400) /* Hash or perfect filter */ +#define ETH_MACFFR_SAF ((uint32_t)0x00000200) /* Source address filter enable */ +#define ETH_MACFFR_SAIF ((uint32_t)0x00000100) /* SA inverse filtering */ +#define ETH_MACFFR_PCF ((uint32_t)0x000000C0) /* Pass control frames: 3 cases */ + #define ETH_MACFFR_PCF_BlockAll ((uint32_t)0x00000040) /* MAC filters all control frames from reaching the application */ + #define ETH_MACFFR_PCF_ForwardAll ((uint32_t)0x00000080) /* MAC forwards all control frames to application even if they fail the Address Filter */ + #define ETH_MACFFR_PCF_ForwardPassedAddrFilter ((uint32_t)0x000000C0) /* MAC forwards control frames that pass the Address Filter. */ +#define ETH_MACFFR_BFD ((uint32_t)0x00000020) /* Broadcast frame disable */ +#define ETH_MACFFR_PAM ((uint32_t)0x00000010) /* Pass all mutlicast */ +#define ETH_MACFFR_DAIF ((uint32_t)0x00000008) /* DA Inverse filtering */ +#define ETH_MACFFR_HM ((uint32_t)0x00000004) /* Hash multicast */ +#define ETH_MACFFR_HU ((uint32_t)0x00000002) /* Hash unicast */ +#define ETH_MACFFR_PM ((uint32_t)0x00000001) /* Promiscuous mode */ + +/* Bit definition for Ethernet MAC Hash Table High Register */ +#define ETH_MACHTHR_HTH ((uint32_t)0xFFFFFFFF) /* Hash table high */ + +/* Bit definition for Ethernet MAC Hash Table Low Register */ +#define ETH_MACHTLR_HTL ((uint32_t)0xFFFFFFFF) /* Hash table low */ + +/* Bit definition for Ethernet MAC MII Address Register */ +#define ETH_MACMIIAR_PA ((uint32_t)0x0000F800) /* Physical layer address */ +#define ETH_MACMIIAR_MR ((uint32_t)0x000007C0) /* MII register in the selected PHY */ +#define ETH_MACMIIAR_CR ((uint32_t)0x0000001C) /* CR clock range: 6 cases */ + #define ETH_MACMIIAR_CR_Div42 ((uint32_t)0x00000000) /* HCLK:60-72 MHz; MDC clock= HCLK/42 */ + #define ETH_MACMIIAR_CR_Div16 ((uint32_t)0x00000008) /* HCLK:20-35 MHz; MDC clock= HCLK/16 */ + #define ETH_MACMIIAR_CR_Div26 ((uint32_t)0x0000000C) /* HCLK:35-60 MHz; MDC clock= HCLK/26 */ +#define ETH_MACMIIAR_MW ((uint32_t)0x00000002) /* MII write */ +#define ETH_MACMIIAR_MB ((uint32_t)0x00000001) /* MII busy */ + +/* Bit definition for Ethernet MAC MII Data Register */ +#define ETH_MACMIIDR_MD ((uint32_t)0x0000FFFF) /* MII data: read/write data from/to PHY */ + +/* Bit definition for Ethernet MAC Flow Control Register */ +#define ETH_MACFCR_PT ((uint32_t)0xFFFF0000) /* Pause time */ +#define ETH_MACFCR_ZQPD ((uint32_t)0x00000080) /* Zero-quanta pause disable */ +#define ETH_MACFCR_PLT ((uint32_t)0x00000030) /* Pause low threshold: 4 cases */ + #define ETH_MACFCR_PLT_Minus4 ((uint32_t)0x00000000) /* Pause time minus 4 slot times */ + #define ETH_MACFCR_PLT_Minus28 ((uint32_t)0x00000010) /* Pause time minus 28 slot times */ + #define ETH_MACFCR_PLT_Minus144 ((uint32_t)0x00000020) /* Pause time minus 144 slot times */ + #define ETH_MACFCR_PLT_Minus256 ((uint32_t)0x00000030) /* Pause time minus 256 slot times */ +#define ETH_MACFCR_UPFD ((uint32_t)0x00000008) /* Unicast pause frame detect */ +#define ETH_MACFCR_RFCE ((uint32_t)0x00000004) /* Receive flow control enable */ +#define ETH_MACFCR_TFCE ((uint32_t)0x00000002) /* Transmit flow control enable */ +#define ETH_MACFCR_FCBBPA ((uint32_t)0x00000001) /* Flow control busy/backpressure activate */ + +/* Bit definition for Ethernet MAC VLAN Tag Register */ +#define ETH_MACVLANTR_VLANTC ((uint32_t)0x00010000) /* 12-bit VLAN tag comparison */ +#define ETH_MACVLANTR_VLANTI ((uint32_t)0x0000FFFF) /* VLAN tag identifier (for receive frames) */ + +/* Bit definition for Ethernet MAC Remote Wake-UpFrame Filter Register */ +#define ETH_MACRWUFFR_D ((uint32_t)0xFFFFFFFF) /* Wake-up frame filter register data */ +/* Eight sequential Writes to this address (offset 0x28) will write all Wake-UpFrame Filter Registers. + Eight sequential Reads from this address (offset 0x28) will read all Wake-UpFrame Filter Registers. */ +/* Wake-UpFrame Filter Reg0 : Filter 0 Byte Mask + Wake-UpFrame Filter Reg1 : Filter 1 Byte Mask + Wake-UpFrame Filter Reg2 : Filter 2 Byte Mask + Wake-UpFrame Filter Reg3 : Filter 3 Byte Mask + Wake-UpFrame Filter Reg4 : RSVD - Filter3 Command - RSVD - Filter2 Command - + RSVD - Filter1 Command - RSVD - Filter0 Command + Wake-UpFrame Filter Re5 : Filter3 Offset - Filter2 Offset - Filter1 Offset - Filter0 Offset + Wake-UpFrame Filter Re6 : Filter1 CRC16 - Filter0 CRC16 + Wake-UpFrame Filter Re7 : Filter3 CRC16 - Filter2 CRC16 */ + +/* Bit definition for Ethernet MAC PMT Control and Status Register */ +#define ETH_MACPMTCSR_WFFRPR ((uint32_t)0x80000000) /* Wake-Up Frame Filter Register Pointer Reset */ +#define ETH_MACPMTCSR_GU ((uint32_t)0x00000200) /* Global Unicast */ +#define ETH_MACPMTCSR_WFR ((uint32_t)0x00000040) /* Wake-Up Frame Received */ +#define ETH_MACPMTCSR_MPR ((uint32_t)0x00000020) /* Magic Packet Received */ +#define ETH_MACPMTCSR_WFE ((uint32_t)0x00000004) /* Wake-Up Frame Enable */ +#define ETH_MACPMTCSR_MPE ((uint32_t)0x00000002) /* Magic Packet Enable */ +#define ETH_MACPMTCSR_PD ((uint32_t)0x00000001) /* Power Down */ + +/* Bit definition for Ethernet MAC Status Register */ +#define ETH_MACSR_TSTS ((uint32_t)0x00000200) /* Time stamp trigger status */ +#define ETH_MACSR_MMCTS ((uint32_t)0x00000040) /* MMC transmit status */ +#define ETH_MACSR_MMMCRS ((uint32_t)0x00000020) /* MMC receive status */ +#define ETH_MACSR_MMCS ((uint32_t)0x00000010) /* MMC status */ +#define ETH_MACSR_PMTS ((uint32_t)0x00000008) /* PMT status */ + +/* Bit definition for Ethernet MAC Interrupt Mask Register */ +#define ETH_MACIMR_TSTIM ((uint32_t)0x00000200) /* Time stamp trigger interrupt mask */ +#define ETH_MACIMR_PMTIM ((uint32_t)0x00000008) /* PMT interrupt mask */ + +/* Bit definition for Ethernet MAC Address0 High Register */ +#define ETH_MACA0HR_MACA0H ((uint32_t)0x0000FFFF) /* MAC address0 high */ + +/* Bit definition for Ethernet MAC Address0 Low Register */ +#define ETH_MACA0LR_MACA0L ((uint32_t)0xFFFFFFFF) /* MAC address0 low */ + +/* Bit definition for Ethernet MAC Address1 High Register */ +#define ETH_MACA1HR_AE ((uint32_t)0x80000000) /* Address enable */ +#define ETH_MACA1HR_SA ((uint32_t)0x40000000) /* Source address */ +#define ETH_MACA1HR_MBC ((uint32_t)0x3F000000) /* Mask byte control: bits to mask for comparison of the MAC Address bytes */ + #define ETH_MACA1HR_MBC_HBits15_8 ((uint32_t)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA1HR_MBC_HBits7_0 ((uint32_t)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA1HR_MBC_LBits31_24 ((uint32_t)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA1HR_MBC_LBits23_16 ((uint32_t)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA1HR_MBC_LBits15_8 ((uint32_t)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA1HR_MBC_LBits7_0 ((uint32_t)0x01000000) /* Mask MAC Address low reg bits [7:0] */ +#define ETH_MACA1HR_MACA1H ((uint32_t)0x0000FFFF) /* MAC address1 high */ + +/* Bit definition for Ethernet MAC Address1 Low Register */ +#define ETH_MACA1LR_MACA1L ((uint32_t)0xFFFFFFFF) /* MAC address1 low */ + +/* Bit definition for Ethernet MAC Address2 High Register */ +#define ETH_MACA2HR_AE ((uint32_t)0x80000000) /* Address enable */ +#define ETH_MACA2HR_SA ((uint32_t)0x40000000) /* Source address */ +#define ETH_MACA2HR_MBC ((uint32_t)0x3F000000) /* Mask byte control */ + #define ETH_MACA2HR_MBC_HBits15_8 ((uint32_t)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA2HR_MBC_HBits7_0 ((uint32_t)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA2HR_MBC_LBits31_24 ((uint32_t)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA2HR_MBC_LBits23_16 ((uint32_t)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA2HR_MBC_LBits15_8 ((uint32_t)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA2HR_MBC_LBits7_0 ((uint32_t)0x01000000) /* Mask MAC Address low reg bits [70] */ +#define ETH_MACA2HR_MACA2H ((uint32_t)0x0000FFFF) /* MAC address1 high */ + +/* Bit definition for Ethernet MAC Address2 Low Register */ +#define ETH_MACA2LR_MACA2L ((uint32_t)0xFFFFFFFF) /* MAC address2 low */ + +/* Bit definition for Ethernet MAC Address3 High Register */ +#define ETH_MACA3HR_AE ((uint32_t)0x80000000) /* Address enable */ +#define ETH_MACA3HR_SA ((uint32_t)0x40000000) /* Source address */ +#define ETH_MACA3HR_MBC ((uint32_t)0x3F000000) /* Mask byte control */ + #define ETH_MACA3HR_MBC_HBits15_8 ((uint32_t)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA3HR_MBC_HBits7_0 ((uint32_t)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA3HR_MBC_LBits31_24 ((uint32_t)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA3HR_MBC_LBits23_16 ((uint32_t)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA3HR_MBC_LBits15_8 ((uint32_t)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA3HR_MBC_LBits7_0 ((uint32_t)0x01000000) /* Mask MAC Address low reg bits [70] */ +#define ETH_MACA3HR_MACA3H ((uint32_t)0x0000FFFF) /* MAC address3 high */ + +/* Bit definition for Ethernet MAC Address3 Low Register */ +#define ETH_MACA3LR_MACA3L ((uint32_t)0xFFFFFFFF) /* MAC address3 low */ + +/******************************************************************************/ +/* Ethernet MMC Registers bits definition */ +/******************************************************************************/ + +/* Bit definition for Ethernet MMC Contol Register */ +#define ETH_MMCCR_MCF ((uint32_t)0x00000008) /* MMC Counter Freeze */ +#define ETH_MMCCR_ROR ((uint32_t)0x00000004) /* Reset on Read */ +#define ETH_MMCCR_CSR ((uint32_t)0x00000002) /* Counter Stop Rollover */ +#define ETH_MMCCR_CR ((uint32_t)0x00000001) /* Counters Reset */ + +/* Bit definition for Ethernet MMC Receive Interrupt Register */ +#define ETH_MMCRIR_RGUFS ((uint32_t)0x00020000) /* Set when Rx good unicast frames counter reaches half the maximum value */ +#define ETH_MMCRIR_RFAES ((uint32_t)0x00000040) /* Set when Rx alignment error counter reaches half the maximum value */ +#define ETH_MMCRIR_RFCES ((uint32_t)0x00000020) /* Set when Rx crc error counter reaches half the maximum value */ + +/* Bit definition for Ethernet MMC Transmit Interrupt Register */ +#define ETH_MMCTIR_TGFS ((uint32_t)0x00200000) /* Set when Tx good frame count counter reaches half the maximum value */ +#define ETH_MMCTIR_TGFMSCS ((uint32_t)0x00008000) /* Set when Tx good multi col counter reaches half the maximum value */ +#define ETH_MMCTIR_TGFSCS ((uint32_t)0x00004000) /* Set when Tx good single col counter reaches half the maximum value */ + +/* Bit definition for Ethernet MMC Receive Interrupt Mask Register */ +#define ETH_MMCRIMR_RGUFM ((uint32_t)0x00020000) /* Mask the interrupt when Rx good unicast frames counter reaches half the maximum value */ +#define ETH_MMCRIMR_RFAEM ((uint32_t)0x00000040) /* Mask the interrupt when when Rx alignment error counter reaches half the maximum value */ +#define ETH_MMCRIMR_RFCEM ((uint32_t)0x00000020) /* Mask the interrupt when Rx crc error counter reaches half the maximum value */ + +/* Bit definition for Ethernet MMC Transmit Interrupt Mask Register */ +#define ETH_MMCTIMR_TGFM ((uint32_t)0x00200000) /* Mask the interrupt when Tx good frame count counter reaches half the maximum value */ +#define ETH_MMCTIMR_TGFMSCM ((uint32_t)0x00008000) /* Mask the interrupt when Tx good multi col counter reaches half the maximum value */ +#define ETH_MMCTIMR_TGFSCM ((uint32_t)0x00004000) /* Mask the interrupt when Tx good single col counter reaches half the maximum value */ + +/* Bit definition for Ethernet MMC Transmitted Good Frames after Single Collision Counter Register */ +#define ETH_MMCTGFSCCR_TGFSCC ((uint32_t)0xFFFFFFFF) /* Number of successfully transmitted frames after a single collision in Half-duplex mode. */ + +/* Bit definition for Ethernet MMC Transmitted Good Frames after More than a Single Collision Counter Register */ +#define ETH_MMCTGFMSCCR_TGFMSCC ((uint32_t)0xFFFFFFFF) /* Number of successfully transmitted frames after more than a single collision in Half-duplex mode. */ + +/* Bit definition for Ethernet MMC Transmitted Good Frames Counter Register */ +#define ETH_MMCTGFCR_TGFC ((uint32_t)0xFFFFFFFF) /* Number of good frames transmitted. */ + +/* Bit definition for Ethernet MMC Received Frames with CRC Error Counter Register */ +#define ETH_MMCRFCECR_RFCEC ((uint32_t)0xFFFFFFFF) /* Number of frames received with CRC error. */ + +/* Bit definition for Ethernet MMC Received Frames with Alignement Error Counter Register */ +#define ETH_MMCRFAECR_RFAEC ((uint32_t)0xFFFFFFFF) /* Number of frames received with alignment (dribble) error */ + +/* Bit definition for Ethernet MMC Received Good Unicast Frames Counter Register */ +#define ETH_MMCRGUFCR_RGUFC ((uint32_t)0xFFFFFFFF) /* Number of good unicast frames received. */ + +/******************************************************************************/ +/* Ethernet PTP Registers bits definition */ +/******************************************************************************/ + +/* Bit definition for Ethernet PTP Time Stamp Contol Register */ +#define ETH_PTPTSCR_TSARU ((uint32_t)0x00000020) /* Addend register update */ +#define ETH_PTPTSCR_TSITE ((uint32_t)0x00000010) /* Time stamp interrupt trigger enable */ +#define ETH_PTPTSCR_TSSTU ((uint32_t)0x00000008) /* Time stamp update */ +#define ETH_PTPTSCR_TSSTI ((uint32_t)0x00000004) /* Time stamp initialize */ +#define ETH_PTPTSCR_TSFCU ((uint32_t)0x00000002) /* Time stamp fine or coarse update */ +#define ETH_PTPTSCR_TSE ((uint32_t)0x00000001) /* Time stamp enable */ + +/* Bit definition for Ethernet PTP Sub-Second Increment Register */ +#define ETH_PTPSSIR_STSSI ((uint32_t)0x000000FF) /* System time Sub-second increment value */ + +/* Bit definition for Ethernet PTP Time Stamp High Register */ +#define ETH_PTPTSHR_STS ((uint32_t)0xFFFFFFFF) /* System Time second */ + +/* Bit definition for Ethernet PTP Time Stamp Low Register */ +#define ETH_PTPTSLR_STPNS ((uint32_t)0x80000000) /* System Time Positive or negative time */ +#define ETH_PTPTSLR_STSS ((uint32_t)0x7FFFFFFF) /* System Time sub-seconds */ + +/* Bit definition for Ethernet PTP Time Stamp High Update Register */ +#define ETH_PTPTSHUR_TSUS ((uint32_t)0xFFFFFFFF) /* Time stamp update seconds */ + +/* Bit definition for Ethernet PTP Time Stamp Low Update Register */ +#define ETH_PTPTSLUR_TSUPNS ((uint32_t)0x80000000) /* Time stamp update Positive or negative time */ +#define ETH_PTPTSLUR_TSUSS ((uint32_t)0x7FFFFFFF) /* Time stamp update sub-seconds */ + +/* Bit definition for Ethernet PTP Time Stamp Addend Register */ +#define ETH_PTPTSAR_TSA ((uint32_t)0xFFFFFFFF) /* Time stamp addend */ + +/* Bit definition for Ethernet PTP Target Time High Register */ +#define ETH_PTPTTHR_TTSH ((uint32_t)0xFFFFFFFF) /* Target time stamp high */ + +/* Bit definition for Ethernet PTP Target Time Low Register */ +#define ETH_PTPTTLR_TTSL ((uint32_t)0xFFFFFFFF) /* Target time stamp low */ + +/******************************************************************************/ +/* Ethernet DMA Registers bits definition */ +/******************************************************************************/ + +/* Bit definition for Ethernet DMA Bus Mode Register */ +#define ETH_DMABMR_AAB ((uint32_t)0x02000000) /* Address-Aligned beats */ +#define ETH_DMABMR_FPM ((uint32_t)0x01000000) /* 4xPBL mode */ +#define ETH_DMABMR_USP ((uint32_t)0x00800000) /* Use separate PBL */ +#define ETH_DMABMR_RDP ((uint32_t)0x007E0000) /* RxDMA PBL */ + #define ETH_DMABMR_RDP_1Beat ((uint32_t)0x00020000) /* maximum number of beats to be transferred in one RxDMA transaction is 1 */ + #define ETH_DMABMR_RDP_2Beat ((uint32_t)0x00040000) /* maximum number of beats to be transferred in one RxDMA transaction is 2 */ + #define ETH_DMABMR_RDP_4Beat ((uint32_t)0x00080000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */ + #define ETH_DMABMR_RDP_8Beat ((uint32_t)0x00100000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */ + #define ETH_DMABMR_RDP_16Beat ((uint32_t)0x00200000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */ + #define ETH_DMABMR_RDP_32Beat ((uint32_t)0x00400000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */ + #define ETH_DMABMR_RDP_4xPBL_4Beat ((uint32_t)0x01020000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */ + #define ETH_DMABMR_RDP_4xPBL_8Beat ((uint32_t)0x01040000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */ + #define ETH_DMABMR_RDP_4xPBL_16Beat ((uint32_t)0x01080000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */ + #define ETH_DMABMR_RDP_4xPBL_32Beat ((uint32_t)0x01100000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */ + #define ETH_DMABMR_RDP_4xPBL_64Beat ((uint32_t)0x01200000) /* maximum number of beats to be transferred in one RxDMA transaction is 64 */ + #define ETH_DMABMR_RDP_4xPBL_128Beat ((uint32_t)0x01400000) /* maximum number of beats to be transferred in one RxDMA transaction is 128 */ +#define ETH_DMABMR_FB ((uint32_t)0x00010000) /* Fixed Burst */ +#define ETH_DMABMR_RTPR ((uint32_t)0x0000C000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_1_1 ((uint32_t)0x00000000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_2_1 ((uint32_t)0x00004000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_3_1 ((uint32_t)0x00008000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_4_1 ((uint32_t)0x0000C000) /* Rx Tx priority ratio */ +#define ETH_DMABMR_PBL ((uint32_t)0x00003F00) /* Programmable burst length */ + #define ETH_DMABMR_PBL_1Beat ((uint32_t)0x00000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 1 */ + #define ETH_DMABMR_PBL_2Beat ((uint32_t)0x00000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 2 */ + #define ETH_DMABMR_PBL_4Beat ((uint32_t)0x00000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */ + #define ETH_DMABMR_PBL_8Beat ((uint32_t)0x00000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */ + #define ETH_DMABMR_PBL_16Beat ((uint32_t)0x00001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */ + #define ETH_DMABMR_PBL_32Beat ((uint32_t)0x00002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */ + #define ETH_DMABMR_PBL_4xPBL_4Beat ((uint32_t)0x01000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */ + #define ETH_DMABMR_PBL_4xPBL_8Beat ((uint32_t)0x01000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */ + #define ETH_DMABMR_PBL_4xPBL_16Beat ((uint32_t)0x01000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */ + #define ETH_DMABMR_PBL_4xPBL_32Beat ((uint32_t)0x01000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */ + #define ETH_DMABMR_PBL_4xPBL_64Beat ((uint32_t)0x01001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 64 */ + #define ETH_DMABMR_PBL_4xPBL_128Beat ((uint32_t)0x01002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 128 */ +#define ETH_DMABMR_DSL ((uint32_t)0x0000007C) /* Descriptor Skip Length */ +#define ETH_DMABMR_DA ((uint32_t)0x00000002) /* DMA arbitration scheme */ +#define ETH_DMABMR_SR ((uint32_t)0x00000001) /* Software reset */ + +/* Bit definition for Ethernet DMA Transmit Poll Demand Register */ +#define ETH_DMATPDR_TPD ((uint32_t)0xFFFFFFFF) /* Transmit poll demand */ + +/* Bit definition for Ethernet DMA Receive Poll Demand Register */ +#define ETH_DMARPDR_RPD ((uint32_t)0xFFFFFFFF) /* Receive poll demand */ + +/* Bit definition for Ethernet DMA Receive Descriptor List Address Register */ +#define ETH_DMARDLAR_SRL ((uint32_t)0xFFFFFFFF) /* Start of receive list */ + +/* Bit definition for Ethernet DMA Transmit Descriptor List Address Register */ +#define ETH_DMATDLAR_STL ((uint32_t)0xFFFFFFFF) /* Start of transmit list */ + +/* Bit definition for Ethernet DMA Status Register */ +#define ETH_DMASR_TSTS ((uint32_t)0x20000000) /* Time-stamp trigger status */ +#define ETH_DMASR_PMTS ((uint32_t)0x10000000) /* PMT status */ +#define ETH_DMASR_MMCS ((uint32_t)0x08000000) /* MMC status */ +#define ETH_DMASR_EBS ((uint32_t)0x03800000) /* Error bits status */ + /* combination with EBS[2:0] for GetFlagStatus function */ + #define ETH_DMASR_EBS_DescAccess ((uint32_t)0x02000000) /* Error bits 0-data buffer, 1-desc. access */ + #define ETH_DMASR_EBS_ReadTransf ((uint32_t)0x01000000) /* Error bits 0-write trnsf, 1-read transfr */ + #define ETH_DMASR_EBS_DataTransfTx ((uint32_t)0x00800000) /* Error bits 0-Rx DMA, 1-Tx DMA */ +#define ETH_DMASR_TPS ((uint32_t)0x00700000) /* Transmit process state */ + #define ETH_DMASR_TPS_Stopped ((uint32_t)0x00000000) /* Stopped - Reset or Stop Tx Command issued */ + #define ETH_DMASR_TPS_Fetching ((uint32_t)0x00100000) /* Running - fetching the Tx descriptor */ + #define ETH_DMASR_TPS_Waiting ((uint32_t)0x00200000) /* Running - waiting for status */ + #define ETH_DMASR_TPS_Reading ((uint32_t)0x00300000) /* Running - reading the data from host memory */ + #define ETH_DMASR_TPS_Suspended ((uint32_t)0x00600000) /* Suspended - Tx Descriptor unavailabe */ + #define ETH_DMASR_TPS_Closing ((uint32_t)0x00700000) /* Running - closing Rx descriptor */ +#define ETH_DMASR_RPS ((uint32_t)0x000E0000) /* Receive process state */ + #define ETH_DMASR_RPS_Stopped ((uint32_t)0x00000000) /* Stopped - Reset or Stop Rx Command issued */ + #define ETH_DMASR_RPS_Fetching ((uint32_t)0x00020000) /* Running - fetching the Rx descriptor */ + #define ETH_DMASR_RPS_Waiting ((uint32_t)0x00060000) /* Running - waiting for packet */ + #define ETH_DMASR_RPS_Suspended ((uint32_t)0x00080000) /* Suspended - Rx Descriptor unavailable */ + #define ETH_DMASR_RPS_Closing ((uint32_t)0x000A0000) /* Running - closing descriptor */ + #define ETH_DMASR_RPS_Queuing ((uint32_t)0x000E0000) /* Running - queuing the recieve frame into host memory */ +#define ETH_DMASR_NIS ((uint32_t)0x00010000) /* Normal interrupt summary */ +#define ETH_DMASR_AIS ((uint32_t)0x00008000) /* Abnormal interrupt summary */ +#define ETH_DMASR_ERS ((uint32_t)0x00004000) /* Early receive status */ +#define ETH_DMASR_FBES ((uint32_t)0x00002000) /* Fatal bus error status */ +#define ETH_DMASR_ETS ((uint32_t)0x00000400) /* Early transmit status */ +#define ETH_DMASR_RWTS ((uint32_t)0x00000200) /* Receive watchdog timeout status */ +#define ETH_DMASR_RPSS ((uint32_t)0x00000100) /* Receive process stopped status */ +#define ETH_DMASR_RBUS ((uint32_t)0x00000080) /* Receive buffer unavailable status */ +#define ETH_DMASR_RS ((uint32_t)0x00000040) /* Receive status */ +#define ETH_DMASR_TUS ((uint32_t)0x00000020) /* Transmit underflow status */ +#define ETH_DMASR_ROS ((uint32_t)0x00000010) /* Receive overflow status */ +#define ETH_DMASR_TJTS ((uint32_t)0x00000008) /* Transmit jabber timeout status */ +#define ETH_DMASR_TBUS ((uint32_t)0x00000004) /* Transmit buffer unavailable status */ +#define ETH_DMASR_TPSS ((uint32_t)0x00000002) /* Transmit process stopped status */ +#define ETH_DMASR_TS ((uint32_t)0x00000001) /* Transmit status */ + +/* Bit definition for Ethernet DMA Operation Mode Register */ +#define ETH_DMAOMR_DTCEFD ((uint32_t)0x04000000) /* Disable Dropping of TCP/IP checksum error frames */ +#define ETH_DMAOMR_RSF ((uint32_t)0x02000000) /* Receive store and forward */ +#define ETH_DMAOMR_DFRF ((uint32_t)0x01000000) /* Disable flushing of received frames */ +#define ETH_DMAOMR_TSF ((uint32_t)0x00200000) /* Transmit store and forward */ +#define ETH_DMAOMR_FTF ((uint32_t)0x00100000) /* Flush transmit FIFO */ +#define ETH_DMAOMR_TTC ((uint32_t)0x0001C000) /* Transmit threshold control */ + #define ETH_DMAOMR_TTC_64Bytes ((uint32_t)0x00000000) /* threshold level of the MTL Transmit FIFO is 64 Bytes */ + #define ETH_DMAOMR_TTC_128Bytes ((uint32_t)0x00004000) /* threshold level of the MTL Transmit FIFO is 128 Bytes */ + #define ETH_DMAOMR_TTC_192Bytes ((uint32_t)0x00008000) /* threshold level of the MTL Transmit FIFO is 192 Bytes */ + #define ETH_DMAOMR_TTC_256Bytes ((uint32_t)0x0000C000) /* threshold level of the MTL Transmit FIFO is 256 Bytes */ + #define ETH_DMAOMR_TTC_40Bytes ((uint32_t)0x00010000) /* threshold level of the MTL Transmit FIFO is 40 Bytes */ + #define ETH_DMAOMR_TTC_32Bytes ((uint32_t)0x00014000) /* threshold level of the MTL Transmit FIFO is 32 Bytes */ + #define ETH_DMAOMR_TTC_24Bytes ((uint32_t)0x00018000) /* threshold level of the MTL Transmit FIFO is 24 Bytes */ + #define ETH_DMAOMR_TTC_16Bytes ((uint32_t)0x0001C000) /* threshold level of the MTL Transmit FIFO is 16 Bytes */ +#define ETH_DMAOMR_ST ((uint32_t)0x00002000) /* Start/stop transmission command */ +#define ETH_DMAOMR_FEF ((uint32_t)0x00000080) /* Forward error frames */ +#define ETH_DMAOMR_FUGF ((uint32_t)0x00000040) /* Forward undersized good frames */ +#define ETH_DMAOMR_RTC ((uint32_t)0x00000018) /* receive threshold control */ + #define ETH_DMAOMR_RTC_64Bytes ((uint32_t)0x00000000) /* threshold level of the MTL Receive FIFO is 64 Bytes */ + #define ETH_DMAOMR_RTC_32Bytes ((uint32_t)0x00000008) /* threshold level of the MTL Receive FIFO is 32 Bytes */ + #define ETH_DMAOMR_RTC_96Bytes ((uint32_t)0x00000010) /* threshold level of the MTL Receive FIFO is 96 Bytes */ + #define ETH_DMAOMR_RTC_128Bytes ((uint32_t)0x00000018) /* threshold level of the MTL Receive FIFO is 128 Bytes */ +#define ETH_DMAOMR_OSF ((uint32_t)0x00000004) /* operate on second frame */ +#define ETH_DMAOMR_SR ((uint32_t)0x00000002) /* Start/stop receive */ + +/* Bit definition for Ethernet DMA Interrupt Enable Register */ +#define ETH_DMAIER_NISE ((uint32_t)0x00010000) /* Normal interrupt summary enable */ +#define ETH_DMAIER_AISE ((uint32_t)0x00008000) /* Abnormal interrupt summary enable */ +#define ETH_DMAIER_ERIE ((uint32_t)0x00004000) /* Early receive interrupt enable */ +#define ETH_DMAIER_FBEIE ((uint32_t)0x00002000) /* Fatal bus error interrupt enable */ +#define ETH_DMAIER_ETIE ((uint32_t)0x00000400) /* Early transmit interrupt enable */ +#define ETH_DMAIER_RWTIE ((uint32_t)0x00000200) /* Receive watchdog timeout interrupt enable */ +#define ETH_DMAIER_RPSIE ((uint32_t)0x00000100) /* Receive process stopped interrupt enable */ +#define ETH_DMAIER_RBUIE ((uint32_t)0x00000080) /* Receive buffer unavailable interrupt enable */ +#define ETH_DMAIER_RIE ((uint32_t)0x00000040) /* Receive interrupt enable */ +#define ETH_DMAIER_TUIE ((uint32_t)0x00000020) /* Transmit Underflow interrupt enable */ +#define ETH_DMAIER_ROIE ((uint32_t)0x00000010) /* Receive Overflow interrupt enable */ +#define ETH_DMAIER_TJTIE ((uint32_t)0x00000008) /* Transmit jabber timeout interrupt enable */ +#define ETH_DMAIER_TBUIE ((uint32_t)0x00000004) /* Transmit buffer unavailable interrupt enable */ +#define ETH_DMAIER_TPSIE ((uint32_t)0x00000002) /* Transmit process stopped interrupt enable */ +#define ETH_DMAIER_TIE ((uint32_t)0x00000001) /* Transmit interrupt enable */ + +/* Bit definition for Ethernet DMA Missed Frame and Buffer Overflow Counter Register */ +#define ETH_DMAMFBOCR_OFOC ((uint32_t)0x10000000) /* Overflow bit for FIFO overflow counter */ +#define ETH_DMAMFBOCR_MFA ((uint32_t)0x0FFE0000) /* Number of frames missed by the application */ +#define ETH_DMAMFBOCR_OMFC ((uint32_t)0x00010000) /* Overflow bit for missed frame counter */ +#define ETH_DMAMFBOCR_MFC ((uint32_t)0x0000FFFF) /* Number of frames missed by the controller */ + +/* Bit definition for Ethernet DMA Current Host Transmit Descriptor Register */ +#define ETH_DMACHTDR_HTDAP ((uint32_t)0xFFFFFFFF) /* Host transmit descriptor address pointer */ + +/* Bit definition for Ethernet DMA Current Host Receive Descriptor Register */ +#define ETH_DMACHRDR_HRDAP ((uint32_t)0xFFFFFFFF) /* Host receive descriptor address pointer */ + +/* Bit definition for Ethernet DMA Current Host Transmit Buffer Address Register */ +#define ETH_DMACHTBAR_HTBAP ((uint32_t)0xFFFFFFFF) /* Host transmit buffer address pointer */ + +/* Bit definition for Ethernet DMA Current Host Receive Buffer Address Register */ +#define ETH_DMACHRBAR_HRBAP ((uint32_t)0xFFFFFFFF) /* Host receive buffer address pointer */ +#endif /* STM32F10X_CL */ + +/** + * @} + */ + + /** + * @} + */ + +#ifdef USE_STDPERIPH_DRIVER + #include "stm32f10x_conf.h" +#endif + +/** @addtogroup Exported_macro + * @{ + */ + +#define SET_BIT(REG, BIT) ((REG) |= (BIT)) + +#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) + +#define READ_BIT(REG, BIT) ((REG) & (BIT)) + +#define CLEAR_REG(REG) ((REG) = (0x0)) + +#define WRITE_REG(REG, VAL) ((REG) = (VAL)) + +#define READ_REG(REG) ((REG)) + +#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_H */ + +/** + * @} + */ + + /** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c new file mode 100644 index 00000000..6fb4579e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c @@ -0,0 +1,1094 @@ +/** + ****************************************************************************** + * @file system_stm32f10x.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * factors, AHB/APBx prescalers and Flash settings). + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f10x_xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * 2. After each device reset the HSI (8 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32f10x_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 3. If the system clock source selected by user fails to startup, the SystemInit() + * function will do nothing and HSI still used as system clock source. User can + * add some code to deal with this issue inside the SetSysClock() function. + * + * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depedning on + * the product used), refer to "HSE_VALUE" define in "stm32f10x.h" file. + * When HSE is used as system clock source, directly or through PLL, and you + * are using different crystal you have to adapt the HSE value to your own + * configuration. + * + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f10x_system + * @{ + */ + +/** @addtogroup STM32F10x_System_Private_Includes + * @{ + */ + +#include "stm32f10x.h" + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Defines + * @{ + */ + +/*!< Uncomment the line corresponding to the desired System clock (SYSCLK) + frequency (after reset the HSI is used as SYSCLK source) + + IMPORTANT NOTE: + ============== + 1. After each device reset the HSI is used as System clock source. + + 2. Please make sure that the selected System clock doesn't exceed your device's + maximum frequency. + + 3. If none of the define below is enabled, the HSI is used as System clock + source. + + 4. The System clock configuration functions provided within this file assume that: + - For Low, Medium and High density Value line devices an external 8MHz + crystal is used to drive the System clock. + - For Low, Medium and High density devices an external 8MHz crystal is + used to drive the System clock. + - For Connectivity line devices an external 25MHz crystal is used to drive + the System clock. + If you are using different crystal you have to adapt those functions accordingly. + */ + +#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) +/* #define SYSCLK_FREQ_HSE HSE_VALUE */ + #define SYSCLK_FREQ_24MHz 24000000 +#else +/* #define SYSCLK_FREQ_HSE HSE_VALUE */ +/* #define SYSCLK_FREQ_24MHz 24000000 */ +/* #define SYSCLK_FREQ_36MHz 36000000 */ +/* #define SYSCLK_FREQ_48MHz 48000000 */ +/* #define SYSCLK_FREQ_56MHz 56000000 */ +#define SYSCLK_FREQ_72MHz 72000000 +#endif + +/*!< Uncomment the following line if you need to use external SRAM mounted + on STM3210E-EVAL board (STM32 High density and XL-density devices) or on + STM32100E-EVAL board (STM32 High-density value line devices) as data memory */ +#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) +/* #define DATA_IN_ExtSRAM */ +#endif + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ + + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Variables + * @{ + */ + +/******************************************************************************* +* Clock Definitions +*******************************************************************************/ +#ifdef SYSCLK_FREQ_HSE + uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_24MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_24MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_36MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */ +#else /*!< HSI Selected as System Clock source */ + uint32_t SystemCoreClock = HSI_VALUE; /*!< System Clock Frequency (Core Clock) */ +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_FunctionPrototypes + * @{ + */ + +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE + static void SetSysClockToHSE(void); +#elif defined SYSCLK_FREQ_24MHz + static void SetSysClockTo24(void); +#elif defined SYSCLK_FREQ_36MHz + static void SetSysClockTo36(void); +#elif defined SYSCLK_FREQ_48MHz + static void SetSysClockTo48(void); +#elif defined SYSCLK_FREQ_56MHz + static void SetSysClockTo56(void); +#elif defined SYSCLK_FREQ_72MHz + static void SetSysClockTo72(void); +#endif + +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ +#ifndef STM32F10X_CL + RCC->CFGR &= (uint32_t)0xF8FF0000; +#else + RCC->CFGR &= (uint32_t)0xF0FF0000; +#endif /* STM32F10X_CL */ + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (uint32_t)0xFF80FFFF; + +#ifdef STM32F10X_CL + /* Reset PLL2ON and PLL3ON bits */ + RCC->CR &= (uint32_t)0xEBFFFFFF; + + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x00FF0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#else + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) + #ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); + #endif /* DATA_IN_ExtSRAM */ +#endif + + /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */ + /* Configure the Flash Latency cycles and enable prefetch buffer */ + SetSysClock(); + +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz or 25 MHz, depedning on the product used), user has to ensure + * that HSE_VALUE is same as the real frequency of the crystal used. + * Otherwise, this function may have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0; + +#ifdef STM32F10X_CL + uint32_t prediv1source = 0, prediv1factor = 0, prediv2factor = 0, pll2mull = 0; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + uint32_t prediv1factor = 0; +#endif /* STM32F10X_LD_VL or STM32F10X_MD_VL or STM32F10X_HD_VL */ + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + +#ifndef STM32F10X_CL + pllmull = ( pllmull >> 18) + 2; + + if (pllsource == 0x00) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + { + #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) + {/* HSE oscillator clock divided by 2 */ + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; + } + else + { + SystemCoreClock = HSE_VALUE * pllmull; + } + #endif + } +#else + pllmull = pllmull >> 18; + + if (pllmull != 0x0D) + { + pllmull += 2; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13 / 2; + } + + if (pllsource == 0x00) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1; + + if (prediv1source == 0) + { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4) + 1; + pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8 ) + 2; + SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F10X_CL */ + break; + + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* Compute HCLK clock frequency ----------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +/** + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * @param None + * @retval None + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_24MHz + SetSysClockTo24(); +#elif defined SYSCLK_FREQ_36MHz + SetSysClockTo36(); +#elif defined SYSCLK_FREQ_48MHz + SetSysClockTo48(); +#elif defined SYSCLK_FREQ_56MHz + SetSysClockTo56(); +#elif defined SYSCLK_FREQ_72MHz + SetSysClockTo72(); +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + source (default after reset) */ +} + +/** + * @brief Setup the external memory controller. Called in startup_stm32f10x.s + * before jump to __main + * @param None + * @retval None + */ +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f10x_xx.s/.c before jump to main. + * This function configures the external SRAM mounted on STM3210E-EVAL + * board (STM32 High density devices). This SRAM will be used as program + * data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ +/*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is + required, then adjust the Register Addresses */ + + /* Enable FSMC clock */ + RCC->AHBENR = 0x00000114; + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ + RCC->APB2ENR = 0x000001E0; + +/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ +/*---------------- SRAM Address lines configuration -------------------------*/ +/*---------------- NOE and NWE configuration --------------------------------*/ +/*---------------- NE3 configuration ----------------------------------------*/ +/*---------------- NBL0, NBL1 configuration ---------------------------------*/ + + GPIOD->CRL = 0x44BB44BB; + GPIOD->CRH = 0xBBBBBBBB; + + GPIOE->CRL = 0xB44444BB; + GPIOE->CRH = 0xBBBBBBBB; + + GPIOF->CRL = 0x44BBBBBB; + GPIOF->CRH = 0xBBBB4444; + + GPIOG->CRL = 0x44BBBBBB; + GPIOG->CRH = 0x44444B44; + +/*---------------- FSMC Configuration ---------------------------------------*/ +/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ + + FSMC_Bank1->BTCR[4] = 0x00001011; + FSMC_Bank1->BTCR[5] = 0x00000200; +} +#endif /* DATA_IN_ExtSRAM */ + +#ifdef SYSCLK_FREQ_HSE +/** + * @brief Selects HSE as System clock source and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + +#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 0 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + +#ifndef STM32F10X_CL + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; +#else + if (HSE_VALUE <= 24000000) + { + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; + } + else + { + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + } +#endif /* STM32F10X_CL */ +#endif + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + + /* Select HSE as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_24MHz +/** + * @brief Sets System clock frequency to 24MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo24(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { +#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 0 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; +#endif + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL configuration: PLLCLK = PREDIV1 * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL6); + + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 10 = 4 MHz */ + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV10); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + /* PLL configuration: = (HSE / 2) * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1_Div2 | RCC_CFGR_PLLMULL6); +#else + /* PLL configuration: = (HSE / 2) * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL6); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_36MHz +/** + * @brief Sets System clock frequency to 36MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo36(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 1 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + + /* PLL configuration: PLLCLK = PREDIV1 * 9 = 36 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL9); + + /*!< PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 10 = 4 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV10); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + +#else + /* PLL configuration: PLLCLK = (HSE / 2) * 9 = 36 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL9); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_48MHz +/** + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo48(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 1 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 6 = 48 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL6); +#else + /* PLL configuration: PLLCLK = HSE * 6 = 48 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +#elif defined SYSCLK_FREQ_56MHz +/** + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo56(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 2 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 7 = 56 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL7); +#else + /* PLL configuration: PLLCLK = HSE * 7 = 56 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL7); + +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +#elif defined SYSCLK_FREQ_72MHz +/** + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo72(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 2 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; + + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL9); +#else + /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | + RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#endif + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h new file mode 100644 index 00000000..739f3328 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h @@ -0,0 +1,98 @@ +/** + ****************************************************************************** + * @file system_stm32f10x.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Header File. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f10x_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32F10X_H +#define __SYSTEM_STM32F10X_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup STM32F10x_System_Includes + * @{ + */ + +/** + * @} + */ + + +/** @addtogroup STM32F10x_System_Exported_types + * @{ + */ + +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32F10X_H */ + +/** + * @} + */ + +/** + * @} + */ +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CMSIS debug support.htm b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CMSIS debug support.htm new file mode 100644 index 00000000..efda685b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CMSIS debug support.htm @@ -0,0 +1,243 @@ + + + +CMSIS Debug Support + + + + + + + + +

    CMSIS Debug Support

    + +
    + +

    Cortex-M3 ITM Debug Access

    +

    + The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that provides together with + the Serial Viewer Output trace capabilities for the microcontroller system. The ITM has + 32 communication channels which are able to transmit 32 / 16 / 8 bit values; two ITM + communication channels are used by CMSIS to output the following information: +

    +
      +
    • ITM Channel 0: used for printf-style output via the debug interface.
    • +
    • ITM Channel 31: is reserved for RTOS kernel awareness debugging.
    • +
    + +

    Debug IN / OUT functions

    +

    CMSIS provides following debug functions:

    +
      +
    • ITM_SendChar (uses ITM channel 0)
    • +
    • ITM_ReceiveChar (uses global variable)
    • +
    • ITM_CheckChar (uses global variable)
    • +
    + +

    ITM_SendChar

    +

    + ITM_SendChar is used to transmit a character over ITM channel 0 from + the microcontroller system to the debug system.
    + Only a 8 bit value is transmitted. +

    +
    +static __INLINE uint32_t ITM_SendChar (uint32_t ch)
    +{
    +  /* check if debugger connected and ITM channel enabled for tracing */
    +  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA)  &&
    +      (ITM->TCR & ITM_TCR_ITMENA)                  &&
    +      (ITM->TER & (1UL << 0))  ) 
    +  {
    +    while (ITM->PORT[0].u32 == 0);
    +    ITM->PORT[0].u8 = (uint8_t)ch;
    +  }  
    +  return (ch);
    +}
    + +

    ITM_ReceiveChar

    +

    + ITM communication channel is only capable for OUT direction. For IN direction + a globel variable is used. A simple mechansim detects if a character is received. + The project to test need to be build with debug information. +

    + +

    + The globale variable ITM_RxBuffer is used to transmit a 8 bit value from debug system + to microcontroller system. ITM_RxBuffer is 32 bit wide to enshure a proper handshake. +

    +
    +extern volatile int ITM_RxBuffer;                    /* variable to receive characters                             */
    +
    +

    + A dedicated bit pattern is used to determin if ITM_RxBuffer is empty + or contains a valid value. +

    +
    +#define             ITM_RXBUFFER_EMPTY    0x5AA55AA5 /* value identifying ITM_RxBuffer is ready for next character */
    +
    +

    + ITM_ReceiveChar is used to receive a 8 bit value from the debug system. The function is nonblocking. + It returns the received character or '-1' if no character was available. +

    +
    +static __INLINE int ITM_ReceiveChar (void) {
    +  int ch = -1;                               /* no character available */
    +
    +  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
    +    ch = ITM_RxBuffer;
    +    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
    +  }
    +  
    +  return (ch); 
    +}
    +
    + +

    ITM_CheckChar

    +

    + ITM_CheckChar is used to check if a character is received. +

    +
    +static __INLINE int ITM_CheckChar (void) {
    +
    +  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {
    +    return (0);                                 /* no character available */
    +  } else {
    +    return (1);                                 /*    character available */
    +  }
    +}
    + + +

    ITM Debug Support in uVision

    +

    + uVision uses in a debug session the Debug (printf) Viewer window to + display the debug data. +

    +

    Direction microcontroller system -> uVision:

    +
      +
    • + Characters received via ITM communication channel 0 are written in a printf style + to Debug (printf) Viewer window. +
    • +
    + +

    Direction uVision -> microcontroller system:

    +
      +
    • Check if ITM_RxBuffer variable is available (only performed once).
    • +
    • Read character from Debug (printf) Viewer window.
    • +
    • If ITM_RxBuffer empty write character to ITM_RxBuffer.
    • +
    + +

    Note

    +
      +
    • Current solution does not use a buffer machanism for trasmitting the characters.

      +
    • +
    + +

    RTX Kernel awareness in uVision

    +

    + uVision / RTX are using a simple and efficient solution for RTX Kernel awareness. + No format overhead is necessary.
    + uVsion debugger decodes the RTX events via the 32 / 16 / 8 bit ITM write access + to ITM communication channel 31. +

    + +

    Following RTX events are traced:

    +
      +
    • Task Create / Delete event +
        +
      1. 32 bit access. Task start address is transmitted
      2. +
      3. 16 bit access. Task ID and Create/Delete flag are transmitted
        + High byte holds Create/Delete flag, Low byte holds TASK ID. +
      4. +
      +
    • +
    • Task switch event +
        +
      1. 8 bit access. Task ID of current task is transmitted
      2. +
      +
    • +
    + +

    Note

    +
      +
    • Other RTOS information could be retrieved via memory read access in a polling mode manner.

      +
    • +
    + + +

     

    + +
    + +

    Copyright © KEIL - An ARM Company.
    +All rights reserved.
    +Visit our web site at www.keil.com. +

    + + + + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CMSIS_changes.htm b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CMSIS_changes.htm new file mode 100644 index 00000000..162ffcc9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/CMSIS_changes.htm @@ -0,0 +1,320 @@ + + + +CMSIS Changes + + + + + + + + +

    Changes to CMSIS version V1.20

    + +
    + +

    1. Removed CMSIS Middelware packages

    +

    + CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found. +

    + +

    2. SystemFrequency renamed to SystemCoreClock

    +

    + The variable name SystemCoreClock is more precise than SystemFrequency + because the variable holds the clock value at which the core is running. +

    + +

    3. Changed startup concept

    +

    + The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit + from main) has the weakness that it does not work for controllers which need a already + configuerd clock system to configure the external memory controller. +

    + +

    Changed startup concept

    +
      +
    • + SystemInit() is called from startup file before premain. +
    • +
    • + SystemInit() configures the clock system and also configures + an existing external memory controller. +
    • +
    • + SystemInit() must not use global variables. +
    • +
    • + SystemCoreClock is initialized with a correct predefined value. +
    • +
    • + Additional function void SystemCoreClockUpdate (void) is provided.
      + SystemCoreClockUpdate() updates the variable SystemCoreClock + and must be called whenever the core clock is changed.
      + SystemCoreClockUpdate() evaluates the clock register settings and calculates + the current core clock. +
    • +
    + + +

    4. Advanced Debug Functions

    +

    + ITM communication channel is only capable for OUT direction. To allow also communication for + IN direction a simple concept is provided. +

    +
      +
    • + Global variable volatile int ITM_RxBuffer used for IN data. +
    • +
    • + Function int ITM_CheckChar (void) checks if a new character is available. +
    • +
    • + Function int ITM_ReceiveChar (void) retrieves the new character. +
    • +
    + +

    + For detailed explanation see file CMSIS debug support.htm. +

    + + +

    5. Core Register Bit Definitions

    +

    + Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the + defines correspond with the Cortex-M Technical Reference Manual. +

    +

    + e.g. SysTick structure with bit definitions +

    +
    +/** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick
    +  memory mapped structure for SysTick
    +  @{
    + */
    +typedef struct
    +{
    +  __IO uint32_t CTRL;                         /*!< Offset: 0x00  SysTick Control and Status Register */
    +  __IO uint32_t LOAD;                         /*!< Offset: 0x04  SysTick Reload Value Register       */
    +  __IO uint32_t VAL;                          /*!< Offset: 0x08  SysTick Current Value Register      */
    +  __I  uint32_t CALIB;                        /*!< Offset: 0x0C  SysTick Calibration Register        */
    +} SysTick_Type;
    +
    +/* SysTick Control / Status Register Definitions */
    +#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */
    +#define SysTick_CTRL_COUNTFLAG_Msk         (1ul << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
    +
    +#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */
    +#define SysTick_CTRL_CLKSOURCE_Msk         (1ul << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
    +
    +#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */
    +#define SysTick_CTRL_TICKINT_Msk           (1ul << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
    +
    +#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */
    +#define SysTick_CTRL_ENABLE_Msk            (1ul << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */
    +
    +/* SysTick Reload Register Definitions */
    +#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */
    +#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */
    +
    +/* SysTick Current Register Definitions */
    +#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */
    +#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFul << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */
    +
    +/* SysTick Calibration Register Definitions */
    +#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */
    +#define SysTick_CALIB_NOREF_Msk            (1ul << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
    +
    +#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */
    +#define SysTick_CALIB_SKEW_Msk             (1ul << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
    +
    +#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */
    +#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFul << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */
    +/*@}*/ /* end of group CMSIS_CM3_SysTick */
    + +

    7. DoxyGen Tags

    +

    + DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation + using DoxyGen. +

    + +

    8. Folder Structure

    +

    + The folder structure is changed to differentiate the single support packages. +

    + +
      +
    • CM0
    • +
    • CM3 +
        +
      • CoreSupport
      • +
      • DeviceSupport
      • +
          +
        • Vendor +
            +
          • Device +
              +
            • Startup +
                +
              • Toolchain
              • +
              • Toolchain
              • +
              • ...
              • +
              +
            • +
            +
          • +
          • Device
          • +
          • ...
          • +
          +
        • +
        • Vendor
        • +
        • ...
        • +
        + +
      • Example +
          +
        • Toolchain +
            +
          • Device
          • +
          • Device
          • +
          • ...
          • +
          +
        • +
        • Toolchain
        • +
        • ...
        • +
        +
      • +
      +
    • + +
    • Documentation
    • +
    + +

    9. Open Points

    +

    + Following points need to be clarified and solved: +

    +
      +
    • +

      + Equivalent C and Assembler startup files. +

      +

      + Is there a need for having C startup files although assembler startup files are + very efficient and do not need to be changed? +

      +

    • +
    • +

      + Placing of HEAP in external RAM. +

      +

      + It must be possible to place HEAP in external RAM if the device supports an + external memory controller. +

      +
    • +
    • +

      + Placing of STACK /HEAP. +

      +

      + STACK should always be placed at the end of internal RAM. +

      +

      + If HEAP is placed in internal RAM than it should be placed after RW ZI section. +

      +
    • +
    • +

      + Removing core_cm3.c and core_cm0.c. +

      +

      + On a long term the functions in core_cm3.c and core_cm0.c must be replaced with + appropriate compiler intrinsics. +

      +
    • +
    + + +

    10. Limitations

    +

    + The following limitations are not covered with the current CMSIS version: +

    +
      +
    • + No C startup files for ARM toolchain are provided. +
    • +
    • + No C startup files for GNU toolchain are provided. +
    • +
    • + No C startup files for IAR toolchain are provided. +
    • +
    • + No Tasking projects are provided yet. +
    • +
    diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/Documentation/CMSIS_Core.htm b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/Documentation/CMSIS_Core.htm new file mode 100644 index 00000000..6fd131e1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/Documentation/CMSIS_Core.htm @@ -0,0 +1,1337 @@ + + + + CMSIS: Cortex Microcontroller Software Interface Standard + + + +

    Cortex Microcontroller Software Interface Standard

    + +

    This file describes the Cortex Microcontroller Software Interface Standard (CMSIS).

    +

    Version: 1.30 - 30. October 2009

    + +

    Information in this file, the accompany manuals, and software is
    + Copyright © ARM Ltd.
    All rights reserved. +

    + +
    + +

    Revision History

    +
      +
    • Version 1.00: initial release.
    • +
    • Version 1.01: added __LDREXx, __STREXx, and __CLREX.
    • +
    • Version 1.02: added Cortex-M0.
    • +
    • Version 1.10: second review.
    • +
    • Version 1.20: third review.
    • +
    • Version 1.30 PRE-RELEASE: reworked Startup Concept, additional Debug Functionality.
    • +
    • Version 1.30 2nd PRE-RELEASE: changed folder structure, added doxyGen comments, added Bit definitions.
    • +
    • Version 1.30: updated Device Support Packages.
    • +
    + +
    + +

    Contents

    + +
      +
    1. About
    2. +
    3. Coding Rules and Conventions
    4. +
    5. CMSIS Files
    6. +
    7. Core Peripheral Access Layer
    8. +
    9. CMSIS Example
    10. +
    + +

    About

    + +

    + The Cortex Microcontroller Software Interface Standard (CMSIS) answers the challenges + that are faced when software components are deployed to physical microcontroller devices based on a + Cortex-M0 or Cortex-M3 processor. The CMSIS will be also expanded to future Cortex-M + processor cores (the term Cortex-M is used to indicate that). The CMSIS is defined in close co-operation + with various silicon and software vendors and provides a common approach to interface to peripherals, + real-time operating systems, and middleware components. +

    + +

    ARM provides as part of the CMSIS the following software layers that are +available for various compiler implementations:

    +
      +
    • Core Peripheral Access Layer: contains name definitions, + address definitions and helper functions to + access core registers and peripherals. It defines also a device + independent interface for RTOS Kernels that includes debug channel + definitions.
    • +
    + +

    These software layers are expanded by Silicon partners with:

    +
      +
    • Device Peripheral Access Layer: provides definitions + for all device peripherals
    • +
    • Access Functions for Peripherals (optional): provides + additional helper functions for peripherals
    • +
    + +

    CMSIS defines for a Cortex-M Microcontroller System:

    +
      +
    • A common way to access peripheral registers + and a common way to define exception vectors.
    • +
    • The register names of the Core + Peripherals and the names of the Core + Exception Vectors.
    • +
    • An device independent interface for RTOS Kernels including a debug + channel.
    • +
    + +

    + By using CMSIS compliant software components, the user can easier re-use template code. + CMSIS is intended to enable the combination of software components from multiple middleware vendors. +

    + +

    Coding Rules and Conventions

    + +

    + The following section describes the coding rules and conventions used in the CMSIS + implementation. It contains also information about data types and version number information. +

    + +

    Essentials

    +
      +
    • The CMSIS C code conforms to MISRA 2004 rules. In case of MISRA violations, + there are disable and enable sequences for PC-LINT inserted.
    • +
    • ANSI standard data types defined in the ANSI C header file + <stdint.h> are used.
    • +
    • #define constants that include expressions must be enclosed by + parenthesis.
    • +
    • Variables and parameters have a complete data type.
    • +
    • All functions in the Core Peripheral Access Layer are + re-entrant.
    • +
    • The Core Peripheral Access Layer has no blocking code + (which means that wait/query loops are done at other software layers).
    • +
    • For each exception/interrupt there is definition for: +
        +
      • an exception/interrupt handler with the postfix _Handler + (for exceptions) or _IRQHandler (for interrupts).
      • +
      • a default exception/interrupt handler (weak definition) that contains an endless loop.
      • +
      • a #define of the interrupt number with the postfix _IRQn.
      • +
    • +
    + +

    Recommendations

    + +

    The CMSIS recommends the following conventions for identifiers.

    +
      +
    • CAPITAL names to identify Core Registers, Peripheral Registers, and CPU Instructions.
    • +
    • CamelCase names to identify peripherals access functions and interrupts.
    • +
    • PERIPHERAL_ prefix to identify functions that belong to specify peripherals.
    • +
    • Doxygen comments for all functions are included as described under Function Comments below.
    • +
    + +Comments + +
      +
    • Comments use the ANSI C90 style (/* comment */) or C++ style + (// comment). It is assumed that the programming tools support today + consistently the C++ comment style.
    • +
    • Function Comments provide for each function the following information: +
        +
      • one-line brief function overview.
      • +
      • detailed parameter explanation.
      • +
      • detailed information about return values.
      • +
      • detailed description of the actual function.
      • +
      +

      Doxygen Example:

      +
      +/** 
      + * @brief  Enable Interrupt in NVIC Interrupt Controller
      + * @param  IRQn  interrupt number that specifies the interrupt
      + * @return none.
      + * Enable the specified interrupt in the NVIC Interrupt Controller.
      + * Other settings of the interrupt such as priority are not affected.
      + */
      +
    • +
    + +

    Data Types and IO Type Qualifiers

    + +

    + The Cortex-M HAL uses the standard types from the standard ANSI C header file + <stdint.h>. IO Type Qualifiers are used to specify the access + to peripheral variables. IO Type Qualifiers are indented to be used for automatic generation of + debug information of peripheral registers. +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    IO Type Qualifier#defineDescription
    __Ivolatile constRead access only
    __OvolatileWrite access only
    __IOvolatileRead and write access
    + +

    CMSIS Version Number

    +

    + File core_cm3.h contains the version number of the CMSIS with the following define: +

    + +
    +#define __CM3_CMSIS_VERSION_MAIN  (0x01)      /* [31:16] main version       */
    +#define __CM3_CMSIS_VERSION_SUB   (0x30)      /* [15:0]  sub version        */
    +#define __CM3_CMSIS_VERSION       ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB)
    + +

    + File core_cm0.h contains the version number of the CMSIS with the following define: +

    + +
    +#define __CM0_CMSIS_VERSION_MAIN  (0x01)      /* [31:16] main version       */
    +#define __CM0_CMSIS_VERSION_SUB   (0x30)      /* [15:0]  sub version        */
    +#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16) | __CM0_CMSIS_VERSION_SUB)
    + + +

    CMSIS Cortex Core

    +

    + File core_cm3.h contains the type of the CMSIS Cortex-M with the following define: +

    + +
    +#define __CORTEX_M                (0x03)
    + +

    + File core_cm0.h contains the type of the CMSIS Cortex-M with the following define: +

    + +
    +#define __CORTEX_M                (0x00)
    + + +

    CMSIS Files

    +

    + This section describes the Files provided in context with the CMSIS to access the Cortex-M + hardware and peripherals. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FileProviderDescription
    device.hDevice specific (provided by silicon partner)Defines the peripherals for the actual device. The file may use + several other include files to define the peripherals of the actual device.
    core_cm0.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the core peripherals for the Cortex-M0 CPU and core peripherals.
    core_cm3.hARM (for RealView ARMCC, IAR, and GNU GCC)Defines the core peripherals for the Cortex-M3 CPU and core peripherals.
    core_cm0.cARM (for RealView ARMCC, IAR, and GNU GCC)Provides helper functions that access core registers.
    core_cm3.cARM (for RealView ARMCC, IAR, and GNU GCC)Provides helper functions that access core registers.
    startup_deviceARM (adapted by compiler partner / silicon partner)Provides the Cortex-M startup code and the complete (device specific) Interrupt Vector Table
    system_deviceARM (adapted by silicon partner)Provides a device specific configuration file for the device. It configures the device initializes + typically the oscillator (PLL) that is part of the microcontroller device
    + +

    device.h

    + +

    + The file device.h is provided by the silicon vendor and is the + central include file that the application programmer is using in + the C source code. This file contains: +

    +
      +
    • +

      Interrupt Number Definition: provides interrupt numbers + (IRQn) for all core and device specific exceptions and interrupts.

      +
    • +
    • +

      Configuration for core_cm0.h / core_cm3.h: reflects the + actual configuration of the Cortex-M processor that is part of the actual + device. As such the file core_cm0.h / core_cm3.h is included that + implements access to processor registers and core peripherals.

      +
    • +
    • +

      Device Peripheral Access Layer: provides definitions + for all device peripherals. It contains all data structures and the address + mapping for the device specific peripherals.

      +
    • +
    • Access Functions for Peripherals (optional): provides + additional helper functions for peripherals that are useful for programming + of these peripherals. Access Functions may be provided as inline functions + or can be extern references to a device specific library provided by the + silicon vendor.
    • +
    + + +

    Interrupt Number Definition

    + +

    To access the device specific interrupts the device.h file defines IRQn +numbers for the complete device using a enum typedef as shown below:

    +
    +typedef enum IRQn
    +{
    +/******  Cortex-M3 Processor Exceptions/Interrupt Numbers ************************************************/
    +  NonMaskableInt_IRQn             = -14,      /*!< 2 Non Maskable Interrupt                              */
    +  HardFault_IRQn                  = -13,      /*!< 3 Cortex-M3 Hard Fault Interrupt                      */
    +  MemoryManagement_IRQn           = -12,      /*!< 4 Cortex-M3 Memory Management Interrupt               */
    +  BusFault_IRQn                   = -11,      /*!< 5 Cortex-M3 Bus Fault Interrupt                       */
    +  UsageFault_IRQn                 = -10,      /*!< 6 Cortex-M3 Usage Fault Interrupt                     */
    +  SVCall_IRQn                     = -5,       /*!< 11 Cortex-M3 SV Call Interrupt                        */
    +  DebugMonitor_IRQn               = -4,       /*!< 12 Cortex-M3 Debug Monitor Interrupt                  */
    +  PendSV_IRQn                     = -2,       /*!< 14 Cortex-M3 Pend SV Interrupt                        */
    +  SysTick_IRQn                    = -1,       /*!< 15 Cortex-M3 System Tick Interrupt                    */
    +/******  STM32 specific Interrupt Numbers ****************************************************************/
    +  WWDG_STM_IRQn                   = 0,        /*!< Window WatchDog Interrupt                             */
    +  PVD_STM_IRQn                    = 1,        /*!< PVD through EXTI Line detection Interrupt             */
    +  :
    +  :
    +  } IRQn_Type;
    + + +

    Configuration for core_cm0.h / core_cm3.h

    +

    + The Cortex-M core configuration options which are defined for each device implementation. Some + configuration options are reflected in the CMSIS layer using the #define settings described below. +

    +

    + To access core peripherals file device.h includes file core_cm0.h / core_cm3.h. + Several features in core_cm0.h / core_cm3.h are configured by the following defines that must be + defined before #include <core_cm0.h> / #include <core_cm3.h> + preprocessor command. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #defineFileValueDescription
    __NVIC_PRIO_BITScore_cm0.h(2)Number of priority bits implemented in the NVIC (device specific)
    __NVIC_PRIO_BITScore_cm3.h(2 ... 8)Number of priority bits implemented in the NVIC (device specific)
    __MPU_PRESENTcore_cm0.h, core_cm3.h(0, 1)Defines if an MPU is present or not
    __Vendor_SysTickConfigcore_cm0.h, core_cm3.h(1)When this define is setup to 1, the SysTickConfig function + in core_cm3.h is excluded. In this case the device.h + file must contain a vendor specific implementation of this function.
    + + +

    Device Peripheral Access Layer

    +

    + Each peripheral uses a prefix which consists of <device abbreviation>_ + and <peripheral name>_ to identify peripheral registers that access this + specific peripheral. The intention of this is to avoid name collisions caused + due to short names. If more than one peripheral of the same type exists, + identifiers have a postfix (digit or letter). For example: +

    +
      +
    • <device abbreviation>_UART_Type: defines the generic register layout for all UART channels in a device. +
      +typedef struct
      +{
      +  union {
      +  __I  uint8_t  RBR;                     /*!< Offset: 0x000   Receiver Buffer Register    */
      +  __O  uint8_t  THR;                     /*!< Offset: 0x000   Transmit Holding Register   */
      +  __IO uint8_t  DLL;                     /*!< Offset: 0x000   Divisor Latch LSB           */
      +       uint32_t RESERVED0;
      +  };
      +  union {
      +  __IO uint8_t  DLM;                     /*!< Offset: 0x004   Divisor Latch MSB           */
      +  __IO uint32_t IER;                     /*!< Offset: 0x004   Interrupt Enable Register   */
      +  };
      +  union {
      +  __I  uint32_t IIR;                     /*!< Offset: 0x008   Interrupt ID Register       */
      +  __O  uint8_t  FCR;                     /*!< Offset: 0x008   FIFO Control Register       */
      +  };
      +  __IO uint8_t  LCR;                     /*!< Offset: 0x00C   Line Control Register       */
      +       uint8_t  RESERVED1[7];
      +  __I  uint8_t  LSR;                     /*!< Offset: 0x014   Line Status Register        */
      +       uint8_t  RESERVED2[7];
      +  __IO uint8_t  SCR;                     /*!< Offset: 0x01C   Scratch Pad Register        */
      +       uint8_t  RESERVED3[3];
      +  __IO uint32_t ACR;                     /*!< Offset: 0x020   Autobaud Control Register   */
      +  __IO uint8_t  ICR;                     /*!< Offset: 0x024   IrDA Control Register       */
      +       uint8_t  RESERVED4[3];
      +  __IO uint8_t  FDR;                     /*!< Offset: 0x028   Fractional Divider Register */
      +       uint8_t  RESERVED5[7];
      +  __IO uint8_t  TER;                     /*!< Offset: 0x030   Transmit Enable Register    */
      +       uint8_t  RESERVED6[39];
      +  __I  uint8_t  FIFOLVL;                 /*!< Offset: 0x058   FIFO Level Register         */
      +} LPC_UART_TypeDef;
      +
    • +
    • <device abbreviation>_UART1: is a pointer to a register structure that refers to a specific UART. + For example UART1->DR is the data register of UART1. +
      +#define LPC_UART2             ((LPC_UART_TypeDef      *) LPC_UART2_BASE    )
      +#define LPC_UART3             ((LPC_UART_TypeDef      *) LPC_UART3_BASE    )
      +
    • +
    + +
    Minimal Requiements
    +

    + To access the peripheral registers and related function in a device the files device.h + and core_cm0.h / core_cm3.h defines as a minimum: +

    +
      +
    • The Register Layout Typedef for each peripheral that defines all register names. + Names that start with RESERVE are used to introduce space into the structure to adjust the addresses of + the peripheral registers. For example: +
      +typedef struct {
      +  __IO uint32_t CTRL;      /* SysTick Control and Status Register */
      +  __IO uint32_t LOAD;      /* SysTick Reload Value Register       */
      +  __IO uint32_t VAL;       /* SysTick Current Value Register      */
      +  __I  uint32_t CALIB;     /* SysTick Calibration Register        */
      +  } SysTick_Type;
      +
    • + +
    • + Base Address for each peripheral (in case of multiple peripherals + that use the same register layout typedef multiple base addresses are defined). For example: +
      +#define SysTick_BASE (SCS_BASE + 0x0010)            /* SysTick Base Address */
      +
    • + +
    • + Access Definition for each peripheral (in case of multiple peripherals that use + the same register layout typedef multiple access definitions exist, i.e. LPC_UART0, + LPC_UART2). For Example: +
      +#define SysTick ((SysTick_Type *) SysTick_BASE)     /* SysTick access definition */
      +
    • +
    + +

    + These definitions allow to access the peripheral registers from user code with simple assignments like: +

    +
    SysTick->CTRL = 0;
    + +
    Optional Features
    +

    In addition the device.h file may define:

    +
      +
    • + #define constants that simplify access to the peripheral registers. + These constant define bit-positions or other specific patterns are that required for the + programming of the peripheral registers. The identifiers used start with + <device abbreviation>_ and <peripheral name>_. + It is recommended to use CAPITAL letters for such #define constants. +
    • +
    • + Functions that perform more complex functions with the peripheral (i.e. status query before + a sending register is accessed). Again these function start with + <device abbreviation>_ and <peripheral name>_. +
    • +
    + +

    core_cm0.h and core_cm0.c

    +

    + File core_cm0.h describes the data structures for the Cortex-M0 core peripherals and does + the address mapping of this structures. It also provides basic access to the Cortex-M0 core registers + and core peripherals with efficient functions (defined as static inline). +

    +

    + File core_cm0.c defines several helper functions that access processor registers. +

    +

    Together these files implement the Core Peripheral Access Layer for a Cortex-M0.

    + +

    core_cm3.h and core_cm3.c

    +

    + File core_cm3.h describes the data structures for the Cortex-M3 core peripherals and does + the address mapping of this structures. It also provides basic access to the Cortex-M3 core registers + and core peripherals with efficient functions (defined as static inline). +

    +

    + File core_cm3.c defines several helper functions that access processor registers. +

    +

    Together these files implement the Core Peripheral Access Layer for a Cortex-M3.

    + +

    startup_device

    +

    + A template file for startup_device is provided by ARM for each supported + compiler. It is adapted by the silicon vendor to include interrupt vectors for all device specific + interrupt handlers. Each interrupt handler is defined as weak function + to an dummy handler. Therefore the interrupt handler can be directly used in application software + without any requirements to adapt the startup_device file. +

    +

    + The following exception names are fixed and define the start of the vector table for a Cortex-M0: +

    +
    +__Vectors       DCD     __initial_sp              ; Top of Stack
    +                DCD     Reset_Handler             ; Reset Handler
    +                DCD     NMI_Handler               ; NMI Handler
    +                DCD     HardFault_Handler         ; Hard Fault Handler
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     SVC_Handler               ; SVCall Handler
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     PendSV_Handler            ; PendSV Handler
    +                DCD     SysTick_Handler           ; SysTick Handler
    + +

    + The following exception names are fixed and define the start of the vector table for a Cortex-M3: +

    +
    +__Vectors       DCD     __initial_sp              ; Top of Stack
    +                DCD     Reset_Handler             ; Reset Handler
    +                DCD     NMI_Handler               ; NMI Handler
    +                DCD     HardFault_Handler         ; Hard Fault Handler
    +                DCD     MemManage_Handler         ; MPU Fault Handler
    +                DCD     BusFault_Handler          ; Bus Fault Handler
    +                DCD     UsageFault_Handler        ; Usage Fault Handler
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     0                         ; Reserved
    +                DCD     SVC_Handler               ; SVCall Handler
    +                DCD     DebugMon_Handler          ; Debug Monitor Handler
    +                DCD     0                         ; Reserved
    +                DCD     PendSV_Handler            ; PendSV Handler
    +                DCD     SysTick_Handler           ; SysTick Handler
    + +

    + In the following examples for device specific interrupts are shown: +

    +
    +; External Interrupts
    +                DCD     WWDG_IRQHandler           ; Window Watchdog
    +                DCD     PVD_IRQHandler            ; PVD through EXTI Line detect
    +                DCD     TAMPER_IRQHandler         ; Tamper
    + +

    + Device specific interrupts must have a dummy function that can be overwritten in user code. + Below is an example for this dummy function. +

    +
    +Default_Handler PROC
    +                EXPORT WWDG_IRQHandler   [WEAK]
    +                EXPORT PVD_IRQHandler    [WEAK]
    +                EXPORT TAMPER_IRQHandler [WEAK]
    +                :
    +                :
    +                WWDG_IRQHandler
    +                PVD_IRQHandler
    +                TAMPER_IRQHandler
    +                :
    +                :
    +                B .
    +                ENDP
    + +

    + The user application may simply define an interrupt handler function by using the handler name + as shown below. +

    +
    +void WWDG_IRQHandler(void)
    +{
    +  :
    +  :
    +}
    + + +

    system_device.c

    +

    + A template file for system_device.c is provided by ARM but adapted by + the silicon vendor to match their actual device. As a minimum requirement + this file must provide a device specific system configuration function and a global variable + that contains the system frequency. It configures the device and initializes typically the + oscillator (PLL) that is part of the microcontroller device. +

    +

    + The file system_device.c must provide + as a minimum requirement the SystemInit function as shown below. +

    + + + + + + + + + + + + + + + + +
    Function DefinitionDescription
    void SystemInit (void)Setup the microcontroller system. Typically this function configures the + oscillator (PLL) that is part of the microcontroller device. For systems + with variable clock speed it also updates the variable SystemCoreClock.
    + SystemInit is called from startup_device file.
    void SystemCoreClockUpdate (void)Updates the variable SystemCoreClock and must be called whenever the + core clock is changed during program execution. SystemCoreClockUpdate() + evaluates the clock register settings and calculates the current core clock. +
    + +

    + Also part of the file system_device.c + is the variable SystemCoreClock which contains the current CPU clock speed shown below. +

    + + + + + + + + + + + + +
    Variable DefinitionDescription
    uint32_t SystemCoreClockContains the system core clock (which is the system clock frequency supplied + to the SysTick timer and the processor core clock). This variable can be + used by the user application to setup the SysTick timer or configure other + parameters. It may also be used by debugger to query the frequency of the + debug timer or configure the trace clock speed.
    + SystemCoreClock is initialized with a correct predefined value.

    + The compiler must be configured to avoid the removal of this variable in + case that the application program is not using it. It is important for + debug systems that the variable is physically present in memory so that + it can be examined to configure the debugger.
    + +

    Note

    +
      +
    • The above definitions are the minimum requirements for the file + system_device.c. This + file may export more functions or variables that provide a more flexible + configuration of the microcontroller system.

      +
    • +
    + + +

    Core Peripheral Access Layer

    + +

    Cortex-M Core Register Access

    +

    + The following functions are defined in core_cm0.h / core_cm3.h + and provide access to Cortex-M core registers. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Function DefinitionCoreCore RegisterDescription
    void __enable_irq (void)M0, M3PRIMASK = 0Global Interrupt enable (using the instruction CPSIE + i)
    void __disable_irq (void)M0, M3PRIMASK = 1Global Interrupt disable (using the instruction + CPSID i)
    void __set_PRIMASK (uint32_t value)M0, M3PRIMASK = valueAssign value to Priority Mask Register (using the instruction + MSR)
    uint32_t __get_PRIMASK (void)M0, M3return PRIMASKReturn Priority Mask Register (using the instruction + MRS)
    void __enable_fault_irq (void)M3FAULTMASK = 0Global Fault exception and Interrupt enable (using the + instruction CPSIE + f)
    void __disable_fault_irq (void)M3FAULTMASK = 1Global Fault exception and Interrupt disable (using the + instruction CPSID f)
    void __set_FAULTMASK (uint32_t value)M3FAULTMASK = valueAssign value to Fault Mask Register (using the instruction + MSR)
    uint32_t __get_FAULTMASK (void)M3return FAULTMASKReturn Fault Mask Register (using the instruction MRS)
    void __set_BASEPRI (uint32_t value)M3BASEPRI = valueSet Base Priority (using the instruction MSR)
    uiuint32_t __get_BASEPRI (void)M3return BASEPRIReturn Base Priority (using the instruction MRS)
    void __set_CONTROL (uint32_t value)M0, M3CONTROL = valueSet CONTROL register value (using the instruction MSR)
    uint32_t __get_CONTROL (void)M0, M3return CONTROLReturn Control Register Value (using the instruction + MRS)
    void __set_PSP (uint32_t TopOfProcStack)M0, M3PSP = TopOfProcStackSet Process Stack Pointer value (using the instruction + MSR)
    uint32_t __get_PSP (void)M0, M3return PSPReturn Process Stack Pointer (using the instruction MRS)
    void __set_MSP (uint32_t TopOfMainStack)M0, M3MSP = TopOfMainStackSet Main Stack Pointer (using the instruction MSR)
    uint32_t __get_MSP (void)M0, M3return MSPReturn Main Stack Pointer (using the instruction MRS)
    + +

    Cortex-M Instruction Access

    +

    + The following functions are defined in core_cm0.h / core_cm3.hand + generate specific Cortex-M instructions. The functions are implemented in the file + core_cm0.c / core_cm3.c. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCoreGenerated CPU InstructionDescription
    void __NOP (void)M0, M3NOPNo Operation
    void __WFI (void)M0, M3WFIWait for Interrupt
    void __WFE (void)M0, M3WFEWait for Event
    void __SEV (void)M0, M3SEVSet Event
    void __ISB (void)M0, M3ISBInstruction Synchronization Barrier
    void __DSB (void)M0, M3DSBData Synchronization Barrier
    void __DMB (void)M0, M3DMBData Memory Barrier
    uint32_t __REV (uint32_t value)M0, M3REVReverse byte order in integer value.
    uint32_t __REV16 (uint16_t value)M0, M3REV16Reverse byte order in unsigned short value.
    sint32_t __REVSH (sint16_t value)M0, M3REVSHReverse byte order in signed short value with sign extension to integer.
    uint32_t __RBIT (uint32_t value)M3RBITReverse bit order of value
    uint8_t __LDREXB (uint8_t *addr)M3LDREXBLoad exclusive byte
    uint16_t __LDREXH (uint16_t *addr)M3LDREXHLoad exclusive half-word
    uint32_t __LDREXW (uint32_t *addr)M3LDREXWLoad exclusive word
    uint32_t __STREXB (uint8_t value, uint8_t *addr)M3STREXBStore exclusive byte
    uint32_t __STREXB (uint16_t value, uint16_t *addr)M3STREXHStore exclusive half-word
    uint32_t __STREXB (uint32_t value, uint32_t *addr)M3STREXWStore exclusive word
    void __CLREX (void)M3CLREXRemove the exclusive lock created by __LDREXB, __LDREXH, or __LDREXW
    + + +

    NVIC Access Functions

    +

    + The CMSIS provides access to the NVIC via the register interface structure and several helper + functions that simplify the setup of the NVIC. The CMSIS HAL uses IRQ numbers (IRQn) to + identify the interrupts. The first device interrupt has the IRQn value 0. Therefore negative + IRQn values are used for processor core exceptions. +

    +

    + For the IRQn values of core exceptions the file device.h provides + the following enum names. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Core Exception enum ValueCoreIRQnDescription
    NonMaskableInt_IRQnM0, M3-14Cortex-M Non Maskable Interrupt
    HardFault_IRQnM0, M3-13Cortex-M Hard Fault Interrupt
    MemoryManagement_IRQnM3-12Cortex-M Memory Management Interrupt
    BusFault_IRQnM3-11Cortex-M Bus Fault Interrupt
    UsageFault_IRQnM3-10Cortex-M Usage Fault Interrupt
    SVCall_IRQnM0, M3-5Cortex-M SV Call Interrupt
    DebugMonitor_IRQnM3-4Cortex-M Debug Monitor Interrupt
    PendSV_IRQnM0, M3-2Cortex-M Pend SV Interrupt
    SysTick_IRQnM0, M3-1Cortex-M System Tick Interrupt
    + +

    The following functions simplify the setup of the NVIC. +The functions are defined as static inline.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCoreParameterDescription
    void NVIC_SetPriorityGrouping (uint32_t PriorityGroup)M3Priority Grouping ValueSet the Priority Grouping (Groups . Subgroups)
    uint32_t NVIC_GetPriorityGrouping (void)M3(void)Get the Priority Grouping (Groups . Subgroups)
    void NVIC_EnableIRQ (IRQn_Type IRQn)M0, M3IRQ NumberEnable IRQn
    void NVIC_DisableIRQ (IRQn_Type IRQn)M0, M3IRQ NumberDisable IRQn
    uint32_t NVIC_GetPendingIRQ (IRQn_Type IRQn)M0, M3IRQ NumberReturn 1 if IRQn is pending else 0
    void NVIC_SetPendingIRQ (IRQn_Type IRQn)M0, M3IRQ NumberSet IRQn Pending
    void NVIC_ClearPendingIRQ (IRQn_Type IRQn)M0, M3IRQ NumberClear IRQn Pending Status
    uint32_t NVIC_GetActive (IRQn_Type IRQn)M3IRQ NumberReturn 1 if IRQn is active else 0
    void NVIC_SetPriority (IRQn_Type IRQn, uint32_t priority)M0, M3IRQ Number, PrioritySet Priority for IRQn
    + (not threadsafe for Cortex-M0)
    uint32_t NVIC_GetPriority (IRQn_Type IRQn)M0, M3IRQ NumberGet Priority for IRQn
    uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)M3IRQ Number, Priority Group, Preemptive Priority, Sub PriorityEncode priority for given group, preemptive and sub priority
    NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)M3IRQ Number, Priority, pointer to Priority Group, pointer to Preemptive Priority, pointer to Sub PriorityDeccode given priority to group, preemptive and sub priority
    void NVIC_SystemReset (void)M0, M3(void)Resets the System
    +

    Note

    +
      +
    • The processor exceptions have negative enum values. Device specific interrupts + have positive enum values and start with 0. The values are defined in + device.h file. +

      +
    • +
    • The values for PreemptPriority and SubPriority + used in functions NVIC_EncodePriority and NVIC_DecodePriority + depend on the available __NVIC_PRIO_BITS implemented in the NVIC. +

      +
    • +
    + + +

    SysTick Configuration Function

    + +

    The following function is used to configure the SysTick timer and start the +SysTick interrupt.

    + + + + + + + + + + + + + + +
    NameParameterDescription
    uint32_t SysTickConfig + (uint32_t ticks)ticks is SysTick counter reload valueSetup the SysTick timer and enable the SysTick interrupt. After this + call the SysTick timer creates interrupts with the specified time + interval.
    +
    + Return: 0 when successful, 1 on failure.
    +
    + + +

    Cortex-M3 ITM Debug Access

    + +

    The Cortex-M3 incorporates the Instrumented Trace Macrocell (ITM) that +provides together with the Serial Viewer Output trace capabilities for the +microcontroller system. The ITM has 32 communication channels; two ITM +communication channels are used by CMSIS to output the following information:

    +
      +
    • ITM Channel 0: implements the ITM_SendChar function + which can be used for printf-style output via the debug interface.
    • +
    • ITM Channel 31: is reserved for the RTOS kernel and can be used for + kernel awareness debugging.
    • +
    +

    Note

    +
      +
    • The ITM channel 31 is selected for the RTOS kernel since some kernels + may use the Privileged level for program execution. ITM + channels have 4 groups with 8 channels each, whereby each group can be + configured for access rights in the Unprivileged level. The ITM channel 0 + may be therefore enabled for the user task whereas ITM channel 31 may be + accessible only in Privileged level from the RTOS kernel itself.

      +
    • +
    + +

    The prototype of the ITM_SendChar routine is shown in the +table below.

    + + + + + + + + + + + + + + +
    NameParameterDescription
    void uint32_t ITM_SendChar(uint32_t chr)character to outputThe function outputs a character via the ITM channel 0. The + function returns when no debugger is connected that has booked the + output. It is blocking when a debugger is connected, but the + previous character send is not transmitted.

    + Return: the input character 'chr'.
    + +

    + Example for the usage of the ITM Channel 31 for RTOS Kernels: +

    +
    +  // check if debugger connected and ITM channel enabled for tracing
    +  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA) &&
    +  (ITM->TCR & ITM_TCR_ITMENA) &&
    +  (ITM->TER & (1UL << 31))) {
    +    // transmit trace data
    +    while (ITM->PORT31_U32 == 0);
    +    ITM->PORT[31].u8 = task_id;      // id of next task
    +    while (ITM->PORT[31].u32 == 0);
    +    ITM->PORT[31].u32 = task_status; // status information
    +  }
    + + +

    Cortex-M3 additional Debug Access

    + +

    CMSIS provides additional debug functions to enlarge the Cortex-M3 Debug Access. +Data can be transmitted via a certain global buffer variable towards the target system.

    + +

    The buffer variable and the prototypes of the additional functions are shown in the +table below.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    NameParameterDescription
    extern volatile int ITM_RxBuffer Buffer to transmit data towards debug system.

    + Value 0x5AA55AA5 indicates that buffer is empty.
    int ITM_ReceiveChar (void)noneThe nonblocking functions returns the character stored in + ITM_RxBuffer.

    + Return: -1 indicates that no character was received.
    int ITM_CheckChar (void)noneThe function checks if a character is available in ITM_RxBuffer.

    + Return: 1 indicates that a character is available, 0 indicates that + no character is available.
    + + +

    CMSIS Example

    +

    + The following section shows a typical example for using the CMSIS layer in user applications. + The example is based on a STM32F10x Device. +

    +
    +#include "stm32f10x.h"
    +
    +volatile uint32_t msTicks;                       /* timeTicks counter */
    +
    +void SysTick_Handler(void) {
    +  msTicks++;                                     /* increment timeTicks counter */
    +}
    +
    +__INLINE static void Delay (uint32_t dlyTicks) {
    +  uint32_t curTicks = msTicks;
    +
    +  while ((msTicks - curTicks) < dlyTicks);
    +}
    +
    +__INLINE static void LED_Config(void) {
    +  ;                                              /* Configure the LEDs */
    +}
    +
    +__INLINE static void LED_On (uint32_t led) {
    +  ;                                              /* Turn On  LED */
    +}
    +
    +__INLINE static void LED_Off (uint32_t led) {
    +  ;                                              /* Turn Off LED */
    +}
    +
    +int main (void) {
    +  if (SysTick_Config (SystemCoreClock / 1000)) { /* Setup SysTick for 1 msec interrupts */
    +    ;                                            /* Handle Error */
    +    while (1);
    +  }
    +  
    +  LED_Config();                                  /* configure the LEDs */                            
    + 
    +  while(1) {
    +    LED_On (0x100);                              /* Turn  on the LED   */
    +    Delay (100);                                 /* delay  100 Msec    */
    +    LED_Off (0x100);                             /* Turn off the LED   */
    +    Delay (100);                                 /* delay  100 Msec    */
    +  }
    +}
    + + + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/License.doc b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/CMSIS/License.doc new file mode 100644 index 0000000000000000000000000000000000000000..b6b8acecc137bca709444106cba045d3d01daedd GIT binary patch literal 39936 zcmeI53w&Hvz3*2ZZBuBVr4Jqg-IP)q2qBafkZ1Flwy9}S@}SfrFqxSo(8g!^moP(odvq z?1-P~rSnWxy)k$1Uu5y=1Ks4`kH|Iruxr=e*@t}heulg3&0El=OJVTdj~gA%QG|Cj zO)+Lpu`#RnaU+7^2}E5={8@zmi%^7jOmp+yxSuhvaXWRk`>gP6Zlm7w=Y;hFFQKlHfxaQ}ERf8S{OfPon%>RWR!E`Qf)aD%tq)`9jqjy!`t7(C??8 zN6#+|{a z7IHL08H+OOzPDoR@5VzOOM$dFX^6)r68iU4Fg?y;)TbzaJ;w zfA-UD=0C%aU$0-4&mXn(2YTc4*$@5p{bxV)%jXOIe4|5O9{n(1c|ZOc=#m^xbd7Gu zfA;z8Kj#bm`hEQn3@<~+{E9)35(eW{#(!42uD!^k`MrctL%f<0wU(VHKEEdlwYX3W z-7+I9V|p%J1rF>!2i7P1Q%++%5=%s4PA2KJrwO`aPAl=m)Fq=aC!B~nt$ndbyfYpN zXX43()0s@!Ty@D*Cbq>{6OW{lkz^v1O7`@`QWWmY41`lLry-Gvr8>h@)S97|a4LFY zd3oEahE^xkRPVI6hFYA)hPqHwUC60f*%At^2{pAjq}Di%p_Mg_fyl+zdl|P?IJKd+ zb)is`v%b0ASsZF;TSYZBPHRKc%Epk>&{W@WMnipjO=G3g+~UW&)lqvx+xiNphQ@1J z*3kBvhPF_>vv>hd3o4uy6reT{<}|Ocx2?_XEl^k2Tn~v9Yh4?vYgo}xSJT$e+~m~M z)itkKThp|jw#g3V9+g#&ZGed8rpEQox`xI^o2A*!K>ccG{L0&!Z4YUtu9;5R2HRHE zwAol%4y|o-Y8o4TO4~v$Yg+04C^~A_J9QBC5jB5(gUiuv;tUB5O|5Ozpd=!i#mIFH z(AF+qDypt|t?in}WR)VQ>1Yg>?)HYB1Y)Yjgjv6_SwAe>cBdHMB$Il0a0jfE3wI|wV_iv}DxJ|Jq`SjCJx(H-apH+cPd`0e9Ivp2 z;=O%6vEEoB<7%X2r;|i)rJTP0j-GhBI~H})L88-6D%KfGNzFy6%T_U>yC+dIRfiLU zPAn0o4iOiNbSIKM$*y=ztPW?K-teH)5pxo;NGzQWrv{}md&8Sz4hpd!)v4lrsbsW2 zl2KG2`ce8)l*J&?))7fUx@r_7#u8HLbo6H&X-{>VlD+9z&t|g6w)CZFwP(;t$1)lO zO52{q)1%b$;#gHzm7{jzQpcSsR5QJbrYnhrhh4EmEEUcqQ$%!xBb&Umo_I$poDyY_ z?sC(wqtXed)3M$TRYxM+*~DFtKPNex!#(k+HySA?8tdrqa?<`vK%s8bzgC5loNylu zaF-G&NcM>s@jE@3&cu4vKr|KKOap%Llbn`@);gFH>5kKAreC$dXN>~6d$s-q6D#a! zGMv5P^rnGiYE#-SVtw6%Y1-{^dcuRr{tW%>goBw_7wsb!k$5W7AJ0H~I^LB?pCm#S z$2V6vEp3g%Ea{GSbvr$=&9NRtN+aUS-~`n%!OH!`Ze>eNQ(J5KF)S0U{T&!|xWY*eB`cXC2o)m|OQezfm_xl<9wnc!$>|FZYNDx;{zSO5 zGu{)o{K|C4Q&CcpacGp4u(+ebiBSq75SC;#?oKu@inclsD_7*lvo9oVzK}oq!ov8InkN-=GR)6$F&|m1#1josM`yQ&%izL>aK$-GP)72AS3N+YE1V}@Z!qhG|nN+*>Z4EMlpakkPy{(7PVaps+6v9+^K zEJu$`cQporCz3V#BQ#Q0&-V4F`jRLYq%|tJOZHh^*&W`jN#jMuqLoN{q91FE=@HB@ z9IHIZPRLX_ScPJtJNmWx)BViLL8ZYyJO2mbG#iblGpRUANhzLkLwR+_Bi&ZVAUnA= z*-3OVUU7$e(N}4ozCp-DFggdVz@(+EJ>zqf)w!7A^_Dh~tw&<(uXum2 zOsaIJd=z=Mvs2U9YL(PxmJ=2~@hpYT$!I-*S7`*-E``JE*zjDEov;M0(l&~jV@-H1 zFs=&lX1k^gn#5HDEDd&il#3yk&V@j74pY+;9&q#6d6ck2k?zMd*M zrqXKCaOAxHxLt!C%lt|w6VIR;#U<&DSXw5@#HvgM^6TTQl9bAf#S>L{O!UHGmZOYZ z<41bIn=S%3=4?M1;ecHtGK@(w6|+oLbB3vA#n^B)ZkIIF7UiLFS-?fz*$$* zqBXoBge!aI+LlmjYo*h$W^H2wrQ`*))wH#@HMguMwyCbMy&i|E5;w37H=xb+JFN#< zX({px1}eo5S`%uiTSXf+wGEB9t(8tIMOs(X)Tv(QbUa)e+tl3D(6pk323+@<)>kyN zH9?W}XKS3bH7#uob?uEcEza8ZmbJ~Tp-C}9j*m-w$O*NyG`F;RY@oBDmNV$MnAy^> za#fpLIsuJswHR(4#tD;#I)%KUQ8ylgQH<&pN*Kz9<8T8o5h zd1vP+=6>c4WbF{w? zS10U5dcyJE>|%xqO<`0IdeCP<1xBO#D^qmXu7i2QHrp7YtZEESXqosG&Vp>E3p|%t zbWwL4p8H!;*1GW@AQZI+O|Fi>_UnagFV$TNu=ebj$pn!-rQF=IKvg=M7=4>QFhB(Ezd01)hM7RMvJ$qUxSO&mCRh3W?u0ScFLs>xw~6 zr>r=)MbQ@PV)3QPa1?g5dAkD%zf(}&i;b&+p?DN~ zEu89zb89Oexy*N6;cr5Z~NOO^(1jBrsPB2P<8 z50-l@C38l$y`&?Sip1giAnsl`oz&g{3GxBFCRF19`vP(%{Y{D7tsw5363~eUEN4ls zWr)FMyF#*MBSqRqq$(YaN9@*tJH@j3B1|OogsXkzN82q3*@+zU4mU?w2DDz?j3aNdpLvhvULhXC!s;OSYtM1$} zX^0;7#oPK9vdJOdZuCfs$N2pT1c;p~_Mkd#*J!{O{7Lj>TQFTDD;x&Ov^V{ zCs=8$E>Nf7WDbh6f-how!&~CL{k_y;RTmT{2V5oZ?K5dhgZae<%<&#;$0ydxudLFs zR-^++!PUiLtOCEZuQdNyf|?UUoYy5@%`iG>v*avVOZ+#AI?eqqGsi zIKQZ8 zTJ9`}Mx8ZWxaM37oU@LQbF?zV`?@t)@pGz=L$ztq`LZqxzndlpY7B)*WnJV z4YjnbcNWwk@BNHYlO<$m{UO?I1i*i8hiyj1QzXK%rbEIp2mC?+zY+| zUjFgR-@5DitsA$l+q&X}!$p`gxBJ$zkD7Vivris0b*uL=&8v&e>ELV-=Gh!Dulvhq zY|EWSX{C*m{q2F|Yfe;&oA8IIum2K;+aF5mOR8}FjFmx5(} z5PbM%@Zo{H51$XFjCcqp1n=QR$-u%s*cwSgmz z;anlP?DJOhm@#mY=e;jGuz1#GzkK^_!gC32`kNKo?V+YX`p82H)YyHY40p?ZstAe!qC>1tRF&;Xv zTT^D-Jggv^CP4-3SEAKLVxBV%9e(@;r=T0#omX<_pmgcQFXm3mmd;y$R;Me+s2+@6 z0jN(Ca2$G}ChsarTk3_|mkHaVrhIGeEREe)!G8e{g0F+e!H>Ydfqw^o1kIcZUkhR& z13nIJ05^g!fv7*>25~FJ5rw z__fiZte{cSF_IVNAdN*DWI#W-0DKDE0{%O=mUVs`coIAX{sm;$f9_ufe**s>%*P&B z0PX{ig6{y?2s?kd^XZ+B?R@$hPv8CYV>f+bAiiPshSmHGkL}32?A*|DnR70~=}({Y z^So)lKKa{u)AH6i8Qnu3l^>U<(6(kpYu@%H1^N1vSF*Ak$(w^#mt?+?x8}R{cqV7s zej1-SoTQ!$_64VbCeRGR;5G0DXv4-k2b>4e;0ACHxDPxHehPj8ehpp)vI*Y+zXxxD zU0@a`-46qcz~Nvi*aU6@H-lTiz2H&sZSc?F8Sv_}+h2X?)jMB(_SI+Yk8WPw{_IuH zUUlbH7kK|VFX+4~JAXE;`0V&hivCtKTuvxwRxapOt_d7eDvt_kx@xcX7gg!E)7 zpRhKwSo|&HIQjwLXfTbxJ}Cp!!CG)SXa{G30dPLJ99#je2KR!Oz#HHl@cIj{KmPE2 zw|(ZKzS}Ok?K9`x)^yP+BPVzEDJ#<(KK!$svN^1AkDhhj1UY`aWJm5C6KIOO+8|5a zU9*qOU2`@^-c_2mrKR)D_Iy6-aKH2Bn54u_C@E&P=BdWJ>|kTApU?O?#{3pE;}fg} zr-M&|E5WCLe1)sPXTde#T5vts25tm5frIfS=7SyCvF7HL;KOslhY=|w9{wemZN$Tf zZ13jb$zav*;{*QQ@b&2MZT7BoZ_^dM;iF5;9($Ye?PaET+pNWh78Sd3_RlLv`*3+Z zJ_*|x4=-`C*aU6{KLalUhrdWW1bhsf4L%QU2mc$q1PJ&&_F^6Ck+z{FbS6X^>ks6Vfk$x@J4 zk3zveCzs`{-x2>G1&1;BD?k`r3#1Ef0;f2}EC&r>JxGHL_^;rfz-z$Q89TXu6TJG9 zNBQ@)&+Fe+{JU_|$5xt2UF^xpd&=(>1@`3VRbF2#%M(qkoccGL<42YMBX15@I`WPz zb+|dk8yh!AUP`ml`e&5uY@KR*T&u*)(RdXff(`)ZEx`T{vm+|MI_H=pF(0kZ?-_h+_G@{|iIX|& z%(j|W(#Dfh`Xb3NyCe7PZWk?z=A6r)fMd02hL-KzqUZ z+y4>U!N1q^^snFgHws5&8}aa~V79{j`_6%YrD%8eOK1AF<;*;`tJ=!`#X08+y8pYy`+*tPe7E=mG*lmuu3la|*X)Cvc`L6aOS63*zRN}x zZVDWDA33lbQ}K7Zip_E}BP)DUO_NEQl<75L(?i=*Kl@=E?PtzeRa6=#>|HgzEDbVX zEOGUwX8F!tUoiD%#uPtw9#1jTNsax~nK6!8%Y6!T+220XP239FO^~Xq#l+3;cYU33 zxRx2FjS?Ny5F__UDi1XKzKMIX^rurz(HVG zAOW_5!RhRxajNRa2*lHR3(s5j47+u|0jj@@o!RU6Wp{;L`QL(OcGcE`)4?afmEcq0 zCU7wQaKHsXJ8zmQDTnVcNfID0drv#r`(S*&duZIP{BR?ipT1}B>3{Y<*jBzgLHe25 z*|MBK$leF*4BiLp&q4oH_m1L8F#o%}SDnQ<%G$OVj=!`_=u2!@fzN_#z_s9dunpV@ ze3_Xakeds+-|ETF&CqN=Mx}7bgYLNsX)YfMeDV13L6Hegwb*NjU%|bK#+eT#|0rpD zS9`r3A{5-q_B~J9czVL}W#%|_=1Ci;&Y_Z9e5w=<2`>&*nOn@c_MO=KuY-eY@_W_4 zwlBH)GwuCI+xTfyJopme;{F4&M1!Ze9=B zn|2pOJ=usO`7OCFx{>-cG;ixNi@&Q?0iWnxD8v zMss*SAYCP$gjs9k`cTC1;@TVnRJTsJ=q-oJY94Y>!8kx^defnKEBZbRJ_4G-Mc`WS zIdCVq3)~GJ0{;ZQ34RUq9z=bZJukEChN0Q*_V*C`d%$oE9oumNxoC2SC@#jM!3VK^ zqqMD{=jG<$-)RE4-}l^QhK7dpcNH^n?TdF@N5V`~wnO_Iwh(h;Z&R{E63o`!4z?1A zpT5JNK|E%!VzY-WXDBm;Smm!J+{cSABA!15!P(w(huHTB4a_u8s2PJNY|2b&iH7sE zk|NvotQ{&~lL?b>{t|F0xB_VLlY{XLcpe#a+_;Nrgwr6@ z4TtY(NaS1h_uaN~;w0M80G$f@JY0=zT?a0rCl>>`-0Gpf#QSbmK37XzcosYdd~V29 zAI%ZD?mjn4=;=s^BgGTI<(l%byTIj-i#7yY-VP8e9!iG(4d~horqF4$_tAM^OYZ1eK@b4)|~T=O-~R9}7Ee&(qI_BZoW2bv9==bLjY9rMTehnPb)Ei}cv zK|FuO;pWAXBaBW<=-lDG$!fb*^@~%EHT$nS*60Mv_YXMHJkxoy(K-A#SJasM!YfQI zf3$Vil+{LWt98moXJ_@-PKow)M(1)uQ`Z}923=aZ!E88TgPGd3!9>qL+vvQ++_S>w zbG02t@53+LZTg_xV)mW9H3;+l@|y>&)+~XMNA;&5qvh zu0H#5^U8)FnR{!VG9_pH*tB2twE5-v|7wnQerj}5_jKo36FL4_qZ2(Z)x2o*R|z_S zaAfx{%qe^P%IN&M-XZJ6LVM$D=IQd+%}e#K8=ZpeDEXb4y5%kNO3&M-YVj^R#&@Ha zwH0+Un#kWavfD(YY8DF>33RV_?OJYz{Ml{HnIAe~&*3LO4=T%7HQGg6E{(yDcFrVj z?d}-0e}wiFu~vF=e0J&+K@r zm@mKEEaxnJ;&S1|6F;+}*bYxEENNhx7E4c4qGaZ=gd<}WqwA0oW0wK9H8-yCJ6R5t zO}k^tL#*_dTypSI{ej&6_N(o(GPa_^h26PEj{!sMU1i69{5*}5FVBAb$Z*w}dY-;x z*WN6>ry280Q2`Z`|JORie0<>30`B?BYpiyuKTtj!mLRc{W|Qn zC;4q>Hn~sTHf&`%jFH2gY1+|mV6ODp_aB;jdRGz#aY`rbOic2QMYXx*LuQMuzb~7| zrEHqHkobFfC-M@KU60;KP_N$kXjY|t@(bbn#({Uxx~Rr6^%oKI(kE`;`KRXYnfF{< zW{y1k>(5ma_b>^PBc-aDs@ymf(@ts2zEZ5JXvv)TC?7Kzw{?27d z{a+@6_ZkE7L7`R#g<3Nd`t)&IxC$I7aG=0}0tX5lC~%;_fdU5#94K(0z<~k>K7bs^ z=l{!(EdI$4e{yTphh|=X6aIhYpYE$CZpx^*K78*=Ab*{J{T|mx?^9kd1hfb6Nx-2- za}Cg&JMA6F*S`bEm;VZoFMmJK+r9q=pY7_V5-K*zq`u_%4TGWR6CBEpY28z=w7?rpP zh~`^>{Piz;&q~w2$H-3@+N@%sAKlnuOVNBb%KHSNt=-=p(L2zw-#T>ZRjYjQFuQA^ z4;2zsxC$I7aG=0}0tX5lC~%;_fdU5#94K(0z<~k>{_Z&-|5N^@{7!j)@=fKn>V3U@ zY`v$~yLma9^26nm%g2^KDo;~Bz24!=cb8|W)3oy6N1x8ssaqYL;i#DPF6R?E;1I9? zyu$&Og@lKJMc{C-7*v2Gz>%O590jU?+*0|^#{iX;|Icw9vkV*ujt3_Io$6KkNrWeZ zQ^2W!qcmnYr~yiU8`OLEdKNwimrly*?|~f?vZr`boPyh(YaXXZd_GBrrcReMx%)N* zE9`^!^VFQxm*~ubB8R-VW9(@-_b;ivsND+o;_oiizT{TnWC|ZjrU$)qTMTBZw*JR68N!YliaPCm8>a?PG-@qtzTACE&pQv*4=K5Vs z`{H;hm~8txd*YveoHC~8yGPFn9{+9UC)t0UTl3p5GIjJ;XUUrRTkVZX*{y3Iw3pxZ zWc#lM&fBe4#?Sn2+8@8h-AjEh?Mrq)D7r4lr^3C zU;jHIYZ|O+)p<3d?3~tpm7iX9g89RTAN+I9wcVQ;h1?Ty;4iuU4^_6tk7NCBgs4Yd zGXeW;_)97i(V8p0u>QZd^_G g!+ZG+YJlCX=dW%57tSBCAIe6m^l&ZsOP@db55$o82LJ#7 literal 0 HcmV?d00001 diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/Release_Notes.html b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/Release_Notes.html new file mode 100644 index 00000000..633e42e3 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/Release_Notes.html @@ -0,0 +1,342 @@ + + + + + + + + + + + + +Release Notes for STM32F10x Standard Peripherals Library Drivers + + + + + +
    +


    +

    +
    + + + + + + +
    + + + + + + + + + +
    Back to Release page
    +

    Release +Notes for STM32F10x Standard Peripherals Library Drivers +(StdPeriph_Driver)

    +

    Copyright 2011 STMicroelectronics

    +

    +
    +

     

    + + + + + + +
    +

    Contents

    +
      +
    1. STM32F10x Standard Peripherals Library +Drivers update History
    2. +
    3. License
    4. +
    + + +

    STM32F10x Standard +Peripherals Library Drivers  update History


    +

    V3.5.0 / 11-March-2011

    +

    Main +Changes

    + +
      +
    • stm32f10x_can.h/.c files:
    • +
        +
      • Add 5 new functions
      • +
          +
        • 3 +new functions controlling the counter errors: CAN_GetLastErrorCode(), +CAN_GetReceiveErrorCounter() and CAN_GetLSBTransmitErrorCounter().
        • +
        +
          +
        • 1 new function to select the CAN operating mode: CAN_OperatingModeRequest().
        • +
        +
          +
        • 1 new function to support CAN TT mode: CAN_TTComModeCmd().
          +
        • +
        +
      • CAN_TransmitStatus() function updated to support all CAN transmit intermediate states
        +
      • +
      +
    • stm32f10x_i2c.h/.c files:
    • +
        +
      • Add 1 new function:
      • +
          +
        • I2C_NACKPositionConfig(): +This function configures the same bit (POS) as I2C_PECPositionConfig() +but is intended to be used in I2C mode while I2C_PECPositionConfig() is +intended to used in SMBUS mode.
        • +
        +
      +
    • stm32f10x_tim.h/.c files:
    • +
        +
      • Change the TIM_DMABurstLength_xBytes definitions to TIM_DMABurstLength_xTansfers
        +
      • +
      + + +
    + +

    3.4.0 +- 10/15/2010

    + +
      +
    1. General
    2. +
    + +
      +
    • Add support for STM32F10x High-density value line devices.
    • +
    + +
      +
    1. STM32F10x_StdPeriph_Driver
    2. +
    + + +
      + +
    • stm32f10x_bkp.h/.c
    • +
        +
      • Delete BKP registers definition from stm32f10x_bkp.c and use defines within stm32f10x.h file.
      • +
      +
    • stm32f10x_can.h/.c
    • +
        +
      • Delete CAN registers definition from stm32f10x_can.c and use defines within stm32f10x.h file.
        +
      • +
      • Update the wording of some defines and Asserts macro.
        +
      • +
      • CAN_GetFlagStatus() +and CAN_ClearFlag() functions: updated to support new flags (were not +supported in previous version). These flags are:  CAN_FLAG_RQCP0, +CAN_FLAG_RQCP1, CAN_FLAG_RQCP2, CAN_FLAG_FMP1, CAN_FLAG_FF1, +CAN_FLAG_FOV1, CAN_FLAG_FMP0, CAN_FLAG_FF0,   CAN_FLAG_FOV0, +CAN_FLAG_WKU, CAN_FLAG_SLAK and CAN_FLAG_LEC.
        +
      • +
      • CAN_GetITStatus() +function: add a check of the interrupt enable bit before getting the +status of corresponding interrupt pending bit.
        +
      • +
      • CAN_ClearITPendingBit() function: correct the procedure to clear the interrupt pending bit.
        +
      • +
      +
    • stm32f10x_crc.h/.c
    • +
        +
      • Delete CRC registers definition from stm32f10x_crc.c and use defines within stm32f10x.h file.
      • +
      +
    • stm32f10x_dac.h/.c
    • +
        +
      • Delete DAC registers definition from stm32f10x_dac.c and use defines within stm32f10x.h file.
      • +
      +
    • stm32f10x_dbgmcu.h/.c
    • +
        +
      • Delete DBGMCU registers definition from stm32f10x_dbgmcu.c and use defines within stm32f10x.h file.
      • +
      +
    • stm32f10x_dma.h/.c
    • +
        +
      • Delete DMA registers definition from stm32f10x_dma.c and use defines within stm32f10x.h file.
      • +
      • Add new function "void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber);"
        +
      • +
      +
    • stm32f10x_flash.h/.c
    • +
        +
      • FLASH functions (Erase and Program) updated to always clear the "PG", "MER" and "PER" bits even in case of TimeOut Error.
      • +
      +
    • stm32f10x_fsmc.h/.c
    • +
        +
      • Add new member "FSMC_AsynchronousWait" in "FSMC_NORSRAMInitTypeDef" structure.
      • +
      +
    • stm32f10x_gpio.h/.c
    • +
        +
      • GPIO_PinRemapConfig() function: add new values for GPIO_Remap parameter, to support new remap for TIM6, TIM7 and DAC DMA requests, TIM12 and DAC Triggers / DMA2_Channel5 Interrupt mapping.
      • +
      +
    • stm32f10x_pwr.h/.c
    • +
        +
      • Delete PWR registers definition from stm32f10x_pwr.c and use defines within stm32f10x.h and core_cm3.h files.
      • +
      +
    • stm32f10x_rtc.h/.c
    • +
        +
      • Delete RTC registers definition from stm32f10x_rtc.c and use defines within stm32f10x.h file.
      • +
      +
    • stm32f10x_spi.h/.c
    • +
        +
      • Add new definition for I2S Audio Clock frequencies "I2S_AudioFreq_192k".
      • +
      +
    • stm32f10x_tim.h/.c
    • +
      • Add new definition for TIM Input Capture Polarity "TIM_ICPolarity_BothEdge".
      + +
    + +

    3.3.0 +- 04/16/2010

    + +
    1. General
    +
    • Add support for STM32F10x XL-density devices.
    • I2C driver: events description and management enhancement.
    +
    1. STM32F10x_StdPeriph_Driver
    +
    • stm32f10x_dbgmcu.h/.c
      • DBGMCU_Config() function: add new values DBGMCU_TIMx_STOP (x: 9..14) for DBGMCU_Periph parameter.
    • stm32f10x_flash.h/.c: +updated to support Bank2 of XL-density devices (up to 1MByte of Flash +memory). For more details, refer to the description provided within +stm32f10x_flash.c file.
    • stm32f10x_gpio.h/.c
      • GPIO_PinRemapConfig() function: add new values for GPIO_Remap parameter, to support new remap for FSMC_NADV pin and TIM9..11,13,14.
    • stm32f10x_i2c.h/.c: I2C events description and management enhancement.
      • I2C_CheckEvent() +function: updated to check whether the last event contains the +I2C_EVENT  (instead of check whether the last event is equal to +I2C_EVENT)
      • Add +detailed description of I2C events and how to manage them using the +functions provided by this driver. For more information, refer to +stm32f10x_i2c.h and stm32f10x_i2c.c files.
    • stm32f10x_rcc.h/.c: updated to support TIM9..TIM14 APB clock and reset configuration
    • stm32f10x_tim.h/.c: updated to support new Timers TIM9..TIM14.
    • stm32f10x_sdio.h: 
      • SDIO_SetSDIOReadWaitMode() function: correct values of SDIO_ReadWaitMode parameter
        change
          +#define +SDIO_ReadWaitMode_CLK               +  ((uint32_t)0x00000000)
          #define +SDIO_ReadWaitMode_DATA2             +((uint32_t)0x00000001)
        by
          #define +SDIO_ReadWaitMode_CLK               +  ((uint32_t)0x00000001)
          #define +SDIO_ReadWaitMode_DATA2             +((uint32_t)0x00000000)
    +

    3.2.0 +- 03/01/2010

    +
      +
    1. General
    2. +
    +
      + +
    • Add support +for STM32 Low-density Value line (STM32F100x4/6) and +Medium-density Value line (STM32F100x8/B) devices.
    • +
    • Almost +peripherals drivers were updated to support Value +line devices features
    • +
    • Drivers limitations fix and enhancements.
    • + +
    +
      +
    1. STM32F10x_StdPeriph_Driver
    2. +
    +
      +
    • Add new +firmware driver for CEC peripheral: stm32f10x_cec.h and stm32f10x_cec.c
    • +
    • Timers drivers stm32f10x_tim.h/.c: add support for new General Purpose Timers: TIM15, TIM16 and TIM17.
    • +
    • RCC driver: add support for new Value peripherals: HDMI-CEC, TIM15, TIM16 and TIM17.
    • +
    • GPIO driver: add new remap parameters for TIM1, TIM15, TIM16, TIM17 and HDMI-CEC: GPIO_Remap_TIM1_DMA, GPIO_Remap_TIM15, GPIO_Remap_TIM16, GPIO_Remap_TIM17, GPIO_Remap_CEC.
    • +
    • USART +driver: add support for Oversampling by 8 mode and onebit method. 2 +functions has been added: USART_OverSampling8Cmd() and +USART_OneBitMethodCmd().
      +
    • +
    • DAC +driver: add new functions handling the DAC under run feature: +DAC_ITConfig(), DAC_GetFlagStatus(), DAC_ClearFlag(), DAC_GetITStatus() +and DAC_ClearITPendingBit().
    • +
    • DBGMCU driver: add new parameters for TIM15, TIM16 and TIM17: DBGMCU_TIM15_STOP, DBGMCU_TIM16_STOP, DBGMCU_TIM17_STOP.
      +
    • +
    • FLASH +driver: the FLASH_EraseOptionBytes() function updated. This is now just +erasing the option bytes without modifying the RDP status either +enabled or disabled.
    • +
    • PWR +driver: the PWR_EnterSTOPMode() function updated. When woken up from +STOP mode, this function resets again the SLEEPDEEP bit in the +Cortex-M3 System Control register to allow Sleep mode entering.
    • + + +
    +

    License

    +

    The +enclosed firmware and all the related documentation are not covered by +a License Agreement, if you need such License you can contact your +local STMicroelectronics office.

    +

    THE +PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO +SAVE TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR +ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY +CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY +CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH +THEIR PRODUCTS.

    +

     

    +
    +
    +

    For +complete documentation on STM32(CORTEX M3) 32-Bit Microcontrollers +visit www.st.com/STM32

    +
    +

    +
    +
    +

     

    +
    + \ No newline at end of file diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h new file mode 100644 index 00000000..7d401ca9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/misc.h @@ -0,0 +1,220 @@ +/** + ****************************************************************************** + * @file misc.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the miscellaneous + * firmware library functions (add-on to CMSIS functions). + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MISC_H +#define __MISC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup MISC + * @{ + */ + +/** @defgroup MISC_Exported_Types + * @{ + */ + +/** + * @brief NVIC Init Structure definition + */ + +typedef struct +{ + uint8_t NVIC_IRQChannel; /*!< Specifies the IRQ channel to be enabled or disabled. + This parameter can be a value of @ref IRQn_Type + (For the complete STM32 Devices IRQ Channels list, please + refer to stm32f10x.h file) */ + + uint8_t NVIC_IRQChannelPreemptionPriority; /*!< Specifies the pre-emption priority for the IRQ channel + specified in NVIC_IRQChannel. This parameter can be a value + between 0 and 15 as described in the table @ref NVIC_Priority_Table */ + + uint8_t NVIC_IRQChannelSubPriority; /*!< Specifies the subpriority level for the IRQ channel specified + in NVIC_IRQChannel. This parameter can be a value + between 0 and 15 as described in the table @ref NVIC_Priority_Table */ + + FunctionalState NVIC_IRQChannelCmd; /*!< Specifies whether the IRQ channel defined in NVIC_IRQChannel + will be enabled or disabled. + This parameter can be set either to ENABLE or DISABLE */ +} NVIC_InitTypeDef; + +/** + * @} + */ + +/** @defgroup NVIC_Priority_Table + * @{ + */ + +/** +@code + The table below gives the allowed values of the pre-emption priority and subpriority according + to the Priority Grouping configuration performed by NVIC_PriorityGroupConfig function + ============================================================================================================================ + NVIC_PriorityGroup | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority | Description + ============================================================================================================================ + NVIC_PriorityGroup_0 | 0 | 0-15 | 0 bits for pre-emption priority + | | | 4 bits for subpriority + ---------------------------------------------------------------------------------------------------------------------------- + NVIC_PriorityGroup_1 | 0-1 | 0-7 | 1 bits for pre-emption priority + | | | 3 bits for subpriority + ---------------------------------------------------------------------------------------------------------------------------- + NVIC_PriorityGroup_2 | 0-3 | 0-3 | 2 bits for pre-emption priority + | | | 2 bits for subpriority + ---------------------------------------------------------------------------------------------------------------------------- + NVIC_PriorityGroup_3 | 0-7 | 0-1 | 3 bits for pre-emption priority + | | | 1 bits for subpriority + ---------------------------------------------------------------------------------------------------------------------------- + NVIC_PriorityGroup_4 | 0-15 | 0 | 4 bits for pre-emption priority + | | | 0 bits for subpriority + ============================================================================================================================ +@endcode +*/ + +/** + * @} + */ + +/** @defgroup MISC_Exported_Constants + * @{ + */ + +/** @defgroup Vector_Table_Base + * @{ + */ + +#define NVIC_VectTab_RAM ((uint32_t)0x20000000) +#define NVIC_VectTab_FLASH ((uint32_t)0x08000000) +#define IS_NVIC_VECTTAB(VECTTAB) (((VECTTAB) == NVIC_VectTab_RAM) || \ + ((VECTTAB) == NVIC_VectTab_FLASH)) +/** + * @} + */ + +/** @defgroup System_Low_Power + * @{ + */ + +#define NVIC_LP_SEVONPEND ((uint8_t)0x10) +#define NVIC_LP_SLEEPDEEP ((uint8_t)0x04) +#define NVIC_LP_SLEEPONEXIT ((uint8_t)0x02) +#define IS_NVIC_LP(LP) (((LP) == NVIC_LP_SEVONPEND) || \ + ((LP) == NVIC_LP_SLEEPDEEP) || \ + ((LP) == NVIC_LP_SLEEPONEXIT)) +/** + * @} + */ + +/** @defgroup Preemption_Priority_Group + * @{ + */ + +#define NVIC_PriorityGroup_0 ((uint32_t)0x700) /*!< 0 bits for pre-emption priority + 4 bits for subpriority */ +#define NVIC_PriorityGroup_1 ((uint32_t)0x600) /*!< 1 bits for pre-emption priority + 3 bits for subpriority */ +#define NVIC_PriorityGroup_2 ((uint32_t)0x500) /*!< 2 bits for pre-emption priority + 2 bits for subpriority */ +#define NVIC_PriorityGroup_3 ((uint32_t)0x400) /*!< 3 bits for pre-emption priority + 1 bits for subpriority */ +#define NVIC_PriorityGroup_4 ((uint32_t)0x300) /*!< 4 bits for pre-emption priority + 0 bits for subpriority */ + +#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PriorityGroup_0) || \ + ((GROUP) == NVIC_PriorityGroup_1) || \ + ((GROUP) == NVIC_PriorityGroup_2) || \ + ((GROUP) == NVIC_PriorityGroup_3) || \ + ((GROUP) == NVIC_PriorityGroup_4)) + +#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x10) + +#define IS_NVIC_SUB_PRIORITY(PRIORITY) ((PRIORITY) < 0x10) + +#define IS_NVIC_OFFSET(OFFSET) ((OFFSET) < 0x000FFFFF) + +/** + * @} + */ + +/** @defgroup SysTick_clock_source + * @{ + */ + +#define SysTick_CLKSource_HCLK_Div8 ((uint32_t)0xFFFFFFFB) +#define SysTick_CLKSource_HCLK ((uint32_t)0x00000004) +#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SysTick_CLKSource_HCLK) || \ + ((SOURCE) == SysTick_CLKSource_HCLK_Div8)) +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup MISC_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup MISC_Exported_Functions + * @{ + */ + +void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup); +void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct); +void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset); +void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState); +void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource); + +#ifdef __cplusplus +} +#endif + +#endif /* __MISC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h new file mode 100644 index 00000000..d1b2653a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h @@ -0,0 +1,483 @@ +/** + ****************************************************************************** + * @file stm32f10x_adc.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the ADC firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_ADC_H +#define __STM32F10x_ADC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup ADC + * @{ + */ + +/** @defgroup ADC_Exported_Types + * @{ + */ + +/** + * @brief ADC Init structure definition + */ + +typedef struct +{ + uint32_t ADC_Mode; /*!< Configures the ADC to operate in independent or + dual mode. + This parameter can be a value of @ref ADC_mode */ + + FunctionalState ADC_ScanConvMode; /*!< Specifies whether the conversion is performed in + Scan (multichannels) or Single (one channel) mode. + This parameter can be set to ENABLE or DISABLE */ + + FunctionalState ADC_ContinuousConvMode; /*!< Specifies whether the conversion is performed in + Continuous or Single mode. + This parameter can be set to ENABLE or DISABLE. */ + + uint32_t ADC_ExternalTrigConv; /*!< Defines the external trigger used to start the analog + to digital conversion of regular channels. This parameter + can be a value of @ref ADC_external_trigger_sources_for_regular_channels_conversion */ + + uint32_t ADC_DataAlign; /*!< Specifies whether the ADC data alignment is left or right. + This parameter can be a value of @ref ADC_data_align */ + + uint8_t ADC_NbrOfChannel; /*!< Specifies the number of ADC channels that will be converted + using the sequencer for regular channel group. + This parameter must range from 1 to 16. */ +}ADC_InitTypeDef; +/** + * @} + */ + +/** @defgroup ADC_Exported_Constants + * @{ + */ + +#define IS_ADC_ALL_PERIPH(PERIPH) (((PERIPH) == ADC1) || \ + ((PERIPH) == ADC2) || \ + ((PERIPH) == ADC3)) + +#define IS_ADC_DMA_PERIPH(PERIPH) (((PERIPH) == ADC1) || \ + ((PERIPH) == ADC3)) + +/** @defgroup ADC_mode + * @{ + */ + +#define ADC_Mode_Independent ((uint32_t)0x00000000) +#define ADC_Mode_RegInjecSimult ((uint32_t)0x00010000) +#define ADC_Mode_RegSimult_AlterTrig ((uint32_t)0x00020000) +#define ADC_Mode_InjecSimult_FastInterl ((uint32_t)0x00030000) +#define ADC_Mode_InjecSimult_SlowInterl ((uint32_t)0x00040000) +#define ADC_Mode_InjecSimult ((uint32_t)0x00050000) +#define ADC_Mode_RegSimult ((uint32_t)0x00060000) +#define ADC_Mode_FastInterl ((uint32_t)0x00070000) +#define ADC_Mode_SlowInterl ((uint32_t)0x00080000) +#define ADC_Mode_AlterTrig ((uint32_t)0x00090000) + +#define IS_ADC_MODE(MODE) (((MODE) == ADC_Mode_Independent) || \ + ((MODE) == ADC_Mode_RegInjecSimult) || \ + ((MODE) == ADC_Mode_RegSimult_AlterTrig) || \ + ((MODE) == ADC_Mode_InjecSimult_FastInterl) || \ + ((MODE) == ADC_Mode_InjecSimult_SlowInterl) || \ + ((MODE) == ADC_Mode_InjecSimult) || \ + ((MODE) == ADC_Mode_RegSimult) || \ + ((MODE) == ADC_Mode_FastInterl) || \ + ((MODE) == ADC_Mode_SlowInterl) || \ + ((MODE) == ADC_Mode_AlterTrig)) +/** + * @} + */ + +/** @defgroup ADC_external_trigger_sources_for_regular_channels_conversion + * @{ + */ + +#define ADC_ExternalTrigConv_T1_CC1 ((uint32_t)0x00000000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigConv_T1_CC2 ((uint32_t)0x00020000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigConv_T2_CC2 ((uint32_t)0x00060000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigConv_T3_TRGO ((uint32_t)0x00080000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigConv_T4_CC4 ((uint32_t)0x000A0000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO ((uint32_t)0x000C0000) /*!< For ADC1 and ADC2 */ + +#define ADC_ExternalTrigConv_T1_CC3 ((uint32_t)0x00040000) /*!< For ADC1, ADC2 and ADC3 */ +#define ADC_ExternalTrigConv_None ((uint32_t)0x000E0000) /*!< For ADC1, ADC2 and ADC3 */ + +#define ADC_ExternalTrigConv_T3_CC1 ((uint32_t)0x00000000) /*!< For ADC3 only */ +#define ADC_ExternalTrigConv_T2_CC3 ((uint32_t)0x00020000) /*!< For ADC3 only */ +#define ADC_ExternalTrigConv_T8_CC1 ((uint32_t)0x00060000) /*!< For ADC3 only */ +#define ADC_ExternalTrigConv_T8_TRGO ((uint32_t)0x00080000) /*!< For ADC3 only */ +#define ADC_ExternalTrigConv_T5_CC1 ((uint32_t)0x000A0000) /*!< For ADC3 only */ +#define ADC_ExternalTrigConv_T5_CC3 ((uint32_t)0x000C0000) /*!< For ADC3 only */ + +#define IS_ADC_EXT_TRIG(REGTRIG) (((REGTRIG) == ADC_ExternalTrigConv_T1_CC1) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T1_CC2) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T1_CC3) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T2_CC2) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T3_TRGO) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T4_CC4) || \ + ((REGTRIG) == ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO) || \ + ((REGTRIG) == ADC_ExternalTrigConv_None) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T3_CC1) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T2_CC3) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T8_CC1) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T8_TRGO) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T5_CC1) || \ + ((REGTRIG) == ADC_ExternalTrigConv_T5_CC3)) +/** + * @} + */ + +/** @defgroup ADC_data_align + * @{ + */ + +#define ADC_DataAlign_Right ((uint32_t)0x00000000) +#define ADC_DataAlign_Left ((uint32_t)0x00000800) +#define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DataAlign_Right) || \ + ((ALIGN) == ADC_DataAlign_Left)) +/** + * @} + */ + +/** @defgroup ADC_channels + * @{ + */ + +#define ADC_Channel_0 ((uint8_t)0x00) +#define ADC_Channel_1 ((uint8_t)0x01) +#define ADC_Channel_2 ((uint8_t)0x02) +#define ADC_Channel_3 ((uint8_t)0x03) +#define ADC_Channel_4 ((uint8_t)0x04) +#define ADC_Channel_5 ((uint8_t)0x05) +#define ADC_Channel_6 ((uint8_t)0x06) +#define ADC_Channel_7 ((uint8_t)0x07) +#define ADC_Channel_8 ((uint8_t)0x08) +#define ADC_Channel_9 ((uint8_t)0x09) +#define ADC_Channel_10 ((uint8_t)0x0A) +#define ADC_Channel_11 ((uint8_t)0x0B) +#define ADC_Channel_12 ((uint8_t)0x0C) +#define ADC_Channel_13 ((uint8_t)0x0D) +#define ADC_Channel_14 ((uint8_t)0x0E) +#define ADC_Channel_15 ((uint8_t)0x0F) +#define ADC_Channel_16 ((uint8_t)0x10) +#define ADC_Channel_17 ((uint8_t)0x11) + +#define ADC_Channel_TempSensor ((uint8_t)ADC_Channel_16) +#define ADC_Channel_Vrefint ((uint8_t)ADC_Channel_17) + +#define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_Channel_0) || ((CHANNEL) == ADC_Channel_1) || \ + ((CHANNEL) == ADC_Channel_2) || ((CHANNEL) == ADC_Channel_3) || \ + ((CHANNEL) == ADC_Channel_4) || ((CHANNEL) == ADC_Channel_5) || \ + ((CHANNEL) == ADC_Channel_6) || ((CHANNEL) == ADC_Channel_7) || \ + ((CHANNEL) == ADC_Channel_8) || ((CHANNEL) == ADC_Channel_9) || \ + ((CHANNEL) == ADC_Channel_10) || ((CHANNEL) == ADC_Channel_11) || \ + ((CHANNEL) == ADC_Channel_12) || ((CHANNEL) == ADC_Channel_13) || \ + ((CHANNEL) == ADC_Channel_14) || ((CHANNEL) == ADC_Channel_15) || \ + ((CHANNEL) == ADC_Channel_16) || ((CHANNEL) == ADC_Channel_17)) +/** + * @} + */ + +/** @defgroup ADC_sampling_time + * @{ + */ + +#define ADC_SampleTime_1Cycles5 ((uint8_t)0x00) +#define ADC_SampleTime_7Cycles5 ((uint8_t)0x01) +#define ADC_SampleTime_13Cycles5 ((uint8_t)0x02) +#define ADC_SampleTime_28Cycles5 ((uint8_t)0x03) +#define ADC_SampleTime_41Cycles5 ((uint8_t)0x04) +#define ADC_SampleTime_55Cycles5 ((uint8_t)0x05) +#define ADC_SampleTime_71Cycles5 ((uint8_t)0x06) +#define ADC_SampleTime_239Cycles5 ((uint8_t)0x07) +#define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SampleTime_1Cycles5) || \ + ((TIME) == ADC_SampleTime_7Cycles5) || \ + ((TIME) == ADC_SampleTime_13Cycles5) || \ + ((TIME) == ADC_SampleTime_28Cycles5) || \ + ((TIME) == ADC_SampleTime_41Cycles5) || \ + ((TIME) == ADC_SampleTime_55Cycles5) || \ + ((TIME) == ADC_SampleTime_71Cycles5) || \ + ((TIME) == ADC_SampleTime_239Cycles5)) +/** + * @} + */ + +/** @defgroup ADC_external_trigger_sources_for_injected_channels_conversion + * @{ + */ + +#define ADC_ExternalTrigInjecConv_T2_TRGO ((uint32_t)0x00002000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigInjecConv_T2_CC1 ((uint32_t)0x00003000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigInjecConv_T3_CC4 ((uint32_t)0x00004000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigInjecConv_T4_TRGO ((uint32_t)0x00005000) /*!< For ADC1 and ADC2 */ +#define ADC_ExternalTrigInjecConv_Ext_IT15_TIM8_CC4 ((uint32_t)0x00006000) /*!< For ADC1 and ADC2 */ + +#define ADC_ExternalTrigInjecConv_T1_TRGO ((uint32_t)0x00000000) /*!< For ADC1, ADC2 and ADC3 */ +#define ADC_ExternalTrigInjecConv_T1_CC4 ((uint32_t)0x00001000) /*!< For ADC1, ADC2 and ADC3 */ +#define ADC_ExternalTrigInjecConv_None ((uint32_t)0x00007000) /*!< For ADC1, ADC2 and ADC3 */ + +#define ADC_ExternalTrigInjecConv_T4_CC3 ((uint32_t)0x00002000) /*!< For ADC3 only */ +#define ADC_ExternalTrigInjecConv_T8_CC2 ((uint32_t)0x00003000) /*!< For ADC3 only */ +#define ADC_ExternalTrigInjecConv_T8_CC4 ((uint32_t)0x00004000) /*!< For ADC3 only */ +#define ADC_ExternalTrigInjecConv_T5_TRGO ((uint32_t)0x00005000) /*!< For ADC3 only */ +#define ADC_ExternalTrigInjecConv_T5_CC4 ((uint32_t)0x00006000) /*!< For ADC3 only */ + +#define IS_ADC_EXT_INJEC_TRIG(INJTRIG) (((INJTRIG) == ADC_ExternalTrigInjecConv_T1_TRGO) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T1_CC4) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T2_TRGO) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T2_CC1) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T3_CC4) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T4_TRGO) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_Ext_IT15_TIM8_CC4) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_None) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T4_CC3) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T8_CC2) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T8_CC4) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T5_TRGO) || \ + ((INJTRIG) == ADC_ExternalTrigInjecConv_T5_CC4)) +/** + * @} + */ + +/** @defgroup ADC_injected_channel_selection + * @{ + */ + +#define ADC_InjectedChannel_1 ((uint8_t)0x14) +#define ADC_InjectedChannel_2 ((uint8_t)0x18) +#define ADC_InjectedChannel_3 ((uint8_t)0x1C) +#define ADC_InjectedChannel_4 ((uint8_t)0x20) +#define IS_ADC_INJECTED_CHANNEL(CHANNEL) (((CHANNEL) == ADC_InjectedChannel_1) || \ + ((CHANNEL) == ADC_InjectedChannel_2) || \ + ((CHANNEL) == ADC_InjectedChannel_3) || \ + ((CHANNEL) == ADC_InjectedChannel_4)) +/** + * @} + */ + +/** @defgroup ADC_analog_watchdog_selection + * @{ + */ + +#define ADC_AnalogWatchdog_SingleRegEnable ((uint32_t)0x00800200) +#define ADC_AnalogWatchdog_SingleInjecEnable ((uint32_t)0x00400200) +#define ADC_AnalogWatchdog_SingleRegOrInjecEnable ((uint32_t)0x00C00200) +#define ADC_AnalogWatchdog_AllRegEnable ((uint32_t)0x00800000) +#define ADC_AnalogWatchdog_AllInjecEnable ((uint32_t)0x00400000) +#define ADC_AnalogWatchdog_AllRegAllInjecEnable ((uint32_t)0x00C00000) +#define ADC_AnalogWatchdog_None ((uint32_t)0x00000000) + +#define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) (((WATCHDOG) == ADC_AnalogWatchdog_SingleRegEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_SingleInjecEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_SingleRegOrInjecEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_AllRegEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_AllInjecEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_AllRegAllInjecEnable) || \ + ((WATCHDOG) == ADC_AnalogWatchdog_None)) +/** + * @} + */ + +/** @defgroup ADC_interrupts_definition + * @{ + */ + +#define ADC_IT_EOC ((uint16_t)0x0220) +#define ADC_IT_AWD ((uint16_t)0x0140) +#define ADC_IT_JEOC ((uint16_t)0x0480) + +#define IS_ADC_IT(IT) ((((IT) & (uint16_t)0xF81F) == 0x00) && ((IT) != 0x00)) + +#define IS_ADC_GET_IT(IT) (((IT) == ADC_IT_EOC) || ((IT) == ADC_IT_AWD) || \ + ((IT) == ADC_IT_JEOC)) +/** + * @} + */ + +/** @defgroup ADC_flags_definition + * @{ + */ + +#define ADC_FLAG_AWD ((uint8_t)0x01) +#define ADC_FLAG_EOC ((uint8_t)0x02) +#define ADC_FLAG_JEOC ((uint8_t)0x04) +#define ADC_FLAG_JSTRT ((uint8_t)0x08) +#define ADC_FLAG_STRT ((uint8_t)0x10) +#define IS_ADC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint8_t)0xE0) == 0x00) && ((FLAG) != 0x00)) +#define IS_ADC_GET_FLAG(FLAG) (((FLAG) == ADC_FLAG_AWD) || ((FLAG) == ADC_FLAG_EOC) || \ + ((FLAG) == ADC_FLAG_JEOC) || ((FLAG)== ADC_FLAG_JSTRT) || \ + ((FLAG) == ADC_FLAG_STRT)) +/** + * @} + */ + +/** @defgroup ADC_thresholds + * @{ + */ + +#define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= 0xFFF) + +/** + * @} + */ + +/** @defgroup ADC_injected_offset + * @{ + */ + +#define IS_ADC_OFFSET(OFFSET) ((OFFSET) <= 0xFFF) + +/** + * @} + */ + +/** @defgroup ADC_injected_length + * @{ + */ + +#define IS_ADC_INJECTED_LENGTH(LENGTH) (((LENGTH) >= 0x1) && ((LENGTH) <= 0x4)) + +/** + * @} + */ + +/** @defgroup ADC_injected_rank + * @{ + */ + +#define IS_ADC_INJECTED_RANK(RANK) (((RANK) >= 0x1) && ((RANK) <= 0x4)) + +/** + * @} + */ + + +/** @defgroup ADC_regular_length + * @{ + */ + +#define IS_ADC_REGULAR_LENGTH(LENGTH) (((LENGTH) >= 0x1) && ((LENGTH) <= 0x10)) +/** + * @} + */ + +/** @defgroup ADC_regular_rank + * @{ + */ + +#define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= 0x1) && ((RANK) <= 0x10)) + +/** + * @} + */ + +/** @defgroup ADC_regular_discontinuous_mode_number + * @{ + */ + +#define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= 0x1) && ((NUMBER) <= 0x8)) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup ADC_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup ADC_Exported_Functions + * @{ + */ + +void ADC_DeInit(ADC_TypeDef* ADCx); +void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct); +void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct); +void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState); +void ADC_ResetCalibration(ADC_TypeDef* ADCx); +FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx); +void ADC_StartCalibration(ADC_TypeDef* ADCx); +FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx); +void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx); +void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number); +void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime); +void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx); +uint32_t ADC_GetDualModeConversionValue(void); +void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv); +void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx); +void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime); +void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length); +void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset); +uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel); +void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog); +void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold); +void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel); +void ADC_TempSensorVrefintCmd(FunctionalState NewState); +FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG); +void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG); +ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT); +void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F10x_ADC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h new file mode 100644 index 00000000..b620753e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h @@ -0,0 +1,195 @@ +/** + ****************************************************************************** + * @file stm32f10x_bkp.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the BKP firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_BKP_H +#define __STM32F10x_BKP_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup BKP + * @{ + */ + +/** @defgroup BKP_Exported_Types + * @{ + */ + +/** + * @} + */ + +/** @defgroup BKP_Exported_Constants + * @{ + */ + +/** @defgroup Tamper_Pin_active_level + * @{ + */ + +#define BKP_TamperPinLevel_High ((uint16_t)0x0000) +#define BKP_TamperPinLevel_Low ((uint16_t)0x0001) +#define IS_BKP_TAMPER_PIN_LEVEL(LEVEL) (((LEVEL) == BKP_TamperPinLevel_High) || \ + ((LEVEL) == BKP_TamperPinLevel_Low)) +/** + * @} + */ + +/** @defgroup RTC_output_source_to_output_on_the_Tamper_pin + * @{ + */ + +#define BKP_RTCOutputSource_None ((uint16_t)0x0000) +#define BKP_RTCOutputSource_CalibClock ((uint16_t)0x0080) +#define BKP_RTCOutputSource_Alarm ((uint16_t)0x0100) +#define BKP_RTCOutputSource_Second ((uint16_t)0x0300) +#define IS_BKP_RTC_OUTPUT_SOURCE(SOURCE) (((SOURCE) == BKP_RTCOutputSource_None) || \ + ((SOURCE) == BKP_RTCOutputSource_CalibClock) || \ + ((SOURCE) == BKP_RTCOutputSource_Alarm) || \ + ((SOURCE) == BKP_RTCOutputSource_Second)) +/** + * @} + */ + +/** @defgroup Data_Backup_Register + * @{ + */ + +#define BKP_DR1 ((uint16_t)0x0004) +#define BKP_DR2 ((uint16_t)0x0008) +#define BKP_DR3 ((uint16_t)0x000C) +#define BKP_DR4 ((uint16_t)0x0010) +#define BKP_DR5 ((uint16_t)0x0014) +#define BKP_DR6 ((uint16_t)0x0018) +#define BKP_DR7 ((uint16_t)0x001C) +#define BKP_DR8 ((uint16_t)0x0020) +#define BKP_DR9 ((uint16_t)0x0024) +#define BKP_DR10 ((uint16_t)0x0028) +#define BKP_DR11 ((uint16_t)0x0040) +#define BKP_DR12 ((uint16_t)0x0044) +#define BKP_DR13 ((uint16_t)0x0048) +#define BKP_DR14 ((uint16_t)0x004C) +#define BKP_DR15 ((uint16_t)0x0050) +#define BKP_DR16 ((uint16_t)0x0054) +#define BKP_DR17 ((uint16_t)0x0058) +#define BKP_DR18 ((uint16_t)0x005C) +#define BKP_DR19 ((uint16_t)0x0060) +#define BKP_DR20 ((uint16_t)0x0064) +#define BKP_DR21 ((uint16_t)0x0068) +#define BKP_DR22 ((uint16_t)0x006C) +#define BKP_DR23 ((uint16_t)0x0070) +#define BKP_DR24 ((uint16_t)0x0074) +#define BKP_DR25 ((uint16_t)0x0078) +#define BKP_DR26 ((uint16_t)0x007C) +#define BKP_DR27 ((uint16_t)0x0080) +#define BKP_DR28 ((uint16_t)0x0084) +#define BKP_DR29 ((uint16_t)0x0088) +#define BKP_DR30 ((uint16_t)0x008C) +#define BKP_DR31 ((uint16_t)0x0090) +#define BKP_DR32 ((uint16_t)0x0094) +#define BKP_DR33 ((uint16_t)0x0098) +#define BKP_DR34 ((uint16_t)0x009C) +#define BKP_DR35 ((uint16_t)0x00A0) +#define BKP_DR36 ((uint16_t)0x00A4) +#define BKP_DR37 ((uint16_t)0x00A8) +#define BKP_DR38 ((uint16_t)0x00AC) +#define BKP_DR39 ((uint16_t)0x00B0) +#define BKP_DR40 ((uint16_t)0x00B4) +#define BKP_DR41 ((uint16_t)0x00B8) +#define BKP_DR42 ((uint16_t)0x00BC) + +#define IS_BKP_DR(DR) (((DR) == BKP_DR1) || ((DR) == BKP_DR2) || ((DR) == BKP_DR3) || \ + ((DR) == BKP_DR4) || ((DR) == BKP_DR5) || ((DR) == BKP_DR6) || \ + ((DR) == BKP_DR7) || ((DR) == BKP_DR8) || ((DR) == BKP_DR9) || \ + ((DR) == BKP_DR10) || ((DR) == BKP_DR11) || ((DR) == BKP_DR12) || \ + ((DR) == BKP_DR13) || ((DR) == BKP_DR14) || ((DR) == BKP_DR15) || \ + ((DR) == BKP_DR16) || ((DR) == BKP_DR17) || ((DR) == BKP_DR18) || \ + ((DR) == BKP_DR19) || ((DR) == BKP_DR20) || ((DR) == BKP_DR21) || \ + ((DR) == BKP_DR22) || ((DR) == BKP_DR23) || ((DR) == BKP_DR24) || \ + ((DR) == BKP_DR25) || ((DR) == BKP_DR26) || ((DR) == BKP_DR27) || \ + ((DR) == BKP_DR28) || ((DR) == BKP_DR29) || ((DR) == BKP_DR30) || \ + ((DR) == BKP_DR31) || ((DR) == BKP_DR32) || ((DR) == BKP_DR33) || \ + ((DR) == BKP_DR34) || ((DR) == BKP_DR35) || ((DR) == BKP_DR36) || \ + ((DR) == BKP_DR37) || ((DR) == BKP_DR38) || ((DR) == BKP_DR39) || \ + ((DR) == BKP_DR40) || ((DR) == BKP_DR41) || ((DR) == BKP_DR42)) + +#define IS_BKP_CALIBRATION_VALUE(VALUE) ((VALUE) <= 0x7F) +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup BKP_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup BKP_Exported_Functions + * @{ + */ + +void BKP_DeInit(void); +void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel); +void BKP_TamperPinCmd(FunctionalState NewState); +void BKP_ITConfig(FunctionalState NewState); +void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource); +void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue); +void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data); +uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR); +FlagStatus BKP_GetFlagStatus(void); +void BKP_ClearFlag(void); +ITStatus BKP_GetITStatus(void); +void BKP_ClearITPendingBit(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_BKP_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h new file mode 100644 index 00000000..648f747c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h @@ -0,0 +1,697 @@ +/** + ****************************************************************************** + * @file stm32f10x_can.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the CAN firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_CAN_H +#define __STM32F10x_CAN_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup CAN + * @{ + */ + +/** @defgroup CAN_Exported_Types + * @{ + */ + +#define IS_CAN_ALL_PERIPH(PERIPH) (((PERIPH) == CAN1) || \ + ((PERIPH) == CAN2)) + +/** + * @brief CAN init structure definition + */ + +typedef struct +{ + uint16_t CAN_Prescaler; /*!< Specifies the length of a time quantum. + It ranges from 1 to 1024. */ + + uint8_t CAN_Mode; /*!< Specifies the CAN operating mode. + This parameter can be a value of + @ref CAN_operating_mode */ + + uint8_t CAN_SJW; /*!< Specifies the maximum number of time quanta + the CAN hardware is allowed to lengthen or + shorten a bit to perform resynchronization. + This parameter can be a value of + @ref CAN_synchronisation_jump_width */ + + uint8_t CAN_BS1; /*!< Specifies the number of time quanta in Bit + Segment 1. This parameter can be a value of + @ref CAN_time_quantum_in_bit_segment_1 */ + + uint8_t CAN_BS2; /*!< Specifies the number of time quanta in Bit + Segment 2. + This parameter can be a value of + @ref CAN_time_quantum_in_bit_segment_2 */ + + FunctionalState CAN_TTCM; /*!< Enable or disable the time triggered + communication mode. This parameter can be set + either to ENABLE or DISABLE. */ + + FunctionalState CAN_ABOM; /*!< Enable or disable the automatic bus-off + management. This parameter can be set either + to ENABLE or DISABLE. */ + + FunctionalState CAN_AWUM; /*!< Enable or disable the automatic wake-up mode. + This parameter can be set either to ENABLE or + DISABLE. */ + + FunctionalState CAN_NART; /*!< Enable or disable the no-automatic + retransmission mode. This parameter can be + set either to ENABLE or DISABLE. */ + + FunctionalState CAN_RFLM; /*!< Enable or disable the Receive FIFO Locked mode. + This parameter can be set either to ENABLE + or DISABLE. */ + + FunctionalState CAN_TXFP; /*!< Enable or disable the transmit FIFO priority. + This parameter can be set either to ENABLE + or DISABLE. */ +} CAN_InitTypeDef; + +/** + * @brief CAN filter init structure definition + */ + +typedef struct +{ + uint16_t CAN_FilterIdHigh; /*!< Specifies the filter identification number (MSBs for a 32-bit + configuration, first one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterIdLow; /*!< Specifies the filter identification number (LSBs for a 32-bit + configuration, second one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterMaskIdHigh; /*!< Specifies the filter mask number or identification number, + according to the mode (MSBs for a 32-bit configuration, + first one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterMaskIdLow; /*!< Specifies the filter mask number or identification number, + according to the mode (LSBs for a 32-bit configuration, + second one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterFIFOAssignment; /*!< Specifies the FIFO (0 or 1) which will be assigned to the filter. + This parameter can be a value of @ref CAN_filter_FIFO */ + + uint8_t CAN_FilterNumber; /*!< Specifies the filter which will be initialized. It ranges from 0 to 13. */ + + uint8_t CAN_FilterMode; /*!< Specifies the filter mode to be initialized. + This parameter can be a value of @ref CAN_filter_mode */ + + uint8_t CAN_FilterScale; /*!< Specifies the filter scale. + This parameter can be a value of @ref CAN_filter_scale */ + + FunctionalState CAN_FilterActivation; /*!< Enable or disable the filter. + This parameter can be set either to ENABLE or DISABLE. */ +} CAN_FilterInitTypeDef; + +/** + * @brief CAN Tx message structure definition + */ + +typedef struct +{ + uint32_t StdId; /*!< Specifies the standard identifier. + This parameter can be a value between 0 to 0x7FF. */ + + uint32_t ExtId; /*!< Specifies the extended identifier. + This parameter can be a value between 0 to 0x1FFFFFFF. */ + + uint8_t IDE; /*!< Specifies the type of identifier for the message that + will be transmitted. This parameter can be a value + of @ref CAN_identifier_type */ + + uint8_t RTR; /*!< Specifies the type of frame for the message that will + be transmitted. This parameter can be a value of + @ref CAN_remote_transmission_request */ + + uint8_t DLC; /*!< Specifies the length of the frame that will be + transmitted. This parameter can be a value between + 0 to 8 */ + + uint8_t Data[8]; /*!< Contains the data to be transmitted. It ranges from 0 + to 0xFF. */ +} CanTxMsg; + +/** + * @brief CAN Rx message structure definition + */ + +typedef struct +{ + uint32_t StdId; /*!< Specifies the standard identifier. + This parameter can be a value between 0 to 0x7FF. */ + + uint32_t ExtId; /*!< Specifies the extended identifier. + This parameter can be a value between 0 to 0x1FFFFFFF. */ + + uint8_t IDE; /*!< Specifies the type of identifier for the message that + will be received. This parameter can be a value of + @ref CAN_identifier_type */ + + uint8_t RTR; /*!< Specifies the type of frame for the received message. + This parameter can be a value of + @ref CAN_remote_transmission_request */ + + uint8_t DLC; /*!< Specifies the length of the frame that will be received. + This parameter can be a value between 0 to 8 */ + + uint8_t Data[8]; /*!< Contains the data to be received. It ranges from 0 to + 0xFF. */ + + uint8_t FMI; /*!< Specifies the index of the filter the message stored in + the mailbox passes through. This parameter can be a + value between 0 to 0xFF */ +} CanRxMsg; + +/** + * @} + */ + +/** @defgroup CAN_Exported_Constants + * @{ + */ + +/** @defgroup CAN_sleep_constants + * @{ + */ + +#define CAN_InitStatus_Failed ((uint8_t)0x00) /*!< CAN initialization failed */ +#define CAN_InitStatus_Success ((uint8_t)0x01) /*!< CAN initialization OK */ + +/** + * @} + */ + +/** @defgroup CAN_Mode + * @{ + */ + +#define CAN_Mode_Normal ((uint8_t)0x00) /*!< normal mode */ +#define CAN_Mode_LoopBack ((uint8_t)0x01) /*!< loopback mode */ +#define CAN_Mode_Silent ((uint8_t)0x02) /*!< silent mode */ +#define CAN_Mode_Silent_LoopBack ((uint8_t)0x03) /*!< loopback combined with silent mode */ + +#define IS_CAN_MODE(MODE) (((MODE) == CAN_Mode_Normal) || \ + ((MODE) == CAN_Mode_LoopBack)|| \ + ((MODE) == CAN_Mode_Silent) || \ + ((MODE) == CAN_Mode_Silent_LoopBack)) +/** + * @} + */ + + +/** + * @defgroup CAN_Operating_Mode + * @{ + */ +#define CAN_OperatingMode_Initialization ((uint8_t)0x00) /*!< Initialization mode */ +#define CAN_OperatingMode_Normal ((uint8_t)0x01) /*!< Normal mode */ +#define CAN_OperatingMode_Sleep ((uint8_t)0x02) /*!< sleep mode */ + + +#define IS_CAN_OPERATING_MODE(MODE) (((MODE) == CAN_OperatingMode_Initialization) ||\ + ((MODE) == CAN_OperatingMode_Normal)|| \ + ((MODE) == CAN_OperatingMode_Sleep)) +/** + * @} + */ + +/** + * @defgroup CAN_Mode_Status + * @{ + */ + +#define CAN_ModeStatus_Failed ((uint8_t)0x00) /*!< CAN entering the specific mode failed */ +#define CAN_ModeStatus_Success ((uint8_t)!CAN_ModeStatus_Failed) /*!< CAN entering the specific mode Succeed */ + + +/** + * @} + */ + +/** @defgroup CAN_synchronisation_jump_width + * @{ + */ + +#define CAN_SJW_1tq ((uint8_t)0x00) /*!< 1 time quantum */ +#define CAN_SJW_2tq ((uint8_t)0x01) /*!< 2 time quantum */ +#define CAN_SJW_3tq ((uint8_t)0x02) /*!< 3 time quantum */ +#define CAN_SJW_4tq ((uint8_t)0x03) /*!< 4 time quantum */ + +#define IS_CAN_SJW(SJW) (((SJW) == CAN_SJW_1tq) || ((SJW) == CAN_SJW_2tq)|| \ + ((SJW) == CAN_SJW_3tq) || ((SJW) == CAN_SJW_4tq)) +/** + * @} + */ + +/** @defgroup CAN_time_quantum_in_bit_segment_1 + * @{ + */ + +#define CAN_BS1_1tq ((uint8_t)0x00) /*!< 1 time quantum */ +#define CAN_BS1_2tq ((uint8_t)0x01) /*!< 2 time quantum */ +#define CAN_BS1_3tq ((uint8_t)0x02) /*!< 3 time quantum */ +#define CAN_BS1_4tq ((uint8_t)0x03) /*!< 4 time quantum */ +#define CAN_BS1_5tq ((uint8_t)0x04) /*!< 5 time quantum */ +#define CAN_BS1_6tq ((uint8_t)0x05) /*!< 6 time quantum */ +#define CAN_BS1_7tq ((uint8_t)0x06) /*!< 7 time quantum */ +#define CAN_BS1_8tq ((uint8_t)0x07) /*!< 8 time quantum */ +#define CAN_BS1_9tq ((uint8_t)0x08) /*!< 9 time quantum */ +#define CAN_BS1_10tq ((uint8_t)0x09) /*!< 10 time quantum */ +#define CAN_BS1_11tq ((uint8_t)0x0A) /*!< 11 time quantum */ +#define CAN_BS1_12tq ((uint8_t)0x0B) /*!< 12 time quantum */ +#define CAN_BS1_13tq ((uint8_t)0x0C) /*!< 13 time quantum */ +#define CAN_BS1_14tq ((uint8_t)0x0D) /*!< 14 time quantum */ +#define CAN_BS1_15tq ((uint8_t)0x0E) /*!< 15 time quantum */ +#define CAN_BS1_16tq ((uint8_t)0x0F) /*!< 16 time quantum */ + +#define IS_CAN_BS1(BS1) ((BS1) <= CAN_BS1_16tq) +/** + * @} + */ + +/** @defgroup CAN_time_quantum_in_bit_segment_2 + * @{ + */ + +#define CAN_BS2_1tq ((uint8_t)0x00) /*!< 1 time quantum */ +#define CAN_BS2_2tq ((uint8_t)0x01) /*!< 2 time quantum */ +#define CAN_BS2_3tq ((uint8_t)0x02) /*!< 3 time quantum */ +#define CAN_BS2_4tq ((uint8_t)0x03) /*!< 4 time quantum */ +#define CAN_BS2_5tq ((uint8_t)0x04) /*!< 5 time quantum */ +#define CAN_BS2_6tq ((uint8_t)0x05) /*!< 6 time quantum */ +#define CAN_BS2_7tq ((uint8_t)0x06) /*!< 7 time quantum */ +#define CAN_BS2_8tq ((uint8_t)0x07) /*!< 8 time quantum */ + +#define IS_CAN_BS2(BS2) ((BS2) <= CAN_BS2_8tq) + +/** + * @} + */ + +/** @defgroup CAN_clock_prescaler + * @{ + */ + +#define IS_CAN_PRESCALER(PRESCALER) (((PRESCALER) >= 1) && ((PRESCALER) <= 1024)) + +/** + * @} + */ + +/** @defgroup CAN_filter_number + * @{ + */ +#ifndef STM32F10X_CL + #define IS_CAN_FILTER_NUMBER(NUMBER) ((NUMBER) <= 13) +#else + #define IS_CAN_FILTER_NUMBER(NUMBER) ((NUMBER) <= 27) +#endif /* STM32F10X_CL */ +/** + * @} + */ + +/** @defgroup CAN_filter_mode + * @{ + */ + +#define CAN_FilterMode_IdMask ((uint8_t)0x00) /*!< identifier/mask mode */ +#define CAN_FilterMode_IdList ((uint8_t)0x01) /*!< identifier list mode */ + +#define IS_CAN_FILTER_MODE(MODE) (((MODE) == CAN_FilterMode_IdMask) || \ + ((MODE) == CAN_FilterMode_IdList)) +/** + * @} + */ + +/** @defgroup CAN_filter_scale + * @{ + */ + +#define CAN_FilterScale_16bit ((uint8_t)0x00) /*!< Two 16-bit filters */ +#define CAN_FilterScale_32bit ((uint8_t)0x01) /*!< One 32-bit filter */ + +#define IS_CAN_FILTER_SCALE(SCALE) (((SCALE) == CAN_FilterScale_16bit) || \ + ((SCALE) == CAN_FilterScale_32bit)) + +/** + * @} + */ + +/** @defgroup CAN_filter_FIFO + * @{ + */ + +#define CAN_Filter_FIFO0 ((uint8_t)0x00) /*!< Filter FIFO 0 assignment for filter x */ +#define CAN_Filter_FIFO1 ((uint8_t)0x01) /*!< Filter FIFO 1 assignment for filter x */ +#define IS_CAN_FILTER_FIFO(FIFO) (((FIFO) == CAN_FilterFIFO0) || \ + ((FIFO) == CAN_FilterFIFO1)) +/** + * @} + */ + +/** @defgroup Start_bank_filter_for_slave_CAN + * @{ + */ +#define IS_CAN_BANKNUMBER(BANKNUMBER) (((BANKNUMBER) >= 1) && ((BANKNUMBER) <= 27)) +/** + * @} + */ + +/** @defgroup CAN_Tx + * @{ + */ + +#define IS_CAN_TRANSMITMAILBOX(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= ((uint8_t)0x02)) +#define IS_CAN_STDID(STDID) ((STDID) <= ((uint32_t)0x7FF)) +#define IS_CAN_EXTID(EXTID) ((EXTID) <= ((uint32_t)0x1FFFFFFF)) +#define IS_CAN_DLC(DLC) ((DLC) <= ((uint8_t)0x08)) + +/** + * @} + */ + +/** @defgroup CAN_identifier_type + * @{ + */ + +#define CAN_Id_Standard ((uint32_t)0x00000000) /*!< Standard Id */ +#define CAN_Id_Extended ((uint32_t)0x00000004) /*!< Extended Id */ +#define IS_CAN_IDTYPE(IDTYPE) (((IDTYPE) == CAN_Id_Standard) || \ + ((IDTYPE) == CAN_Id_Extended)) +/** + * @} + */ + +/** @defgroup CAN_remote_transmission_request + * @{ + */ + +#define CAN_RTR_Data ((uint32_t)0x00000000) /*!< Data frame */ +#define CAN_RTR_Remote ((uint32_t)0x00000002) /*!< Remote frame */ +#define IS_CAN_RTR(RTR) (((RTR) == CAN_RTR_Data) || ((RTR) == CAN_RTR_Remote)) + +/** + * @} + */ + +/** @defgroup CAN_transmit_constants + * @{ + */ + +#define CAN_TxStatus_Failed ((uint8_t)0x00)/*!< CAN transmission failed */ +#define CAN_TxStatus_Ok ((uint8_t)0x01) /*!< CAN transmission succeeded */ +#define CAN_TxStatus_Pending ((uint8_t)0x02) /*!< CAN transmission pending */ +#define CAN_TxStatus_NoMailBox ((uint8_t)0x04) /*!< CAN cell did not provide an empty mailbox */ + +/** + * @} + */ + +/** @defgroup CAN_receive_FIFO_number_constants + * @{ + */ + +#define CAN_FIFO0 ((uint8_t)0x00) /*!< CAN FIFO 0 used to receive */ +#define CAN_FIFO1 ((uint8_t)0x01) /*!< CAN FIFO 1 used to receive */ + +#define IS_CAN_FIFO(FIFO) (((FIFO) == CAN_FIFO0) || ((FIFO) == CAN_FIFO1)) + +/** + * @} + */ + +/** @defgroup CAN_sleep_constants + * @{ + */ + +#define CAN_Sleep_Failed ((uint8_t)0x00) /*!< CAN did not enter the sleep mode */ +#define CAN_Sleep_Ok ((uint8_t)0x01) /*!< CAN entered the sleep mode */ + +/** + * @} + */ + +/** @defgroup CAN_wake_up_constants + * @{ + */ + +#define CAN_WakeUp_Failed ((uint8_t)0x00) /*!< CAN did not leave the sleep mode */ +#define CAN_WakeUp_Ok ((uint8_t)0x01) /*!< CAN leaved the sleep mode */ + +/** + * @} + */ + +/** + * @defgroup CAN_Error_Code_constants + * @{ + */ + +#define CAN_ErrorCode_NoErr ((uint8_t)0x00) /*!< No Error */ +#define CAN_ErrorCode_StuffErr ((uint8_t)0x10) /*!< Stuff Error */ +#define CAN_ErrorCode_FormErr ((uint8_t)0x20) /*!< Form Error */ +#define CAN_ErrorCode_ACKErr ((uint8_t)0x30) /*!< Acknowledgment Error */ +#define CAN_ErrorCode_BitRecessiveErr ((uint8_t)0x40) /*!< Bit Recessive Error */ +#define CAN_ErrorCode_BitDominantErr ((uint8_t)0x50) /*!< Bit Dominant Error */ +#define CAN_ErrorCode_CRCErr ((uint8_t)0x60) /*!< CRC Error */ +#define CAN_ErrorCode_SoftwareSetErr ((uint8_t)0x70) /*!< Software Set Error */ + + +/** + * @} + */ + +/** @defgroup CAN_flags + * @{ + */ +/* If the flag is 0x3XXXXXXX, it means that it can be used with CAN_GetFlagStatus() + and CAN_ClearFlag() functions. */ +/* If the flag is 0x1XXXXXXX, it means that it can only be used with CAN_GetFlagStatus() function. */ + +/* Transmit Flags */ +#define CAN_FLAG_RQCP0 ((uint32_t)0x38000001) /*!< Request MailBox0 Flag */ +#define CAN_FLAG_RQCP1 ((uint32_t)0x38000100) /*!< Request MailBox1 Flag */ +#define CAN_FLAG_RQCP2 ((uint32_t)0x38010000) /*!< Request MailBox2 Flag */ + +/* Receive Flags */ +#define CAN_FLAG_FMP0 ((uint32_t)0x12000003) /*!< FIFO 0 Message Pending Flag */ +#define CAN_FLAG_FF0 ((uint32_t)0x32000008) /*!< FIFO 0 Full Flag */ +#define CAN_FLAG_FOV0 ((uint32_t)0x32000010) /*!< FIFO 0 Overrun Flag */ +#define CAN_FLAG_FMP1 ((uint32_t)0x14000003) /*!< FIFO 1 Message Pending Flag */ +#define CAN_FLAG_FF1 ((uint32_t)0x34000008) /*!< FIFO 1 Full Flag */ +#define CAN_FLAG_FOV1 ((uint32_t)0x34000010) /*!< FIFO 1 Overrun Flag */ + +/* Operating Mode Flags */ +#define CAN_FLAG_WKU ((uint32_t)0x31000008) /*!< Wake up Flag */ +#define CAN_FLAG_SLAK ((uint32_t)0x31000012) /*!< Sleep acknowledge Flag */ +/* Note: When SLAK intterupt is disabled (SLKIE=0), no polling on SLAKI is possible. + In this case the SLAK bit can be polled.*/ + +/* Error Flags */ +#define CAN_FLAG_EWG ((uint32_t)0x10F00001) /*!< Error Warning Flag */ +#define CAN_FLAG_EPV ((uint32_t)0x10F00002) /*!< Error Passive Flag */ +#define CAN_FLAG_BOF ((uint32_t)0x10F00004) /*!< Bus-Off Flag */ +#define CAN_FLAG_LEC ((uint32_t)0x30F00070) /*!< Last error code Flag */ + +#define IS_CAN_GET_FLAG(FLAG) (((FLAG) == CAN_FLAG_LEC) || ((FLAG) == CAN_FLAG_BOF) || \ + ((FLAG) == CAN_FLAG_EPV) || ((FLAG) == CAN_FLAG_EWG) || \ + ((FLAG) == CAN_FLAG_WKU) || ((FLAG) == CAN_FLAG_FOV0) || \ + ((FLAG) == CAN_FLAG_FF0) || ((FLAG) == CAN_FLAG_FMP0) || \ + ((FLAG) == CAN_FLAG_FOV1) || ((FLAG) == CAN_FLAG_FF1) || \ + ((FLAG) == CAN_FLAG_FMP1) || ((FLAG) == CAN_FLAG_RQCP2) || \ + ((FLAG) == CAN_FLAG_RQCP1)|| ((FLAG) == CAN_FLAG_RQCP0) || \ + ((FLAG) == CAN_FLAG_SLAK )) + +#define IS_CAN_CLEAR_FLAG(FLAG)(((FLAG) == CAN_FLAG_LEC) || ((FLAG) == CAN_FLAG_RQCP2) || \ + ((FLAG) == CAN_FLAG_RQCP1) || ((FLAG) == CAN_FLAG_RQCP0) || \ + ((FLAG) == CAN_FLAG_FF0) || ((FLAG) == CAN_FLAG_FOV0) ||\ + ((FLAG) == CAN_FLAG_FF1) || ((FLAG) == CAN_FLAG_FOV1) || \ + ((FLAG) == CAN_FLAG_WKU) || ((FLAG) == CAN_FLAG_SLAK)) +/** + * @} + */ + + +/** @defgroup CAN_interrupts + * @{ + */ + + + +#define CAN_IT_TME ((uint32_t)0x00000001) /*!< Transmit mailbox empty Interrupt*/ + +/* Receive Interrupts */ +#define CAN_IT_FMP0 ((uint32_t)0x00000002) /*!< FIFO 0 message pending Interrupt*/ +#define CAN_IT_FF0 ((uint32_t)0x00000004) /*!< FIFO 0 full Interrupt*/ +#define CAN_IT_FOV0 ((uint32_t)0x00000008) /*!< FIFO 0 overrun Interrupt*/ +#define CAN_IT_FMP1 ((uint32_t)0x00000010) /*!< FIFO 1 message pending Interrupt*/ +#define CAN_IT_FF1 ((uint32_t)0x00000020) /*!< FIFO 1 full Interrupt*/ +#define CAN_IT_FOV1 ((uint32_t)0x00000040) /*!< FIFO 1 overrun Interrupt*/ + +/* Operating Mode Interrupts */ +#define CAN_IT_WKU ((uint32_t)0x00010000) /*!< Wake-up Interrupt*/ +#define CAN_IT_SLK ((uint32_t)0x00020000) /*!< Sleep acknowledge Interrupt*/ + +/* Error Interrupts */ +#define CAN_IT_EWG ((uint32_t)0x00000100) /*!< Error warning Interrupt*/ +#define CAN_IT_EPV ((uint32_t)0x00000200) /*!< Error passive Interrupt*/ +#define CAN_IT_BOF ((uint32_t)0x00000400) /*!< Bus-off Interrupt*/ +#define CAN_IT_LEC ((uint32_t)0x00000800) /*!< Last error code Interrupt*/ +#define CAN_IT_ERR ((uint32_t)0x00008000) /*!< Error Interrupt*/ + +/* Flags named as Interrupts : kept only for FW compatibility */ +#define CAN_IT_RQCP0 CAN_IT_TME +#define CAN_IT_RQCP1 CAN_IT_TME +#define CAN_IT_RQCP2 CAN_IT_TME + + +#define IS_CAN_IT(IT) (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FMP0) ||\ + ((IT) == CAN_IT_FF0) || ((IT) == CAN_IT_FOV0) ||\ + ((IT) == CAN_IT_FMP1) || ((IT) == CAN_IT_FF1) ||\ + ((IT) == CAN_IT_FOV1) || ((IT) == CAN_IT_EWG) ||\ + ((IT) == CAN_IT_EPV) || ((IT) == CAN_IT_BOF) ||\ + ((IT) == CAN_IT_LEC) || ((IT) == CAN_IT_ERR) ||\ + ((IT) == CAN_IT_WKU) || ((IT) == CAN_IT_SLK)) + +#define IS_CAN_CLEAR_IT(IT) (((IT) == CAN_IT_TME) || ((IT) == CAN_IT_FF0) ||\ + ((IT) == CAN_IT_FOV0)|| ((IT) == CAN_IT_FF1) ||\ + ((IT) == CAN_IT_FOV1)|| ((IT) == CAN_IT_EWG) ||\ + ((IT) == CAN_IT_EPV) || ((IT) == CAN_IT_BOF) ||\ + ((IT) == CAN_IT_LEC) || ((IT) == CAN_IT_ERR) ||\ + ((IT) == CAN_IT_WKU) || ((IT) == CAN_IT_SLK)) + +/** + * @} + */ + +/** @defgroup CAN_Legacy + * @{ + */ +#define CANINITFAILED CAN_InitStatus_Failed +#define CANINITOK CAN_InitStatus_Success +#define CAN_FilterFIFO0 CAN_Filter_FIFO0 +#define CAN_FilterFIFO1 CAN_Filter_FIFO1 +#define CAN_ID_STD CAN_Id_Standard +#define CAN_ID_EXT CAN_Id_Extended +#define CAN_RTR_DATA CAN_RTR_Data +#define CAN_RTR_REMOTE CAN_RTR_Remote +#define CANTXFAILE CAN_TxStatus_Failed +#define CANTXOK CAN_TxStatus_Ok +#define CANTXPENDING CAN_TxStatus_Pending +#define CAN_NO_MB CAN_TxStatus_NoMailBox +#define CANSLEEPFAILED CAN_Sleep_Failed +#define CANSLEEPOK CAN_Sleep_Ok +#define CANWAKEUPFAILED CAN_WakeUp_Failed +#define CANWAKEUPOK CAN_WakeUp_Ok + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup CAN_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup CAN_Exported_Functions + * @{ + */ +/* Function used to set the CAN configuration to the default reset state *****/ +void CAN_DeInit(CAN_TypeDef* CANx); + +/* Initialization and Configuration functions *********************************/ +uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct); +void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct); +void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct); +void CAN_SlaveStartBank(uint8_t CAN_BankNumber); +void CAN_DBGFreeze(CAN_TypeDef* CANx, FunctionalState NewState); +void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState); + +/* Transmit functions *********************************************************/ +uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage); +uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox); +void CAN_CancelTransmit(CAN_TypeDef* CANx, uint8_t Mailbox); + +/* Receive functions **********************************************************/ +void CAN_Receive(CAN_TypeDef* CANx, uint8_t FIFONumber, CanRxMsg* RxMessage); +void CAN_FIFORelease(CAN_TypeDef* CANx, uint8_t FIFONumber); +uint8_t CAN_MessagePending(CAN_TypeDef* CANx, uint8_t FIFONumber); + + +/* Operation modes functions **************************************************/ +uint8_t CAN_OperatingModeRequest(CAN_TypeDef* CANx, uint8_t CAN_OperatingMode); +uint8_t CAN_Sleep(CAN_TypeDef* CANx); +uint8_t CAN_WakeUp(CAN_TypeDef* CANx); + +/* Error management functions *************************************************/ +uint8_t CAN_GetLastErrorCode(CAN_TypeDef* CANx); +uint8_t CAN_GetReceiveErrorCounter(CAN_TypeDef* CANx); +uint8_t CAN_GetLSBTransmitErrorCounter(CAN_TypeDef* CANx); + +/* Interrupts and flags management functions **********************************/ +void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState); +FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG); +void CAN_ClearFlag(CAN_TypeDef* CANx, uint32_t CAN_FLAG); +ITStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_IT); +void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_CAN_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h new file mode 100644 index 00000000..a3f8fc78 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h @@ -0,0 +1,210 @@ +/** + ****************************************************************************** + * @file stm32f10x_cec.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the CEC firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_CEC_H +#define __STM32F10x_CEC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup CEC + * @{ + */ + + +/** @defgroup CEC_Exported_Types + * @{ + */ + +/** + * @brief CEC Init structure definition + */ +typedef struct +{ + uint16_t CEC_BitTimingMode; /*!< Configures the CEC Bit Timing Error Mode. + This parameter can be a value of @ref CEC_BitTiming_Mode */ + uint16_t CEC_BitPeriodMode; /*!< Configures the CEC Bit Period Error Mode. + This parameter can be a value of @ref CEC_BitPeriod_Mode */ +}CEC_InitTypeDef; + +/** + * @} + */ + +/** @defgroup CEC_Exported_Constants + * @{ + */ + +/** @defgroup CEC_BitTiming_Mode + * @{ + */ +#define CEC_BitTimingStdMode ((uint16_t)0x00) /*!< Bit timing error Standard Mode */ +#define CEC_BitTimingErrFreeMode CEC_CFGR_BTEM /*!< Bit timing error Free Mode */ + +#define IS_CEC_BIT_TIMING_ERROR_MODE(MODE) (((MODE) == CEC_BitTimingStdMode) || \ + ((MODE) == CEC_BitTimingErrFreeMode)) +/** + * @} + */ + +/** @defgroup CEC_BitPeriod_Mode + * @{ + */ +#define CEC_BitPeriodStdMode ((uint16_t)0x00) /*!< Bit period error Standard Mode */ +#define CEC_BitPeriodFlexibleMode CEC_CFGR_BPEM /*!< Bit period error Flexible Mode */ + +#define IS_CEC_BIT_PERIOD_ERROR_MODE(MODE) (((MODE) == CEC_BitPeriodStdMode) || \ + ((MODE) == CEC_BitPeriodFlexibleMode)) +/** + * @} + */ + + +/** @defgroup CEC_interrupts_definition + * @{ + */ +#define CEC_IT_TERR CEC_CSR_TERR +#define CEC_IT_TBTRF CEC_CSR_TBTRF +#define CEC_IT_RERR CEC_CSR_RERR +#define CEC_IT_RBTF CEC_CSR_RBTF +#define IS_CEC_GET_IT(IT) (((IT) == CEC_IT_TERR) || ((IT) == CEC_IT_TBTRF) || \ + ((IT) == CEC_IT_RERR) || ((IT) == CEC_IT_RBTF)) +/** + * @} + */ + + +/** @defgroup CEC_Own_Address + * @{ + */ +#define IS_CEC_ADDRESS(ADDRESS) ((ADDRESS) < 0x10) +/** + * @} + */ + +/** @defgroup CEC_Prescaler + * @{ + */ +#define IS_CEC_PRESCALER(PRESCALER) ((PRESCALER) <= 0x3FFF) + +/** + * @} + */ + +/** @defgroup CEC_flags_definition + * @{ + */ + +/** + * @brief ESR register flags + */ +#define CEC_FLAG_BTE ((uint32_t)0x10010000) +#define CEC_FLAG_BPE ((uint32_t)0x10020000) +#define CEC_FLAG_RBTFE ((uint32_t)0x10040000) +#define CEC_FLAG_SBE ((uint32_t)0x10080000) +#define CEC_FLAG_ACKE ((uint32_t)0x10100000) +#define CEC_FLAG_LINE ((uint32_t)0x10200000) +#define CEC_FLAG_TBTFE ((uint32_t)0x10400000) + +/** + * @brief CSR register flags + */ +#define CEC_FLAG_TEOM ((uint32_t)0x00000002) +#define CEC_FLAG_TERR ((uint32_t)0x00000004) +#define CEC_FLAG_TBTRF ((uint32_t)0x00000008) +#define CEC_FLAG_RSOM ((uint32_t)0x00000010) +#define CEC_FLAG_REOM ((uint32_t)0x00000020) +#define CEC_FLAG_RERR ((uint32_t)0x00000040) +#define CEC_FLAG_RBTF ((uint32_t)0x00000080) + +#define IS_CEC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFFFF03) == 0x00) && ((FLAG) != 0x00)) + +#define IS_CEC_GET_FLAG(FLAG) (((FLAG) == CEC_FLAG_BTE) || ((FLAG) == CEC_FLAG_BPE) || \ + ((FLAG) == CEC_FLAG_RBTFE) || ((FLAG)== CEC_FLAG_SBE) || \ + ((FLAG) == CEC_FLAG_ACKE) || ((FLAG) == CEC_FLAG_LINE) || \ + ((FLAG) == CEC_FLAG_TBTFE) || ((FLAG) == CEC_FLAG_TEOM) || \ + ((FLAG) == CEC_FLAG_TERR) || ((FLAG) == CEC_FLAG_TBTRF) || \ + ((FLAG) == CEC_FLAG_RSOM) || ((FLAG) == CEC_FLAG_REOM) || \ + ((FLAG) == CEC_FLAG_RERR) || ((FLAG) == CEC_FLAG_RBTF)) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup CEC_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup CEC_Exported_Functions + * @{ + */ +void CEC_DeInit(void); +void CEC_Init(CEC_InitTypeDef* CEC_InitStruct); +void CEC_Cmd(FunctionalState NewState); +void CEC_ITConfig(FunctionalState NewState); +void CEC_OwnAddressConfig(uint8_t CEC_OwnAddress); +void CEC_SetPrescaler(uint16_t CEC_Prescaler); +void CEC_SendDataByte(uint8_t Data); +uint8_t CEC_ReceiveDataByte(void); +void CEC_StartOfMessage(void); +void CEC_EndOfMessageCmd(FunctionalState NewState); +FlagStatus CEC_GetFlagStatus(uint32_t CEC_FLAG); +void CEC_ClearFlag(uint32_t CEC_FLAG); +ITStatus CEC_GetITStatus(uint8_t CEC_IT); +void CEC_ClearITPendingBit(uint16_t CEC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_CEC_H */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h new file mode 100644 index 00000000..658a51ce --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h @@ -0,0 +1,94 @@ +/** + ****************************************************************************** + * @file stm32f10x_crc.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the CRC firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_CRC_H +#define __STM32F10x_CRC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup CRC + * @{ + */ + +/** @defgroup CRC_Exported_Types + * @{ + */ + +/** + * @} + */ + +/** @defgroup CRC_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @defgroup CRC_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup CRC_Exported_Functions + * @{ + */ + +void CRC_ResetDR(void); +uint32_t CRC_CalcCRC(uint32_t Data); +uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength); +uint32_t CRC_GetCRC(void); +void CRC_SetIDRegister(uint8_t IDValue); +uint8_t CRC_GetIDRegister(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_CRC_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h new file mode 100644 index 00000000..71061641 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h @@ -0,0 +1,317 @@ +/** + ****************************************************************************** + * @file stm32f10x_dac.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the DAC firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_DAC_H +#define __STM32F10x_DAC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup DAC + * @{ + */ + +/** @defgroup DAC_Exported_Types + * @{ + */ + +/** + * @brief DAC Init structure definition + */ + +typedef struct +{ + uint32_t DAC_Trigger; /*!< Specifies the external trigger for the selected DAC channel. + This parameter can be a value of @ref DAC_trigger_selection */ + + uint32_t DAC_WaveGeneration; /*!< Specifies whether DAC channel noise waves or triangle waves + are generated, or whether no wave is generated. + This parameter can be a value of @ref DAC_wave_generation */ + + uint32_t DAC_LFSRUnmask_TriangleAmplitude; /*!< Specifies the LFSR mask for noise wave generation or + the maximum amplitude triangle generation for the DAC channel. + This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude */ + + uint32_t DAC_OutputBuffer; /*!< Specifies whether the DAC channel output buffer is enabled or disabled. + This parameter can be a value of @ref DAC_output_buffer */ +}DAC_InitTypeDef; + +/** + * @} + */ + +/** @defgroup DAC_Exported_Constants + * @{ + */ + +/** @defgroup DAC_trigger_selection + * @{ + */ + +#define DAC_Trigger_None ((uint32_t)0x00000000) /*!< Conversion is automatic once the DAC1_DHRxxxx register + has been loaded, and not by external trigger */ +#define DAC_Trigger_T6_TRGO ((uint32_t)0x00000004) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_T8_TRGO ((uint32_t)0x0000000C) /*!< TIM8 TRGO selected as external conversion trigger for DAC channel + only in High-density devices*/ +#define DAC_Trigger_T3_TRGO ((uint32_t)0x0000000C) /*!< TIM8 TRGO selected as external conversion trigger for DAC channel + only in Connectivity line, Medium-density and Low-density Value Line devices */ +#define DAC_Trigger_T7_TRGO ((uint32_t)0x00000014) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_T5_TRGO ((uint32_t)0x0000001C) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_T15_TRGO ((uint32_t)0x0000001C) /*!< TIM15 TRGO selected as external conversion trigger for DAC channel + only in Medium-density and Low-density Value Line devices*/ +#define DAC_Trigger_T2_TRGO ((uint32_t)0x00000024) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_T4_TRGO ((uint32_t)0x0000002C) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_Ext_IT9 ((uint32_t)0x00000034) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_Software ((uint32_t)0x0000003C) /*!< Conversion started by software trigger for DAC channel */ + +#define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None) || \ + ((TRIGGER) == DAC_Trigger_T6_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T8_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T7_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T5_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T2_TRGO) || \ + ((TRIGGER) == DAC_Trigger_T4_TRGO) || \ + ((TRIGGER) == DAC_Trigger_Ext_IT9) || \ + ((TRIGGER) == DAC_Trigger_Software)) + +/** + * @} + */ + +/** @defgroup DAC_wave_generation + * @{ + */ + +#define DAC_WaveGeneration_None ((uint32_t)0x00000000) +#define DAC_WaveGeneration_Noise ((uint32_t)0x00000040) +#define DAC_WaveGeneration_Triangle ((uint32_t)0x00000080) +#define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None) || \ + ((WAVE) == DAC_WaveGeneration_Noise) || \ + ((WAVE) == DAC_WaveGeneration_Triangle)) +/** + * @} + */ + +/** @defgroup DAC_lfsrunmask_triangleamplitude + * @{ + */ + +#define DAC_LFSRUnmask_Bit0 ((uint32_t)0x00000000) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */ +#define DAC_LFSRUnmask_Bits1_0 ((uint32_t)0x00000100) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits2_0 ((uint32_t)0x00000200) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits3_0 ((uint32_t)0x00000300) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits4_0 ((uint32_t)0x00000400) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits5_0 ((uint32_t)0x00000500) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits6_0 ((uint32_t)0x00000600) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits7_0 ((uint32_t)0x00000700) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits8_0 ((uint32_t)0x00000800) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits9_0 ((uint32_t)0x00000900) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits10_0 ((uint32_t)0x00000A00) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits11_0 ((uint32_t)0x00000B00) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */ +#define DAC_TriangleAmplitude_1 ((uint32_t)0x00000000) /*!< Select max triangle amplitude of 1 */ +#define DAC_TriangleAmplitude_3 ((uint32_t)0x00000100) /*!< Select max triangle amplitude of 3 */ +#define DAC_TriangleAmplitude_7 ((uint32_t)0x00000200) /*!< Select max triangle amplitude of 7 */ +#define DAC_TriangleAmplitude_15 ((uint32_t)0x00000300) /*!< Select max triangle amplitude of 15 */ +#define DAC_TriangleAmplitude_31 ((uint32_t)0x00000400) /*!< Select max triangle amplitude of 31 */ +#define DAC_TriangleAmplitude_63 ((uint32_t)0x00000500) /*!< Select max triangle amplitude of 63 */ +#define DAC_TriangleAmplitude_127 ((uint32_t)0x00000600) /*!< Select max triangle amplitude of 127 */ +#define DAC_TriangleAmplitude_255 ((uint32_t)0x00000700) /*!< Select max triangle amplitude of 255 */ +#define DAC_TriangleAmplitude_511 ((uint32_t)0x00000800) /*!< Select max triangle amplitude of 511 */ +#define DAC_TriangleAmplitude_1023 ((uint32_t)0x00000900) /*!< Select max triangle amplitude of 1023 */ +#define DAC_TriangleAmplitude_2047 ((uint32_t)0x00000A00) /*!< Select max triangle amplitude of 2047 */ +#define DAC_TriangleAmplitude_4095 ((uint32_t)0x00000B00) /*!< Select max triangle amplitude of 4095 */ + +#define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUnmask_Bit0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits1_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits2_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits3_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits4_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits5_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits6_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits7_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits8_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits9_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits10_0) || \ + ((VALUE) == DAC_LFSRUnmask_Bits11_0) || \ + ((VALUE) == DAC_TriangleAmplitude_1) || \ + ((VALUE) == DAC_TriangleAmplitude_3) || \ + ((VALUE) == DAC_TriangleAmplitude_7) || \ + ((VALUE) == DAC_TriangleAmplitude_15) || \ + ((VALUE) == DAC_TriangleAmplitude_31) || \ + ((VALUE) == DAC_TriangleAmplitude_63) || \ + ((VALUE) == DAC_TriangleAmplitude_127) || \ + ((VALUE) == DAC_TriangleAmplitude_255) || \ + ((VALUE) == DAC_TriangleAmplitude_511) || \ + ((VALUE) == DAC_TriangleAmplitude_1023) || \ + ((VALUE) == DAC_TriangleAmplitude_2047) || \ + ((VALUE) == DAC_TriangleAmplitude_4095)) +/** + * @} + */ + +/** @defgroup DAC_output_buffer + * @{ + */ + +#define DAC_OutputBuffer_Enable ((uint32_t)0x00000000) +#define DAC_OutputBuffer_Disable ((uint32_t)0x00000002) +#define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OutputBuffer_Enable) || \ + ((STATE) == DAC_OutputBuffer_Disable)) +/** + * @} + */ + +/** @defgroup DAC_Channel_selection + * @{ + */ + +#define DAC_Channel_1 ((uint32_t)0x00000000) +#define DAC_Channel_2 ((uint32_t)0x00000010) +#define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \ + ((CHANNEL) == DAC_Channel_2)) +/** + * @} + */ + +/** @defgroup DAC_data_alignment + * @{ + */ + +#define DAC_Align_12b_R ((uint32_t)0x00000000) +#define DAC_Align_12b_L ((uint32_t)0x00000004) +#define DAC_Align_8b_R ((uint32_t)0x00000008) +#define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \ + ((ALIGN) == DAC_Align_12b_L) || \ + ((ALIGN) == DAC_Align_8b_R)) +/** + * @} + */ + +/** @defgroup DAC_wave_generation + * @{ + */ + +#define DAC_Wave_Noise ((uint32_t)0x00000040) +#define DAC_Wave_Triangle ((uint32_t)0x00000080) +#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \ + ((WAVE) == DAC_Wave_Triangle)) +/** + * @} + */ + +/** @defgroup DAC_data + * @{ + */ + +#define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0) +/** + * @} + */ +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +/** @defgroup DAC_interrupts_definition + * @{ + */ + +#define DAC_IT_DMAUDR ((uint32_t)0x00002000) +#define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR)) + +/** + * @} + */ + +/** @defgroup DAC_flags_definition + * @{ + */ + +#define DAC_FLAG_DMAUDR ((uint32_t)0x00002000) +#define IS_DAC_FLAG(FLAG) (((FLAG) == DAC_FLAG_DMAUDR)) + +/** + * @} + */ +#endif + +/** + * @} + */ + +/** @defgroup DAC_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup DAC_Exported_Functions + * @{ + */ + +void DAC_DeInit(void); +void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct); +void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct); +void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState); +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState); +#endif +void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState); +void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState); +void DAC_DualSoftwareTriggerCmd(FunctionalState NewState); +void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState); +void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data); +void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data); +void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1); +uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel); +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG); +void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG); +ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT); +void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F10x_DAC_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h new file mode 100644 index 00000000..1e6a68ac --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h @@ -0,0 +1,119 @@ +/** + ****************************************************************************** + * @file stm32f10x_dbgmcu.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the DBGMCU + * firmware library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_DBGMCU_H +#define __STM32F10x_DBGMCU_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup DBGMCU + * @{ + */ + +/** @defgroup DBGMCU_Exported_Types + * @{ + */ + +/** + * @} + */ + +/** @defgroup DBGMCU_Exported_Constants + * @{ + */ + +#define DBGMCU_SLEEP ((uint32_t)0x00000001) +#define DBGMCU_STOP ((uint32_t)0x00000002) +#define DBGMCU_STANDBY ((uint32_t)0x00000004) +#define DBGMCU_IWDG_STOP ((uint32_t)0x00000100) +#define DBGMCU_WWDG_STOP ((uint32_t)0x00000200) +#define DBGMCU_TIM1_STOP ((uint32_t)0x00000400) +#define DBGMCU_TIM2_STOP ((uint32_t)0x00000800) +#define DBGMCU_TIM3_STOP ((uint32_t)0x00001000) +#define DBGMCU_TIM4_STOP ((uint32_t)0x00002000) +#define DBGMCU_CAN1_STOP ((uint32_t)0x00004000) +#define DBGMCU_I2C1_SMBUS_TIMEOUT ((uint32_t)0x00008000) +#define DBGMCU_I2C2_SMBUS_TIMEOUT ((uint32_t)0x00010000) +#define DBGMCU_TIM8_STOP ((uint32_t)0x00020000) +#define DBGMCU_TIM5_STOP ((uint32_t)0x00040000) +#define DBGMCU_TIM6_STOP ((uint32_t)0x00080000) +#define DBGMCU_TIM7_STOP ((uint32_t)0x00100000) +#define DBGMCU_CAN2_STOP ((uint32_t)0x00200000) +#define DBGMCU_TIM15_STOP ((uint32_t)0x00400000) +#define DBGMCU_TIM16_STOP ((uint32_t)0x00800000) +#define DBGMCU_TIM17_STOP ((uint32_t)0x01000000) +#define DBGMCU_TIM12_STOP ((uint32_t)0x02000000) +#define DBGMCU_TIM13_STOP ((uint32_t)0x04000000) +#define DBGMCU_TIM14_STOP ((uint32_t)0x08000000) +#define DBGMCU_TIM9_STOP ((uint32_t)0x10000000) +#define DBGMCU_TIM10_STOP ((uint32_t)0x20000000) +#define DBGMCU_TIM11_STOP ((uint32_t)0x40000000) + +#define IS_DBGMCU_PERIPH(PERIPH) ((((PERIPH) & 0x800000F8) == 0x00) && ((PERIPH) != 0x00)) +/** + * @} + */ + +/** @defgroup DBGMCU_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup DBGMCU_Exported_Functions + * @{ + */ + +uint32_t DBGMCU_GetREVID(void); +uint32_t DBGMCU_GetDEVID(void); +void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_DBGMCU_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h new file mode 100644 index 00000000..b5dc6a80 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h @@ -0,0 +1,439 @@ +/** + ****************************************************************************** + * @file stm32f10x_dma.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the DMA firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_DMA_H +#define __STM32F10x_DMA_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup DMA + * @{ + */ + +/** @defgroup DMA_Exported_Types + * @{ + */ + +/** + * @brief DMA Init structure definition + */ + +typedef struct +{ + uint32_t DMA_PeripheralBaseAddr; /*!< Specifies the peripheral base address for DMAy Channelx. */ + + uint32_t DMA_MemoryBaseAddr; /*!< Specifies the memory base address for DMAy Channelx. */ + + uint32_t DMA_DIR; /*!< Specifies if the peripheral is the source or destination. + This parameter can be a value of @ref DMA_data_transfer_direction */ + + uint32_t DMA_BufferSize; /*!< Specifies the buffer size, in data unit, of the specified Channel. + The data unit is equal to the configuration set in DMA_PeripheralDataSize + or DMA_MemoryDataSize members depending in the transfer direction. */ + + uint32_t DMA_PeripheralInc; /*!< Specifies whether the Peripheral address register is incremented or not. + This parameter can be a value of @ref DMA_peripheral_incremented_mode */ + + uint32_t DMA_MemoryInc; /*!< Specifies whether the memory address register is incremented or not. + This parameter can be a value of @ref DMA_memory_incremented_mode */ + + uint32_t DMA_PeripheralDataSize; /*!< Specifies the Peripheral data width. + This parameter can be a value of @ref DMA_peripheral_data_size */ + + uint32_t DMA_MemoryDataSize; /*!< Specifies the Memory data width. + This parameter can be a value of @ref DMA_memory_data_size */ + + uint32_t DMA_Mode; /*!< Specifies the operation mode of the DMAy Channelx. + This parameter can be a value of @ref DMA_circular_normal_mode. + @note: The circular buffer mode cannot be used if the memory-to-memory + data transfer is configured on the selected Channel */ + + uint32_t DMA_Priority; /*!< Specifies the software priority for the DMAy Channelx. + This parameter can be a value of @ref DMA_priority_level */ + + uint32_t DMA_M2M; /*!< Specifies if the DMAy Channelx will be used in memory-to-memory transfer. + This parameter can be a value of @ref DMA_memory_to_memory */ +}DMA_InitTypeDef; + +/** + * @} + */ + +/** @defgroup DMA_Exported_Constants + * @{ + */ + +#define IS_DMA_ALL_PERIPH(PERIPH) (((PERIPH) == DMA1_Channel1) || \ + ((PERIPH) == DMA1_Channel2) || \ + ((PERIPH) == DMA1_Channel3) || \ + ((PERIPH) == DMA1_Channel4) || \ + ((PERIPH) == DMA1_Channel5) || \ + ((PERIPH) == DMA1_Channel6) || \ + ((PERIPH) == DMA1_Channel7) || \ + ((PERIPH) == DMA2_Channel1) || \ + ((PERIPH) == DMA2_Channel2) || \ + ((PERIPH) == DMA2_Channel3) || \ + ((PERIPH) == DMA2_Channel4) || \ + ((PERIPH) == DMA2_Channel5)) + +/** @defgroup DMA_data_transfer_direction + * @{ + */ + +#define DMA_DIR_PeripheralDST ((uint32_t)0x00000010) +#define DMA_DIR_PeripheralSRC ((uint32_t)0x00000000) +#define IS_DMA_DIR(DIR) (((DIR) == DMA_DIR_PeripheralDST) || \ + ((DIR) == DMA_DIR_PeripheralSRC)) +/** + * @} + */ + +/** @defgroup DMA_peripheral_incremented_mode + * @{ + */ + +#define DMA_PeripheralInc_Enable ((uint32_t)0x00000040) +#define DMA_PeripheralInc_Disable ((uint32_t)0x00000000) +#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PeripheralInc_Enable) || \ + ((STATE) == DMA_PeripheralInc_Disable)) +/** + * @} + */ + +/** @defgroup DMA_memory_incremented_mode + * @{ + */ + +#define DMA_MemoryInc_Enable ((uint32_t)0x00000080) +#define DMA_MemoryInc_Disable ((uint32_t)0x00000000) +#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MemoryInc_Enable) || \ + ((STATE) == DMA_MemoryInc_Disable)) +/** + * @} + */ + +/** @defgroup DMA_peripheral_data_size + * @{ + */ + +#define DMA_PeripheralDataSize_Byte ((uint32_t)0x00000000) +#define DMA_PeripheralDataSize_HalfWord ((uint32_t)0x00000100) +#define DMA_PeripheralDataSize_Word ((uint32_t)0x00000200) +#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PeripheralDataSize_Byte) || \ + ((SIZE) == DMA_PeripheralDataSize_HalfWord) || \ + ((SIZE) == DMA_PeripheralDataSize_Word)) +/** + * @} + */ + +/** @defgroup DMA_memory_data_size + * @{ + */ + +#define DMA_MemoryDataSize_Byte ((uint32_t)0x00000000) +#define DMA_MemoryDataSize_HalfWord ((uint32_t)0x00000400) +#define DMA_MemoryDataSize_Word ((uint32_t)0x00000800) +#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MemoryDataSize_Byte) || \ + ((SIZE) == DMA_MemoryDataSize_HalfWord) || \ + ((SIZE) == DMA_MemoryDataSize_Word)) +/** + * @} + */ + +/** @defgroup DMA_circular_normal_mode + * @{ + */ + +#define DMA_Mode_Circular ((uint32_t)0x00000020) +#define DMA_Mode_Normal ((uint32_t)0x00000000) +#define IS_DMA_MODE(MODE) (((MODE) == DMA_Mode_Circular) || ((MODE) == DMA_Mode_Normal)) +/** + * @} + */ + +/** @defgroup DMA_priority_level + * @{ + */ + +#define DMA_Priority_VeryHigh ((uint32_t)0x00003000) +#define DMA_Priority_High ((uint32_t)0x00002000) +#define DMA_Priority_Medium ((uint32_t)0x00001000) +#define DMA_Priority_Low ((uint32_t)0x00000000) +#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_Priority_VeryHigh) || \ + ((PRIORITY) == DMA_Priority_High) || \ + ((PRIORITY) == DMA_Priority_Medium) || \ + ((PRIORITY) == DMA_Priority_Low)) +/** + * @} + */ + +/** @defgroup DMA_memory_to_memory + * @{ + */ + +#define DMA_M2M_Enable ((uint32_t)0x00004000) +#define DMA_M2M_Disable ((uint32_t)0x00000000) +#define IS_DMA_M2M_STATE(STATE) (((STATE) == DMA_M2M_Enable) || ((STATE) == DMA_M2M_Disable)) + +/** + * @} + */ + +/** @defgroup DMA_interrupts_definition + * @{ + */ + +#define DMA_IT_TC ((uint32_t)0x00000002) +#define DMA_IT_HT ((uint32_t)0x00000004) +#define DMA_IT_TE ((uint32_t)0x00000008) +#define IS_DMA_CONFIG_IT(IT) ((((IT) & 0xFFFFFFF1) == 0x00) && ((IT) != 0x00)) + +#define DMA1_IT_GL1 ((uint32_t)0x00000001) +#define DMA1_IT_TC1 ((uint32_t)0x00000002) +#define DMA1_IT_HT1 ((uint32_t)0x00000004) +#define DMA1_IT_TE1 ((uint32_t)0x00000008) +#define DMA1_IT_GL2 ((uint32_t)0x00000010) +#define DMA1_IT_TC2 ((uint32_t)0x00000020) +#define DMA1_IT_HT2 ((uint32_t)0x00000040) +#define DMA1_IT_TE2 ((uint32_t)0x00000080) +#define DMA1_IT_GL3 ((uint32_t)0x00000100) +#define DMA1_IT_TC3 ((uint32_t)0x00000200) +#define DMA1_IT_HT3 ((uint32_t)0x00000400) +#define DMA1_IT_TE3 ((uint32_t)0x00000800) +#define DMA1_IT_GL4 ((uint32_t)0x00001000) +#define DMA1_IT_TC4 ((uint32_t)0x00002000) +#define DMA1_IT_HT4 ((uint32_t)0x00004000) +#define DMA1_IT_TE4 ((uint32_t)0x00008000) +#define DMA1_IT_GL5 ((uint32_t)0x00010000) +#define DMA1_IT_TC5 ((uint32_t)0x00020000) +#define DMA1_IT_HT5 ((uint32_t)0x00040000) +#define DMA1_IT_TE5 ((uint32_t)0x00080000) +#define DMA1_IT_GL6 ((uint32_t)0x00100000) +#define DMA1_IT_TC6 ((uint32_t)0x00200000) +#define DMA1_IT_HT6 ((uint32_t)0x00400000) +#define DMA1_IT_TE6 ((uint32_t)0x00800000) +#define DMA1_IT_GL7 ((uint32_t)0x01000000) +#define DMA1_IT_TC7 ((uint32_t)0x02000000) +#define DMA1_IT_HT7 ((uint32_t)0x04000000) +#define DMA1_IT_TE7 ((uint32_t)0x08000000) + +#define DMA2_IT_GL1 ((uint32_t)0x10000001) +#define DMA2_IT_TC1 ((uint32_t)0x10000002) +#define DMA2_IT_HT1 ((uint32_t)0x10000004) +#define DMA2_IT_TE1 ((uint32_t)0x10000008) +#define DMA2_IT_GL2 ((uint32_t)0x10000010) +#define DMA2_IT_TC2 ((uint32_t)0x10000020) +#define DMA2_IT_HT2 ((uint32_t)0x10000040) +#define DMA2_IT_TE2 ((uint32_t)0x10000080) +#define DMA2_IT_GL3 ((uint32_t)0x10000100) +#define DMA2_IT_TC3 ((uint32_t)0x10000200) +#define DMA2_IT_HT3 ((uint32_t)0x10000400) +#define DMA2_IT_TE3 ((uint32_t)0x10000800) +#define DMA2_IT_GL4 ((uint32_t)0x10001000) +#define DMA2_IT_TC4 ((uint32_t)0x10002000) +#define DMA2_IT_HT4 ((uint32_t)0x10004000) +#define DMA2_IT_TE4 ((uint32_t)0x10008000) +#define DMA2_IT_GL5 ((uint32_t)0x10010000) +#define DMA2_IT_TC5 ((uint32_t)0x10020000) +#define DMA2_IT_HT5 ((uint32_t)0x10040000) +#define DMA2_IT_TE5 ((uint32_t)0x10080000) + +#define IS_DMA_CLEAR_IT(IT) (((((IT) & 0xF0000000) == 0x00) || (((IT) & 0xEFF00000) == 0x00)) && ((IT) != 0x00)) + +#define IS_DMA_GET_IT(IT) (((IT) == DMA1_IT_GL1) || ((IT) == DMA1_IT_TC1) || \ + ((IT) == DMA1_IT_HT1) || ((IT) == DMA1_IT_TE1) || \ + ((IT) == DMA1_IT_GL2) || ((IT) == DMA1_IT_TC2) || \ + ((IT) == DMA1_IT_HT2) || ((IT) == DMA1_IT_TE2) || \ + ((IT) == DMA1_IT_GL3) || ((IT) == DMA1_IT_TC3) || \ + ((IT) == DMA1_IT_HT3) || ((IT) == DMA1_IT_TE3) || \ + ((IT) == DMA1_IT_GL4) || ((IT) == DMA1_IT_TC4) || \ + ((IT) == DMA1_IT_HT4) || ((IT) == DMA1_IT_TE4) || \ + ((IT) == DMA1_IT_GL5) || ((IT) == DMA1_IT_TC5) || \ + ((IT) == DMA1_IT_HT5) || ((IT) == DMA1_IT_TE5) || \ + ((IT) == DMA1_IT_GL6) || ((IT) == DMA1_IT_TC6) || \ + ((IT) == DMA1_IT_HT6) || ((IT) == DMA1_IT_TE6) || \ + ((IT) == DMA1_IT_GL7) || ((IT) == DMA1_IT_TC7) || \ + ((IT) == DMA1_IT_HT7) || ((IT) == DMA1_IT_TE7) || \ + ((IT) == DMA2_IT_GL1) || ((IT) == DMA2_IT_TC1) || \ + ((IT) == DMA2_IT_HT1) || ((IT) == DMA2_IT_TE1) || \ + ((IT) == DMA2_IT_GL2) || ((IT) == DMA2_IT_TC2) || \ + ((IT) == DMA2_IT_HT2) || ((IT) == DMA2_IT_TE2) || \ + ((IT) == DMA2_IT_GL3) || ((IT) == DMA2_IT_TC3) || \ + ((IT) == DMA2_IT_HT3) || ((IT) == DMA2_IT_TE3) || \ + ((IT) == DMA2_IT_GL4) || ((IT) == DMA2_IT_TC4) || \ + ((IT) == DMA2_IT_HT4) || ((IT) == DMA2_IT_TE4) || \ + ((IT) == DMA2_IT_GL5) || ((IT) == DMA2_IT_TC5) || \ + ((IT) == DMA2_IT_HT5) || ((IT) == DMA2_IT_TE5)) + +/** + * @} + */ + +/** @defgroup DMA_flags_definition + * @{ + */ +#define DMA1_FLAG_GL1 ((uint32_t)0x00000001) +#define DMA1_FLAG_TC1 ((uint32_t)0x00000002) +#define DMA1_FLAG_HT1 ((uint32_t)0x00000004) +#define DMA1_FLAG_TE1 ((uint32_t)0x00000008) +#define DMA1_FLAG_GL2 ((uint32_t)0x00000010) +#define DMA1_FLAG_TC2 ((uint32_t)0x00000020) +#define DMA1_FLAG_HT2 ((uint32_t)0x00000040) +#define DMA1_FLAG_TE2 ((uint32_t)0x00000080) +#define DMA1_FLAG_GL3 ((uint32_t)0x00000100) +#define DMA1_FLAG_TC3 ((uint32_t)0x00000200) +#define DMA1_FLAG_HT3 ((uint32_t)0x00000400) +#define DMA1_FLAG_TE3 ((uint32_t)0x00000800) +#define DMA1_FLAG_GL4 ((uint32_t)0x00001000) +#define DMA1_FLAG_TC4 ((uint32_t)0x00002000) +#define DMA1_FLAG_HT4 ((uint32_t)0x00004000) +#define DMA1_FLAG_TE4 ((uint32_t)0x00008000) +#define DMA1_FLAG_GL5 ((uint32_t)0x00010000) +#define DMA1_FLAG_TC5 ((uint32_t)0x00020000) +#define DMA1_FLAG_HT5 ((uint32_t)0x00040000) +#define DMA1_FLAG_TE5 ((uint32_t)0x00080000) +#define DMA1_FLAG_GL6 ((uint32_t)0x00100000) +#define DMA1_FLAG_TC6 ((uint32_t)0x00200000) +#define DMA1_FLAG_HT6 ((uint32_t)0x00400000) +#define DMA1_FLAG_TE6 ((uint32_t)0x00800000) +#define DMA1_FLAG_GL7 ((uint32_t)0x01000000) +#define DMA1_FLAG_TC7 ((uint32_t)0x02000000) +#define DMA1_FLAG_HT7 ((uint32_t)0x04000000) +#define DMA1_FLAG_TE7 ((uint32_t)0x08000000) + +#define DMA2_FLAG_GL1 ((uint32_t)0x10000001) +#define DMA2_FLAG_TC1 ((uint32_t)0x10000002) +#define DMA2_FLAG_HT1 ((uint32_t)0x10000004) +#define DMA2_FLAG_TE1 ((uint32_t)0x10000008) +#define DMA2_FLAG_GL2 ((uint32_t)0x10000010) +#define DMA2_FLAG_TC2 ((uint32_t)0x10000020) +#define DMA2_FLAG_HT2 ((uint32_t)0x10000040) +#define DMA2_FLAG_TE2 ((uint32_t)0x10000080) +#define DMA2_FLAG_GL3 ((uint32_t)0x10000100) +#define DMA2_FLAG_TC3 ((uint32_t)0x10000200) +#define DMA2_FLAG_HT3 ((uint32_t)0x10000400) +#define DMA2_FLAG_TE3 ((uint32_t)0x10000800) +#define DMA2_FLAG_GL4 ((uint32_t)0x10001000) +#define DMA2_FLAG_TC4 ((uint32_t)0x10002000) +#define DMA2_FLAG_HT4 ((uint32_t)0x10004000) +#define DMA2_FLAG_TE4 ((uint32_t)0x10008000) +#define DMA2_FLAG_GL5 ((uint32_t)0x10010000) +#define DMA2_FLAG_TC5 ((uint32_t)0x10020000) +#define DMA2_FLAG_HT5 ((uint32_t)0x10040000) +#define DMA2_FLAG_TE5 ((uint32_t)0x10080000) + +#define IS_DMA_CLEAR_FLAG(FLAG) (((((FLAG) & 0xF0000000) == 0x00) || (((FLAG) & 0xEFF00000) == 0x00)) && ((FLAG) != 0x00)) + +#define IS_DMA_GET_FLAG(FLAG) (((FLAG) == DMA1_FLAG_GL1) || ((FLAG) == DMA1_FLAG_TC1) || \ + ((FLAG) == DMA1_FLAG_HT1) || ((FLAG) == DMA1_FLAG_TE1) || \ + ((FLAG) == DMA1_FLAG_GL2) || ((FLAG) == DMA1_FLAG_TC2) || \ + ((FLAG) == DMA1_FLAG_HT2) || ((FLAG) == DMA1_FLAG_TE2) || \ + ((FLAG) == DMA1_FLAG_GL3) || ((FLAG) == DMA1_FLAG_TC3) || \ + ((FLAG) == DMA1_FLAG_HT3) || ((FLAG) == DMA1_FLAG_TE3) || \ + ((FLAG) == DMA1_FLAG_GL4) || ((FLAG) == DMA1_FLAG_TC4) || \ + ((FLAG) == DMA1_FLAG_HT4) || ((FLAG) == DMA1_FLAG_TE4) || \ + ((FLAG) == DMA1_FLAG_GL5) || ((FLAG) == DMA1_FLAG_TC5) || \ + ((FLAG) == DMA1_FLAG_HT5) || ((FLAG) == DMA1_FLAG_TE5) || \ + ((FLAG) == DMA1_FLAG_GL6) || ((FLAG) == DMA1_FLAG_TC6) || \ + ((FLAG) == DMA1_FLAG_HT6) || ((FLAG) == DMA1_FLAG_TE6) || \ + ((FLAG) == DMA1_FLAG_GL7) || ((FLAG) == DMA1_FLAG_TC7) || \ + ((FLAG) == DMA1_FLAG_HT7) || ((FLAG) == DMA1_FLAG_TE7) || \ + ((FLAG) == DMA2_FLAG_GL1) || ((FLAG) == DMA2_FLAG_TC1) || \ + ((FLAG) == DMA2_FLAG_HT1) || ((FLAG) == DMA2_FLAG_TE1) || \ + ((FLAG) == DMA2_FLAG_GL2) || ((FLAG) == DMA2_FLAG_TC2) || \ + ((FLAG) == DMA2_FLAG_HT2) || ((FLAG) == DMA2_FLAG_TE2) || \ + ((FLAG) == DMA2_FLAG_GL3) || ((FLAG) == DMA2_FLAG_TC3) || \ + ((FLAG) == DMA2_FLAG_HT3) || ((FLAG) == DMA2_FLAG_TE3) || \ + ((FLAG) == DMA2_FLAG_GL4) || ((FLAG) == DMA2_FLAG_TC4) || \ + ((FLAG) == DMA2_FLAG_HT4) || ((FLAG) == DMA2_FLAG_TE4) || \ + ((FLAG) == DMA2_FLAG_GL5) || ((FLAG) == DMA2_FLAG_TC5) || \ + ((FLAG) == DMA2_FLAG_HT5) || ((FLAG) == DMA2_FLAG_TE5)) +/** + * @} + */ + +/** @defgroup DMA_Buffer_Size + * @{ + */ + +#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1) && ((SIZE) < 0x10000)) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup DMA_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup DMA_Exported_Functions + * @{ + */ + +void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx); +void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct); +void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct); +void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState); +void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState); +void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); +uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx); +FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG); +void DMA_ClearFlag(uint32_t DMAy_FLAG); +ITStatus DMA_GetITStatus(uint32_t DMAy_IT); +void DMA_ClearITPendingBit(uint32_t DMAy_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F10x_DMA_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h new file mode 100644 index 00000000..a1ab7d03 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h @@ -0,0 +1,184 @@ +/** + ****************************************************************************** + * @file stm32f10x_exti.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the EXTI firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_EXTI_H +#define __STM32F10x_EXTI_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup EXTI + * @{ + */ + +/** @defgroup EXTI_Exported_Types + * @{ + */ + +/** + * @brief EXTI mode enumeration + */ + +typedef enum +{ + EXTI_Mode_Interrupt = 0x00, + EXTI_Mode_Event = 0x04 +}EXTIMode_TypeDef; + +#define IS_EXTI_MODE(MODE) (((MODE) == EXTI_Mode_Interrupt) || ((MODE) == EXTI_Mode_Event)) + +/** + * @brief EXTI Trigger enumeration + */ + +typedef enum +{ + EXTI_Trigger_Rising = 0x08, + EXTI_Trigger_Falling = 0x0C, + EXTI_Trigger_Rising_Falling = 0x10 +}EXTITrigger_TypeDef; + +#define IS_EXTI_TRIGGER(TRIGGER) (((TRIGGER) == EXTI_Trigger_Rising) || \ + ((TRIGGER) == EXTI_Trigger_Falling) || \ + ((TRIGGER) == EXTI_Trigger_Rising_Falling)) +/** + * @brief EXTI Init Structure definition + */ + +typedef struct +{ + uint32_t EXTI_Line; /*!< Specifies the EXTI lines to be enabled or disabled. + This parameter can be any combination of @ref EXTI_Lines */ + + EXTIMode_TypeDef EXTI_Mode; /*!< Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTIMode_TypeDef */ + + EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTIMode_TypeDef */ + + FunctionalState EXTI_LineCmd; /*!< Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ +}EXTI_InitTypeDef; + +/** + * @} + */ + +/** @defgroup EXTI_Exported_Constants + * @{ + */ + +/** @defgroup EXTI_Lines + * @{ + */ + +#define EXTI_Line0 ((uint32_t)0x00001) /*!< External interrupt line 0 */ +#define EXTI_Line1 ((uint32_t)0x00002) /*!< External interrupt line 1 */ +#define EXTI_Line2 ((uint32_t)0x00004) /*!< External interrupt line 2 */ +#define EXTI_Line3 ((uint32_t)0x00008) /*!< External interrupt line 3 */ +#define EXTI_Line4 ((uint32_t)0x00010) /*!< External interrupt line 4 */ +#define EXTI_Line5 ((uint32_t)0x00020) /*!< External interrupt line 5 */ +#define EXTI_Line6 ((uint32_t)0x00040) /*!< External interrupt line 6 */ +#define EXTI_Line7 ((uint32_t)0x00080) /*!< External interrupt line 7 */ +#define EXTI_Line8 ((uint32_t)0x00100) /*!< External interrupt line 8 */ +#define EXTI_Line9 ((uint32_t)0x00200) /*!< External interrupt line 9 */ +#define EXTI_Line10 ((uint32_t)0x00400) /*!< External interrupt line 10 */ +#define EXTI_Line11 ((uint32_t)0x00800) /*!< External interrupt line 11 */ +#define EXTI_Line12 ((uint32_t)0x01000) /*!< External interrupt line 12 */ +#define EXTI_Line13 ((uint32_t)0x02000) /*!< External interrupt line 13 */ +#define EXTI_Line14 ((uint32_t)0x04000) /*!< External interrupt line 14 */ +#define EXTI_Line15 ((uint32_t)0x08000) /*!< External interrupt line 15 */ +#define EXTI_Line16 ((uint32_t)0x10000) /*!< External interrupt line 16 Connected to the PVD Output */ +#define EXTI_Line17 ((uint32_t)0x20000) /*!< External interrupt line 17 Connected to the RTC Alarm event */ +#define EXTI_Line18 ((uint32_t)0x40000) /*!< External interrupt line 18 Connected to the USB Device/USB OTG FS + Wakeup from suspend event */ +#define EXTI_Line19 ((uint32_t)0x80000) /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */ + +#define IS_EXTI_LINE(LINE) ((((LINE) & (uint32_t)0xFFF00000) == 0x00) && ((LINE) != (uint16_t)0x00)) +#define IS_GET_EXTI_LINE(LINE) (((LINE) == EXTI_Line0) || ((LINE) == EXTI_Line1) || \ + ((LINE) == EXTI_Line2) || ((LINE) == EXTI_Line3) || \ + ((LINE) == EXTI_Line4) || ((LINE) == EXTI_Line5) || \ + ((LINE) == EXTI_Line6) || ((LINE) == EXTI_Line7) || \ + ((LINE) == EXTI_Line8) || ((LINE) == EXTI_Line9) || \ + ((LINE) == EXTI_Line10) || ((LINE) == EXTI_Line11) || \ + ((LINE) == EXTI_Line12) || ((LINE) == EXTI_Line13) || \ + ((LINE) == EXTI_Line14) || ((LINE) == EXTI_Line15) || \ + ((LINE) == EXTI_Line16) || ((LINE) == EXTI_Line17) || \ + ((LINE) == EXTI_Line18) || ((LINE) == EXTI_Line19)) + + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup EXTI_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup EXTI_Exported_Functions + * @{ + */ + +void EXTI_DeInit(void); +void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); +void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); +void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); +FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line); +void EXTI_ClearFlag(uint32_t EXTI_Line); +ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); +void EXTI_ClearITPendingBit(uint32_t EXTI_Line); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_EXTI_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h new file mode 100644 index 00000000..f46d4e87 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h @@ -0,0 +1,426 @@ +/** + ****************************************************************************** + * @file stm32f10x_flash.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the FLASH + * firmware library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_FLASH_H +#define __STM32F10x_FLASH_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup FLASH + * @{ + */ + +/** @defgroup FLASH_Exported_Types + * @{ + */ + +/** + * @brief FLASH Status + */ + +typedef enum +{ + FLASH_BUSY = 1, + FLASH_ERROR_PG, + FLASH_ERROR_WRP, + FLASH_COMPLETE, + FLASH_TIMEOUT +}FLASH_Status; + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Constants + * @{ + */ + +/** @defgroup Flash_Latency + * @{ + */ + +#define FLASH_Latency_0 ((uint32_t)0x00000000) /*!< FLASH Zero Latency cycle */ +#define FLASH_Latency_1 ((uint32_t)0x00000001) /*!< FLASH One Latency cycle */ +#define FLASH_Latency_2 ((uint32_t)0x00000002) /*!< FLASH Two Latency cycles */ +#define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_Latency_0) || \ + ((LATENCY) == FLASH_Latency_1) || \ + ((LATENCY) == FLASH_Latency_2)) +/** + * @} + */ + +/** @defgroup Half_Cycle_Enable_Disable + * @{ + */ + +#define FLASH_HalfCycleAccess_Enable ((uint32_t)0x00000008) /*!< FLASH Half Cycle Enable */ +#define FLASH_HalfCycleAccess_Disable ((uint32_t)0x00000000) /*!< FLASH Half Cycle Disable */ +#define IS_FLASH_HALFCYCLEACCESS_STATE(STATE) (((STATE) == FLASH_HalfCycleAccess_Enable) || \ + ((STATE) == FLASH_HalfCycleAccess_Disable)) +/** + * @} + */ + +/** @defgroup Prefetch_Buffer_Enable_Disable + * @{ + */ + +#define FLASH_PrefetchBuffer_Enable ((uint32_t)0x00000010) /*!< FLASH Prefetch Buffer Enable */ +#define FLASH_PrefetchBuffer_Disable ((uint32_t)0x00000000) /*!< FLASH Prefetch Buffer Disable */ +#define IS_FLASH_PREFETCHBUFFER_STATE(STATE) (((STATE) == FLASH_PrefetchBuffer_Enable) || \ + ((STATE) == FLASH_PrefetchBuffer_Disable)) +/** + * @} + */ + +/** @defgroup Option_Bytes_Write_Protection + * @{ + */ + +/* Values to be used with STM32 Low and Medium density devices */ +#define FLASH_WRProt_Pages0to3 ((uint32_t)0x00000001) /*!< STM32 Low and Medium density devices: Write protection of page 0 to 3 */ +#define FLASH_WRProt_Pages4to7 ((uint32_t)0x00000002) /*!< STM32 Low and Medium density devices: Write protection of page 4 to 7 */ +#define FLASH_WRProt_Pages8to11 ((uint32_t)0x00000004) /*!< STM32 Low and Medium density devices: Write protection of page 8 to 11 */ +#define FLASH_WRProt_Pages12to15 ((uint32_t)0x00000008) /*!< STM32 Low and Medium density devices: Write protection of page 12 to 15 */ +#define FLASH_WRProt_Pages16to19 ((uint32_t)0x00000010) /*!< STM32 Low and Medium density devices: Write protection of page 16 to 19 */ +#define FLASH_WRProt_Pages20to23 ((uint32_t)0x00000020) /*!< STM32 Low and Medium density devices: Write protection of page 20 to 23 */ +#define FLASH_WRProt_Pages24to27 ((uint32_t)0x00000040) /*!< STM32 Low and Medium density devices: Write protection of page 24 to 27 */ +#define FLASH_WRProt_Pages28to31 ((uint32_t)0x00000080) /*!< STM32 Low and Medium density devices: Write protection of page 28 to 31 */ + +/* Values to be used with STM32 Medium-density devices */ +#define FLASH_WRProt_Pages32to35 ((uint32_t)0x00000100) /*!< STM32 Medium-density devices: Write protection of page 32 to 35 */ +#define FLASH_WRProt_Pages36to39 ((uint32_t)0x00000200) /*!< STM32 Medium-density devices: Write protection of page 36 to 39 */ +#define FLASH_WRProt_Pages40to43 ((uint32_t)0x00000400) /*!< STM32 Medium-density devices: Write protection of page 40 to 43 */ +#define FLASH_WRProt_Pages44to47 ((uint32_t)0x00000800) /*!< STM32 Medium-density devices: Write protection of page 44 to 47 */ +#define FLASH_WRProt_Pages48to51 ((uint32_t)0x00001000) /*!< STM32 Medium-density devices: Write protection of page 48 to 51 */ +#define FLASH_WRProt_Pages52to55 ((uint32_t)0x00002000) /*!< STM32 Medium-density devices: Write protection of page 52 to 55 */ +#define FLASH_WRProt_Pages56to59 ((uint32_t)0x00004000) /*!< STM32 Medium-density devices: Write protection of page 56 to 59 */ +#define FLASH_WRProt_Pages60to63 ((uint32_t)0x00008000) /*!< STM32 Medium-density devices: Write protection of page 60 to 63 */ +#define FLASH_WRProt_Pages64to67 ((uint32_t)0x00010000) /*!< STM32 Medium-density devices: Write protection of page 64 to 67 */ +#define FLASH_WRProt_Pages68to71 ((uint32_t)0x00020000) /*!< STM32 Medium-density devices: Write protection of page 68 to 71 */ +#define FLASH_WRProt_Pages72to75 ((uint32_t)0x00040000) /*!< STM32 Medium-density devices: Write protection of page 72 to 75 */ +#define FLASH_WRProt_Pages76to79 ((uint32_t)0x00080000) /*!< STM32 Medium-density devices: Write protection of page 76 to 79 */ +#define FLASH_WRProt_Pages80to83 ((uint32_t)0x00100000) /*!< STM32 Medium-density devices: Write protection of page 80 to 83 */ +#define FLASH_WRProt_Pages84to87 ((uint32_t)0x00200000) /*!< STM32 Medium-density devices: Write protection of page 84 to 87 */ +#define FLASH_WRProt_Pages88to91 ((uint32_t)0x00400000) /*!< STM32 Medium-density devices: Write protection of page 88 to 91 */ +#define FLASH_WRProt_Pages92to95 ((uint32_t)0x00800000) /*!< STM32 Medium-density devices: Write protection of page 92 to 95 */ +#define FLASH_WRProt_Pages96to99 ((uint32_t)0x01000000) /*!< STM32 Medium-density devices: Write protection of page 96 to 99 */ +#define FLASH_WRProt_Pages100to103 ((uint32_t)0x02000000) /*!< STM32 Medium-density devices: Write protection of page 100 to 103 */ +#define FLASH_WRProt_Pages104to107 ((uint32_t)0x04000000) /*!< STM32 Medium-density devices: Write protection of page 104 to 107 */ +#define FLASH_WRProt_Pages108to111 ((uint32_t)0x08000000) /*!< STM32 Medium-density devices: Write protection of page 108 to 111 */ +#define FLASH_WRProt_Pages112to115 ((uint32_t)0x10000000) /*!< STM32 Medium-density devices: Write protection of page 112 to 115 */ +#define FLASH_WRProt_Pages116to119 ((uint32_t)0x20000000) /*!< STM32 Medium-density devices: Write protection of page 115 to 119 */ +#define FLASH_WRProt_Pages120to123 ((uint32_t)0x40000000) /*!< STM32 Medium-density devices: Write protection of page 120 to 123 */ +#define FLASH_WRProt_Pages124to127 ((uint32_t)0x80000000) /*!< STM32 Medium-density devices: Write protection of page 124 to 127 */ + +/* Values to be used with STM32 High-density and STM32F10X Connectivity line devices */ +#define FLASH_WRProt_Pages0to1 ((uint32_t)0x00000001) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 0 to 1 */ +#define FLASH_WRProt_Pages2to3 ((uint32_t)0x00000002) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 2 to 3 */ +#define FLASH_WRProt_Pages4to5 ((uint32_t)0x00000004) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 4 to 5 */ +#define FLASH_WRProt_Pages6to7 ((uint32_t)0x00000008) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 6 to 7 */ +#define FLASH_WRProt_Pages8to9 ((uint32_t)0x00000010) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 8 to 9 */ +#define FLASH_WRProt_Pages10to11 ((uint32_t)0x00000020) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 10 to 11 */ +#define FLASH_WRProt_Pages12to13 ((uint32_t)0x00000040) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 12 to 13 */ +#define FLASH_WRProt_Pages14to15 ((uint32_t)0x00000080) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 14 to 15 */ +#define FLASH_WRProt_Pages16to17 ((uint32_t)0x00000100) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 16 to 17 */ +#define FLASH_WRProt_Pages18to19 ((uint32_t)0x00000200) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 18 to 19 */ +#define FLASH_WRProt_Pages20to21 ((uint32_t)0x00000400) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 20 to 21 */ +#define FLASH_WRProt_Pages22to23 ((uint32_t)0x00000800) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 22 to 23 */ +#define FLASH_WRProt_Pages24to25 ((uint32_t)0x00001000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 24 to 25 */ +#define FLASH_WRProt_Pages26to27 ((uint32_t)0x00002000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 26 to 27 */ +#define FLASH_WRProt_Pages28to29 ((uint32_t)0x00004000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 28 to 29 */ +#define FLASH_WRProt_Pages30to31 ((uint32_t)0x00008000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 30 to 31 */ +#define FLASH_WRProt_Pages32to33 ((uint32_t)0x00010000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 32 to 33 */ +#define FLASH_WRProt_Pages34to35 ((uint32_t)0x00020000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 34 to 35 */ +#define FLASH_WRProt_Pages36to37 ((uint32_t)0x00040000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 36 to 37 */ +#define FLASH_WRProt_Pages38to39 ((uint32_t)0x00080000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 38 to 39 */ +#define FLASH_WRProt_Pages40to41 ((uint32_t)0x00100000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 40 to 41 */ +#define FLASH_WRProt_Pages42to43 ((uint32_t)0x00200000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 42 to 43 */ +#define FLASH_WRProt_Pages44to45 ((uint32_t)0x00400000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 44 to 45 */ +#define FLASH_WRProt_Pages46to47 ((uint32_t)0x00800000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 46 to 47 */ +#define FLASH_WRProt_Pages48to49 ((uint32_t)0x01000000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 48 to 49 */ +#define FLASH_WRProt_Pages50to51 ((uint32_t)0x02000000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 50 to 51 */ +#define FLASH_WRProt_Pages52to53 ((uint32_t)0x04000000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 52 to 53 */ +#define FLASH_WRProt_Pages54to55 ((uint32_t)0x08000000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 54 to 55 */ +#define FLASH_WRProt_Pages56to57 ((uint32_t)0x10000000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 56 to 57 */ +#define FLASH_WRProt_Pages58to59 ((uint32_t)0x20000000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 58 to 59 */ +#define FLASH_WRProt_Pages60to61 ((uint32_t)0x40000000) /*!< STM32 High-density, XL-density and Connectivity line devices: + Write protection of page 60 to 61 */ +#define FLASH_WRProt_Pages62to127 ((uint32_t)0x80000000) /*!< STM32 Connectivity line devices: Write protection of page 62 to 127 */ +#define FLASH_WRProt_Pages62to255 ((uint32_t)0x80000000) /*!< STM32 Medium-density devices: Write protection of page 62 to 255 */ +#define FLASH_WRProt_Pages62to511 ((uint32_t)0x80000000) /*!< STM32 XL-density devices: Write protection of page 62 to 511 */ + +#define FLASH_WRProt_AllPages ((uint32_t)0xFFFFFFFF) /*!< Write protection of all Pages */ + +#define IS_FLASH_WRPROT_PAGE(PAGE) (((PAGE) != 0x00000000)) + +#define IS_FLASH_ADDRESS(ADDRESS) (((ADDRESS) >= 0x08000000) && ((ADDRESS) < 0x080FFFFF)) + +#define IS_OB_DATA_ADDRESS(ADDRESS) (((ADDRESS) == 0x1FFFF804) || ((ADDRESS) == 0x1FFFF806)) + +/** + * @} + */ + +/** @defgroup Option_Bytes_IWatchdog + * @{ + */ + +#define OB_IWDG_SW ((uint16_t)0x0001) /*!< Software IWDG selected */ +#define OB_IWDG_HW ((uint16_t)0x0000) /*!< Hardware IWDG selected */ +#define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW)) + +/** + * @} + */ + +/** @defgroup Option_Bytes_nRST_STOP + * @{ + */ + +#define OB_STOP_NoRST ((uint16_t)0x0002) /*!< No reset generated when entering in STOP */ +#define OB_STOP_RST ((uint16_t)0x0000) /*!< Reset generated when entering in STOP */ +#define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NoRST) || ((SOURCE) == OB_STOP_RST)) + +/** + * @} + */ + +/** @defgroup Option_Bytes_nRST_STDBY + * @{ + */ + +#define OB_STDBY_NoRST ((uint16_t)0x0004) /*!< No reset generated when entering in STANDBY */ +#define OB_STDBY_RST ((uint16_t)0x0000) /*!< Reset generated when entering in STANDBY */ +#define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NoRST) || ((SOURCE) == OB_STDBY_RST)) + +#ifdef STM32F10X_XL +/** + * @} + */ +/** @defgroup FLASH_Boot + * @{ + */ +#define FLASH_BOOT_Bank1 ((uint16_t)0x0000) /*!< At startup, if boot pins are set in boot from user Flash position + and this parameter is selected the device will boot from Bank1(Default) */ +#define FLASH_BOOT_Bank2 ((uint16_t)0x0001) /*!< At startup, if boot pins are set in boot from user Flash position + and this parameter is selected the device will boot from Bank 2 or Bank 1, + depending on the activation of the bank */ +#define IS_FLASH_BOOT(BOOT) (((BOOT) == FLASH_BOOT_Bank1) || ((BOOT) == FLASH_BOOT_Bank2)) +#endif +/** + * @} + */ +/** @defgroup FLASH_Interrupts + * @{ + */ +#ifdef STM32F10X_XL +#define FLASH_IT_BANK2_ERROR ((uint32_t)0x80000400) /*!< FPEC BANK2 error interrupt source */ +#define FLASH_IT_BANK2_EOP ((uint32_t)0x80001000) /*!< End of FLASH BANK2 Operation Interrupt source */ + +#define FLASH_IT_BANK1_ERROR FLASH_IT_ERROR /*!< FPEC BANK1 error interrupt source */ +#define FLASH_IT_BANK1_EOP FLASH_IT_EOP /*!< End of FLASH BANK1 Operation Interrupt source */ + +#define FLASH_IT_ERROR ((uint32_t)0x00000400) /*!< FPEC BANK1 error interrupt source */ +#define FLASH_IT_EOP ((uint32_t)0x00001000) /*!< End of FLASH BANK1 Operation Interrupt source */ +#define IS_FLASH_IT(IT) ((((IT) & (uint32_t)0x7FFFEBFF) == 0x00000000) && (((IT) != 0x00000000))) +#else +#define FLASH_IT_ERROR ((uint32_t)0x00000400) /*!< FPEC error interrupt source */ +#define FLASH_IT_EOP ((uint32_t)0x00001000) /*!< End of FLASH Operation Interrupt source */ +#define FLASH_IT_BANK1_ERROR FLASH_IT_ERROR /*!< FPEC BANK1 error interrupt source */ +#define FLASH_IT_BANK1_EOP FLASH_IT_EOP /*!< End of FLASH BANK1 Operation Interrupt source */ + +#define IS_FLASH_IT(IT) ((((IT) & (uint32_t)0xFFFFEBFF) == 0x00000000) && (((IT) != 0x00000000))) +#endif + +/** + * @} + */ + +/** @defgroup FLASH_Flags + * @{ + */ +#ifdef STM32F10X_XL +#define FLASH_FLAG_BANK2_BSY ((uint32_t)0x80000001) /*!< FLASH BANK2 Busy flag */ +#define FLASH_FLAG_BANK2_EOP ((uint32_t)0x80000020) /*!< FLASH BANK2 End of Operation flag */ +#define FLASH_FLAG_BANK2_PGERR ((uint32_t)0x80000004) /*!< FLASH BANK2 Program error flag */ +#define FLASH_FLAG_BANK2_WRPRTERR ((uint32_t)0x80000010) /*!< FLASH BANK2 Write protected error flag */ + +#define FLASH_FLAG_BANK1_BSY FLASH_FLAG_BSY /*!< FLASH BANK1 Busy flag*/ +#define FLASH_FLAG_BANK1_EOP FLASH_FLAG_EOP /*!< FLASH BANK1 End of Operation flag */ +#define FLASH_FLAG_BANK1_PGERR FLASH_FLAG_PGERR /*!< FLASH BANK1 Program error flag */ +#define FLASH_FLAG_BANK1_WRPRTERR FLASH_FLAG_WRPRTERR /*!< FLASH BANK1 Write protected error flag */ + +#define FLASH_FLAG_BSY ((uint32_t)0x00000001) /*!< FLASH Busy flag */ +#define FLASH_FLAG_EOP ((uint32_t)0x00000020) /*!< FLASH End of Operation flag */ +#define FLASH_FLAG_PGERR ((uint32_t)0x00000004) /*!< FLASH Program error flag */ +#define FLASH_FLAG_WRPRTERR ((uint32_t)0x00000010) /*!< FLASH Write protected error flag */ +#define FLASH_FLAG_OPTERR ((uint32_t)0x00000001) /*!< FLASH Option Byte error flag */ + +#define IS_FLASH_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0x7FFFFFCA) == 0x00000000) && ((FLAG) != 0x00000000)) +#define IS_FLASH_GET_FLAG(FLAG) (((FLAG) == FLASH_FLAG_BSY) || ((FLAG) == FLASH_FLAG_EOP) || \ + ((FLAG) == FLASH_FLAG_PGERR) || ((FLAG) == FLASH_FLAG_WRPRTERR) || \ + ((FLAG) == FLASH_FLAG_OPTERR)|| \ + ((FLAG) == FLASH_FLAG_BANK1_BSY) || ((FLAG) == FLASH_FLAG_BANK1_EOP) || \ + ((FLAG) == FLASH_FLAG_BANK1_PGERR) || ((FLAG) == FLASH_FLAG_BANK1_WRPRTERR) || \ + ((FLAG) == FLASH_FLAG_BANK2_BSY) || ((FLAG) == FLASH_FLAG_BANK2_EOP) || \ + ((FLAG) == FLASH_FLAG_BANK2_PGERR) || ((FLAG) == FLASH_FLAG_BANK2_WRPRTERR)) +#else +#define FLASH_FLAG_BSY ((uint32_t)0x00000001) /*!< FLASH Busy flag */ +#define FLASH_FLAG_EOP ((uint32_t)0x00000020) /*!< FLASH End of Operation flag */ +#define FLASH_FLAG_PGERR ((uint32_t)0x00000004) /*!< FLASH Program error flag */ +#define FLASH_FLAG_WRPRTERR ((uint32_t)0x00000010) /*!< FLASH Write protected error flag */ +#define FLASH_FLAG_OPTERR ((uint32_t)0x00000001) /*!< FLASH Option Byte error flag */ + +#define FLASH_FLAG_BANK1_BSY FLASH_FLAG_BSY /*!< FLASH BANK1 Busy flag*/ +#define FLASH_FLAG_BANK1_EOP FLASH_FLAG_EOP /*!< FLASH BANK1 End of Operation flag */ +#define FLASH_FLAG_BANK1_PGERR FLASH_FLAG_PGERR /*!< FLASH BANK1 Program error flag */ +#define FLASH_FLAG_BANK1_WRPRTERR FLASH_FLAG_WRPRTERR /*!< FLASH BANK1 Write protected error flag */ + +#define IS_FLASH_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFFFFCA) == 0x00000000) && ((FLAG) != 0x00000000)) +#define IS_FLASH_GET_FLAG(FLAG) (((FLAG) == FLASH_FLAG_BSY) || ((FLAG) == FLASH_FLAG_EOP) || \ + ((FLAG) == FLASH_FLAG_PGERR) || ((FLAG) == FLASH_FLAG_WRPRTERR) || \ + ((FLAG) == FLASH_FLAG_BANK1_BSY) || ((FLAG) == FLASH_FLAG_BANK1_EOP) || \ + ((FLAG) == FLASH_FLAG_BANK1_PGERR) || ((FLAG) == FLASH_FLAG_BANK1_WRPRTERR) || \ + ((FLAG) == FLASH_FLAG_OPTERR)) +#endif + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Functions + * @{ + */ + +/*------------ Functions used for all STM32F10x devices -----*/ +void FLASH_SetLatency(uint32_t FLASH_Latency); +void FLASH_HalfCycleAccessCmd(uint32_t FLASH_HalfCycleAccess); +void FLASH_PrefetchBufferCmd(uint32_t FLASH_PrefetchBuffer); +void FLASH_Unlock(void); +void FLASH_Lock(void); +FLASH_Status FLASH_ErasePage(uint32_t Page_Address); +FLASH_Status FLASH_EraseAllPages(void); +FLASH_Status FLASH_EraseOptionBytes(void); +FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data); +FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data); +FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data); +FLASH_Status FLASH_EnableWriteProtection(uint32_t FLASH_Pages); +FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState); +FLASH_Status FLASH_UserOptionByteConfig(uint16_t OB_IWDG, uint16_t OB_STOP, uint16_t OB_STDBY); +uint32_t FLASH_GetUserOptionByte(void); +uint32_t FLASH_GetWriteProtectionOptionByte(void); +FlagStatus FLASH_GetReadOutProtectionStatus(void); +FlagStatus FLASH_GetPrefetchBufferStatus(void); +void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState); +FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG); +void FLASH_ClearFlag(uint32_t FLASH_FLAG); +FLASH_Status FLASH_GetStatus(void); +FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout); + +/*------------ New function used for all STM32F10x devices -----*/ +void FLASH_UnlockBank1(void); +void FLASH_LockBank1(void); +FLASH_Status FLASH_EraseAllBank1Pages(void); +FLASH_Status FLASH_GetBank1Status(void); +FLASH_Status FLASH_WaitForLastBank1Operation(uint32_t Timeout); + +#ifdef STM32F10X_XL +/*---- New Functions used only with STM32F10x_XL density devices -----*/ +void FLASH_UnlockBank2(void); +void FLASH_LockBank2(void); +FLASH_Status FLASH_EraseAllBank2Pages(void); +FLASH_Status FLASH_GetBank2Status(void); +FLASH_Status FLASH_WaitForLastBank2Operation(uint32_t Timeout); +FLASH_Status FLASH_BootConfig(uint16_t FLASH_BOOT); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_FLASH_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h new file mode 100644 index 00000000..ee707e74 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h @@ -0,0 +1,733 @@ +/** + ****************************************************************************** + * @file stm32f10x_fsmc.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the FSMC firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_FSMC_H +#define __STM32F10x_FSMC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup FSMC + * @{ + */ + +/** @defgroup FSMC_Exported_Types + * @{ + */ + +/** + * @brief Timing parameters For NOR/SRAM Banks + */ + +typedef struct +{ + uint32_t FSMC_AddressSetupTime; /*!< Defines the number of HCLK cycles to configure + the duration of the address setup time. + This parameter can be a value between 0 and 0xF. + @note: It is not used with synchronous NOR Flash memories. */ + + uint32_t FSMC_AddressHoldTime; /*!< Defines the number of HCLK cycles to configure + the duration of the address hold time. + This parameter can be a value between 0 and 0xF. + @note: It is not used with synchronous NOR Flash memories.*/ + + uint32_t FSMC_DataSetupTime; /*!< Defines the number of HCLK cycles to configure + the duration of the data setup time. + This parameter can be a value between 0 and 0xFF. + @note: It is used for SRAMs, ROMs and asynchronous multiplexed NOR Flash memories. */ + + uint32_t FSMC_BusTurnAroundDuration; /*!< Defines the number of HCLK cycles to configure + the duration of the bus turnaround. + This parameter can be a value between 0 and 0xF. + @note: It is only used for multiplexed NOR Flash memories. */ + + uint32_t FSMC_CLKDivision; /*!< Defines the period of CLK clock output signal, expressed in number of HCLK cycles. + This parameter can be a value between 1 and 0xF. + @note: This parameter is not used for asynchronous NOR Flash, SRAM or ROM accesses. */ + + uint32_t FSMC_DataLatency; /*!< Defines the number of memory clock cycles to issue + to the memory before getting the first data. + The value of this parameter depends on the memory type as shown below: + - It must be set to 0 in case of a CRAM + - It is don't care in asynchronous NOR, SRAM or ROM accesses + - It may assume a value between 0 and 0xF in NOR Flash memories + with synchronous burst mode enable */ + + uint32_t FSMC_AccessMode; /*!< Specifies the asynchronous access mode. + This parameter can be a value of @ref FSMC_Access_Mode */ +}FSMC_NORSRAMTimingInitTypeDef; + +/** + * @brief FSMC NOR/SRAM Init structure definition + */ + +typedef struct +{ + uint32_t FSMC_Bank; /*!< Specifies the NOR/SRAM memory bank that will be used. + This parameter can be a value of @ref FSMC_NORSRAM_Bank */ + + uint32_t FSMC_DataAddressMux; /*!< Specifies whether the address and data values are + multiplexed on the databus or not. + This parameter can be a value of @ref FSMC_Data_Address_Bus_Multiplexing */ + + uint32_t FSMC_MemoryType; /*!< Specifies the type of external memory attached to + the corresponding memory bank. + This parameter can be a value of @ref FSMC_Memory_Type */ + + uint32_t FSMC_MemoryDataWidth; /*!< Specifies the external memory device width. + This parameter can be a value of @ref FSMC_Data_Width */ + + uint32_t FSMC_BurstAccessMode; /*!< Enables or disables the burst access mode for Flash memory, + valid only with synchronous burst Flash memories. + This parameter can be a value of @ref FSMC_Burst_Access_Mode */ + + uint32_t FSMC_AsynchronousWait; /*!< Enables or disables wait signal during asynchronous transfers, + valid only with asynchronous Flash memories. + This parameter can be a value of @ref FSMC_AsynchronousWait */ + + uint32_t FSMC_WaitSignalPolarity; /*!< Specifies the wait signal polarity, valid only when accessing + the Flash memory in burst mode. + This parameter can be a value of @ref FSMC_Wait_Signal_Polarity */ + + uint32_t FSMC_WrapMode; /*!< Enables or disables the Wrapped burst access mode for Flash + memory, valid only when accessing Flash memories in burst mode. + This parameter can be a value of @ref FSMC_Wrap_Mode */ + + uint32_t FSMC_WaitSignalActive; /*!< Specifies if the wait signal is asserted by the memory one + clock cycle before the wait state or during the wait state, + valid only when accessing memories in burst mode. + This parameter can be a value of @ref FSMC_Wait_Timing */ + + uint32_t FSMC_WriteOperation; /*!< Enables or disables the write operation in the selected bank by the FSMC. + This parameter can be a value of @ref FSMC_Write_Operation */ + + uint32_t FSMC_WaitSignal; /*!< Enables or disables the wait-state insertion via wait + signal, valid for Flash memory access in burst mode. + This parameter can be a value of @ref FSMC_Wait_Signal */ + + uint32_t FSMC_ExtendedMode; /*!< Enables or disables the extended mode. + This parameter can be a value of @ref FSMC_Extended_Mode */ + + uint32_t FSMC_WriteBurst; /*!< Enables or disables the write burst operation. + This parameter can be a value of @ref FSMC_Write_Burst */ + + FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct; /*!< Timing Parameters for write and read access if the ExtendedMode is not used*/ + + FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct; /*!< Timing Parameters for write access if the ExtendedMode is used*/ +}FSMC_NORSRAMInitTypeDef; + +/** + * @brief Timing parameters For FSMC NAND and PCCARD Banks + */ + +typedef struct +{ + uint32_t FSMC_SetupTime; /*!< Defines the number of HCLK cycles to setup address before + the command assertion for NAND-Flash read or write access + to common/Attribute or I/O memory space (depending on + the memory space timing to be configured). + This parameter can be a value between 0 and 0xFF.*/ + + uint32_t FSMC_WaitSetupTime; /*!< Defines the minimum number of HCLK cycles to assert the + command for NAND-Flash read or write access to + common/Attribute or I/O memory space (depending on the + memory space timing to be configured). + This parameter can be a number between 0x00 and 0xFF */ + + uint32_t FSMC_HoldSetupTime; /*!< Defines the number of HCLK clock cycles to hold address + (and data for write access) after the command deassertion + for NAND-Flash read or write access to common/Attribute + or I/O memory space (depending on the memory space timing + to be configured). + This parameter can be a number between 0x00 and 0xFF */ + + uint32_t FSMC_HiZSetupTime; /*!< Defines the number of HCLK clock cycles during which the + databus is kept in HiZ after the start of a NAND-Flash + write access to common/Attribute or I/O memory space (depending + on the memory space timing to be configured). + This parameter can be a number between 0x00 and 0xFF */ +}FSMC_NAND_PCCARDTimingInitTypeDef; + +/** + * @brief FSMC NAND Init structure definition + */ + +typedef struct +{ + uint32_t FSMC_Bank; /*!< Specifies the NAND memory bank that will be used. + This parameter can be a value of @ref FSMC_NAND_Bank */ + + uint32_t FSMC_Waitfeature; /*!< Enables or disables the Wait feature for the NAND Memory Bank. + This parameter can be any value of @ref FSMC_Wait_feature */ + + uint32_t FSMC_MemoryDataWidth; /*!< Specifies the external memory device width. + This parameter can be any value of @ref FSMC_Data_Width */ + + uint32_t FSMC_ECC; /*!< Enables or disables the ECC computation. + This parameter can be any value of @ref FSMC_ECC */ + + uint32_t FSMC_ECCPageSize; /*!< Defines the page size for the extended ECC. + This parameter can be any value of @ref FSMC_ECC_Page_Size */ + + uint32_t FSMC_TCLRSetupTime; /*!< Defines the number of HCLK cycles to configure the + delay between CLE low and RE low. + This parameter can be a value between 0 and 0xFF. */ + + uint32_t FSMC_TARSetupTime; /*!< Defines the number of HCLK cycles to configure the + delay between ALE low and RE low. + This parameter can be a number between 0x0 and 0xFF */ + + FSMC_NAND_PCCARDTimingInitTypeDef* FSMC_CommonSpaceTimingStruct; /*!< FSMC Common Space Timing */ + + FSMC_NAND_PCCARDTimingInitTypeDef* FSMC_AttributeSpaceTimingStruct; /*!< FSMC Attribute Space Timing */ +}FSMC_NANDInitTypeDef; + +/** + * @brief FSMC PCCARD Init structure definition + */ + +typedef struct +{ + uint32_t FSMC_Waitfeature; /*!< Enables or disables the Wait feature for the Memory Bank. + This parameter can be any value of @ref FSMC_Wait_feature */ + + uint32_t FSMC_TCLRSetupTime; /*!< Defines the number of HCLK cycles to configure the + delay between CLE low and RE low. + This parameter can be a value between 0 and 0xFF. */ + + uint32_t FSMC_TARSetupTime; /*!< Defines the number of HCLK cycles to configure the + delay between ALE low and RE low. + This parameter can be a number between 0x0 and 0xFF */ + + + FSMC_NAND_PCCARDTimingInitTypeDef* FSMC_CommonSpaceTimingStruct; /*!< FSMC Common Space Timing */ + + FSMC_NAND_PCCARDTimingInitTypeDef* FSMC_AttributeSpaceTimingStruct; /*!< FSMC Attribute Space Timing */ + + FSMC_NAND_PCCARDTimingInitTypeDef* FSMC_IOSpaceTimingStruct; /*!< FSMC IO Space Timing */ +}FSMC_PCCARDInitTypeDef; + +/** + * @} + */ + +/** @defgroup FSMC_Exported_Constants + * @{ + */ + +/** @defgroup FSMC_NORSRAM_Bank + * @{ + */ +#define FSMC_Bank1_NORSRAM1 ((uint32_t)0x00000000) +#define FSMC_Bank1_NORSRAM2 ((uint32_t)0x00000002) +#define FSMC_Bank1_NORSRAM3 ((uint32_t)0x00000004) +#define FSMC_Bank1_NORSRAM4 ((uint32_t)0x00000006) +/** + * @} + */ + +/** @defgroup FSMC_NAND_Bank + * @{ + */ +#define FSMC_Bank2_NAND ((uint32_t)0x00000010) +#define FSMC_Bank3_NAND ((uint32_t)0x00000100) +/** + * @} + */ + +/** @defgroup FSMC_PCCARD_Bank + * @{ + */ +#define FSMC_Bank4_PCCARD ((uint32_t)0x00001000) +/** + * @} + */ + +#define IS_FSMC_NORSRAM_BANK(BANK) (((BANK) == FSMC_Bank1_NORSRAM1) || \ + ((BANK) == FSMC_Bank1_NORSRAM2) || \ + ((BANK) == FSMC_Bank1_NORSRAM3) || \ + ((BANK) == FSMC_Bank1_NORSRAM4)) + +#define IS_FSMC_NAND_BANK(BANK) (((BANK) == FSMC_Bank2_NAND) || \ + ((BANK) == FSMC_Bank3_NAND)) + +#define IS_FSMC_GETFLAG_BANK(BANK) (((BANK) == FSMC_Bank2_NAND) || \ + ((BANK) == FSMC_Bank3_NAND) || \ + ((BANK) == FSMC_Bank4_PCCARD)) + +#define IS_FSMC_IT_BANK(BANK) (((BANK) == FSMC_Bank2_NAND) || \ + ((BANK) == FSMC_Bank3_NAND) || \ + ((BANK) == FSMC_Bank4_PCCARD)) + +/** @defgroup NOR_SRAM_Controller + * @{ + */ + +/** @defgroup FSMC_Data_Address_Bus_Multiplexing + * @{ + */ + +#define FSMC_DataAddressMux_Disable ((uint32_t)0x00000000) +#define FSMC_DataAddressMux_Enable ((uint32_t)0x00000002) +#define IS_FSMC_MUX(MUX) (((MUX) == FSMC_DataAddressMux_Disable) || \ + ((MUX) == FSMC_DataAddressMux_Enable)) + +/** + * @} + */ + +/** @defgroup FSMC_Memory_Type + * @{ + */ + +#define FSMC_MemoryType_SRAM ((uint32_t)0x00000000) +#define FSMC_MemoryType_PSRAM ((uint32_t)0x00000004) +#define FSMC_MemoryType_NOR ((uint32_t)0x00000008) +#define IS_FSMC_MEMORY(MEMORY) (((MEMORY) == FSMC_MemoryType_SRAM) || \ + ((MEMORY) == FSMC_MemoryType_PSRAM)|| \ + ((MEMORY) == FSMC_MemoryType_NOR)) + +/** + * @} + */ + +/** @defgroup FSMC_Data_Width + * @{ + */ + +#define FSMC_MemoryDataWidth_8b ((uint32_t)0x00000000) +#define FSMC_MemoryDataWidth_16b ((uint32_t)0x00000010) +#define IS_FSMC_MEMORY_WIDTH(WIDTH) (((WIDTH) == FSMC_MemoryDataWidth_8b) || \ + ((WIDTH) == FSMC_MemoryDataWidth_16b)) + +/** + * @} + */ + +/** @defgroup FSMC_Burst_Access_Mode + * @{ + */ + +#define FSMC_BurstAccessMode_Disable ((uint32_t)0x00000000) +#define FSMC_BurstAccessMode_Enable ((uint32_t)0x00000100) +#define IS_FSMC_BURSTMODE(STATE) (((STATE) == FSMC_BurstAccessMode_Disable) || \ + ((STATE) == FSMC_BurstAccessMode_Enable)) +/** + * @} + */ + +/** @defgroup FSMC_AsynchronousWait + * @{ + */ +#define FSMC_AsynchronousWait_Disable ((uint32_t)0x00000000) +#define FSMC_AsynchronousWait_Enable ((uint32_t)0x00008000) +#define IS_FSMC_ASYNWAIT(STATE) (((STATE) == FSMC_AsynchronousWait_Disable) || \ + ((STATE) == FSMC_AsynchronousWait_Enable)) + +/** + * @} + */ + +/** @defgroup FSMC_Wait_Signal_Polarity + * @{ + */ + +#define FSMC_WaitSignalPolarity_Low ((uint32_t)0x00000000) +#define FSMC_WaitSignalPolarity_High ((uint32_t)0x00000200) +#define IS_FSMC_WAIT_POLARITY(POLARITY) (((POLARITY) == FSMC_WaitSignalPolarity_Low) || \ + ((POLARITY) == FSMC_WaitSignalPolarity_High)) + +/** + * @} + */ + +/** @defgroup FSMC_Wrap_Mode + * @{ + */ + +#define FSMC_WrapMode_Disable ((uint32_t)0x00000000) +#define FSMC_WrapMode_Enable ((uint32_t)0x00000400) +#define IS_FSMC_WRAP_MODE(MODE) (((MODE) == FSMC_WrapMode_Disable) || \ + ((MODE) == FSMC_WrapMode_Enable)) + +/** + * @} + */ + +/** @defgroup FSMC_Wait_Timing + * @{ + */ + +#define FSMC_WaitSignalActive_BeforeWaitState ((uint32_t)0x00000000) +#define FSMC_WaitSignalActive_DuringWaitState ((uint32_t)0x00000800) +#define IS_FSMC_WAIT_SIGNAL_ACTIVE(ACTIVE) (((ACTIVE) == FSMC_WaitSignalActive_BeforeWaitState) || \ + ((ACTIVE) == FSMC_WaitSignalActive_DuringWaitState)) + +/** + * @} + */ + +/** @defgroup FSMC_Write_Operation + * @{ + */ + +#define FSMC_WriteOperation_Disable ((uint32_t)0x00000000) +#define FSMC_WriteOperation_Enable ((uint32_t)0x00001000) +#define IS_FSMC_WRITE_OPERATION(OPERATION) (((OPERATION) == FSMC_WriteOperation_Disable) || \ + ((OPERATION) == FSMC_WriteOperation_Enable)) + +/** + * @} + */ + +/** @defgroup FSMC_Wait_Signal + * @{ + */ + +#define FSMC_WaitSignal_Disable ((uint32_t)0x00000000) +#define FSMC_WaitSignal_Enable ((uint32_t)0x00002000) +#define IS_FSMC_WAITE_SIGNAL(SIGNAL) (((SIGNAL) == FSMC_WaitSignal_Disable) || \ + ((SIGNAL) == FSMC_WaitSignal_Enable)) +/** + * @} + */ + +/** @defgroup FSMC_Extended_Mode + * @{ + */ + +#define FSMC_ExtendedMode_Disable ((uint32_t)0x00000000) +#define FSMC_ExtendedMode_Enable ((uint32_t)0x00004000) + +#define IS_FSMC_EXTENDED_MODE(MODE) (((MODE) == FSMC_ExtendedMode_Disable) || \ + ((MODE) == FSMC_ExtendedMode_Enable)) + +/** + * @} + */ + +/** @defgroup FSMC_Write_Burst + * @{ + */ + +#define FSMC_WriteBurst_Disable ((uint32_t)0x00000000) +#define FSMC_WriteBurst_Enable ((uint32_t)0x00080000) +#define IS_FSMC_WRITE_BURST(BURST) (((BURST) == FSMC_WriteBurst_Disable) || \ + ((BURST) == FSMC_WriteBurst_Enable)) +/** + * @} + */ + +/** @defgroup FSMC_Address_Setup_Time + * @{ + */ + +#define IS_FSMC_ADDRESS_SETUP_TIME(TIME) ((TIME) <= 0xF) + +/** + * @} + */ + +/** @defgroup FSMC_Address_Hold_Time + * @{ + */ + +#define IS_FSMC_ADDRESS_HOLD_TIME(TIME) ((TIME) <= 0xF) + +/** + * @} + */ + +/** @defgroup FSMC_Data_Setup_Time + * @{ + */ + +#define IS_FSMC_DATASETUP_TIME(TIME) (((TIME) > 0) && ((TIME) <= 0xFF)) + +/** + * @} + */ + +/** @defgroup FSMC_Bus_Turn_around_Duration + * @{ + */ + +#define IS_FSMC_TURNAROUND_TIME(TIME) ((TIME) <= 0xF) + +/** + * @} + */ + +/** @defgroup FSMC_CLK_Division + * @{ + */ + +#define IS_FSMC_CLK_DIV(DIV) ((DIV) <= 0xF) + +/** + * @} + */ + +/** @defgroup FSMC_Data_Latency + * @{ + */ + +#define IS_FSMC_DATA_LATENCY(LATENCY) ((LATENCY) <= 0xF) + +/** + * @} + */ + +/** @defgroup FSMC_Access_Mode + * @{ + */ + +#define FSMC_AccessMode_A ((uint32_t)0x00000000) +#define FSMC_AccessMode_B ((uint32_t)0x10000000) +#define FSMC_AccessMode_C ((uint32_t)0x20000000) +#define FSMC_AccessMode_D ((uint32_t)0x30000000) +#define IS_FSMC_ACCESS_MODE(MODE) (((MODE) == FSMC_AccessMode_A) || \ + ((MODE) == FSMC_AccessMode_B) || \ + ((MODE) == FSMC_AccessMode_C) || \ + ((MODE) == FSMC_AccessMode_D)) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup NAND_PCCARD_Controller + * @{ + */ + +/** @defgroup FSMC_Wait_feature + * @{ + */ + +#define FSMC_Waitfeature_Disable ((uint32_t)0x00000000) +#define FSMC_Waitfeature_Enable ((uint32_t)0x00000002) +#define IS_FSMC_WAIT_FEATURE(FEATURE) (((FEATURE) == FSMC_Waitfeature_Disable) || \ + ((FEATURE) == FSMC_Waitfeature_Enable)) + +/** + * @} + */ + + +/** @defgroup FSMC_ECC + * @{ + */ + +#define FSMC_ECC_Disable ((uint32_t)0x00000000) +#define FSMC_ECC_Enable ((uint32_t)0x00000040) +#define IS_FSMC_ECC_STATE(STATE) (((STATE) == FSMC_ECC_Disable) || \ + ((STATE) == FSMC_ECC_Enable)) + +/** + * @} + */ + +/** @defgroup FSMC_ECC_Page_Size + * @{ + */ + +#define FSMC_ECCPageSize_256Bytes ((uint32_t)0x00000000) +#define FSMC_ECCPageSize_512Bytes ((uint32_t)0x00020000) +#define FSMC_ECCPageSize_1024Bytes ((uint32_t)0x00040000) +#define FSMC_ECCPageSize_2048Bytes ((uint32_t)0x00060000) +#define FSMC_ECCPageSize_4096Bytes ((uint32_t)0x00080000) +#define FSMC_ECCPageSize_8192Bytes ((uint32_t)0x000A0000) +#define IS_FSMC_ECCPAGE_SIZE(SIZE) (((SIZE) == FSMC_ECCPageSize_256Bytes) || \ + ((SIZE) == FSMC_ECCPageSize_512Bytes) || \ + ((SIZE) == FSMC_ECCPageSize_1024Bytes) || \ + ((SIZE) == FSMC_ECCPageSize_2048Bytes) || \ + ((SIZE) == FSMC_ECCPageSize_4096Bytes) || \ + ((SIZE) == FSMC_ECCPageSize_8192Bytes)) + +/** + * @} + */ + +/** @defgroup FSMC_TCLR_Setup_Time + * @{ + */ + +#define IS_FSMC_TCLR_TIME(TIME) ((TIME) <= 0xFF) + +/** + * @} + */ + +/** @defgroup FSMC_TAR_Setup_Time + * @{ + */ + +#define IS_FSMC_TAR_TIME(TIME) ((TIME) <= 0xFF) + +/** + * @} + */ + +/** @defgroup FSMC_Setup_Time + * @{ + */ + +#define IS_FSMC_SETUP_TIME(TIME) ((TIME) <= 0xFF) + +/** + * @} + */ + +/** @defgroup FSMC_Wait_Setup_Time + * @{ + */ + +#define IS_FSMC_WAIT_TIME(TIME) ((TIME) <= 0xFF) + +/** + * @} + */ + +/** @defgroup FSMC_Hold_Setup_Time + * @{ + */ + +#define IS_FSMC_HOLD_TIME(TIME) ((TIME) <= 0xFF) + +/** + * @} + */ + +/** @defgroup FSMC_HiZ_Setup_Time + * @{ + */ + +#define IS_FSMC_HIZ_TIME(TIME) ((TIME) <= 0xFF) + +/** + * @} + */ + +/** @defgroup FSMC_Interrupt_sources + * @{ + */ + +#define FSMC_IT_RisingEdge ((uint32_t)0x00000008) +#define FSMC_IT_Level ((uint32_t)0x00000010) +#define FSMC_IT_FallingEdge ((uint32_t)0x00000020) +#define IS_FSMC_IT(IT) ((((IT) & (uint32_t)0xFFFFFFC7) == 0x00000000) && ((IT) != 0x00000000)) +#define IS_FSMC_GET_IT(IT) (((IT) == FSMC_IT_RisingEdge) || \ + ((IT) == FSMC_IT_Level) || \ + ((IT) == FSMC_IT_FallingEdge)) +/** + * @} + */ + +/** @defgroup FSMC_Flags + * @{ + */ + +#define FSMC_FLAG_RisingEdge ((uint32_t)0x00000001) +#define FSMC_FLAG_Level ((uint32_t)0x00000002) +#define FSMC_FLAG_FallingEdge ((uint32_t)0x00000004) +#define FSMC_FLAG_FEMPT ((uint32_t)0x00000040) +#define IS_FSMC_GET_FLAG(FLAG) (((FLAG) == FSMC_FLAG_RisingEdge) || \ + ((FLAG) == FSMC_FLAG_Level) || \ + ((FLAG) == FSMC_FLAG_FallingEdge) || \ + ((FLAG) == FSMC_FLAG_FEMPT)) + +#define IS_FSMC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFFFFF8) == 0x00000000) && ((FLAG) != 0x00000000)) + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup FSMC_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup FSMC_Exported_Functions + * @{ + */ + +void FSMC_NORSRAMDeInit(uint32_t FSMC_Bank); +void FSMC_NANDDeInit(uint32_t FSMC_Bank); +void FSMC_PCCARDDeInit(void); +void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct); +void FSMC_NANDInit(FSMC_NANDInitTypeDef* FSMC_NANDInitStruct); +void FSMC_PCCARDInit(FSMC_PCCARDInitTypeDef* FSMC_PCCARDInitStruct); +void FSMC_NORSRAMStructInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct); +void FSMC_NANDStructInit(FSMC_NANDInitTypeDef* FSMC_NANDInitStruct); +void FSMC_PCCARDStructInit(FSMC_PCCARDInitTypeDef* FSMC_PCCARDInitStruct); +void FSMC_NORSRAMCmd(uint32_t FSMC_Bank, FunctionalState NewState); +void FSMC_NANDCmd(uint32_t FSMC_Bank, FunctionalState NewState); +void FSMC_PCCARDCmd(FunctionalState NewState); +void FSMC_NANDECCCmd(uint32_t FSMC_Bank, FunctionalState NewState); +uint32_t FSMC_GetECC(uint32_t FSMC_Bank); +void FSMC_ITConfig(uint32_t FSMC_Bank, uint32_t FSMC_IT, FunctionalState NewState); +FlagStatus FSMC_GetFlagStatus(uint32_t FSMC_Bank, uint32_t FSMC_FLAG); +void FSMC_ClearFlag(uint32_t FSMC_Bank, uint32_t FSMC_FLAG); +ITStatus FSMC_GetITStatus(uint32_t FSMC_Bank, uint32_t FSMC_IT); +void FSMC_ClearITPendingBit(uint32_t FSMC_Bank, uint32_t FSMC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F10x_FSMC_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h new file mode 100644 index 00000000..b8aa49a2 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h @@ -0,0 +1,385 @@ +/** + ****************************************************************************** + * @file stm32f10x_gpio.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the GPIO + * firmware library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_GPIO_H +#define __STM32F10x_GPIO_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup GPIO + * @{ + */ + +/** @defgroup GPIO_Exported_Types + * @{ + */ + +#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \ + ((PERIPH) == GPIOB) || \ + ((PERIPH) == GPIOC) || \ + ((PERIPH) == GPIOD) || \ + ((PERIPH) == GPIOE) || \ + ((PERIPH) == GPIOF) || \ + ((PERIPH) == GPIOG)) + +/** + * @brief Output Maximum frequency selection + */ + +typedef enum +{ + GPIO_Speed_10MHz = 1, + GPIO_Speed_2MHz, + GPIO_Speed_50MHz +}GPIOSpeed_TypeDef; +#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_10MHz) || ((SPEED) == GPIO_Speed_2MHz) || \ + ((SPEED) == GPIO_Speed_50MHz)) + +/** + * @brief Configuration Mode enumeration + */ + +typedef enum +{ GPIO_Mode_AIN = 0x0, + GPIO_Mode_IN_FLOATING = 0x04, + GPIO_Mode_IPD = 0x28, + GPIO_Mode_IPU = 0x48, + GPIO_Mode_Out_OD = 0x14, + GPIO_Mode_Out_PP = 0x10, + GPIO_Mode_AF_OD = 0x1C, + GPIO_Mode_AF_PP = 0x18 +}GPIOMode_TypeDef; + +#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || \ + ((MODE) == GPIO_Mode_IPD) || ((MODE) == GPIO_Mode_IPU) || \ + ((MODE) == GPIO_Mode_Out_OD) || ((MODE) == GPIO_Mode_Out_PP) || \ + ((MODE) == GPIO_Mode_AF_OD) || ((MODE) == GPIO_Mode_AF_PP)) + +/** + * @brief GPIO Init structure definition + */ + +typedef struct +{ + uint16_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_pins_define */ + + GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIOSpeed_TypeDef */ + + GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIOMode_TypeDef */ +}GPIO_InitTypeDef; + + +/** + * @brief Bit_SET and Bit_RESET enumeration + */ + +typedef enum +{ Bit_RESET = 0, + Bit_SET +}BitAction; + +#define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET)) + +/** + * @} + */ + +/** @defgroup GPIO_Exported_Constants + * @{ + */ + +/** @defgroup GPIO_pins_define + * @{ + */ + +#define GPIO_Pin_0 ((uint16_t)0x0001) /*!< Pin 0 selected */ +#define GPIO_Pin_1 ((uint16_t)0x0002) /*!< Pin 1 selected */ +#define GPIO_Pin_2 ((uint16_t)0x0004) /*!< Pin 2 selected */ +#define GPIO_Pin_3 ((uint16_t)0x0008) /*!< Pin 3 selected */ +#define GPIO_Pin_4 ((uint16_t)0x0010) /*!< Pin 4 selected */ +#define GPIO_Pin_5 ((uint16_t)0x0020) /*!< Pin 5 selected */ +#define GPIO_Pin_6 ((uint16_t)0x0040) /*!< Pin 6 selected */ +#define GPIO_Pin_7 ((uint16_t)0x0080) /*!< Pin 7 selected */ +#define GPIO_Pin_8 ((uint16_t)0x0100) /*!< Pin 8 selected */ +#define GPIO_Pin_9 ((uint16_t)0x0200) /*!< Pin 9 selected */ +#define GPIO_Pin_10 ((uint16_t)0x0400) /*!< Pin 10 selected */ +#define GPIO_Pin_11 ((uint16_t)0x0800) /*!< Pin 11 selected */ +#define GPIO_Pin_12 ((uint16_t)0x1000) /*!< Pin 12 selected */ +#define GPIO_Pin_13 ((uint16_t)0x2000) /*!< Pin 13 selected */ +#define GPIO_Pin_14 ((uint16_t)0x4000) /*!< Pin 14 selected */ +#define GPIO_Pin_15 ((uint16_t)0x8000) /*!< Pin 15 selected */ +#define GPIO_Pin_All ((uint16_t)0xFFFF) /*!< All pins selected */ + +#define IS_GPIO_PIN(PIN) ((((PIN) & (uint16_t)0x00) == 0x00) && ((PIN) != (uint16_t)0x00)) + +#define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \ + ((PIN) == GPIO_Pin_1) || \ + ((PIN) == GPIO_Pin_2) || \ + ((PIN) == GPIO_Pin_3) || \ + ((PIN) == GPIO_Pin_4) || \ + ((PIN) == GPIO_Pin_5) || \ + ((PIN) == GPIO_Pin_6) || \ + ((PIN) == GPIO_Pin_7) || \ + ((PIN) == GPIO_Pin_8) || \ + ((PIN) == GPIO_Pin_9) || \ + ((PIN) == GPIO_Pin_10) || \ + ((PIN) == GPIO_Pin_11) || \ + ((PIN) == GPIO_Pin_12) || \ + ((PIN) == GPIO_Pin_13) || \ + ((PIN) == GPIO_Pin_14) || \ + ((PIN) == GPIO_Pin_15)) + +/** + * @} + */ + +/** @defgroup GPIO_Remap_define + * @{ + */ + +#define GPIO_Remap_SPI1 ((uint32_t)0x00000001) /*!< SPI1 Alternate Function mapping */ +#define GPIO_Remap_I2C1 ((uint32_t)0x00000002) /*!< I2C1 Alternate Function mapping */ +#define GPIO_Remap_USART1 ((uint32_t)0x00000004) /*!< USART1 Alternate Function mapping */ +#define GPIO_Remap_USART2 ((uint32_t)0x00000008) /*!< USART2 Alternate Function mapping */ +#define GPIO_PartialRemap_USART3 ((uint32_t)0x00140010) /*!< USART3 Partial Alternate Function mapping */ +#define GPIO_FullRemap_USART3 ((uint32_t)0x00140030) /*!< USART3 Full Alternate Function mapping */ +#define GPIO_PartialRemap_TIM1 ((uint32_t)0x00160040) /*!< TIM1 Partial Alternate Function mapping */ +#define GPIO_FullRemap_TIM1 ((uint32_t)0x001600C0) /*!< TIM1 Full Alternate Function mapping */ +#define GPIO_PartialRemap1_TIM2 ((uint32_t)0x00180100) /*!< TIM2 Partial1 Alternate Function mapping */ +#define GPIO_PartialRemap2_TIM2 ((uint32_t)0x00180200) /*!< TIM2 Partial2 Alternate Function mapping */ +#define GPIO_FullRemap_TIM2 ((uint32_t)0x00180300) /*!< TIM2 Full Alternate Function mapping */ +#define GPIO_PartialRemap_TIM3 ((uint32_t)0x001A0800) /*!< TIM3 Partial Alternate Function mapping */ +#define GPIO_FullRemap_TIM3 ((uint32_t)0x001A0C00) /*!< TIM3 Full Alternate Function mapping */ +#define GPIO_Remap_TIM4 ((uint32_t)0x00001000) /*!< TIM4 Alternate Function mapping */ +#define GPIO_Remap1_CAN1 ((uint32_t)0x001D4000) /*!< CAN1 Alternate Function mapping */ +#define GPIO_Remap2_CAN1 ((uint32_t)0x001D6000) /*!< CAN1 Alternate Function mapping */ +#define GPIO_Remap_PD01 ((uint32_t)0x00008000) /*!< PD01 Alternate Function mapping */ +#define GPIO_Remap_TIM5CH4_LSI ((uint32_t)0x00200001) /*!< LSI connected to TIM5 Channel4 input capture for calibration */ +#define GPIO_Remap_ADC1_ETRGINJ ((uint32_t)0x00200002) /*!< ADC1 External Trigger Injected Conversion remapping */ +#define GPIO_Remap_ADC1_ETRGREG ((uint32_t)0x00200004) /*!< ADC1 External Trigger Regular Conversion remapping */ +#define GPIO_Remap_ADC2_ETRGINJ ((uint32_t)0x00200008) /*!< ADC2 External Trigger Injected Conversion remapping */ +#define GPIO_Remap_ADC2_ETRGREG ((uint32_t)0x00200010) /*!< ADC2 External Trigger Regular Conversion remapping */ +#define GPIO_Remap_ETH ((uint32_t)0x00200020) /*!< Ethernet remapping (only for Connectivity line devices) */ +#define GPIO_Remap_CAN2 ((uint32_t)0x00200040) /*!< CAN2 remapping (only for Connectivity line devices) */ +#define GPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */ +#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) /*!< JTAG-DP Disabled and SW-DP Enabled */ +#define GPIO_Remap_SWJ_Disable ((uint32_t)0x00300400) /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */ +#define GPIO_Remap_SPI3 ((uint32_t)0x00201100) /*!< SPI3/I2S3 Alternate Function mapping (only for Connectivity line devices) */ +#define GPIO_Remap_TIM2ITR1_PTP_SOF ((uint32_t)0x00202000) /*!< Ethernet PTP output or USB OTG SOF (Start of Frame) connected + to TIM2 Internal Trigger 1 for calibration + (only for Connectivity line devices) */ +#define GPIO_Remap_PTP_PPS ((uint32_t)0x00204000) /*!< Ethernet MAC PPS_PTS output on PB05 (only for Connectivity line devices) */ + +#define GPIO_Remap_TIM15 ((uint32_t)0x80000001) /*!< TIM15 Alternate Function mapping (only for Value line devices) */ +#define GPIO_Remap_TIM16 ((uint32_t)0x80000002) /*!< TIM16 Alternate Function mapping (only for Value line devices) */ +#define GPIO_Remap_TIM17 ((uint32_t)0x80000004) /*!< TIM17 Alternate Function mapping (only for Value line devices) */ +#define GPIO_Remap_CEC ((uint32_t)0x80000008) /*!< CEC Alternate Function mapping (only for Value line devices) */ +#define GPIO_Remap_TIM1_DMA ((uint32_t)0x80000010) /*!< TIM1 DMA requests mapping (only for Value line devices) */ + +#define GPIO_Remap_TIM9 ((uint32_t)0x80000020) /*!< TIM9 Alternate Function mapping (only for XL-density devices) */ +#define GPIO_Remap_TIM10 ((uint32_t)0x80000040) /*!< TIM10 Alternate Function mapping (only for XL-density devices) */ +#define GPIO_Remap_TIM11 ((uint32_t)0x80000080) /*!< TIM11 Alternate Function mapping (only for XL-density devices) */ +#define GPIO_Remap_TIM13 ((uint32_t)0x80000100) /*!< TIM13 Alternate Function mapping (only for High density Value line and XL-density devices) */ +#define GPIO_Remap_TIM14 ((uint32_t)0x80000200) /*!< TIM14 Alternate Function mapping (only for High density Value line and XL-density devices) */ +#define GPIO_Remap_FSMC_NADV ((uint32_t)0x80000400) /*!< FSMC_NADV Alternate Function mapping (only for High density Value line and XL-density devices) */ + +#define GPIO_Remap_TIM67_DAC_DMA ((uint32_t)0x80000800) /*!< TIM6/TIM7 and DAC DMA requests remapping (only for High density Value line devices) */ +#define GPIO_Remap_TIM12 ((uint32_t)0x80001000) /*!< TIM12 Alternate Function mapping (only for High density Value line devices) */ +#define GPIO_Remap_MISC ((uint32_t)0x80002000) /*!< Miscellaneous Remap (DMA2 Channel5 Position and DAC Trigger remapping, + only for High density Value line devices) */ + +#define IS_GPIO_REMAP(REMAP) (((REMAP) == GPIO_Remap_SPI1) || ((REMAP) == GPIO_Remap_I2C1) || \ + ((REMAP) == GPIO_Remap_USART1) || ((REMAP) == GPIO_Remap_USART2) || \ + ((REMAP) == GPIO_PartialRemap_USART3) || ((REMAP) == GPIO_FullRemap_USART3) || \ + ((REMAP) == GPIO_PartialRemap_TIM1) || ((REMAP) == GPIO_FullRemap_TIM1) || \ + ((REMAP) == GPIO_PartialRemap1_TIM2) || ((REMAP) == GPIO_PartialRemap2_TIM2) || \ + ((REMAP) == GPIO_FullRemap_TIM2) || ((REMAP) == GPIO_PartialRemap_TIM3) || \ + ((REMAP) == GPIO_FullRemap_TIM3) || ((REMAP) == GPIO_Remap_TIM4) || \ + ((REMAP) == GPIO_Remap1_CAN1) || ((REMAP) == GPIO_Remap2_CAN1) || \ + ((REMAP) == GPIO_Remap_PD01) || ((REMAP) == GPIO_Remap_TIM5CH4_LSI) || \ + ((REMAP) == GPIO_Remap_ADC1_ETRGINJ) ||((REMAP) == GPIO_Remap_ADC1_ETRGREG) || \ + ((REMAP) == GPIO_Remap_ADC2_ETRGINJ) ||((REMAP) == GPIO_Remap_ADC2_ETRGREG) || \ + ((REMAP) == GPIO_Remap_ETH) ||((REMAP) == GPIO_Remap_CAN2) || \ + ((REMAP) == GPIO_Remap_SWJ_NoJTRST) || ((REMAP) == GPIO_Remap_SWJ_JTAGDisable) || \ + ((REMAP) == GPIO_Remap_SWJ_Disable)|| ((REMAP) == GPIO_Remap_SPI3) || \ + ((REMAP) == GPIO_Remap_TIM2ITR1_PTP_SOF) || ((REMAP) == GPIO_Remap_PTP_PPS) || \ + ((REMAP) == GPIO_Remap_TIM15) || ((REMAP) == GPIO_Remap_TIM16) || \ + ((REMAP) == GPIO_Remap_TIM17) || ((REMAP) == GPIO_Remap_CEC) || \ + ((REMAP) == GPIO_Remap_TIM1_DMA) || ((REMAP) == GPIO_Remap_TIM9) || \ + ((REMAP) == GPIO_Remap_TIM10) || ((REMAP) == GPIO_Remap_TIM11) || \ + ((REMAP) == GPIO_Remap_TIM13) || ((REMAP) == GPIO_Remap_TIM14) || \ + ((REMAP) == GPIO_Remap_FSMC_NADV) || ((REMAP) == GPIO_Remap_TIM67_DAC_DMA) || \ + ((REMAP) == GPIO_Remap_TIM12) || ((REMAP) == GPIO_Remap_MISC)) + +/** + * @} + */ + +/** @defgroup GPIO_Port_Sources + * @{ + */ + +#define GPIO_PortSourceGPIOA ((uint8_t)0x00) +#define GPIO_PortSourceGPIOB ((uint8_t)0x01) +#define GPIO_PortSourceGPIOC ((uint8_t)0x02) +#define GPIO_PortSourceGPIOD ((uint8_t)0x03) +#define GPIO_PortSourceGPIOE ((uint8_t)0x04) +#define GPIO_PortSourceGPIOF ((uint8_t)0x05) +#define GPIO_PortSourceGPIOG ((uint8_t)0x06) +#define IS_GPIO_EVENTOUT_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == GPIO_PortSourceGPIOA) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOB) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOC) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOD) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOE)) + +#define IS_GPIO_EXTI_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == GPIO_PortSourceGPIOA) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOB) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOC) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOD) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOE) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOF) || \ + ((PORTSOURCE) == GPIO_PortSourceGPIOG)) + +/** + * @} + */ + +/** @defgroup GPIO_Pin_sources + * @{ + */ + +#define GPIO_PinSource0 ((uint8_t)0x00) +#define GPIO_PinSource1 ((uint8_t)0x01) +#define GPIO_PinSource2 ((uint8_t)0x02) +#define GPIO_PinSource3 ((uint8_t)0x03) +#define GPIO_PinSource4 ((uint8_t)0x04) +#define GPIO_PinSource5 ((uint8_t)0x05) +#define GPIO_PinSource6 ((uint8_t)0x06) +#define GPIO_PinSource7 ((uint8_t)0x07) +#define GPIO_PinSource8 ((uint8_t)0x08) +#define GPIO_PinSource9 ((uint8_t)0x09) +#define GPIO_PinSource10 ((uint8_t)0x0A) +#define GPIO_PinSource11 ((uint8_t)0x0B) +#define GPIO_PinSource12 ((uint8_t)0x0C) +#define GPIO_PinSource13 ((uint8_t)0x0D) +#define GPIO_PinSource14 ((uint8_t)0x0E) +#define GPIO_PinSource15 ((uint8_t)0x0F) + +#define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \ + ((PINSOURCE) == GPIO_PinSource1) || \ + ((PINSOURCE) == GPIO_PinSource2) || \ + ((PINSOURCE) == GPIO_PinSource3) || \ + ((PINSOURCE) == GPIO_PinSource4) || \ + ((PINSOURCE) == GPIO_PinSource5) || \ + ((PINSOURCE) == GPIO_PinSource6) || \ + ((PINSOURCE) == GPIO_PinSource7) || \ + ((PINSOURCE) == GPIO_PinSource8) || \ + ((PINSOURCE) == GPIO_PinSource9) || \ + ((PINSOURCE) == GPIO_PinSource10) || \ + ((PINSOURCE) == GPIO_PinSource11) || \ + ((PINSOURCE) == GPIO_PinSource12) || \ + ((PINSOURCE) == GPIO_PinSource13) || \ + ((PINSOURCE) == GPIO_PinSource14) || \ + ((PINSOURCE) == GPIO_PinSource15)) + +/** + * @} + */ + +/** @defgroup Ethernet_Media_Interface + * @{ + */ +#define GPIO_ETH_MediaInterface_MII ((u32)0x00000000) +#define GPIO_ETH_MediaInterface_RMII ((u32)0x00000001) + +#define IS_GPIO_ETH_MEDIA_INTERFACE(INTERFACE) (((INTERFACE) == GPIO_ETH_MediaInterface_MII) || \ + ((INTERFACE) == GPIO_ETH_MediaInterface_RMII)) + +/** + * @} + */ +/** + * @} + */ + +/** @defgroup GPIO_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup GPIO_Exported_Functions + * @{ + */ + +void GPIO_DeInit(GPIO_TypeDef* GPIOx); +void GPIO_AFIODeInit(void); +void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); +void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); +uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); +uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); +void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); +void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); +void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource); +void GPIO_EventOutputCmd(FunctionalState NewState); +void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState); +void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource); +void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_GPIO_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h new file mode 100644 index 00000000..2d42e5ce --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h @@ -0,0 +1,684 @@ +/** + ****************************************************************************** + * @file stm32f10x_i2c.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the I2C firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_I2C_H +#define __STM32F10x_I2C_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup I2C + * @{ + */ + +/** @defgroup I2C_Exported_Types + * @{ + */ + +/** + * @brief I2C Init structure definition + */ + +typedef struct +{ + uint32_t I2C_ClockSpeed; /*!< Specifies the clock frequency. + This parameter must be set to a value lower than 400kHz */ + + uint16_t I2C_Mode; /*!< Specifies the I2C mode. + This parameter can be a value of @ref I2C_mode */ + + uint16_t I2C_DutyCycle; /*!< Specifies the I2C fast mode duty cycle. + This parameter can be a value of @ref I2C_duty_cycle_in_fast_mode */ + + uint16_t I2C_OwnAddress1; /*!< Specifies the first device own address. + This parameter can be a 7-bit or 10-bit address. */ + + uint16_t I2C_Ack; /*!< Enables or disables the acknowledgement. + This parameter can be a value of @ref I2C_acknowledgement */ + + uint16_t I2C_AcknowledgedAddress; /*!< Specifies if 7-bit or 10-bit address is acknowledged. + This parameter can be a value of @ref I2C_acknowledged_address */ +}I2C_InitTypeDef; + +/** + * @} + */ + + +/** @defgroup I2C_Exported_Constants + * @{ + */ + +#define IS_I2C_ALL_PERIPH(PERIPH) (((PERIPH) == I2C1) || \ + ((PERIPH) == I2C2)) +/** @defgroup I2C_mode + * @{ + */ + +#define I2C_Mode_I2C ((uint16_t)0x0000) +#define I2C_Mode_SMBusDevice ((uint16_t)0x0002) +#define I2C_Mode_SMBusHost ((uint16_t)0x000A) +#define IS_I2C_MODE(MODE) (((MODE) == I2C_Mode_I2C) || \ + ((MODE) == I2C_Mode_SMBusDevice) || \ + ((MODE) == I2C_Mode_SMBusHost)) +/** + * @} + */ + +/** @defgroup I2C_duty_cycle_in_fast_mode + * @{ + */ + +#define I2C_DutyCycle_16_9 ((uint16_t)0x4000) /*!< I2C fast mode Tlow/Thigh = 16/9 */ +#define I2C_DutyCycle_2 ((uint16_t)0xBFFF) /*!< I2C fast mode Tlow/Thigh = 2 */ +#define IS_I2C_DUTY_CYCLE(CYCLE) (((CYCLE) == I2C_DutyCycle_16_9) || \ + ((CYCLE) == I2C_DutyCycle_2)) +/** + * @} + */ + +/** @defgroup I2C_acknowledgement + * @{ + */ + +#define I2C_Ack_Enable ((uint16_t)0x0400) +#define I2C_Ack_Disable ((uint16_t)0x0000) +#define IS_I2C_ACK_STATE(STATE) (((STATE) == I2C_Ack_Enable) || \ + ((STATE) == I2C_Ack_Disable)) +/** + * @} + */ + +/** @defgroup I2C_transfer_direction + * @{ + */ + +#define I2C_Direction_Transmitter ((uint8_t)0x00) +#define I2C_Direction_Receiver ((uint8_t)0x01) +#define IS_I2C_DIRECTION(DIRECTION) (((DIRECTION) == I2C_Direction_Transmitter) || \ + ((DIRECTION) == I2C_Direction_Receiver)) +/** + * @} + */ + +/** @defgroup I2C_acknowledged_address + * @{ + */ + +#define I2C_AcknowledgedAddress_7bit ((uint16_t)0x4000) +#define I2C_AcknowledgedAddress_10bit ((uint16_t)0xC000) +#define IS_I2C_ACKNOWLEDGE_ADDRESS(ADDRESS) (((ADDRESS) == I2C_AcknowledgedAddress_7bit) || \ + ((ADDRESS) == I2C_AcknowledgedAddress_10bit)) +/** + * @} + */ + +/** @defgroup I2C_registers + * @{ + */ + +#define I2C_Register_CR1 ((uint8_t)0x00) +#define I2C_Register_CR2 ((uint8_t)0x04) +#define I2C_Register_OAR1 ((uint8_t)0x08) +#define I2C_Register_OAR2 ((uint8_t)0x0C) +#define I2C_Register_DR ((uint8_t)0x10) +#define I2C_Register_SR1 ((uint8_t)0x14) +#define I2C_Register_SR2 ((uint8_t)0x18) +#define I2C_Register_CCR ((uint8_t)0x1C) +#define I2C_Register_TRISE ((uint8_t)0x20) +#define IS_I2C_REGISTER(REGISTER) (((REGISTER) == I2C_Register_CR1) || \ + ((REGISTER) == I2C_Register_CR2) || \ + ((REGISTER) == I2C_Register_OAR1) || \ + ((REGISTER) == I2C_Register_OAR2) || \ + ((REGISTER) == I2C_Register_DR) || \ + ((REGISTER) == I2C_Register_SR1) || \ + ((REGISTER) == I2C_Register_SR2) || \ + ((REGISTER) == I2C_Register_CCR) || \ + ((REGISTER) == I2C_Register_TRISE)) +/** + * @} + */ + +/** @defgroup I2C_SMBus_alert_pin_level + * @{ + */ + +#define I2C_SMBusAlert_Low ((uint16_t)0x2000) +#define I2C_SMBusAlert_High ((uint16_t)0xDFFF) +#define IS_I2C_SMBUS_ALERT(ALERT) (((ALERT) == I2C_SMBusAlert_Low) || \ + ((ALERT) == I2C_SMBusAlert_High)) +/** + * @} + */ + +/** @defgroup I2C_PEC_position + * @{ + */ + +#define I2C_PECPosition_Next ((uint16_t)0x0800) +#define I2C_PECPosition_Current ((uint16_t)0xF7FF) +#define IS_I2C_PEC_POSITION(POSITION) (((POSITION) == I2C_PECPosition_Next) || \ + ((POSITION) == I2C_PECPosition_Current)) +/** + * @} + */ + +/** @defgroup I2C_NCAK_position + * @{ + */ + +#define I2C_NACKPosition_Next ((uint16_t)0x0800) +#define I2C_NACKPosition_Current ((uint16_t)0xF7FF) +#define IS_I2C_NACK_POSITION(POSITION) (((POSITION) == I2C_NACKPosition_Next) || \ + ((POSITION) == I2C_NACKPosition_Current)) +/** + * @} + */ + +/** @defgroup I2C_interrupts_definition + * @{ + */ + +#define I2C_IT_BUF ((uint16_t)0x0400) +#define I2C_IT_EVT ((uint16_t)0x0200) +#define I2C_IT_ERR ((uint16_t)0x0100) +#define IS_I2C_CONFIG_IT(IT) ((((IT) & (uint16_t)0xF8FF) == 0x00) && ((IT) != 0x00)) +/** + * @} + */ + +/** @defgroup I2C_interrupts_definition + * @{ + */ + +#define I2C_IT_SMBALERT ((uint32_t)0x01008000) +#define I2C_IT_TIMEOUT ((uint32_t)0x01004000) +#define I2C_IT_PECERR ((uint32_t)0x01001000) +#define I2C_IT_OVR ((uint32_t)0x01000800) +#define I2C_IT_AF ((uint32_t)0x01000400) +#define I2C_IT_ARLO ((uint32_t)0x01000200) +#define I2C_IT_BERR ((uint32_t)0x01000100) +#define I2C_IT_TXE ((uint32_t)0x06000080) +#define I2C_IT_RXNE ((uint32_t)0x06000040) +#define I2C_IT_STOPF ((uint32_t)0x02000010) +#define I2C_IT_ADD10 ((uint32_t)0x02000008) +#define I2C_IT_BTF ((uint32_t)0x02000004) +#define I2C_IT_ADDR ((uint32_t)0x02000002) +#define I2C_IT_SB ((uint32_t)0x02000001) + +#define IS_I2C_CLEAR_IT(IT) ((((IT) & (uint16_t)0x20FF) == 0x00) && ((IT) != (uint16_t)0x00)) + +#define IS_I2C_GET_IT(IT) (((IT) == I2C_IT_SMBALERT) || ((IT) == I2C_IT_TIMEOUT) || \ + ((IT) == I2C_IT_PECERR) || ((IT) == I2C_IT_OVR) || \ + ((IT) == I2C_IT_AF) || ((IT) == I2C_IT_ARLO) || \ + ((IT) == I2C_IT_BERR) || ((IT) == I2C_IT_TXE) || \ + ((IT) == I2C_IT_RXNE) || ((IT) == I2C_IT_STOPF) || \ + ((IT) == I2C_IT_ADD10) || ((IT) == I2C_IT_BTF) || \ + ((IT) == I2C_IT_ADDR) || ((IT) == I2C_IT_SB)) +/** + * @} + */ + +/** @defgroup I2C_flags_definition + * @{ + */ + +/** + * @brief SR2 register flags + */ + +#define I2C_FLAG_DUALF ((uint32_t)0x00800000) +#define I2C_FLAG_SMBHOST ((uint32_t)0x00400000) +#define I2C_FLAG_SMBDEFAULT ((uint32_t)0x00200000) +#define I2C_FLAG_GENCALL ((uint32_t)0x00100000) +#define I2C_FLAG_TRA ((uint32_t)0x00040000) +#define I2C_FLAG_BUSY ((uint32_t)0x00020000) +#define I2C_FLAG_MSL ((uint32_t)0x00010000) + +/** + * @brief SR1 register flags + */ + +#define I2C_FLAG_SMBALERT ((uint32_t)0x10008000) +#define I2C_FLAG_TIMEOUT ((uint32_t)0x10004000) +#define I2C_FLAG_PECERR ((uint32_t)0x10001000) +#define I2C_FLAG_OVR ((uint32_t)0x10000800) +#define I2C_FLAG_AF ((uint32_t)0x10000400) +#define I2C_FLAG_ARLO ((uint32_t)0x10000200) +#define I2C_FLAG_BERR ((uint32_t)0x10000100) +#define I2C_FLAG_TXE ((uint32_t)0x10000080) +#define I2C_FLAG_RXNE ((uint32_t)0x10000040) +#define I2C_FLAG_STOPF ((uint32_t)0x10000010) +#define I2C_FLAG_ADD10 ((uint32_t)0x10000008) +#define I2C_FLAG_BTF ((uint32_t)0x10000004) +#define I2C_FLAG_ADDR ((uint32_t)0x10000002) +#define I2C_FLAG_SB ((uint32_t)0x10000001) + +#define IS_I2C_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0x20FF) == 0x00) && ((FLAG) != (uint16_t)0x00)) + +#define IS_I2C_GET_FLAG(FLAG) (((FLAG) == I2C_FLAG_DUALF) || ((FLAG) == I2C_FLAG_SMBHOST) || \ + ((FLAG) == I2C_FLAG_SMBDEFAULT) || ((FLAG) == I2C_FLAG_GENCALL) || \ + ((FLAG) == I2C_FLAG_TRA) || ((FLAG) == I2C_FLAG_BUSY) || \ + ((FLAG) == I2C_FLAG_MSL) || ((FLAG) == I2C_FLAG_SMBALERT) || \ + ((FLAG) == I2C_FLAG_TIMEOUT) || ((FLAG) == I2C_FLAG_PECERR) || \ + ((FLAG) == I2C_FLAG_OVR) || ((FLAG) == I2C_FLAG_AF) || \ + ((FLAG) == I2C_FLAG_ARLO) || ((FLAG) == I2C_FLAG_BERR) || \ + ((FLAG) == I2C_FLAG_TXE) || ((FLAG) == I2C_FLAG_RXNE) || \ + ((FLAG) == I2C_FLAG_STOPF) || ((FLAG) == I2C_FLAG_ADD10) || \ + ((FLAG) == I2C_FLAG_BTF) || ((FLAG) == I2C_FLAG_ADDR) || \ + ((FLAG) == I2C_FLAG_SB)) +/** + * @} + */ + +/** @defgroup I2C_Events + * @{ + */ + +/*======================================== + + I2C Master Events (Events grouped in order of communication) + ==========================================*/ +/** + * @brief Communication start + * + * After sending the START condition (I2C_GenerateSTART() function) the master + * has to wait for this event. It means that the Start condition has been correctly + * released on the I2C bus (the bus is free, no other devices is communicating). + * + */ +/* --EV5 */ +#define I2C_EVENT_MASTER_MODE_SELECT ((uint32_t)0x00030001) /* BUSY, MSL and SB flag */ + +/** + * @brief Address Acknowledge + * + * After checking on EV5 (start condition correctly released on the bus), the + * master sends the address of the slave(s) with which it will communicate + * (I2C_Send7bitAddress() function, it also determines the direction of the communication: + * Master transmitter or Receiver). Then the master has to wait that a slave acknowledges + * his address. If an acknowledge is sent on the bus, one of the following events will + * be set: + * + * 1) In case of Master Receiver (7-bit addressing): the I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED + * event is set. + * + * 2) In case of Master Transmitter (7-bit addressing): the I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED + * is set + * + * 3) In case of 10-Bit addressing mode, the master (just after generating the START + * and checking on EV5) has to send the header of 10-bit addressing mode (I2C_SendData() + * function). Then master should wait on EV9. It means that the 10-bit addressing + * header has been correctly sent on the bus. Then master should send the second part of + * the 10-bit address (LSB) using the function I2C_Send7bitAddress(). Then master + * should wait for event EV6. + * + */ + +/* --EV6 */ +#define I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED ((uint32_t)0x00070082) /* BUSY, MSL, ADDR, TXE and TRA flags */ +#define I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED ((uint32_t)0x00030002) /* BUSY, MSL and ADDR flags */ +/* --EV9 */ +#define I2C_EVENT_MASTER_MODE_ADDRESS10 ((uint32_t)0x00030008) /* BUSY, MSL and ADD10 flags */ + +/** + * @brief Communication events + * + * If a communication is established (START condition generated and slave address + * acknowledged) then the master has to check on one of the following events for + * communication procedures: + * + * 1) Master Receiver mode: The master has to wait on the event EV7 then to read + * the data received from the slave (I2C_ReceiveData() function). + * + * 2) Master Transmitter mode: The master has to send data (I2C_SendData() + * function) then to wait on event EV8 or EV8_2. + * These two events are similar: + * - EV8 means that the data has been written in the data register and is + * being shifted out. + * - EV8_2 means that the data has been physically shifted out and output + * on the bus. + * In most cases, using EV8 is sufficient for the application. + * Using EV8_2 leads to a slower communication but ensure more reliable test. + * EV8_2 is also more suitable than EV8 for testing on the last data transmission + * (before Stop condition generation). + * + * @note In case the user software does not guarantee that this event EV7 is + * managed before the current byte end of transfer, then user may check on EV7 + * and BTF flag at the same time (ie. (I2C_EVENT_MASTER_BYTE_RECEIVED | I2C_FLAG_BTF)). + * In this case the communication may be slower. + * + */ + +/* Master RECEIVER mode -----------------------------*/ +/* --EV7 */ +#define I2C_EVENT_MASTER_BYTE_RECEIVED ((uint32_t)0x00030040) /* BUSY, MSL and RXNE flags */ + +/* Master TRANSMITTER mode --------------------------*/ +/* --EV8 */ +#define I2C_EVENT_MASTER_BYTE_TRANSMITTING ((uint32_t)0x00070080) /* TRA, BUSY, MSL, TXE flags */ +/* --EV8_2 */ +#define I2C_EVENT_MASTER_BYTE_TRANSMITTED ((uint32_t)0x00070084) /* TRA, BUSY, MSL, TXE and BTF flags */ + + +/*======================================== + + I2C Slave Events (Events grouped in order of communication) + ==========================================*/ + +/** + * @brief Communication start events + * + * Wait on one of these events at the start of the communication. It means that + * the I2C peripheral detected a Start condition on the bus (generated by master + * device) followed by the peripheral address. The peripheral generates an ACK + * condition on the bus (if the acknowledge feature is enabled through function + * I2C_AcknowledgeConfig()) and the events listed above are set : + * + * 1) In normal case (only one address managed by the slave), when the address + * sent by the master matches the own address of the peripheral (configured by + * I2C_OwnAddress1 field) the I2C_EVENT_SLAVE_XXX_ADDRESS_MATCHED event is set + * (where XXX could be TRANSMITTER or RECEIVER). + * + * 2) In case the address sent by the master matches the second address of the + * peripheral (configured by the function I2C_OwnAddress2Config() and enabled + * by the function I2C_DualAddressCmd()) the events I2C_EVENT_SLAVE_XXX_SECONDADDRESS_MATCHED + * (where XXX could be TRANSMITTER or RECEIVER) are set. + * + * 3) In case the address sent by the master is General Call (address 0x00) and + * if the General Call is enabled for the peripheral (using function I2C_GeneralCallCmd()) + * the following event is set I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED. + * + */ + +/* --EV1 (all the events below are variants of EV1) */ +/* 1) Case of One Single Address managed by the slave */ +#define I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED ((uint32_t)0x00020002) /* BUSY and ADDR flags */ +#define I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED ((uint32_t)0x00060082) /* TRA, BUSY, TXE and ADDR flags */ + +/* 2) Case of Dual address managed by the slave */ +#define I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED ((uint32_t)0x00820000) /* DUALF and BUSY flags */ +#define I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED ((uint32_t)0x00860080) /* DUALF, TRA, BUSY and TXE flags */ + +/* 3) Case of General Call enabled for the slave */ +#define I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED ((uint32_t)0x00120000) /* GENCALL and BUSY flags */ + +/** + * @brief Communication events + * + * Wait on one of these events when EV1 has already been checked and: + * + * - Slave RECEIVER mode: + * - EV2: When the application is expecting a data byte to be received. + * - EV4: When the application is expecting the end of the communication: master + * sends a stop condition and data transmission is stopped. + * + * - Slave Transmitter mode: + * - EV3: When a byte has been transmitted by the slave and the application is expecting + * the end of the byte transmission. The two events I2C_EVENT_SLAVE_BYTE_TRANSMITTED and + * I2C_EVENT_SLAVE_BYTE_TRANSMITTING are similar. The second one can optionally be + * used when the user software doesn't guarantee the EV3 is managed before the + * current byte end of transfer. + * - EV3_2: When the master sends a NACK in order to tell slave that data transmission + * shall end (before sending the STOP condition). In this case slave has to stop sending + * data bytes and expect a Stop condition on the bus. + * + * @note In case the user software does not guarantee that the event EV2 is + * managed before the current byte end of transfer, then user may check on EV2 + * and BTF flag at the same time (ie. (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_BTF)). + * In this case the communication may be slower. + * + */ + +/* Slave RECEIVER mode --------------------------*/ +/* --EV2 */ +#define I2C_EVENT_SLAVE_BYTE_RECEIVED ((uint32_t)0x00020040) /* BUSY and RXNE flags */ +/* --EV4 */ +#define I2C_EVENT_SLAVE_STOP_DETECTED ((uint32_t)0x00000010) /* STOPF flag */ + +/* Slave TRANSMITTER mode -----------------------*/ +/* --EV3 */ +#define I2C_EVENT_SLAVE_BYTE_TRANSMITTED ((uint32_t)0x00060084) /* TRA, BUSY, TXE and BTF flags */ +#define I2C_EVENT_SLAVE_BYTE_TRANSMITTING ((uint32_t)0x00060080) /* TRA, BUSY and TXE flags */ +/* --EV3_2 */ +#define I2C_EVENT_SLAVE_ACK_FAILURE ((uint32_t)0x00000400) /* AF flag */ + +/*=========================== End of Events Description ==========================================*/ + +#define IS_I2C_EVENT(EVENT) (((EVENT) == I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED) || \ + ((EVENT) == I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED) || \ + ((EVENT) == I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED) || \ + ((EVENT) == I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED) || \ + ((EVENT) == I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED) || \ + ((EVENT) == I2C_EVENT_SLAVE_BYTE_RECEIVED) || \ + ((EVENT) == (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_DUALF)) || \ + ((EVENT) == (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_GENCALL)) || \ + ((EVENT) == I2C_EVENT_SLAVE_BYTE_TRANSMITTED) || \ + ((EVENT) == (I2C_EVENT_SLAVE_BYTE_TRANSMITTED | I2C_FLAG_DUALF)) || \ + ((EVENT) == (I2C_EVENT_SLAVE_BYTE_TRANSMITTED | I2C_FLAG_GENCALL)) || \ + ((EVENT) == I2C_EVENT_SLAVE_STOP_DETECTED) || \ + ((EVENT) == I2C_EVENT_MASTER_MODE_SELECT) || \ + ((EVENT) == I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) || \ + ((EVENT) == I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED) || \ + ((EVENT) == I2C_EVENT_MASTER_BYTE_RECEIVED) || \ + ((EVENT) == I2C_EVENT_MASTER_BYTE_TRANSMITTED) || \ + ((EVENT) == I2C_EVENT_MASTER_BYTE_TRANSMITTING) || \ + ((EVENT) == I2C_EVENT_MASTER_MODE_ADDRESS10) || \ + ((EVENT) == I2C_EVENT_SLAVE_ACK_FAILURE)) +/** + * @} + */ + +/** @defgroup I2C_own_address1 + * @{ + */ + +#define IS_I2C_OWN_ADDRESS1(ADDRESS1) ((ADDRESS1) <= 0x3FF) +/** + * @} + */ + +/** @defgroup I2C_clock_speed + * @{ + */ + +#define IS_I2C_CLOCK_SPEED(SPEED) (((SPEED) >= 0x1) && ((SPEED) <= 400000)) +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup I2C_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup I2C_Exported_Functions + * @{ + */ + +void I2C_DeInit(I2C_TypeDef* I2Cx); +void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct); +void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct); +void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_DMACmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_DMALastTransferCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint8_t Address); +void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_ITConfig(I2C_TypeDef* I2Cx, uint16_t I2C_IT, FunctionalState NewState); +void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data); +uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx); +void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction); +uint16_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register); +void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_NACKPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_NACKPosition); +void I2C_SMBusAlertConfig(I2C_TypeDef* I2Cx, uint16_t I2C_SMBusAlert); +void I2C_TransmitPEC(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_PECPosition); +void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState); +uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx); +void I2C_ARPCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_FastModeDutyCycleConfig(I2C_TypeDef* I2Cx, uint16_t I2C_DutyCycle); + +/** + * @brief + **************************************************************************************** + * + * I2C State Monitoring Functions + * + **************************************************************************************** + * This I2C driver provides three different ways for I2C state monitoring + * depending on the application requirements and constraints: + * + * + * 1) Basic state monitoring: + * Using I2C_CheckEvent() function: + * It compares the status registers (SR1 and SR2) content to a given event + * (can be the combination of one or more flags). + * It returns SUCCESS if the current status includes the given flags + * and returns ERROR if one or more flags are missing in the current status. + * - When to use: + * - This function is suitable for most applications as well as for startup + * activity since the events are fully described in the product reference manual + * (RM0008). + * - It is also suitable for users who need to define their own events. + * - Limitations: + * - If an error occurs (ie. error flags are set besides to the monitored flags), + * the I2C_CheckEvent() function may return SUCCESS despite the communication + * hold or corrupted real state. + * In this case, it is advised to use error interrupts to monitor the error + * events and handle them in the interrupt IRQ handler. + * + * @note + * For error management, it is advised to use the following functions: + * - I2C_ITConfig() to configure and enable the error interrupts (I2C_IT_ERR). + * - I2Cx_ER_IRQHandler() which is called when the error interrupt occurs. + * Where x is the peripheral instance (I2C1, I2C2 ...) + * - I2C_GetFlagStatus() or I2C_GetITStatus() to be called into I2Cx_ER_IRQHandler() + * in order to determine which error occurred. + * - I2C_ClearFlag() or I2C_ClearITPendingBit() and/or I2C_SoftwareResetCmd() + * and/or I2C_GenerateStop() in order to clear the error flag and source, + * and return to correct communication status. + * + * + * 2) Advanced state monitoring: + * Using the function I2C_GetLastEvent() which returns the image of both status + * registers in a single word (uint32_t) (Status Register 2 value is shifted left + * by 16 bits and concatenated to Status Register 1). + * - When to use: + * - This function is suitable for the same applications above but it allows to + * overcome the limitations of I2C_GetFlagStatus() function (see below). + * The returned value could be compared to events already defined in the + * library (stm32f10x_i2c.h) or to custom values defined by user. + * - This function is suitable when multiple flags are monitored at the same time. + * - At the opposite of I2C_CheckEvent() function, this function allows user to + * choose when an event is accepted (when all events flags are set and no + * other flags are set or just when the needed flags are set like + * I2C_CheckEvent() function). + * - Limitations: + * - User may need to define his own events. + * - Same remark concerning the error management is applicable for this + * function if user decides to check only regular communication flags (and + * ignores error flags). + * + * + * 3) Flag-based state monitoring: + * Using the function I2C_GetFlagStatus() which simply returns the status of + * one single flag (ie. I2C_FLAG_RXNE ...). + * - When to use: + * - This function could be used for specific applications or in debug phase. + * - It is suitable when only one flag checking is needed (most I2C events + * are monitored through multiple flags). + * - Limitations: + * - When calling this function, the Status register is accessed. Some flags are + * cleared when the status register is accessed. So checking the status + * of one Flag, may clear other ones. + * - Function may need to be called twice or more in order to monitor one + * single event. + * + */ + +/** + * + * 1) Basic state monitoring + ******************************************************************************* + */ +ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT); +/** + * + * 2) Advanced state monitoring + ******************************************************************************* + */ +uint32_t I2C_GetLastEvent(I2C_TypeDef* I2Cx); +/** + * + * 3) Flag-based state monitoring + ******************************************************************************* + */ +FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG); +/** + * + ******************************************************************************* + */ + +void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG); +ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT); +void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F10x_I2C_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h new file mode 100644 index 00000000..7f5ab764 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h @@ -0,0 +1,140 @@ +/** + ****************************************************************************** + * @file stm32f10x_iwdg.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the IWDG + * firmware library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_IWDG_H +#define __STM32F10x_IWDG_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup IWDG + * @{ + */ + +/** @defgroup IWDG_Exported_Types + * @{ + */ + +/** + * @} + */ + +/** @defgroup IWDG_Exported_Constants + * @{ + */ + +/** @defgroup IWDG_WriteAccess + * @{ + */ + +#define IWDG_WriteAccess_Enable ((uint16_t)0x5555) +#define IWDG_WriteAccess_Disable ((uint16_t)0x0000) +#define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \ + ((ACCESS) == IWDG_WriteAccess_Disable)) +/** + * @} + */ + +/** @defgroup IWDG_prescaler + * @{ + */ + +#define IWDG_Prescaler_4 ((uint8_t)0x00) +#define IWDG_Prescaler_8 ((uint8_t)0x01) +#define IWDG_Prescaler_16 ((uint8_t)0x02) +#define IWDG_Prescaler_32 ((uint8_t)0x03) +#define IWDG_Prescaler_64 ((uint8_t)0x04) +#define IWDG_Prescaler_128 ((uint8_t)0x05) +#define IWDG_Prescaler_256 ((uint8_t)0x06) +#define IS_IWDG_PRESCALER(PRESCALER) (((PRESCALER) == IWDG_Prescaler_4) || \ + ((PRESCALER) == IWDG_Prescaler_8) || \ + ((PRESCALER) == IWDG_Prescaler_16) || \ + ((PRESCALER) == IWDG_Prescaler_32) || \ + ((PRESCALER) == IWDG_Prescaler_64) || \ + ((PRESCALER) == IWDG_Prescaler_128)|| \ + ((PRESCALER) == IWDG_Prescaler_256)) +/** + * @} + */ + +/** @defgroup IWDG_Flag + * @{ + */ + +#define IWDG_FLAG_PVU ((uint16_t)0x0001) +#define IWDG_FLAG_RVU ((uint16_t)0x0002) +#define IS_IWDG_FLAG(FLAG) (((FLAG) == IWDG_FLAG_PVU) || ((FLAG) == IWDG_FLAG_RVU)) +#define IS_IWDG_RELOAD(RELOAD) ((RELOAD) <= 0xFFF) +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup IWDG_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup IWDG_Exported_Functions + * @{ + */ + +void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess); +void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); +void IWDG_SetReload(uint16_t Reload); +void IWDG_ReloadCounter(void); +void IWDG_Enable(void); +FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_IWDG_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h new file mode 100644 index 00000000..76e6ce91 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h @@ -0,0 +1,156 @@ +/** + ****************************************************************************** + * @file stm32f10x_pwr.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the PWR firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_PWR_H +#define __STM32F10x_PWR_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup PWR + * @{ + */ + +/** @defgroup PWR_Exported_Types + * @{ + */ + +/** + * @} + */ + +/** @defgroup PWR_Exported_Constants + * @{ + */ + +/** @defgroup PVD_detection_level + * @{ + */ + +#define PWR_PVDLevel_2V2 ((uint32_t)0x00000000) +#define PWR_PVDLevel_2V3 ((uint32_t)0x00000020) +#define PWR_PVDLevel_2V4 ((uint32_t)0x00000040) +#define PWR_PVDLevel_2V5 ((uint32_t)0x00000060) +#define PWR_PVDLevel_2V6 ((uint32_t)0x00000080) +#define PWR_PVDLevel_2V7 ((uint32_t)0x000000A0) +#define PWR_PVDLevel_2V8 ((uint32_t)0x000000C0) +#define PWR_PVDLevel_2V9 ((uint32_t)0x000000E0) +#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLevel_2V2) || ((LEVEL) == PWR_PVDLevel_2V3)|| \ + ((LEVEL) == PWR_PVDLevel_2V4) || ((LEVEL) == PWR_PVDLevel_2V5)|| \ + ((LEVEL) == PWR_PVDLevel_2V6) || ((LEVEL) == PWR_PVDLevel_2V7)|| \ + ((LEVEL) == PWR_PVDLevel_2V8) || ((LEVEL) == PWR_PVDLevel_2V9)) +/** + * @} + */ + +/** @defgroup Regulator_state_is_STOP_mode + * @{ + */ + +#define PWR_Regulator_ON ((uint32_t)0x00000000) +#define PWR_Regulator_LowPower ((uint32_t)0x00000001) +#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_Regulator_ON) || \ + ((REGULATOR) == PWR_Regulator_LowPower)) +/** + * @} + */ + +/** @defgroup STOP_mode_entry + * @{ + */ + +#define PWR_STOPEntry_WFI ((uint8_t)0x01) +#define PWR_STOPEntry_WFE ((uint8_t)0x02) +#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPEntry_WFI) || ((ENTRY) == PWR_STOPEntry_WFE)) + +/** + * @} + */ + +/** @defgroup PWR_Flag + * @{ + */ + +#define PWR_FLAG_WU ((uint32_t)0x00000001) +#define PWR_FLAG_SB ((uint32_t)0x00000002) +#define PWR_FLAG_PVDO ((uint32_t)0x00000004) +#define IS_PWR_GET_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB) || \ + ((FLAG) == PWR_FLAG_PVDO)) + +#define IS_PWR_CLEAR_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB)) +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup PWR_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup PWR_Exported_Functions + * @{ + */ + +void PWR_DeInit(void); +void PWR_BackupAccessCmd(FunctionalState NewState); +void PWR_PVDCmd(FunctionalState NewState); +void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel); +void PWR_WakeUpPinCmd(FunctionalState NewState); +void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); +void PWR_EnterSTANDBYMode(void); +FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG); +void PWR_ClearFlag(uint32_t PWR_FLAG); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_PWR_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h new file mode 100644 index 00000000..b3b7d821 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h @@ -0,0 +1,727 @@ +/** + ****************************************************************************** + * @file stm32f10x_rcc.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the RCC firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_RCC_H +#define __STM32F10x_RCC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup RCC + * @{ + */ + +/** @defgroup RCC_Exported_Types + * @{ + */ + +typedef struct +{ + uint32_t SYSCLK_Frequency; /*!< returns SYSCLK clock frequency expressed in Hz */ + uint32_t HCLK_Frequency; /*!< returns HCLK clock frequency expressed in Hz */ + uint32_t PCLK1_Frequency; /*!< returns PCLK1 clock frequency expressed in Hz */ + uint32_t PCLK2_Frequency; /*!< returns PCLK2 clock frequency expressed in Hz */ + uint32_t ADCCLK_Frequency; /*!< returns ADCCLK clock frequency expressed in Hz */ +}RCC_ClocksTypeDef; + +/** + * @} + */ + +/** @defgroup RCC_Exported_Constants + * @{ + */ + +/** @defgroup HSE_configuration + * @{ + */ + +#define RCC_HSE_OFF ((uint32_t)0x00000000) +#define RCC_HSE_ON ((uint32_t)0x00010000) +#define RCC_HSE_Bypass ((uint32_t)0x00040000) +#define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \ + ((HSE) == RCC_HSE_Bypass)) + +/** + * @} + */ + +/** @defgroup PLL_entry_clock_source + * @{ + */ + +#define RCC_PLLSource_HSI_Div2 ((uint32_t)0x00000000) + +#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_CL) + #define RCC_PLLSource_HSE_Div1 ((uint32_t)0x00010000) + #define RCC_PLLSource_HSE_Div2 ((uint32_t)0x00030000) + #define IS_RCC_PLL_SOURCE(SOURCE) (((SOURCE) == RCC_PLLSource_HSI_Div2) || \ + ((SOURCE) == RCC_PLLSource_HSE_Div1) || \ + ((SOURCE) == RCC_PLLSource_HSE_Div2)) +#else + #define RCC_PLLSource_PREDIV1 ((uint32_t)0x00010000) + #define IS_RCC_PLL_SOURCE(SOURCE) (((SOURCE) == RCC_PLLSource_HSI_Div2) || \ + ((SOURCE) == RCC_PLLSource_PREDIV1)) +#endif /* STM32F10X_CL */ + +/** + * @} + */ + +/** @defgroup PLL_multiplication_factor + * @{ + */ +#ifndef STM32F10X_CL + #define RCC_PLLMul_2 ((uint32_t)0x00000000) + #define RCC_PLLMul_3 ((uint32_t)0x00040000) + #define RCC_PLLMul_4 ((uint32_t)0x00080000) + #define RCC_PLLMul_5 ((uint32_t)0x000C0000) + #define RCC_PLLMul_6 ((uint32_t)0x00100000) + #define RCC_PLLMul_7 ((uint32_t)0x00140000) + #define RCC_PLLMul_8 ((uint32_t)0x00180000) + #define RCC_PLLMul_9 ((uint32_t)0x001C0000) + #define RCC_PLLMul_10 ((uint32_t)0x00200000) + #define RCC_PLLMul_11 ((uint32_t)0x00240000) + #define RCC_PLLMul_12 ((uint32_t)0x00280000) + #define RCC_PLLMul_13 ((uint32_t)0x002C0000) + #define RCC_PLLMul_14 ((uint32_t)0x00300000) + #define RCC_PLLMul_15 ((uint32_t)0x00340000) + #define RCC_PLLMul_16 ((uint32_t)0x00380000) + #define IS_RCC_PLL_MUL(MUL) (((MUL) == RCC_PLLMul_2) || ((MUL) == RCC_PLLMul_3) || \ + ((MUL) == RCC_PLLMul_4) || ((MUL) == RCC_PLLMul_5) || \ + ((MUL) == RCC_PLLMul_6) || ((MUL) == RCC_PLLMul_7) || \ + ((MUL) == RCC_PLLMul_8) || ((MUL) == RCC_PLLMul_9) || \ + ((MUL) == RCC_PLLMul_10) || ((MUL) == RCC_PLLMul_11) || \ + ((MUL) == RCC_PLLMul_12) || ((MUL) == RCC_PLLMul_13) || \ + ((MUL) == RCC_PLLMul_14) || ((MUL) == RCC_PLLMul_15) || \ + ((MUL) == RCC_PLLMul_16)) + +#else + #define RCC_PLLMul_4 ((uint32_t)0x00080000) + #define RCC_PLLMul_5 ((uint32_t)0x000C0000) + #define RCC_PLLMul_6 ((uint32_t)0x00100000) + #define RCC_PLLMul_7 ((uint32_t)0x00140000) + #define RCC_PLLMul_8 ((uint32_t)0x00180000) + #define RCC_PLLMul_9 ((uint32_t)0x001C0000) + #define RCC_PLLMul_6_5 ((uint32_t)0x00340000) + + #define IS_RCC_PLL_MUL(MUL) (((MUL) == RCC_PLLMul_4) || ((MUL) == RCC_PLLMul_5) || \ + ((MUL) == RCC_PLLMul_6) || ((MUL) == RCC_PLLMul_7) || \ + ((MUL) == RCC_PLLMul_8) || ((MUL) == RCC_PLLMul_9) || \ + ((MUL) == RCC_PLLMul_6_5)) +#endif /* STM32F10X_CL */ +/** + * @} + */ + +/** @defgroup PREDIV1_division_factor + * @{ + */ +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) || defined (STM32F10X_CL) + #define RCC_PREDIV1_Div1 ((uint32_t)0x00000000) + #define RCC_PREDIV1_Div2 ((uint32_t)0x00000001) + #define RCC_PREDIV1_Div3 ((uint32_t)0x00000002) + #define RCC_PREDIV1_Div4 ((uint32_t)0x00000003) + #define RCC_PREDIV1_Div5 ((uint32_t)0x00000004) + #define RCC_PREDIV1_Div6 ((uint32_t)0x00000005) + #define RCC_PREDIV1_Div7 ((uint32_t)0x00000006) + #define RCC_PREDIV1_Div8 ((uint32_t)0x00000007) + #define RCC_PREDIV1_Div9 ((uint32_t)0x00000008) + #define RCC_PREDIV1_Div10 ((uint32_t)0x00000009) + #define RCC_PREDIV1_Div11 ((uint32_t)0x0000000A) + #define RCC_PREDIV1_Div12 ((uint32_t)0x0000000B) + #define RCC_PREDIV1_Div13 ((uint32_t)0x0000000C) + #define RCC_PREDIV1_Div14 ((uint32_t)0x0000000D) + #define RCC_PREDIV1_Div15 ((uint32_t)0x0000000E) + #define RCC_PREDIV1_Div16 ((uint32_t)0x0000000F) + + #define IS_RCC_PREDIV1(PREDIV1) (((PREDIV1) == RCC_PREDIV1_Div1) || ((PREDIV1) == RCC_PREDIV1_Div2) || \ + ((PREDIV1) == RCC_PREDIV1_Div3) || ((PREDIV1) == RCC_PREDIV1_Div4) || \ + ((PREDIV1) == RCC_PREDIV1_Div5) || ((PREDIV1) == RCC_PREDIV1_Div6) || \ + ((PREDIV1) == RCC_PREDIV1_Div7) || ((PREDIV1) == RCC_PREDIV1_Div8) || \ + ((PREDIV1) == RCC_PREDIV1_Div9) || ((PREDIV1) == RCC_PREDIV1_Div10) || \ + ((PREDIV1) == RCC_PREDIV1_Div11) || ((PREDIV1) == RCC_PREDIV1_Div12) || \ + ((PREDIV1) == RCC_PREDIV1_Div13) || ((PREDIV1) == RCC_PREDIV1_Div14) || \ + ((PREDIV1) == RCC_PREDIV1_Div15) || ((PREDIV1) == RCC_PREDIV1_Div16)) +#endif +/** + * @} + */ + + +/** @defgroup PREDIV1_clock_source + * @{ + */ +#ifdef STM32F10X_CL +/* PREDIV1 clock source (for STM32 connectivity line devices) */ + #define RCC_PREDIV1_Source_HSE ((uint32_t)0x00000000) + #define RCC_PREDIV1_Source_PLL2 ((uint32_t)0x00010000) + + #define IS_RCC_PREDIV1_SOURCE(SOURCE) (((SOURCE) == RCC_PREDIV1_Source_HSE) || \ + ((SOURCE) == RCC_PREDIV1_Source_PLL2)) +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +/* PREDIV1 clock source (for STM32 Value line devices) */ + #define RCC_PREDIV1_Source_HSE ((uint32_t)0x00000000) + + #define IS_RCC_PREDIV1_SOURCE(SOURCE) (((SOURCE) == RCC_PREDIV1_Source_HSE)) +#endif +/** + * @} + */ + +#ifdef STM32F10X_CL +/** @defgroup PREDIV2_division_factor + * @{ + */ + + #define RCC_PREDIV2_Div1 ((uint32_t)0x00000000) + #define RCC_PREDIV2_Div2 ((uint32_t)0x00000010) + #define RCC_PREDIV2_Div3 ((uint32_t)0x00000020) + #define RCC_PREDIV2_Div4 ((uint32_t)0x00000030) + #define RCC_PREDIV2_Div5 ((uint32_t)0x00000040) + #define RCC_PREDIV2_Div6 ((uint32_t)0x00000050) + #define RCC_PREDIV2_Div7 ((uint32_t)0x00000060) + #define RCC_PREDIV2_Div8 ((uint32_t)0x00000070) + #define RCC_PREDIV2_Div9 ((uint32_t)0x00000080) + #define RCC_PREDIV2_Div10 ((uint32_t)0x00000090) + #define RCC_PREDIV2_Div11 ((uint32_t)0x000000A0) + #define RCC_PREDIV2_Div12 ((uint32_t)0x000000B0) + #define RCC_PREDIV2_Div13 ((uint32_t)0x000000C0) + #define RCC_PREDIV2_Div14 ((uint32_t)0x000000D0) + #define RCC_PREDIV2_Div15 ((uint32_t)0x000000E0) + #define RCC_PREDIV2_Div16 ((uint32_t)0x000000F0) + + #define IS_RCC_PREDIV2(PREDIV2) (((PREDIV2) == RCC_PREDIV2_Div1) || ((PREDIV2) == RCC_PREDIV2_Div2) || \ + ((PREDIV2) == RCC_PREDIV2_Div3) || ((PREDIV2) == RCC_PREDIV2_Div4) || \ + ((PREDIV2) == RCC_PREDIV2_Div5) || ((PREDIV2) == RCC_PREDIV2_Div6) || \ + ((PREDIV2) == RCC_PREDIV2_Div7) || ((PREDIV2) == RCC_PREDIV2_Div8) || \ + ((PREDIV2) == RCC_PREDIV2_Div9) || ((PREDIV2) == RCC_PREDIV2_Div10) || \ + ((PREDIV2) == RCC_PREDIV2_Div11) || ((PREDIV2) == RCC_PREDIV2_Div12) || \ + ((PREDIV2) == RCC_PREDIV2_Div13) || ((PREDIV2) == RCC_PREDIV2_Div14) || \ + ((PREDIV2) == RCC_PREDIV2_Div15) || ((PREDIV2) == RCC_PREDIV2_Div16)) +/** + * @} + */ + + +/** @defgroup PLL2_multiplication_factor + * @{ + */ + + #define RCC_PLL2Mul_8 ((uint32_t)0x00000600) + #define RCC_PLL2Mul_9 ((uint32_t)0x00000700) + #define RCC_PLL2Mul_10 ((uint32_t)0x00000800) + #define RCC_PLL2Mul_11 ((uint32_t)0x00000900) + #define RCC_PLL2Mul_12 ((uint32_t)0x00000A00) + #define RCC_PLL2Mul_13 ((uint32_t)0x00000B00) + #define RCC_PLL2Mul_14 ((uint32_t)0x00000C00) + #define RCC_PLL2Mul_16 ((uint32_t)0x00000E00) + #define RCC_PLL2Mul_20 ((uint32_t)0x00000F00) + + #define IS_RCC_PLL2_MUL(MUL) (((MUL) == RCC_PLL2Mul_8) || ((MUL) == RCC_PLL2Mul_9) || \ + ((MUL) == RCC_PLL2Mul_10) || ((MUL) == RCC_PLL2Mul_11) || \ + ((MUL) == RCC_PLL2Mul_12) || ((MUL) == RCC_PLL2Mul_13) || \ + ((MUL) == RCC_PLL2Mul_14) || ((MUL) == RCC_PLL2Mul_16) || \ + ((MUL) == RCC_PLL2Mul_20)) +/** + * @} + */ + + +/** @defgroup PLL3_multiplication_factor + * @{ + */ + + #define RCC_PLL3Mul_8 ((uint32_t)0x00006000) + #define RCC_PLL3Mul_9 ((uint32_t)0x00007000) + #define RCC_PLL3Mul_10 ((uint32_t)0x00008000) + #define RCC_PLL3Mul_11 ((uint32_t)0x00009000) + #define RCC_PLL3Mul_12 ((uint32_t)0x0000A000) + #define RCC_PLL3Mul_13 ((uint32_t)0x0000B000) + #define RCC_PLL3Mul_14 ((uint32_t)0x0000C000) + #define RCC_PLL3Mul_16 ((uint32_t)0x0000E000) + #define RCC_PLL3Mul_20 ((uint32_t)0x0000F000) + + #define IS_RCC_PLL3_MUL(MUL) (((MUL) == RCC_PLL3Mul_8) || ((MUL) == RCC_PLL3Mul_9) || \ + ((MUL) == RCC_PLL3Mul_10) || ((MUL) == RCC_PLL3Mul_11) || \ + ((MUL) == RCC_PLL3Mul_12) || ((MUL) == RCC_PLL3Mul_13) || \ + ((MUL) == RCC_PLL3Mul_14) || ((MUL) == RCC_PLL3Mul_16) || \ + ((MUL) == RCC_PLL3Mul_20)) +/** + * @} + */ + +#endif /* STM32F10X_CL */ + + +/** @defgroup System_clock_source + * @{ + */ + +#define RCC_SYSCLKSource_HSI ((uint32_t)0x00000000) +#define RCC_SYSCLKSource_HSE ((uint32_t)0x00000001) +#define RCC_SYSCLKSource_PLLCLK ((uint32_t)0x00000002) +#define IS_RCC_SYSCLK_SOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSource_HSI) || \ + ((SOURCE) == RCC_SYSCLKSource_HSE) || \ + ((SOURCE) == RCC_SYSCLKSource_PLLCLK)) +/** + * @} + */ + +/** @defgroup AHB_clock_source + * @{ + */ + +#define RCC_SYSCLK_Div1 ((uint32_t)0x00000000) +#define RCC_SYSCLK_Div2 ((uint32_t)0x00000080) +#define RCC_SYSCLK_Div4 ((uint32_t)0x00000090) +#define RCC_SYSCLK_Div8 ((uint32_t)0x000000A0) +#define RCC_SYSCLK_Div16 ((uint32_t)0x000000B0) +#define RCC_SYSCLK_Div64 ((uint32_t)0x000000C0) +#define RCC_SYSCLK_Div128 ((uint32_t)0x000000D0) +#define RCC_SYSCLK_Div256 ((uint32_t)0x000000E0) +#define RCC_SYSCLK_Div512 ((uint32_t)0x000000F0) +#define IS_RCC_HCLK(HCLK) (((HCLK) == RCC_SYSCLK_Div1) || ((HCLK) == RCC_SYSCLK_Div2) || \ + ((HCLK) == RCC_SYSCLK_Div4) || ((HCLK) == RCC_SYSCLK_Div8) || \ + ((HCLK) == RCC_SYSCLK_Div16) || ((HCLK) == RCC_SYSCLK_Div64) || \ + ((HCLK) == RCC_SYSCLK_Div128) || ((HCLK) == RCC_SYSCLK_Div256) || \ + ((HCLK) == RCC_SYSCLK_Div512)) +/** + * @} + */ + +/** @defgroup APB1_APB2_clock_source + * @{ + */ + +#define RCC_HCLK_Div1 ((uint32_t)0x00000000) +#define RCC_HCLK_Div2 ((uint32_t)0x00000400) +#define RCC_HCLK_Div4 ((uint32_t)0x00000500) +#define RCC_HCLK_Div8 ((uint32_t)0x00000600) +#define RCC_HCLK_Div16 ((uint32_t)0x00000700) +#define IS_RCC_PCLK(PCLK) (((PCLK) == RCC_HCLK_Div1) || ((PCLK) == RCC_HCLK_Div2) || \ + ((PCLK) == RCC_HCLK_Div4) || ((PCLK) == RCC_HCLK_Div8) || \ + ((PCLK) == RCC_HCLK_Div16)) +/** + * @} + */ + +/** @defgroup RCC_Interrupt_source + * @{ + */ + +#define RCC_IT_LSIRDY ((uint8_t)0x01) +#define RCC_IT_LSERDY ((uint8_t)0x02) +#define RCC_IT_HSIRDY ((uint8_t)0x04) +#define RCC_IT_HSERDY ((uint8_t)0x08) +#define RCC_IT_PLLRDY ((uint8_t)0x10) +#define RCC_IT_CSS ((uint8_t)0x80) + +#ifndef STM32F10X_CL + #define IS_RCC_IT(IT) ((((IT) & (uint8_t)0xE0) == 0x00) && ((IT) != 0x00)) + #define IS_RCC_GET_IT(IT) (((IT) == RCC_IT_LSIRDY) || ((IT) == RCC_IT_LSERDY) || \ + ((IT) == RCC_IT_HSIRDY) || ((IT) == RCC_IT_HSERDY) || \ + ((IT) == RCC_IT_PLLRDY) || ((IT) == RCC_IT_CSS)) + #define IS_RCC_CLEAR_IT(IT) ((((IT) & (uint8_t)0x60) == 0x00) && ((IT) != 0x00)) +#else + #define RCC_IT_PLL2RDY ((uint8_t)0x20) + #define RCC_IT_PLL3RDY ((uint8_t)0x40) + #define IS_RCC_IT(IT) ((((IT) & (uint8_t)0x80) == 0x00) && ((IT) != 0x00)) + #define IS_RCC_GET_IT(IT) (((IT) == RCC_IT_LSIRDY) || ((IT) == RCC_IT_LSERDY) || \ + ((IT) == RCC_IT_HSIRDY) || ((IT) == RCC_IT_HSERDY) || \ + ((IT) == RCC_IT_PLLRDY) || ((IT) == RCC_IT_CSS) || \ + ((IT) == RCC_IT_PLL2RDY) || ((IT) == RCC_IT_PLL3RDY)) + #define IS_RCC_CLEAR_IT(IT) ((IT) != 0x00) +#endif /* STM32F10X_CL */ + + +/** + * @} + */ + +#ifndef STM32F10X_CL +/** @defgroup USB_Device_clock_source + * @{ + */ + + #define RCC_USBCLKSource_PLLCLK_1Div5 ((uint8_t)0x00) + #define RCC_USBCLKSource_PLLCLK_Div1 ((uint8_t)0x01) + + #define IS_RCC_USBCLK_SOURCE(SOURCE) (((SOURCE) == RCC_USBCLKSource_PLLCLK_1Div5) || \ + ((SOURCE) == RCC_USBCLKSource_PLLCLK_Div1)) +/** + * @} + */ +#else +/** @defgroup USB_OTG_FS_clock_source + * @{ + */ + #define RCC_OTGFSCLKSource_PLLVCO_Div3 ((uint8_t)0x00) + #define RCC_OTGFSCLKSource_PLLVCO_Div2 ((uint8_t)0x01) + + #define IS_RCC_OTGFSCLK_SOURCE(SOURCE) (((SOURCE) == RCC_OTGFSCLKSource_PLLVCO_Div3) || \ + ((SOURCE) == RCC_OTGFSCLKSource_PLLVCO_Div2)) +/** + * @} + */ +#endif /* STM32F10X_CL */ + + +#ifdef STM32F10X_CL +/** @defgroup I2S2_clock_source + * @{ + */ + #define RCC_I2S2CLKSource_SYSCLK ((uint8_t)0x00) + #define RCC_I2S2CLKSource_PLL3_VCO ((uint8_t)0x01) + + #define IS_RCC_I2S2CLK_SOURCE(SOURCE) (((SOURCE) == RCC_I2S2CLKSource_SYSCLK) || \ + ((SOURCE) == RCC_I2S2CLKSource_PLL3_VCO)) +/** + * @} + */ + +/** @defgroup I2S3_clock_source + * @{ + */ + #define RCC_I2S3CLKSource_SYSCLK ((uint8_t)0x00) + #define RCC_I2S3CLKSource_PLL3_VCO ((uint8_t)0x01) + + #define IS_RCC_I2S3CLK_SOURCE(SOURCE) (((SOURCE) == RCC_I2S3CLKSource_SYSCLK) || \ + ((SOURCE) == RCC_I2S3CLKSource_PLL3_VCO)) +/** + * @} + */ +#endif /* STM32F10X_CL */ + + +/** @defgroup ADC_clock_source + * @{ + */ + +#define RCC_PCLK2_Div2 ((uint32_t)0x00000000) +#define RCC_PCLK2_Div4 ((uint32_t)0x00004000) +#define RCC_PCLK2_Div6 ((uint32_t)0x00008000) +#define RCC_PCLK2_Div8 ((uint32_t)0x0000C000) +#define IS_RCC_ADCCLK(ADCCLK) (((ADCCLK) == RCC_PCLK2_Div2) || ((ADCCLK) == RCC_PCLK2_Div4) || \ + ((ADCCLK) == RCC_PCLK2_Div6) || ((ADCCLK) == RCC_PCLK2_Div8)) +/** + * @} + */ + +/** @defgroup LSE_configuration + * @{ + */ + +#define RCC_LSE_OFF ((uint8_t)0x00) +#define RCC_LSE_ON ((uint8_t)0x01) +#define RCC_LSE_Bypass ((uint8_t)0x04) +#define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_OFF) || ((LSE) == RCC_LSE_ON) || \ + ((LSE) == RCC_LSE_Bypass)) +/** + * @} + */ + +/** @defgroup RTC_clock_source + * @{ + */ + +#define RCC_RTCCLKSource_LSE ((uint32_t)0x00000100) +#define RCC_RTCCLKSource_LSI ((uint32_t)0x00000200) +#define RCC_RTCCLKSource_HSE_Div128 ((uint32_t)0x00000300) +#define IS_RCC_RTCCLK_SOURCE(SOURCE) (((SOURCE) == RCC_RTCCLKSource_LSE) || \ + ((SOURCE) == RCC_RTCCLKSource_LSI) || \ + ((SOURCE) == RCC_RTCCLKSource_HSE_Div128)) +/** + * @} + */ + +/** @defgroup AHB_peripheral + * @{ + */ + +#define RCC_AHBPeriph_DMA1 ((uint32_t)0x00000001) +#define RCC_AHBPeriph_DMA2 ((uint32_t)0x00000002) +#define RCC_AHBPeriph_SRAM ((uint32_t)0x00000004) +#define RCC_AHBPeriph_FLITF ((uint32_t)0x00000010) +#define RCC_AHBPeriph_CRC ((uint32_t)0x00000040) + +#ifndef STM32F10X_CL + #define RCC_AHBPeriph_FSMC ((uint32_t)0x00000100) + #define RCC_AHBPeriph_SDIO ((uint32_t)0x00000400) + #define IS_RCC_AHB_PERIPH(PERIPH) ((((PERIPH) & 0xFFFFFAA8) == 0x00) && ((PERIPH) != 0x00)) +#else + #define RCC_AHBPeriph_OTG_FS ((uint32_t)0x00001000) + #define RCC_AHBPeriph_ETH_MAC ((uint32_t)0x00004000) + #define RCC_AHBPeriph_ETH_MAC_Tx ((uint32_t)0x00008000) + #define RCC_AHBPeriph_ETH_MAC_Rx ((uint32_t)0x00010000) + + #define IS_RCC_AHB_PERIPH(PERIPH) ((((PERIPH) & 0xFFFE2FA8) == 0x00) && ((PERIPH) != 0x00)) + #define IS_RCC_AHB_PERIPH_RESET(PERIPH) ((((PERIPH) & 0xFFFFAFFF) == 0x00) && ((PERIPH) != 0x00)) +#endif /* STM32F10X_CL */ +/** + * @} + */ + +/** @defgroup APB2_peripheral + * @{ + */ + +#define RCC_APB2Periph_AFIO ((uint32_t)0x00000001) +#define RCC_APB2Periph_GPIOA ((uint32_t)0x00000004) +#define RCC_APB2Periph_GPIOB ((uint32_t)0x00000008) +#define RCC_APB2Periph_GPIOC ((uint32_t)0x00000010) +#define RCC_APB2Periph_GPIOD ((uint32_t)0x00000020) +#define RCC_APB2Periph_GPIOE ((uint32_t)0x00000040) +#define RCC_APB2Periph_GPIOF ((uint32_t)0x00000080) +#define RCC_APB2Periph_GPIOG ((uint32_t)0x00000100) +#define RCC_APB2Periph_ADC1 ((uint32_t)0x00000200) +#define RCC_APB2Periph_ADC2 ((uint32_t)0x00000400) +#define RCC_APB2Periph_TIM1 ((uint32_t)0x00000800) +#define RCC_APB2Periph_SPI1 ((uint32_t)0x00001000) +#define RCC_APB2Periph_TIM8 ((uint32_t)0x00002000) +#define RCC_APB2Periph_USART1 ((uint32_t)0x00004000) +#define RCC_APB2Periph_ADC3 ((uint32_t)0x00008000) +#define RCC_APB2Periph_TIM15 ((uint32_t)0x00010000) +#define RCC_APB2Periph_TIM16 ((uint32_t)0x00020000) +#define RCC_APB2Periph_TIM17 ((uint32_t)0x00040000) +#define RCC_APB2Periph_TIM9 ((uint32_t)0x00080000) +#define RCC_APB2Periph_TIM10 ((uint32_t)0x00100000) +#define RCC_APB2Periph_TIM11 ((uint32_t)0x00200000) + +#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00)) +/** + * @} + */ + +/** @defgroup APB1_peripheral + * @{ + */ + +#define RCC_APB1Periph_TIM2 ((uint32_t)0x00000001) +#define RCC_APB1Periph_TIM3 ((uint32_t)0x00000002) +#define RCC_APB1Periph_TIM4 ((uint32_t)0x00000004) +#define RCC_APB1Periph_TIM5 ((uint32_t)0x00000008) +#define RCC_APB1Periph_TIM6 ((uint32_t)0x00000010) +#define RCC_APB1Periph_TIM7 ((uint32_t)0x00000020) +#define RCC_APB1Periph_TIM12 ((uint32_t)0x00000040) +#define RCC_APB1Periph_TIM13 ((uint32_t)0x00000080) +#define RCC_APB1Periph_TIM14 ((uint32_t)0x00000100) +#define RCC_APB1Periph_WWDG ((uint32_t)0x00000800) +#define RCC_APB1Periph_SPI2 ((uint32_t)0x00004000) +#define RCC_APB1Periph_SPI3 ((uint32_t)0x00008000) +#define RCC_APB1Periph_USART2 ((uint32_t)0x00020000) +#define RCC_APB1Periph_USART3 ((uint32_t)0x00040000) +#define RCC_APB1Periph_UART4 ((uint32_t)0x00080000) +#define RCC_APB1Periph_UART5 ((uint32_t)0x00100000) +#define RCC_APB1Periph_I2C1 ((uint32_t)0x00200000) +#define RCC_APB1Periph_I2C2 ((uint32_t)0x00400000) +#define RCC_APB1Periph_USB ((uint32_t)0x00800000) +#define RCC_APB1Periph_CAN1 ((uint32_t)0x02000000) +#define RCC_APB1Periph_CAN2 ((uint32_t)0x04000000) +#define RCC_APB1Periph_BKP ((uint32_t)0x08000000) +#define RCC_APB1Periph_PWR ((uint32_t)0x10000000) +#define RCC_APB1Periph_DAC ((uint32_t)0x20000000) +#define RCC_APB1Periph_CEC ((uint32_t)0x40000000) + +#define IS_RCC_APB1_PERIPH(PERIPH) ((((PERIPH) & 0x81013600) == 0x00) && ((PERIPH) != 0x00)) + +/** + * @} + */ + +/** @defgroup Clock_source_to_output_on_MCO_pin + * @{ + */ + +#define RCC_MCO_NoClock ((uint8_t)0x00) +#define RCC_MCO_SYSCLK ((uint8_t)0x04) +#define RCC_MCO_HSI ((uint8_t)0x05) +#define RCC_MCO_HSE ((uint8_t)0x06) +#define RCC_MCO_PLLCLK_Div2 ((uint8_t)0x07) + +#ifndef STM32F10X_CL + #define IS_RCC_MCO(MCO) (((MCO) == RCC_MCO_NoClock) || ((MCO) == RCC_MCO_HSI) || \ + ((MCO) == RCC_MCO_SYSCLK) || ((MCO) == RCC_MCO_HSE) || \ + ((MCO) == RCC_MCO_PLLCLK_Div2)) +#else + #define RCC_MCO_PLL2CLK ((uint8_t)0x08) + #define RCC_MCO_PLL3CLK_Div2 ((uint8_t)0x09) + #define RCC_MCO_XT1 ((uint8_t)0x0A) + #define RCC_MCO_PLL3CLK ((uint8_t)0x0B) + + #define IS_RCC_MCO(MCO) (((MCO) == RCC_MCO_NoClock) || ((MCO) == RCC_MCO_HSI) || \ + ((MCO) == RCC_MCO_SYSCLK) || ((MCO) == RCC_MCO_HSE) || \ + ((MCO) == RCC_MCO_PLLCLK_Div2) || ((MCO) == RCC_MCO_PLL2CLK) || \ + ((MCO) == RCC_MCO_PLL3CLK_Div2) || ((MCO) == RCC_MCO_XT1) || \ + ((MCO) == RCC_MCO_PLL3CLK)) +#endif /* STM32F10X_CL */ + +/** + * @} + */ + +/** @defgroup RCC_Flag + * @{ + */ + +#define RCC_FLAG_HSIRDY ((uint8_t)0x21) +#define RCC_FLAG_HSERDY ((uint8_t)0x31) +#define RCC_FLAG_PLLRDY ((uint8_t)0x39) +#define RCC_FLAG_LSERDY ((uint8_t)0x41) +#define RCC_FLAG_LSIRDY ((uint8_t)0x61) +#define RCC_FLAG_PINRST ((uint8_t)0x7A) +#define RCC_FLAG_PORRST ((uint8_t)0x7B) +#define RCC_FLAG_SFTRST ((uint8_t)0x7C) +#define RCC_FLAG_IWDGRST ((uint8_t)0x7D) +#define RCC_FLAG_WWDGRST ((uint8_t)0x7E) +#define RCC_FLAG_LPWRRST ((uint8_t)0x7F) + +#ifndef STM32F10X_CL + #define IS_RCC_FLAG(FLAG) (((FLAG) == RCC_FLAG_HSIRDY) || ((FLAG) == RCC_FLAG_HSERDY) || \ + ((FLAG) == RCC_FLAG_PLLRDY) || ((FLAG) == RCC_FLAG_LSERDY) || \ + ((FLAG) == RCC_FLAG_LSIRDY) || ((FLAG) == RCC_FLAG_PINRST) || \ + ((FLAG) == RCC_FLAG_PORRST) || ((FLAG) == RCC_FLAG_SFTRST) || \ + ((FLAG) == RCC_FLAG_IWDGRST)|| ((FLAG) == RCC_FLAG_WWDGRST)|| \ + ((FLAG) == RCC_FLAG_LPWRRST)) +#else + #define RCC_FLAG_PLL2RDY ((uint8_t)0x3B) + #define RCC_FLAG_PLL3RDY ((uint8_t)0x3D) + #define IS_RCC_FLAG(FLAG) (((FLAG) == RCC_FLAG_HSIRDY) || ((FLAG) == RCC_FLAG_HSERDY) || \ + ((FLAG) == RCC_FLAG_PLLRDY) || ((FLAG) == RCC_FLAG_LSERDY) || \ + ((FLAG) == RCC_FLAG_PLL2RDY) || ((FLAG) == RCC_FLAG_PLL3RDY) || \ + ((FLAG) == RCC_FLAG_LSIRDY) || ((FLAG) == RCC_FLAG_PINRST) || \ + ((FLAG) == RCC_FLAG_PORRST) || ((FLAG) == RCC_FLAG_SFTRST) || \ + ((FLAG) == RCC_FLAG_IWDGRST)|| ((FLAG) == RCC_FLAG_WWDGRST)|| \ + ((FLAG) == RCC_FLAG_LPWRRST)) +#endif /* STM32F10X_CL */ + +#define IS_RCC_CALIBRATION_VALUE(VALUE) ((VALUE) <= 0x1F) +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup RCC_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup RCC_Exported_Functions + * @{ + */ + +void RCC_DeInit(void); +void RCC_HSEConfig(uint32_t RCC_HSE); +ErrorStatus RCC_WaitForHSEStartUp(void); +void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue); +void RCC_HSICmd(FunctionalState NewState); +void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul); +void RCC_PLLCmd(FunctionalState NewState); + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) || defined (STM32F10X_CL) + void RCC_PREDIV1Config(uint32_t RCC_PREDIV1_Source, uint32_t RCC_PREDIV1_Div); +#endif + +#ifdef STM32F10X_CL + void RCC_PREDIV2Config(uint32_t RCC_PREDIV2_Div); + void RCC_PLL2Config(uint32_t RCC_PLL2Mul); + void RCC_PLL2Cmd(FunctionalState NewState); + void RCC_PLL3Config(uint32_t RCC_PLL3Mul); + void RCC_PLL3Cmd(FunctionalState NewState); +#endif /* STM32F10X_CL */ + +void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource); +uint8_t RCC_GetSYSCLKSource(void); +void RCC_HCLKConfig(uint32_t RCC_SYSCLK); +void RCC_PCLK1Config(uint32_t RCC_HCLK); +void RCC_PCLK2Config(uint32_t RCC_HCLK); +void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState); + +#ifndef STM32F10X_CL + void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource); +#else + void RCC_OTGFSCLKConfig(uint32_t RCC_OTGFSCLKSource); +#endif /* STM32F10X_CL */ + +void RCC_ADCCLKConfig(uint32_t RCC_PCLK2); + +#ifdef STM32F10X_CL + void RCC_I2S2CLKConfig(uint32_t RCC_I2S2CLKSource); + void RCC_I2S3CLKConfig(uint32_t RCC_I2S3CLKSource); +#endif /* STM32F10X_CL */ + +void RCC_LSEConfig(uint8_t RCC_LSE); +void RCC_LSICmd(FunctionalState NewState); +void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource); +void RCC_RTCCLKCmd(FunctionalState NewState); +void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks); +void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); +void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); +void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState); + +#ifdef STM32F10X_CL +void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); +#endif /* STM32F10X_CL */ + +void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); +void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState); +void RCC_BackupResetCmd(FunctionalState NewState); +void RCC_ClockSecuritySystemCmd(FunctionalState NewState); +void RCC_MCOConfig(uint8_t RCC_MCO); +FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG); +void RCC_ClearFlag(void); +ITStatus RCC_GetITStatus(uint8_t RCC_IT); +void RCC_ClearITPendingBit(uint8_t RCC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_RCC_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h new file mode 100644 index 00000000..214a5893 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h @@ -0,0 +1,135 @@ +/** + ****************************************************************************** + * @file stm32f10x_rtc.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the RTC firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_RTC_H +#define __STM32F10x_RTC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup RTC + * @{ + */ + +/** @defgroup RTC_Exported_Types + * @{ + */ + +/** + * @} + */ + +/** @defgroup RTC_Exported_Constants + * @{ + */ + +/** @defgroup RTC_interrupts_define + * @{ + */ + +#define RTC_IT_OW ((uint16_t)0x0004) /*!< Overflow interrupt */ +#define RTC_IT_ALR ((uint16_t)0x0002) /*!< Alarm interrupt */ +#define RTC_IT_SEC ((uint16_t)0x0001) /*!< Second interrupt */ +#define IS_RTC_IT(IT) ((((IT) & (uint16_t)0xFFF8) == 0x00) && ((IT) != 0x00)) +#define IS_RTC_GET_IT(IT) (((IT) == RTC_IT_OW) || ((IT) == RTC_IT_ALR) || \ + ((IT) == RTC_IT_SEC)) +/** + * @} + */ + +/** @defgroup RTC_interrupts_flags + * @{ + */ + +#define RTC_FLAG_RTOFF ((uint16_t)0x0020) /*!< RTC Operation OFF flag */ +#define RTC_FLAG_RSF ((uint16_t)0x0008) /*!< Registers Synchronized flag */ +#define RTC_FLAG_OW ((uint16_t)0x0004) /*!< Overflow flag */ +#define RTC_FLAG_ALR ((uint16_t)0x0002) /*!< Alarm flag */ +#define RTC_FLAG_SEC ((uint16_t)0x0001) /*!< Second flag */ +#define IS_RTC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xFFF0) == 0x00) && ((FLAG) != 0x00)) +#define IS_RTC_GET_FLAG(FLAG) (((FLAG) == RTC_FLAG_RTOFF) || ((FLAG) == RTC_FLAG_RSF) || \ + ((FLAG) == RTC_FLAG_OW) || ((FLAG) == RTC_FLAG_ALR) || \ + ((FLAG) == RTC_FLAG_SEC)) +#define IS_RTC_PRESCALER(PRESCALER) ((PRESCALER) <= 0xFFFFF) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup RTC_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup RTC_Exported_Functions + * @{ + */ + +void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState); +void RTC_EnterConfigMode(void); +void RTC_ExitConfigMode(void); +uint32_t RTC_GetCounter(void); +void RTC_SetCounter(uint32_t CounterValue); +void RTC_SetPrescaler(uint32_t PrescalerValue); +void RTC_SetAlarm(uint32_t AlarmValue); +uint32_t RTC_GetDivider(void); +void RTC_WaitForLastTask(void); +void RTC_WaitForSynchro(void); +FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG); +void RTC_ClearFlag(uint16_t RTC_FLAG); +ITStatus RTC_GetITStatus(uint16_t RTC_IT); +void RTC_ClearITPendingBit(uint16_t RTC_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_RTC_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h new file mode 100644 index 00000000..40cfdedc --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h @@ -0,0 +1,531 @@ +/** + ****************************************************************************** + * @file stm32f10x_sdio.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the SDIO firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_SDIO_H +#define __STM32F10x_SDIO_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup SDIO + * @{ + */ + +/** @defgroup SDIO_Exported_Types + * @{ + */ + +typedef struct +{ + uint32_t SDIO_ClockEdge; /*!< Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref SDIO_Clock_Edge */ + + uint32_t SDIO_ClockBypass; /*!< Specifies whether the SDIO Clock divider bypass is + enabled or disabled. + This parameter can be a value of @ref SDIO_Clock_Bypass */ + + uint32_t SDIO_ClockPowerSave; /*!< Specifies whether SDIO Clock output is enabled or + disabled when the bus is idle. + This parameter can be a value of @ref SDIO_Clock_Power_Save */ + + uint32_t SDIO_BusWide; /*!< Specifies the SDIO bus width. + This parameter can be a value of @ref SDIO_Bus_Wide */ + + uint32_t SDIO_HardwareFlowControl; /*!< Specifies whether the SDIO hardware flow control is enabled or disabled. + This parameter can be a value of @ref SDIO_Hardware_Flow_Control */ + + uint8_t SDIO_ClockDiv; /*!< Specifies the clock frequency of the SDIO controller. + This parameter can be a value between 0x00 and 0xFF. */ + +} SDIO_InitTypeDef; + +typedef struct +{ + uint32_t SDIO_Argument; /*!< Specifies the SDIO command argument which is sent + to a card as part of a command message. If a command + contains an argument, it must be loaded into this register + before writing the command to the command register */ + + uint32_t SDIO_CmdIndex; /*!< Specifies the SDIO command index. It must be lower than 0x40. */ + + uint32_t SDIO_Response; /*!< Specifies the SDIO response type. + This parameter can be a value of @ref SDIO_Response_Type */ + + uint32_t SDIO_Wait; /*!< Specifies whether SDIO wait-for-interrupt request is enabled or disabled. + This parameter can be a value of @ref SDIO_Wait_Interrupt_State */ + + uint32_t SDIO_CPSM; /*!< Specifies whether SDIO Command path state machine (CPSM) + is enabled or disabled. + This parameter can be a value of @ref SDIO_CPSM_State */ +} SDIO_CmdInitTypeDef; + +typedef struct +{ + uint32_t SDIO_DataTimeOut; /*!< Specifies the data timeout period in card bus clock periods. */ + + uint32_t SDIO_DataLength; /*!< Specifies the number of data bytes to be transferred. */ + + uint32_t SDIO_DataBlockSize; /*!< Specifies the data block size for block transfer. + This parameter can be a value of @ref SDIO_Data_Block_Size */ + + uint32_t SDIO_TransferDir; /*!< Specifies the data transfer direction, whether the transfer + is a read or write. + This parameter can be a value of @ref SDIO_Transfer_Direction */ + + uint32_t SDIO_TransferMode; /*!< Specifies whether data transfer is in stream or block mode. + This parameter can be a value of @ref SDIO_Transfer_Type */ + + uint32_t SDIO_DPSM; /*!< Specifies whether SDIO Data path state machine (DPSM) + is enabled or disabled. + This parameter can be a value of @ref SDIO_DPSM_State */ +} SDIO_DataInitTypeDef; + +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constants + * @{ + */ + +/** @defgroup SDIO_Clock_Edge + * @{ + */ + +#define SDIO_ClockEdge_Rising ((uint32_t)0x00000000) +#define SDIO_ClockEdge_Falling ((uint32_t)0x00002000) +#define IS_SDIO_CLOCK_EDGE(EDGE) (((EDGE) == SDIO_ClockEdge_Rising) || \ + ((EDGE) == SDIO_ClockEdge_Falling)) +/** + * @} + */ + +/** @defgroup SDIO_Clock_Bypass + * @{ + */ + +#define SDIO_ClockBypass_Disable ((uint32_t)0x00000000) +#define SDIO_ClockBypass_Enable ((uint32_t)0x00000400) +#define IS_SDIO_CLOCK_BYPASS(BYPASS) (((BYPASS) == SDIO_ClockBypass_Disable) || \ + ((BYPASS) == SDIO_ClockBypass_Enable)) +/** + * @} + */ + +/** @defgroup SDIO_Clock_Power_Save + * @{ + */ + +#define SDIO_ClockPowerSave_Disable ((uint32_t)0x00000000) +#define SDIO_ClockPowerSave_Enable ((uint32_t)0x00000200) +#define IS_SDIO_CLOCK_POWER_SAVE(SAVE) (((SAVE) == SDIO_ClockPowerSave_Disable) || \ + ((SAVE) == SDIO_ClockPowerSave_Enable)) +/** + * @} + */ + +/** @defgroup SDIO_Bus_Wide + * @{ + */ + +#define SDIO_BusWide_1b ((uint32_t)0x00000000) +#define SDIO_BusWide_4b ((uint32_t)0x00000800) +#define SDIO_BusWide_8b ((uint32_t)0x00001000) +#define IS_SDIO_BUS_WIDE(WIDE) (((WIDE) == SDIO_BusWide_1b) || ((WIDE) == SDIO_BusWide_4b) || \ + ((WIDE) == SDIO_BusWide_8b)) + +/** + * @} + */ + +/** @defgroup SDIO_Hardware_Flow_Control + * @{ + */ + +#define SDIO_HardwareFlowControl_Disable ((uint32_t)0x00000000) +#define SDIO_HardwareFlowControl_Enable ((uint32_t)0x00004000) +#define IS_SDIO_HARDWARE_FLOW_CONTROL(CONTROL) (((CONTROL) == SDIO_HardwareFlowControl_Disable) || \ + ((CONTROL) == SDIO_HardwareFlowControl_Enable)) +/** + * @} + */ + +/** @defgroup SDIO_Power_State + * @{ + */ + +#define SDIO_PowerState_OFF ((uint32_t)0x00000000) +#define SDIO_PowerState_ON ((uint32_t)0x00000003) +#define IS_SDIO_POWER_STATE(STATE) (((STATE) == SDIO_PowerState_OFF) || ((STATE) == SDIO_PowerState_ON)) +/** + * @} + */ + + +/** @defgroup SDIO_Interrupt_sources + * @{ + */ + +#define SDIO_IT_CCRCFAIL ((uint32_t)0x00000001) +#define SDIO_IT_DCRCFAIL ((uint32_t)0x00000002) +#define SDIO_IT_CTIMEOUT ((uint32_t)0x00000004) +#define SDIO_IT_DTIMEOUT ((uint32_t)0x00000008) +#define SDIO_IT_TXUNDERR ((uint32_t)0x00000010) +#define SDIO_IT_RXOVERR ((uint32_t)0x00000020) +#define SDIO_IT_CMDREND ((uint32_t)0x00000040) +#define SDIO_IT_CMDSENT ((uint32_t)0x00000080) +#define SDIO_IT_DATAEND ((uint32_t)0x00000100) +#define SDIO_IT_STBITERR ((uint32_t)0x00000200) +#define SDIO_IT_DBCKEND ((uint32_t)0x00000400) +#define SDIO_IT_CMDACT ((uint32_t)0x00000800) +#define SDIO_IT_TXACT ((uint32_t)0x00001000) +#define SDIO_IT_RXACT ((uint32_t)0x00002000) +#define SDIO_IT_TXFIFOHE ((uint32_t)0x00004000) +#define SDIO_IT_RXFIFOHF ((uint32_t)0x00008000) +#define SDIO_IT_TXFIFOF ((uint32_t)0x00010000) +#define SDIO_IT_RXFIFOF ((uint32_t)0x00020000) +#define SDIO_IT_TXFIFOE ((uint32_t)0x00040000) +#define SDIO_IT_RXFIFOE ((uint32_t)0x00080000) +#define SDIO_IT_TXDAVL ((uint32_t)0x00100000) +#define SDIO_IT_RXDAVL ((uint32_t)0x00200000) +#define SDIO_IT_SDIOIT ((uint32_t)0x00400000) +#define SDIO_IT_CEATAEND ((uint32_t)0x00800000) +#define IS_SDIO_IT(IT) ((((IT) & (uint32_t)0xFF000000) == 0x00) && ((IT) != (uint32_t)0x00)) +/** + * @} + */ + +/** @defgroup SDIO_Command_Index + * @{ + */ + +#define IS_SDIO_CMD_INDEX(INDEX) ((INDEX) < 0x40) +/** + * @} + */ + +/** @defgroup SDIO_Response_Type + * @{ + */ + +#define SDIO_Response_No ((uint32_t)0x00000000) +#define SDIO_Response_Short ((uint32_t)0x00000040) +#define SDIO_Response_Long ((uint32_t)0x000000C0) +#define IS_SDIO_RESPONSE(RESPONSE) (((RESPONSE) == SDIO_Response_No) || \ + ((RESPONSE) == SDIO_Response_Short) || \ + ((RESPONSE) == SDIO_Response_Long)) +/** + * @} + */ + +/** @defgroup SDIO_Wait_Interrupt_State + * @{ + */ + +#define SDIO_Wait_No ((uint32_t)0x00000000) /*!< SDIO No Wait, TimeOut is enabled */ +#define SDIO_Wait_IT ((uint32_t)0x00000100) /*!< SDIO Wait Interrupt Request */ +#define SDIO_Wait_Pend ((uint32_t)0x00000200) /*!< SDIO Wait End of transfer */ +#define IS_SDIO_WAIT(WAIT) (((WAIT) == SDIO_Wait_No) || ((WAIT) == SDIO_Wait_IT) || \ + ((WAIT) == SDIO_Wait_Pend)) +/** + * @} + */ + +/** @defgroup SDIO_CPSM_State + * @{ + */ + +#define SDIO_CPSM_Disable ((uint32_t)0x00000000) +#define SDIO_CPSM_Enable ((uint32_t)0x00000400) +#define IS_SDIO_CPSM(CPSM) (((CPSM) == SDIO_CPSM_Enable) || ((CPSM) == SDIO_CPSM_Disable)) +/** + * @} + */ + +/** @defgroup SDIO_Response_Registers + * @{ + */ + +#define SDIO_RESP1 ((uint32_t)0x00000000) +#define SDIO_RESP2 ((uint32_t)0x00000004) +#define SDIO_RESP3 ((uint32_t)0x00000008) +#define SDIO_RESP4 ((uint32_t)0x0000000C) +#define IS_SDIO_RESP(RESP) (((RESP) == SDIO_RESP1) || ((RESP) == SDIO_RESP2) || \ + ((RESP) == SDIO_RESP3) || ((RESP) == SDIO_RESP4)) +/** + * @} + */ + +/** @defgroup SDIO_Data_Length + * @{ + */ + +#define IS_SDIO_DATA_LENGTH(LENGTH) ((LENGTH) <= 0x01FFFFFF) +/** + * @} + */ + +/** @defgroup SDIO_Data_Block_Size + * @{ + */ + +#define SDIO_DataBlockSize_1b ((uint32_t)0x00000000) +#define SDIO_DataBlockSize_2b ((uint32_t)0x00000010) +#define SDIO_DataBlockSize_4b ((uint32_t)0x00000020) +#define SDIO_DataBlockSize_8b ((uint32_t)0x00000030) +#define SDIO_DataBlockSize_16b ((uint32_t)0x00000040) +#define SDIO_DataBlockSize_32b ((uint32_t)0x00000050) +#define SDIO_DataBlockSize_64b ((uint32_t)0x00000060) +#define SDIO_DataBlockSize_128b ((uint32_t)0x00000070) +#define SDIO_DataBlockSize_256b ((uint32_t)0x00000080) +#define SDIO_DataBlockSize_512b ((uint32_t)0x00000090) +#define SDIO_DataBlockSize_1024b ((uint32_t)0x000000A0) +#define SDIO_DataBlockSize_2048b ((uint32_t)0x000000B0) +#define SDIO_DataBlockSize_4096b ((uint32_t)0x000000C0) +#define SDIO_DataBlockSize_8192b ((uint32_t)0x000000D0) +#define SDIO_DataBlockSize_16384b ((uint32_t)0x000000E0) +#define IS_SDIO_BLOCK_SIZE(SIZE) (((SIZE) == SDIO_DataBlockSize_1b) || \ + ((SIZE) == SDIO_DataBlockSize_2b) || \ + ((SIZE) == SDIO_DataBlockSize_4b) || \ + ((SIZE) == SDIO_DataBlockSize_8b) || \ + ((SIZE) == SDIO_DataBlockSize_16b) || \ + ((SIZE) == SDIO_DataBlockSize_32b) || \ + ((SIZE) == SDIO_DataBlockSize_64b) || \ + ((SIZE) == SDIO_DataBlockSize_128b) || \ + ((SIZE) == SDIO_DataBlockSize_256b) || \ + ((SIZE) == SDIO_DataBlockSize_512b) || \ + ((SIZE) == SDIO_DataBlockSize_1024b) || \ + ((SIZE) == SDIO_DataBlockSize_2048b) || \ + ((SIZE) == SDIO_DataBlockSize_4096b) || \ + ((SIZE) == SDIO_DataBlockSize_8192b) || \ + ((SIZE) == SDIO_DataBlockSize_16384b)) +/** + * @} + */ + +/** @defgroup SDIO_Transfer_Direction + * @{ + */ + +#define SDIO_TransferDir_ToCard ((uint32_t)0x00000000) +#define SDIO_TransferDir_ToSDIO ((uint32_t)0x00000002) +#define IS_SDIO_TRANSFER_DIR(DIR) (((DIR) == SDIO_TransferDir_ToCard) || \ + ((DIR) == SDIO_TransferDir_ToSDIO)) +/** + * @} + */ + +/** @defgroup SDIO_Transfer_Type + * @{ + */ + +#define SDIO_TransferMode_Block ((uint32_t)0x00000000) +#define SDIO_TransferMode_Stream ((uint32_t)0x00000004) +#define IS_SDIO_TRANSFER_MODE(MODE) (((MODE) == SDIO_TransferMode_Stream) || \ + ((MODE) == SDIO_TransferMode_Block)) +/** + * @} + */ + +/** @defgroup SDIO_DPSM_State + * @{ + */ + +#define SDIO_DPSM_Disable ((uint32_t)0x00000000) +#define SDIO_DPSM_Enable ((uint32_t)0x00000001) +#define IS_SDIO_DPSM(DPSM) (((DPSM) == SDIO_DPSM_Enable) || ((DPSM) == SDIO_DPSM_Disable)) +/** + * @} + */ + +/** @defgroup SDIO_Flags + * @{ + */ + +#define SDIO_FLAG_CCRCFAIL ((uint32_t)0x00000001) +#define SDIO_FLAG_DCRCFAIL ((uint32_t)0x00000002) +#define SDIO_FLAG_CTIMEOUT ((uint32_t)0x00000004) +#define SDIO_FLAG_DTIMEOUT ((uint32_t)0x00000008) +#define SDIO_FLAG_TXUNDERR ((uint32_t)0x00000010) +#define SDIO_FLAG_RXOVERR ((uint32_t)0x00000020) +#define SDIO_FLAG_CMDREND ((uint32_t)0x00000040) +#define SDIO_FLAG_CMDSENT ((uint32_t)0x00000080) +#define SDIO_FLAG_DATAEND ((uint32_t)0x00000100) +#define SDIO_FLAG_STBITERR ((uint32_t)0x00000200) +#define SDIO_FLAG_DBCKEND ((uint32_t)0x00000400) +#define SDIO_FLAG_CMDACT ((uint32_t)0x00000800) +#define SDIO_FLAG_TXACT ((uint32_t)0x00001000) +#define SDIO_FLAG_RXACT ((uint32_t)0x00002000) +#define SDIO_FLAG_TXFIFOHE ((uint32_t)0x00004000) +#define SDIO_FLAG_RXFIFOHF ((uint32_t)0x00008000) +#define SDIO_FLAG_TXFIFOF ((uint32_t)0x00010000) +#define SDIO_FLAG_RXFIFOF ((uint32_t)0x00020000) +#define SDIO_FLAG_TXFIFOE ((uint32_t)0x00040000) +#define SDIO_FLAG_RXFIFOE ((uint32_t)0x00080000) +#define SDIO_FLAG_TXDAVL ((uint32_t)0x00100000) +#define SDIO_FLAG_RXDAVL ((uint32_t)0x00200000) +#define SDIO_FLAG_SDIOIT ((uint32_t)0x00400000) +#define SDIO_FLAG_CEATAEND ((uint32_t)0x00800000) +#define IS_SDIO_FLAG(FLAG) (((FLAG) == SDIO_FLAG_CCRCFAIL) || \ + ((FLAG) == SDIO_FLAG_DCRCFAIL) || \ + ((FLAG) == SDIO_FLAG_CTIMEOUT) || \ + ((FLAG) == SDIO_FLAG_DTIMEOUT) || \ + ((FLAG) == SDIO_FLAG_TXUNDERR) || \ + ((FLAG) == SDIO_FLAG_RXOVERR) || \ + ((FLAG) == SDIO_FLAG_CMDREND) || \ + ((FLAG) == SDIO_FLAG_CMDSENT) || \ + ((FLAG) == SDIO_FLAG_DATAEND) || \ + ((FLAG) == SDIO_FLAG_STBITERR) || \ + ((FLAG) == SDIO_FLAG_DBCKEND) || \ + ((FLAG) == SDIO_FLAG_CMDACT) || \ + ((FLAG) == SDIO_FLAG_TXACT) || \ + ((FLAG) == SDIO_FLAG_RXACT) || \ + ((FLAG) == SDIO_FLAG_TXFIFOHE) || \ + ((FLAG) == SDIO_FLAG_RXFIFOHF) || \ + ((FLAG) == SDIO_FLAG_TXFIFOF) || \ + ((FLAG) == SDIO_FLAG_RXFIFOF) || \ + ((FLAG) == SDIO_FLAG_TXFIFOE) || \ + ((FLAG) == SDIO_FLAG_RXFIFOE) || \ + ((FLAG) == SDIO_FLAG_TXDAVL) || \ + ((FLAG) == SDIO_FLAG_RXDAVL) || \ + ((FLAG) == SDIO_FLAG_SDIOIT) || \ + ((FLAG) == SDIO_FLAG_CEATAEND)) + +#define IS_SDIO_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFF3FF800) == 0x00) && ((FLAG) != (uint32_t)0x00)) + +#define IS_SDIO_GET_IT(IT) (((IT) == SDIO_IT_CCRCFAIL) || \ + ((IT) == SDIO_IT_DCRCFAIL) || \ + ((IT) == SDIO_IT_CTIMEOUT) || \ + ((IT) == SDIO_IT_DTIMEOUT) || \ + ((IT) == SDIO_IT_TXUNDERR) || \ + ((IT) == SDIO_IT_RXOVERR) || \ + ((IT) == SDIO_IT_CMDREND) || \ + ((IT) == SDIO_IT_CMDSENT) || \ + ((IT) == SDIO_IT_DATAEND) || \ + ((IT) == SDIO_IT_STBITERR) || \ + ((IT) == SDIO_IT_DBCKEND) || \ + ((IT) == SDIO_IT_CMDACT) || \ + ((IT) == SDIO_IT_TXACT) || \ + ((IT) == SDIO_IT_RXACT) || \ + ((IT) == SDIO_IT_TXFIFOHE) || \ + ((IT) == SDIO_IT_RXFIFOHF) || \ + ((IT) == SDIO_IT_TXFIFOF) || \ + ((IT) == SDIO_IT_RXFIFOF) || \ + ((IT) == SDIO_IT_TXFIFOE) || \ + ((IT) == SDIO_IT_RXFIFOE) || \ + ((IT) == SDIO_IT_TXDAVL) || \ + ((IT) == SDIO_IT_RXDAVL) || \ + ((IT) == SDIO_IT_SDIOIT) || \ + ((IT) == SDIO_IT_CEATAEND)) + +#define IS_SDIO_CLEAR_IT(IT) ((((IT) & (uint32_t)0xFF3FF800) == 0x00) && ((IT) != (uint32_t)0x00)) + +/** + * @} + */ + +/** @defgroup SDIO_Read_Wait_Mode + * @{ + */ + +#define SDIO_ReadWaitMode_CLK ((uint32_t)0x00000001) +#define SDIO_ReadWaitMode_DATA2 ((uint32_t)0x00000000) +#define IS_SDIO_READWAIT_MODE(MODE) (((MODE) == SDIO_ReadWaitMode_CLK) || \ + ((MODE) == SDIO_ReadWaitMode_DATA2)) +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup SDIO_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup SDIO_Exported_Functions + * @{ + */ + +void SDIO_DeInit(void); +void SDIO_Init(SDIO_InitTypeDef* SDIO_InitStruct); +void SDIO_StructInit(SDIO_InitTypeDef* SDIO_InitStruct); +void SDIO_ClockCmd(FunctionalState NewState); +void SDIO_SetPowerState(uint32_t SDIO_PowerState); +uint32_t SDIO_GetPowerState(void); +void SDIO_ITConfig(uint32_t SDIO_IT, FunctionalState NewState); +void SDIO_DMACmd(FunctionalState NewState); +void SDIO_SendCommand(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct); +void SDIO_CmdStructInit(SDIO_CmdInitTypeDef* SDIO_CmdInitStruct); +uint8_t SDIO_GetCommandResponse(void); +uint32_t SDIO_GetResponse(uint32_t SDIO_RESP); +void SDIO_DataConfig(SDIO_DataInitTypeDef* SDIO_DataInitStruct); +void SDIO_DataStructInit(SDIO_DataInitTypeDef* SDIO_DataInitStruct); +uint32_t SDIO_GetDataCounter(void); +uint32_t SDIO_ReadData(void); +void SDIO_WriteData(uint32_t Data); +uint32_t SDIO_GetFIFOCount(void); +void SDIO_StartSDIOReadWait(FunctionalState NewState); +void SDIO_StopSDIOReadWait(FunctionalState NewState); +void SDIO_SetSDIOReadWaitMode(uint32_t SDIO_ReadWaitMode); +void SDIO_SetSDIOOperation(FunctionalState NewState); +void SDIO_SendSDIOSuspendCmd(FunctionalState NewState); +void SDIO_CommandCompletionCmd(FunctionalState NewState); +void SDIO_CEATAITCmd(FunctionalState NewState); +void SDIO_SendCEATACmd(FunctionalState NewState); +FlagStatus SDIO_GetFlagStatus(uint32_t SDIO_FLAG); +void SDIO_ClearFlag(uint32_t SDIO_FLAG); +ITStatus SDIO_GetITStatus(uint32_t SDIO_IT); +void SDIO_ClearITPendingBit(uint32_t SDIO_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_SDIO_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h new file mode 100644 index 00000000..6056c4c6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h @@ -0,0 +1,487 @@ +/** + ****************************************************************************** + * @file stm32f10x_spi.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the SPI firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_SPI_H +#define __STM32F10x_SPI_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup SPI + * @{ + */ + +/** @defgroup SPI_Exported_Types + * @{ + */ + +/** + * @brief SPI Init structure definition + */ + +typedef struct +{ + uint16_t SPI_Direction; /*!< Specifies the SPI unidirectional or bidirectional data mode. + This parameter can be a value of @ref SPI_data_direction */ + + uint16_t SPI_Mode; /*!< Specifies the SPI operating mode. + This parameter can be a value of @ref SPI_mode */ + + uint16_t SPI_DataSize; /*!< Specifies the SPI data size. + This parameter can be a value of @ref SPI_data_size */ + + uint16_t SPI_CPOL; /*!< Specifies the serial clock steady state. + This parameter can be a value of @ref SPI_Clock_Polarity */ + + uint16_t SPI_CPHA; /*!< Specifies the clock active edge for the bit capture. + This parameter can be a value of @ref SPI_Clock_Phase */ + + uint16_t SPI_NSS; /*!< Specifies whether the NSS signal is managed by + hardware (NSS pin) or by software using the SSI bit. + This parameter can be a value of @ref SPI_Slave_Select_management */ + + uint16_t SPI_BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be + used to configure the transmit and receive SCK clock. + This parameter can be a value of @ref SPI_BaudRate_Prescaler. + @note The communication clock is derived from the master + clock. The slave clock does not need to be set. */ + + uint16_t SPI_FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit. + This parameter can be a value of @ref SPI_MSB_LSB_transmission */ + + uint16_t SPI_CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation. */ +}SPI_InitTypeDef; + +/** + * @brief I2S Init structure definition + */ + +typedef struct +{ + + uint16_t I2S_Mode; /*!< Specifies the I2S operating mode. + This parameter can be a value of @ref I2S_Mode */ + + uint16_t I2S_Standard; /*!< Specifies the standard used for the I2S communication. + This parameter can be a value of @ref I2S_Standard */ + + uint16_t I2S_DataFormat; /*!< Specifies the data format for the I2S communication. + This parameter can be a value of @ref I2S_Data_Format */ + + uint16_t I2S_MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not. + This parameter can be a value of @ref I2S_MCLK_Output */ + + uint32_t I2S_AudioFreq; /*!< Specifies the frequency selected for the I2S communication. + This parameter can be a value of @ref I2S_Audio_Frequency */ + + uint16_t I2S_CPOL; /*!< Specifies the idle state of the I2S clock. + This parameter can be a value of @ref I2S_Clock_Polarity */ +}I2S_InitTypeDef; + +/** + * @} + */ + +/** @defgroup SPI_Exported_Constants + * @{ + */ + +#define IS_SPI_ALL_PERIPH(PERIPH) (((PERIPH) == SPI1) || \ + ((PERIPH) == SPI2) || \ + ((PERIPH) == SPI3)) + +#define IS_SPI_23_PERIPH(PERIPH) (((PERIPH) == SPI2) || \ + ((PERIPH) == SPI3)) + +/** @defgroup SPI_data_direction + * @{ + */ + +#define SPI_Direction_2Lines_FullDuplex ((uint16_t)0x0000) +#define SPI_Direction_2Lines_RxOnly ((uint16_t)0x0400) +#define SPI_Direction_1Line_Rx ((uint16_t)0x8000) +#define SPI_Direction_1Line_Tx ((uint16_t)0xC000) +#define IS_SPI_DIRECTION_MODE(MODE) (((MODE) == SPI_Direction_2Lines_FullDuplex) || \ + ((MODE) == SPI_Direction_2Lines_RxOnly) || \ + ((MODE) == SPI_Direction_1Line_Rx) || \ + ((MODE) == SPI_Direction_1Line_Tx)) +/** + * @} + */ + +/** @defgroup SPI_mode + * @{ + */ + +#define SPI_Mode_Master ((uint16_t)0x0104) +#define SPI_Mode_Slave ((uint16_t)0x0000) +#define IS_SPI_MODE(MODE) (((MODE) == SPI_Mode_Master) || \ + ((MODE) == SPI_Mode_Slave)) +/** + * @} + */ + +/** @defgroup SPI_data_size + * @{ + */ + +#define SPI_DataSize_16b ((uint16_t)0x0800) +#define SPI_DataSize_8b ((uint16_t)0x0000) +#define IS_SPI_DATASIZE(DATASIZE) (((DATASIZE) == SPI_DataSize_16b) || \ + ((DATASIZE) == SPI_DataSize_8b)) +/** + * @} + */ + +/** @defgroup SPI_Clock_Polarity + * @{ + */ + +#define SPI_CPOL_Low ((uint16_t)0x0000) +#define SPI_CPOL_High ((uint16_t)0x0002) +#define IS_SPI_CPOL(CPOL) (((CPOL) == SPI_CPOL_Low) || \ + ((CPOL) == SPI_CPOL_High)) +/** + * @} + */ + +/** @defgroup SPI_Clock_Phase + * @{ + */ + +#define SPI_CPHA_1Edge ((uint16_t)0x0000) +#define SPI_CPHA_2Edge ((uint16_t)0x0001) +#define IS_SPI_CPHA(CPHA) (((CPHA) == SPI_CPHA_1Edge) || \ + ((CPHA) == SPI_CPHA_2Edge)) +/** + * @} + */ + +/** @defgroup SPI_Slave_Select_management + * @{ + */ + +#define SPI_NSS_Soft ((uint16_t)0x0200) +#define SPI_NSS_Hard ((uint16_t)0x0000) +#define IS_SPI_NSS(NSS) (((NSS) == SPI_NSS_Soft) || \ + ((NSS) == SPI_NSS_Hard)) +/** + * @} + */ + +/** @defgroup SPI_BaudRate_Prescaler + * @{ + */ + +#define SPI_BaudRatePrescaler_2 ((uint16_t)0x0000) +#define SPI_BaudRatePrescaler_4 ((uint16_t)0x0008) +#define SPI_BaudRatePrescaler_8 ((uint16_t)0x0010) +#define SPI_BaudRatePrescaler_16 ((uint16_t)0x0018) +#define SPI_BaudRatePrescaler_32 ((uint16_t)0x0020) +#define SPI_BaudRatePrescaler_64 ((uint16_t)0x0028) +#define SPI_BaudRatePrescaler_128 ((uint16_t)0x0030) +#define SPI_BaudRatePrescaler_256 ((uint16_t)0x0038) +#define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) (((PRESCALER) == SPI_BaudRatePrescaler_2) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_4) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_8) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_16) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_32) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_64) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_128) || \ + ((PRESCALER) == SPI_BaudRatePrescaler_256)) +/** + * @} + */ + +/** @defgroup SPI_MSB_LSB_transmission + * @{ + */ + +#define SPI_FirstBit_MSB ((uint16_t)0x0000) +#define SPI_FirstBit_LSB ((uint16_t)0x0080) +#define IS_SPI_FIRST_BIT(BIT) (((BIT) == SPI_FirstBit_MSB) || \ + ((BIT) == SPI_FirstBit_LSB)) +/** + * @} + */ + +/** @defgroup I2S_Mode + * @{ + */ + +#define I2S_Mode_SlaveTx ((uint16_t)0x0000) +#define I2S_Mode_SlaveRx ((uint16_t)0x0100) +#define I2S_Mode_MasterTx ((uint16_t)0x0200) +#define I2S_Mode_MasterRx ((uint16_t)0x0300) +#define IS_I2S_MODE(MODE) (((MODE) == I2S_Mode_SlaveTx) || \ + ((MODE) == I2S_Mode_SlaveRx) || \ + ((MODE) == I2S_Mode_MasterTx) || \ + ((MODE) == I2S_Mode_MasterRx) ) +/** + * @} + */ + +/** @defgroup I2S_Standard + * @{ + */ + +#define I2S_Standard_Phillips ((uint16_t)0x0000) +#define I2S_Standard_MSB ((uint16_t)0x0010) +#define I2S_Standard_LSB ((uint16_t)0x0020) +#define I2S_Standard_PCMShort ((uint16_t)0x0030) +#define I2S_Standard_PCMLong ((uint16_t)0x00B0) +#define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_Standard_Phillips) || \ + ((STANDARD) == I2S_Standard_MSB) || \ + ((STANDARD) == I2S_Standard_LSB) || \ + ((STANDARD) == I2S_Standard_PCMShort) || \ + ((STANDARD) == I2S_Standard_PCMLong)) +/** + * @} + */ + +/** @defgroup I2S_Data_Format + * @{ + */ + +#define I2S_DataFormat_16b ((uint16_t)0x0000) +#define I2S_DataFormat_16bextended ((uint16_t)0x0001) +#define I2S_DataFormat_24b ((uint16_t)0x0003) +#define I2S_DataFormat_32b ((uint16_t)0x0005) +#define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DataFormat_16b) || \ + ((FORMAT) == I2S_DataFormat_16bextended) || \ + ((FORMAT) == I2S_DataFormat_24b) || \ + ((FORMAT) == I2S_DataFormat_32b)) +/** + * @} + */ + +/** @defgroup I2S_MCLK_Output + * @{ + */ + +#define I2S_MCLKOutput_Enable ((uint16_t)0x0200) +#define I2S_MCLKOutput_Disable ((uint16_t)0x0000) +#define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOutput_Enable) || \ + ((OUTPUT) == I2S_MCLKOutput_Disable)) +/** + * @} + */ + +/** @defgroup I2S_Audio_Frequency + * @{ + */ + +#define I2S_AudioFreq_192k ((uint32_t)192000) +#define I2S_AudioFreq_96k ((uint32_t)96000) +#define I2S_AudioFreq_48k ((uint32_t)48000) +#define I2S_AudioFreq_44k ((uint32_t)44100) +#define I2S_AudioFreq_32k ((uint32_t)32000) +#define I2S_AudioFreq_22k ((uint32_t)22050) +#define I2S_AudioFreq_16k ((uint32_t)16000) +#define I2S_AudioFreq_11k ((uint32_t)11025) +#define I2S_AudioFreq_8k ((uint32_t)8000) +#define I2S_AudioFreq_Default ((uint32_t)2) + +#define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AudioFreq_8k) && \ + ((FREQ) <= I2S_AudioFreq_192k)) || \ + ((FREQ) == I2S_AudioFreq_Default)) +/** + * @} + */ + +/** @defgroup I2S_Clock_Polarity + * @{ + */ + +#define I2S_CPOL_Low ((uint16_t)0x0000) +#define I2S_CPOL_High ((uint16_t)0x0008) +#define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_Low) || \ + ((CPOL) == I2S_CPOL_High)) +/** + * @} + */ + +/** @defgroup SPI_I2S_DMA_transfer_requests + * @{ + */ + +#define SPI_I2S_DMAReq_Tx ((uint16_t)0x0002) +#define SPI_I2S_DMAReq_Rx ((uint16_t)0x0001) +#define IS_SPI_I2S_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFFFC) == 0x00) && ((DMAREQ) != 0x00)) +/** + * @} + */ + +/** @defgroup SPI_NSS_internal_software_management + * @{ + */ + +#define SPI_NSSInternalSoft_Set ((uint16_t)0x0100) +#define SPI_NSSInternalSoft_Reset ((uint16_t)0xFEFF) +#define IS_SPI_NSS_INTERNAL(INTERNAL) (((INTERNAL) == SPI_NSSInternalSoft_Set) || \ + ((INTERNAL) == SPI_NSSInternalSoft_Reset)) +/** + * @} + */ + +/** @defgroup SPI_CRC_Transmit_Receive + * @{ + */ + +#define SPI_CRC_Tx ((uint8_t)0x00) +#define SPI_CRC_Rx ((uint8_t)0x01) +#define IS_SPI_CRC(CRC) (((CRC) == SPI_CRC_Tx) || ((CRC) == SPI_CRC_Rx)) +/** + * @} + */ + +/** @defgroup SPI_direction_transmit_receive + * @{ + */ + +#define SPI_Direction_Rx ((uint16_t)0xBFFF) +#define SPI_Direction_Tx ((uint16_t)0x4000) +#define IS_SPI_DIRECTION(DIRECTION) (((DIRECTION) == SPI_Direction_Rx) || \ + ((DIRECTION) == SPI_Direction_Tx)) +/** + * @} + */ + +/** @defgroup SPI_I2S_interrupts_definition + * @{ + */ + +#define SPI_I2S_IT_TXE ((uint8_t)0x71) +#define SPI_I2S_IT_RXNE ((uint8_t)0x60) +#define SPI_I2S_IT_ERR ((uint8_t)0x50) +#define IS_SPI_I2S_CONFIG_IT(IT) (((IT) == SPI_I2S_IT_TXE) || \ + ((IT) == SPI_I2S_IT_RXNE) || \ + ((IT) == SPI_I2S_IT_ERR)) +#define SPI_I2S_IT_OVR ((uint8_t)0x56) +#define SPI_IT_MODF ((uint8_t)0x55) +#define SPI_IT_CRCERR ((uint8_t)0x54) +#define I2S_IT_UDR ((uint8_t)0x53) +#define IS_SPI_I2S_CLEAR_IT(IT) (((IT) == SPI_IT_CRCERR)) +#define IS_SPI_I2S_GET_IT(IT) (((IT) == SPI_I2S_IT_RXNE) || ((IT) == SPI_I2S_IT_TXE) || \ + ((IT) == I2S_IT_UDR) || ((IT) == SPI_IT_CRCERR) || \ + ((IT) == SPI_IT_MODF) || ((IT) == SPI_I2S_IT_OVR)) +/** + * @} + */ + +/** @defgroup SPI_I2S_flags_definition + * @{ + */ + +#define SPI_I2S_FLAG_RXNE ((uint16_t)0x0001) +#define SPI_I2S_FLAG_TXE ((uint16_t)0x0002) +#define I2S_FLAG_CHSIDE ((uint16_t)0x0004) +#define I2S_FLAG_UDR ((uint16_t)0x0008) +#define SPI_FLAG_CRCERR ((uint16_t)0x0010) +#define SPI_FLAG_MODF ((uint16_t)0x0020) +#define SPI_I2S_FLAG_OVR ((uint16_t)0x0040) +#define SPI_I2S_FLAG_BSY ((uint16_t)0x0080) +#define IS_SPI_I2S_CLEAR_FLAG(FLAG) (((FLAG) == SPI_FLAG_CRCERR)) +#define IS_SPI_I2S_GET_FLAG(FLAG) (((FLAG) == SPI_I2S_FLAG_BSY) || ((FLAG) == SPI_I2S_FLAG_OVR) || \ + ((FLAG) == SPI_FLAG_MODF) || ((FLAG) == SPI_FLAG_CRCERR) || \ + ((FLAG) == I2S_FLAG_UDR) || ((FLAG) == I2S_FLAG_CHSIDE) || \ + ((FLAG) == SPI_I2S_FLAG_TXE) || ((FLAG) == SPI_I2S_FLAG_RXNE)) +/** + * @} + */ + +/** @defgroup SPI_CRC_polynomial + * @{ + */ + +#define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) ((POLYNOMIAL) >= 0x1) +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup SPI_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup SPI_Exported_Functions + * @{ + */ + +void SPI_I2S_DeInit(SPI_TypeDef* SPIx); +void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct); +void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct); +void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct); +void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct); +void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState); +void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState); +void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data); +uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx); +void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft); +void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize); +void SPI_TransmitCRC(SPI_TypeDef* SPIx); +void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState); +uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC); +uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx); +void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction); +FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG); +void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG); +ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT); +void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F10x_SPI_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h new file mode 100644 index 00000000..cd7ac3e9 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h @@ -0,0 +1,1164 @@ +/** + ****************************************************************************** + * @file stm32f10x_tim.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the TIM firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_TIM_H +#define __STM32F10x_TIM_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup TIM + * @{ + */ + +/** @defgroup TIM_Exported_Types + * @{ + */ + +/** + * @brief TIM Time Base Init structure definition + * @note This structure is used with all TIMx except for TIM6 and TIM7. + */ + +typedef struct +{ + uint16_t TIM_Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between 0x0000 and 0xFFFF */ + + uint16_t TIM_CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_Counter_Mode */ + + uint16_t TIM_Period; /*!< Specifies the period value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter must be a number between 0x0000 and 0xFFFF. */ + + uint16_t TIM_ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_Clock_Division_CKD */ + + uint8_t TIM_RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + This parameter must be a number between 0x00 and 0xFF. + @note This parameter is valid only for TIM1 and TIM8. */ +} TIM_TimeBaseInitTypeDef; + +/** + * @brief TIM Output Compare Init structure definition + */ + +typedef struct +{ + uint16_t TIM_OCMode; /*!< Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint16_t TIM_OutputState; /*!< Specifies the TIM Output Compare state. + This parameter can be a value of @ref TIM_Output_Compare_state */ + + uint16_t TIM_OutputNState; /*!< Specifies the TIM complementary Output Compare state. + This parameter can be a value of @ref TIM_Output_Compare_N_state + @note This parameter is valid only for TIM1 and TIM8. */ + + uint16_t TIM_Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between 0x0000 and 0xFFFF */ + + uint16_t TIM_OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint16_t TIM_OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_Output_Compare_N_Polarity + @note This parameter is valid only for TIM1 and TIM8. */ + + uint16_t TIM_OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_Idle_State + @note This parameter is valid only for TIM1 and TIM8. */ + + uint16_t TIM_OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State + @note This parameter is valid only for TIM1 and TIM8. */ +} TIM_OCInitTypeDef; + +/** + * @brief TIM Input Capture Init structure definition + */ + +typedef struct +{ + + uint16_t TIM_Channel; /*!< Specifies the TIM channel. + This parameter can be a value of @ref TIM_Channel */ + + uint16_t TIM_ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint16_t TIM_ICSelection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint16_t TIM_ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint16_t TIM_ICFilter; /*!< Specifies the input capture filter. + This parameter can be a number between 0x0 and 0xF */ +} TIM_ICInitTypeDef; + +/** + * @brief BDTR structure definition + * @note This structure is used only with TIM1 and TIM8. + */ + +typedef struct +{ + + uint16_t TIM_OSSRState; /*!< Specifies the Off-State selection used in Run mode. + This parameter can be a value of @ref OSSR_Off_State_Selection_for_Run_mode_state */ + + uint16_t TIM_OSSIState; /*!< Specifies the Off-State used in Idle state. + This parameter can be a value of @ref OSSI_Off_State_Selection_for_Idle_mode_state */ + + uint16_t TIM_LOCKLevel; /*!< Specifies the LOCK level parameters. + This parameter can be a value of @ref Lock_level */ + + uint16_t TIM_DeadTime; /*!< Specifies the delay time between the switching-off and the + switching-on of the outputs. + This parameter can be a number between 0x00 and 0xFF */ + + uint16_t TIM_Break; /*!< Specifies whether the TIM Break input is enabled or not. + This parameter can be a value of @ref Break_Input_enable_disable */ + + uint16_t TIM_BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + This parameter can be a value of @ref Break_Polarity */ + + uint16_t TIM_AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. + This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */ +} TIM_BDTRInitTypeDef; + +/** @defgroup TIM_Exported_constants + * @{ + */ + +#define IS_TIM_ALL_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM5) || \ + ((PERIPH) == TIM6) || \ + ((PERIPH) == TIM7) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM9) || \ + ((PERIPH) == TIM10)|| \ + ((PERIPH) == TIM11)|| \ + ((PERIPH) == TIM12)|| \ + ((PERIPH) == TIM13)|| \ + ((PERIPH) == TIM14)|| \ + ((PERIPH) == TIM15)|| \ + ((PERIPH) == TIM16)|| \ + ((PERIPH) == TIM17)) + +/* LIST1: TIM 1 and 8 */ +#define IS_TIM_LIST1_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM8)) + +/* LIST2: TIM 1, 8, 15 16 and 17 */ +#define IS_TIM_LIST2_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15)|| \ + ((PERIPH) == TIM16)|| \ + ((PERIPH) == TIM17)) + +/* LIST3: TIM 1, 2, 3, 4, 5 and 8 */ +#define IS_TIM_LIST3_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM5) || \ + ((PERIPH) == TIM8)) + +/* LIST4: TIM 1, 2, 3, 4, 5, 8, 15, 16 and 17 */ +#define IS_TIM_LIST4_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM5) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15)|| \ + ((PERIPH) == TIM16)|| \ + ((PERIPH) == TIM17)) + +/* LIST5: TIM 1, 2, 3, 4, 5, 8 and 15 */ +#define IS_TIM_LIST5_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM5) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15)) + +/* LIST6: TIM 1, 2, 3, 4, 5, 8, 9, 12 and 15 */ +#define IS_TIM_LIST6_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM5) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM9) || \ + ((PERIPH) == TIM12)|| \ + ((PERIPH) == TIM15)) + +/* LIST7: TIM 1, 2, 3, 4, 5, 6, 7, 8, 9, 12 and 15 */ +#define IS_TIM_LIST7_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM5) || \ + ((PERIPH) == TIM6) || \ + ((PERIPH) == TIM7) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM9) || \ + ((PERIPH) == TIM12)|| \ + ((PERIPH) == TIM15)) + +/* LIST8: TIM 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16 and 17 */ +#define IS_TIM_LIST8_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM5) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM9) || \ + ((PERIPH) == TIM10)|| \ + ((PERIPH) == TIM11)|| \ + ((PERIPH) == TIM12)|| \ + ((PERIPH) == TIM13)|| \ + ((PERIPH) == TIM14)|| \ + ((PERIPH) == TIM15)|| \ + ((PERIPH) == TIM16)|| \ + ((PERIPH) == TIM17)) + +/* LIST9: TIM 1, 2, 3, 4, 5, 6, 7, 8, 15, 16, and 17 */ +#define IS_TIM_LIST9_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ + ((PERIPH) == TIM2) || \ + ((PERIPH) == TIM3) || \ + ((PERIPH) == TIM4) || \ + ((PERIPH) == TIM5) || \ + ((PERIPH) == TIM6) || \ + ((PERIPH) == TIM7) || \ + ((PERIPH) == TIM8) || \ + ((PERIPH) == TIM15)|| \ + ((PERIPH) == TIM16)|| \ + ((PERIPH) == TIM17)) + +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_and_PWM_modes + * @{ + */ + +#define TIM_OCMode_Timing ((uint16_t)0x0000) +#define TIM_OCMode_Active ((uint16_t)0x0010) +#define TIM_OCMode_Inactive ((uint16_t)0x0020) +#define TIM_OCMode_Toggle ((uint16_t)0x0030) +#define TIM_OCMode_PWM1 ((uint16_t)0x0060) +#define TIM_OCMode_PWM2 ((uint16_t)0x0070) +#define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMode_Timing) || \ + ((MODE) == TIM_OCMode_Active) || \ + ((MODE) == TIM_OCMode_Inactive) || \ + ((MODE) == TIM_OCMode_Toggle)|| \ + ((MODE) == TIM_OCMode_PWM1) || \ + ((MODE) == TIM_OCMode_PWM2)) +#define IS_TIM_OCM(MODE) (((MODE) == TIM_OCMode_Timing) || \ + ((MODE) == TIM_OCMode_Active) || \ + ((MODE) == TIM_OCMode_Inactive) || \ + ((MODE) == TIM_OCMode_Toggle)|| \ + ((MODE) == TIM_OCMode_PWM1) || \ + ((MODE) == TIM_OCMode_PWM2) || \ + ((MODE) == TIM_ForcedAction_Active) || \ + ((MODE) == TIM_ForcedAction_InActive)) +/** + * @} + */ + +/** @defgroup TIM_One_Pulse_Mode + * @{ + */ + +#define TIM_OPMode_Single ((uint16_t)0x0008) +#define TIM_OPMode_Repetitive ((uint16_t)0x0000) +#define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMode_Single) || \ + ((MODE) == TIM_OPMode_Repetitive)) +/** + * @} + */ + +/** @defgroup TIM_Channel + * @{ + */ + +#define TIM_Channel_1 ((uint16_t)0x0000) +#define TIM_Channel_2 ((uint16_t)0x0004) +#define TIM_Channel_3 ((uint16_t)0x0008) +#define TIM_Channel_4 ((uint16_t)0x000C) +#define IS_TIM_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \ + ((CHANNEL) == TIM_Channel_2) || \ + ((CHANNEL) == TIM_Channel_3) || \ + ((CHANNEL) == TIM_Channel_4)) +#define IS_TIM_PWMI_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \ + ((CHANNEL) == TIM_Channel_2)) +#define IS_TIM_COMPLEMENTARY_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \ + ((CHANNEL) == TIM_Channel_2) || \ + ((CHANNEL) == TIM_Channel_3)) +/** + * @} + */ + +/** @defgroup TIM_Clock_Division_CKD + * @{ + */ + +#define TIM_CKD_DIV1 ((uint16_t)0x0000) +#define TIM_CKD_DIV2 ((uint16_t)0x0100) +#define TIM_CKD_DIV4 ((uint16_t)0x0200) +#define IS_TIM_CKD_DIV(DIV) (((DIV) == TIM_CKD_DIV1) || \ + ((DIV) == TIM_CKD_DIV2) || \ + ((DIV) == TIM_CKD_DIV4)) +/** + * @} + */ + +/** @defgroup TIM_Counter_Mode + * @{ + */ + +#define TIM_CounterMode_Up ((uint16_t)0x0000) +#define TIM_CounterMode_Down ((uint16_t)0x0010) +#define TIM_CounterMode_CenterAligned1 ((uint16_t)0x0020) +#define TIM_CounterMode_CenterAligned2 ((uint16_t)0x0040) +#define TIM_CounterMode_CenterAligned3 ((uint16_t)0x0060) +#define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) || \ + ((MODE) == TIM_CounterMode_Down) || \ + ((MODE) == TIM_CounterMode_CenterAligned1) || \ + ((MODE) == TIM_CounterMode_CenterAligned2) || \ + ((MODE) == TIM_CounterMode_CenterAligned3)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Polarity + * @{ + */ + +#define TIM_OCPolarity_High ((uint16_t)0x0000) +#define TIM_OCPolarity_Low ((uint16_t)0x0002) +#define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \ + ((POLARITY) == TIM_OCPolarity_Low)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_Polarity + * @{ + */ + +#define TIM_OCNPolarity_High ((uint16_t)0x0000) +#define TIM_OCNPolarity_Low ((uint16_t)0x0008) +#define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPolarity_High) || \ + ((POLARITY) == TIM_OCNPolarity_Low)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_state + * @{ + */ + +#define TIM_OutputState_Disable ((uint16_t)0x0000) +#define TIM_OutputState_Enable ((uint16_t)0x0001) +#define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OutputState_Disable) || \ + ((STATE) == TIM_OutputState_Enable)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_state + * @{ + */ + +#define TIM_OutputNState_Disable ((uint16_t)0x0000) +#define TIM_OutputNState_Enable ((uint16_t)0x0004) +#define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OutputNState_Disable) || \ + ((STATE) == TIM_OutputNState_Enable)) +/** + * @} + */ + +/** @defgroup TIM_Capture_Compare_state + * @{ + */ + +#define TIM_CCx_Enable ((uint16_t)0x0001) +#define TIM_CCx_Disable ((uint16_t)0x0000) +#define IS_TIM_CCX(CCX) (((CCX) == TIM_CCx_Enable) || \ + ((CCX) == TIM_CCx_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Capture_Compare_N_state + * @{ + */ + +#define TIM_CCxN_Enable ((uint16_t)0x0004) +#define TIM_CCxN_Disable ((uint16_t)0x0000) +#define IS_TIM_CCXN(CCXN) (((CCXN) == TIM_CCxN_Enable) || \ + ((CCXN) == TIM_CCxN_Disable)) +/** + * @} + */ + +/** @defgroup Break_Input_enable_disable + * @{ + */ + +#define TIM_Break_Enable ((uint16_t)0x1000) +#define TIM_Break_Disable ((uint16_t)0x0000) +#define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_Break_Enable) || \ + ((STATE) == TIM_Break_Disable)) +/** + * @} + */ + +/** @defgroup Break_Polarity + * @{ + */ + +#define TIM_BreakPolarity_Low ((uint16_t)0x0000) +#define TIM_BreakPolarity_High ((uint16_t)0x2000) +#define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BreakPolarity_Low) || \ + ((POLARITY) == TIM_BreakPolarity_High)) +/** + * @} + */ + +/** @defgroup TIM_AOE_Bit_Set_Reset + * @{ + */ + +#define TIM_AutomaticOutput_Enable ((uint16_t)0x4000) +#define TIM_AutomaticOutput_Disable ((uint16_t)0x0000) +#define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AutomaticOutput_Enable) || \ + ((STATE) == TIM_AutomaticOutput_Disable)) +/** + * @} + */ + +/** @defgroup Lock_level + * @{ + */ + +#define TIM_LOCKLevel_OFF ((uint16_t)0x0000) +#define TIM_LOCKLevel_1 ((uint16_t)0x0100) +#define TIM_LOCKLevel_2 ((uint16_t)0x0200) +#define TIM_LOCKLevel_3 ((uint16_t)0x0300) +#define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLevel_OFF) || \ + ((LEVEL) == TIM_LOCKLevel_1) || \ + ((LEVEL) == TIM_LOCKLevel_2) || \ + ((LEVEL) == TIM_LOCKLevel_3)) +/** + * @} + */ + +/** @defgroup OSSI_Off_State_Selection_for_Idle_mode_state + * @{ + */ + +#define TIM_OSSIState_Enable ((uint16_t)0x0400) +#define TIM_OSSIState_Disable ((uint16_t)0x0000) +#define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSIState_Enable) || \ + ((STATE) == TIM_OSSIState_Disable)) +/** + * @} + */ + +/** @defgroup OSSR_Off_State_Selection_for_Run_mode_state + * @{ + */ + +#define TIM_OSSRState_Enable ((uint16_t)0x0800) +#define TIM_OSSRState_Disable ((uint16_t)0x0000) +#define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSRState_Enable) || \ + ((STATE) == TIM_OSSRState_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Idle_State + * @{ + */ + +#define TIM_OCIdleState_Set ((uint16_t)0x0100) +#define TIM_OCIdleState_Reset ((uint16_t)0x0000) +#define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIdleState_Set) || \ + ((STATE) == TIM_OCIdleState_Reset)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_Idle_State + * @{ + */ + +#define TIM_OCNIdleState_Set ((uint16_t)0x0200) +#define TIM_OCNIdleState_Reset ((uint16_t)0x0000) +#define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIdleState_Set) || \ + ((STATE) == TIM_OCNIdleState_Reset)) +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Polarity + * @{ + */ + +#define TIM_ICPolarity_Rising ((uint16_t)0x0000) +#define TIM_ICPolarity_Falling ((uint16_t)0x0002) +#define TIM_ICPolarity_BothEdge ((uint16_t)0x000A) +#define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \ + ((POLARITY) == TIM_ICPolarity_Falling)) +#define IS_TIM_IC_POLARITY_LITE(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \ + ((POLARITY) == TIM_ICPolarity_Falling)|| \ + ((POLARITY) == TIM_ICPolarity_BothEdge)) +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Selection + * @{ + */ + +#define TIM_ICSelection_DirectTI ((uint16_t)0x0001) /*!< TIM Input 1, 2, 3 or 4 is selected to be + connected to IC1, IC2, IC3 or IC4, respectively */ +#define TIM_ICSelection_IndirectTI ((uint16_t)0x0002) /*!< TIM Input 1, 2, 3 or 4 is selected to be + connected to IC2, IC1, IC4 or IC3, respectively. */ +#define TIM_ICSelection_TRC ((uint16_t)0x0003) /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC. */ +#define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSelection_DirectTI) || \ + ((SELECTION) == TIM_ICSelection_IndirectTI) || \ + ((SELECTION) == TIM_ICSelection_TRC)) +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Prescaler + * @{ + */ + +#define TIM_ICPSC_DIV1 ((uint16_t)0x0000) /*!< Capture performed each time an edge is detected on the capture input. */ +#define TIM_ICPSC_DIV2 ((uint16_t)0x0004) /*!< Capture performed once every 2 events. */ +#define TIM_ICPSC_DIV4 ((uint16_t)0x0008) /*!< Capture performed once every 4 events. */ +#define TIM_ICPSC_DIV8 ((uint16_t)0x000C) /*!< Capture performed once every 8 events. */ +#define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \ + ((PRESCALER) == TIM_ICPSC_DIV2) || \ + ((PRESCALER) == TIM_ICPSC_DIV4) || \ + ((PRESCALER) == TIM_ICPSC_DIV8)) +/** + * @} + */ + +/** @defgroup TIM_interrupt_sources + * @{ + */ + +#define TIM_IT_Update ((uint16_t)0x0001) +#define TIM_IT_CC1 ((uint16_t)0x0002) +#define TIM_IT_CC2 ((uint16_t)0x0004) +#define TIM_IT_CC3 ((uint16_t)0x0008) +#define TIM_IT_CC4 ((uint16_t)0x0010) +#define TIM_IT_COM ((uint16_t)0x0020) +#define TIM_IT_Trigger ((uint16_t)0x0040) +#define TIM_IT_Break ((uint16_t)0x0080) +#define IS_TIM_IT(IT) ((((IT) & (uint16_t)0xFF00) == 0x0000) && ((IT) != 0x0000)) + +#define IS_TIM_GET_IT(IT) (((IT) == TIM_IT_Update) || \ + ((IT) == TIM_IT_CC1) || \ + ((IT) == TIM_IT_CC2) || \ + ((IT) == TIM_IT_CC3) || \ + ((IT) == TIM_IT_CC4) || \ + ((IT) == TIM_IT_COM) || \ + ((IT) == TIM_IT_Trigger) || \ + ((IT) == TIM_IT_Break)) +/** + * @} + */ + +/** @defgroup TIM_DMA_Base_address + * @{ + */ + +#define TIM_DMABase_CR1 ((uint16_t)0x0000) +#define TIM_DMABase_CR2 ((uint16_t)0x0001) +#define TIM_DMABase_SMCR ((uint16_t)0x0002) +#define TIM_DMABase_DIER ((uint16_t)0x0003) +#define TIM_DMABase_SR ((uint16_t)0x0004) +#define TIM_DMABase_EGR ((uint16_t)0x0005) +#define TIM_DMABase_CCMR1 ((uint16_t)0x0006) +#define TIM_DMABase_CCMR2 ((uint16_t)0x0007) +#define TIM_DMABase_CCER ((uint16_t)0x0008) +#define TIM_DMABase_CNT ((uint16_t)0x0009) +#define TIM_DMABase_PSC ((uint16_t)0x000A) +#define TIM_DMABase_ARR ((uint16_t)0x000B) +#define TIM_DMABase_RCR ((uint16_t)0x000C) +#define TIM_DMABase_CCR1 ((uint16_t)0x000D) +#define TIM_DMABase_CCR2 ((uint16_t)0x000E) +#define TIM_DMABase_CCR3 ((uint16_t)0x000F) +#define TIM_DMABase_CCR4 ((uint16_t)0x0010) +#define TIM_DMABase_BDTR ((uint16_t)0x0011) +#define TIM_DMABase_DCR ((uint16_t)0x0012) +#define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABase_CR1) || \ + ((BASE) == TIM_DMABase_CR2) || \ + ((BASE) == TIM_DMABase_SMCR) || \ + ((BASE) == TIM_DMABase_DIER) || \ + ((BASE) == TIM_DMABase_SR) || \ + ((BASE) == TIM_DMABase_EGR) || \ + ((BASE) == TIM_DMABase_CCMR1) || \ + ((BASE) == TIM_DMABase_CCMR2) || \ + ((BASE) == TIM_DMABase_CCER) || \ + ((BASE) == TIM_DMABase_CNT) || \ + ((BASE) == TIM_DMABase_PSC) || \ + ((BASE) == TIM_DMABase_ARR) || \ + ((BASE) == TIM_DMABase_RCR) || \ + ((BASE) == TIM_DMABase_CCR1) || \ + ((BASE) == TIM_DMABase_CCR2) || \ + ((BASE) == TIM_DMABase_CCR3) || \ + ((BASE) == TIM_DMABase_CCR4) || \ + ((BASE) == TIM_DMABase_BDTR) || \ + ((BASE) == TIM_DMABase_DCR)) +/** + * @} + */ + +/** @defgroup TIM_DMA_Burst_Length + * @{ + */ + +#define TIM_DMABurstLength_1Transfer ((uint16_t)0x0000) +#define TIM_DMABurstLength_2Transfers ((uint16_t)0x0100) +#define TIM_DMABurstLength_3Transfers ((uint16_t)0x0200) +#define TIM_DMABurstLength_4Transfers ((uint16_t)0x0300) +#define TIM_DMABurstLength_5Transfers ((uint16_t)0x0400) +#define TIM_DMABurstLength_6Transfers ((uint16_t)0x0500) +#define TIM_DMABurstLength_7Transfers ((uint16_t)0x0600) +#define TIM_DMABurstLength_8Transfers ((uint16_t)0x0700) +#define TIM_DMABurstLength_9Transfers ((uint16_t)0x0800) +#define TIM_DMABurstLength_10Transfers ((uint16_t)0x0900) +#define TIM_DMABurstLength_11Transfers ((uint16_t)0x0A00) +#define TIM_DMABurstLength_12Transfers ((uint16_t)0x0B00) +#define TIM_DMABurstLength_13Transfers ((uint16_t)0x0C00) +#define TIM_DMABurstLength_14Transfers ((uint16_t)0x0D00) +#define TIM_DMABurstLength_15Transfers ((uint16_t)0x0E00) +#define TIM_DMABurstLength_16Transfers ((uint16_t)0x0F00) +#define TIM_DMABurstLength_17Transfers ((uint16_t)0x1000) +#define TIM_DMABurstLength_18Transfers ((uint16_t)0x1100) +#define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABurstLength_1Transfer) || \ + ((LENGTH) == TIM_DMABurstLength_2Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_3Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_4Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_5Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_6Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_7Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_8Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_9Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_10Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_11Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_12Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_13Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_14Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_15Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_16Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_17Transfers) || \ + ((LENGTH) == TIM_DMABurstLength_18Transfers)) +/** + * @} + */ + +/** @defgroup TIM_DMA_sources + * @{ + */ + +#define TIM_DMA_Update ((uint16_t)0x0100) +#define TIM_DMA_CC1 ((uint16_t)0x0200) +#define TIM_DMA_CC2 ((uint16_t)0x0400) +#define TIM_DMA_CC3 ((uint16_t)0x0800) +#define TIM_DMA_CC4 ((uint16_t)0x1000) +#define TIM_DMA_COM ((uint16_t)0x2000) +#define TIM_DMA_Trigger ((uint16_t)0x4000) +#define IS_TIM_DMA_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0x80FF) == 0x0000) && ((SOURCE) != 0x0000)) + +/** + * @} + */ + +/** @defgroup TIM_External_Trigger_Prescaler + * @{ + */ + +#define TIM_ExtTRGPSC_OFF ((uint16_t)0x0000) +#define TIM_ExtTRGPSC_DIV2 ((uint16_t)0x1000) +#define TIM_ExtTRGPSC_DIV4 ((uint16_t)0x2000) +#define TIM_ExtTRGPSC_DIV8 ((uint16_t)0x3000) +#define IS_TIM_EXT_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ExtTRGPSC_OFF) || \ + ((PRESCALER) == TIM_ExtTRGPSC_DIV2) || \ + ((PRESCALER) == TIM_ExtTRGPSC_DIV4) || \ + ((PRESCALER) == TIM_ExtTRGPSC_DIV8)) +/** + * @} + */ + +/** @defgroup TIM_Internal_Trigger_Selection + * @{ + */ + +#define TIM_TS_ITR0 ((uint16_t)0x0000) +#define TIM_TS_ITR1 ((uint16_t)0x0010) +#define TIM_TS_ITR2 ((uint16_t)0x0020) +#define TIM_TS_ITR3 ((uint16_t)0x0030) +#define TIM_TS_TI1F_ED ((uint16_t)0x0040) +#define TIM_TS_TI1FP1 ((uint16_t)0x0050) +#define TIM_TS_TI2FP2 ((uint16_t)0x0060) +#define TIM_TS_ETRF ((uint16_t)0x0070) +#define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \ + ((SELECTION) == TIM_TS_ITR1) || \ + ((SELECTION) == TIM_TS_ITR2) || \ + ((SELECTION) == TIM_TS_ITR3) || \ + ((SELECTION) == TIM_TS_TI1F_ED) || \ + ((SELECTION) == TIM_TS_TI1FP1) || \ + ((SELECTION) == TIM_TS_TI2FP2) || \ + ((SELECTION) == TIM_TS_ETRF)) +#define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \ + ((SELECTION) == TIM_TS_ITR1) || \ + ((SELECTION) == TIM_TS_ITR2) || \ + ((SELECTION) == TIM_TS_ITR3)) +/** + * @} + */ + +/** @defgroup TIM_TIx_External_Clock_Source + * @{ + */ + +#define TIM_TIxExternalCLK1Source_TI1 ((uint16_t)0x0050) +#define TIM_TIxExternalCLK1Source_TI2 ((uint16_t)0x0060) +#define TIM_TIxExternalCLK1Source_TI1ED ((uint16_t)0x0040) +#define IS_TIM_TIXCLK_SOURCE(SOURCE) (((SOURCE) == TIM_TIxExternalCLK1Source_TI1) || \ + ((SOURCE) == TIM_TIxExternalCLK1Source_TI2) || \ + ((SOURCE) == TIM_TIxExternalCLK1Source_TI1ED)) +/** + * @} + */ + +/** @defgroup TIM_External_Trigger_Polarity + * @{ + */ +#define TIM_ExtTRGPolarity_Inverted ((uint16_t)0x8000) +#define TIM_ExtTRGPolarity_NonInverted ((uint16_t)0x0000) +#define IS_TIM_EXT_POLARITY(POLARITY) (((POLARITY) == TIM_ExtTRGPolarity_Inverted) || \ + ((POLARITY) == TIM_ExtTRGPolarity_NonInverted)) +/** + * @} + */ + +/** @defgroup TIM_Prescaler_Reload_Mode + * @{ + */ + +#define TIM_PSCReloadMode_Update ((uint16_t)0x0000) +#define TIM_PSCReloadMode_Immediate ((uint16_t)0x0001) +#define IS_TIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == TIM_PSCReloadMode_Update) || \ + ((RELOAD) == TIM_PSCReloadMode_Immediate)) +/** + * @} + */ + +/** @defgroup TIM_Forced_Action + * @{ + */ + +#define TIM_ForcedAction_Active ((uint16_t)0x0050) +#define TIM_ForcedAction_InActive ((uint16_t)0x0040) +#define IS_TIM_FORCED_ACTION(ACTION) (((ACTION) == TIM_ForcedAction_Active) || \ + ((ACTION) == TIM_ForcedAction_InActive)) +/** + * @} + */ + +/** @defgroup TIM_Encoder_Mode + * @{ + */ + +#define TIM_EncoderMode_TI1 ((uint16_t)0x0001) +#define TIM_EncoderMode_TI2 ((uint16_t)0x0002) +#define TIM_EncoderMode_TI12 ((uint16_t)0x0003) +#define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_EncoderMode_TI1) || \ + ((MODE) == TIM_EncoderMode_TI2) || \ + ((MODE) == TIM_EncoderMode_TI12)) +/** + * @} + */ + + +/** @defgroup TIM_Event_Source + * @{ + */ + +#define TIM_EventSource_Update ((uint16_t)0x0001) +#define TIM_EventSource_CC1 ((uint16_t)0x0002) +#define TIM_EventSource_CC2 ((uint16_t)0x0004) +#define TIM_EventSource_CC3 ((uint16_t)0x0008) +#define TIM_EventSource_CC4 ((uint16_t)0x0010) +#define TIM_EventSource_COM ((uint16_t)0x0020) +#define TIM_EventSource_Trigger ((uint16_t)0x0040) +#define TIM_EventSource_Break ((uint16_t)0x0080) +#define IS_TIM_EVENT_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0xFF00) == 0x0000) && ((SOURCE) != 0x0000)) + +/** + * @} + */ + +/** @defgroup TIM_Update_Source + * @{ + */ + +#define TIM_UpdateSource_Global ((uint16_t)0x0000) /*!< Source of update is the counter overflow/underflow + or the setting of UG bit, or an update generation + through the slave mode controller. */ +#define TIM_UpdateSource_Regular ((uint16_t)0x0001) /*!< Source of update is counter overflow/underflow. */ +#define IS_TIM_UPDATE_SOURCE(SOURCE) (((SOURCE) == TIM_UpdateSource_Global) || \ + ((SOURCE) == TIM_UpdateSource_Regular)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Preload_State + * @{ + */ + +#define TIM_OCPreload_Enable ((uint16_t)0x0008) +#define TIM_OCPreload_Disable ((uint16_t)0x0000) +#define IS_TIM_OCPRELOAD_STATE(STATE) (((STATE) == TIM_OCPreload_Enable) || \ + ((STATE) == TIM_OCPreload_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Fast_State + * @{ + */ + +#define TIM_OCFast_Enable ((uint16_t)0x0004) +#define TIM_OCFast_Disable ((uint16_t)0x0000) +#define IS_TIM_OCFAST_STATE(STATE) (((STATE) == TIM_OCFast_Enable) || \ + ((STATE) == TIM_OCFast_Disable)) + +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Clear_State + * @{ + */ + +#define TIM_OCClear_Enable ((uint16_t)0x0080) +#define TIM_OCClear_Disable ((uint16_t)0x0000) +#define IS_TIM_OCCLEAR_STATE(STATE) (((STATE) == TIM_OCClear_Enable) || \ + ((STATE) == TIM_OCClear_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Trigger_Output_Source + * @{ + */ + +#define TIM_TRGOSource_Reset ((uint16_t)0x0000) +#define TIM_TRGOSource_Enable ((uint16_t)0x0010) +#define TIM_TRGOSource_Update ((uint16_t)0x0020) +#define TIM_TRGOSource_OC1 ((uint16_t)0x0030) +#define TIM_TRGOSource_OC1Ref ((uint16_t)0x0040) +#define TIM_TRGOSource_OC2Ref ((uint16_t)0x0050) +#define TIM_TRGOSource_OC3Ref ((uint16_t)0x0060) +#define TIM_TRGOSource_OC4Ref ((uint16_t)0x0070) +#define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGOSource_Reset) || \ + ((SOURCE) == TIM_TRGOSource_Enable) || \ + ((SOURCE) == TIM_TRGOSource_Update) || \ + ((SOURCE) == TIM_TRGOSource_OC1) || \ + ((SOURCE) == TIM_TRGOSource_OC1Ref) || \ + ((SOURCE) == TIM_TRGOSource_OC2Ref) || \ + ((SOURCE) == TIM_TRGOSource_OC3Ref) || \ + ((SOURCE) == TIM_TRGOSource_OC4Ref)) +/** + * @} + */ + +/** @defgroup TIM_Slave_Mode + * @{ + */ + +#define TIM_SlaveMode_Reset ((uint16_t)0x0004) +#define TIM_SlaveMode_Gated ((uint16_t)0x0005) +#define TIM_SlaveMode_Trigger ((uint16_t)0x0006) +#define TIM_SlaveMode_External1 ((uint16_t)0x0007) +#define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SlaveMode_Reset) || \ + ((MODE) == TIM_SlaveMode_Gated) || \ + ((MODE) == TIM_SlaveMode_Trigger) || \ + ((MODE) == TIM_SlaveMode_External1)) +/** + * @} + */ + +/** @defgroup TIM_Master_Slave_Mode + * @{ + */ + +#define TIM_MasterSlaveMode_Enable ((uint16_t)0x0080) +#define TIM_MasterSlaveMode_Disable ((uint16_t)0x0000) +#define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MasterSlaveMode_Enable) || \ + ((STATE) == TIM_MasterSlaveMode_Disable)) +/** + * @} + */ + +/** @defgroup TIM_Flags + * @{ + */ + +#define TIM_FLAG_Update ((uint16_t)0x0001) +#define TIM_FLAG_CC1 ((uint16_t)0x0002) +#define TIM_FLAG_CC2 ((uint16_t)0x0004) +#define TIM_FLAG_CC3 ((uint16_t)0x0008) +#define TIM_FLAG_CC4 ((uint16_t)0x0010) +#define TIM_FLAG_COM ((uint16_t)0x0020) +#define TIM_FLAG_Trigger ((uint16_t)0x0040) +#define TIM_FLAG_Break ((uint16_t)0x0080) +#define TIM_FLAG_CC1OF ((uint16_t)0x0200) +#define TIM_FLAG_CC2OF ((uint16_t)0x0400) +#define TIM_FLAG_CC3OF ((uint16_t)0x0800) +#define TIM_FLAG_CC4OF ((uint16_t)0x1000) +#define IS_TIM_GET_FLAG(FLAG) (((FLAG) == TIM_FLAG_Update) || \ + ((FLAG) == TIM_FLAG_CC1) || \ + ((FLAG) == TIM_FLAG_CC2) || \ + ((FLAG) == TIM_FLAG_CC3) || \ + ((FLAG) == TIM_FLAG_CC4) || \ + ((FLAG) == TIM_FLAG_COM) || \ + ((FLAG) == TIM_FLAG_Trigger) || \ + ((FLAG) == TIM_FLAG_Break) || \ + ((FLAG) == TIM_FLAG_CC1OF) || \ + ((FLAG) == TIM_FLAG_CC2OF) || \ + ((FLAG) == TIM_FLAG_CC3OF) || \ + ((FLAG) == TIM_FLAG_CC4OF)) + + +#define IS_TIM_CLEAR_FLAG(TIM_FLAG) ((((TIM_FLAG) & (uint16_t)0xE100) == 0x0000) && ((TIM_FLAG) != 0x0000)) +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Filer_Value + * @{ + */ + +#define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF) +/** + * @} + */ + +/** @defgroup TIM_External_Trigger_Filter + * @{ + */ + +#define IS_TIM_EXT_FILTER(EXTFILTER) ((EXTFILTER) <= 0xF) +/** + * @} + */ + +/** @defgroup TIM_Legacy + * @{ + */ + +#define TIM_DMABurstLength_1Byte TIM_DMABurstLength_1Transfer +#define TIM_DMABurstLength_2Bytes TIM_DMABurstLength_2Transfers +#define TIM_DMABurstLength_3Bytes TIM_DMABurstLength_3Transfers +#define TIM_DMABurstLength_4Bytes TIM_DMABurstLength_4Transfers +#define TIM_DMABurstLength_5Bytes TIM_DMABurstLength_5Transfers +#define TIM_DMABurstLength_6Bytes TIM_DMABurstLength_6Transfers +#define TIM_DMABurstLength_7Bytes TIM_DMABurstLength_7Transfers +#define TIM_DMABurstLength_8Bytes TIM_DMABurstLength_8Transfers +#define TIM_DMABurstLength_9Bytes TIM_DMABurstLength_9Transfers +#define TIM_DMABurstLength_10Bytes TIM_DMABurstLength_10Transfers +#define TIM_DMABurstLength_11Bytes TIM_DMABurstLength_11Transfers +#define TIM_DMABurstLength_12Bytes TIM_DMABurstLength_12Transfers +#define TIM_DMABurstLength_13Bytes TIM_DMABurstLength_13Transfers +#define TIM_DMABurstLength_14Bytes TIM_DMABurstLength_14Transfers +#define TIM_DMABurstLength_15Bytes TIM_DMABurstLength_15Transfers +#define TIM_DMABurstLength_16Bytes TIM_DMABurstLength_16Transfers +#define TIM_DMABurstLength_17Bytes TIM_DMABurstLength_17Transfers +#define TIM_DMABurstLength_18Bytes TIM_DMABurstLength_18Transfers +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup TIM_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions + * @{ + */ + +void TIM_DeInit(TIM_TypeDef* TIMx); +void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); +void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); +void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); +void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct); +void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); +void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct); +void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct); +void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState); +void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource); +void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength); +void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState); +void TIM_InternalClockConfig(TIM_TypeDef* TIMx); +void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); +void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, + uint16_t TIM_ICPolarity, uint16_t ICFilter); +void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter); +void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, + uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter); +void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter); +void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode); +void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode); +void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); +void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode, + uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity); +void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx); +void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN); +void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode); +void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource); +void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode); +void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource); +void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode); +void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode); +void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter); +void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload); +void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1); +void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2); +void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3); +void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4); +void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD); +uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx); +uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx); +uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx); +uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx); +uint16_t TIM_GetCounter(TIM_TypeDef* TIMx); +uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx); +FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); +void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); +ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT); +void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT); + +#ifdef __cplusplus +} +#endif + +#endif /*__STM32F10x_TIM_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h new file mode 100644 index 00000000..61ae249a --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h @@ -0,0 +1,412 @@ +/** + ****************************************************************************** + * @file stm32f10x_usart.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the USART + * firmware library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_USART_H +#define __STM32F10x_USART_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup USART + * @{ + */ + +/** @defgroup USART_Exported_Types + * @{ + */ + +/** + * @brief USART Init Structure definition + */ + +typedef struct +{ + uint32_t USART_BaudRate; /*!< This member configures the USART communication baud rate. + The baud rate is computed using the following formula: + - IntegerDivider = ((PCLKx) / (16 * (USART_InitStruct->USART_BaudRate))) + - FractionalDivider = ((IntegerDivider - ((u32) IntegerDivider)) * 16) + 0.5 */ + + uint16_t USART_WordLength; /*!< Specifies the number of data bits transmitted or received in a frame. + This parameter can be a value of @ref USART_Word_Length */ + + uint16_t USART_StopBits; /*!< Specifies the number of stop bits transmitted. + This parameter can be a value of @ref USART_Stop_Bits */ + + uint16_t USART_Parity; /*!< Specifies the parity mode. + This parameter can be a value of @ref USART_Parity + @note When parity is enabled, the computed parity is inserted + at the MSB position of the transmitted data (9th bit when + the word length is set to 9 data bits; 8th bit when the + word length is set to 8 data bits). */ + + uint16_t USART_Mode; /*!< Specifies wether the Receive or Transmit mode is enabled or disabled. + This parameter can be a value of @ref USART_Mode */ + + uint16_t USART_HardwareFlowControl; /*!< Specifies wether the hardware flow control mode is enabled + or disabled. + This parameter can be a value of @ref USART_Hardware_Flow_Control */ +} USART_InitTypeDef; + +/** + * @brief USART Clock Init Structure definition + */ + +typedef struct +{ + + uint16_t USART_Clock; /*!< Specifies whether the USART clock is enabled or disabled. + This parameter can be a value of @ref USART_Clock */ + + uint16_t USART_CPOL; /*!< Specifies the steady state value of the serial clock. + This parameter can be a value of @ref USART_Clock_Polarity */ + + uint16_t USART_CPHA; /*!< Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref USART_Clock_Phase */ + + uint16_t USART_LastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted + data bit (MSB) has to be output on the SCLK pin in synchronous mode. + This parameter can be a value of @ref USART_Last_Bit */ +} USART_ClockInitTypeDef; + +/** + * @} + */ + +/** @defgroup USART_Exported_Constants + * @{ + */ + +#define IS_USART_ALL_PERIPH(PERIPH) (((PERIPH) == USART1) || \ + ((PERIPH) == USART2) || \ + ((PERIPH) == USART3) || \ + ((PERIPH) == UART4) || \ + ((PERIPH) == UART5)) + +#define IS_USART_123_PERIPH(PERIPH) (((PERIPH) == USART1) || \ + ((PERIPH) == USART2) || \ + ((PERIPH) == USART3)) + +#define IS_USART_1234_PERIPH(PERIPH) (((PERIPH) == USART1) || \ + ((PERIPH) == USART2) || \ + ((PERIPH) == USART3) || \ + ((PERIPH) == UART4)) +/** @defgroup USART_Word_Length + * @{ + */ + +#define USART_WordLength_8b ((uint16_t)0x0000) +#define USART_WordLength_9b ((uint16_t)0x1000) + +#define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \ + ((LENGTH) == USART_WordLength_9b)) +/** + * @} + */ + +/** @defgroup USART_Stop_Bits + * @{ + */ + +#define USART_StopBits_1 ((uint16_t)0x0000) +#define USART_StopBits_0_5 ((uint16_t)0x1000) +#define USART_StopBits_2 ((uint16_t)0x2000) +#define USART_StopBits_1_5 ((uint16_t)0x3000) +#define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \ + ((STOPBITS) == USART_StopBits_0_5) || \ + ((STOPBITS) == USART_StopBits_2) || \ + ((STOPBITS) == USART_StopBits_1_5)) +/** + * @} + */ + +/** @defgroup USART_Parity + * @{ + */ + +#define USART_Parity_No ((uint16_t)0x0000) +#define USART_Parity_Even ((uint16_t)0x0400) +#define USART_Parity_Odd ((uint16_t)0x0600) +#define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \ + ((PARITY) == USART_Parity_Even) || \ + ((PARITY) == USART_Parity_Odd)) +/** + * @} + */ + +/** @defgroup USART_Mode + * @{ + */ + +#define USART_Mode_Rx ((uint16_t)0x0004) +#define USART_Mode_Tx ((uint16_t)0x0008) +#define IS_USART_MODE(MODE) ((((MODE) & (uint16_t)0xFFF3) == 0x00) && ((MODE) != (uint16_t)0x00)) +/** + * @} + */ + +/** @defgroup USART_Hardware_Flow_Control + * @{ + */ +#define USART_HardwareFlowControl_None ((uint16_t)0x0000) +#define USART_HardwareFlowControl_RTS ((uint16_t)0x0100) +#define USART_HardwareFlowControl_CTS ((uint16_t)0x0200) +#define USART_HardwareFlowControl_RTS_CTS ((uint16_t)0x0300) +#define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\ + (((CONTROL) == USART_HardwareFlowControl_None) || \ + ((CONTROL) == USART_HardwareFlowControl_RTS) || \ + ((CONTROL) == USART_HardwareFlowControl_CTS) || \ + ((CONTROL) == USART_HardwareFlowControl_RTS_CTS)) +/** + * @} + */ + +/** @defgroup USART_Clock + * @{ + */ +#define USART_Clock_Disable ((uint16_t)0x0000) +#define USART_Clock_Enable ((uint16_t)0x0800) +#define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_Clock_Disable) || \ + ((CLOCK) == USART_Clock_Enable)) +/** + * @} + */ + +/** @defgroup USART_Clock_Polarity + * @{ + */ + +#define USART_CPOL_Low ((uint16_t)0x0000) +#define USART_CPOL_High ((uint16_t)0x0400) +#define IS_USART_CPOL(CPOL) (((CPOL) == USART_CPOL_Low) || ((CPOL) == USART_CPOL_High)) + +/** + * @} + */ + +/** @defgroup USART_Clock_Phase + * @{ + */ + +#define USART_CPHA_1Edge ((uint16_t)0x0000) +#define USART_CPHA_2Edge ((uint16_t)0x0200) +#define IS_USART_CPHA(CPHA) (((CPHA) == USART_CPHA_1Edge) || ((CPHA) == USART_CPHA_2Edge)) + +/** + * @} + */ + +/** @defgroup USART_Last_Bit + * @{ + */ + +#define USART_LastBit_Disable ((uint16_t)0x0000) +#define USART_LastBit_Enable ((uint16_t)0x0100) +#define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LastBit_Disable) || \ + ((LASTBIT) == USART_LastBit_Enable)) +/** + * @} + */ + +/** @defgroup USART_Interrupt_definition + * @{ + */ + +#define USART_IT_PE ((uint16_t)0x0028) +#define USART_IT_TXE ((uint16_t)0x0727) +#define USART_IT_TC ((uint16_t)0x0626) +#define USART_IT_RXNE ((uint16_t)0x0525) +#define USART_IT_IDLE ((uint16_t)0x0424) +#define USART_IT_LBD ((uint16_t)0x0846) +#define USART_IT_CTS ((uint16_t)0x096A) +#define USART_IT_ERR ((uint16_t)0x0060) +#define USART_IT_ORE ((uint16_t)0x0360) +#define USART_IT_NE ((uint16_t)0x0260) +#define USART_IT_FE ((uint16_t)0x0160) +#define IS_USART_CONFIG_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \ + ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \ + ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \ + ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ERR)) +#define IS_USART_GET_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \ + ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \ + ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \ + ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ORE) || \ + ((IT) == USART_IT_NE) || ((IT) == USART_IT_FE)) +#define IS_USART_CLEAR_IT(IT) (((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \ + ((IT) == USART_IT_LBD) || ((IT) == USART_IT_CTS)) +/** + * @} + */ + +/** @defgroup USART_DMA_Requests + * @{ + */ + +#define USART_DMAReq_Tx ((uint16_t)0x0080) +#define USART_DMAReq_Rx ((uint16_t)0x0040) +#define IS_USART_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFF3F) == 0x00) && ((DMAREQ) != (uint16_t)0x00)) + +/** + * @} + */ + +/** @defgroup USART_WakeUp_methods + * @{ + */ + +#define USART_WakeUp_IdleLine ((uint16_t)0x0000) +#define USART_WakeUp_AddressMark ((uint16_t)0x0800) +#define IS_USART_WAKEUP(WAKEUP) (((WAKEUP) == USART_WakeUp_IdleLine) || \ + ((WAKEUP) == USART_WakeUp_AddressMark)) +/** + * @} + */ + +/** @defgroup USART_LIN_Break_Detection_Length + * @{ + */ + +#define USART_LINBreakDetectLength_10b ((uint16_t)0x0000) +#define USART_LINBreakDetectLength_11b ((uint16_t)0x0020) +#define IS_USART_LIN_BREAK_DETECT_LENGTH(LENGTH) \ + (((LENGTH) == USART_LINBreakDetectLength_10b) || \ + ((LENGTH) == USART_LINBreakDetectLength_11b)) +/** + * @} + */ + +/** @defgroup USART_IrDA_Low_Power + * @{ + */ + +#define USART_IrDAMode_LowPower ((uint16_t)0x0004) +#define USART_IrDAMode_Normal ((uint16_t)0x0000) +#define IS_USART_IRDA_MODE(MODE) (((MODE) == USART_IrDAMode_LowPower) || \ + ((MODE) == USART_IrDAMode_Normal)) +/** + * @} + */ + +/** @defgroup USART_Flags + * @{ + */ + +#define USART_FLAG_CTS ((uint16_t)0x0200) +#define USART_FLAG_LBD ((uint16_t)0x0100) +#define USART_FLAG_TXE ((uint16_t)0x0080) +#define USART_FLAG_TC ((uint16_t)0x0040) +#define USART_FLAG_RXNE ((uint16_t)0x0020) +#define USART_FLAG_IDLE ((uint16_t)0x0010) +#define USART_FLAG_ORE ((uint16_t)0x0008) +#define USART_FLAG_NE ((uint16_t)0x0004) +#define USART_FLAG_FE ((uint16_t)0x0002) +#define USART_FLAG_PE ((uint16_t)0x0001) +#define IS_USART_FLAG(FLAG) (((FLAG) == USART_FLAG_PE) || ((FLAG) == USART_FLAG_TXE) || \ + ((FLAG) == USART_FLAG_TC) || ((FLAG) == USART_FLAG_RXNE) || \ + ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_LBD) || \ + ((FLAG) == USART_FLAG_CTS) || ((FLAG) == USART_FLAG_ORE) || \ + ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE)) + +#define IS_USART_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xFC9F) == 0x00) && ((FLAG) != (uint16_t)0x00)) +#define IS_USART_PERIPH_FLAG(PERIPH, USART_FLAG) ((((*(uint32_t*)&(PERIPH)) != UART4_BASE) &&\ + ((*(uint32_t*)&(PERIPH)) != UART5_BASE)) \ + || ((USART_FLAG) != USART_FLAG_CTS)) +#define IS_USART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x0044AA21)) +#define IS_USART_ADDRESS(ADDRESS) ((ADDRESS) <= 0xF) +#define IS_USART_DATA(DATA) ((DATA) <= 0x1FF) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup USART_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USART_Exported_Functions + * @{ + */ + +void USART_DeInit(USART_TypeDef* USARTx); +void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct); +void USART_StructInit(USART_InitTypeDef* USART_InitStruct); +void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct); +void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct); +void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState); +void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState); +void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address); +void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp); +void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength); +void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); +uint16_t USART_ReceiveData(USART_TypeDef* USARTx); +void USART_SendBreak(USART_TypeDef* USARTx); +void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime); +void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler); +void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode); +void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState); +FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); +void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG); +ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT); +void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_USART_H */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h new file mode 100644 index 00000000..cd573da4 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h @@ -0,0 +1,115 @@ +/** + ****************************************************************************** + * @file stm32f10x_wwdg.h + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file contains all the functions prototypes for the WWDG firmware + * library. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_WWDG_H +#define __STM32F10x_WWDG_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @addtogroup WWDG + * @{ + */ + +/** @defgroup WWDG_Exported_Types + * @{ + */ + +/** + * @} + */ + +/** @defgroup WWDG_Exported_Constants + * @{ + */ + +/** @defgroup WWDG_Prescaler + * @{ + */ + +#define WWDG_Prescaler_1 ((uint32_t)0x00000000) +#define WWDG_Prescaler_2 ((uint32_t)0x00000080) +#define WWDG_Prescaler_4 ((uint32_t)0x00000100) +#define WWDG_Prescaler_8 ((uint32_t)0x00000180) +#define IS_WWDG_PRESCALER(PRESCALER) (((PRESCALER) == WWDG_Prescaler_1) || \ + ((PRESCALER) == WWDG_Prescaler_2) || \ + ((PRESCALER) == WWDG_Prescaler_4) || \ + ((PRESCALER) == WWDG_Prescaler_8)) +#define IS_WWDG_WINDOW_VALUE(VALUE) ((VALUE) <= 0x7F) +#define IS_WWDG_COUNTER(COUNTER) (((COUNTER) >= 0x40) && ((COUNTER) <= 0x7F)) + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup WWDG_Exported_Macros + * @{ + */ +/** + * @} + */ + +/** @defgroup WWDG_Exported_Functions + * @{ + */ + +void WWDG_DeInit(void); +void WWDG_SetPrescaler(uint32_t WWDG_Prescaler); +void WWDG_SetWindowValue(uint8_t WindowValue); +void WWDG_EnableIT(void); +void WWDG_SetCounter(uint8_t Counter); +void WWDG_Enable(uint8_t Counter); +FlagStatus WWDG_GetFlagStatus(void); +void WWDG_ClearFlag(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F10x_WWDG_H */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c new file mode 100644 index 00000000..ec9165f7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/misc.c @@ -0,0 +1,225 @@ +/** + ****************************************************************************** + * @file misc.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the miscellaneous firmware functions (add-on + * to CMSIS functions). + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "misc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup MISC + * @brief MISC driver modules + * @{ + */ + +/** @defgroup MISC_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup MISC_Private_Defines + * @{ + */ + +#define AIRCR_VECTKEY_MASK ((uint32_t)0x05FA0000) +/** + * @} + */ + +/** @defgroup MISC_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup MISC_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup MISC_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup MISC_Private_Functions + * @{ + */ + +/** + * @brief Configures the priority grouping: pre-emption priority and subpriority. + * @param NVIC_PriorityGroup: specifies the priority grouping bits length. + * This parameter can be one of the following values: + * @arg NVIC_PriorityGroup_0: 0 bits for pre-emption priority + * 4 bits for subpriority + * @arg NVIC_PriorityGroup_1: 1 bits for pre-emption priority + * 3 bits for subpriority + * @arg NVIC_PriorityGroup_2: 2 bits for pre-emption priority + * 2 bits for subpriority + * @arg NVIC_PriorityGroup_3: 3 bits for pre-emption priority + * 1 bits for subpriority + * @arg NVIC_PriorityGroup_4: 4 bits for pre-emption priority + * 0 bits for subpriority + * @retval None + */ +void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup) +{ + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */ + SCB->AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup; +} + +/** + * @brief Initializes the NVIC peripheral according to the specified + * parameters in the NVIC_InitStruct. + * @param NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure that contains + * the configuration information for the specified NVIC peripheral. + * @retval None + */ +void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) +{ + uint32_t tmppriority = 0x00, tmppre = 0x00, tmpsub = 0x0F; + + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority)); + assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority)); + + if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE) + { + /* Compute the Corresponding IRQ Priority --------------------------------*/ + tmppriority = (0x700 - ((SCB->AIRCR) & (uint32_t)0x700))>> 0x08; + tmppre = (0x4 - tmppriority); + tmpsub = tmpsub >> tmppriority; + + tmppriority = (uint32_t)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre; + tmppriority |= NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub; + tmppriority = tmppriority << 0x04; + + NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority; + + /* Enable the Selected IRQ Channels --------------------------------------*/ + NVIC->ISER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = + (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F); + } + else + { + /* Disable the Selected IRQ Channels -------------------------------------*/ + NVIC->ICER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = + (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F); + } +} + +/** + * @brief Sets the vector table location and Offset. + * @param NVIC_VectTab: specifies if the vector table is in RAM or FLASH memory. + * This parameter can be one of the following values: + * @arg NVIC_VectTab_RAM + * @arg NVIC_VectTab_FLASH + * @param Offset: Vector Table base offset field. This value must be a multiple + * of 0x200. + * @retval None + */ +void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset) +{ + /* Check the parameters */ + assert_param(IS_NVIC_VECTTAB(NVIC_VectTab)); + assert_param(IS_NVIC_OFFSET(Offset)); + + SCB->VTOR = NVIC_VectTab | (Offset & (uint32_t)0x1FFFFF80); +} + +/** + * @brief Selects the condition for the system to enter low power mode. + * @param LowPowerMode: Specifies the new mode for the system to enter low power mode. + * This parameter can be one of the following values: + * @arg NVIC_LP_SEVONPEND + * @arg NVIC_LP_SLEEPDEEP + * @arg NVIC_LP_SLEEPONEXIT + * @param NewState: new state of LP condition. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_NVIC_LP(LowPowerMode)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + SCB->SCR |= LowPowerMode; + } + else + { + SCB->SCR &= (uint32_t)(~(uint32_t)LowPowerMode); + } +} + +/** + * @brief Configures the SysTick clock source. + * @param SysTick_CLKSource: specifies the SysTick clock source. + * This parameter can be one of the following values: + * @arg SysTick_CLKSource_HCLK_Div8: AHB clock divided by 8 selected as SysTick clock source. + * @arg SysTick_CLKSource_HCLK: AHB clock selected as SysTick clock source. + * @retval None + */ +void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource) +{ + /* Check the parameters */ + assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource)); + if (SysTick_CLKSource == SysTick_CLKSource_HCLK) + { + SysTick->CTRL |= SysTick_CLKSource_HCLK; + } + else + { + SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8; + } +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c new file mode 100644 index 00000000..916a096d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c @@ -0,0 +1,1307 @@ +/** + ****************************************************************************** + * @file stm32f10x_adc.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the ADC firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_adc.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup ADC + * @brief ADC driver modules + * @{ + */ + +/** @defgroup ADC_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup ADC_Private_Defines + * @{ + */ + +/* ADC DISCNUM mask */ +#define CR1_DISCNUM_Reset ((uint32_t)0xFFFF1FFF) + +/* ADC DISCEN mask */ +#define CR1_DISCEN_Set ((uint32_t)0x00000800) +#define CR1_DISCEN_Reset ((uint32_t)0xFFFFF7FF) + +/* ADC JAUTO mask */ +#define CR1_JAUTO_Set ((uint32_t)0x00000400) +#define CR1_JAUTO_Reset ((uint32_t)0xFFFFFBFF) + +/* ADC JDISCEN mask */ +#define CR1_JDISCEN_Set ((uint32_t)0x00001000) +#define CR1_JDISCEN_Reset ((uint32_t)0xFFFFEFFF) + +/* ADC AWDCH mask */ +#define CR1_AWDCH_Reset ((uint32_t)0xFFFFFFE0) + +/* ADC Analog watchdog enable mode mask */ +#define CR1_AWDMode_Reset ((uint32_t)0xFF3FFDFF) + +/* CR1 register Mask */ +#define CR1_CLEAR_Mask ((uint32_t)0xFFF0FEFF) + +/* ADC ADON mask */ +#define CR2_ADON_Set ((uint32_t)0x00000001) +#define CR2_ADON_Reset ((uint32_t)0xFFFFFFFE) + +/* ADC DMA mask */ +#define CR2_DMA_Set ((uint32_t)0x00000100) +#define CR2_DMA_Reset ((uint32_t)0xFFFFFEFF) + +/* ADC RSTCAL mask */ +#define CR2_RSTCAL_Set ((uint32_t)0x00000008) + +/* ADC CAL mask */ +#define CR2_CAL_Set ((uint32_t)0x00000004) + +/* ADC SWSTART mask */ +#define CR2_SWSTART_Set ((uint32_t)0x00400000) + +/* ADC EXTTRIG mask */ +#define CR2_EXTTRIG_Set ((uint32_t)0x00100000) +#define CR2_EXTTRIG_Reset ((uint32_t)0xFFEFFFFF) + +/* ADC Software start mask */ +#define CR2_EXTTRIG_SWSTART_Set ((uint32_t)0x00500000) +#define CR2_EXTTRIG_SWSTART_Reset ((uint32_t)0xFFAFFFFF) + +/* ADC JEXTSEL mask */ +#define CR2_JEXTSEL_Reset ((uint32_t)0xFFFF8FFF) + +/* ADC JEXTTRIG mask */ +#define CR2_JEXTTRIG_Set ((uint32_t)0x00008000) +#define CR2_JEXTTRIG_Reset ((uint32_t)0xFFFF7FFF) + +/* ADC JSWSTART mask */ +#define CR2_JSWSTART_Set ((uint32_t)0x00200000) + +/* ADC injected software start mask */ +#define CR2_JEXTTRIG_JSWSTART_Set ((uint32_t)0x00208000) +#define CR2_JEXTTRIG_JSWSTART_Reset ((uint32_t)0xFFDF7FFF) + +/* ADC TSPD mask */ +#define CR2_TSVREFE_Set ((uint32_t)0x00800000) +#define CR2_TSVREFE_Reset ((uint32_t)0xFF7FFFFF) + +/* CR2 register Mask */ +#define CR2_CLEAR_Mask ((uint32_t)0xFFF1F7FD) + +/* ADC SQx mask */ +#define SQR3_SQ_Set ((uint32_t)0x0000001F) +#define SQR2_SQ_Set ((uint32_t)0x0000001F) +#define SQR1_SQ_Set ((uint32_t)0x0000001F) + +/* SQR1 register Mask */ +#define SQR1_CLEAR_Mask ((uint32_t)0xFF0FFFFF) + +/* ADC JSQx mask */ +#define JSQR_JSQ_Set ((uint32_t)0x0000001F) + +/* ADC JL mask */ +#define JSQR_JL_Set ((uint32_t)0x00300000) +#define JSQR_JL_Reset ((uint32_t)0xFFCFFFFF) + +/* ADC SMPx mask */ +#define SMPR1_SMP_Set ((uint32_t)0x00000007) +#define SMPR2_SMP_Set ((uint32_t)0x00000007) + +/* ADC JDRx registers offset */ +#define JDR_Offset ((uint8_t)0x28) + +/* ADC1 DR register base address */ +#define DR_ADDRESS ((uint32_t)0x4001244C) + +/** + * @} + */ + +/** @defgroup ADC_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup ADC_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup ADC_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup ADC_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the ADCx peripheral registers to their default reset values. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @retval None + */ +void ADC_DeInit(ADC_TypeDef* ADCx) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + + if (ADCx == ADC1) + { + /* Enable ADC1 reset state */ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, ENABLE); + /* Release ADC1 from reset state */ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, DISABLE); + } + else if (ADCx == ADC2) + { + /* Enable ADC2 reset state */ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2, ENABLE); + /* Release ADC2 from reset state */ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2, DISABLE); + } + else + { + if (ADCx == ADC3) + { + /* Enable ADC3 reset state */ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3, ENABLE); + /* Release ADC3 from reset state */ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3, DISABLE); + } + } +} + +/** + * @brief Initializes the ADCx peripheral according to the specified parameters + * in the ADC_InitStruct. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_InitStruct: pointer to an ADC_InitTypeDef structure that contains + * the configuration information for the specified ADC peripheral. + * @retval None + */ +void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct) +{ + uint32_t tmpreg1 = 0; + uint8_t tmpreg2 = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_MODE(ADC_InitStruct->ADC_Mode)); + assert_param(IS_FUNCTIONAL_STATE(ADC_InitStruct->ADC_ScanConvMode)); + assert_param(IS_FUNCTIONAL_STATE(ADC_InitStruct->ADC_ContinuousConvMode)); + assert_param(IS_ADC_EXT_TRIG(ADC_InitStruct->ADC_ExternalTrigConv)); + assert_param(IS_ADC_DATA_ALIGN(ADC_InitStruct->ADC_DataAlign)); + assert_param(IS_ADC_REGULAR_LENGTH(ADC_InitStruct->ADC_NbrOfChannel)); + + /*---------------------------- ADCx CR1 Configuration -----------------*/ + /* Get the ADCx CR1 value */ + tmpreg1 = ADCx->CR1; + /* Clear DUALMOD and SCAN bits */ + tmpreg1 &= CR1_CLEAR_Mask; + /* Configure ADCx: Dual mode and scan conversion mode */ + /* Set DUALMOD bits according to ADC_Mode value */ + /* Set SCAN bit according to ADC_ScanConvMode value */ + tmpreg1 |= (uint32_t)(ADC_InitStruct->ADC_Mode | ((uint32_t)ADC_InitStruct->ADC_ScanConvMode << 8)); + /* Write to ADCx CR1 */ + ADCx->CR1 = tmpreg1; + + /*---------------------------- ADCx CR2 Configuration -----------------*/ + /* Get the ADCx CR2 value */ + tmpreg1 = ADCx->CR2; + /* Clear CONT, ALIGN and EXTSEL bits */ + tmpreg1 &= CR2_CLEAR_Mask; + /* Configure ADCx: external trigger event and continuous conversion mode */ + /* Set ALIGN bit according to ADC_DataAlign value */ + /* Set EXTSEL bits according to ADC_ExternalTrigConv value */ + /* Set CONT bit according to ADC_ContinuousConvMode value */ + tmpreg1 |= (uint32_t)(ADC_InitStruct->ADC_DataAlign | ADC_InitStruct->ADC_ExternalTrigConv | + ((uint32_t)ADC_InitStruct->ADC_ContinuousConvMode << 1)); + /* Write to ADCx CR2 */ + ADCx->CR2 = tmpreg1; + + /*---------------------------- ADCx SQR1 Configuration -----------------*/ + /* Get the ADCx SQR1 value */ + tmpreg1 = ADCx->SQR1; + /* Clear L bits */ + tmpreg1 &= SQR1_CLEAR_Mask; + /* Configure ADCx: regular channel sequence length */ + /* Set L bits according to ADC_NbrOfChannel value */ + tmpreg2 |= (uint8_t) (ADC_InitStruct->ADC_NbrOfChannel - (uint8_t)1); + tmpreg1 |= (uint32_t)tmpreg2 << 20; + /* Write to ADCx SQR1 */ + ADCx->SQR1 = tmpreg1; +} + +/** + * @brief Fills each ADC_InitStruct member with its default value. + * @param ADC_InitStruct : pointer to an ADC_InitTypeDef structure which will be initialized. + * @retval None + */ +void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct) +{ + /* Reset ADC init structure parameters values */ + /* Initialize the ADC_Mode member */ + ADC_InitStruct->ADC_Mode = ADC_Mode_Independent; + /* initialize the ADC_ScanConvMode member */ + ADC_InitStruct->ADC_ScanConvMode = DISABLE; + /* Initialize the ADC_ContinuousConvMode member */ + ADC_InitStruct->ADC_ContinuousConvMode = DISABLE; + /* Initialize the ADC_ExternalTrigConv member */ + ADC_InitStruct->ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; + /* Initialize the ADC_DataAlign member */ + ADC_InitStruct->ADC_DataAlign = ADC_DataAlign_Right; + /* Initialize the ADC_NbrOfChannel member */ + ADC_InitStruct->ADC_NbrOfChannel = 1; +} + +/** + * @brief Enables or disables the specified ADC peripheral. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param NewState: new state of the ADCx peripheral. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Set the ADON bit to wake up the ADC from power down mode */ + ADCx->CR2 |= CR2_ADON_Set; + } + else + { + /* Disable the selected ADC peripheral */ + ADCx->CR2 &= CR2_ADON_Reset; + } +} + +/** + * @brief Enables or disables the specified ADC DMA request. + * @param ADCx: where x can be 1 or 3 to select the ADC peripheral. + * Note: ADC2 hasn't a DMA capability. + * @param NewState: new state of the selected ADC DMA transfer. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_DMA_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected ADC DMA request */ + ADCx->CR2 |= CR2_DMA_Set; + } + else + { + /* Disable the selected ADC DMA request */ + ADCx->CR2 &= CR2_DMA_Reset; + } +} + +/** + * @brief Enables or disables the specified ADC interrupts. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_IT: specifies the ADC interrupt sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg ADC_IT_EOC: End of conversion interrupt mask + * @arg ADC_IT_AWD: Analog watchdog interrupt mask + * @arg ADC_IT_JEOC: End of injected conversion interrupt mask + * @param NewState: new state of the specified ADC interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState) +{ + uint8_t itmask = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + assert_param(IS_ADC_IT(ADC_IT)); + /* Get the ADC IT index */ + itmask = (uint8_t)ADC_IT; + if (NewState != DISABLE) + { + /* Enable the selected ADC interrupts */ + ADCx->CR1 |= itmask; + } + else + { + /* Disable the selected ADC interrupts */ + ADCx->CR1 &= (~(uint32_t)itmask); + } +} + +/** + * @brief Resets the selected ADC calibration registers. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @retval None + */ +void ADC_ResetCalibration(ADC_TypeDef* ADCx) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + /* Resets the selected ADC calibration registers */ + ADCx->CR2 |= CR2_RSTCAL_Set; +} + +/** + * @brief Gets the selected ADC reset calibration registers status. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @retval The new state of ADC reset calibration registers (SET or RESET). + */ +FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + /* Check the status of RSTCAL bit */ + if ((ADCx->CR2 & CR2_RSTCAL_Set) != (uint32_t)RESET) + { + /* RSTCAL bit is set */ + bitstatus = SET; + } + else + { + /* RSTCAL bit is reset */ + bitstatus = RESET; + } + /* Return the RSTCAL bit status */ + return bitstatus; +} + +/** + * @brief Starts the selected ADC calibration process. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @retval None + */ +void ADC_StartCalibration(ADC_TypeDef* ADCx) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + /* Enable the selected ADC calibration process */ + ADCx->CR2 |= CR2_CAL_Set; +} + +/** + * @brief Gets the selected ADC calibration status. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @retval The new state of ADC calibration (SET or RESET). + */ +FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + /* Check the status of CAL bit */ + if ((ADCx->CR2 & CR2_CAL_Set) != (uint32_t)RESET) + { + /* CAL bit is set: calibration on going */ + bitstatus = SET; + } + else + { + /* CAL bit is reset: end of calibration */ + bitstatus = RESET; + } + /* Return the CAL bit status */ + return bitstatus; +} + +/** + * @brief Enables or disables the selected ADC software start conversion . + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param NewState: new state of the selected ADC software start conversion. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected ADC conversion on external event and start the selected + ADC conversion */ + ADCx->CR2 |= CR2_EXTTRIG_SWSTART_Set; + } + else + { + /* Disable the selected ADC conversion on external event and stop the selected + ADC conversion */ + ADCx->CR2 &= CR2_EXTTRIG_SWSTART_Reset; + } +} + +/** + * @brief Gets the selected ADC Software start conversion Status. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @retval The new state of ADC software start conversion (SET or RESET). + */ +FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + /* Check the status of SWSTART bit */ + if ((ADCx->CR2 & CR2_SWSTART_Set) != (uint32_t)RESET) + { + /* SWSTART bit is set */ + bitstatus = SET; + } + else + { + /* SWSTART bit is reset */ + bitstatus = RESET; + } + /* Return the SWSTART bit status */ + return bitstatus; +} + +/** + * @brief Configures the discontinuous mode for the selected ADC regular + * group channel. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param Number: specifies the discontinuous mode regular channel + * count value. This number must be between 1 and 8. + * @retval None + */ +void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number) +{ + uint32_t tmpreg1 = 0; + uint32_t tmpreg2 = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_REGULAR_DISC_NUMBER(Number)); + /* Get the old register value */ + tmpreg1 = ADCx->CR1; + /* Clear the old discontinuous mode channel count */ + tmpreg1 &= CR1_DISCNUM_Reset; + /* Set the discontinuous mode channel count */ + tmpreg2 = Number - 1; + tmpreg1 |= tmpreg2 << 13; + /* Store the new register value */ + ADCx->CR1 = tmpreg1; +} + +/** + * @brief Enables or disables the discontinuous mode on regular group + * channel for the specified ADC + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param NewState: new state of the selected ADC discontinuous mode + * on regular group channel. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected ADC regular discontinuous mode */ + ADCx->CR1 |= CR1_DISCEN_Set; + } + else + { + /* Disable the selected ADC regular discontinuous mode */ + ADCx->CR1 &= CR1_DISCEN_Reset; + } +} + +/** + * @brief Configures for the selected ADC regular channel its corresponding + * rank in the sequencer and its sample time. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_Channel: the ADC channel to configure. + * This parameter can be one of the following values: + * @arg ADC_Channel_0: ADC Channel0 selected + * @arg ADC_Channel_1: ADC Channel1 selected + * @arg ADC_Channel_2: ADC Channel2 selected + * @arg ADC_Channel_3: ADC Channel3 selected + * @arg ADC_Channel_4: ADC Channel4 selected + * @arg ADC_Channel_5: ADC Channel5 selected + * @arg ADC_Channel_6: ADC Channel6 selected + * @arg ADC_Channel_7: ADC Channel7 selected + * @arg ADC_Channel_8: ADC Channel8 selected + * @arg ADC_Channel_9: ADC Channel9 selected + * @arg ADC_Channel_10: ADC Channel10 selected + * @arg ADC_Channel_11: ADC Channel11 selected + * @arg ADC_Channel_12: ADC Channel12 selected + * @arg ADC_Channel_13: ADC Channel13 selected + * @arg ADC_Channel_14: ADC Channel14 selected + * @arg ADC_Channel_15: ADC Channel15 selected + * @arg ADC_Channel_16: ADC Channel16 selected + * @arg ADC_Channel_17: ADC Channel17 selected + * @param Rank: The rank in the regular group sequencer. This parameter must be between 1 to 16. + * @param ADC_SampleTime: The sample time value to be set for the selected channel. + * This parameter can be one of the following values: + * @arg ADC_SampleTime_1Cycles5: Sample time equal to 1.5 cycles + * @arg ADC_SampleTime_7Cycles5: Sample time equal to 7.5 cycles + * @arg ADC_SampleTime_13Cycles5: Sample time equal to 13.5 cycles + * @arg ADC_SampleTime_28Cycles5: Sample time equal to 28.5 cycles + * @arg ADC_SampleTime_41Cycles5: Sample time equal to 41.5 cycles + * @arg ADC_SampleTime_55Cycles5: Sample time equal to 55.5 cycles + * @arg ADC_SampleTime_71Cycles5: Sample time equal to 71.5 cycles + * @arg ADC_SampleTime_239Cycles5: Sample time equal to 239.5 cycles + * @retval None + */ +void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime) +{ + uint32_t tmpreg1 = 0, tmpreg2 = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_CHANNEL(ADC_Channel)); + assert_param(IS_ADC_REGULAR_RANK(Rank)); + assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime)); + /* if ADC_Channel_10 ... ADC_Channel_17 is selected */ + if (ADC_Channel > ADC_Channel_9) + { + /* Get the old register value */ + tmpreg1 = ADCx->SMPR1; + /* Calculate the mask to clear */ + tmpreg2 = SMPR1_SMP_Set << (3 * (ADC_Channel - 10)); + /* Clear the old channel sample time */ + tmpreg1 &= ~tmpreg2; + /* Calculate the mask to set */ + tmpreg2 = (uint32_t)ADC_SampleTime << (3 * (ADC_Channel - 10)); + /* Set the new channel sample time */ + tmpreg1 |= tmpreg2; + /* Store the new register value */ + ADCx->SMPR1 = tmpreg1; + } + else /* ADC_Channel include in ADC_Channel_[0..9] */ + { + /* Get the old register value */ + tmpreg1 = ADCx->SMPR2; + /* Calculate the mask to clear */ + tmpreg2 = SMPR2_SMP_Set << (3 * ADC_Channel); + /* Clear the old channel sample time */ + tmpreg1 &= ~tmpreg2; + /* Calculate the mask to set */ + tmpreg2 = (uint32_t)ADC_SampleTime << (3 * ADC_Channel); + /* Set the new channel sample time */ + tmpreg1 |= tmpreg2; + /* Store the new register value */ + ADCx->SMPR2 = tmpreg1; + } + /* For Rank 1 to 6 */ + if (Rank < 7) + { + /* Get the old register value */ + tmpreg1 = ADCx->SQR3; + /* Calculate the mask to clear */ + tmpreg2 = SQR3_SQ_Set << (5 * (Rank - 1)); + /* Clear the old SQx bits for the selected rank */ + tmpreg1 &= ~tmpreg2; + /* Calculate the mask to set */ + tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 1)); + /* Set the SQx bits for the selected rank */ + tmpreg1 |= tmpreg2; + /* Store the new register value */ + ADCx->SQR3 = tmpreg1; + } + /* For Rank 7 to 12 */ + else if (Rank < 13) + { + /* Get the old register value */ + tmpreg1 = ADCx->SQR2; + /* Calculate the mask to clear */ + tmpreg2 = SQR2_SQ_Set << (5 * (Rank - 7)); + /* Clear the old SQx bits for the selected rank */ + tmpreg1 &= ~tmpreg2; + /* Calculate the mask to set */ + tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 7)); + /* Set the SQx bits for the selected rank */ + tmpreg1 |= tmpreg2; + /* Store the new register value */ + ADCx->SQR2 = tmpreg1; + } + /* For Rank 13 to 16 */ + else + { + /* Get the old register value */ + tmpreg1 = ADCx->SQR1; + /* Calculate the mask to clear */ + tmpreg2 = SQR1_SQ_Set << (5 * (Rank - 13)); + /* Clear the old SQx bits for the selected rank */ + tmpreg1 &= ~tmpreg2; + /* Calculate the mask to set */ + tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 13)); + /* Set the SQx bits for the selected rank */ + tmpreg1 |= tmpreg2; + /* Store the new register value */ + ADCx->SQR1 = tmpreg1; + } +} + +/** + * @brief Enables or disables the ADCx conversion through external trigger. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param NewState: new state of the selected ADC external trigger start of conversion. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected ADC conversion on external event */ + ADCx->CR2 |= CR2_EXTTRIG_Set; + } + else + { + /* Disable the selected ADC conversion on external event */ + ADCx->CR2 &= CR2_EXTTRIG_Reset; + } +} + +/** + * @brief Returns the last ADCx conversion result data for regular channel. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @retval The Data conversion value. + */ +uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + /* Return the selected ADC conversion value */ + return (uint16_t) ADCx->DR; +} + +/** + * @brief Returns the last ADC1 and ADC2 conversion result data in dual mode. + * @retval The Data conversion value. + */ +uint32_t ADC_GetDualModeConversionValue(void) +{ + /* Return the dual mode conversion value */ + return (*(__IO uint32_t *) DR_ADDRESS); +} + +/** + * @brief Enables or disables the selected ADC automatic injected group + * conversion after regular one. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param NewState: new state of the selected ADC auto injected conversion + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected ADC automatic injected group conversion */ + ADCx->CR1 |= CR1_JAUTO_Set; + } + else + { + /* Disable the selected ADC automatic injected group conversion */ + ADCx->CR1 &= CR1_JAUTO_Reset; + } +} + +/** + * @brief Enables or disables the discontinuous mode for injected group + * channel for the specified ADC + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param NewState: new state of the selected ADC discontinuous mode + * on injected group channel. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected ADC injected discontinuous mode */ + ADCx->CR1 |= CR1_JDISCEN_Set; + } + else + { + /* Disable the selected ADC injected discontinuous mode */ + ADCx->CR1 &= CR1_JDISCEN_Reset; + } +} + +/** + * @brief Configures the ADCx external trigger for injected channels conversion. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_ExternalTrigInjecConv: specifies the ADC trigger to start injected conversion. + * This parameter can be one of the following values: + * @arg ADC_ExternalTrigInjecConv_T1_TRGO: Timer1 TRGO event selected (for ADC1, ADC2 and ADC3) + * @arg ADC_ExternalTrigInjecConv_T1_CC4: Timer1 capture compare4 selected (for ADC1, ADC2 and ADC3) + * @arg ADC_ExternalTrigInjecConv_T2_TRGO: Timer2 TRGO event selected (for ADC1 and ADC2) + * @arg ADC_ExternalTrigInjecConv_T2_CC1: Timer2 capture compare1 selected (for ADC1 and ADC2) + * @arg ADC_ExternalTrigInjecConv_T3_CC4: Timer3 capture compare4 selected (for ADC1 and ADC2) + * @arg ADC_ExternalTrigInjecConv_T4_TRGO: Timer4 TRGO event selected (for ADC1 and ADC2) + * @arg ADC_ExternalTrigInjecConv_Ext_IT15_TIM8_CC4: External interrupt line 15 or Timer8 + * capture compare4 event selected (for ADC1 and ADC2) + * @arg ADC_ExternalTrigInjecConv_T4_CC3: Timer4 capture compare3 selected (for ADC3 only) + * @arg ADC_ExternalTrigInjecConv_T8_CC2: Timer8 capture compare2 selected (for ADC3 only) + * @arg ADC_ExternalTrigInjecConv_T8_CC4: Timer8 capture compare4 selected (for ADC3 only) + * @arg ADC_ExternalTrigInjecConv_T5_TRGO: Timer5 TRGO event selected (for ADC3 only) + * @arg ADC_ExternalTrigInjecConv_T5_CC4: Timer5 capture compare4 selected (for ADC3 only) + * @arg ADC_ExternalTrigInjecConv_None: Injected conversion started by software and not + * by external trigger (for ADC1, ADC2 and ADC3) + * @retval None + */ +void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_EXT_INJEC_TRIG(ADC_ExternalTrigInjecConv)); + /* Get the old register value */ + tmpreg = ADCx->CR2; + /* Clear the old external event selection for injected group */ + tmpreg &= CR2_JEXTSEL_Reset; + /* Set the external event selection for injected group */ + tmpreg |= ADC_ExternalTrigInjecConv; + /* Store the new register value */ + ADCx->CR2 = tmpreg; +} + +/** + * @brief Enables or disables the ADCx injected channels conversion through + * external trigger + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param NewState: new state of the selected ADC external trigger start of + * injected conversion. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected ADC external event selection for injected group */ + ADCx->CR2 |= CR2_JEXTTRIG_Set; + } + else + { + /* Disable the selected ADC external event selection for injected group */ + ADCx->CR2 &= CR2_JEXTTRIG_Reset; + } +} + +/** + * @brief Enables or disables the selected ADC start of the injected + * channels conversion. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param NewState: new state of the selected ADC software start injected conversion. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected ADC conversion for injected group on external event and start the selected + ADC injected conversion */ + ADCx->CR2 |= CR2_JEXTTRIG_JSWSTART_Set; + } + else + { + /* Disable the selected ADC conversion on external event for injected group and stop the selected + ADC injected conversion */ + ADCx->CR2 &= CR2_JEXTTRIG_JSWSTART_Reset; + } +} + +/** + * @brief Gets the selected ADC Software start injected conversion Status. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @retval The new state of ADC software start injected conversion (SET or RESET). + */ +FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + /* Check the status of JSWSTART bit */ + if ((ADCx->CR2 & CR2_JSWSTART_Set) != (uint32_t)RESET) + { + /* JSWSTART bit is set */ + bitstatus = SET; + } + else + { + /* JSWSTART bit is reset */ + bitstatus = RESET; + } + /* Return the JSWSTART bit status */ + return bitstatus; +} + +/** + * @brief Configures for the selected ADC injected channel its corresponding + * rank in the sequencer and its sample time. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_Channel: the ADC channel to configure. + * This parameter can be one of the following values: + * @arg ADC_Channel_0: ADC Channel0 selected + * @arg ADC_Channel_1: ADC Channel1 selected + * @arg ADC_Channel_2: ADC Channel2 selected + * @arg ADC_Channel_3: ADC Channel3 selected + * @arg ADC_Channel_4: ADC Channel4 selected + * @arg ADC_Channel_5: ADC Channel5 selected + * @arg ADC_Channel_6: ADC Channel6 selected + * @arg ADC_Channel_7: ADC Channel7 selected + * @arg ADC_Channel_8: ADC Channel8 selected + * @arg ADC_Channel_9: ADC Channel9 selected + * @arg ADC_Channel_10: ADC Channel10 selected + * @arg ADC_Channel_11: ADC Channel11 selected + * @arg ADC_Channel_12: ADC Channel12 selected + * @arg ADC_Channel_13: ADC Channel13 selected + * @arg ADC_Channel_14: ADC Channel14 selected + * @arg ADC_Channel_15: ADC Channel15 selected + * @arg ADC_Channel_16: ADC Channel16 selected + * @arg ADC_Channel_17: ADC Channel17 selected + * @param Rank: The rank in the injected group sequencer. This parameter must be between 1 and 4. + * @param ADC_SampleTime: The sample time value to be set for the selected channel. + * This parameter can be one of the following values: + * @arg ADC_SampleTime_1Cycles5: Sample time equal to 1.5 cycles + * @arg ADC_SampleTime_7Cycles5: Sample time equal to 7.5 cycles + * @arg ADC_SampleTime_13Cycles5: Sample time equal to 13.5 cycles + * @arg ADC_SampleTime_28Cycles5: Sample time equal to 28.5 cycles + * @arg ADC_SampleTime_41Cycles5: Sample time equal to 41.5 cycles + * @arg ADC_SampleTime_55Cycles5: Sample time equal to 55.5 cycles + * @arg ADC_SampleTime_71Cycles5: Sample time equal to 71.5 cycles + * @arg ADC_SampleTime_239Cycles5: Sample time equal to 239.5 cycles + * @retval None + */ +void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime) +{ + uint32_t tmpreg1 = 0, tmpreg2 = 0, tmpreg3 = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_CHANNEL(ADC_Channel)); + assert_param(IS_ADC_INJECTED_RANK(Rank)); + assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime)); + /* if ADC_Channel_10 ... ADC_Channel_17 is selected */ + if (ADC_Channel > ADC_Channel_9) + { + /* Get the old register value */ + tmpreg1 = ADCx->SMPR1; + /* Calculate the mask to clear */ + tmpreg2 = SMPR1_SMP_Set << (3*(ADC_Channel - 10)); + /* Clear the old channel sample time */ + tmpreg1 &= ~tmpreg2; + /* Calculate the mask to set */ + tmpreg2 = (uint32_t)ADC_SampleTime << (3*(ADC_Channel - 10)); + /* Set the new channel sample time */ + tmpreg1 |= tmpreg2; + /* Store the new register value */ + ADCx->SMPR1 = tmpreg1; + } + else /* ADC_Channel include in ADC_Channel_[0..9] */ + { + /* Get the old register value */ + tmpreg1 = ADCx->SMPR2; + /* Calculate the mask to clear */ + tmpreg2 = SMPR2_SMP_Set << (3 * ADC_Channel); + /* Clear the old channel sample time */ + tmpreg1 &= ~tmpreg2; + /* Calculate the mask to set */ + tmpreg2 = (uint32_t)ADC_SampleTime << (3 * ADC_Channel); + /* Set the new channel sample time */ + tmpreg1 |= tmpreg2; + /* Store the new register value */ + ADCx->SMPR2 = tmpreg1; + } + /* Rank configuration */ + /* Get the old register value */ + tmpreg1 = ADCx->JSQR; + /* Get JL value: Number = JL+1 */ + tmpreg3 = (tmpreg1 & JSQR_JL_Set)>> 20; + /* Calculate the mask to clear: ((Rank-1)+(4-JL-1)) */ + tmpreg2 = JSQR_JSQ_Set << (5 * (uint8_t)((Rank + 3) - (tmpreg3 + 1))); + /* Clear the old JSQx bits for the selected rank */ + tmpreg1 &= ~tmpreg2; + /* Calculate the mask to set: ((Rank-1)+(4-JL-1)) */ + tmpreg2 = (uint32_t)ADC_Channel << (5 * (uint8_t)((Rank + 3) - (tmpreg3 + 1))); + /* Set the JSQx bits for the selected rank */ + tmpreg1 |= tmpreg2; + /* Store the new register value */ + ADCx->JSQR = tmpreg1; +} + +/** + * @brief Configures the sequencer length for injected channels + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param Length: The sequencer length. + * This parameter must be a number between 1 to 4. + * @retval None + */ +void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length) +{ + uint32_t tmpreg1 = 0; + uint32_t tmpreg2 = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_INJECTED_LENGTH(Length)); + + /* Get the old register value */ + tmpreg1 = ADCx->JSQR; + /* Clear the old injected sequnence lenght JL bits */ + tmpreg1 &= JSQR_JL_Reset; + /* Set the injected sequnence lenght JL bits */ + tmpreg2 = Length - 1; + tmpreg1 |= tmpreg2 << 20; + /* Store the new register value */ + ADCx->JSQR = tmpreg1; +} + +/** + * @brief Set the injected channels conversion value offset + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_InjectedChannel: the ADC injected channel to set its offset. + * This parameter can be one of the following values: + * @arg ADC_InjectedChannel_1: Injected Channel1 selected + * @arg ADC_InjectedChannel_2: Injected Channel2 selected + * @arg ADC_InjectedChannel_3: Injected Channel3 selected + * @arg ADC_InjectedChannel_4: Injected Channel4 selected + * @param Offset: the offset value for the selected ADC injected channel + * This parameter must be a 12bit value. + * @retval None + */ +void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_INJECTED_CHANNEL(ADC_InjectedChannel)); + assert_param(IS_ADC_OFFSET(Offset)); + + tmp = (uint32_t)ADCx; + tmp += ADC_InjectedChannel; + + /* Set the selected injected channel data offset */ + *(__IO uint32_t *) tmp = (uint32_t)Offset; +} + +/** + * @brief Returns the ADC injected channel conversion result + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_InjectedChannel: the converted ADC injected channel. + * This parameter can be one of the following values: + * @arg ADC_InjectedChannel_1: Injected Channel1 selected + * @arg ADC_InjectedChannel_2: Injected Channel2 selected + * @arg ADC_InjectedChannel_3: Injected Channel3 selected + * @arg ADC_InjectedChannel_4: Injected Channel4 selected + * @retval The Data conversion value. + */ +uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_INJECTED_CHANNEL(ADC_InjectedChannel)); + + tmp = (uint32_t)ADCx; + tmp += ADC_InjectedChannel + JDR_Offset; + + /* Returns the selected injected channel conversion data value */ + return (uint16_t) (*(__IO uint32_t*) tmp); +} + +/** + * @brief Enables or disables the analog watchdog on single/all regular + * or injected channels + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_AnalogWatchdog: the ADC analog watchdog configuration. + * This parameter can be one of the following values: + * @arg ADC_AnalogWatchdog_SingleRegEnable: Analog watchdog on a single regular channel + * @arg ADC_AnalogWatchdog_SingleInjecEnable: Analog watchdog on a single injected channel + * @arg ADC_AnalogWatchdog_SingleRegOrInjecEnable: Analog watchdog on a single regular or injected channel + * @arg ADC_AnalogWatchdog_AllRegEnable: Analog watchdog on all regular channel + * @arg ADC_AnalogWatchdog_AllInjecEnable: Analog watchdog on all injected channel + * @arg ADC_AnalogWatchdog_AllRegAllInjecEnable: Analog watchdog on all regular and injected channels + * @arg ADC_AnalogWatchdog_None: No channel guarded by the analog watchdog + * @retval None + */ +void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_ANALOG_WATCHDOG(ADC_AnalogWatchdog)); + /* Get the old register value */ + tmpreg = ADCx->CR1; + /* Clear AWDEN, AWDENJ and AWDSGL bits */ + tmpreg &= CR1_AWDMode_Reset; + /* Set the analog watchdog enable mode */ + tmpreg |= ADC_AnalogWatchdog; + /* Store the new register value */ + ADCx->CR1 = tmpreg; +} + +/** + * @brief Configures the high and low thresholds of the analog watchdog. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param HighThreshold: the ADC analog watchdog High threshold value. + * This parameter must be a 12bit value. + * @param LowThreshold: the ADC analog watchdog Low threshold value. + * This parameter must be a 12bit value. + * @retval None + */ +void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, + uint16_t LowThreshold) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_THRESHOLD(HighThreshold)); + assert_param(IS_ADC_THRESHOLD(LowThreshold)); + /* Set the ADCx high threshold */ + ADCx->HTR = HighThreshold; + /* Set the ADCx low threshold */ + ADCx->LTR = LowThreshold; +} + +/** + * @brief Configures the analog watchdog guarded single channel + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_Channel: the ADC channel to configure for the analog watchdog. + * This parameter can be one of the following values: + * @arg ADC_Channel_0: ADC Channel0 selected + * @arg ADC_Channel_1: ADC Channel1 selected + * @arg ADC_Channel_2: ADC Channel2 selected + * @arg ADC_Channel_3: ADC Channel3 selected + * @arg ADC_Channel_4: ADC Channel4 selected + * @arg ADC_Channel_5: ADC Channel5 selected + * @arg ADC_Channel_6: ADC Channel6 selected + * @arg ADC_Channel_7: ADC Channel7 selected + * @arg ADC_Channel_8: ADC Channel8 selected + * @arg ADC_Channel_9: ADC Channel9 selected + * @arg ADC_Channel_10: ADC Channel10 selected + * @arg ADC_Channel_11: ADC Channel11 selected + * @arg ADC_Channel_12: ADC Channel12 selected + * @arg ADC_Channel_13: ADC Channel13 selected + * @arg ADC_Channel_14: ADC Channel14 selected + * @arg ADC_Channel_15: ADC Channel15 selected + * @arg ADC_Channel_16: ADC Channel16 selected + * @arg ADC_Channel_17: ADC Channel17 selected + * @retval None + */ +void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_CHANNEL(ADC_Channel)); + /* Get the old register value */ + tmpreg = ADCx->CR1; + /* Clear the Analog watchdog channel select bits */ + tmpreg &= CR1_AWDCH_Reset; + /* Set the Analog watchdog channel */ + tmpreg |= ADC_Channel; + /* Store the new register value */ + ADCx->CR1 = tmpreg; +} + +/** + * @brief Enables or disables the temperature sensor and Vrefint channel. + * @param NewState: new state of the temperature sensor. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void ADC_TempSensorVrefintCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the temperature sensor and Vrefint channel*/ + ADC1->CR2 |= CR2_TSVREFE_Set; + } + else + { + /* Disable the temperature sensor and Vrefint channel*/ + ADC1->CR2 &= CR2_TSVREFE_Reset; + } +} + +/** + * @brief Checks whether the specified ADC flag is set or not. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg ADC_FLAG_AWD: Analog watchdog flag + * @arg ADC_FLAG_EOC: End of conversion flag + * @arg ADC_FLAG_JEOC: End of injected group conversion flag + * @arg ADC_FLAG_JSTRT: Start of injected group conversion flag + * @arg ADC_FLAG_STRT: Start of regular group conversion flag + * @retval The new state of ADC_FLAG (SET or RESET). + */ +FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_GET_FLAG(ADC_FLAG)); + /* Check the status of the specified ADC flag */ + if ((ADCx->SR & ADC_FLAG) != (uint8_t)RESET) + { + /* ADC_FLAG is set */ + bitstatus = SET; + } + else + { + /* ADC_FLAG is reset */ + bitstatus = RESET; + } + /* Return the ADC_FLAG status */ + return bitstatus; +} + +/** + * @brief Clears the ADCx's pending flags. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_FLAG: specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg ADC_FLAG_AWD: Analog watchdog flag + * @arg ADC_FLAG_EOC: End of conversion flag + * @arg ADC_FLAG_JEOC: End of injected group conversion flag + * @arg ADC_FLAG_JSTRT: Start of injected group conversion flag + * @arg ADC_FLAG_STRT: Start of regular group conversion flag + * @retval None + */ +void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_CLEAR_FLAG(ADC_FLAG)); + /* Clear the selected ADC flags */ + ADCx->SR = ~(uint32_t)ADC_FLAG; +} + +/** + * @brief Checks whether the specified ADC interrupt has occurred or not. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_IT: specifies the ADC interrupt source to check. + * This parameter can be one of the following values: + * @arg ADC_IT_EOC: End of conversion interrupt mask + * @arg ADC_IT_AWD: Analog watchdog interrupt mask + * @arg ADC_IT_JEOC: End of injected conversion interrupt mask + * @retval The new state of ADC_IT (SET or RESET). + */ +ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT) +{ + ITStatus bitstatus = RESET; + uint32_t itmask = 0, enablestatus = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_GET_IT(ADC_IT)); + /* Get the ADC IT index */ + itmask = ADC_IT >> 8; + /* Get the ADC_IT enable bit status */ + enablestatus = (ADCx->CR1 & (uint8_t)ADC_IT) ; + /* Check the status of the specified ADC interrupt */ + if (((ADCx->SR & itmask) != (uint32_t)RESET) && enablestatus) + { + /* ADC_IT is set */ + bitstatus = SET; + } + else + { + /* ADC_IT is reset */ + bitstatus = RESET; + } + /* Return the ADC_IT status */ + return bitstatus; +} + +/** + * @brief Clears the ADCx's interrupt pending bits. + * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. + * @param ADC_IT: specifies the ADC interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg ADC_IT_EOC: End of conversion interrupt mask + * @arg ADC_IT_AWD: Analog watchdog interrupt mask + * @arg ADC_IT_JEOC: End of injected conversion interrupt mask + * @retval None + */ +void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT) +{ + uint8_t itmask = 0; + /* Check the parameters */ + assert_param(IS_ADC_ALL_PERIPH(ADCx)); + assert_param(IS_ADC_IT(ADC_IT)); + /* Get the ADC IT index */ + itmask = (uint8_t)(ADC_IT >> 8); + /* Clear the selected ADC interrupt pending bits */ + ADCx->SR = ~(uint32_t)itmask; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c new file mode 100644 index 00000000..3004b9ef --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c @@ -0,0 +1,308 @@ +/** + ****************************************************************************** + * @file stm32f10x_bkp.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the BKP firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_bkp.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup BKP + * @brief BKP driver modules + * @{ + */ + +/** @defgroup BKP_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup BKP_Private_Defines + * @{ + */ + +/* ------------ BKP registers bit address in the alias region --------------- */ +#define BKP_OFFSET (BKP_BASE - PERIPH_BASE) + +/* --- CR Register ----*/ + +/* Alias word address of TPAL bit */ +#define CR_OFFSET (BKP_OFFSET + 0x30) +#define TPAL_BitNumber 0x01 +#define CR_TPAL_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (TPAL_BitNumber * 4)) + +/* Alias word address of TPE bit */ +#define TPE_BitNumber 0x00 +#define CR_TPE_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (TPE_BitNumber * 4)) + +/* --- CSR Register ---*/ + +/* Alias word address of TPIE bit */ +#define CSR_OFFSET (BKP_OFFSET + 0x34) +#define TPIE_BitNumber 0x02 +#define CSR_TPIE_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TPIE_BitNumber * 4)) + +/* Alias word address of TIF bit */ +#define TIF_BitNumber 0x09 +#define CSR_TIF_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TIF_BitNumber * 4)) + +/* Alias word address of TEF bit */ +#define TEF_BitNumber 0x08 +#define CSR_TEF_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TEF_BitNumber * 4)) + +/* ---------------------- BKP registers bit mask ------------------------ */ + +/* RTCCR register bit mask */ +#define RTCCR_CAL_MASK ((uint16_t)0xFF80) +#define RTCCR_MASK ((uint16_t)0xFC7F) + +/** + * @} + */ + + +/** @defgroup BKP_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup BKP_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup BKP_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup BKP_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the BKP peripheral registers to their default reset values. + * @param None + * @retval None + */ +void BKP_DeInit(void) +{ + RCC_BackupResetCmd(ENABLE); + RCC_BackupResetCmd(DISABLE); +} + +/** + * @brief Configures the Tamper Pin active level. + * @param BKP_TamperPinLevel: specifies the Tamper Pin active level. + * This parameter can be one of the following values: + * @arg BKP_TamperPinLevel_High: Tamper pin active on high level + * @arg BKP_TamperPinLevel_Low: Tamper pin active on low level + * @retval None + */ +void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel) +{ + /* Check the parameters */ + assert_param(IS_BKP_TAMPER_PIN_LEVEL(BKP_TamperPinLevel)); + *(__IO uint32_t *) CR_TPAL_BB = BKP_TamperPinLevel; +} + +/** + * @brief Enables or disables the Tamper Pin activation. + * @param NewState: new state of the Tamper Pin activation. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void BKP_TamperPinCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CR_TPE_BB = (uint32_t)NewState; +} + +/** + * @brief Enables or disables the Tamper Pin Interrupt. + * @param NewState: new state of the Tamper Pin Interrupt. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void BKP_ITConfig(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CSR_TPIE_BB = (uint32_t)NewState; +} + +/** + * @brief Select the RTC output source to output on the Tamper pin. + * @param BKP_RTCOutputSource: specifies the RTC output source. + * This parameter can be one of the following values: + * @arg BKP_RTCOutputSource_None: no RTC output on the Tamper pin. + * @arg BKP_RTCOutputSource_CalibClock: output the RTC clock with frequency + * divided by 64 on the Tamper pin. + * @arg BKP_RTCOutputSource_Alarm: output the RTC Alarm pulse signal on + * the Tamper pin. + * @arg BKP_RTCOutputSource_Second: output the RTC Second pulse signal on + * the Tamper pin. + * @retval None + */ +void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource) +{ + uint16_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_BKP_RTC_OUTPUT_SOURCE(BKP_RTCOutputSource)); + tmpreg = BKP->RTCCR; + /* Clear CCO, ASOE and ASOS bits */ + tmpreg &= RTCCR_MASK; + + /* Set CCO, ASOE and ASOS bits according to BKP_RTCOutputSource value */ + tmpreg |= BKP_RTCOutputSource; + /* Store the new value */ + BKP->RTCCR = tmpreg; +} + +/** + * @brief Sets RTC Clock Calibration value. + * @param CalibrationValue: specifies the RTC Clock Calibration value. + * This parameter must be a number between 0 and 0x7F. + * @retval None + */ +void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue) +{ + uint16_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_BKP_CALIBRATION_VALUE(CalibrationValue)); + tmpreg = BKP->RTCCR; + /* Clear CAL[6:0] bits */ + tmpreg &= RTCCR_CAL_MASK; + /* Set CAL[6:0] bits according to CalibrationValue value */ + tmpreg |= CalibrationValue; + /* Store the new value */ + BKP->RTCCR = tmpreg; +} + +/** + * @brief Writes user data to the specified Data Backup Register. + * @param BKP_DR: specifies the Data Backup Register. + * This parameter can be BKP_DRx where x:[1, 42] + * @param Data: data to write + * @retval None + */ +void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_BKP_DR(BKP_DR)); + + tmp = (uint32_t)BKP_BASE; + tmp += BKP_DR; + + *(__IO uint32_t *) tmp = Data; +} + +/** + * @brief Reads data from the specified Data Backup Register. + * @param BKP_DR: specifies the Data Backup Register. + * This parameter can be BKP_DRx where x:[1, 42] + * @retval The content of the specified Data Backup Register + */ +uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_BKP_DR(BKP_DR)); + + tmp = (uint32_t)BKP_BASE; + tmp += BKP_DR; + + return (*(__IO uint16_t *) tmp); +} + +/** + * @brief Checks whether the Tamper Pin Event flag is set or not. + * @param None + * @retval The new state of the Tamper Pin Event flag (SET or RESET). + */ +FlagStatus BKP_GetFlagStatus(void) +{ + return (FlagStatus)(*(__IO uint32_t *) CSR_TEF_BB); +} + +/** + * @brief Clears Tamper Pin Event pending flag. + * @param None + * @retval None + */ +void BKP_ClearFlag(void) +{ + /* Set CTE bit to clear Tamper Pin Event flag */ + BKP->CSR |= BKP_CSR_CTE; +} + +/** + * @brief Checks whether the Tamper Pin Interrupt has occurred or not. + * @param None + * @retval The new state of the Tamper Pin Interrupt (SET or RESET). + */ +ITStatus BKP_GetITStatus(void) +{ + return (ITStatus)(*(__IO uint32_t *) CSR_TIF_BB); +} + +/** + * @brief Clears Tamper Pin Interrupt pending bit. + * @param None + * @retval None + */ +void BKP_ClearITPendingBit(void) +{ + /* Set CTI bit to clear Tamper Pin Interrupt pending bit */ + BKP->CSR |= BKP_CSR_CTI; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c new file mode 100644 index 00000000..607d6924 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c @@ -0,0 +1,1415 @@ +/** + ****************************************************************************** + * @file stm32f10x_can.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the CAN firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_can.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup CAN + * @brief CAN driver modules + * @{ + */ + +/** @defgroup CAN_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup CAN_Private_Defines + * @{ + */ + +/* CAN Master Control Register bits */ + +#define MCR_DBF ((uint32_t)0x00010000) /* software master reset */ + +/* CAN Mailbox Transmit Request */ +#define TMIDxR_TXRQ ((uint32_t)0x00000001) /* Transmit mailbox request */ + +/* CAN Filter Master Register bits */ +#define FMR_FINIT ((uint32_t)0x00000001) /* Filter init mode */ + +/* Time out for INAK bit */ +#define INAK_TIMEOUT ((uint32_t)0x0000FFFF) +/* Time out for SLAK bit */ +#define SLAK_TIMEOUT ((uint32_t)0x0000FFFF) + + + +/* Flags in TSR register */ +#define CAN_FLAGS_TSR ((uint32_t)0x08000000) +/* Flags in RF1R register */ +#define CAN_FLAGS_RF1R ((uint32_t)0x04000000) +/* Flags in RF0R register */ +#define CAN_FLAGS_RF0R ((uint32_t)0x02000000) +/* Flags in MSR register */ +#define CAN_FLAGS_MSR ((uint32_t)0x01000000) +/* Flags in ESR register */ +#define CAN_FLAGS_ESR ((uint32_t)0x00F00000) + +/* Mailboxes definition */ +#define CAN_TXMAILBOX_0 ((uint8_t)0x00) +#define CAN_TXMAILBOX_1 ((uint8_t)0x01) +#define CAN_TXMAILBOX_2 ((uint8_t)0x02) + + + +#define CAN_MODE_MASK ((uint32_t) 0x00000003) +/** + * @} + */ + +/** @defgroup CAN_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup CAN_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup CAN_Private_FunctionPrototypes + * @{ + */ + +static ITStatus CheckITStatus(uint32_t CAN_Reg, uint32_t It_Bit); + +/** + * @} + */ + +/** @defgroup CAN_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the CAN peripheral registers to their default reset values. + * @param CANx: where x can be 1 or 2 to select the CAN peripheral. + * @retval None. + */ +void CAN_DeInit(CAN_TypeDef* CANx) +{ + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + + if (CANx == CAN1) + { + /* Enable CAN1 reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, ENABLE); + /* Release CAN1 from reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, DISABLE); + } + else + { + /* Enable CAN2 reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN2, ENABLE); + /* Release CAN2 from reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN2, DISABLE); + } +} + +/** + * @brief Initializes the CAN peripheral according to the specified + * parameters in the CAN_InitStruct. + * @param CANx: where x can be 1 or 2 to to select the CAN + * peripheral. + * @param CAN_InitStruct: pointer to a CAN_InitTypeDef structure that + * contains the configuration information for the + * CAN peripheral. + * @retval Constant indicates initialization succeed which will be + * CAN_InitStatus_Failed or CAN_InitStatus_Success. + */ +uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct) +{ + uint8_t InitStatus = CAN_InitStatus_Failed; + uint32_t wait_ack = 0x00000000; + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_TTCM)); + assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_ABOM)); + assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_AWUM)); + assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_NART)); + assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_RFLM)); + assert_param(IS_FUNCTIONAL_STATE(CAN_InitStruct->CAN_TXFP)); + assert_param(IS_CAN_MODE(CAN_InitStruct->CAN_Mode)); + assert_param(IS_CAN_SJW(CAN_InitStruct->CAN_SJW)); + assert_param(IS_CAN_BS1(CAN_InitStruct->CAN_BS1)); + assert_param(IS_CAN_BS2(CAN_InitStruct->CAN_BS2)); + assert_param(IS_CAN_PRESCALER(CAN_InitStruct->CAN_Prescaler)); + + /* Exit from sleep mode */ + CANx->MCR &= (~(uint32_t)CAN_MCR_SLEEP); + + /* Request initialisation */ + CANx->MCR |= CAN_MCR_INRQ ; + + /* Wait the acknowledge */ + while (((CANx->MSR & CAN_MSR_INAK) != CAN_MSR_INAK) && (wait_ack != INAK_TIMEOUT)) + { + wait_ack++; + } + + /* Check acknowledge */ + if ((CANx->MSR & CAN_MSR_INAK) != CAN_MSR_INAK) + { + InitStatus = CAN_InitStatus_Failed; + } + else + { + /* Set the time triggered communication mode */ + if (CAN_InitStruct->CAN_TTCM == ENABLE) + { + CANx->MCR |= CAN_MCR_TTCM; + } + else + { + CANx->MCR &= ~(uint32_t)CAN_MCR_TTCM; + } + + /* Set the automatic bus-off management */ + if (CAN_InitStruct->CAN_ABOM == ENABLE) + { + CANx->MCR |= CAN_MCR_ABOM; + } + else + { + CANx->MCR &= ~(uint32_t)CAN_MCR_ABOM; + } + + /* Set the automatic wake-up mode */ + if (CAN_InitStruct->CAN_AWUM == ENABLE) + { + CANx->MCR |= CAN_MCR_AWUM; + } + else + { + CANx->MCR &= ~(uint32_t)CAN_MCR_AWUM; + } + + /* Set the no automatic retransmission */ + if (CAN_InitStruct->CAN_NART == ENABLE) + { + CANx->MCR |= CAN_MCR_NART; + } + else + { + CANx->MCR &= ~(uint32_t)CAN_MCR_NART; + } + + /* Set the receive FIFO locked mode */ + if (CAN_InitStruct->CAN_RFLM == ENABLE) + { + CANx->MCR |= CAN_MCR_RFLM; + } + else + { + CANx->MCR &= ~(uint32_t)CAN_MCR_RFLM; + } + + /* Set the transmit FIFO priority */ + if (CAN_InitStruct->CAN_TXFP == ENABLE) + { + CANx->MCR |= CAN_MCR_TXFP; + } + else + { + CANx->MCR &= ~(uint32_t)CAN_MCR_TXFP; + } + + /* Set the bit timing register */ + CANx->BTR = (uint32_t)((uint32_t)CAN_InitStruct->CAN_Mode << 30) | \ + ((uint32_t)CAN_InitStruct->CAN_SJW << 24) | \ + ((uint32_t)CAN_InitStruct->CAN_BS1 << 16) | \ + ((uint32_t)CAN_InitStruct->CAN_BS2 << 20) | \ + ((uint32_t)CAN_InitStruct->CAN_Prescaler - 1); + + /* Request leave initialisation */ + CANx->MCR &= ~(uint32_t)CAN_MCR_INRQ; + + /* Wait the acknowledge */ + wait_ack = 0; + + while (((CANx->MSR & CAN_MSR_INAK) == CAN_MSR_INAK) && (wait_ack != INAK_TIMEOUT)) + { + wait_ack++; + } + + /* ...and check acknowledged */ + if ((CANx->MSR & CAN_MSR_INAK) == CAN_MSR_INAK) + { + InitStatus = CAN_InitStatus_Failed; + } + else + { + InitStatus = CAN_InitStatus_Success ; + } + } + + /* At this step, return the status of initialization */ + return InitStatus; +} + +/** + * @brief Initializes the CAN peripheral according to the specified + * parameters in the CAN_FilterInitStruct. + * @param CAN_FilterInitStruct: pointer to a CAN_FilterInitTypeDef + * structure that contains the configuration + * information. + * @retval None. + */ +void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct) +{ + uint32_t filter_number_bit_pos = 0; + /* Check the parameters */ + assert_param(IS_CAN_FILTER_NUMBER(CAN_FilterInitStruct->CAN_FilterNumber)); + assert_param(IS_CAN_FILTER_MODE(CAN_FilterInitStruct->CAN_FilterMode)); + assert_param(IS_CAN_FILTER_SCALE(CAN_FilterInitStruct->CAN_FilterScale)); + assert_param(IS_CAN_FILTER_FIFO(CAN_FilterInitStruct->CAN_FilterFIFOAssignment)); + assert_param(IS_FUNCTIONAL_STATE(CAN_FilterInitStruct->CAN_FilterActivation)); + + filter_number_bit_pos = ((uint32_t)1) << CAN_FilterInitStruct->CAN_FilterNumber; + + /* Initialisation mode for the filter */ + CAN1->FMR |= FMR_FINIT; + + /* Filter Deactivation */ + CAN1->FA1R &= ~(uint32_t)filter_number_bit_pos; + + /* Filter Scale */ + if (CAN_FilterInitStruct->CAN_FilterScale == CAN_FilterScale_16bit) + { + /* 16-bit scale for the filter */ + CAN1->FS1R &= ~(uint32_t)filter_number_bit_pos; + + /* First 16-bit identifier and First 16-bit mask */ + /* Or First 16-bit identifier and Second 16-bit identifier */ + CAN1->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR1 = + ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdLow) << 16) | + (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdLow); + + /* Second 16-bit identifier and Second 16-bit mask */ + /* Or Third 16-bit identifier and Fourth 16-bit identifier */ + CAN1->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR2 = + ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdHigh) << 16) | + (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdHigh); + } + + if (CAN_FilterInitStruct->CAN_FilterScale == CAN_FilterScale_32bit) + { + /* 32-bit scale for the filter */ + CAN1->FS1R |= filter_number_bit_pos; + /* 32-bit identifier or First 32-bit identifier */ + CAN1->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR1 = + ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdHigh) << 16) | + (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdLow); + /* 32-bit mask or Second 32-bit identifier */ + CAN1->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR2 = + ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdHigh) << 16) | + (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdLow); + } + + /* Filter Mode */ + if (CAN_FilterInitStruct->CAN_FilterMode == CAN_FilterMode_IdMask) + { + /*Id/Mask mode for the filter*/ + CAN1->FM1R &= ~(uint32_t)filter_number_bit_pos; + } + else /* CAN_FilterInitStruct->CAN_FilterMode == CAN_FilterMode_IdList */ + { + /*Identifier list mode for the filter*/ + CAN1->FM1R |= (uint32_t)filter_number_bit_pos; + } + + /* Filter FIFO assignment */ + if (CAN_FilterInitStruct->CAN_FilterFIFOAssignment == CAN_Filter_FIFO0) + { + /* FIFO 0 assignation for the filter */ + CAN1->FFA1R &= ~(uint32_t)filter_number_bit_pos; + } + + if (CAN_FilterInitStruct->CAN_FilterFIFOAssignment == CAN_Filter_FIFO1) + { + /* FIFO 1 assignation for the filter */ + CAN1->FFA1R |= (uint32_t)filter_number_bit_pos; + } + + /* Filter activation */ + if (CAN_FilterInitStruct->CAN_FilterActivation == ENABLE) + { + CAN1->FA1R |= filter_number_bit_pos; + } + + /* Leave the initialisation mode for the filter */ + CAN1->FMR &= ~FMR_FINIT; +} + +/** + * @brief Fills each CAN_InitStruct member with its default value. + * @param CAN_InitStruct: pointer to a CAN_InitTypeDef structure which + * will be initialized. + * @retval None. + */ +void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct) +{ + /* Reset CAN init structure parameters values */ + + /* Initialize the time triggered communication mode */ + CAN_InitStruct->CAN_TTCM = DISABLE; + + /* Initialize the automatic bus-off management */ + CAN_InitStruct->CAN_ABOM = DISABLE; + + /* Initialize the automatic wake-up mode */ + CAN_InitStruct->CAN_AWUM = DISABLE; + + /* Initialize the no automatic retransmission */ + CAN_InitStruct->CAN_NART = DISABLE; + + /* Initialize the receive FIFO locked mode */ + CAN_InitStruct->CAN_RFLM = DISABLE; + + /* Initialize the transmit FIFO priority */ + CAN_InitStruct->CAN_TXFP = DISABLE; + + /* Initialize the CAN_Mode member */ + CAN_InitStruct->CAN_Mode = CAN_Mode_Normal; + + /* Initialize the CAN_SJW member */ + CAN_InitStruct->CAN_SJW = CAN_SJW_1tq; + + /* Initialize the CAN_BS1 member */ + CAN_InitStruct->CAN_BS1 = CAN_BS1_4tq; + + /* Initialize the CAN_BS2 member */ + CAN_InitStruct->CAN_BS2 = CAN_BS2_3tq; + + /* Initialize the CAN_Prescaler member */ + CAN_InitStruct->CAN_Prescaler = 1; +} + +/** + * @brief Select the start bank filter for slave CAN. + * @note This function applies only to STM32 Connectivity line devices. + * @param CAN_BankNumber: Select the start slave bank filter from 1..27. + * @retval None. + */ +void CAN_SlaveStartBank(uint8_t CAN_BankNumber) +{ + /* Check the parameters */ + assert_param(IS_CAN_BANKNUMBER(CAN_BankNumber)); + + /* Enter Initialisation mode for the filter */ + CAN1->FMR |= FMR_FINIT; + + /* Select the start slave bank */ + CAN1->FMR &= (uint32_t)0xFFFFC0F1 ; + CAN1->FMR |= (uint32_t)(CAN_BankNumber)<<8; + + /* Leave Initialisation mode for the filter */ + CAN1->FMR &= ~FMR_FINIT; +} + +/** + * @brief Enables or disables the DBG Freeze for CAN. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param NewState: new state of the CAN peripheral. This parameter can + * be: ENABLE or DISABLE. + * @retval None. + */ +void CAN_DBGFreeze(CAN_TypeDef* CANx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable Debug Freeze */ + CANx->MCR |= MCR_DBF; + } + else + { + /* Disable Debug Freeze */ + CANx->MCR &= ~MCR_DBF; + } +} + + +/** + * @brief Enables or disabes the CAN Time TriggerOperation communication mode. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param NewState : Mode new state , can be one of @ref FunctionalState. + * @note when enabled, Time stamp (TIME[15:0]) value is sent in the last + * two data bytes of the 8-byte message: TIME[7:0] in data byte 6 + * and TIME[15:8] in data byte 7 + * @note DLC must be programmed as 8 in order Time Stamp (2 bytes) to be + * sent over the CAN bus. + * @retval None + */ +void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the TTCM mode */ + CANx->MCR |= CAN_MCR_TTCM; + + /* Set TGT bits */ + CANx->sTxMailBox[0].TDTR |= ((uint32_t)CAN_TDT0R_TGT); + CANx->sTxMailBox[1].TDTR |= ((uint32_t)CAN_TDT1R_TGT); + CANx->sTxMailBox[2].TDTR |= ((uint32_t)CAN_TDT2R_TGT); + } + else + { + /* Disable the TTCM mode */ + CANx->MCR &= (uint32_t)(~(uint32_t)CAN_MCR_TTCM); + + /* Reset TGT bits */ + CANx->sTxMailBox[0].TDTR &= ((uint32_t)~CAN_TDT0R_TGT); + CANx->sTxMailBox[1].TDTR &= ((uint32_t)~CAN_TDT1R_TGT); + CANx->sTxMailBox[2].TDTR &= ((uint32_t)~CAN_TDT2R_TGT); + } +} +/** + * @brief Initiates the transmission of a message. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param TxMessage: pointer to a structure which contains CAN Id, CAN + * DLC and CAN data. + * @retval The number of the mailbox that is used for transmission + * or CAN_TxStatus_NoMailBox if there is no empty mailbox. + */ +uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage) +{ + uint8_t transmit_mailbox = 0; + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_IDTYPE(TxMessage->IDE)); + assert_param(IS_CAN_RTR(TxMessage->RTR)); + assert_param(IS_CAN_DLC(TxMessage->DLC)); + + /* Select one empty transmit mailbox */ + if ((CANx->TSR&CAN_TSR_TME0) == CAN_TSR_TME0) + { + transmit_mailbox = 0; + } + else if ((CANx->TSR&CAN_TSR_TME1) == CAN_TSR_TME1) + { + transmit_mailbox = 1; + } + else if ((CANx->TSR&CAN_TSR_TME2) == CAN_TSR_TME2) + { + transmit_mailbox = 2; + } + else + { + transmit_mailbox = CAN_TxStatus_NoMailBox; + } + + if (transmit_mailbox != CAN_TxStatus_NoMailBox) + { + /* Set up the Id */ + CANx->sTxMailBox[transmit_mailbox].TIR &= TMIDxR_TXRQ; + if (TxMessage->IDE == CAN_Id_Standard) + { + assert_param(IS_CAN_STDID(TxMessage->StdId)); + CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->StdId << 21) | \ + TxMessage->RTR); + } + else + { + assert_param(IS_CAN_EXTID(TxMessage->ExtId)); + CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->ExtId << 3) | \ + TxMessage->IDE | \ + TxMessage->RTR); + } + + /* Set up the DLC */ + TxMessage->DLC &= (uint8_t)0x0000000F; + CANx->sTxMailBox[transmit_mailbox].TDTR &= (uint32_t)0xFFFFFFF0; + CANx->sTxMailBox[transmit_mailbox].TDTR |= TxMessage->DLC; + + /* Set up the data field */ + CANx->sTxMailBox[transmit_mailbox].TDLR = (((uint32_t)TxMessage->Data[3] << 24) | + ((uint32_t)TxMessage->Data[2] << 16) | + ((uint32_t)TxMessage->Data[1] << 8) | + ((uint32_t)TxMessage->Data[0])); + CANx->sTxMailBox[transmit_mailbox].TDHR = (((uint32_t)TxMessage->Data[7] << 24) | + ((uint32_t)TxMessage->Data[6] << 16) | + ((uint32_t)TxMessage->Data[5] << 8) | + ((uint32_t)TxMessage->Data[4])); + /* Request transmission */ + CANx->sTxMailBox[transmit_mailbox].TIR |= TMIDxR_TXRQ; + } + return transmit_mailbox; +} + +/** + * @brief Checks the transmission of a message. + * @param CANx: where x can be 1 or 2 to to select the + * CAN peripheral. + * @param TransmitMailbox: the number of the mailbox that is used for + * transmission. + * @retval CAN_TxStatus_Ok if the CAN driver transmits the message, CAN_TxStatus_Failed + * in an other case. + */ +uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox) +{ + uint32_t state = 0; + + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_TRANSMITMAILBOX(TransmitMailbox)); + + switch (TransmitMailbox) + { + case (CAN_TXMAILBOX_0): + state = CANx->TSR & (CAN_TSR_RQCP0 | CAN_TSR_TXOK0 | CAN_TSR_TME0); + break; + case (CAN_TXMAILBOX_1): + state = CANx->TSR & (CAN_TSR_RQCP1 | CAN_TSR_TXOK1 | CAN_TSR_TME1); + break; + case (CAN_TXMAILBOX_2): + state = CANx->TSR & (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2); + break; + default: + state = CAN_TxStatus_Failed; + break; + } + switch (state) + { + /* transmit pending */ + case (0x0): state = CAN_TxStatus_Pending; + break; + /* transmit failed */ + case (CAN_TSR_RQCP0 | CAN_TSR_TME0): state = CAN_TxStatus_Failed; + break; + case (CAN_TSR_RQCP1 | CAN_TSR_TME1): state = CAN_TxStatus_Failed; + break; + case (CAN_TSR_RQCP2 | CAN_TSR_TME2): state = CAN_TxStatus_Failed; + break; + /* transmit succeeded */ + case (CAN_TSR_RQCP0 | CAN_TSR_TXOK0 | CAN_TSR_TME0):state = CAN_TxStatus_Ok; + break; + case (CAN_TSR_RQCP1 | CAN_TSR_TXOK1 | CAN_TSR_TME1):state = CAN_TxStatus_Ok; + break; + case (CAN_TSR_RQCP2 | CAN_TSR_TXOK2 | CAN_TSR_TME2):state = CAN_TxStatus_Ok; + break; + default: state = CAN_TxStatus_Failed; + break; + } + return (uint8_t) state; +} + +/** + * @brief Cancels a transmit request. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param Mailbox: Mailbox number. + * @retval None. + */ +void CAN_CancelTransmit(CAN_TypeDef* CANx, uint8_t Mailbox) +{ + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_TRANSMITMAILBOX(Mailbox)); + /* abort transmission */ + switch (Mailbox) + { + case (CAN_TXMAILBOX_0): CANx->TSR |= CAN_TSR_ABRQ0; + break; + case (CAN_TXMAILBOX_1): CANx->TSR |= CAN_TSR_ABRQ1; + break; + case (CAN_TXMAILBOX_2): CANx->TSR |= CAN_TSR_ABRQ2; + break; + default: + break; + } +} + + +/** + * @brief Receives a message. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param FIFONumber: Receive FIFO number, CAN_FIFO0 or CAN_FIFO1. + * @param RxMessage: pointer to a structure receive message which contains + * CAN Id, CAN DLC, CAN datas and FMI number. + * @retval None. + */ +void CAN_Receive(CAN_TypeDef* CANx, uint8_t FIFONumber, CanRxMsg* RxMessage) +{ + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_FIFO(FIFONumber)); + /* Get the Id */ + RxMessage->IDE = (uint8_t)0x04 & CANx->sFIFOMailBox[FIFONumber].RIR; + if (RxMessage->IDE == CAN_Id_Standard) + { + RxMessage->StdId = (uint32_t)0x000007FF & (CANx->sFIFOMailBox[FIFONumber].RIR >> 21); + } + else + { + RxMessage->ExtId = (uint32_t)0x1FFFFFFF & (CANx->sFIFOMailBox[FIFONumber].RIR >> 3); + } + + RxMessage->RTR = (uint8_t)0x02 & CANx->sFIFOMailBox[FIFONumber].RIR; + /* Get the DLC */ + RxMessage->DLC = (uint8_t)0x0F & CANx->sFIFOMailBox[FIFONumber].RDTR; + /* Get the FMI */ + RxMessage->FMI = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDTR >> 8); + /* Get the data field */ + RxMessage->Data[0] = (uint8_t)0xFF & CANx->sFIFOMailBox[FIFONumber].RDLR; + RxMessage->Data[1] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDLR >> 8); + RxMessage->Data[2] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDLR >> 16); + RxMessage->Data[3] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDLR >> 24); + RxMessage->Data[4] = (uint8_t)0xFF & CANx->sFIFOMailBox[FIFONumber].RDHR; + RxMessage->Data[5] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDHR >> 8); + RxMessage->Data[6] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDHR >> 16); + RxMessage->Data[7] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RDHR >> 24); + /* Release the FIFO */ + /* Release FIFO0 */ + if (FIFONumber == CAN_FIFO0) + { + CANx->RF0R |= CAN_RF0R_RFOM0; + } + /* Release FIFO1 */ + else /* FIFONumber == CAN_FIFO1 */ + { + CANx->RF1R |= CAN_RF1R_RFOM1; + } +} + +/** + * @brief Releases the specified FIFO. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param FIFONumber: FIFO to release, CAN_FIFO0 or CAN_FIFO1. + * @retval None. + */ +void CAN_FIFORelease(CAN_TypeDef* CANx, uint8_t FIFONumber) +{ + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_FIFO(FIFONumber)); + /* Release FIFO0 */ + if (FIFONumber == CAN_FIFO0) + { + CANx->RF0R |= CAN_RF0R_RFOM0; + } + /* Release FIFO1 */ + else /* FIFONumber == CAN_FIFO1 */ + { + CANx->RF1R |= CAN_RF1R_RFOM1; + } +} + +/** + * @brief Returns the number of pending messages. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param FIFONumber: Receive FIFO number, CAN_FIFO0 or CAN_FIFO1. + * @retval NbMessage : which is the number of pending message. + */ +uint8_t CAN_MessagePending(CAN_TypeDef* CANx, uint8_t FIFONumber) +{ + uint8_t message_pending=0; + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_FIFO(FIFONumber)); + if (FIFONumber == CAN_FIFO0) + { + message_pending = (uint8_t)(CANx->RF0R&(uint32_t)0x03); + } + else if (FIFONumber == CAN_FIFO1) + { + message_pending = (uint8_t)(CANx->RF1R&(uint32_t)0x03); + } + else + { + message_pending = 0; + } + return message_pending; +} + + +/** + * @brief Select the CAN Operation mode. + * @param CAN_OperatingMode : CAN Operating Mode. This parameter can be one + * of @ref CAN_OperatingMode_TypeDef enumeration. + * @retval status of the requested mode which can be + * - CAN_ModeStatus_Failed CAN failed entering the specific mode + * - CAN_ModeStatus_Success CAN Succeed entering the specific mode + + */ +uint8_t CAN_OperatingModeRequest(CAN_TypeDef* CANx, uint8_t CAN_OperatingMode) +{ + uint8_t status = CAN_ModeStatus_Failed; + + /* Timeout for INAK or also for SLAK bits*/ + uint32_t timeout = INAK_TIMEOUT; + + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_OPERATING_MODE(CAN_OperatingMode)); + + if (CAN_OperatingMode == CAN_OperatingMode_Initialization) + { + /* Request initialisation */ + CANx->MCR = (uint32_t)((CANx->MCR & (uint32_t)(~(uint32_t)CAN_MCR_SLEEP)) | CAN_MCR_INRQ); + + /* Wait the acknowledge */ + while (((CANx->MSR & CAN_MODE_MASK) != CAN_MSR_INAK) && (timeout != 0)) + { + timeout--; + } + if ((CANx->MSR & CAN_MODE_MASK) != CAN_MSR_INAK) + { + status = CAN_ModeStatus_Failed; + } + else + { + status = CAN_ModeStatus_Success; + } + } + else if (CAN_OperatingMode == CAN_OperatingMode_Normal) + { + /* Request leave initialisation and sleep mode and enter Normal mode */ + CANx->MCR &= (uint32_t)(~(CAN_MCR_SLEEP|CAN_MCR_INRQ)); + + /* Wait the acknowledge */ + while (((CANx->MSR & CAN_MODE_MASK) != 0) && (timeout!=0)) + { + timeout--; + } + if ((CANx->MSR & CAN_MODE_MASK) != 0) + { + status = CAN_ModeStatus_Failed; + } + else + { + status = CAN_ModeStatus_Success; + } + } + else if (CAN_OperatingMode == CAN_OperatingMode_Sleep) + { + /* Request Sleep mode */ + CANx->MCR = (uint32_t)((CANx->MCR & (uint32_t)(~(uint32_t)CAN_MCR_INRQ)) | CAN_MCR_SLEEP); + + /* Wait the acknowledge */ + while (((CANx->MSR & CAN_MODE_MASK) != CAN_MSR_SLAK) && (timeout!=0)) + { + timeout--; + } + if ((CANx->MSR & CAN_MODE_MASK) != CAN_MSR_SLAK) + { + status = CAN_ModeStatus_Failed; + } + else + { + status = CAN_ModeStatus_Success; + } + } + else + { + status = CAN_ModeStatus_Failed; + } + + return (uint8_t) status; +} + +/** + * @brief Enters the low power mode. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @retval status: CAN_Sleep_Ok if sleep entered, CAN_Sleep_Failed in an + * other case. + */ +uint8_t CAN_Sleep(CAN_TypeDef* CANx) +{ + uint8_t sleepstatus = CAN_Sleep_Failed; + + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + + /* Request Sleep mode */ + CANx->MCR = (((CANx->MCR) & (uint32_t)(~(uint32_t)CAN_MCR_INRQ)) | CAN_MCR_SLEEP); + + /* Sleep mode status */ + if ((CANx->MSR & (CAN_MSR_SLAK|CAN_MSR_INAK)) == CAN_MSR_SLAK) + { + /* Sleep mode not entered */ + sleepstatus = CAN_Sleep_Ok; + } + /* return sleep mode status */ + return (uint8_t)sleepstatus; +} + +/** + * @brief Wakes the CAN up. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @retval status: CAN_WakeUp_Ok if sleep mode left, CAN_WakeUp_Failed in an + * other case. + */ +uint8_t CAN_WakeUp(CAN_TypeDef* CANx) +{ + uint32_t wait_slak = SLAK_TIMEOUT; + uint8_t wakeupstatus = CAN_WakeUp_Failed; + + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + + /* Wake up request */ + CANx->MCR &= ~(uint32_t)CAN_MCR_SLEEP; + + /* Sleep mode status */ + while(((CANx->MSR & CAN_MSR_SLAK) == CAN_MSR_SLAK)&&(wait_slak!=0x00)) + { + wait_slak--; + } + if((CANx->MSR & CAN_MSR_SLAK) != CAN_MSR_SLAK) + { + /* wake up done : Sleep mode exited */ + wakeupstatus = CAN_WakeUp_Ok; + } + /* return wakeup status */ + return (uint8_t)wakeupstatus; +} + + +/** + * @brief Returns the CANx's last error code (LEC). + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @retval CAN_ErrorCode: specifies the Error code : + * - CAN_ERRORCODE_NoErr No Error + * - CAN_ERRORCODE_StuffErr Stuff Error + * - CAN_ERRORCODE_FormErr Form Error + * - CAN_ERRORCODE_ACKErr Acknowledgment Error + * - CAN_ERRORCODE_BitRecessiveErr Bit Recessive Error + * - CAN_ERRORCODE_BitDominantErr Bit Dominant Error + * - CAN_ERRORCODE_CRCErr CRC Error + * - CAN_ERRORCODE_SoftwareSetErr Software Set Error + */ + +uint8_t CAN_GetLastErrorCode(CAN_TypeDef* CANx) +{ + uint8_t errorcode=0; + + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + + /* Get the error code*/ + errorcode = (((uint8_t)CANx->ESR) & (uint8_t)CAN_ESR_LEC); + + /* Return the error code*/ + return errorcode; +} +/** + * @brief Returns the CANx Receive Error Counter (REC). + * @note In case of an error during reception, this counter is incremented + * by 1 or by 8 depending on the error condition as defined by the CAN + * standard. After every successful reception, the counter is + * decremented by 1 or reset to 120 if its value was higher than 128. + * When the counter value exceeds 127, the CAN controller enters the + * error passive state. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @retval CAN Receive Error Counter. + */ +uint8_t CAN_GetReceiveErrorCounter(CAN_TypeDef* CANx) +{ + uint8_t counter=0; + + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + + /* Get the Receive Error Counter*/ + counter = (uint8_t)((CANx->ESR & CAN_ESR_REC)>> 24); + + /* Return the Receive Error Counter*/ + return counter; +} + + +/** + * @brief Returns the LSB of the 9-bit CANx Transmit Error Counter(TEC). + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @retval LSB of the 9-bit CAN Transmit Error Counter. + */ +uint8_t CAN_GetLSBTransmitErrorCounter(CAN_TypeDef* CANx) +{ + uint8_t counter=0; + + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + + /* Get the LSB of the 9-bit CANx Transmit Error Counter(TEC) */ + counter = (uint8_t)((CANx->ESR & CAN_ESR_TEC)>> 16); + + /* Return the LSB of the 9-bit CANx Transmit Error Counter(TEC) */ + return counter; +} + + +/** + * @brief Enables or disables the specified CANx interrupts. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param CAN_IT: specifies the CAN interrupt sources to be enabled or disabled. + * This parameter can be: + * - CAN_IT_TME, + * - CAN_IT_FMP0, + * - CAN_IT_FF0, + * - CAN_IT_FOV0, + * - CAN_IT_FMP1, + * - CAN_IT_FF1, + * - CAN_IT_FOV1, + * - CAN_IT_EWG, + * - CAN_IT_EPV, + * - CAN_IT_LEC, + * - CAN_IT_ERR, + * - CAN_IT_WKU or + * - CAN_IT_SLK. + * @param NewState: new state of the CAN interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None. + */ +void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_IT(CAN_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the selected CANx interrupt */ + CANx->IER |= CAN_IT; + } + else + { + /* Disable the selected CANx interrupt */ + CANx->IER &= ~CAN_IT; + } +} +/** + * @brief Checks whether the specified CAN flag is set or not. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param CAN_FLAG: specifies the flag to check. + * This parameter can be one of the following flags: + * - CAN_FLAG_EWG + * - CAN_FLAG_EPV + * - CAN_FLAG_BOF + * - CAN_FLAG_RQCP0 + * - CAN_FLAG_RQCP1 + * - CAN_FLAG_RQCP2 + * - CAN_FLAG_FMP1 + * - CAN_FLAG_FF1 + * - CAN_FLAG_FOV1 + * - CAN_FLAG_FMP0 + * - CAN_FLAG_FF0 + * - CAN_FLAG_FOV0 + * - CAN_FLAG_WKU + * - CAN_FLAG_SLAK + * - CAN_FLAG_LEC + * @retval The new state of CAN_FLAG (SET or RESET). + */ +FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG) +{ + FlagStatus bitstatus = RESET; + + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_GET_FLAG(CAN_FLAG)); + + + if((CAN_FLAG & CAN_FLAGS_ESR) != (uint32_t)RESET) + { + /* Check the status of the specified CAN flag */ + if ((CANx->ESR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + /* CAN_FLAG is set */ + bitstatus = SET; + } + else + { + /* CAN_FLAG is reset */ + bitstatus = RESET; + } + } + else if((CAN_FLAG & CAN_FLAGS_MSR) != (uint32_t)RESET) + { + /* Check the status of the specified CAN flag */ + if ((CANx->MSR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + /* CAN_FLAG is set */ + bitstatus = SET; + } + else + { + /* CAN_FLAG is reset */ + bitstatus = RESET; + } + } + else if((CAN_FLAG & CAN_FLAGS_TSR) != (uint32_t)RESET) + { + /* Check the status of the specified CAN flag */ + if ((CANx->TSR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + /* CAN_FLAG is set */ + bitstatus = SET; + } + else + { + /* CAN_FLAG is reset */ + bitstatus = RESET; + } + } + else if((CAN_FLAG & CAN_FLAGS_RF0R) != (uint32_t)RESET) + { + /* Check the status of the specified CAN flag */ + if ((CANx->RF0R & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + /* CAN_FLAG is set */ + bitstatus = SET; + } + else + { + /* CAN_FLAG is reset */ + bitstatus = RESET; + } + } + else /* If(CAN_FLAG & CAN_FLAGS_RF1R != (uint32_t)RESET) */ + { + /* Check the status of the specified CAN flag */ + if ((uint32_t)(CANx->RF1R & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + /* CAN_FLAG is set */ + bitstatus = SET; + } + else + { + /* CAN_FLAG is reset */ + bitstatus = RESET; + } + } + /* Return the CAN_FLAG status */ + return bitstatus; +} + +/** + * @brief Clears the CAN's pending flags. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param CAN_FLAG: specifies the flag to clear. + * This parameter can be one of the following flags: + * - CAN_FLAG_RQCP0 + * - CAN_FLAG_RQCP1 + * - CAN_FLAG_RQCP2 + * - CAN_FLAG_FF1 + * - CAN_FLAG_FOV1 + * - CAN_FLAG_FF0 + * - CAN_FLAG_FOV0 + * - CAN_FLAG_WKU + * - CAN_FLAG_SLAK + * - CAN_FLAG_LEC + * @retval None. + */ +void CAN_ClearFlag(CAN_TypeDef* CANx, uint32_t CAN_FLAG) +{ + uint32_t flagtmp=0; + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_CLEAR_FLAG(CAN_FLAG)); + + if (CAN_FLAG == CAN_FLAG_LEC) /* ESR register */ + { + /* Clear the selected CAN flags */ + CANx->ESR = (uint32_t)RESET; + } + else /* MSR or TSR or RF0R or RF1R */ + { + flagtmp = CAN_FLAG & 0x000FFFFF; + + if ((CAN_FLAG & CAN_FLAGS_RF0R)!=(uint32_t)RESET) + { + /* Receive Flags */ + CANx->RF0R = (uint32_t)(flagtmp); + } + else if ((CAN_FLAG & CAN_FLAGS_RF1R)!=(uint32_t)RESET) + { + /* Receive Flags */ + CANx->RF1R = (uint32_t)(flagtmp); + } + else if ((CAN_FLAG & CAN_FLAGS_TSR)!=(uint32_t)RESET) + { + /* Transmit Flags */ + CANx->TSR = (uint32_t)(flagtmp); + } + else /* If((CAN_FLAG & CAN_FLAGS_MSR)!=(uint32_t)RESET) */ + { + /* Operating mode Flags */ + CANx->MSR = (uint32_t)(flagtmp); + } + } +} + +/** + * @brief Checks whether the specified CANx interrupt has occurred or not. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param CAN_IT: specifies the CAN interrupt source to check. + * This parameter can be one of the following flags: + * - CAN_IT_TME + * - CAN_IT_FMP0 + * - CAN_IT_FF0 + * - CAN_IT_FOV0 + * - CAN_IT_FMP1 + * - CAN_IT_FF1 + * - CAN_IT_FOV1 + * - CAN_IT_WKU + * - CAN_IT_SLK + * - CAN_IT_EWG + * - CAN_IT_EPV + * - CAN_IT_BOF + * - CAN_IT_LEC + * - CAN_IT_ERR + * @retval The current state of CAN_IT (SET or RESET). + */ +ITStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_IT) +{ + ITStatus itstatus = RESET; + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_IT(CAN_IT)); + + /* check the enable interrupt bit */ + if((CANx->IER & CAN_IT) != RESET) + { + /* in case the Interrupt is enabled, .... */ + switch (CAN_IT) + { + case CAN_IT_TME: + /* Check CAN_TSR_RQCPx bits */ + itstatus = CheckITStatus(CANx->TSR, CAN_TSR_RQCP0|CAN_TSR_RQCP1|CAN_TSR_RQCP2); + break; + case CAN_IT_FMP0: + /* Check CAN_RF0R_FMP0 bit */ + itstatus = CheckITStatus(CANx->RF0R, CAN_RF0R_FMP0); + break; + case CAN_IT_FF0: + /* Check CAN_RF0R_FULL0 bit */ + itstatus = CheckITStatus(CANx->RF0R, CAN_RF0R_FULL0); + break; + case CAN_IT_FOV0: + /* Check CAN_RF0R_FOVR0 bit */ + itstatus = CheckITStatus(CANx->RF0R, CAN_RF0R_FOVR0); + break; + case CAN_IT_FMP1: + /* Check CAN_RF1R_FMP1 bit */ + itstatus = CheckITStatus(CANx->RF1R, CAN_RF1R_FMP1); + break; + case CAN_IT_FF1: + /* Check CAN_RF1R_FULL1 bit */ + itstatus = CheckITStatus(CANx->RF1R, CAN_RF1R_FULL1); + break; + case CAN_IT_FOV1: + /* Check CAN_RF1R_FOVR1 bit */ + itstatus = CheckITStatus(CANx->RF1R, CAN_RF1R_FOVR1); + break; + case CAN_IT_WKU: + /* Check CAN_MSR_WKUI bit */ + itstatus = CheckITStatus(CANx->MSR, CAN_MSR_WKUI); + break; + case CAN_IT_SLK: + /* Check CAN_MSR_SLAKI bit */ + itstatus = CheckITStatus(CANx->MSR, CAN_MSR_SLAKI); + break; + case CAN_IT_EWG: + /* Check CAN_ESR_EWGF bit */ + itstatus = CheckITStatus(CANx->ESR, CAN_ESR_EWGF); + break; + case CAN_IT_EPV: + /* Check CAN_ESR_EPVF bit */ + itstatus = CheckITStatus(CANx->ESR, CAN_ESR_EPVF); + break; + case CAN_IT_BOF: + /* Check CAN_ESR_BOFF bit */ + itstatus = CheckITStatus(CANx->ESR, CAN_ESR_BOFF); + break; + case CAN_IT_LEC: + /* Check CAN_ESR_LEC bit */ + itstatus = CheckITStatus(CANx->ESR, CAN_ESR_LEC); + break; + case CAN_IT_ERR: + /* Check CAN_MSR_ERRI bit */ + itstatus = CheckITStatus(CANx->MSR, CAN_MSR_ERRI); + break; + default : + /* in case of error, return RESET */ + itstatus = RESET; + break; + } + } + else + { + /* in case the Interrupt is not enabled, return RESET */ + itstatus = RESET; + } + + /* Return the CAN_IT status */ + return itstatus; +} + +/** + * @brief Clears the CANx's interrupt pending bits. + * @param CANx: where x can be 1 or 2 to to select the CAN peripheral. + * @param CAN_IT: specifies the interrupt pending bit to clear. + * - CAN_IT_TME + * - CAN_IT_FF0 + * - CAN_IT_FOV0 + * - CAN_IT_FF1 + * - CAN_IT_FOV1 + * - CAN_IT_WKU + * - CAN_IT_SLK + * - CAN_IT_EWG + * - CAN_IT_EPV + * - CAN_IT_BOF + * - CAN_IT_LEC + * - CAN_IT_ERR + * @retval None. + */ +void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_IT) +{ + /* Check the parameters */ + assert_param(IS_CAN_ALL_PERIPH(CANx)); + assert_param(IS_CAN_CLEAR_IT(CAN_IT)); + + switch (CAN_IT) + { + case CAN_IT_TME: + /* Clear CAN_TSR_RQCPx (rc_w1)*/ + CANx->TSR = CAN_TSR_RQCP0|CAN_TSR_RQCP1|CAN_TSR_RQCP2; + break; + case CAN_IT_FF0: + /* Clear CAN_RF0R_FULL0 (rc_w1)*/ + CANx->RF0R = CAN_RF0R_FULL0; + break; + case CAN_IT_FOV0: + /* Clear CAN_RF0R_FOVR0 (rc_w1)*/ + CANx->RF0R = CAN_RF0R_FOVR0; + break; + case CAN_IT_FF1: + /* Clear CAN_RF1R_FULL1 (rc_w1)*/ + CANx->RF1R = CAN_RF1R_FULL1; + break; + case CAN_IT_FOV1: + /* Clear CAN_RF1R_FOVR1 (rc_w1)*/ + CANx->RF1R = CAN_RF1R_FOVR1; + break; + case CAN_IT_WKU: + /* Clear CAN_MSR_WKUI (rc_w1)*/ + CANx->MSR = CAN_MSR_WKUI; + break; + case CAN_IT_SLK: + /* Clear CAN_MSR_SLAKI (rc_w1)*/ + CANx->MSR = CAN_MSR_SLAKI; + break; + case CAN_IT_EWG: + /* Clear CAN_MSR_ERRI (rc_w1) */ + CANx->MSR = CAN_MSR_ERRI; + /* Note : the corresponding Flag is cleared by hardware depending + of the CAN Bus status*/ + break; + case CAN_IT_EPV: + /* Clear CAN_MSR_ERRI (rc_w1) */ + CANx->MSR = CAN_MSR_ERRI; + /* Note : the corresponding Flag is cleared by hardware depending + of the CAN Bus status*/ + break; + case CAN_IT_BOF: + /* Clear CAN_MSR_ERRI (rc_w1) */ + CANx->MSR = CAN_MSR_ERRI; + /* Note : the corresponding Flag is cleared by hardware depending + of the CAN Bus status*/ + break; + case CAN_IT_LEC: + /* Clear LEC bits */ + CANx->ESR = RESET; + /* Clear CAN_MSR_ERRI (rc_w1) */ + CANx->MSR = CAN_MSR_ERRI; + break; + case CAN_IT_ERR: + /*Clear LEC bits */ + CANx->ESR = RESET; + /* Clear CAN_MSR_ERRI (rc_w1) */ + CANx->MSR = CAN_MSR_ERRI; + /* Note : BOFF, EPVF and EWGF Flags are cleared by hardware depending + of the CAN Bus status*/ + break; + default : + break; + } +} + +/** + * @brief Checks whether the CAN interrupt has occurred or not. + * @param CAN_Reg: specifies the CAN interrupt register to check. + * @param It_Bit: specifies the interrupt source bit to check. + * @retval The new state of the CAN Interrupt (SET or RESET). + */ +static ITStatus CheckITStatus(uint32_t CAN_Reg, uint32_t It_Bit) +{ + ITStatus pendingbitstatus = RESET; + + if ((CAN_Reg & It_Bit) != (uint32_t)RESET) + { + /* CAN_IT is set */ + pendingbitstatus = SET; + } + else + { + /* CAN_IT is reset */ + pendingbitstatus = RESET; + } + return pendingbitstatus; +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c new file mode 100644 index 00000000..08b501a0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c @@ -0,0 +1,433 @@ +/** + ****************************************************************************** + * @file stm32f10x_cec.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the CEC firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_cec.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup CEC + * @brief CEC driver modules + * @{ + */ + +/** @defgroup CEC_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + + +/** @defgroup CEC_Private_Defines + * @{ + */ + +/* ------------ CEC registers bit address in the alias region ----------- */ +#define CEC_OFFSET (CEC_BASE - PERIPH_BASE) + +/* --- CFGR Register ---*/ + +/* Alias word address of PE bit */ +#define CFGR_OFFSET (CEC_OFFSET + 0x00) +#define PE_BitNumber 0x00 +#define CFGR_PE_BB (PERIPH_BB_BASE + (CFGR_OFFSET * 32) + (PE_BitNumber * 4)) + +/* Alias word address of IE bit */ +#define IE_BitNumber 0x01 +#define CFGR_IE_BB (PERIPH_BB_BASE + (CFGR_OFFSET * 32) + (IE_BitNumber * 4)) + +/* --- CSR Register ---*/ + +/* Alias word address of TSOM bit */ +#define CSR_OFFSET (CEC_OFFSET + 0x10) +#define TSOM_BitNumber 0x00 +#define CSR_TSOM_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TSOM_BitNumber * 4)) + +/* Alias word address of TEOM bit */ +#define TEOM_BitNumber 0x01 +#define CSR_TEOM_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TEOM_BitNumber * 4)) + +#define CFGR_CLEAR_Mask (uint8_t)(0xF3) /* CFGR register Mask */ +#define FLAG_Mask ((uint32_t)0x00FFFFFF) /* CEC FLAG mask */ + +/** + * @} + */ + + +/** @defgroup CEC_Private_Macros + * @{ + */ + +/** + * @} + */ + + +/** @defgroup CEC_Private_Variables + * @{ + */ + +/** + * @} + */ + + +/** @defgroup CEC_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + + +/** @defgroup CEC_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the CEC peripheral registers to their default reset + * values. + * @param None + * @retval None + */ +void CEC_DeInit(void) +{ + /* Enable CEC reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CEC, ENABLE); + /* Release CEC from reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CEC, DISABLE); +} + + +/** + * @brief Initializes the CEC peripheral according to the specified + * parameters in the CEC_InitStruct. + * @param CEC_InitStruct: pointer to an CEC_InitTypeDef structure that + * contains the configuration information for the specified + * CEC peripheral. + * @retval None + */ +void CEC_Init(CEC_InitTypeDef* CEC_InitStruct) +{ + uint16_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_CEC_BIT_TIMING_ERROR_MODE(CEC_InitStruct->CEC_BitTimingMode)); + assert_param(IS_CEC_BIT_PERIOD_ERROR_MODE(CEC_InitStruct->CEC_BitPeriodMode)); + + /*---------------------------- CEC CFGR Configuration -----------------*/ + /* Get the CEC CFGR value */ + tmpreg = CEC->CFGR; + + /* Clear BTEM and BPEM bits */ + tmpreg &= CFGR_CLEAR_Mask; + + /* Configure CEC: Bit Timing Error and Bit Period Error */ + tmpreg |= (uint16_t)(CEC_InitStruct->CEC_BitTimingMode | CEC_InitStruct->CEC_BitPeriodMode); + + /* Write to CEC CFGR register*/ + CEC->CFGR = tmpreg; + +} + +/** + * @brief Enables or disables the specified CEC peripheral. + * @param NewState: new state of the CEC peripheral. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void CEC_Cmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CFGR_PE_BB = (uint32_t)NewState; + + if(NewState == DISABLE) + { + /* Wait until the PE bit is cleared by hardware (Idle Line detected) */ + while((CEC->CFGR & CEC_CFGR_PE) != (uint32_t)RESET) + { + } + } +} + +/** + * @brief Enables or disables the CEC interrupt. + * @param NewState: new state of the CEC interrupt. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void CEC_ITConfig(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CFGR_IE_BB = (uint32_t)NewState; +} + +/** + * @brief Defines the Own Address of the CEC device. + * @param CEC_OwnAddress: The CEC own address + * @retval None + */ +void CEC_OwnAddressConfig(uint8_t CEC_OwnAddress) +{ + /* Check the parameters */ + assert_param(IS_CEC_ADDRESS(CEC_OwnAddress)); + + /* Set the CEC own address */ + CEC->OAR = CEC_OwnAddress; +} + +/** + * @brief Sets the CEC prescaler value. + * @param CEC_Prescaler: CEC prescaler new value + * @retval None + */ +void CEC_SetPrescaler(uint16_t CEC_Prescaler) +{ + /* Check the parameters */ + assert_param(IS_CEC_PRESCALER(CEC_Prescaler)); + + /* Set the Prescaler value*/ + CEC->PRES = CEC_Prescaler; +} + +/** + * @brief Transmits single data through the CEC peripheral. + * @param Data: the data to transmit. + * @retval None + */ +void CEC_SendDataByte(uint8_t Data) +{ + /* Transmit Data */ + CEC->TXD = Data ; +} + + +/** + * @brief Returns the most recent received data by the CEC peripheral. + * @param None + * @retval The received data. + */ +uint8_t CEC_ReceiveDataByte(void) +{ + /* Receive Data */ + return (uint8_t)(CEC->RXD); +} + +/** + * @brief Starts a new message. + * @param None + * @retval None + */ +void CEC_StartOfMessage(void) +{ + /* Starts of new message */ + *(__IO uint32_t *) CSR_TSOM_BB = (uint32_t)0x1; +} + +/** + * @brief Transmits message with or without an EOM bit. + * @param NewState: new state of the CEC Tx End Of Message. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void CEC_EndOfMessageCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + /* The data byte will be transmitted with or without an EOM bit*/ + *(__IO uint32_t *) CSR_TEOM_BB = (uint32_t)NewState; +} + +/** + * @brief Gets the CEC flag status + * @param CEC_FLAG: specifies the CEC flag to check. + * This parameter can be one of the following values: + * @arg CEC_FLAG_BTE: Bit Timing Error + * @arg CEC_FLAG_BPE: Bit Period Error + * @arg CEC_FLAG_RBTFE: Rx Block Transfer Finished Error + * @arg CEC_FLAG_SBE: Start Bit Error + * @arg CEC_FLAG_ACKE: Block Acknowledge Error + * @arg CEC_FLAG_LINE: Line Error + * @arg CEC_FLAG_TBTFE: Tx Block Transfer Finished Error + * @arg CEC_FLAG_TEOM: Tx End Of Message + * @arg CEC_FLAG_TERR: Tx Error + * @arg CEC_FLAG_TBTRF: Tx Byte Transfer Request or Block Transfer Finished + * @arg CEC_FLAG_RSOM: Rx Start Of Message + * @arg CEC_FLAG_REOM: Rx End Of Message + * @arg CEC_FLAG_RERR: Rx Error + * @arg CEC_FLAG_RBTF: Rx Byte/Block Transfer Finished + * @retval The new state of CEC_FLAG (SET or RESET) + */ +FlagStatus CEC_GetFlagStatus(uint32_t CEC_FLAG) +{ + FlagStatus bitstatus = RESET; + uint32_t cecreg = 0, cecbase = 0; + + /* Check the parameters */ + assert_param(IS_CEC_GET_FLAG(CEC_FLAG)); + + /* Get the CEC peripheral base address */ + cecbase = (uint32_t)(CEC_BASE); + + /* Read flag register index */ + cecreg = CEC_FLAG >> 28; + + /* Get bit[23:0] of the flag */ + CEC_FLAG &= FLAG_Mask; + + if(cecreg != 0) + { + /* Flag in CEC ESR Register */ + CEC_FLAG = (uint32_t)(CEC_FLAG >> 16); + + /* Get the CEC ESR register address */ + cecbase += 0xC; + } + else + { + /* Get the CEC CSR register address */ + cecbase += 0x10; + } + + if(((*(__IO uint32_t *)cecbase) & CEC_FLAG) != (uint32_t)RESET) + { + /* CEC_FLAG is set */ + bitstatus = SET; + } + else + { + /* CEC_FLAG is reset */ + bitstatus = RESET; + } + + /* Return the CEC_FLAG status */ + return bitstatus; +} + +/** + * @brief Clears the CEC's pending flags. + * @param CEC_FLAG: specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg CEC_FLAG_TERR: Tx Error + * @arg CEC_FLAG_TBTRF: Tx Byte Transfer Request or Block Transfer Finished + * @arg CEC_FLAG_RSOM: Rx Start Of Message + * @arg CEC_FLAG_REOM: Rx End Of Message + * @arg CEC_FLAG_RERR: Rx Error + * @arg CEC_FLAG_RBTF: Rx Byte/Block Transfer Finished + * @retval None + */ +void CEC_ClearFlag(uint32_t CEC_FLAG) +{ + uint32_t tmp = 0x0; + + /* Check the parameters */ + assert_param(IS_CEC_CLEAR_FLAG(CEC_FLAG)); + + tmp = CEC->CSR & 0x2; + + /* Clear the selected CEC flags */ + CEC->CSR &= (uint32_t)(((~(uint32_t)CEC_FLAG) & 0xFFFFFFFC) | tmp); +} + +/** + * @brief Checks whether the specified CEC interrupt has occurred or not. + * @param CEC_IT: specifies the CEC interrupt source to check. + * This parameter can be one of the following values: + * @arg CEC_IT_TERR: Tx Error + * @arg CEC_IT_TBTF: Tx Block Transfer Finished + * @arg CEC_IT_RERR: Rx Error + * @arg CEC_IT_RBTF: Rx Block Transfer Finished + * @retval The new state of CEC_IT (SET or RESET). + */ +ITStatus CEC_GetITStatus(uint8_t CEC_IT) +{ + ITStatus bitstatus = RESET; + uint32_t enablestatus = 0; + + /* Check the parameters */ + assert_param(IS_CEC_GET_IT(CEC_IT)); + + /* Get the CEC IT enable bit status */ + enablestatus = (CEC->CFGR & (uint8_t)CEC_CFGR_IE) ; + + /* Check the status of the specified CEC interrupt */ + if (((CEC->CSR & CEC_IT) != (uint32_t)RESET) && enablestatus) + { + /* CEC_IT is set */ + bitstatus = SET; + } + else + { + /* CEC_IT is reset */ + bitstatus = RESET; + } + /* Return the CEC_IT status */ + return bitstatus; +} + +/** + * @brief Clears the CEC's interrupt pending bits. + * @param CEC_IT: specifies the CEC interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg CEC_IT_TERR: Tx Error + * @arg CEC_IT_TBTF: Tx Block Transfer Finished + * @arg CEC_IT_RERR: Rx Error + * @arg CEC_IT_RBTF: Rx Block Transfer Finished + * @retval None + */ +void CEC_ClearITPendingBit(uint16_t CEC_IT) +{ + uint32_t tmp = 0x0; + + /* Check the parameters */ + assert_param(IS_CEC_GET_IT(CEC_IT)); + + tmp = CEC->CSR & 0x2; + + /* Clear the selected CEC interrupt pending bits */ + CEC->CSR &= (uint32_t)(((~(uint32_t)CEC_IT) & 0xFFFFFFFC) | tmp); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c new file mode 100644 index 00000000..ef0c047d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c @@ -0,0 +1,160 @@ +/** + ****************************************************************************** + * @file stm32f10x_crc.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the CRC firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_crc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup CRC + * @brief CRC driver modules + * @{ + */ + +/** @defgroup CRC_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup CRC_Private_Defines + * @{ + */ + +/** + * @} + */ + +/** @defgroup CRC_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup CRC_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup CRC_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup CRC_Private_Functions + * @{ + */ + +/** + * @brief Resets the CRC Data register (DR). + * @param None + * @retval None + */ +void CRC_ResetDR(void) +{ + /* Reset CRC generator */ + CRC->CR = CRC_CR_RESET; +} + +/** + * @brief Computes the 32-bit CRC of a given data word(32-bit). + * @param Data: data word(32-bit) to compute its CRC + * @retval 32-bit CRC + */ +uint32_t CRC_CalcCRC(uint32_t Data) +{ + CRC->DR = Data; + + return (CRC->DR); +} + +/** + * @brief Computes the 32-bit CRC of a given buffer of data word(32-bit). + * @param pBuffer: pointer to the buffer containing the data to be computed + * @param BufferLength: length of the buffer to be computed + * @retval 32-bit CRC + */ +uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength) +{ + uint32_t index = 0; + + for(index = 0; index < BufferLength; index++) + { + CRC->DR = pBuffer[index]; + } + return (CRC->DR); +} + +/** + * @brief Returns the current CRC value. + * @param None + * @retval 32-bit CRC + */ +uint32_t CRC_GetCRC(void) +{ + return (CRC->DR); +} + +/** + * @brief Stores a 8-bit data in the Independent Data(ID) register. + * @param IDValue: 8-bit value to be stored in the ID register + * @retval None + */ +void CRC_SetIDRegister(uint8_t IDValue) +{ + CRC->IDR = IDValue; +} + +/** + * @brief Returns the 8-bit data stored in the Independent Data(ID) register + * @param None + * @retval 8-bit value of the ID register + */ +uint8_t CRC_GetIDRegister(void) +{ + return (CRC->IDR); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c new file mode 100644 index 00000000..025b8e28 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c @@ -0,0 +1,571 @@ +/** + ****************************************************************************** + * @file stm32f10x_dac.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the DAC firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_dac.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup DAC + * @brief DAC driver modules + * @{ + */ + +/** @defgroup DAC_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup DAC_Private_Defines + * @{ + */ + +/* CR register Mask */ +#define CR_CLEAR_MASK ((uint32_t)0x00000FFE) + +/* DAC Dual Channels SWTRIG masks */ +#define DUAL_SWTRIG_SET ((uint32_t)0x00000003) +#define DUAL_SWTRIG_RESET ((uint32_t)0xFFFFFFFC) + +/* DHR registers offsets */ +#define DHR12R1_OFFSET ((uint32_t)0x00000008) +#define DHR12R2_OFFSET ((uint32_t)0x00000014) +#define DHR12RD_OFFSET ((uint32_t)0x00000020) + +/* DOR register offset */ +#define DOR_OFFSET ((uint32_t)0x0000002C) +/** + * @} + */ + +/** @defgroup DAC_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup DAC_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup DAC_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup DAC_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the DAC peripheral registers to their default reset values. + * @param None + * @retval None + */ +void DAC_DeInit(void) +{ + /* Enable DAC reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, ENABLE); + /* Release DAC from reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, DISABLE); +} + +/** + * @brief Initializes the DAC peripheral according to the specified + * parameters in the DAC_InitStruct. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param DAC_InitStruct: pointer to a DAC_InitTypeDef structure that + * contains the configuration information for the specified DAC channel. + * @retval None + */ +void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct) +{ + uint32_t tmpreg1 = 0, tmpreg2 = 0; + /* Check the DAC parameters */ + assert_param(IS_DAC_TRIGGER(DAC_InitStruct->DAC_Trigger)); + assert_param(IS_DAC_GENERATE_WAVE(DAC_InitStruct->DAC_WaveGeneration)); + assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude)); + assert_param(IS_DAC_OUTPUT_BUFFER_STATE(DAC_InitStruct->DAC_OutputBuffer)); +/*---------------------------- DAC CR Configuration --------------------------*/ + /* Get the DAC CR value */ + tmpreg1 = DAC->CR; + /* Clear BOFFx, TENx, TSELx, WAVEx and MAMPx bits */ + tmpreg1 &= ~(CR_CLEAR_MASK << DAC_Channel); + /* Configure for the selected DAC channel: buffer output, trigger, wave generation, + mask/amplitude for wave generation */ + /* Set TSELx and TENx bits according to DAC_Trigger value */ + /* Set WAVEx bits according to DAC_WaveGeneration value */ + /* Set MAMPx bits according to DAC_LFSRUnmask_TriangleAmplitude value */ + /* Set BOFFx bit according to DAC_OutputBuffer value */ + tmpreg2 = (DAC_InitStruct->DAC_Trigger | DAC_InitStruct->DAC_WaveGeneration | + DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude | DAC_InitStruct->DAC_OutputBuffer); + /* Calculate CR register value depending on DAC_Channel */ + tmpreg1 |= tmpreg2 << DAC_Channel; + /* Write to DAC CR */ + DAC->CR = tmpreg1; +} + +/** + * @brief Fills each DAC_InitStruct member with its default value. + * @param DAC_InitStruct : pointer to a DAC_InitTypeDef structure which will + * be initialized. + * @retval None + */ +void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct) +{ +/*--------------- Reset DAC init structure parameters values -----------------*/ + /* Initialize the DAC_Trigger member */ + DAC_InitStruct->DAC_Trigger = DAC_Trigger_None; + /* Initialize the DAC_WaveGeneration member */ + DAC_InitStruct->DAC_WaveGeneration = DAC_WaveGeneration_None; + /* Initialize the DAC_LFSRUnmask_TriangleAmplitude member */ + DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0; + /* Initialize the DAC_OutputBuffer member */ + DAC_InitStruct->DAC_OutputBuffer = DAC_OutputBuffer_Enable; +} + +/** + * @brief Enables or disables the specified DAC channel. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param NewState: new state of the DAC channel. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected DAC channel */ + DAC->CR |= (DAC_CR_EN1 << DAC_Channel); + } + else + { + /* Disable the selected DAC channel */ + DAC->CR &= ~(DAC_CR_EN1 << DAC_Channel); + } +} +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +/** + * @brief Enables or disables the specified DAC interrupts. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param DAC_IT: specifies the DAC interrupt sources to be enabled or disabled. + * This parameter can be the following values: + * @arg DAC_IT_DMAUDR: DMA underrun interrupt mask + * @param NewState: new state of the specified DAC interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + assert_param(IS_DAC_IT(DAC_IT)); + + if (NewState != DISABLE) + { + /* Enable the selected DAC interrupts */ + DAC->CR |= (DAC_IT << DAC_Channel); + } + else + { + /* Disable the selected DAC interrupts */ + DAC->CR &= (~(uint32_t)(DAC_IT << DAC_Channel)); + } +} +#endif + +/** + * @brief Enables or disables the specified DAC channel DMA request. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param NewState: new state of the selected DAC channel DMA request. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected DAC channel DMA request */ + DAC->CR |= (DAC_CR_DMAEN1 << DAC_Channel); + } + else + { + /* Disable the selected DAC channel DMA request */ + DAC->CR &= ~(DAC_CR_DMAEN1 << DAC_Channel); + } +} + +/** + * @brief Enables or disables the selected DAC channel software trigger. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param NewState: new state of the selected DAC channel software trigger. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable software trigger for the selected DAC channel */ + DAC->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1 << (DAC_Channel >> 4); + } + else + { + /* Disable software trigger for the selected DAC channel */ + DAC->SWTRIGR &= ~((uint32_t)DAC_SWTRIGR_SWTRIG1 << (DAC_Channel >> 4)); + } +} + +/** + * @brief Enables or disables simultaneously the two DAC channels software + * triggers. + * @param NewState: new state of the DAC channels software triggers. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DAC_DualSoftwareTriggerCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable software trigger for both DAC channels */ + DAC->SWTRIGR |= DUAL_SWTRIG_SET ; + } + else + { + /* Disable software trigger for both DAC channels */ + DAC->SWTRIGR &= DUAL_SWTRIG_RESET; + } +} + +/** + * @brief Enables or disables the selected DAC channel wave generation. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param DAC_Wave: Specifies the wave type to enable or disable. + * This parameter can be one of the following values: + * @arg DAC_Wave_Noise: noise wave generation + * @arg DAC_Wave_Triangle: triangle wave generation + * @param NewState: new state of the selected DAC channel wave generation. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_DAC_WAVE(DAC_Wave)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected wave generation for the selected DAC channel */ + DAC->CR |= DAC_Wave << DAC_Channel; + } + else + { + /* Disable the selected wave generation for the selected DAC channel */ + DAC->CR &= ~(DAC_Wave << DAC_Channel); + } +} + +/** + * @brief Set the specified data holding register value for DAC channel1. + * @param DAC_Align: Specifies the data alignment for DAC channel1. + * This parameter can be one of the following values: + * @arg DAC_Align_8b_R: 8bit right data alignment selected + * @arg DAC_Align_12b_L: 12bit left data alignment selected + * @arg DAC_Align_12b_R: 12bit right data alignment selected + * @param Data : Data to be loaded in the selected data holding register. + * @retval None + */ +void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_DAC_ALIGN(DAC_Align)); + assert_param(IS_DAC_DATA(Data)); + + tmp = (uint32_t)DAC_BASE; + tmp += DHR12R1_OFFSET + DAC_Align; + + /* Set the DAC channel1 selected data holding register */ + *(__IO uint32_t *) tmp = Data; +} + +/** + * @brief Set the specified data holding register value for DAC channel2. + * @param DAC_Align: Specifies the data alignment for DAC channel2. + * This parameter can be one of the following values: + * @arg DAC_Align_8b_R: 8bit right data alignment selected + * @arg DAC_Align_12b_L: 12bit left data alignment selected + * @arg DAC_Align_12b_R: 12bit right data alignment selected + * @param Data : Data to be loaded in the selected data holding register. + * @retval None + */ +void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_DAC_ALIGN(DAC_Align)); + assert_param(IS_DAC_DATA(Data)); + + tmp = (uint32_t)DAC_BASE; + tmp += DHR12R2_OFFSET + DAC_Align; + + /* Set the DAC channel2 selected data holding register */ + *(__IO uint32_t *)tmp = Data; +} + +/** + * @brief Set the specified data holding register value for dual channel + * DAC. + * @param DAC_Align: Specifies the data alignment for dual channel DAC. + * This parameter can be one of the following values: + * @arg DAC_Align_8b_R: 8bit right data alignment selected + * @arg DAC_Align_12b_L: 12bit left data alignment selected + * @arg DAC_Align_12b_R: 12bit right data alignment selected + * @param Data2: Data for DAC Channel2 to be loaded in the selected data + * holding register. + * @param Data1: Data for DAC Channel1 to be loaded in the selected data + * holding register. + * @retval None + */ +void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1) +{ + uint32_t data = 0, tmp = 0; + + /* Check the parameters */ + assert_param(IS_DAC_ALIGN(DAC_Align)); + assert_param(IS_DAC_DATA(Data1)); + assert_param(IS_DAC_DATA(Data2)); + + /* Calculate and set dual DAC data holding register value */ + if (DAC_Align == DAC_Align_8b_R) + { + data = ((uint32_t)Data2 << 8) | Data1; + } + else + { + data = ((uint32_t)Data2 << 16) | Data1; + } + + tmp = (uint32_t)DAC_BASE; + tmp += DHR12RD_OFFSET + DAC_Align; + + /* Set the dual DAC selected data holding register */ + *(__IO uint32_t *)tmp = data; +} + +/** + * @brief Returns the last data output value of the selected DAC channel. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @retval The selected DAC channel data output value. + */ +uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + + tmp = (uint32_t) DAC_BASE ; + tmp += DOR_OFFSET + ((uint32_t)DAC_Channel >> 2); + + /* Returns the DAC channel data output register value */ + return (uint16_t) (*(__IO uint32_t*) tmp); +} + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) +/** + * @brief Checks whether the specified DAC flag is set or not. + * @param DAC_Channel: thee selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param DAC_FLAG: specifies the flag to check. + * This parameter can be only of the following value: + * @arg DAC_FLAG_DMAUDR: DMA underrun flag + * @retval The new state of DAC_FLAG (SET or RESET). + */ +FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_DAC_FLAG(DAC_FLAG)); + + /* Check the status of the specified DAC flag */ + if ((DAC->SR & (DAC_FLAG << DAC_Channel)) != (uint8_t)RESET) + { + /* DAC_FLAG is set */ + bitstatus = SET; + } + else + { + /* DAC_FLAG is reset */ + bitstatus = RESET; + } + /* Return the DAC_FLAG status */ + return bitstatus; +} + +/** + * @brief Clears the DAC channelx's pending flags. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param DAC_FLAG: specifies the flag to clear. + * This parameter can be of the following value: + * @arg DAC_FLAG_DMAUDR: DMA underrun flag + * @retval None + */ +void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG) +{ + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_DAC_FLAG(DAC_FLAG)); + + /* Clear the selected DAC flags */ + DAC->SR = (DAC_FLAG << DAC_Channel); +} + +/** + * @brief Checks whether the specified DAC interrupt has occurred or not. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param DAC_IT: specifies the DAC interrupt source to check. + * This parameter can be the following values: + * @arg DAC_IT_DMAUDR: DMA underrun interrupt mask + * @retval The new state of DAC_IT (SET or RESET). + */ +ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT) +{ + ITStatus bitstatus = RESET; + uint32_t enablestatus = 0; + + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_DAC_IT(DAC_IT)); + + /* Get the DAC_IT enable bit status */ + enablestatus = (DAC->CR & (DAC_IT << DAC_Channel)) ; + + /* Check the status of the specified DAC interrupt */ + if (((DAC->SR & (DAC_IT << DAC_Channel)) != (uint32_t)RESET) && enablestatus) + { + /* DAC_IT is set */ + bitstatus = SET; + } + else + { + /* DAC_IT is reset */ + bitstatus = RESET; + } + /* Return the DAC_IT status */ + return bitstatus; +} + +/** + * @brief Clears the DAC channelx's interrupt pending bits. + * @param DAC_Channel: the selected DAC channel. + * This parameter can be one of the following values: + * @arg DAC_Channel_1: DAC Channel1 selected + * @arg DAC_Channel_2: DAC Channel2 selected + * @param DAC_IT: specifies the DAC interrupt pending bit to clear. + * This parameter can be the following values: + * @arg DAC_IT_DMAUDR: DMA underrun interrupt mask + * @retval None + */ +void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT) +{ + /* Check the parameters */ + assert_param(IS_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_DAC_IT(DAC_IT)); + + /* Clear the selected DAC interrupt pending bits */ + DAC->SR = (DAC_IT << DAC_Channel); +} +#endif + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c new file mode 100644 index 00000000..d34307b0 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c @@ -0,0 +1,162 @@ +/** + ****************************************************************************** + * @file stm32f10x_dbgmcu.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the DBGMCU firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_dbgmcu.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup DBGMCU + * @brief DBGMCU driver modules + * @{ + */ + +/** @defgroup DBGMCU_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup DBGMCU_Private_Defines + * @{ + */ + +#define IDCODE_DEVID_MASK ((uint32_t)0x00000FFF) +/** + * @} + */ + +/** @defgroup DBGMCU_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup DBGMCU_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup DBGMCU_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup DBGMCU_Private_Functions + * @{ + */ + +/** + * @brief Returns the device revision identifier. + * @param None + * @retval Device revision identifier + */ +uint32_t DBGMCU_GetREVID(void) +{ + return(DBGMCU->IDCODE >> 16); +} + +/** + * @brief Returns the device identifier. + * @param None + * @retval Device identifier + */ +uint32_t DBGMCU_GetDEVID(void) +{ + return(DBGMCU->IDCODE & IDCODE_DEVID_MASK); +} + +/** + * @brief Configures the specified peripheral and low power mode behavior + * when the MCU under Debug mode. + * @param DBGMCU_Periph: specifies the peripheral and low power mode. + * This parameter can be any combination of the following values: + * @arg DBGMCU_SLEEP: Keep debugger connection during SLEEP mode + * @arg DBGMCU_STOP: Keep debugger connection during STOP mode + * @arg DBGMCU_STANDBY: Keep debugger connection during STANDBY mode + * @arg DBGMCU_IWDG_STOP: Debug IWDG stopped when Core is halted + * @arg DBGMCU_WWDG_STOP: Debug WWDG stopped when Core is halted + * @arg DBGMCU_TIM1_STOP: TIM1 counter stopped when Core is halted + * @arg DBGMCU_TIM2_STOP: TIM2 counter stopped when Core is halted + * @arg DBGMCU_TIM3_STOP: TIM3 counter stopped when Core is halted + * @arg DBGMCU_TIM4_STOP: TIM4 counter stopped when Core is halted + * @arg DBGMCU_CAN1_STOP: Debug CAN2 stopped when Core is halted + * @arg DBGMCU_I2C1_SMBUS_TIMEOUT: I2C1 SMBUS timeout mode stopped when Core is halted + * @arg DBGMCU_I2C2_SMBUS_TIMEOUT: I2C2 SMBUS timeout mode stopped when Core is halted + * @arg DBGMCU_TIM5_STOP: TIM5 counter stopped when Core is halted + * @arg DBGMCU_TIM6_STOP: TIM6 counter stopped when Core is halted + * @arg DBGMCU_TIM7_STOP: TIM7 counter stopped when Core is halted + * @arg DBGMCU_TIM8_STOP: TIM8 counter stopped when Core is halted + * @arg DBGMCU_CAN2_STOP: Debug CAN2 stopped when Core is halted + * @arg DBGMCU_TIM15_STOP: TIM15 counter stopped when Core is halted + * @arg DBGMCU_TIM16_STOP: TIM16 counter stopped when Core is halted + * @arg DBGMCU_TIM17_STOP: TIM17 counter stopped when Core is halted + * @arg DBGMCU_TIM9_STOP: TIM9 counter stopped when Core is halted + * @arg DBGMCU_TIM10_STOP: TIM10 counter stopped when Core is halted + * @arg DBGMCU_TIM11_STOP: TIM11 counter stopped when Core is halted + * @arg DBGMCU_TIM12_STOP: TIM12 counter stopped when Core is halted + * @arg DBGMCU_TIM13_STOP: TIM13 counter stopped when Core is halted + * @arg DBGMCU_TIM14_STOP: TIM14 counter stopped when Core is halted + * @param NewState: new state of the specified peripheral in Debug mode. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_DBGMCU_PERIPH(DBGMCU_Periph)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + DBGMCU->CR |= DBGMCU_Periph; + } + else + { + DBGMCU->CR &= ~DBGMCU_Periph; + } +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c new file mode 100644 index 00000000..0c86f901 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c @@ -0,0 +1,714 @@ +/** + ****************************************************************************** + * @file stm32f10x_dma.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the DMA firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_dma.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup DMA + * @brief DMA driver modules + * @{ + */ + +/** @defgroup DMA_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + +/** @defgroup DMA_Private_Defines + * @{ + */ + + +/* DMA1 Channelx interrupt pending bit masks */ +#define DMA1_Channel1_IT_Mask ((uint32_t)(DMA_ISR_GIF1 | DMA_ISR_TCIF1 | DMA_ISR_HTIF1 | DMA_ISR_TEIF1)) +#define DMA1_Channel2_IT_Mask ((uint32_t)(DMA_ISR_GIF2 | DMA_ISR_TCIF2 | DMA_ISR_HTIF2 | DMA_ISR_TEIF2)) +#define DMA1_Channel3_IT_Mask ((uint32_t)(DMA_ISR_GIF3 | DMA_ISR_TCIF3 | DMA_ISR_HTIF3 | DMA_ISR_TEIF3)) +#define DMA1_Channel4_IT_Mask ((uint32_t)(DMA_ISR_GIF4 | DMA_ISR_TCIF4 | DMA_ISR_HTIF4 | DMA_ISR_TEIF4)) +#define DMA1_Channel5_IT_Mask ((uint32_t)(DMA_ISR_GIF5 | DMA_ISR_TCIF5 | DMA_ISR_HTIF5 | DMA_ISR_TEIF5)) +#define DMA1_Channel6_IT_Mask ((uint32_t)(DMA_ISR_GIF6 | DMA_ISR_TCIF6 | DMA_ISR_HTIF6 | DMA_ISR_TEIF6)) +#define DMA1_Channel7_IT_Mask ((uint32_t)(DMA_ISR_GIF7 | DMA_ISR_TCIF7 | DMA_ISR_HTIF7 | DMA_ISR_TEIF7)) + +/* DMA2 Channelx interrupt pending bit masks */ +#define DMA2_Channel1_IT_Mask ((uint32_t)(DMA_ISR_GIF1 | DMA_ISR_TCIF1 | DMA_ISR_HTIF1 | DMA_ISR_TEIF1)) +#define DMA2_Channel2_IT_Mask ((uint32_t)(DMA_ISR_GIF2 | DMA_ISR_TCIF2 | DMA_ISR_HTIF2 | DMA_ISR_TEIF2)) +#define DMA2_Channel3_IT_Mask ((uint32_t)(DMA_ISR_GIF3 | DMA_ISR_TCIF3 | DMA_ISR_HTIF3 | DMA_ISR_TEIF3)) +#define DMA2_Channel4_IT_Mask ((uint32_t)(DMA_ISR_GIF4 | DMA_ISR_TCIF4 | DMA_ISR_HTIF4 | DMA_ISR_TEIF4)) +#define DMA2_Channel5_IT_Mask ((uint32_t)(DMA_ISR_GIF5 | DMA_ISR_TCIF5 | DMA_ISR_HTIF5 | DMA_ISR_TEIF5)) + +/* DMA2 FLAG mask */ +#define FLAG_Mask ((uint32_t)0x10000000) + +/* DMA registers Masks */ +#define CCR_CLEAR_Mask ((uint32_t)0xFFFF800F) + +/** + * @} + */ + +/** @defgroup DMA_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup DMA_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup DMA_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup DMA_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the DMAy Channelx registers to their default reset + * values. + * @param DMAy_Channelx: where y can be 1 or 2 to select the DMA and + * x can be 1 to 7 for DMA1 and 1 to 5 for DMA2 to select the DMA Channel. + * @retval None + */ +void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx) +{ + /* Check the parameters */ + assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx)); + + /* Disable the selected DMAy Channelx */ + DMAy_Channelx->CCR &= (uint16_t)(~DMA_CCR1_EN); + + /* Reset DMAy Channelx control register */ + DMAy_Channelx->CCR = 0; + + /* Reset DMAy Channelx remaining bytes register */ + DMAy_Channelx->CNDTR = 0; + + /* Reset DMAy Channelx peripheral address register */ + DMAy_Channelx->CPAR = 0; + + /* Reset DMAy Channelx memory address register */ + DMAy_Channelx->CMAR = 0; + + if (DMAy_Channelx == DMA1_Channel1) + { + /* Reset interrupt pending bits for DMA1 Channel1 */ + DMA1->IFCR |= DMA1_Channel1_IT_Mask; + } + else if (DMAy_Channelx == DMA1_Channel2) + { + /* Reset interrupt pending bits for DMA1 Channel2 */ + DMA1->IFCR |= DMA1_Channel2_IT_Mask; + } + else if (DMAy_Channelx == DMA1_Channel3) + { + /* Reset interrupt pending bits for DMA1 Channel3 */ + DMA1->IFCR |= DMA1_Channel3_IT_Mask; + } + else if (DMAy_Channelx == DMA1_Channel4) + { + /* Reset interrupt pending bits for DMA1 Channel4 */ + DMA1->IFCR |= DMA1_Channel4_IT_Mask; + } + else if (DMAy_Channelx == DMA1_Channel5) + { + /* Reset interrupt pending bits for DMA1 Channel5 */ + DMA1->IFCR |= DMA1_Channel5_IT_Mask; + } + else if (DMAy_Channelx == DMA1_Channel6) + { + /* Reset interrupt pending bits for DMA1 Channel6 */ + DMA1->IFCR |= DMA1_Channel6_IT_Mask; + } + else if (DMAy_Channelx == DMA1_Channel7) + { + /* Reset interrupt pending bits for DMA1 Channel7 */ + DMA1->IFCR |= DMA1_Channel7_IT_Mask; + } + else if (DMAy_Channelx == DMA2_Channel1) + { + /* Reset interrupt pending bits for DMA2 Channel1 */ + DMA2->IFCR |= DMA2_Channel1_IT_Mask; + } + else if (DMAy_Channelx == DMA2_Channel2) + { + /* Reset interrupt pending bits for DMA2 Channel2 */ + DMA2->IFCR |= DMA2_Channel2_IT_Mask; + } + else if (DMAy_Channelx == DMA2_Channel3) + { + /* Reset interrupt pending bits for DMA2 Channel3 */ + DMA2->IFCR |= DMA2_Channel3_IT_Mask; + } + else if (DMAy_Channelx == DMA2_Channel4) + { + /* Reset interrupt pending bits for DMA2 Channel4 */ + DMA2->IFCR |= DMA2_Channel4_IT_Mask; + } + else + { + if (DMAy_Channelx == DMA2_Channel5) + { + /* Reset interrupt pending bits for DMA2 Channel5 */ + DMA2->IFCR |= DMA2_Channel5_IT_Mask; + } + } +} + +/** + * @brief Initializes the DMAy Channelx according to the specified + * parameters in the DMA_InitStruct. + * @param DMAy_Channelx: where y can be 1 or 2 to select the DMA and + * x can be 1 to 7 for DMA1 and 1 to 5 for DMA2 to select the DMA Channel. + * @param DMA_InitStruct: pointer to a DMA_InitTypeDef structure that + * contains the configuration information for the specified DMA Channel. + * @retval None + */ +void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx)); + assert_param(IS_DMA_DIR(DMA_InitStruct->DMA_DIR)); + assert_param(IS_DMA_BUFFER_SIZE(DMA_InitStruct->DMA_BufferSize)); + assert_param(IS_DMA_PERIPHERAL_INC_STATE(DMA_InitStruct->DMA_PeripheralInc)); + assert_param(IS_DMA_MEMORY_INC_STATE(DMA_InitStruct->DMA_MemoryInc)); + assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(DMA_InitStruct->DMA_PeripheralDataSize)); + assert_param(IS_DMA_MEMORY_DATA_SIZE(DMA_InitStruct->DMA_MemoryDataSize)); + assert_param(IS_DMA_MODE(DMA_InitStruct->DMA_Mode)); + assert_param(IS_DMA_PRIORITY(DMA_InitStruct->DMA_Priority)); + assert_param(IS_DMA_M2M_STATE(DMA_InitStruct->DMA_M2M)); + +/*--------------------------- DMAy Channelx CCR Configuration -----------------*/ + /* Get the DMAy_Channelx CCR value */ + tmpreg = DMAy_Channelx->CCR; + /* Clear MEM2MEM, PL, MSIZE, PSIZE, MINC, PINC, CIRC and DIR bits */ + tmpreg &= CCR_CLEAR_Mask; + /* Configure DMAy Channelx: data transfer, data size, priority level and mode */ + /* Set DIR bit according to DMA_DIR value */ + /* Set CIRC bit according to DMA_Mode value */ + /* Set PINC bit according to DMA_PeripheralInc value */ + /* Set MINC bit according to DMA_MemoryInc value */ + /* Set PSIZE bits according to DMA_PeripheralDataSize value */ + /* Set MSIZE bits according to DMA_MemoryDataSize value */ + /* Set PL bits according to DMA_Priority value */ + /* Set the MEM2MEM bit according to DMA_M2M value */ + tmpreg |= DMA_InitStruct->DMA_DIR | DMA_InitStruct->DMA_Mode | + DMA_InitStruct->DMA_PeripheralInc | DMA_InitStruct->DMA_MemoryInc | + DMA_InitStruct->DMA_PeripheralDataSize | DMA_InitStruct->DMA_MemoryDataSize | + DMA_InitStruct->DMA_Priority | DMA_InitStruct->DMA_M2M; + + /* Write to DMAy Channelx CCR */ + DMAy_Channelx->CCR = tmpreg; + +/*--------------------------- DMAy Channelx CNDTR Configuration ---------------*/ + /* Write to DMAy Channelx CNDTR */ + DMAy_Channelx->CNDTR = DMA_InitStruct->DMA_BufferSize; + +/*--------------------------- DMAy Channelx CPAR Configuration ----------------*/ + /* Write to DMAy Channelx CPAR */ + DMAy_Channelx->CPAR = DMA_InitStruct->DMA_PeripheralBaseAddr; + +/*--------------------------- DMAy Channelx CMAR Configuration ----------------*/ + /* Write to DMAy Channelx CMAR */ + DMAy_Channelx->CMAR = DMA_InitStruct->DMA_MemoryBaseAddr; +} + +/** + * @brief Fills each DMA_InitStruct member with its default value. + * @param DMA_InitStruct : pointer to a DMA_InitTypeDef structure which will + * be initialized. + * @retval None + */ +void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct) +{ +/*-------------- Reset DMA init structure parameters values ------------------*/ + /* Initialize the DMA_PeripheralBaseAddr member */ + DMA_InitStruct->DMA_PeripheralBaseAddr = 0; + /* Initialize the DMA_MemoryBaseAddr member */ + DMA_InitStruct->DMA_MemoryBaseAddr = 0; + /* Initialize the DMA_DIR member */ + DMA_InitStruct->DMA_DIR = DMA_DIR_PeripheralSRC; + /* Initialize the DMA_BufferSize member */ + DMA_InitStruct->DMA_BufferSize = 0; + /* Initialize the DMA_PeripheralInc member */ + DMA_InitStruct->DMA_PeripheralInc = DMA_PeripheralInc_Disable; + /* Initialize the DMA_MemoryInc member */ + DMA_InitStruct->DMA_MemoryInc = DMA_MemoryInc_Disable; + /* Initialize the DMA_PeripheralDataSize member */ + DMA_InitStruct->DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; + /* Initialize the DMA_MemoryDataSize member */ + DMA_InitStruct->DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; + /* Initialize the DMA_Mode member */ + DMA_InitStruct->DMA_Mode = DMA_Mode_Normal; + /* Initialize the DMA_Priority member */ + DMA_InitStruct->DMA_Priority = DMA_Priority_Low; + /* Initialize the DMA_M2M member */ + DMA_InitStruct->DMA_M2M = DMA_M2M_Disable; +} + +/** + * @brief Enables or disables the specified DMAy Channelx. + * @param DMAy_Channelx: where y can be 1 or 2 to select the DMA and + * x can be 1 to 7 for DMA1 and 1 to 5 for DMA2 to select the DMA Channel. + * @param NewState: new state of the DMAy Channelx. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the selected DMAy Channelx */ + DMAy_Channelx->CCR |= DMA_CCR1_EN; + } + else + { + /* Disable the selected DMAy Channelx */ + DMAy_Channelx->CCR &= (uint16_t)(~DMA_CCR1_EN); + } +} + +/** + * @brief Enables or disables the specified DMAy Channelx interrupts. + * @param DMAy_Channelx: where y can be 1 or 2 to select the DMA and + * x can be 1 to 7 for DMA1 and 1 to 5 for DMA2 to select the DMA Channel. + * @param DMA_IT: specifies the DMA interrupts sources to be enabled + * or disabled. + * This parameter can be any combination of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask + * @arg DMA_IT_HT: Half transfer interrupt mask + * @arg DMA_IT_TE: Transfer error interrupt mask + * @param NewState: new state of the specified DMA interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx)); + assert_param(IS_DMA_CONFIG_IT(DMA_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected DMA interrupts */ + DMAy_Channelx->CCR |= DMA_IT; + } + else + { + /* Disable the selected DMA interrupts */ + DMAy_Channelx->CCR &= ~DMA_IT; + } +} + +/** + * @brief Sets the number of data units in the current DMAy Channelx transfer. + * @param DMAy_Channelx: where y can be 1 or 2 to select the DMA and + * x can be 1 to 7 for DMA1 and 1 to 5 for DMA2 to select the DMA Channel. + * @param DataNumber: The number of data units in the current DMAy Channelx + * transfer. + * @note This function can only be used when the DMAy_Channelx is disabled. + * @retval None. + */ +void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber) +{ + /* Check the parameters */ + assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx)); + +/*--------------------------- DMAy Channelx CNDTR Configuration ---------------*/ + /* Write to DMAy Channelx CNDTR */ + DMAy_Channelx->CNDTR = DataNumber; +} + +/** + * @brief Returns the number of remaining data units in the current + * DMAy Channelx transfer. + * @param DMAy_Channelx: where y can be 1 or 2 to select the DMA and + * x can be 1 to 7 for DMA1 and 1 to 5 for DMA2 to select the DMA Channel. + * @retval The number of remaining data units in the current DMAy Channelx + * transfer. + */ +uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx) +{ + /* Check the parameters */ + assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx)); + /* Return the number of remaining data units for DMAy Channelx */ + return ((uint16_t)(DMAy_Channelx->CNDTR)); +} + +/** + * @brief Checks whether the specified DMAy Channelx flag is set or not. + * @param DMAy_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg DMA1_FLAG_GL1: DMA1 Channel1 global flag. + * @arg DMA1_FLAG_TC1: DMA1 Channel1 transfer complete flag. + * @arg DMA1_FLAG_HT1: DMA1 Channel1 half transfer flag. + * @arg DMA1_FLAG_TE1: DMA1 Channel1 transfer error flag. + * @arg DMA1_FLAG_GL2: DMA1 Channel2 global flag. + * @arg DMA1_FLAG_TC2: DMA1 Channel2 transfer complete flag. + * @arg DMA1_FLAG_HT2: DMA1 Channel2 half transfer flag. + * @arg DMA1_FLAG_TE2: DMA1 Channel2 transfer error flag. + * @arg DMA1_FLAG_GL3: DMA1 Channel3 global flag. + * @arg DMA1_FLAG_TC3: DMA1 Channel3 transfer complete flag. + * @arg DMA1_FLAG_HT3: DMA1 Channel3 half transfer flag. + * @arg DMA1_FLAG_TE3: DMA1 Channel3 transfer error flag. + * @arg DMA1_FLAG_GL4: DMA1 Channel4 global flag. + * @arg DMA1_FLAG_TC4: DMA1 Channel4 transfer complete flag. + * @arg DMA1_FLAG_HT4: DMA1 Channel4 half transfer flag. + * @arg DMA1_FLAG_TE4: DMA1 Channel4 transfer error flag. + * @arg DMA1_FLAG_GL5: DMA1 Channel5 global flag. + * @arg DMA1_FLAG_TC5: DMA1 Channel5 transfer complete flag. + * @arg DMA1_FLAG_HT5: DMA1 Channel5 half transfer flag. + * @arg DMA1_FLAG_TE5: DMA1 Channel5 transfer error flag. + * @arg DMA1_FLAG_GL6: DMA1 Channel6 global flag. + * @arg DMA1_FLAG_TC6: DMA1 Channel6 transfer complete flag. + * @arg DMA1_FLAG_HT6: DMA1 Channel6 half transfer flag. + * @arg DMA1_FLAG_TE6: DMA1 Channel6 transfer error flag. + * @arg DMA1_FLAG_GL7: DMA1 Channel7 global flag. + * @arg DMA1_FLAG_TC7: DMA1 Channel7 transfer complete flag. + * @arg DMA1_FLAG_HT7: DMA1 Channel7 half transfer flag. + * @arg DMA1_FLAG_TE7: DMA1 Channel7 transfer error flag. + * @arg DMA2_FLAG_GL1: DMA2 Channel1 global flag. + * @arg DMA2_FLAG_TC1: DMA2 Channel1 transfer complete flag. + * @arg DMA2_FLAG_HT1: DMA2 Channel1 half transfer flag. + * @arg DMA2_FLAG_TE1: DMA2 Channel1 transfer error flag. + * @arg DMA2_FLAG_GL2: DMA2 Channel2 global flag. + * @arg DMA2_FLAG_TC2: DMA2 Channel2 transfer complete flag. + * @arg DMA2_FLAG_HT2: DMA2 Channel2 half transfer flag. + * @arg DMA2_FLAG_TE2: DMA2 Channel2 transfer error flag. + * @arg DMA2_FLAG_GL3: DMA2 Channel3 global flag. + * @arg DMA2_FLAG_TC3: DMA2 Channel3 transfer complete flag. + * @arg DMA2_FLAG_HT3: DMA2 Channel3 half transfer flag. + * @arg DMA2_FLAG_TE3: DMA2 Channel3 transfer error flag. + * @arg DMA2_FLAG_GL4: DMA2 Channel4 global flag. + * @arg DMA2_FLAG_TC4: DMA2 Channel4 transfer complete flag. + * @arg DMA2_FLAG_HT4: DMA2 Channel4 half transfer flag. + * @arg DMA2_FLAG_TE4: DMA2 Channel4 transfer error flag. + * @arg DMA2_FLAG_GL5: DMA2 Channel5 global flag. + * @arg DMA2_FLAG_TC5: DMA2 Channel5 transfer complete flag. + * @arg DMA2_FLAG_HT5: DMA2 Channel5 half transfer flag. + * @arg DMA2_FLAG_TE5: DMA2 Channel5 transfer error flag. + * @retval The new state of DMAy_FLAG (SET or RESET). + */ +FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG) +{ + FlagStatus bitstatus = RESET; + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_DMA_GET_FLAG(DMAy_FLAG)); + + /* Calculate the used DMAy */ + if ((DMAy_FLAG & FLAG_Mask) != (uint32_t)RESET) + { + /* Get DMA2 ISR register value */ + tmpreg = DMA2->ISR ; + } + else + { + /* Get DMA1 ISR register value */ + tmpreg = DMA1->ISR ; + } + + /* Check the status of the specified DMAy flag */ + if ((tmpreg & DMAy_FLAG) != (uint32_t)RESET) + { + /* DMAy_FLAG is set */ + bitstatus = SET; + } + else + { + /* DMAy_FLAG is reset */ + bitstatus = RESET; + } + + /* Return the DMAy_FLAG status */ + return bitstatus; +} + +/** + * @brief Clears the DMAy Channelx's pending flags. + * @param DMAy_FLAG: specifies the flag to clear. + * This parameter can be any combination (for the same DMA) of the following values: + * @arg DMA1_FLAG_GL1: DMA1 Channel1 global flag. + * @arg DMA1_FLAG_TC1: DMA1 Channel1 transfer complete flag. + * @arg DMA1_FLAG_HT1: DMA1 Channel1 half transfer flag. + * @arg DMA1_FLAG_TE1: DMA1 Channel1 transfer error flag. + * @arg DMA1_FLAG_GL2: DMA1 Channel2 global flag. + * @arg DMA1_FLAG_TC2: DMA1 Channel2 transfer complete flag. + * @arg DMA1_FLAG_HT2: DMA1 Channel2 half transfer flag. + * @arg DMA1_FLAG_TE2: DMA1 Channel2 transfer error flag. + * @arg DMA1_FLAG_GL3: DMA1 Channel3 global flag. + * @arg DMA1_FLAG_TC3: DMA1 Channel3 transfer complete flag. + * @arg DMA1_FLAG_HT3: DMA1 Channel3 half transfer flag. + * @arg DMA1_FLAG_TE3: DMA1 Channel3 transfer error flag. + * @arg DMA1_FLAG_GL4: DMA1 Channel4 global flag. + * @arg DMA1_FLAG_TC4: DMA1 Channel4 transfer complete flag. + * @arg DMA1_FLAG_HT4: DMA1 Channel4 half transfer flag. + * @arg DMA1_FLAG_TE4: DMA1 Channel4 transfer error flag. + * @arg DMA1_FLAG_GL5: DMA1 Channel5 global flag. + * @arg DMA1_FLAG_TC5: DMA1 Channel5 transfer complete flag. + * @arg DMA1_FLAG_HT5: DMA1 Channel5 half transfer flag. + * @arg DMA1_FLAG_TE5: DMA1 Channel5 transfer error flag. + * @arg DMA1_FLAG_GL6: DMA1 Channel6 global flag. + * @arg DMA1_FLAG_TC6: DMA1 Channel6 transfer complete flag. + * @arg DMA1_FLAG_HT6: DMA1 Channel6 half transfer flag. + * @arg DMA1_FLAG_TE6: DMA1 Channel6 transfer error flag. + * @arg DMA1_FLAG_GL7: DMA1 Channel7 global flag. + * @arg DMA1_FLAG_TC7: DMA1 Channel7 transfer complete flag. + * @arg DMA1_FLAG_HT7: DMA1 Channel7 half transfer flag. + * @arg DMA1_FLAG_TE7: DMA1 Channel7 transfer error flag. + * @arg DMA2_FLAG_GL1: DMA2 Channel1 global flag. + * @arg DMA2_FLAG_TC1: DMA2 Channel1 transfer complete flag. + * @arg DMA2_FLAG_HT1: DMA2 Channel1 half transfer flag. + * @arg DMA2_FLAG_TE1: DMA2 Channel1 transfer error flag. + * @arg DMA2_FLAG_GL2: DMA2 Channel2 global flag. + * @arg DMA2_FLAG_TC2: DMA2 Channel2 transfer complete flag. + * @arg DMA2_FLAG_HT2: DMA2 Channel2 half transfer flag. + * @arg DMA2_FLAG_TE2: DMA2 Channel2 transfer error flag. + * @arg DMA2_FLAG_GL3: DMA2 Channel3 global flag. + * @arg DMA2_FLAG_TC3: DMA2 Channel3 transfer complete flag. + * @arg DMA2_FLAG_HT3: DMA2 Channel3 half transfer flag. + * @arg DMA2_FLAG_TE3: DMA2 Channel3 transfer error flag. + * @arg DMA2_FLAG_GL4: DMA2 Channel4 global flag. + * @arg DMA2_FLAG_TC4: DMA2 Channel4 transfer complete flag. + * @arg DMA2_FLAG_HT4: DMA2 Channel4 half transfer flag. + * @arg DMA2_FLAG_TE4: DMA2 Channel4 transfer error flag. + * @arg DMA2_FLAG_GL5: DMA2 Channel5 global flag. + * @arg DMA2_FLAG_TC5: DMA2 Channel5 transfer complete flag. + * @arg DMA2_FLAG_HT5: DMA2 Channel5 half transfer flag. + * @arg DMA2_FLAG_TE5: DMA2 Channel5 transfer error flag. + * @retval None + */ +void DMA_ClearFlag(uint32_t DMAy_FLAG) +{ + /* Check the parameters */ + assert_param(IS_DMA_CLEAR_FLAG(DMAy_FLAG)); + + /* Calculate the used DMAy */ + if ((DMAy_FLAG & FLAG_Mask) != (uint32_t)RESET) + { + /* Clear the selected DMAy flags */ + DMA2->IFCR = DMAy_FLAG; + } + else + { + /* Clear the selected DMAy flags */ + DMA1->IFCR = DMAy_FLAG; + } +} + +/** + * @brief Checks whether the specified DMAy Channelx interrupt has occurred or not. + * @param DMAy_IT: specifies the DMAy interrupt source to check. + * This parameter can be one of the following values: + * @arg DMA1_IT_GL1: DMA1 Channel1 global interrupt. + * @arg DMA1_IT_TC1: DMA1 Channel1 transfer complete interrupt. + * @arg DMA1_IT_HT1: DMA1 Channel1 half transfer interrupt. + * @arg DMA1_IT_TE1: DMA1 Channel1 transfer error interrupt. + * @arg DMA1_IT_GL2: DMA1 Channel2 global interrupt. + * @arg DMA1_IT_TC2: DMA1 Channel2 transfer complete interrupt. + * @arg DMA1_IT_HT2: DMA1 Channel2 half transfer interrupt. + * @arg DMA1_IT_TE2: DMA1 Channel2 transfer error interrupt. + * @arg DMA1_IT_GL3: DMA1 Channel3 global interrupt. + * @arg DMA1_IT_TC3: DMA1 Channel3 transfer complete interrupt. + * @arg DMA1_IT_HT3: DMA1 Channel3 half transfer interrupt. + * @arg DMA1_IT_TE3: DMA1 Channel3 transfer error interrupt. + * @arg DMA1_IT_GL4: DMA1 Channel4 global interrupt. + * @arg DMA1_IT_TC4: DMA1 Channel4 transfer complete interrupt. + * @arg DMA1_IT_HT4: DMA1 Channel4 half transfer interrupt. + * @arg DMA1_IT_TE4: DMA1 Channel4 transfer error interrupt. + * @arg DMA1_IT_GL5: DMA1 Channel5 global interrupt. + * @arg DMA1_IT_TC5: DMA1 Channel5 transfer complete interrupt. + * @arg DMA1_IT_HT5: DMA1 Channel5 half transfer interrupt. + * @arg DMA1_IT_TE5: DMA1 Channel5 transfer error interrupt. + * @arg DMA1_IT_GL6: DMA1 Channel6 global interrupt. + * @arg DMA1_IT_TC6: DMA1 Channel6 transfer complete interrupt. + * @arg DMA1_IT_HT6: DMA1 Channel6 half transfer interrupt. + * @arg DMA1_IT_TE6: DMA1 Channel6 transfer error interrupt. + * @arg DMA1_IT_GL7: DMA1 Channel7 global interrupt. + * @arg DMA1_IT_TC7: DMA1 Channel7 transfer complete interrupt. + * @arg DMA1_IT_HT7: DMA1 Channel7 half transfer interrupt. + * @arg DMA1_IT_TE7: DMA1 Channel7 transfer error interrupt. + * @arg DMA2_IT_GL1: DMA2 Channel1 global interrupt. + * @arg DMA2_IT_TC1: DMA2 Channel1 transfer complete interrupt. + * @arg DMA2_IT_HT1: DMA2 Channel1 half transfer interrupt. + * @arg DMA2_IT_TE1: DMA2 Channel1 transfer error interrupt. + * @arg DMA2_IT_GL2: DMA2 Channel2 global interrupt. + * @arg DMA2_IT_TC2: DMA2 Channel2 transfer complete interrupt. + * @arg DMA2_IT_HT2: DMA2 Channel2 half transfer interrupt. + * @arg DMA2_IT_TE2: DMA2 Channel2 transfer error interrupt. + * @arg DMA2_IT_GL3: DMA2 Channel3 global interrupt. + * @arg DMA2_IT_TC3: DMA2 Channel3 transfer complete interrupt. + * @arg DMA2_IT_HT3: DMA2 Channel3 half transfer interrupt. + * @arg DMA2_IT_TE3: DMA2 Channel3 transfer error interrupt. + * @arg DMA2_IT_GL4: DMA2 Channel4 global interrupt. + * @arg DMA2_IT_TC4: DMA2 Channel4 transfer complete interrupt. + * @arg DMA2_IT_HT4: DMA2 Channel4 half transfer interrupt. + * @arg DMA2_IT_TE4: DMA2 Channel4 transfer error interrupt. + * @arg DMA2_IT_GL5: DMA2 Channel5 global interrupt. + * @arg DMA2_IT_TC5: DMA2 Channel5 transfer complete interrupt. + * @arg DMA2_IT_HT5: DMA2 Channel5 half transfer interrupt. + * @arg DMA2_IT_TE5: DMA2 Channel5 transfer error interrupt. + * @retval The new state of DMAy_IT (SET or RESET). + */ +ITStatus DMA_GetITStatus(uint32_t DMAy_IT) +{ + ITStatus bitstatus = RESET; + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_DMA_GET_IT(DMAy_IT)); + + /* Calculate the used DMA */ + if ((DMAy_IT & FLAG_Mask) != (uint32_t)RESET) + { + /* Get DMA2 ISR register value */ + tmpreg = DMA2->ISR; + } + else + { + /* Get DMA1 ISR register value */ + tmpreg = DMA1->ISR; + } + + /* Check the status of the specified DMAy interrupt */ + if ((tmpreg & DMAy_IT) != (uint32_t)RESET) + { + /* DMAy_IT is set */ + bitstatus = SET; + } + else + { + /* DMAy_IT is reset */ + bitstatus = RESET; + } + /* Return the DMA_IT status */ + return bitstatus; +} + +/** + * @brief Clears the DMAy Channelx's interrupt pending bits. + * @param DMAy_IT: specifies the DMAy interrupt pending bit to clear. + * This parameter can be any combination (for the same DMA) of the following values: + * @arg DMA1_IT_GL1: DMA1 Channel1 global interrupt. + * @arg DMA1_IT_TC1: DMA1 Channel1 transfer complete interrupt. + * @arg DMA1_IT_HT1: DMA1 Channel1 half transfer interrupt. + * @arg DMA1_IT_TE1: DMA1 Channel1 transfer error interrupt. + * @arg DMA1_IT_GL2: DMA1 Channel2 global interrupt. + * @arg DMA1_IT_TC2: DMA1 Channel2 transfer complete interrupt. + * @arg DMA1_IT_HT2: DMA1 Channel2 half transfer interrupt. + * @arg DMA1_IT_TE2: DMA1 Channel2 transfer error interrupt. + * @arg DMA1_IT_GL3: DMA1 Channel3 global interrupt. + * @arg DMA1_IT_TC3: DMA1 Channel3 transfer complete interrupt. + * @arg DMA1_IT_HT3: DMA1 Channel3 half transfer interrupt. + * @arg DMA1_IT_TE3: DMA1 Channel3 transfer error interrupt. + * @arg DMA1_IT_GL4: DMA1 Channel4 global interrupt. + * @arg DMA1_IT_TC4: DMA1 Channel4 transfer complete interrupt. + * @arg DMA1_IT_HT4: DMA1 Channel4 half transfer interrupt. + * @arg DMA1_IT_TE4: DMA1 Channel4 transfer error interrupt. + * @arg DMA1_IT_GL5: DMA1 Channel5 global interrupt. + * @arg DMA1_IT_TC5: DMA1 Channel5 transfer complete interrupt. + * @arg DMA1_IT_HT5: DMA1 Channel5 half transfer interrupt. + * @arg DMA1_IT_TE5: DMA1 Channel5 transfer error interrupt. + * @arg DMA1_IT_GL6: DMA1 Channel6 global interrupt. + * @arg DMA1_IT_TC6: DMA1 Channel6 transfer complete interrupt. + * @arg DMA1_IT_HT6: DMA1 Channel6 half transfer interrupt. + * @arg DMA1_IT_TE6: DMA1 Channel6 transfer error interrupt. + * @arg DMA1_IT_GL7: DMA1 Channel7 global interrupt. + * @arg DMA1_IT_TC7: DMA1 Channel7 transfer complete interrupt. + * @arg DMA1_IT_HT7: DMA1 Channel7 half transfer interrupt. + * @arg DMA1_IT_TE7: DMA1 Channel7 transfer error interrupt. + * @arg DMA2_IT_GL1: DMA2 Channel1 global interrupt. + * @arg DMA2_IT_TC1: DMA2 Channel1 transfer complete interrupt. + * @arg DMA2_IT_HT1: DMA2 Channel1 half transfer interrupt. + * @arg DMA2_IT_TE1: DMA2 Channel1 transfer error interrupt. + * @arg DMA2_IT_GL2: DMA2 Channel2 global interrupt. + * @arg DMA2_IT_TC2: DMA2 Channel2 transfer complete interrupt. + * @arg DMA2_IT_HT2: DMA2 Channel2 half transfer interrupt. + * @arg DMA2_IT_TE2: DMA2 Channel2 transfer error interrupt. + * @arg DMA2_IT_GL3: DMA2 Channel3 global interrupt. + * @arg DMA2_IT_TC3: DMA2 Channel3 transfer complete interrupt. + * @arg DMA2_IT_HT3: DMA2 Channel3 half transfer interrupt. + * @arg DMA2_IT_TE3: DMA2 Channel3 transfer error interrupt. + * @arg DMA2_IT_GL4: DMA2 Channel4 global interrupt. + * @arg DMA2_IT_TC4: DMA2 Channel4 transfer complete interrupt. + * @arg DMA2_IT_HT4: DMA2 Channel4 half transfer interrupt. + * @arg DMA2_IT_TE4: DMA2 Channel4 transfer error interrupt. + * @arg DMA2_IT_GL5: DMA2 Channel5 global interrupt. + * @arg DMA2_IT_TC5: DMA2 Channel5 transfer complete interrupt. + * @arg DMA2_IT_HT5: DMA2 Channel5 half transfer interrupt. + * @arg DMA2_IT_TE5: DMA2 Channel5 transfer error interrupt. + * @retval None + */ +void DMA_ClearITPendingBit(uint32_t DMAy_IT) +{ + /* Check the parameters */ + assert_param(IS_DMA_CLEAR_IT(DMAy_IT)); + + /* Calculate the used DMAy */ + if ((DMAy_IT & FLAG_Mask) != (uint32_t)RESET) + { + /* Clear the selected DMAy interrupt pending bits */ + DMA2->IFCR = DMAy_IT; + } + else + { + /* Clear the selected DMAy interrupt pending bits */ + DMA1->IFCR = DMAy_IT; + } +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c new file mode 100644 index 00000000..ab734627 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c @@ -0,0 +1,269 @@ +/** + ****************************************************************************** + * @file stm32f10x_exti.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the EXTI firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_exti.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup EXTI + * @brief EXTI driver modules + * @{ + */ + +/** @defgroup EXTI_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup EXTI_Private_Defines + * @{ + */ + +#define EXTI_LINENONE ((uint32_t)0x00000) /* No interrupt selected */ + +/** + * @} + */ + +/** @defgroup EXTI_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup EXTI_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup EXTI_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup EXTI_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the EXTI peripheral registers to their default reset values. + * @param None + * @retval None + */ +void EXTI_DeInit(void) +{ + EXTI->IMR = 0x00000000; + EXTI->EMR = 0x00000000; + EXTI->RTSR = 0x00000000; + EXTI->FTSR = 0x00000000; + EXTI->PR = 0x000FFFFF; +} + +/** + * @brief Initializes the EXTI peripheral according to the specified + * parameters in the EXTI_InitStruct. + * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure + * that contains the configuration information for the EXTI peripheral. + * @retval None + */ +void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct) +{ + uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode)); + assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger)); + assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line)); + assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd)); + + tmp = (uint32_t)EXTI_BASE; + + if (EXTI_InitStruct->EXTI_LineCmd != DISABLE) + { + /* Clear EXTI line configuration */ + EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line; + EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line; + + tmp += EXTI_InitStruct->EXTI_Mode; + + *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line; + + /* Clear Rising Falling edge configuration */ + EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line; + EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line; + + /* Select the trigger for the selected external interrupts */ + if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling) + { + /* Rising Falling edge */ + EXTI->RTSR |= EXTI_InitStruct->EXTI_Line; + EXTI->FTSR |= EXTI_InitStruct->EXTI_Line; + } + else + { + tmp = (uint32_t)EXTI_BASE; + tmp += EXTI_InitStruct->EXTI_Trigger; + + *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line; + } + } + else + { + tmp += EXTI_InitStruct->EXTI_Mode; + + /* Disable the selected external lines */ + *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line; + } +} + +/** + * @brief Fills each EXTI_InitStruct member with its reset value. + * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure which will + * be initialized. + * @retval None + */ +void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct) +{ + EXTI_InitStruct->EXTI_Line = EXTI_LINENONE; + EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling; + EXTI_InitStruct->EXTI_LineCmd = DISABLE; +} + +/** + * @brief Generates a Software interrupt. + * @param EXTI_Line: specifies the EXTI lines to be enabled or disabled. + * This parameter can be any combination of EXTI_Linex where x can be (0..19). + * @retval None + */ +void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line) +{ + /* Check the parameters */ + assert_param(IS_EXTI_LINE(EXTI_Line)); + + EXTI->SWIER |= EXTI_Line; +} + +/** + * @brief Checks whether the specified EXTI line flag is set or not. + * @param EXTI_Line: specifies the EXTI line flag to check. + * This parameter can be: + * @arg EXTI_Linex: External interrupt line x where x(0..19) + * @retval The new state of EXTI_Line (SET or RESET). + */ +FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_GET_EXTI_LINE(EXTI_Line)); + + if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the EXTI's line pending flags. + * @param EXTI_Line: specifies the EXTI lines flags to clear. + * This parameter can be any combination of EXTI_Linex where x can be (0..19). + * @retval None + */ +void EXTI_ClearFlag(uint32_t EXTI_Line) +{ + /* Check the parameters */ + assert_param(IS_EXTI_LINE(EXTI_Line)); + + EXTI->PR = EXTI_Line; +} + +/** + * @brief Checks whether the specified EXTI line is asserted or not. + * @param EXTI_Line: specifies the EXTI line to check. + * This parameter can be: + * @arg EXTI_Linex: External interrupt line x where x(0..19) + * @retval The new state of EXTI_Line (SET or RESET). + */ +ITStatus EXTI_GetITStatus(uint32_t EXTI_Line) +{ + ITStatus bitstatus = RESET; + uint32_t enablestatus = 0; + /* Check the parameters */ + assert_param(IS_GET_EXTI_LINE(EXTI_Line)); + + enablestatus = EXTI->IMR & EXTI_Line; + if (((EXTI->PR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the EXTI's line pending bits. + * @param EXTI_Line: specifies the EXTI lines to clear. + * This parameter can be any combination of EXTI_Linex where x can be (0..19). + * @retval None + */ +void EXTI_ClearITPendingBit(uint32_t EXTI_Line) +{ + /* Check the parameters */ + assert_param(IS_EXTI_LINE(EXTI_Line)); + + EXTI->PR = EXTI_Line; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c new file mode 100644 index 00000000..f6c7bf17 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c @@ -0,0 +1,1684 @@ +/** + ****************************************************************************** + * @file stm32f10x_flash.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the FLASH firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_flash.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup FLASH + * @brief FLASH driver modules + * @{ + */ + +/** @defgroup FLASH_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup FLASH_Private_Defines + * @{ + */ + +/* Flash Access Control Register bits */ +#define ACR_LATENCY_Mask ((uint32_t)0x00000038) +#define ACR_HLFCYA_Mask ((uint32_t)0xFFFFFFF7) +#define ACR_PRFTBE_Mask ((uint32_t)0xFFFFFFEF) + +/* Flash Access Control Register bits */ +#define ACR_PRFTBS_Mask ((uint32_t)0x00000020) + +/* Flash Control Register bits */ +#define CR_PG_Set ((uint32_t)0x00000001) +#define CR_PG_Reset ((uint32_t)0x00001FFE) +#define CR_PER_Set ((uint32_t)0x00000002) +#define CR_PER_Reset ((uint32_t)0x00001FFD) +#define CR_MER_Set ((uint32_t)0x00000004) +#define CR_MER_Reset ((uint32_t)0x00001FFB) +#define CR_OPTPG_Set ((uint32_t)0x00000010) +#define CR_OPTPG_Reset ((uint32_t)0x00001FEF) +#define CR_OPTER_Set ((uint32_t)0x00000020) +#define CR_OPTER_Reset ((uint32_t)0x00001FDF) +#define CR_STRT_Set ((uint32_t)0x00000040) +#define CR_LOCK_Set ((uint32_t)0x00000080) + +/* FLASH Mask */ +#define RDPRT_Mask ((uint32_t)0x00000002) +#define WRP0_Mask ((uint32_t)0x000000FF) +#define WRP1_Mask ((uint32_t)0x0000FF00) +#define WRP2_Mask ((uint32_t)0x00FF0000) +#define WRP3_Mask ((uint32_t)0xFF000000) +#define OB_USER_BFB2 ((uint16_t)0x0008) + +/* FLASH Keys */ +#define RDP_Key ((uint16_t)0x00A5) +#define FLASH_KEY1 ((uint32_t)0x45670123) +#define FLASH_KEY2 ((uint32_t)0xCDEF89AB) + +/* FLASH BANK address */ +#define FLASH_BANK1_END_ADDRESS ((uint32_t)0x807FFFF) + +/* Delay definition */ +#define EraseTimeout ((uint32_t)0x000B0000) +#define ProgramTimeout ((uint32_t)0x00002000) +/** + * @} + */ + +/** @defgroup FLASH_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup FLASH_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup FLASH_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup FLASH_Private_Functions + * @{ + */ + +/** +@code + + This driver provides functions to configure and program the Flash memory of all STM32F10x devices, + including the latest STM32F10x_XL density devices. + + STM32F10x_XL devices feature up to 1 Mbyte with dual bank architecture for read-while-write (RWW) capability: + - bank1: fixed size of 512 Kbytes (256 pages of 2Kbytes each) + - bank2: up to 512 Kbytes (up to 256 pages of 2Kbytes each) + While other STM32F10x devices features only one bank with memory up to 512 Kbytes. + + In version V3.3.0, some functions were updated and new ones were added to support + STM32F10x_XL devices. Thus some functions manages all devices, while other are + dedicated for XL devices only. + + The table below presents the list of available functions depending on the used STM32F10x devices. + + *************************************************** + * Legacy functions used for all STM32F10x devices * + *************************************************** + +----------------------------------------------------------------------------------------------------------------------------------+ + | Functions prototypes |STM32F10x_XL|Other STM32F10x| Comments | + | | devices | devices | | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_SetLatency | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_HalfCycleAccessCmd | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_PrefetchBufferCmd | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_Unlock | Yes | Yes | - For STM32F10X_XL devices: unlock Bank1 and Bank2. | + | | | | - For other devices: unlock Bank1 and it is equivalent | + | | | | to FLASH_UnlockBank1 function. | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_Lock | Yes | Yes | - For STM32F10X_XL devices: lock Bank1 and Bank2. | + | | | | - For other devices: lock Bank1 and it is equivalent | + | | | | to FLASH_LockBank1 function. | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_ErasePage | Yes | Yes | - For STM32F10x_XL devices: erase a page in Bank1 and Bank2 | + | | | | - For other devices: erase a page in Bank1 | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_EraseAllPages | Yes | Yes | - For STM32F10x_XL devices: erase all pages in Bank1 and Bank2 | + | | | | - For other devices: erase all pages in Bank1 | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_EraseOptionBytes | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_ProgramWord | Yes | Yes | Updated to program up to 1MByte (depending on the used device) | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_ProgramHalfWord | Yes | Yes | Updated to program up to 1MByte (depending on the used device) | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_ProgramOptionByteData | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_EnableWriteProtection | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_ReadOutProtection | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_UserOptionByteConfig | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_GetUserOptionByte | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_GetWriteProtectionOptionByte | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_GetReadOutProtectionStatus | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_GetPrefetchBufferStatus | Yes | Yes | No change | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_ITConfig | Yes | Yes | - For STM32F10x_XL devices: enable Bank1 and Bank2's interrupts| + | | | | - For other devices: enable Bank1's interrupts | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_GetFlagStatus | Yes | Yes | - For STM32F10x_XL devices: return Bank1 and Bank2's flag status| + | | | | - For other devices: return Bank1's flag status | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_ClearFlag | Yes | Yes | - For STM32F10x_XL devices: clear Bank1 and Bank2's flag | + | | | | - For other devices: clear Bank1's flag | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_GetStatus | Yes | Yes | - Return the status of Bank1 (for all devices) | + | | | | equivalent to FLASH_GetBank1Status function | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_WaitForLastOperation | Yes | Yes | - Wait for Bank1 last operation (for all devices) | + | | | | equivalent to: FLASH_WaitForLastBank1Operation function | + +----------------------------------------------------------------------------------------------------------------------------------+ + + ************************************************************************************************************************ + * New functions used for all STM32F10x devices to manage Bank1: * + * - These functions are mainly useful for STM32F10x_XL density devices, to have separate control for Bank1 and bank2 * + * - For other devices, these functions are optional (covered by functions listed above) * + ************************************************************************************************************************ + +----------------------------------------------------------------------------------------------------------------------------------+ + | Functions prototypes |STM32F10x_XL|Other STM32F10x| Comments | + | | devices | devices | | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_UnlockBank1 | Yes | Yes | - Unlock Bank1 | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_LockBank1 | Yes | Yes | - Lock Bank1 | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_EraseAllBank1Pages | Yes | Yes | - Erase all pages in Bank1 | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_GetBank1Status | Yes | Yes | - Return the status of Bank1 | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_WaitForLastBank1Operation | Yes | Yes | - Wait for Bank1 last operation | + +----------------------------------------------------------------------------------------------------------------------------------+ + + ***************************************************************************** + * New Functions used only with STM32F10x_XL density devices to manage Bank2 * + ***************************************************************************** + +----------------------------------------------------------------------------------------------------------------------------------+ + | Functions prototypes |STM32F10x_XL|Other STM32F10x| Comments | + | | devices | devices | | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_UnlockBank2 | Yes | No | - Unlock Bank2 | + |----------------------------------------------------------------------------------------------------------------------------------| + |FLASH_LockBank2 | Yes | No | - Lock Bank2 | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_EraseAllBank2Pages | Yes | No | - Erase all pages in Bank2 | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_GetBank2Status | Yes | No | - Return the status of Bank2 | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_WaitForLastBank2Operation | Yes | No | - Wait for Bank2 last operation | + |----------------------------------------------------------------------------------------------------------------------------------| + | FLASH_BootConfig | Yes | No | - Configure to boot from Bank1 or Bank2 | + +----------------------------------------------------------------------------------------------------------------------------------+ +@endcode +*/ + + +/** + * @brief Sets the code latency value. + * @note This function can be used for all STM32F10x devices. + * @param FLASH_Latency: specifies the FLASH Latency value. + * This parameter can be one of the following values: + * @arg FLASH_Latency_0: FLASH Zero Latency cycle + * @arg FLASH_Latency_1: FLASH One Latency cycle + * @arg FLASH_Latency_2: FLASH Two Latency cycles + * @retval None + */ +void FLASH_SetLatency(uint32_t FLASH_Latency) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_FLASH_LATENCY(FLASH_Latency)); + + /* Read the ACR register */ + tmpreg = FLASH->ACR; + + /* Sets the Latency value */ + tmpreg &= ACR_LATENCY_Mask; + tmpreg |= FLASH_Latency; + + /* Write the ACR register */ + FLASH->ACR = tmpreg; +} + +/** + * @brief Enables or disables the Half cycle flash access. + * @note This function can be used for all STM32F10x devices. + * @param FLASH_HalfCycleAccess: specifies the FLASH Half cycle Access mode. + * This parameter can be one of the following values: + * @arg FLASH_HalfCycleAccess_Enable: FLASH Half Cycle Enable + * @arg FLASH_HalfCycleAccess_Disable: FLASH Half Cycle Disable + * @retval None + */ +void FLASH_HalfCycleAccessCmd(uint32_t FLASH_HalfCycleAccess) +{ + /* Check the parameters */ + assert_param(IS_FLASH_HALFCYCLEACCESS_STATE(FLASH_HalfCycleAccess)); + + /* Enable or disable the Half cycle access */ + FLASH->ACR &= ACR_HLFCYA_Mask; + FLASH->ACR |= FLASH_HalfCycleAccess; +} + +/** + * @brief Enables or disables the Prefetch Buffer. + * @note This function can be used for all STM32F10x devices. + * @param FLASH_PrefetchBuffer: specifies the Prefetch buffer status. + * This parameter can be one of the following values: + * @arg FLASH_PrefetchBuffer_Enable: FLASH Prefetch Buffer Enable + * @arg FLASH_PrefetchBuffer_Disable: FLASH Prefetch Buffer Disable + * @retval None + */ +void FLASH_PrefetchBufferCmd(uint32_t FLASH_PrefetchBuffer) +{ + /* Check the parameters */ + assert_param(IS_FLASH_PREFETCHBUFFER_STATE(FLASH_PrefetchBuffer)); + + /* Enable or disable the Prefetch Buffer */ + FLASH->ACR &= ACR_PRFTBE_Mask; + FLASH->ACR |= FLASH_PrefetchBuffer; +} + +/** + * @brief Unlocks the FLASH Program Erase Controller. + * @note This function can be used for all STM32F10x devices. + * - For STM32F10X_XL devices this function unlocks Bank1 and Bank2. + * - For all other devices it unlocks Bank1 and it is equivalent + * to FLASH_UnlockBank1 function.. + * @param None + * @retval None + */ +void FLASH_Unlock(void) +{ + /* Authorize the FPEC of Bank1 Access */ + FLASH->KEYR = FLASH_KEY1; + FLASH->KEYR = FLASH_KEY2; + +#ifdef STM32F10X_XL + /* Authorize the FPEC of Bank2 Access */ + FLASH->KEYR2 = FLASH_KEY1; + FLASH->KEYR2 = FLASH_KEY2; +#endif /* STM32F10X_XL */ +} +/** + * @brief Unlocks the FLASH Bank1 Program Erase Controller. + * @note This function can be used for all STM32F10x devices. + * - For STM32F10X_XL devices this function unlocks Bank1. + * - For all other devices it unlocks Bank1 and it is + * equivalent to FLASH_Unlock function. + * @param None + * @retval None + */ +void FLASH_UnlockBank1(void) +{ + /* Authorize the FPEC of Bank1 Access */ + FLASH->KEYR = FLASH_KEY1; + FLASH->KEYR = FLASH_KEY2; +} + +#ifdef STM32F10X_XL +/** + * @brief Unlocks the FLASH Bank2 Program Erase Controller. + * @note This function can be used only for STM32F10X_XL density devices. + * @param None + * @retval None + */ +void FLASH_UnlockBank2(void) +{ + /* Authorize the FPEC of Bank2 Access */ + FLASH->KEYR2 = FLASH_KEY1; + FLASH->KEYR2 = FLASH_KEY2; + +} +#endif /* STM32F10X_XL */ + +/** + * @brief Locks the FLASH Program Erase Controller. + * @note This function can be used for all STM32F10x devices. + * - For STM32F10X_XL devices this function Locks Bank1 and Bank2. + * - For all other devices it Locks Bank1 and it is equivalent + * to FLASH_LockBank1 function. + * @param None + * @retval None + */ +void FLASH_Lock(void) +{ + /* Set the Lock Bit to lock the FPEC and the CR of Bank1 */ + FLASH->CR |= CR_LOCK_Set; + +#ifdef STM32F10X_XL + /* Set the Lock Bit to lock the FPEC and the CR of Bank2 */ + FLASH->CR2 |= CR_LOCK_Set; +#endif /* STM32F10X_XL */ +} + +/** + * @brief Locks the FLASH Bank1 Program Erase Controller. + * @note this function can be used for all STM32F10x devices. + * - For STM32F10X_XL devices this function Locks Bank1. + * - For all other devices it Locks Bank1 and it is equivalent + * to FLASH_Lock function. + * @param None + * @retval None + */ +void FLASH_LockBank1(void) +{ + /* Set the Lock Bit to lock the FPEC and the CR of Bank1 */ + FLASH->CR |= CR_LOCK_Set; +} + +#ifdef STM32F10X_XL +/** + * @brief Locks the FLASH Bank2 Program Erase Controller. + * @note This function can be used only for STM32F10X_XL density devices. + * @param None + * @retval None + */ +void FLASH_LockBank2(void) +{ + /* Set the Lock Bit to lock the FPEC and the CR of Bank2 */ + FLASH->CR2 |= CR_LOCK_Set; +} +#endif /* STM32F10X_XL */ + +/** + * @brief Erases a specified FLASH page. + * @note This function can be used for all STM32F10x devices. + * @param Page_Address: The page address to be erased. + * @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ErasePage(uint32_t Page_Address) +{ + FLASH_Status status = FLASH_COMPLETE; + /* Check the parameters */ + assert_param(IS_FLASH_ADDRESS(Page_Address)); + +#ifdef STM32F10X_XL + if(Page_Address < FLASH_BANK1_END_ADDRESS) + { + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to erase the page */ + FLASH->CR|= CR_PER_Set; + FLASH->AR = Page_Address; + FLASH->CR|= CR_STRT_Set; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(EraseTimeout); + + /* Disable the PER Bit */ + FLASH->CR &= CR_PER_Reset; + } + } + else + { + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to erase the page */ + FLASH->CR2|= CR_PER_Set; + FLASH->AR2 = Page_Address; + FLASH->CR2|= CR_STRT_Set; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(EraseTimeout); + + /* Disable the PER Bit */ + FLASH->CR2 &= CR_PER_Reset; + } + } +#else + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(EraseTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to erase the page */ + FLASH->CR|= CR_PER_Set; + FLASH->AR = Page_Address; + FLASH->CR|= CR_STRT_Set; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(EraseTimeout); + + /* Disable the PER Bit */ + FLASH->CR &= CR_PER_Reset; + } +#endif /* STM32F10X_XL */ + + /* Return the Erase Status */ + return status; +} + +/** + * @brief Erases all FLASH pages. + * @note This function can be used for all STM32F10x devices. + * @param None + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EraseAllPages(void) +{ + FLASH_Status status = FLASH_COMPLETE; + +#ifdef STM32F10X_XL + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(EraseTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to erase all pages */ + FLASH->CR |= CR_MER_Set; + FLASH->CR |= CR_STRT_Set; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(EraseTimeout); + + /* Disable the MER Bit */ + FLASH->CR &= CR_MER_Reset; + } + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to erase all pages */ + FLASH->CR2 |= CR_MER_Set; + FLASH->CR2 |= CR_STRT_Set; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(EraseTimeout); + + /* Disable the MER Bit */ + FLASH->CR2 &= CR_MER_Reset; + } +#else + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to erase all pages */ + FLASH->CR |= CR_MER_Set; + FLASH->CR |= CR_STRT_Set; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(EraseTimeout); + + /* Disable the MER Bit */ + FLASH->CR &= CR_MER_Reset; + } +#endif /* STM32F10X_XL */ + + /* Return the Erase Status */ + return status; +} + +/** + * @brief Erases all Bank1 FLASH pages. + * @note This function can be used for all STM32F10x devices. + * - For STM32F10X_XL devices this function erases all Bank1 pages. + * - For all other devices it erases all Bank1 pages and it is equivalent + * to FLASH_EraseAllPages function. + * @param None + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EraseAllBank1Pages(void) +{ + FLASH_Status status = FLASH_COMPLETE; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(EraseTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to erase all pages */ + FLASH->CR |= CR_MER_Set; + FLASH->CR |= CR_STRT_Set; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(EraseTimeout); + + /* Disable the MER Bit */ + FLASH->CR &= CR_MER_Reset; + } + /* Return the Erase Status */ + return status; +} + +#ifdef STM32F10X_XL +/** + * @brief Erases all Bank2 FLASH pages. + * @note This function can be used only for STM32F10x_XL density devices. + * @param None + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EraseAllBank2Pages(void) +{ + FLASH_Status status = FLASH_COMPLETE; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(EraseTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to erase all pages */ + FLASH->CR2 |= CR_MER_Set; + FLASH->CR2 |= CR_STRT_Set; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(EraseTimeout); + + /* Disable the MER Bit */ + FLASH->CR2 &= CR_MER_Reset; + } + /* Return the Erase Status */ + return status; +} +#endif /* STM32F10X_XL */ + +/** + * @brief Erases the FLASH option bytes. + * @note This functions erases all option bytes except the Read protection (RDP). + * @note This function can be used for all STM32F10x devices. + * @param None + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EraseOptionBytes(void) +{ + uint16_t rdptmp = RDP_Key; + + FLASH_Status status = FLASH_COMPLETE; + + /* Get the actual read protection Option Byte value */ + if(FLASH_GetReadOutProtectionStatus() != RESET) + { + rdptmp = 0x00; + } + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + /* Authorize the small information block programming */ + FLASH->OPTKEYR = FLASH_KEY1; + FLASH->OPTKEYR = FLASH_KEY2; + + /* if the previous operation is completed, proceed to erase the option bytes */ + FLASH->CR |= CR_OPTER_Set; + FLASH->CR |= CR_STRT_Set; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(EraseTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the erase operation is completed, disable the OPTER Bit */ + FLASH->CR &= CR_OPTER_Reset; + + /* Enable the Option Bytes Programming operation */ + FLASH->CR |= CR_OPTPG_Set; + /* Restore the last read protection Option Byte value */ + OB->RDP = (uint16_t)rdptmp; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status != FLASH_TIMEOUT) + { + /* if the program operation is completed, disable the OPTPG Bit */ + FLASH->CR &= CR_OPTPG_Reset; + } + } + else + { + if (status != FLASH_TIMEOUT) + { + /* Disable the OPTPG Bit */ + FLASH->CR &= CR_OPTPG_Reset; + } + } + } + /* Return the erase status */ + return status; +} + +/** + * @brief Programs a word at a specified address. + * @note This function can be used for all STM32F10x devices. + * @param Address: specifies the address to be programmed. + * @param Data: specifies the data to be programmed. + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data) +{ + FLASH_Status status = FLASH_COMPLETE; + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_FLASH_ADDRESS(Address)); + +#ifdef STM32F10X_XL + if(Address < FLASH_BANK1_END_ADDRESS - 2) + { + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(ProgramTimeout); + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new first + half word */ + FLASH->CR |= CR_PG_Set; + + *(__IO uint16_t*)Address = (uint16_t)Data; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new second + half word */ + tmp = Address + 2; + + *(__IO uint16_t*) tmp = Data >> 16; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + /* Disable the PG Bit */ + FLASH->CR &= CR_PG_Reset; + } + else + { + /* Disable the PG Bit */ + FLASH->CR &= CR_PG_Reset; + } + } + } + else if(Address == (FLASH_BANK1_END_ADDRESS - 1)) + { + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new first + half word */ + FLASH->CR |= CR_PG_Set; + + *(__IO uint16_t*)Address = (uint16_t)Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(ProgramTimeout); + + /* Disable the PG Bit */ + FLASH->CR &= CR_PG_Reset; + } + else + { + /* Disable the PG Bit */ + FLASH->CR &= CR_PG_Reset; + } + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new second + half word */ + FLASH->CR2 |= CR_PG_Set; + tmp = Address + 2; + + *(__IO uint16_t*) tmp = Data >> 16; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(ProgramTimeout); + + /* Disable the PG Bit */ + FLASH->CR2 &= CR_PG_Reset; + } + else + { + /* Disable the PG Bit */ + FLASH->CR2 &= CR_PG_Reset; + } + } + else + { + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new first + half word */ + FLASH->CR2 |= CR_PG_Set; + + *(__IO uint16_t*)Address = (uint16_t)Data; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new second + half word */ + tmp = Address + 2; + + *(__IO uint16_t*) tmp = Data >> 16; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(ProgramTimeout); + + /* Disable the PG Bit */ + FLASH->CR2 &= CR_PG_Reset; + } + else + { + /* Disable the PG Bit */ + FLASH->CR2 &= CR_PG_Reset; + } + } + } +#else + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new first + half word */ + FLASH->CR |= CR_PG_Set; + + *(__IO uint16_t*)Address = (uint16_t)Data; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new second + half word */ + tmp = Address + 2; + + *(__IO uint16_t*) tmp = Data >> 16; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + /* Disable the PG Bit */ + FLASH->CR &= CR_PG_Reset; + } + else + { + /* Disable the PG Bit */ + FLASH->CR &= CR_PG_Reset; + } + } +#endif /* STM32F10X_XL */ + + /* Return the Program Status */ + return status; +} + +/** + * @brief Programs a half word at a specified address. + * @note This function can be used for all STM32F10x devices. + * @param Address: specifies the address to be programmed. + * @param Data: specifies the data to be programmed. + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) +{ + FLASH_Status status = FLASH_COMPLETE; + /* Check the parameters */ + assert_param(IS_FLASH_ADDRESS(Address)); + +#ifdef STM32F10X_XL + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(Address < FLASH_BANK1_END_ADDRESS) + { + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new data */ + FLASH->CR |= CR_PG_Set; + + *(__IO uint16_t*)Address = Data; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank1Operation(ProgramTimeout); + + /* Disable the PG Bit */ + FLASH->CR &= CR_PG_Reset; + } + } + else + { + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new data */ + FLASH->CR2 |= CR_PG_Set; + + *(__IO uint16_t*)Address = Data; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastBank2Operation(ProgramTimeout); + + /* Disable the PG Bit */ + FLASH->CR2 &= CR_PG_Reset; + } + } +#else + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* if the previous operation is completed, proceed to program the new data */ + FLASH->CR |= CR_PG_Set; + + *(__IO uint16_t*)Address = Data; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + /* Disable the PG Bit */ + FLASH->CR &= CR_PG_Reset; + } +#endif /* STM32F10X_XL */ + + /* Return the Program Status */ + return status; +} + +/** + * @brief Programs a half word at a specified Option Byte Data address. + * @note This function can be used for all STM32F10x devices. + * @param Address: specifies the address to be programmed. + * This parameter can be 0x1FFFF804 or 0x1FFFF806. + * @param Data: specifies the data to be programmed. + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data) +{ + FLASH_Status status = FLASH_COMPLETE; + /* Check the parameters */ + assert_param(IS_OB_DATA_ADDRESS(Address)); + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* Authorize the small information block programming */ + FLASH->OPTKEYR = FLASH_KEY1; + FLASH->OPTKEYR = FLASH_KEY2; + /* Enables the Option Bytes Programming operation */ + FLASH->CR |= CR_OPTPG_Set; + *(__IO uint16_t*)Address = Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + if(status != FLASH_TIMEOUT) + { + /* if the program operation is completed, disable the OPTPG Bit */ + FLASH->CR &= CR_OPTPG_Reset; + } + } + /* Return the Option Byte Data Program Status */ + return status; +} + +/** + * @brief Write protects the desired pages + * @note This function can be used for all STM32F10x devices. + * @param FLASH_Pages: specifies the address of the pages to be write protected. + * This parameter can be: + * @arg For @b STM32_Low-density_devices: value between FLASH_WRProt_Pages0to3 and FLASH_WRProt_Pages28to31 + * @arg For @b STM32_Medium-density_devices: value between FLASH_WRProt_Pages0to3 + * and FLASH_WRProt_Pages124to127 + * @arg For @b STM32_High-density_devices: value between FLASH_WRProt_Pages0to1 and + * FLASH_WRProt_Pages60to61 or FLASH_WRProt_Pages62to255 + * @arg For @b STM32_Connectivity_line_devices: value between FLASH_WRProt_Pages0to1 and + * FLASH_WRProt_Pages60to61 or FLASH_WRProt_Pages62to127 + * @arg For @b STM32_XL-density_devices: value between FLASH_WRProt_Pages0to1 and + * FLASH_WRProt_Pages60to61 or FLASH_WRProt_Pages62to511 + * @arg FLASH_WRProt_AllPages + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EnableWriteProtection(uint32_t FLASH_Pages) +{ + uint16_t WRP0_Data = 0xFFFF, WRP1_Data = 0xFFFF, WRP2_Data = 0xFFFF, WRP3_Data = 0xFFFF; + + FLASH_Status status = FLASH_COMPLETE; + + /* Check the parameters */ + assert_param(IS_FLASH_WRPROT_PAGE(FLASH_Pages)); + + FLASH_Pages = (uint32_t)(~FLASH_Pages); + WRP0_Data = (uint16_t)(FLASH_Pages & WRP0_Mask); + WRP1_Data = (uint16_t)((FLASH_Pages & WRP1_Mask) >> 8); + WRP2_Data = (uint16_t)((FLASH_Pages & WRP2_Mask) >> 16); + WRP3_Data = (uint16_t)((FLASH_Pages & WRP3_Mask) >> 24); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* Authorizes the small information block programming */ + FLASH->OPTKEYR = FLASH_KEY1; + FLASH->OPTKEYR = FLASH_KEY2; + FLASH->CR |= CR_OPTPG_Set; + if(WRP0_Data != 0xFF) + { + OB->WRP0 = WRP0_Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + } + if((status == FLASH_COMPLETE) && (WRP1_Data != 0xFF)) + { + OB->WRP1 = WRP1_Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + } + if((status == FLASH_COMPLETE) && (WRP2_Data != 0xFF)) + { + OB->WRP2 = WRP2_Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + } + + if((status == FLASH_COMPLETE)&& (WRP3_Data != 0xFF)) + { + OB->WRP3 = WRP3_Data; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + } + + if(status != FLASH_TIMEOUT) + { + /* if the program operation is completed, disable the OPTPG Bit */ + FLASH->CR &= CR_OPTPG_Reset; + } + } + /* Return the write protection operation Status */ + return status; +} + +/** + * @brief Enables or disables the read out protection. + * @note If the user has already programmed the other option bytes before calling + * this function, he must re-program them since this function erases all option bytes. + * @note This function can be used for all STM32F10x devices. + * @param Newstate: new state of the ReadOut Protection. + * This parameter can be: ENABLE or DISABLE. + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState) +{ + FLASH_Status status = FLASH_COMPLETE; + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + status = FLASH_WaitForLastOperation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + /* Authorizes the small information block programming */ + FLASH->OPTKEYR = FLASH_KEY1; + FLASH->OPTKEYR = FLASH_KEY2; + FLASH->CR |= CR_OPTER_Set; + FLASH->CR |= CR_STRT_Set; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + /* if the erase operation is completed, disable the OPTER Bit */ + FLASH->CR &= CR_OPTER_Reset; + /* Enable the Option Bytes Programming operation */ + FLASH->CR |= CR_OPTPG_Set; + if(NewState != DISABLE) + { + OB->RDP = 0x00; + } + else + { + OB->RDP = RDP_Key; + } + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(EraseTimeout); + + if(status != FLASH_TIMEOUT) + { + /* if the program operation is completed, disable the OPTPG Bit */ + FLASH->CR &= CR_OPTPG_Reset; + } + } + else + { + if(status != FLASH_TIMEOUT) + { + /* Disable the OPTER Bit */ + FLASH->CR &= CR_OPTER_Reset; + } + } + } + /* Return the protection operation Status */ + return status; +} + +/** + * @brief Programs the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. + * @note This function can be used for all STM32F10x devices. + * @param OB_IWDG: Selects the IWDG mode + * This parameter can be one of the following values: + * @arg OB_IWDG_SW: Software IWDG selected + * @arg OB_IWDG_HW: Hardware IWDG selected + * @param OB_STOP: Reset event when entering STOP mode. + * This parameter can be one of the following values: + * @arg OB_STOP_NoRST: No reset generated when entering in STOP + * @arg OB_STOP_RST: Reset generated when entering in STOP + * @param OB_STDBY: Reset event when entering Standby mode. + * This parameter can be one of the following values: + * @arg OB_STDBY_NoRST: No reset generated when entering in STANDBY + * @arg OB_STDBY_RST: Reset generated when entering in STANDBY + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_UserOptionByteConfig(uint16_t OB_IWDG, uint16_t OB_STOP, uint16_t OB_STDBY) +{ + FLASH_Status status = FLASH_COMPLETE; + + /* Check the parameters */ + assert_param(IS_OB_IWDG_SOURCE(OB_IWDG)); + assert_param(IS_OB_STOP_SOURCE(OB_STOP)); + assert_param(IS_OB_STDBY_SOURCE(OB_STDBY)); + + /* Authorize the small information block programming */ + FLASH->OPTKEYR = FLASH_KEY1; + FLASH->OPTKEYR = FLASH_KEY2; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* Enable the Option Bytes Programming operation */ + FLASH->CR |= CR_OPTPG_Set; + + OB->USER = OB_IWDG | (uint16_t)(OB_STOP | (uint16_t)(OB_STDBY | ((uint16_t)0xF8))); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + if(status != FLASH_TIMEOUT) + { + /* if the program operation is completed, disable the OPTPG Bit */ + FLASH->CR &= CR_OPTPG_Reset; + } + } + /* Return the Option Byte program Status */ + return status; +} + +#ifdef STM32F10X_XL +/** + * @brief Configures to boot from Bank1 or Bank2. + * @note This function can be used only for STM32F10x_XL density devices. + * @param FLASH_BOOT: select the FLASH Bank to boot from. + * This parameter can be one of the following values: + * @arg FLASH_BOOT_Bank1: At startup, if boot pins are set in boot from user Flash + * position and this parameter is selected the device will boot from Bank1(Default). + * @arg FLASH_BOOT_Bank2: At startup, if boot pins are set in boot from user Flash + * position and this parameter is selected the device will boot from Bank2 or Bank1, + * depending on the activation of the bank. The active banks are checked in + * the following order: Bank2, followed by Bank1. + * The active bank is recognized by the value programmed at the base address + * of the respective bank (corresponding to the initial stack pointer value + * in the interrupt vector table). + * For more information, please refer to AN2606 from www.st.com. + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_BootConfig(uint16_t FLASH_BOOT) +{ + FLASH_Status status = FLASH_COMPLETE; + assert_param(IS_FLASH_BOOT(FLASH_BOOT)); + /* Authorize the small information block programming */ + FLASH->OPTKEYR = FLASH_KEY1; + FLASH->OPTKEYR = FLASH_KEY2; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* Enable the Option Bytes Programming operation */ + FLASH->CR |= CR_OPTPG_Set; + + if(FLASH_BOOT == FLASH_BOOT_Bank1) + { + OB->USER |= OB_USER_BFB2; + } + else + { + OB->USER &= (uint16_t)(~(uint16_t)(OB_USER_BFB2)); + } + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(ProgramTimeout); + if(status != FLASH_TIMEOUT) + { + /* if the program operation is completed, disable the OPTPG Bit */ + FLASH->CR &= CR_OPTPG_Reset; + } + } + /* Return the Option Byte program Status */ + return status; +} +#endif /* STM32F10X_XL */ + +/** + * @brief Returns the FLASH User Option Bytes values. + * @note This function can be used for all STM32F10x devices. + * @param None + * @retval The FLASH User Option Bytes values:IWDG_SW(Bit0), RST_STOP(Bit1) + * and RST_STDBY(Bit2). + */ +uint32_t FLASH_GetUserOptionByte(void) +{ + /* Return the User Option Byte */ + return (uint32_t)(FLASH->OBR >> 2); +} + +/** + * @brief Returns the FLASH Write Protection Option Bytes Register value. + * @note This function can be used for all STM32F10x devices. + * @param None + * @retval The FLASH Write Protection Option Bytes Register value + */ +uint32_t FLASH_GetWriteProtectionOptionByte(void) +{ + /* Return the Flash write protection Register value */ + return (uint32_t)(FLASH->WRPR); +} + +/** + * @brief Checks whether the FLASH Read Out Protection Status is set or not. + * @note This function can be used for all STM32F10x devices. + * @param None + * @retval FLASH ReadOut Protection Status(SET or RESET) + */ +FlagStatus FLASH_GetReadOutProtectionStatus(void) +{ + FlagStatus readoutstatus = RESET; + if ((FLASH->OBR & RDPRT_Mask) != (uint32_t)RESET) + { + readoutstatus = SET; + } + else + { + readoutstatus = RESET; + } + return readoutstatus; +} + +/** + * @brief Checks whether the FLASH Prefetch Buffer status is set or not. + * @note This function can be used for all STM32F10x devices. + * @param None + * @retval FLASH Prefetch Buffer Status (SET or RESET). + */ +FlagStatus FLASH_GetPrefetchBufferStatus(void) +{ + FlagStatus bitstatus = RESET; + + if ((FLASH->ACR & ACR_PRFTBS_Mask) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + /* Return the new state of FLASH Prefetch Buffer Status (SET or RESET) */ + return bitstatus; +} + +/** + * @brief Enables or disables the specified FLASH interrupts. + * @note This function can be used for all STM32F10x devices. + * - For STM32F10X_XL devices, enables or disables the specified FLASH interrupts + for Bank1 and Bank2. + * - For other devices it enables or disables the specified FLASH interrupts for Bank1. + * @param FLASH_IT: specifies the FLASH interrupt sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg FLASH_IT_ERROR: FLASH Error Interrupt + * @arg FLASH_IT_EOP: FLASH end of operation Interrupt + * @param NewState: new state of the specified Flash interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState) +{ +#ifdef STM32F10X_XL + /* Check the parameters */ + assert_param(IS_FLASH_IT(FLASH_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if((FLASH_IT & 0x80000000) != 0x0) + { + if(NewState != DISABLE) + { + /* Enable the interrupt sources */ + FLASH->CR2 |= (FLASH_IT & 0x7FFFFFFF); + } + else + { + /* Disable the interrupt sources */ + FLASH->CR2 &= ~(uint32_t)(FLASH_IT & 0x7FFFFFFF); + } + } + else + { + if(NewState != DISABLE) + { + /* Enable the interrupt sources */ + FLASH->CR |= FLASH_IT; + } + else + { + /* Disable the interrupt sources */ + FLASH->CR &= ~(uint32_t)FLASH_IT; + } + } +#else + /* Check the parameters */ + assert_param(IS_FLASH_IT(FLASH_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if(NewState != DISABLE) + { + /* Enable the interrupt sources */ + FLASH->CR |= FLASH_IT; + } + else + { + /* Disable the interrupt sources */ + FLASH->CR &= ~(uint32_t)FLASH_IT; + } +#endif /* STM32F10X_XL */ +} + +/** + * @brief Checks whether the specified FLASH flag is set or not. + * @note This function can be used for all STM32F10x devices. + * - For STM32F10X_XL devices, this function checks whether the specified + * Bank1 or Bank2 flag is set or not. + * - For other devices, it checks whether the specified Bank1 flag is + * set or not. + * @param FLASH_FLAG: specifies the FLASH flag to check. + * This parameter can be one of the following values: + * @arg FLASH_FLAG_BSY: FLASH Busy flag + * @arg FLASH_FLAG_PGERR: FLASH Program error flag + * @arg FLASH_FLAG_WRPRTERR: FLASH Write protected error flag + * @arg FLASH_FLAG_EOP: FLASH End of Operation flag + * @arg FLASH_FLAG_OPTERR: FLASH Option Byte error flag + * @retval The new state of FLASH_FLAG (SET or RESET). + */ +FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG) +{ + FlagStatus bitstatus = RESET; + +#ifdef STM32F10X_XL + /* Check the parameters */ + assert_param(IS_FLASH_GET_FLAG(FLASH_FLAG)) ; + if(FLASH_FLAG == FLASH_FLAG_OPTERR) + { + if((FLASH->OBR & FLASH_FLAG_OPTERR) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else + { + if((FLASH_FLAG & 0x80000000) != 0x0) + { + if((FLASH->SR2 & FLASH_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else + { + if((FLASH->SR & FLASH_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + } +#else + /* Check the parameters */ + assert_param(IS_FLASH_GET_FLAG(FLASH_FLAG)) ; + if(FLASH_FLAG == FLASH_FLAG_OPTERR) + { + if((FLASH->OBR & FLASH_FLAG_OPTERR) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else + { + if((FLASH->SR & FLASH_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } +#endif /* STM32F10X_XL */ + + /* Return the new state of FLASH_FLAG (SET or RESET) */ + return bitstatus; +} + +/** + * @brief Clears the FLASH's pending flags. + * @note This function can be used for all STM32F10x devices. + * - For STM32F10X_XL devices, this function clears Bank1 or Bank2’s pending flags + * - For other devices, it clears Bank1’s pending flags. + * @param FLASH_FLAG: specifies the FLASH flags to clear. + * This parameter can be any combination of the following values: + * @arg FLASH_FLAG_PGERR: FLASH Program error flag + * @arg FLASH_FLAG_WRPRTERR: FLASH Write protected error flag + * @arg FLASH_FLAG_EOP: FLASH End of Operation flag + * @retval None + */ +void FLASH_ClearFlag(uint32_t FLASH_FLAG) +{ +#ifdef STM32F10X_XL + /* Check the parameters */ + assert_param(IS_FLASH_CLEAR_FLAG(FLASH_FLAG)) ; + + if((FLASH_FLAG & 0x80000000) != 0x0) + { + /* Clear the flags */ + FLASH->SR2 = FLASH_FLAG; + } + else + { + /* Clear the flags */ + FLASH->SR = FLASH_FLAG; + } + +#else + /* Check the parameters */ + assert_param(IS_FLASH_CLEAR_FLAG(FLASH_FLAG)) ; + + /* Clear the flags */ + FLASH->SR = FLASH_FLAG; +#endif /* STM32F10X_XL */ +} + +/** + * @brief Returns the FLASH Status. + * @note This function can be used for all STM32F10x devices, it is equivalent + * to FLASH_GetBank1Status function. + * @param None + * @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP or FLASH_COMPLETE + */ +FLASH_Status FLASH_GetStatus(void) +{ + FLASH_Status flashstatus = FLASH_COMPLETE; + + if((FLASH->SR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY) + { + flashstatus = FLASH_BUSY; + } + else + { + if((FLASH->SR & FLASH_FLAG_PGERR) != 0) + { + flashstatus = FLASH_ERROR_PG; + } + else + { + if((FLASH->SR & FLASH_FLAG_WRPRTERR) != 0 ) + { + flashstatus = FLASH_ERROR_WRP; + } + else + { + flashstatus = FLASH_COMPLETE; + } + } + } + /* Return the Flash Status */ + return flashstatus; +} + +/** + * @brief Returns the FLASH Bank1 Status. + * @note This function can be used for all STM32F10x devices, it is equivalent + * to FLASH_GetStatus function. + * @param None + * @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP or FLASH_COMPLETE + */ +FLASH_Status FLASH_GetBank1Status(void) +{ + FLASH_Status flashstatus = FLASH_COMPLETE; + + if((FLASH->SR & FLASH_FLAG_BANK1_BSY) == FLASH_FLAG_BSY) + { + flashstatus = FLASH_BUSY; + } + else + { + if((FLASH->SR & FLASH_FLAG_BANK1_PGERR) != 0) + { + flashstatus = FLASH_ERROR_PG; + } + else + { + if((FLASH->SR & FLASH_FLAG_BANK1_WRPRTERR) != 0 ) + { + flashstatus = FLASH_ERROR_WRP; + } + else + { + flashstatus = FLASH_COMPLETE; + } + } + } + /* Return the Flash Status */ + return flashstatus; +} + +#ifdef STM32F10X_XL +/** + * @brief Returns the FLASH Bank2 Status. + * @note This function can be used for STM32F10x_XL density devices. + * @param None + * @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP or FLASH_COMPLETE + */ +FLASH_Status FLASH_GetBank2Status(void) +{ + FLASH_Status flashstatus = FLASH_COMPLETE; + + if((FLASH->SR2 & (FLASH_FLAG_BANK2_BSY & 0x7FFFFFFF)) == (FLASH_FLAG_BANK2_BSY & 0x7FFFFFFF)) + { + flashstatus = FLASH_BUSY; + } + else + { + if((FLASH->SR2 & (FLASH_FLAG_BANK2_PGERR & 0x7FFFFFFF)) != 0) + { + flashstatus = FLASH_ERROR_PG; + } + else + { + if((FLASH->SR2 & (FLASH_FLAG_BANK2_WRPRTERR & 0x7FFFFFFF)) != 0 ) + { + flashstatus = FLASH_ERROR_WRP; + } + else + { + flashstatus = FLASH_COMPLETE; + } + } + } + /* Return the Flash Status */ + return flashstatus; +} +#endif /* STM32F10X_XL */ +/** + * @brief Waits for a Flash operation to complete or a TIMEOUT to occur. + * @note This function can be used for all STM32F10x devices, + * it is equivalent to FLASH_WaitForLastBank1Operation. + * - For STM32F10X_XL devices this function waits for a Bank1 Flash operation + * to complete or a TIMEOUT to occur. + * - For all other devices it waits for a Flash operation to complete + * or a TIMEOUT to occur. + * @param Timeout: FLASH programming Timeout + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout) +{ + FLASH_Status status = FLASH_COMPLETE; + + /* Check for the Flash Status */ + status = FLASH_GetBank1Status(); + /* Wait for a Flash operation to complete or a TIMEOUT to occur */ + while((status == FLASH_BUSY) && (Timeout != 0x00)) + { + status = FLASH_GetBank1Status(); + Timeout--; + } + if(Timeout == 0x00 ) + { + status = FLASH_TIMEOUT; + } + /* Return the operation status */ + return status; +} + +/** + * @brief Waits for a Flash operation on Bank1 to complete or a TIMEOUT to occur. + * @note This function can be used for all STM32F10x devices, + * it is equivalent to FLASH_WaitForLastOperation. + * @param Timeout: FLASH programming Timeout + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_WaitForLastBank1Operation(uint32_t Timeout) +{ + FLASH_Status status = FLASH_COMPLETE; + + /* Check for the Flash Status */ + status = FLASH_GetBank1Status(); + /* Wait for a Flash operation to complete or a TIMEOUT to occur */ + while((status == FLASH_FLAG_BANK1_BSY) && (Timeout != 0x00)) + { + status = FLASH_GetBank1Status(); + Timeout--; + } + if(Timeout == 0x00 ) + { + status = FLASH_TIMEOUT; + } + /* Return the operation status */ + return status; +} + +#ifdef STM32F10X_XL +/** + * @brief Waits for a Flash operation on Bank2 to complete or a TIMEOUT to occur. + * @note This function can be used only for STM32F10x_XL density devices. + * @param Timeout: FLASH programming Timeout + * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_WaitForLastBank2Operation(uint32_t Timeout) +{ + FLASH_Status status = FLASH_COMPLETE; + + /* Check for the Flash Status */ + status = FLASH_GetBank2Status(); + /* Wait for a Flash operation to complete or a TIMEOUT to occur */ + while((status == (FLASH_FLAG_BANK2_BSY & 0x7FFFFFFF)) && (Timeout != 0x00)) + { + status = FLASH_GetBank2Status(); + Timeout--; + } + if(Timeout == 0x00 ) + { + status = FLASH_TIMEOUT; + } + /* Return the operation status */ + return status; +} +#endif /* STM32F10X_XL */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c new file mode 100644 index 00000000..c75137ca --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c @@ -0,0 +1,866 @@ +/** + ****************************************************************************** + * @file stm32f10x_fsmc.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the FSMC firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_fsmc.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup FSMC + * @brief FSMC driver modules + * @{ + */ + +/** @defgroup FSMC_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + +/** @defgroup FSMC_Private_Defines + * @{ + */ + +/* --------------------- FSMC registers bit mask ---------------------------- */ + +/* FSMC BCRx Mask */ +#define BCR_MBKEN_Set ((uint32_t)0x00000001) +#define BCR_MBKEN_Reset ((uint32_t)0x000FFFFE) +#define BCR_FACCEN_Set ((uint32_t)0x00000040) + +/* FSMC PCRx Mask */ +#define PCR_PBKEN_Set ((uint32_t)0x00000004) +#define PCR_PBKEN_Reset ((uint32_t)0x000FFFFB) +#define PCR_ECCEN_Set ((uint32_t)0x00000040) +#define PCR_ECCEN_Reset ((uint32_t)0x000FFFBF) +#define PCR_MemoryType_NAND ((uint32_t)0x00000008) +/** + * @} + */ + +/** @defgroup FSMC_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup FSMC_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup FSMC_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup FSMC_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the FSMC NOR/SRAM Banks registers to their default + * reset values. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank1_NORSRAM1: FSMC Bank1 NOR/SRAM1 + * @arg FSMC_Bank1_NORSRAM2: FSMC Bank1 NOR/SRAM2 + * @arg FSMC_Bank1_NORSRAM3: FSMC Bank1 NOR/SRAM3 + * @arg FSMC_Bank1_NORSRAM4: FSMC Bank1 NOR/SRAM4 + * @retval None + */ +void FSMC_NORSRAMDeInit(uint32_t FSMC_Bank) +{ + /* Check the parameter */ + assert_param(IS_FSMC_NORSRAM_BANK(FSMC_Bank)); + + /* FSMC_Bank1_NORSRAM1 */ + if(FSMC_Bank == FSMC_Bank1_NORSRAM1) + { + FSMC_Bank1->BTCR[FSMC_Bank] = 0x000030DB; + } + /* FSMC_Bank1_NORSRAM2, FSMC_Bank1_NORSRAM3 or FSMC_Bank1_NORSRAM4 */ + else + { + FSMC_Bank1->BTCR[FSMC_Bank] = 0x000030D2; + } + FSMC_Bank1->BTCR[FSMC_Bank + 1] = 0x0FFFFFFF; + FSMC_Bank1E->BWTR[FSMC_Bank] = 0x0FFFFFFF; +} + +/** + * @brief Deinitializes the FSMC NAND Banks registers to their default reset values. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @retval None + */ +void FSMC_NANDDeInit(uint32_t FSMC_Bank) +{ + /* Check the parameter */ + assert_param(IS_FSMC_NAND_BANK(FSMC_Bank)); + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + /* Set the FSMC_Bank2 registers to their reset values */ + FSMC_Bank2->PCR2 = 0x00000018; + FSMC_Bank2->SR2 = 0x00000040; + FSMC_Bank2->PMEM2 = 0xFCFCFCFC; + FSMC_Bank2->PATT2 = 0xFCFCFCFC; + } + /* FSMC_Bank3_NAND */ + else + { + /* Set the FSMC_Bank3 registers to their reset values */ + FSMC_Bank3->PCR3 = 0x00000018; + FSMC_Bank3->SR3 = 0x00000040; + FSMC_Bank3->PMEM3 = 0xFCFCFCFC; + FSMC_Bank3->PATT3 = 0xFCFCFCFC; + } +} + +/** + * @brief Deinitializes the FSMC PCCARD Bank registers to their default reset values. + * @param None + * @retval None + */ +void FSMC_PCCARDDeInit(void) +{ + /* Set the FSMC_Bank4 registers to their reset values */ + FSMC_Bank4->PCR4 = 0x00000018; + FSMC_Bank4->SR4 = 0x00000000; + FSMC_Bank4->PMEM4 = 0xFCFCFCFC; + FSMC_Bank4->PATT4 = 0xFCFCFCFC; + FSMC_Bank4->PIO4 = 0xFCFCFCFC; +} + +/** + * @brief Initializes the FSMC NOR/SRAM Banks according to the specified + * parameters in the FSMC_NORSRAMInitStruct. + * @param FSMC_NORSRAMInitStruct : pointer to a FSMC_NORSRAMInitTypeDef + * structure that contains the configuration information for + * the FSMC NOR/SRAM specified Banks. + * @retval None + */ +void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NORSRAM_BANK(FSMC_NORSRAMInitStruct->FSMC_Bank)); + assert_param(IS_FSMC_MUX(FSMC_NORSRAMInitStruct->FSMC_DataAddressMux)); + assert_param(IS_FSMC_MEMORY(FSMC_NORSRAMInitStruct->FSMC_MemoryType)); + assert_param(IS_FSMC_MEMORY_WIDTH(FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth)); + assert_param(IS_FSMC_BURSTMODE(FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode)); + assert_param(IS_FSMC_ASYNWAIT(FSMC_NORSRAMInitStruct->FSMC_AsynchronousWait)); + assert_param(IS_FSMC_WAIT_POLARITY(FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity)); + assert_param(IS_FSMC_WRAP_MODE(FSMC_NORSRAMInitStruct->FSMC_WrapMode)); + assert_param(IS_FSMC_WAIT_SIGNAL_ACTIVE(FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive)); + assert_param(IS_FSMC_WRITE_OPERATION(FSMC_NORSRAMInitStruct->FSMC_WriteOperation)); + assert_param(IS_FSMC_WAITE_SIGNAL(FSMC_NORSRAMInitStruct->FSMC_WaitSignal)); + assert_param(IS_FSMC_EXTENDED_MODE(FSMC_NORSRAMInitStruct->FSMC_ExtendedMode)); + assert_param(IS_FSMC_WRITE_BURST(FSMC_NORSRAMInitStruct->FSMC_WriteBurst)); + assert_param(IS_FSMC_ADDRESS_SETUP_TIME(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime)); + assert_param(IS_FSMC_ADDRESS_HOLD_TIME(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime)); + assert_param(IS_FSMC_DATASETUP_TIME(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime)); + assert_param(IS_FSMC_TURNAROUND_TIME(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration)); + assert_param(IS_FSMC_CLK_DIV(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision)); + assert_param(IS_FSMC_DATA_LATENCY(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency)); + assert_param(IS_FSMC_ACCESS_MODE(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode)); + + /* Bank1 NOR/SRAM control register configuration */ + FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank] = + (uint32_t)FSMC_NORSRAMInitStruct->FSMC_DataAddressMux | + FSMC_NORSRAMInitStruct->FSMC_MemoryType | + FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth | + FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode | + FSMC_NORSRAMInitStruct->FSMC_AsynchronousWait | + FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity | + FSMC_NORSRAMInitStruct->FSMC_WrapMode | + FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive | + FSMC_NORSRAMInitStruct->FSMC_WriteOperation | + FSMC_NORSRAMInitStruct->FSMC_WaitSignal | + FSMC_NORSRAMInitStruct->FSMC_ExtendedMode | + FSMC_NORSRAMInitStruct->FSMC_WriteBurst; + + if(FSMC_NORSRAMInitStruct->FSMC_MemoryType == FSMC_MemoryType_NOR) + { + FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank] |= (uint32_t)BCR_FACCEN_Set; + } + + /* Bank1 NOR/SRAM timing register configuration */ + FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank+1] = + (uint32_t)FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime << 4) | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime << 8) | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration << 16) | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision << 20) | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency << 24) | + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode; + + + /* Bank1 NOR/SRAM timing register for write configuration, if extended mode is used */ + if(FSMC_NORSRAMInitStruct->FSMC_ExtendedMode == FSMC_ExtendedMode_Enable) + { + assert_param(IS_FSMC_ADDRESS_SETUP_TIME(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressSetupTime)); + assert_param(IS_FSMC_ADDRESS_HOLD_TIME(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressHoldTime)); + assert_param(IS_FSMC_DATASETUP_TIME(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataSetupTime)); + assert_param(IS_FSMC_CLK_DIV(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_CLKDivision)); + assert_param(IS_FSMC_DATA_LATENCY(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataLatency)); + assert_param(IS_FSMC_ACCESS_MODE(FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AccessMode)); + FSMC_Bank1E->BWTR[FSMC_NORSRAMInitStruct->FSMC_Bank] = + (uint32_t)FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressSetupTime | + (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressHoldTime << 4 )| + (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataSetupTime << 8) | + (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_CLKDivision << 20) | + (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataLatency << 24) | + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AccessMode; + } + else + { + FSMC_Bank1E->BWTR[FSMC_NORSRAMInitStruct->FSMC_Bank] = 0x0FFFFFFF; + } +} + +/** + * @brief Initializes the FSMC NAND Banks according to the specified + * parameters in the FSMC_NANDInitStruct. + * @param FSMC_NANDInitStruct : pointer to a FSMC_NANDInitTypeDef + * structure that contains the configuration information for the FSMC + * NAND specified Banks. + * @retval None + */ +void FSMC_NANDInit(FSMC_NANDInitTypeDef* FSMC_NANDInitStruct) +{ + uint32_t tmppcr = 0x00000000, tmppmem = 0x00000000, tmppatt = 0x00000000; + + /* Check the parameters */ + assert_param( IS_FSMC_NAND_BANK(FSMC_NANDInitStruct->FSMC_Bank)); + assert_param( IS_FSMC_WAIT_FEATURE(FSMC_NANDInitStruct->FSMC_Waitfeature)); + assert_param( IS_FSMC_MEMORY_WIDTH(FSMC_NANDInitStruct->FSMC_MemoryDataWidth)); + assert_param( IS_FSMC_ECC_STATE(FSMC_NANDInitStruct->FSMC_ECC)); + assert_param( IS_FSMC_ECCPAGE_SIZE(FSMC_NANDInitStruct->FSMC_ECCPageSize)); + assert_param( IS_FSMC_TCLR_TIME(FSMC_NANDInitStruct->FSMC_TCLRSetupTime)); + assert_param( IS_FSMC_TAR_TIME(FSMC_NANDInitStruct->FSMC_TARSetupTime)); + assert_param(IS_FSMC_SETUP_TIME(FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime)); + assert_param(IS_FSMC_SETUP_TIME(FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime)); + + /* Set the tmppcr value according to FSMC_NANDInitStruct parameters */ + tmppcr = (uint32_t)FSMC_NANDInitStruct->FSMC_Waitfeature | + PCR_MemoryType_NAND | + FSMC_NANDInitStruct->FSMC_MemoryDataWidth | + FSMC_NANDInitStruct->FSMC_ECC | + FSMC_NANDInitStruct->FSMC_ECCPageSize | + (FSMC_NANDInitStruct->FSMC_TCLRSetupTime << 9 )| + (FSMC_NANDInitStruct->FSMC_TARSetupTime << 13); + + /* Set tmppmem value according to FSMC_CommonSpaceTimingStructure parameters */ + tmppmem = (uint32_t)FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime | + (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime << 8) | + (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime << 16)| + (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime << 24); + + /* Set tmppatt value according to FSMC_AttributeSpaceTimingStructure parameters */ + tmppatt = (uint32_t)FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime | + (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime << 8) | + (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime << 16)| + (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime << 24); + + if(FSMC_NANDInitStruct->FSMC_Bank == FSMC_Bank2_NAND) + { + /* FSMC_Bank2_NAND registers configuration */ + FSMC_Bank2->PCR2 = tmppcr; + FSMC_Bank2->PMEM2 = tmppmem; + FSMC_Bank2->PATT2 = tmppatt; + } + else + { + /* FSMC_Bank3_NAND registers configuration */ + FSMC_Bank3->PCR3 = tmppcr; + FSMC_Bank3->PMEM3 = tmppmem; + FSMC_Bank3->PATT3 = tmppatt; + } +} + +/** + * @brief Initializes the FSMC PCCARD Bank according to the specified + * parameters in the FSMC_PCCARDInitStruct. + * @param FSMC_PCCARDInitStruct : pointer to a FSMC_PCCARDInitTypeDef + * structure that contains the configuration information for the FSMC + * PCCARD Bank. + * @retval None + */ +void FSMC_PCCARDInit(FSMC_PCCARDInitTypeDef* FSMC_PCCARDInitStruct) +{ + /* Check the parameters */ + assert_param(IS_FSMC_WAIT_FEATURE(FSMC_PCCARDInitStruct->FSMC_Waitfeature)); + assert_param(IS_FSMC_TCLR_TIME(FSMC_PCCARDInitStruct->FSMC_TCLRSetupTime)); + assert_param(IS_FSMC_TAR_TIME(FSMC_PCCARDInitStruct->FSMC_TARSetupTime)); + + assert_param(IS_FSMC_SETUP_TIME(FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime)); + + assert_param(IS_FSMC_SETUP_TIME(FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime)); + assert_param(IS_FSMC_SETUP_TIME(FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HiZSetupTime)); + + /* Set the PCR4 register value according to FSMC_PCCARDInitStruct parameters */ + FSMC_Bank4->PCR4 = (uint32_t)FSMC_PCCARDInitStruct->FSMC_Waitfeature | + FSMC_MemoryDataWidth_16b | + (FSMC_PCCARDInitStruct->FSMC_TCLRSetupTime << 9) | + (FSMC_PCCARDInitStruct->FSMC_TARSetupTime << 13); + + /* Set PMEM4 register value according to FSMC_CommonSpaceTimingStructure parameters */ + FSMC_Bank4->PMEM4 = (uint32_t)FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime | + (FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime << 8) | + (FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime << 16)| + (FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime << 24); + + /* Set PATT4 register value according to FSMC_AttributeSpaceTimingStructure parameters */ + FSMC_Bank4->PATT4 = (uint32_t)FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime | + (FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime << 8) | + (FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime << 16)| + (FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime << 24); + + /* Set PIO4 register value according to FSMC_IOSpaceTimingStructure parameters */ + FSMC_Bank4->PIO4 = (uint32_t)FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_SetupTime | + (FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_WaitSetupTime << 8) | + (FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HoldSetupTime << 16)| + (FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HiZSetupTime << 24); +} + +/** + * @brief Fills each FSMC_NORSRAMInitStruct member with its default value. + * @param FSMC_NORSRAMInitStruct: pointer to a FSMC_NORSRAMInitTypeDef + * structure which will be initialized. + * @retval None + */ +void FSMC_NORSRAMStructInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct) +{ + /* Reset NOR/SRAM Init structure parameters values */ + FSMC_NORSRAMInitStruct->FSMC_Bank = FSMC_Bank1_NORSRAM1; + FSMC_NORSRAMInitStruct->FSMC_DataAddressMux = FSMC_DataAddressMux_Enable; + FSMC_NORSRAMInitStruct->FSMC_MemoryType = FSMC_MemoryType_SRAM; + FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b; + FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; + FSMC_NORSRAMInitStruct->FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; + FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; + FSMC_NORSRAMInitStruct->FSMC_WrapMode = FSMC_WrapMode_Disable; + FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; + FSMC_NORSRAMInitStruct->FSMC_WriteOperation = FSMC_WriteOperation_Enable; + FSMC_NORSRAMInitStruct->FSMC_WaitSignal = FSMC_WaitSignal_Enable; + FSMC_NORSRAMInitStruct->FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; + FSMC_NORSRAMInitStruct->FSMC_WriteBurst = FSMC_WriteBurst_Disable; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime = 0xFF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode = FSMC_AccessMode_A; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressSetupTime = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressHoldTime = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataSetupTime = 0xFF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_BusTurnAroundDuration = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_CLKDivision = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataLatency = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AccessMode = FSMC_AccessMode_A; +} + +/** + * @brief Fills each FSMC_NANDInitStruct member with its default value. + * @param FSMC_NANDInitStruct: pointer to a FSMC_NANDInitTypeDef + * structure which will be initialized. + * @retval None + */ +void FSMC_NANDStructInit(FSMC_NANDInitTypeDef* FSMC_NANDInitStruct) +{ + /* Reset NAND Init structure parameters values */ + FSMC_NANDInitStruct->FSMC_Bank = FSMC_Bank2_NAND; + FSMC_NANDInitStruct->FSMC_Waitfeature = FSMC_Waitfeature_Disable; + FSMC_NANDInitStruct->FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b; + FSMC_NANDInitStruct->FSMC_ECC = FSMC_ECC_Disable; + FSMC_NANDInitStruct->FSMC_ECCPageSize = FSMC_ECCPageSize_256Bytes; + FSMC_NANDInitStruct->FSMC_TCLRSetupTime = 0x0; + FSMC_NANDInitStruct->FSMC_TARSetupTime = 0x0; + FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC; +} + +/** + * @brief Fills each FSMC_PCCARDInitStruct member with its default value. + * @param FSMC_PCCARDInitStruct: pointer to a FSMC_PCCARDInitTypeDef + * structure which will be initialized. + * @retval None + */ +void FSMC_PCCARDStructInit(FSMC_PCCARDInitTypeDef* FSMC_PCCARDInitStruct) +{ + /* Reset PCCARD Init structure parameters values */ + FSMC_PCCARDInitStruct->FSMC_Waitfeature = FSMC_Waitfeature_Disable; + FSMC_PCCARDInitStruct->FSMC_TCLRSetupTime = 0x0; + FSMC_PCCARDInitStruct->FSMC_TARSetupTime = 0x0; + FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_SetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC; + FSMC_PCCARDInitStruct->FSMC_IOSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC; +} + +/** + * @brief Enables or disables the specified NOR/SRAM Memory Bank. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank1_NORSRAM1: FSMC Bank1 NOR/SRAM1 + * @arg FSMC_Bank1_NORSRAM2: FSMC Bank1 NOR/SRAM2 + * @arg FSMC_Bank1_NORSRAM3: FSMC Bank1 NOR/SRAM3 + * @arg FSMC_Bank1_NORSRAM4: FSMC Bank1 NOR/SRAM4 + * @param NewState: new state of the FSMC_Bank. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void FSMC_NORSRAMCmd(uint32_t FSMC_Bank, FunctionalState NewState) +{ + assert_param(IS_FSMC_NORSRAM_BANK(FSMC_Bank)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the selected NOR/SRAM Bank by setting the PBKEN bit in the BCRx register */ + FSMC_Bank1->BTCR[FSMC_Bank] |= BCR_MBKEN_Set; + } + else + { + /* Disable the selected NOR/SRAM Bank by clearing the PBKEN bit in the BCRx register */ + FSMC_Bank1->BTCR[FSMC_Bank] &= BCR_MBKEN_Reset; + } +} + +/** + * @brief Enables or disables the specified NAND Memory Bank. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @param NewState: new state of the FSMC_Bank. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void FSMC_NANDCmd(uint32_t FSMC_Bank, FunctionalState NewState) +{ + assert_param(IS_FSMC_NAND_BANK(FSMC_Bank)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the selected NAND Bank by setting the PBKEN bit in the PCRx register */ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 |= PCR_PBKEN_Set; + } + else + { + FSMC_Bank3->PCR3 |= PCR_PBKEN_Set; + } + } + else + { + /* Disable the selected NAND Bank by clearing the PBKEN bit in the PCRx register */ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 &= PCR_PBKEN_Reset; + } + else + { + FSMC_Bank3->PCR3 &= PCR_PBKEN_Reset; + } + } +} + +/** + * @brief Enables or disables the PCCARD Memory Bank. + * @param NewState: new state of the PCCARD Memory Bank. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void FSMC_PCCARDCmd(FunctionalState NewState) +{ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the PCCARD Bank by setting the PBKEN bit in the PCR4 register */ + FSMC_Bank4->PCR4 |= PCR_PBKEN_Set; + } + else + { + /* Disable the PCCARD Bank by clearing the PBKEN bit in the PCR4 register */ + FSMC_Bank4->PCR4 &= PCR_PBKEN_Reset; + } +} + +/** + * @brief Enables or disables the FSMC NAND ECC feature. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @param NewState: new state of the FSMC NAND ECC feature. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void FSMC_NANDECCCmd(uint32_t FSMC_Bank, FunctionalState NewState) +{ + assert_param(IS_FSMC_NAND_BANK(FSMC_Bank)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the selected NAND Bank ECC function by setting the ECCEN bit in the PCRx register */ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 |= PCR_ECCEN_Set; + } + else + { + FSMC_Bank3->PCR3 |= PCR_ECCEN_Set; + } + } + else + { + /* Disable the selected NAND Bank ECC function by clearing the ECCEN bit in the PCRx register */ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 &= PCR_ECCEN_Reset; + } + else + { + FSMC_Bank3->PCR3 &= PCR_ECCEN_Reset; + } + } +} + +/** + * @brief Returns the error correction code register value. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @retval The Error Correction Code (ECC) value. + */ +uint32_t FSMC_GetECC(uint32_t FSMC_Bank) +{ + uint32_t eccval = 0x00000000; + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + /* Get the ECCR2 register value */ + eccval = FSMC_Bank2->ECCR2; + } + else + { + /* Get the ECCR3 register value */ + eccval = FSMC_Bank3->ECCR3; + } + /* Return the error correction code value */ + return(eccval); +} + +/** + * @brief Enables or disables the specified FSMC interrupts. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD + * @param FSMC_IT: specifies the FSMC interrupt sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg FSMC_IT_RisingEdge: Rising edge detection interrupt. + * @arg FSMC_IT_Level: Level edge detection interrupt. + * @arg FSMC_IT_FallingEdge: Falling edge detection interrupt. + * @param NewState: new state of the specified FSMC interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void FSMC_ITConfig(uint32_t FSMC_Bank, uint32_t FSMC_IT, FunctionalState NewState) +{ + assert_param(IS_FSMC_IT_BANK(FSMC_Bank)); + assert_param(IS_FSMC_IT(FSMC_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the selected FSMC_Bank2 interrupts */ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->SR2 |= FSMC_IT; + } + /* Enable the selected FSMC_Bank3 interrupts */ + else if (FSMC_Bank == FSMC_Bank3_NAND) + { + FSMC_Bank3->SR3 |= FSMC_IT; + } + /* Enable the selected FSMC_Bank4 interrupts */ + else + { + FSMC_Bank4->SR4 |= FSMC_IT; + } + } + else + { + /* Disable the selected FSMC_Bank2 interrupts */ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + + FSMC_Bank2->SR2 &= (uint32_t)~FSMC_IT; + } + /* Disable the selected FSMC_Bank3 interrupts */ + else if (FSMC_Bank == FSMC_Bank3_NAND) + { + FSMC_Bank3->SR3 &= (uint32_t)~FSMC_IT; + } + /* Disable the selected FSMC_Bank4 interrupts */ + else + { + FSMC_Bank4->SR4 &= (uint32_t)~FSMC_IT; + } + } +} + +/** + * @brief Checks whether the specified FSMC flag is set or not. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD + * @param FSMC_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg FSMC_FLAG_RisingEdge: Rising egde detection Flag. + * @arg FSMC_FLAG_Level: Level detection Flag. + * @arg FSMC_FLAG_FallingEdge: Falling egde detection Flag. + * @arg FSMC_FLAG_FEMPT: Fifo empty Flag. + * @retval The new state of FSMC_FLAG (SET or RESET). + */ +FlagStatus FSMC_GetFlagStatus(uint32_t FSMC_Bank, uint32_t FSMC_FLAG) +{ + FlagStatus bitstatus = RESET; + uint32_t tmpsr = 0x00000000; + + /* Check the parameters */ + assert_param(IS_FSMC_GETFLAG_BANK(FSMC_Bank)); + assert_param(IS_FSMC_GET_FLAG(FSMC_FLAG)); + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + tmpsr = FSMC_Bank2->SR2; + } + else if(FSMC_Bank == FSMC_Bank3_NAND) + { + tmpsr = FSMC_Bank3->SR3; + } + /* FSMC_Bank4_PCCARD*/ + else + { + tmpsr = FSMC_Bank4->SR4; + } + + /* Get the flag status */ + if ((tmpsr & FSMC_FLAG) != (uint16_t)RESET ) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + /* Return the flag status */ + return bitstatus; +} + +/** + * @brief Clears the FSMC's pending flags. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD + * @param FSMC_FLAG: specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg FSMC_FLAG_RisingEdge: Rising egde detection Flag. + * @arg FSMC_FLAG_Level: Level detection Flag. + * @arg FSMC_FLAG_FallingEdge: Falling egde detection Flag. + * @retval None + */ +void FSMC_ClearFlag(uint32_t FSMC_Bank, uint32_t FSMC_FLAG) +{ + /* Check the parameters */ + assert_param(IS_FSMC_GETFLAG_BANK(FSMC_Bank)); + assert_param(IS_FSMC_CLEAR_FLAG(FSMC_FLAG)) ; + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->SR2 &= ~FSMC_FLAG; + } + else if(FSMC_Bank == FSMC_Bank3_NAND) + { + FSMC_Bank3->SR3 &= ~FSMC_FLAG; + } + /* FSMC_Bank4_PCCARD*/ + else + { + FSMC_Bank4->SR4 &= ~FSMC_FLAG; + } +} + +/** + * @brief Checks whether the specified FSMC interrupt has occurred or not. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD + * @param FSMC_IT: specifies the FSMC interrupt source to check. + * This parameter can be one of the following values: + * @arg FSMC_IT_RisingEdge: Rising edge detection interrupt. + * @arg FSMC_IT_Level: Level edge detection interrupt. + * @arg FSMC_IT_FallingEdge: Falling edge detection interrupt. + * @retval The new state of FSMC_IT (SET or RESET). + */ +ITStatus FSMC_GetITStatus(uint32_t FSMC_Bank, uint32_t FSMC_IT) +{ + ITStatus bitstatus = RESET; + uint32_t tmpsr = 0x0, itstatus = 0x0, itenable = 0x0; + + /* Check the parameters */ + assert_param(IS_FSMC_IT_BANK(FSMC_Bank)); + assert_param(IS_FSMC_GET_IT(FSMC_IT)); + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + tmpsr = FSMC_Bank2->SR2; + } + else if(FSMC_Bank == FSMC_Bank3_NAND) + { + tmpsr = FSMC_Bank3->SR3; + } + /* FSMC_Bank4_PCCARD*/ + else + { + tmpsr = FSMC_Bank4->SR4; + } + + itstatus = tmpsr & FSMC_IT; + + itenable = tmpsr & (FSMC_IT >> 3); + if ((itstatus != (uint32_t)RESET) && (itenable != (uint32_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the FSMC's interrupt pending bits. + * @param FSMC_Bank: specifies the FSMC Bank to be used + * This parameter can be one of the following values: + * @arg FSMC_Bank2_NAND: FSMC Bank2 NAND + * @arg FSMC_Bank3_NAND: FSMC Bank3 NAND + * @arg FSMC_Bank4_PCCARD: FSMC Bank4 PCCARD + * @param FSMC_IT: specifies the interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg FSMC_IT_RisingEdge: Rising edge detection interrupt. + * @arg FSMC_IT_Level: Level edge detection interrupt. + * @arg FSMC_IT_FallingEdge: Falling edge detection interrupt. + * @retval None + */ +void FSMC_ClearITPendingBit(uint32_t FSMC_Bank, uint32_t FSMC_IT) +{ + /* Check the parameters */ + assert_param(IS_FSMC_IT_BANK(FSMC_Bank)); + assert_param(IS_FSMC_IT(FSMC_IT)); + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->SR2 &= ~(FSMC_IT >> 3); + } + else if(FSMC_Bank == FSMC_Bank3_NAND) + { + FSMC_Bank3->SR3 &= ~(FSMC_IT >> 3); + } + /* FSMC_Bank4_PCCARD*/ + else + { + FSMC_Bank4->SR4 &= ~(FSMC_IT >> 3); + } +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c new file mode 100644 index 00000000..93dbcd7c --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c @@ -0,0 +1,650 @@ +/** + ****************************************************************************** + * @file stm32f10x_gpio.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the GPIO firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_gpio.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup GPIO + * @brief GPIO driver modules + * @{ + */ + +/** @defgroup GPIO_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup GPIO_Private_Defines + * @{ + */ + +/* ------------ RCC registers bit address in the alias region ----------------*/ +#define AFIO_OFFSET (AFIO_BASE - PERIPH_BASE) + +/* --- EVENTCR Register -----*/ + +/* Alias word address of EVOE bit */ +#define EVCR_OFFSET (AFIO_OFFSET + 0x00) +#define EVOE_BitNumber ((uint8_t)0x07) +#define EVCR_EVOE_BB (PERIPH_BB_BASE + (EVCR_OFFSET * 32) + (EVOE_BitNumber * 4)) + + +/* --- MAPR Register ---*/ +/* Alias word address of MII_RMII_SEL bit */ +#define MAPR_OFFSET (AFIO_OFFSET + 0x04) +#define MII_RMII_SEL_BitNumber ((u8)0x17) +#define MAPR_MII_RMII_SEL_BB (PERIPH_BB_BASE + (MAPR_OFFSET * 32) + (MII_RMII_SEL_BitNumber * 4)) + + +#define EVCR_PORTPINCONFIG_MASK ((uint16_t)0xFF80) +#define LSB_MASK ((uint16_t)0xFFFF) +#define DBGAFR_POSITION_MASK ((uint32_t)0x000F0000) +#define DBGAFR_SWJCFG_MASK ((uint32_t)0xF0FFFFFF) +#define DBGAFR_LOCATION_MASK ((uint32_t)0x00200000) +#define DBGAFR_NUMBITS_MASK ((uint32_t)0x00100000) +/** + * @} + */ + +/** @defgroup GPIO_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup GPIO_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup GPIO_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup GPIO_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the GPIOx peripheral registers to their default reset values. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @retval None + */ +void GPIO_DeInit(GPIO_TypeDef* GPIOx) +{ + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + + if (GPIOx == GPIOA) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, DISABLE); + } + else if (GPIOx == GPIOB) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, DISABLE); + } + else if (GPIOx == GPIOC) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, DISABLE); + } + else if (GPIOx == GPIOD) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, DISABLE); + } + else if (GPIOx == GPIOE) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, DISABLE); + } + else if (GPIOx == GPIOF) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOF, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOF, DISABLE); + } + else + { + if (GPIOx == GPIOG) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOG, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOG, DISABLE); + } + } +} + +/** + * @brief Deinitializes the Alternate Functions (remap, event control + * and EXTI configuration) registers to their default reset values. + * @param None + * @retval None + */ +void GPIO_AFIODeInit(void) +{ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, DISABLE); +} + +/** + * @brief Initializes the GPIOx peripheral according to the specified + * parameters in the GPIO_InitStruct. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @param GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that + * contains the configuration information for the specified GPIO peripheral. + * @retval None + */ +void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) +{ + uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00; + uint32_t tmpreg = 0x00, pinmask = 0x00; + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode)); + assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin)); + +/*---------------------------- GPIO Mode Configuration -----------------------*/ + currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F); + if ((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00) + { + /* Check the parameters */ + assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed)); + /* Output mode */ + currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed; + } +/*---------------------------- GPIO CRL Configuration ------------------------*/ + /* Configure the eight low port pins */ + if (((uint32_t)GPIO_InitStruct->GPIO_Pin & ((uint32_t)0x00FF)) != 0x00) + { + tmpreg = GPIOx->CRL; + for (pinpos = 0x00; pinpos < 0x08; pinpos++) + { + pos = ((uint32_t)0x01) << pinpos; + /* Get the port pins position */ + currentpin = (GPIO_InitStruct->GPIO_Pin) & pos; + if (currentpin == pos) + { + pos = pinpos << 2; + /* Clear the corresponding low control register bits */ + pinmask = ((uint32_t)0x0F) << pos; + tmpreg &= ~pinmask; + /* Write the mode configuration in the corresponding bits */ + tmpreg |= (currentmode << pos); + /* Reset the corresponding ODR bit */ + if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD) + { + GPIOx->BRR = (((uint32_t)0x01) << pinpos); + } + else + { + /* Set the corresponding ODR bit */ + if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU) + { + GPIOx->BSRR = (((uint32_t)0x01) << pinpos); + } + } + } + } + GPIOx->CRL = tmpreg; + } +/*---------------------------- GPIO CRH Configuration ------------------------*/ + /* Configure the eight high port pins */ + if (GPIO_InitStruct->GPIO_Pin > 0x00FF) + { + tmpreg = GPIOx->CRH; + for (pinpos = 0x00; pinpos < 0x08; pinpos++) + { + pos = (((uint32_t)0x01) << (pinpos + 0x08)); + /* Get the port pins position */ + currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos); + if (currentpin == pos) + { + pos = pinpos << 2; + /* Clear the corresponding high control register bits */ + pinmask = ((uint32_t)0x0F) << pos; + tmpreg &= ~pinmask; + /* Write the mode configuration in the corresponding bits */ + tmpreg |= (currentmode << pos); + /* Reset the corresponding ODR bit */ + if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD) + { + GPIOx->BRR = (((uint32_t)0x01) << (pinpos + 0x08)); + } + /* Set the corresponding ODR bit */ + if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU) + { + GPIOx->BSRR = (((uint32_t)0x01) << (pinpos + 0x08)); + } + } + } + GPIOx->CRH = tmpreg; + } +} + +/** + * @brief Fills each GPIO_InitStruct member with its default value. + * @param GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure which will + * be initialized. + * @retval None + */ +void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct) +{ + /* Reset GPIO init structure parameters values */ + GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All; + GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz; + GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING; +} + +/** + * @brief Reads the specified input port pin. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @param GPIO_Pin: specifies the port bit to read. + * This parameter can be GPIO_Pin_x where x can be (0..15). + * @retval The input port pin value. + */ +uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) +{ + uint8_t bitstatus = 0x00; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); + + if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET) + { + bitstatus = (uint8_t)Bit_SET; + } + else + { + bitstatus = (uint8_t)Bit_RESET; + } + return bitstatus; +} + +/** + * @brief Reads the specified GPIO input data port. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @retval GPIO input data port value. + */ +uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx) +{ + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + + return ((uint16_t)GPIOx->IDR); +} + +/** + * @brief Reads the specified output data port bit. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @param GPIO_Pin: specifies the port bit to read. + * This parameter can be GPIO_Pin_x where x can be (0..15). + * @retval The output port pin value. + */ +uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) +{ + uint8_t bitstatus = 0x00; + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); + + if ((GPIOx->ODR & GPIO_Pin) != (uint32_t)Bit_RESET) + { + bitstatus = (uint8_t)Bit_SET; + } + else + { + bitstatus = (uint8_t)Bit_RESET; + } + return bitstatus; +} + +/** + * @brief Reads the specified GPIO output data port. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @retval GPIO output data port value. + */ +uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx) +{ + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + + return ((uint16_t)GPIOx->ODR); +} + +/** + * @brief Sets the selected data port bits. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @param GPIO_Pin: specifies the port bits to be written. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * @retval None + */ +void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) +{ + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + GPIOx->BSRR = GPIO_Pin; +} + +/** + * @brief Clears the selected data port bits. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @param GPIO_Pin: specifies the port bits to be written. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * @retval None + */ +void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) +{ + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + GPIOx->BRR = GPIO_Pin; +} + +/** + * @brief Sets or clears the selected data port bit. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @param GPIO_Pin: specifies the port bit to be written. + * This parameter can be one of GPIO_Pin_x where x can be (0..15). + * @param BitVal: specifies the value to be written to the selected bit. + * This parameter can be one of the BitAction enum values: + * @arg Bit_RESET: to clear the port pin + * @arg Bit_SET: to set the port pin + * @retval None + */ +void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal) +{ + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_BIT_ACTION(BitVal)); + + if (BitVal != Bit_RESET) + { + GPIOx->BSRR = GPIO_Pin; + } + else + { + GPIOx->BRR = GPIO_Pin; + } +} + +/** + * @brief Writes data to the specified GPIO data port. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @param PortVal: specifies the value to be written to the port output data register. + * @retval None + */ +void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal) +{ + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + + GPIOx->ODR = PortVal; +} + +/** + * @brief Locks GPIO Pins configuration registers. + * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. + * @param GPIO_Pin: specifies the port bit to be written. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * @retval None + */ +void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) +{ + uint32_t tmp = 0x00010000; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + tmp |= GPIO_Pin; + /* Set LCKK bit */ + GPIOx->LCKR = tmp; + /* Reset LCKK bit */ + GPIOx->LCKR = GPIO_Pin; + /* Set LCKK bit */ + GPIOx->LCKR = tmp; + /* Read LCKK bit*/ + tmp = GPIOx->LCKR; + /* Read LCKK bit*/ + tmp = GPIOx->LCKR; +} + +/** + * @brief Selects the GPIO pin used as Event output. + * @param GPIO_PortSource: selects the GPIO port to be used as source + * for Event output. + * This parameter can be GPIO_PortSourceGPIOx where x can be (A..E). + * @param GPIO_PinSource: specifies the pin for the Event output. + * This parameter can be GPIO_PinSourcex where x can be (0..15). + * @retval None + */ +void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource) +{ + uint32_t tmpreg = 0x00; + /* Check the parameters */ + assert_param(IS_GPIO_EVENTOUT_PORT_SOURCE(GPIO_PortSource)); + assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource)); + + tmpreg = AFIO->EVCR; + /* Clear the PORT[6:4] and PIN[3:0] bits */ + tmpreg &= EVCR_PORTPINCONFIG_MASK; + tmpreg |= (uint32_t)GPIO_PortSource << 0x04; + tmpreg |= GPIO_PinSource; + AFIO->EVCR = tmpreg; +} + +/** + * @brief Enables or disables the Event Output. + * @param NewState: new state of the Event output. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void GPIO_EventOutputCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) EVCR_EVOE_BB = (uint32_t)NewState; +} + +/** + * @brief Changes the mapping of the specified pin. + * @param GPIO_Remap: selects the pin to remap. + * This parameter can be one of the following values: + * @arg GPIO_Remap_SPI1 : SPI1 Alternate Function mapping + * @arg GPIO_Remap_I2C1 : I2C1 Alternate Function mapping + * @arg GPIO_Remap_USART1 : USART1 Alternate Function mapping + * @arg GPIO_Remap_USART2 : USART2 Alternate Function mapping + * @arg GPIO_PartialRemap_USART3 : USART3 Partial Alternate Function mapping + * @arg GPIO_FullRemap_USART3 : USART3 Full Alternate Function mapping + * @arg GPIO_PartialRemap_TIM1 : TIM1 Partial Alternate Function mapping + * @arg GPIO_FullRemap_TIM1 : TIM1 Full Alternate Function mapping + * @arg GPIO_PartialRemap1_TIM2 : TIM2 Partial1 Alternate Function mapping + * @arg GPIO_PartialRemap2_TIM2 : TIM2 Partial2 Alternate Function mapping + * @arg GPIO_FullRemap_TIM2 : TIM2 Full Alternate Function mapping + * @arg GPIO_PartialRemap_TIM3 : TIM3 Partial Alternate Function mapping + * @arg GPIO_FullRemap_TIM3 : TIM3 Full Alternate Function mapping + * @arg GPIO_Remap_TIM4 : TIM4 Alternate Function mapping + * @arg GPIO_Remap1_CAN1 : CAN1 Alternate Function mapping + * @arg GPIO_Remap2_CAN1 : CAN1 Alternate Function mapping + * @arg GPIO_Remap_PD01 : PD01 Alternate Function mapping + * @arg GPIO_Remap_TIM5CH4_LSI : LSI connected to TIM5 Channel4 input capture for calibration + * @arg GPIO_Remap_ADC1_ETRGINJ : ADC1 External Trigger Injected Conversion remapping + * @arg GPIO_Remap_ADC1_ETRGREG : ADC1 External Trigger Regular Conversion remapping + * @arg GPIO_Remap_ADC2_ETRGINJ : ADC2 External Trigger Injected Conversion remapping + * @arg GPIO_Remap_ADC2_ETRGREG : ADC2 External Trigger Regular Conversion remapping + * @arg GPIO_Remap_ETH : Ethernet remapping (only for Connectivity line devices) + * @arg GPIO_Remap_CAN2 : CAN2 remapping (only for Connectivity line devices) + * @arg GPIO_Remap_SWJ_NoJTRST : Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST + * @arg GPIO_Remap_SWJ_JTAGDisable : JTAG-DP Disabled and SW-DP Enabled + * @arg GPIO_Remap_SWJ_Disable : Full SWJ Disabled (JTAG-DP + SW-DP) + * @arg GPIO_Remap_SPI3 : SPI3/I2S3 Alternate Function mapping (only for Connectivity line devices) + * When the SPI3/I2S3 is remapped using this function, the SWJ is configured + * to Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST. + * @arg GPIO_Remap_TIM2ITR1_PTP_SOF : Ethernet PTP output or USB OTG SOF (Start of Frame) connected + * to TIM2 Internal Trigger 1 for calibration (only for Connectivity line devices) + * If the GPIO_Remap_TIM2ITR1_PTP_SOF is enabled the TIM2 ITR1 is connected to + * Ethernet PTP output. When Reset TIM2 ITR1 is connected to USB OTG SOF output. + * @arg GPIO_Remap_PTP_PPS : Ethernet MAC PPS_PTS output on PB05 (only for Connectivity line devices) + * @arg GPIO_Remap_TIM15 : TIM15 Alternate Function mapping (only for Value line devices) + * @arg GPIO_Remap_TIM16 : TIM16 Alternate Function mapping (only for Value line devices) + * @arg GPIO_Remap_TIM17 : TIM17 Alternate Function mapping (only for Value line devices) + * @arg GPIO_Remap_CEC : CEC Alternate Function mapping (only for Value line devices) + * @arg GPIO_Remap_TIM1_DMA : TIM1 DMA requests mapping (only for Value line devices) + * @arg GPIO_Remap_TIM9 : TIM9 Alternate Function mapping (only for XL-density devices) + * @arg GPIO_Remap_TIM10 : TIM10 Alternate Function mapping (only for XL-density devices) + * @arg GPIO_Remap_TIM11 : TIM11 Alternate Function mapping (only for XL-density devices) + * @arg GPIO_Remap_TIM13 : TIM13 Alternate Function mapping (only for High density Value line and XL-density devices) + * @arg GPIO_Remap_TIM14 : TIM14 Alternate Function mapping (only for High density Value line and XL-density devices) + * @arg GPIO_Remap_FSMC_NADV : FSMC_NADV Alternate Function mapping (only for High density Value line and XL-density devices) + * @arg GPIO_Remap_TIM67_DAC_DMA : TIM6/TIM7 and DAC DMA requests remapping (only for High density Value line devices) + * @arg GPIO_Remap_TIM12 : TIM12 Alternate Function mapping (only for High density Value line devices) + * @arg GPIO_Remap_MISC : Miscellaneous Remap (DMA2 Channel5 Position and DAC Trigger remapping, + * only for High density Value line devices) + * @param NewState: new state of the port pin remapping. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState) +{ + uint32_t tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00; + + /* Check the parameters */ + assert_param(IS_GPIO_REMAP(GPIO_Remap)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if((GPIO_Remap & 0x80000000) == 0x80000000) + { + tmpreg = AFIO->MAPR2; + } + else + { + tmpreg = AFIO->MAPR; + } + + tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10; + tmp = GPIO_Remap & LSB_MASK; + + if ((GPIO_Remap & (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) == (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) + { + tmpreg &= DBGAFR_SWJCFG_MASK; + AFIO->MAPR &= DBGAFR_SWJCFG_MASK; + } + else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK) + { + tmp1 = ((uint32_t)0x03) << tmpmask; + tmpreg &= ~tmp1; + tmpreg |= ~DBGAFR_SWJCFG_MASK; + } + else + { + tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15)*0x10)); + tmpreg |= ~DBGAFR_SWJCFG_MASK; + } + + if (NewState != DISABLE) + { + tmpreg |= (tmp << ((GPIO_Remap >> 0x15)*0x10)); + } + + if((GPIO_Remap & 0x80000000) == 0x80000000) + { + AFIO->MAPR2 = tmpreg; + } + else + { + AFIO->MAPR = tmpreg; + } +} + +/** + * @brief Selects the GPIO pin used as EXTI Line. + * @param GPIO_PortSource: selects the GPIO port to be used as source for EXTI lines. + * This parameter can be GPIO_PortSourceGPIOx where x can be (A..G). + * @param GPIO_PinSource: specifies the EXTI line to be configured. + * This parameter can be GPIO_PinSourcex where x can be (0..15). + * @retval None + */ +void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource) +{ + uint32_t tmp = 0x00; + /* Check the parameters */ + assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource)); + assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource)); + + tmp = ((uint32_t)0x0F) << (0x04 * (GPIO_PinSource & (uint8_t)0x03)); + AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp; + AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((uint32_t)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (uint8_t)0x03))); +} + +/** + * @brief Selects the Ethernet media interface. + * @note This function applies only to STM32 Connectivity line devices. + * @param GPIO_ETH_MediaInterface: specifies the Media Interface mode. + * This parameter can be one of the following values: + * @arg GPIO_ETH_MediaInterface_MII: MII mode + * @arg GPIO_ETH_MediaInterface_RMII: RMII mode + * @retval None + */ +void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface) +{ + assert_param(IS_GPIO_ETH_MEDIA_INTERFACE(GPIO_ETH_MediaInterface)); + + /* Configure MII_RMII selection bit */ + *(__IO uint32_t *) MAPR_MII_RMII_SEL_BB = GPIO_ETH_MediaInterface; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c new file mode 100644 index 00000000..88967268 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c @@ -0,0 +1,1331 @@ +/** + ****************************************************************************** + * @file stm32f10x_i2c.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the I2C firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_i2c.h" +#include "stm32f10x_rcc.h" + + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup I2C + * @brief I2C driver modules + * @{ + */ + +/** @defgroup I2C_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup I2C_Private_Defines + * @{ + */ + +/* I2C SPE mask */ +#define CR1_PE_Set ((uint16_t)0x0001) +#define CR1_PE_Reset ((uint16_t)0xFFFE) + +/* I2C START mask */ +#define CR1_START_Set ((uint16_t)0x0100) +#define CR1_START_Reset ((uint16_t)0xFEFF) + +/* I2C STOP mask */ +#define CR1_STOP_Set ((uint16_t)0x0200) +#define CR1_STOP_Reset ((uint16_t)0xFDFF) + +/* I2C ACK mask */ +#define CR1_ACK_Set ((uint16_t)0x0400) +#define CR1_ACK_Reset ((uint16_t)0xFBFF) + +/* I2C ENGC mask */ +#define CR1_ENGC_Set ((uint16_t)0x0040) +#define CR1_ENGC_Reset ((uint16_t)0xFFBF) + +/* I2C SWRST mask */ +#define CR1_SWRST_Set ((uint16_t)0x8000) +#define CR1_SWRST_Reset ((uint16_t)0x7FFF) + +/* I2C PEC mask */ +#define CR1_PEC_Set ((uint16_t)0x1000) +#define CR1_PEC_Reset ((uint16_t)0xEFFF) + +/* I2C ENPEC mask */ +#define CR1_ENPEC_Set ((uint16_t)0x0020) +#define CR1_ENPEC_Reset ((uint16_t)0xFFDF) + +/* I2C ENARP mask */ +#define CR1_ENARP_Set ((uint16_t)0x0010) +#define CR1_ENARP_Reset ((uint16_t)0xFFEF) + +/* I2C NOSTRETCH mask */ +#define CR1_NOSTRETCH_Set ((uint16_t)0x0080) +#define CR1_NOSTRETCH_Reset ((uint16_t)0xFF7F) + +/* I2C registers Masks */ +#define CR1_CLEAR_Mask ((uint16_t)0xFBF5) + +/* I2C DMAEN mask */ +#define CR2_DMAEN_Set ((uint16_t)0x0800) +#define CR2_DMAEN_Reset ((uint16_t)0xF7FF) + +/* I2C LAST mask */ +#define CR2_LAST_Set ((uint16_t)0x1000) +#define CR2_LAST_Reset ((uint16_t)0xEFFF) + +/* I2C FREQ mask */ +#define CR2_FREQ_Reset ((uint16_t)0xFFC0) + +/* I2C ADD0 mask */ +#define OAR1_ADD0_Set ((uint16_t)0x0001) +#define OAR1_ADD0_Reset ((uint16_t)0xFFFE) + +/* I2C ENDUAL mask */ +#define OAR2_ENDUAL_Set ((uint16_t)0x0001) +#define OAR2_ENDUAL_Reset ((uint16_t)0xFFFE) + +/* I2C ADD2 mask */ +#define OAR2_ADD2_Reset ((uint16_t)0xFF01) + +/* I2C F/S mask */ +#define CCR_FS_Set ((uint16_t)0x8000) + +/* I2C CCR mask */ +#define CCR_CCR_Set ((uint16_t)0x0FFF) + +/* I2C FLAG mask */ +#define FLAG_Mask ((uint32_t)0x00FFFFFF) + +/* I2C Interrupt Enable mask */ +#define ITEN_Mask ((uint32_t)0x07000000) + +/** + * @} + */ + +/** @defgroup I2C_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup I2C_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup I2C_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup I2C_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the I2Cx peripheral registers to their default reset values. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @retval None + */ +void I2C_DeInit(I2C_TypeDef* I2Cx) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + + if (I2Cx == I2C1) + { + /* Enable I2C1 reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, ENABLE); + /* Release I2C1 from reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, DISABLE); + } + else + { + /* Enable I2C2 reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, ENABLE); + /* Release I2C2 from reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, DISABLE); + } +} + +/** + * @brief Initializes the I2Cx peripheral according to the specified + * parameters in the I2C_InitStruct. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_InitStruct: pointer to a I2C_InitTypeDef structure that + * contains the configuration information for the specified I2C peripheral. + * @retval None + */ +void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct) +{ + uint16_t tmpreg = 0, freqrange = 0; + uint16_t result = 0x04; + uint32_t pclk1 = 8000000; + RCC_ClocksTypeDef rcc_clocks; + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_CLOCK_SPEED(I2C_InitStruct->I2C_ClockSpeed)); + assert_param(IS_I2C_MODE(I2C_InitStruct->I2C_Mode)); + assert_param(IS_I2C_DUTY_CYCLE(I2C_InitStruct->I2C_DutyCycle)); + assert_param(IS_I2C_OWN_ADDRESS1(I2C_InitStruct->I2C_OwnAddress1)); + assert_param(IS_I2C_ACK_STATE(I2C_InitStruct->I2C_Ack)); + assert_param(IS_I2C_ACKNOWLEDGE_ADDRESS(I2C_InitStruct->I2C_AcknowledgedAddress)); + +/*---------------------------- I2Cx CR2 Configuration ------------------------*/ + /* Get the I2Cx CR2 value */ + tmpreg = I2Cx->CR2; + /* Clear frequency FREQ[5:0] bits */ + tmpreg &= CR2_FREQ_Reset; + /* Get pclk1 frequency value */ + RCC_GetClocksFreq(&rcc_clocks); + pclk1 = rcc_clocks.PCLK1_Frequency; + /* Set frequency bits depending on pclk1 value */ + freqrange = (uint16_t)(pclk1 / 1000000); + tmpreg |= freqrange; + /* Write to I2Cx CR2 */ + I2Cx->CR2 = tmpreg; + +/*---------------------------- I2Cx CCR Configuration ------------------------*/ + /* Disable the selected I2C peripheral to configure TRISE */ + I2Cx->CR1 &= CR1_PE_Reset; + /* Reset tmpreg value */ + /* Clear F/S, DUTY and CCR[11:0] bits */ + tmpreg = 0; + + /* Configure speed in standard mode */ + if (I2C_InitStruct->I2C_ClockSpeed <= 100000) + { + /* Standard mode speed calculate */ + result = (uint16_t)(pclk1 / (I2C_InitStruct->I2C_ClockSpeed << 1)); + /* Test if CCR value is under 0x4*/ + if (result < 0x04) + { + /* Set minimum allowed value */ + result = 0x04; + } + /* Set speed value for standard mode */ + tmpreg |= result; + /* Set Maximum Rise Time for standard mode */ + I2Cx->TRISE = freqrange + 1; + } + /* Configure speed in fast mode */ + else /*(I2C_InitStruct->I2C_ClockSpeed <= 400000)*/ + { + if (I2C_InitStruct->I2C_DutyCycle == I2C_DutyCycle_2) + { + /* Fast mode speed calculate: Tlow/Thigh = 2 */ + result = (uint16_t)(pclk1 / (I2C_InitStruct->I2C_ClockSpeed * 3)); + } + else /*I2C_InitStruct->I2C_DutyCycle == I2C_DutyCycle_16_9*/ + { + /* Fast mode speed calculate: Tlow/Thigh = 16/9 */ + result = (uint16_t)(pclk1 / (I2C_InitStruct->I2C_ClockSpeed * 25)); + /* Set DUTY bit */ + result |= I2C_DutyCycle_16_9; + } + + /* Test if CCR value is under 0x1*/ + if ((result & CCR_CCR_Set) == 0) + { + /* Set minimum allowed value */ + result |= (uint16_t)0x0001; + } + /* Set speed value and set F/S bit for fast mode */ + tmpreg |= (uint16_t)(result | CCR_FS_Set); + /* Set Maximum Rise Time for fast mode */ + I2Cx->TRISE = (uint16_t)(((freqrange * (uint16_t)300) / (uint16_t)1000) + (uint16_t)1); + } + + /* Write to I2Cx CCR */ + I2Cx->CCR = tmpreg; + /* Enable the selected I2C peripheral */ + I2Cx->CR1 |= CR1_PE_Set; + +/*---------------------------- I2Cx CR1 Configuration ------------------------*/ + /* Get the I2Cx CR1 value */ + tmpreg = I2Cx->CR1; + /* Clear ACK, SMBTYPE and SMBUS bits */ + tmpreg &= CR1_CLEAR_Mask; + /* Configure I2Cx: mode and acknowledgement */ + /* Set SMBTYPE and SMBUS bits according to I2C_Mode value */ + /* Set ACK bit according to I2C_Ack value */ + tmpreg |= (uint16_t)((uint32_t)I2C_InitStruct->I2C_Mode | I2C_InitStruct->I2C_Ack); + /* Write to I2Cx CR1 */ + I2Cx->CR1 = tmpreg; + +/*---------------------------- I2Cx OAR1 Configuration -----------------------*/ + /* Set I2Cx Own Address1 and acknowledged address */ + I2Cx->OAR1 = (I2C_InitStruct->I2C_AcknowledgedAddress | I2C_InitStruct->I2C_OwnAddress1); +} + +/** + * @brief Fills each I2C_InitStruct member with its default value. + * @param I2C_InitStruct: pointer to an I2C_InitTypeDef structure which will be initialized. + * @retval None + */ +void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct) +{ +/*---------------- Reset I2C init structure parameters values ----------------*/ + /* initialize the I2C_ClockSpeed member */ + I2C_InitStruct->I2C_ClockSpeed = 5000; + /* Initialize the I2C_Mode member */ + I2C_InitStruct->I2C_Mode = I2C_Mode_I2C; + /* Initialize the I2C_DutyCycle member */ + I2C_InitStruct->I2C_DutyCycle = I2C_DutyCycle_2; + /* Initialize the I2C_OwnAddress1 member */ + I2C_InitStruct->I2C_OwnAddress1 = 0; + /* Initialize the I2C_Ack member */ + I2C_InitStruct->I2C_Ack = I2C_Ack_Disable; + /* Initialize the I2C_AcknowledgedAddress member */ + I2C_InitStruct->I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; +} + +/** + * @brief Enables or disables the specified I2C peripheral. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2Cx peripheral. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected I2C peripheral */ + I2Cx->CR1 |= CR1_PE_Set; + } + else + { + /* Disable the selected I2C peripheral */ + I2Cx->CR1 &= CR1_PE_Reset; + } +} + +/** + * @brief Enables or disables the specified I2C DMA requests. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C DMA transfer. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_DMACmd(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected I2C DMA requests */ + I2Cx->CR2 |= CR2_DMAEN_Set; + } + else + { + /* Disable the selected I2C DMA requests */ + I2Cx->CR2 &= CR2_DMAEN_Reset; + } +} + +/** + * @brief Specifies if the next DMA transfer will be the last one. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C DMA last transfer. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_DMALastTransferCmd(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Next DMA transfer is the last transfer */ + I2Cx->CR2 |= CR2_LAST_Set; + } + else + { + /* Next DMA transfer is not the last transfer */ + I2Cx->CR2 &= CR2_LAST_Reset; + } +} + +/** + * @brief Generates I2Cx communication START condition. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C START condition generation. + * This parameter can be: ENABLE or DISABLE. + * @retval None. + */ +void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Generate a START condition */ + I2Cx->CR1 |= CR1_START_Set; + } + else + { + /* Disable the START condition generation */ + I2Cx->CR1 &= CR1_START_Reset; + } +} + +/** + * @brief Generates I2Cx communication STOP condition. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C STOP condition generation. + * This parameter can be: ENABLE or DISABLE. + * @retval None. + */ +void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Generate a STOP condition */ + I2Cx->CR1 |= CR1_STOP_Set; + } + else + { + /* Disable the STOP condition generation */ + I2Cx->CR1 &= CR1_STOP_Reset; + } +} + +/** + * @brief Enables or disables the specified I2C acknowledge feature. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C Acknowledgement. + * This parameter can be: ENABLE or DISABLE. + * @retval None. + */ +void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the acknowledgement */ + I2Cx->CR1 |= CR1_ACK_Set; + } + else + { + /* Disable the acknowledgement */ + I2Cx->CR1 &= CR1_ACK_Reset; + } +} + +/** + * @brief Configures the specified I2C own address2. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param Address: specifies the 7bit I2C own address2. + * @retval None. + */ +void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint8_t Address) +{ + uint16_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + + /* Get the old register value */ + tmpreg = I2Cx->OAR2; + + /* Reset I2Cx Own address2 bit [7:1] */ + tmpreg &= OAR2_ADD2_Reset; + + /* Set I2Cx Own address2 */ + tmpreg |= (uint16_t)((uint16_t)Address & (uint16_t)0x00FE); + + /* Store the new register value */ + I2Cx->OAR2 = tmpreg; +} + +/** + * @brief Enables or disables the specified I2C dual addressing mode. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C dual addressing mode. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable dual addressing mode */ + I2Cx->OAR2 |= OAR2_ENDUAL_Set; + } + else + { + /* Disable dual addressing mode */ + I2Cx->OAR2 &= OAR2_ENDUAL_Reset; + } +} + +/** + * @brief Enables or disables the specified I2C general call feature. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C General call. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable generall call */ + I2Cx->CR1 |= CR1_ENGC_Set; + } + else + { + /* Disable generall call */ + I2Cx->CR1 &= CR1_ENGC_Reset; + } +} + +/** + * @brief Enables or disables the specified I2C interrupts. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_IT: specifies the I2C interrupts sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg I2C_IT_BUF: Buffer interrupt mask + * @arg I2C_IT_EVT: Event interrupt mask + * @arg I2C_IT_ERR: Error interrupt mask + * @param NewState: new state of the specified I2C interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_ITConfig(I2C_TypeDef* I2Cx, uint16_t I2C_IT, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + assert_param(IS_I2C_CONFIG_IT(I2C_IT)); + + if (NewState != DISABLE) + { + /* Enable the selected I2C interrupts */ + I2Cx->CR2 |= I2C_IT; + } + else + { + /* Disable the selected I2C interrupts */ + I2Cx->CR2 &= (uint16_t)~I2C_IT; + } +} + +/** + * @brief Sends a data byte through the I2Cx peripheral. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param Data: Byte to be transmitted.. + * @retval None + */ +void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + /* Write in the DR register the data to be sent */ + I2Cx->DR = Data; +} + +/** + * @brief Returns the most recent received data by the I2Cx peripheral. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @retval The value of the received data. + */ +uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + /* Return the data in the DR register */ + return (uint8_t)I2Cx->DR; +} + +/** + * @brief Transmits the address byte to select the slave device. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param Address: specifies the slave address which will be transmitted + * @param I2C_Direction: specifies whether the I2C device will be a + * Transmitter or a Receiver. This parameter can be one of the following values + * @arg I2C_Direction_Transmitter: Transmitter mode + * @arg I2C_Direction_Receiver: Receiver mode + * @retval None. + */ +void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_DIRECTION(I2C_Direction)); + /* Test on the direction to set/reset the read/write bit */ + if (I2C_Direction != I2C_Direction_Transmitter) + { + /* Set the address bit0 for read */ + Address |= OAR1_ADD0_Set; + } + else + { + /* Reset the address bit0 for write */ + Address &= OAR1_ADD0_Reset; + } + /* Send the address */ + I2Cx->DR = Address; +} + +/** + * @brief Reads the specified I2C register and returns its value. + * @param I2C_Register: specifies the register to read. + * This parameter can be one of the following values: + * @arg I2C_Register_CR1: CR1 register. + * @arg I2C_Register_CR2: CR2 register. + * @arg I2C_Register_OAR1: OAR1 register. + * @arg I2C_Register_OAR2: OAR2 register. + * @arg I2C_Register_DR: DR register. + * @arg I2C_Register_SR1: SR1 register. + * @arg I2C_Register_SR2: SR2 register. + * @arg I2C_Register_CCR: CCR register. + * @arg I2C_Register_TRISE: TRISE register. + * @retval The value of the read register. + */ +uint16_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_REGISTER(I2C_Register)); + + tmp = (uint32_t) I2Cx; + tmp += I2C_Register; + + /* Return the selected register value */ + return (*(__IO uint16_t *) tmp); +} + +/** + * @brief Enables or disables the specified I2C software reset. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C software reset. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Peripheral under reset */ + I2Cx->CR1 |= CR1_SWRST_Set; + } + else + { + /* Peripheral not under reset */ + I2Cx->CR1 &= CR1_SWRST_Reset; + } +} + +/** + * @brief Selects the specified I2C NACK position in master receiver mode. + * This function is useful in I2C Master Receiver mode when the number + * of data to be received is equal to 2. In this case, this function + * should be called (with parameter I2C_NACKPosition_Next) before data + * reception starts,as described in the 2-byte reception procedure + * recommended in Reference Manual in Section: Master receiver. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_NACKPosition: specifies the NACK position. + * This parameter can be one of the following values: + * @arg I2C_NACKPosition_Next: indicates that the next byte will be the last + * received byte. + * @arg I2C_NACKPosition_Current: indicates that current byte is the last + * received byte. + * + * @note This function configures the same bit (POS) as I2C_PECPositionConfig() + * but is intended to be used in I2C mode while I2C_PECPositionConfig() + * is intended to used in SMBUS mode. + * + * @retval None + */ +void I2C_NACKPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_NACKPosition) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_NACK_POSITION(I2C_NACKPosition)); + + /* Check the input parameter */ + if (I2C_NACKPosition == I2C_NACKPosition_Next) + { + /* Next byte in shift register is the last received byte */ + I2Cx->CR1 |= I2C_NACKPosition_Next; + } + else + { + /* Current byte in shift register is the last received byte */ + I2Cx->CR1 &= I2C_NACKPosition_Current; + } +} + +/** + * @brief Drives the SMBusAlert pin high or low for the specified I2C. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_SMBusAlert: specifies SMBAlert pin level. + * This parameter can be one of the following values: + * @arg I2C_SMBusAlert_Low: SMBAlert pin driven low + * @arg I2C_SMBusAlert_High: SMBAlert pin driven high + * @retval None + */ +void I2C_SMBusAlertConfig(I2C_TypeDef* I2Cx, uint16_t I2C_SMBusAlert) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_SMBUS_ALERT(I2C_SMBusAlert)); + if (I2C_SMBusAlert == I2C_SMBusAlert_Low) + { + /* Drive the SMBusAlert pin Low */ + I2Cx->CR1 |= I2C_SMBusAlert_Low; + } + else + { + /* Drive the SMBusAlert pin High */ + I2Cx->CR1 &= I2C_SMBusAlert_High; + } +} + +/** + * @brief Enables or disables the specified I2C PEC transfer. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2C PEC transmission. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_TransmitPEC(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected I2C PEC transmission */ + I2Cx->CR1 |= CR1_PEC_Set; + } + else + { + /* Disable the selected I2C PEC transmission */ + I2Cx->CR1 &= CR1_PEC_Reset; + } +} + +/** + * @brief Selects the specified I2C PEC position. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_PECPosition: specifies the PEC position. + * This parameter can be one of the following values: + * @arg I2C_PECPosition_Next: indicates that the next byte is PEC + * @arg I2C_PECPosition_Current: indicates that current byte is PEC + * + * @note This function configures the same bit (POS) as I2C_NACKPositionConfig() + * but is intended to be used in SMBUS mode while I2C_NACKPositionConfig() + * is intended to used in I2C mode. + * + * @retval None + */ +void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_PECPosition) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_PEC_POSITION(I2C_PECPosition)); + if (I2C_PECPosition == I2C_PECPosition_Next) + { + /* Next byte in shift register is PEC */ + I2Cx->CR1 |= I2C_PECPosition_Next; + } + else + { + /* Current byte in shift register is PEC */ + I2Cx->CR1 &= I2C_PECPosition_Current; + } +} + +/** + * @brief Enables or disables the PEC value calculation of the transferred bytes. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2Cx PEC value calculation. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected I2C PEC calculation */ + I2Cx->CR1 |= CR1_ENPEC_Set; + } + else + { + /* Disable the selected I2C PEC calculation */ + I2Cx->CR1 &= CR1_ENPEC_Reset; + } +} + +/** + * @brief Returns the PEC value for the specified I2C. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @retval The PEC value. + */ +uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + /* Return the selected I2C PEC value */ + return ((I2Cx->SR2) >> 8); +} + +/** + * @brief Enables or disables the specified I2C ARP. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2Cx ARP. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_ARPCmd(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected I2C ARP */ + I2Cx->CR1 |= CR1_ENARP_Set; + } + else + { + /* Disable the selected I2C ARP */ + I2Cx->CR1 &= CR1_ENARP_Reset; + } +} + +/** + * @brief Enables or disables the specified I2C Clock stretching. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param NewState: new state of the I2Cx Clock stretching. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState == DISABLE) + { + /* Enable the selected I2C Clock stretching */ + I2Cx->CR1 |= CR1_NOSTRETCH_Set; + } + else + { + /* Disable the selected I2C Clock stretching */ + I2Cx->CR1 &= CR1_NOSTRETCH_Reset; + } +} + +/** + * @brief Selects the specified I2C fast mode duty cycle. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_DutyCycle: specifies the fast mode duty cycle. + * This parameter can be one of the following values: + * @arg I2C_DutyCycle_2: I2C fast mode Tlow/Thigh = 2 + * @arg I2C_DutyCycle_16_9: I2C fast mode Tlow/Thigh = 16/9 + * @retval None + */ +void I2C_FastModeDutyCycleConfig(I2C_TypeDef* I2Cx, uint16_t I2C_DutyCycle) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_DUTY_CYCLE(I2C_DutyCycle)); + if (I2C_DutyCycle != I2C_DutyCycle_16_9) + { + /* I2C fast mode Tlow/Thigh=2 */ + I2Cx->CCR &= I2C_DutyCycle_2; + } + else + { + /* I2C fast mode Tlow/Thigh=16/9 */ + I2Cx->CCR |= I2C_DutyCycle_16_9; + } +} + + + +/** + * @brief + **************************************************************************************** + * + * I2C State Monitoring Functions + * + **************************************************************************************** + * This I2C driver provides three different ways for I2C state monitoring + * depending on the application requirements and constraints: + * + * + * 1) Basic state monitoring: + * Using I2C_CheckEvent() function: + * It compares the status registers (SR1 and SR2) content to a given event + * (can be the combination of one or more flags). + * It returns SUCCESS if the current status includes the given flags + * and returns ERROR if one or more flags are missing in the current status. + * - When to use: + * - This function is suitable for most applications as well as for startup + * activity since the events are fully described in the product reference manual + * (RM0008). + * - It is also suitable for users who need to define their own events. + * - Limitations: + * - If an error occurs (ie. error flags are set besides to the monitored flags), + * the I2C_CheckEvent() function may return SUCCESS despite the communication + * hold or corrupted real state. + * In this case, it is advised to use error interrupts to monitor the error + * events and handle them in the interrupt IRQ handler. + * + * @note + * For error management, it is advised to use the following functions: + * - I2C_ITConfig() to configure and enable the error interrupts (I2C_IT_ERR). + * - I2Cx_ER_IRQHandler() which is called when the error interrupt occurs. + * Where x is the peripheral instance (I2C1, I2C2 ...) + * - I2C_GetFlagStatus() or I2C_GetITStatus() to be called into I2Cx_ER_IRQHandler() + * in order to determine which error occured. + * - I2C_ClearFlag() or I2C_ClearITPendingBit() and/or I2C_SoftwareResetCmd() + * and/or I2C_GenerateStop() in order to clear the error flag and source, + * and return to correct communication status. + * + * + * 2) Advanced state monitoring: + * Using the function I2C_GetLastEvent() which returns the image of both status + * registers in a single word (uint32_t) (Status Register 2 value is shifted left + * by 16 bits and concatenated to Status Register 1). + * - When to use: + * - This function is suitable for the same applications above but it allows to + * overcome the mentioned limitation of I2C_GetFlagStatus() function. + * The returned value could be compared to events already defined in the + * library (stm32f10x_i2c.h) or to custom values defined by user. + * - This function is suitable when multiple flags are monitored at the same time. + * - At the opposite of I2C_CheckEvent() function, this function allows user to + * choose when an event is accepted (when all events flags are set and no + * other flags are set or just when the needed flags are set like + * I2C_CheckEvent() function). + * - Limitations: + * - User may need to define his own events. + * - Same remark concerning the error management is applicable for this + * function if user decides to check only regular communication flags (and + * ignores error flags). + * + * + * 3) Flag-based state monitoring: + * Using the function I2C_GetFlagStatus() which simply returns the status of + * one single flag (ie. I2C_FLAG_RXNE ...). + * - When to use: + * - This function could be used for specific applications or in debug phase. + * - It is suitable when only one flag checking is needed (most I2C events + * are monitored through multiple flags). + * - Limitations: + * - When calling this function, the Status register is accessed. Some flags are + * cleared when the status register is accessed. So checking the status + * of one Flag, may clear other ones. + * - Function may need to be called twice or more in order to monitor one + * single event. + * + * For detailed description of Events, please refer to section I2C_Events in + * stm32f10x_i2c.h file. + * + */ + +/** + * + * 1) Basic state monitoring + ******************************************************************************* + */ + +/** + * @brief Checks whether the last I2Cx Event is equal to the one passed + * as parameter. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_EVENT: specifies the event to be checked. + * This parameter can be one of the following values: + * @arg I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED : EV1 + * @arg I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED : EV1 + * @arg I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED : EV1 + * @arg I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED : EV1 + * @arg I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED : EV1 + * @arg I2C_EVENT_SLAVE_BYTE_RECEIVED : EV2 + * @arg (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_DUALF) : EV2 + * @arg (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_GENCALL) : EV2 + * @arg I2C_EVENT_SLAVE_BYTE_TRANSMITTED : EV3 + * @arg (I2C_EVENT_SLAVE_BYTE_TRANSMITTED | I2C_FLAG_DUALF) : EV3 + * @arg (I2C_EVENT_SLAVE_BYTE_TRANSMITTED | I2C_FLAG_GENCALL) : EV3 + * @arg I2C_EVENT_SLAVE_ACK_FAILURE : EV3_2 + * @arg I2C_EVENT_SLAVE_STOP_DETECTED : EV4 + * @arg I2C_EVENT_MASTER_MODE_SELECT : EV5 + * @arg I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED : EV6 + * @arg I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED : EV6 + * @arg I2C_EVENT_MASTER_BYTE_RECEIVED : EV7 + * @arg I2C_EVENT_MASTER_BYTE_TRANSMITTING : EV8 + * @arg I2C_EVENT_MASTER_BYTE_TRANSMITTED : EV8_2 + * @arg I2C_EVENT_MASTER_MODE_ADDRESS10 : EV9 + * + * @note: For detailed description of Events, please refer to section + * I2C_Events in stm32f10x_i2c.h file. + * + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Last event is equal to the I2C_EVENT + * - ERROR: Last event is different from the I2C_EVENT + */ +ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT) +{ + uint32_t lastevent = 0; + uint32_t flag1 = 0, flag2 = 0; + ErrorStatus status = ERROR; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_EVENT(I2C_EVENT)); + + /* Read the I2Cx status register */ + flag1 = I2Cx->SR1; + flag2 = I2Cx->SR2; + flag2 = flag2 << 16; + + /* Get the last event value from I2C status register */ + lastevent = (flag1 | flag2) & FLAG_Mask; + + /* Check whether the last event contains the I2C_EVENT */ + if ((lastevent & I2C_EVENT) == I2C_EVENT) + { + /* SUCCESS: last event is equal to I2C_EVENT */ + status = SUCCESS; + } + else + { + /* ERROR: last event is different from I2C_EVENT */ + status = ERROR; + } + /* Return status */ + return status; +} + +/** + * + * 2) Advanced state monitoring + ******************************************************************************* + */ + +/** + * @brief Returns the last I2Cx Event. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * + * @note: For detailed description of Events, please refer to section + * I2C_Events in stm32f10x_i2c.h file. + * + * @retval The last event + */ +uint32_t I2C_GetLastEvent(I2C_TypeDef* I2Cx) +{ + uint32_t lastevent = 0; + uint32_t flag1 = 0, flag2 = 0; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + + /* Read the I2Cx status register */ + flag1 = I2Cx->SR1; + flag2 = I2Cx->SR2; + flag2 = flag2 << 16; + + /* Get the last event value from I2C status register */ + lastevent = (flag1 | flag2) & FLAG_Mask; + + /* Return status */ + return lastevent; +} + +/** + * + * 3) Flag-based state monitoring + ******************************************************************************* + */ + +/** + * @brief Checks whether the specified I2C flag is set or not. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg I2C_FLAG_DUALF: Dual flag (Slave mode) + * @arg I2C_FLAG_SMBHOST: SMBus host header (Slave mode) + * @arg I2C_FLAG_SMBDEFAULT: SMBus default header (Slave mode) + * @arg I2C_FLAG_GENCALL: General call header flag (Slave mode) + * @arg I2C_FLAG_TRA: Transmitter/Receiver flag + * @arg I2C_FLAG_BUSY: Bus busy flag + * @arg I2C_FLAG_MSL: Master/Slave flag + * @arg I2C_FLAG_SMBALERT: SMBus Alert flag + * @arg I2C_FLAG_TIMEOUT: Timeout or Tlow error flag + * @arg I2C_FLAG_PECERR: PEC error in reception flag + * @arg I2C_FLAG_OVR: Overrun/Underrun flag (Slave mode) + * @arg I2C_FLAG_AF: Acknowledge failure flag + * @arg I2C_FLAG_ARLO: Arbitration lost flag (Master mode) + * @arg I2C_FLAG_BERR: Bus error flag + * @arg I2C_FLAG_TXE: Data register empty flag (Transmitter) + * @arg I2C_FLAG_RXNE: Data register not empty (Receiver) flag + * @arg I2C_FLAG_STOPF: Stop detection flag (Slave mode) + * @arg I2C_FLAG_ADD10: 10-bit header sent flag (Master mode) + * @arg I2C_FLAG_BTF: Byte transfer finished flag + * @arg I2C_FLAG_ADDR: Address sent flag (Master mode) "ADSL" + * Address matched flag (Slave mode)"ENDA" + * @arg I2C_FLAG_SB: Start bit flag (Master mode) + * @retval The new state of I2C_FLAG (SET or RESET). + */ +FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG) +{ + FlagStatus bitstatus = RESET; + __IO uint32_t i2creg = 0, i2cxbase = 0; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_GET_FLAG(I2C_FLAG)); + + /* Get the I2Cx peripheral base address */ + i2cxbase = (uint32_t)I2Cx; + + /* Read flag register index */ + i2creg = I2C_FLAG >> 28; + + /* Get bit[23:0] of the flag */ + I2C_FLAG &= FLAG_Mask; + + if(i2creg != 0) + { + /* Get the I2Cx SR1 register address */ + i2cxbase += 0x14; + } + else + { + /* Flag in I2Cx SR2 Register */ + I2C_FLAG = (uint32_t)(I2C_FLAG >> 16); + /* Get the I2Cx SR2 register address */ + i2cxbase += 0x18; + } + + if(((*(__IO uint32_t *)i2cxbase) & I2C_FLAG) != (uint32_t)RESET) + { + /* I2C_FLAG is set */ + bitstatus = SET; + } + else + { + /* I2C_FLAG is reset */ + bitstatus = RESET; + } + + /* Return the I2C_FLAG status */ + return bitstatus; +} + + + +/** + * @brief Clears the I2Cx's pending flags. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_FLAG: specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg I2C_FLAG_SMBALERT: SMBus Alert flag + * @arg I2C_FLAG_TIMEOUT: Timeout or Tlow error flag + * @arg I2C_FLAG_PECERR: PEC error in reception flag + * @arg I2C_FLAG_OVR: Overrun/Underrun flag (Slave mode) + * @arg I2C_FLAG_AF: Acknowledge failure flag + * @arg I2C_FLAG_ARLO: Arbitration lost flag (Master mode) + * @arg I2C_FLAG_BERR: Bus error flag + * + * @note + * - STOPF (STOP detection) is cleared by software sequence: a read operation + * to I2C_SR1 register (I2C_GetFlagStatus()) followed by a write operation + * to I2C_CR1 register (I2C_Cmd() to re-enable the I2C peripheral). + * - ADD10 (10-bit header sent) is cleared by software sequence: a read + * operation to I2C_SR1 (I2C_GetFlagStatus()) followed by writing the + * second byte of the address in DR register. + * - BTF (Byte Transfer Finished) is cleared by software sequence: a read + * operation to I2C_SR1 register (I2C_GetFlagStatus()) followed by a + * read/write to I2C_DR register (I2C_SendData()). + * - ADDR (Address sent) is cleared by software sequence: a read operation to + * I2C_SR1 register (I2C_GetFlagStatus()) followed by a read operation to + * I2C_SR2 register ((void)(I2Cx->SR2)). + * - SB (Start Bit) is cleared software sequence: a read operation to I2C_SR1 + * register (I2C_GetFlagStatus()) followed by a write operation to I2C_DR + * register (I2C_SendData()). + * @retval None + */ +void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG) +{ + uint32_t flagpos = 0; + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_CLEAR_FLAG(I2C_FLAG)); + /* Get the I2C flag position */ + flagpos = I2C_FLAG & FLAG_Mask; + /* Clear the selected I2C flag */ + I2Cx->SR1 = (uint16_t)~flagpos; +} + +/** + * @brief Checks whether the specified I2C interrupt has occurred or not. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_IT: specifies the interrupt source to check. + * This parameter can be one of the following values: + * @arg I2C_IT_SMBALERT: SMBus Alert flag + * @arg I2C_IT_TIMEOUT: Timeout or Tlow error flag + * @arg I2C_IT_PECERR: PEC error in reception flag + * @arg I2C_IT_OVR: Overrun/Underrun flag (Slave mode) + * @arg I2C_IT_AF: Acknowledge failure flag + * @arg I2C_IT_ARLO: Arbitration lost flag (Master mode) + * @arg I2C_IT_BERR: Bus error flag + * @arg I2C_IT_TXE: Data register empty flag (Transmitter) + * @arg I2C_IT_RXNE: Data register not empty (Receiver) flag + * @arg I2C_IT_STOPF: Stop detection flag (Slave mode) + * @arg I2C_IT_ADD10: 10-bit header sent flag (Master mode) + * @arg I2C_IT_BTF: Byte transfer finished flag + * @arg I2C_IT_ADDR: Address sent flag (Master mode) "ADSL" + * Address matched flag (Slave mode)"ENDAD" + * @arg I2C_IT_SB: Start bit flag (Master mode) + * @retval The new state of I2C_IT (SET or RESET). + */ +ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT) +{ + ITStatus bitstatus = RESET; + uint32_t enablestatus = 0; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_GET_IT(I2C_IT)); + + /* Check if the interrupt source is enabled or not */ + enablestatus = (uint32_t)(((I2C_IT & ITEN_Mask) >> 16) & (I2Cx->CR2)) ; + + /* Get bit[23:0] of the flag */ + I2C_IT &= FLAG_Mask; + + /* Check the status of the specified I2C flag */ + if (((I2Cx->SR1 & I2C_IT) != (uint32_t)RESET) && enablestatus) + { + /* I2C_IT is set */ + bitstatus = SET; + } + else + { + /* I2C_IT is reset */ + bitstatus = RESET; + } + /* Return the I2C_IT status */ + return bitstatus; +} + +/** + * @brief Clears the I2Cx’s interrupt pending bits. + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param I2C_IT: specifies the interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg I2C_IT_SMBALERT: SMBus Alert interrupt + * @arg I2C_IT_TIMEOUT: Timeout or Tlow error interrupt + * @arg I2C_IT_PECERR: PEC error in reception interrupt + * @arg I2C_IT_OVR: Overrun/Underrun interrupt (Slave mode) + * @arg I2C_IT_AF: Acknowledge failure interrupt + * @arg I2C_IT_ARLO: Arbitration lost interrupt (Master mode) + * @arg I2C_IT_BERR: Bus error interrupt + * + * @note + * - STOPF (STOP detection) is cleared by software sequence: a read operation + * to I2C_SR1 register (I2C_GetITStatus()) followed by a write operation to + * I2C_CR1 register (I2C_Cmd() to re-enable the I2C peripheral). + * - ADD10 (10-bit header sent) is cleared by software sequence: a read + * operation to I2C_SR1 (I2C_GetITStatus()) followed by writing the second + * byte of the address in I2C_DR register. + * - BTF (Byte Transfer Finished) is cleared by software sequence: a read + * operation to I2C_SR1 register (I2C_GetITStatus()) followed by a + * read/write to I2C_DR register (I2C_SendData()). + * - ADDR (Address sent) is cleared by software sequence: a read operation to + * I2C_SR1 register (I2C_GetITStatus()) followed by a read operation to + * I2C_SR2 register ((void)(I2Cx->SR2)). + * - SB (Start Bit) is cleared by software sequence: a read operation to + * I2C_SR1 register (I2C_GetITStatus()) followed by a write operation to + * I2C_DR register (I2C_SendData()). + * @retval None + */ +void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT) +{ + uint32_t flagpos = 0; + /* Check the parameters */ + assert_param(IS_I2C_ALL_PERIPH(I2Cx)); + assert_param(IS_I2C_CLEAR_IT(I2C_IT)); + /* Get the I2C flag position */ + flagpos = I2C_IT & FLAG_Mask; + /* Clear the selected I2C flag */ + I2Cx->SR1 = (uint16_t)~flagpos; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c new file mode 100644 index 00000000..9d3b0e85 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c @@ -0,0 +1,190 @@ +/** + ****************************************************************************** + * @file stm32f10x_iwdg.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the IWDG firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_iwdg.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup IWDG + * @brief IWDG driver modules + * @{ + */ + +/** @defgroup IWDG_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup IWDG_Private_Defines + * @{ + */ + +/* ---------------------- IWDG registers bit mask ----------------------------*/ + +/* KR register bit mask */ +#define KR_KEY_Reload ((uint16_t)0xAAAA) +#define KR_KEY_Enable ((uint16_t)0xCCCC) + +/** + * @} + */ + +/** @defgroup IWDG_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup IWDG_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup IWDG_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup IWDG_Private_Functions + * @{ + */ + +/** + * @brief Enables or disables write access to IWDG_PR and IWDG_RLR registers. + * @param IWDG_WriteAccess: new state of write access to IWDG_PR and IWDG_RLR registers. + * This parameter can be one of the following values: + * @arg IWDG_WriteAccess_Enable: Enable write access to IWDG_PR and IWDG_RLR registers + * @arg IWDG_WriteAccess_Disable: Disable write access to IWDG_PR and IWDG_RLR registers + * @retval None + */ +void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess) +{ + /* Check the parameters */ + assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess)); + IWDG->KR = IWDG_WriteAccess; +} + +/** + * @brief Sets IWDG Prescaler value. + * @param IWDG_Prescaler: specifies the IWDG Prescaler value. + * This parameter can be one of the following values: + * @arg IWDG_Prescaler_4: IWDG prescaler set to 4 + * @arg IWDG_Prescaler_8: IWDG prescaler set to 8 + * @arg IWDG_Prescaler_16: IWDG prescaler set to 16 + * @arg IWDG_Prescaler_32: IWDG prescaler set to 32 + * @arg IWDG_Prescaler_64: IWDG prescaler set to 64 + * @arg IWDG_Prescaler_128: IWDG prescaler set to 128 + * @arg IWDG_Prescaler_256: IWDG prescaler set to 256 + * @retval None + */ +void IWDG_SetPrescaler(uint8_t IWDG_Prescaler) +{ + /* Check the parameters */ + assert_param(IS_IWDG_PRESCALER(IWDG_Prescaler)); + IWDG->PR = IWDG_Prescaler; +} + +/** + * @brief Sets IWDG Reload value. + * @param Reload: specifies the IWDG Reload value. + * This parameter must be a number between 0 and 0x0FFF. + * @retval None + */ +void IWDG_SetReload(uint16_t Reload) +{ + /* Check the parameters */ + assert_param(IS_IWDG_RELOAD(Reload)); + IWDG->RLR = Reload; +} + +/** + * @brief Reloads IWDG counter with value defined in the reload register + * (write access to IWDG_PR and IWDG_RLR registers disabled). + * @param None + * @retval None + */ +void IWDG_ReloadCounter(void) +{ + IWDG->KR = KR_KEY_Reload; +} + +/** + * @brief Enables IWDG (write access to IWDG_PR and IWDG_RLR registers disabled). + * @param None + * @retval None + */ +void IWDG_Enable(void) +{ + IWDG->KR = KR_KEY_Enable; +} + +/** + * @brief Checks whether the specified IWDG flag is set or not. + * @param IWDG_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg IWDG_FLAG_PVU: Prescaler Value Update on going + * @arg IWDG_FLAG_RVU: Reload Value Update on going + * @retval The new state of IWDG_FLAG (SET or RESET). + */ +FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_IWDG_FLAG(IWDG_FLAG)); + if ((IWDG->SR & IWDG_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + /* Return the flag status */ + return bitstatus; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c new file mode 100644 index 00000000..147bf0f8 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c @@ -0,0 +1,307 @@ +/** + ****************************************************************************** + * @file stm32f10x_pwr.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the PWR firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_pwr.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup PWR + * @brief PWR driver modules + * @{ + */ + +/** @defgroup PWR_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup PWR_Private_Defines + * @{ + */ + +/* --------- PWR registers bit address in the alias region ---------- */ +#define PWR_OFFSET (PWR_BASE - PERIPH_BASE) + +/* --- CR Register ---*/ + +/* Alias word address of DBP bit */ +#define CR_OFFSET (PWR_OFFSET + 0x00) +#define DBP_BitNumber 0x08 +#define CR_DBP_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (DBP_BitNumber * 4)) + +/* Alias word address of PVDE bit */ +#define PVDE_BitNumber 0x04 +#define CR_PVDE_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (PVDE_BitNumber * 4)) + +/* --- CSR Register ---*/ + +/* Alias word address of EWUP bit */ +#define CSR_OFFSET (PWR_OFFSET + 0x04) +#define EWUP_BitNumber 0x08 +#define CSR_EWUP_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (EWUP_BitNumber * 4)) + +/* ------------------ PWR registers bit mask ------------------------ */ + +/* CR register bit mask */ +#define CR_DS_MASK ((uint32_t)0xFFFFFFFC) +#define CR_PLS_MASK ((uint32_t)0xFFFFFF1F) + + +/** + * @} + */ + +/** @defgroup PWR_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup PWR_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup PWR_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup PWR_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the PWR peripheral registers to their default reset values. + * @param None + * @retval None + */ +void PWR_DeInit(void) +{ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, DISABLE); +} + +/** + * @brief Enables or disables access to the RTC and backup registers. + * @param NewState: new state of the access to the RTC and backup registers. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void PWR_BackupAccessCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CR_DBP_BB = (uint32_t)NewState; +} + +/** + * @brief Enables or disables the Power Voltage Detector(PVD). + * @param NewState: new state of the PVD. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void PWR_PVDCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CR_PVDE_BB = (uint32_t)NewState; +} + +/** + * @brief Configures the voltage threshold detected by the Power Voltage Detector(PVD). + * @param PWR_PVDLevel: specifies the PVD detection level + * This parameter can be one of the following values: + * @arg PWR_PVDLevel_2V2: PVD detection level set to 2.2V + * @arg PWR_PVDLevel_2V3: PVD detection level set to 2.3V + * @arg PWR_PVDLevel_2V4: PVD detection level set to 2.4V + * @arg PWR_PVDLevel_2V5: PVD detection level set to 2.5V + * @arg PWR_PVDLevel_2V6: PVD detection level set to 2.6V + * @arg PWR_PVDLevel_2V7: PVD detection level set to 2.7V + * @arg PWR_PVDLevel_2V8: PVD detection level set to 2.8V + * @arg PWR_PVDLevel_2V9: PVD detection level set to 2.9V + * @retval None + */ +void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_PWR_PVD_LEVEL(PWR_PVDLevel)); + tmpreg = PWR->CR; + /* Clear PLS[7:5] bits */ + tmpreg &= CR_PLS_MASK; + /* Set PLS[7:5] bits according to PWR_PVDLevel value */ + tmpreg |= PWR_PVDLevel; + /* Store the new value */ + PWR->CR = tmpreg; +} + +/** + * @brief Enables or disables the WakeUp Pin functionality. + * @param NewState: new state of the WakeUp Pin functionality. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void PWR_WakeUpPinCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CSR_EWUP_BB = (uint32_t)NewState; +} + +/** + * @brief Enters STOP mode. + * @param PWR_Regulator: specifies the regulator state in STOP mode. + * This parameter can be one of the following values: + * @arg PWR_Regulator_ON: STOP mode with regulator ON + * @arg PWR_Regulator_LowPower: STOP mode with regulator in low power mode + * @param PWR_STOPEntry: specifies if STOP mode in entered with WFI or WFE instruction. + * This parameter can be one of the following values: + * @arg PWR_STOPEntry_WFI: enter STOP mode with WFI instruction + * @arg PWR_STOPEntry_WFE: enter STOP mode with WFE instruction + * @retval None + */ +void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(PWR_Regulator)); + assert_param(IS_PWR_STOP_ENTRY(PWR_STOPEntry)); + + /* Select the regulator state in STOP mode ---------------------------------*/ + tmpreg = PWR->CR; + /* Clear PDDS and LPDS bits */ + tmpreg &= CR_DS_MASK; + /* Set LPDS bit according to PWR_Regulator value */ + tmpreg |= PWR_Regulator; + /* Store the new value */ + PWR->CR = tmpreg; + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SCB->SCR |= SCB_SCR_SLEEPDEEP; + + /* Select STOP mode entry --------------------------------------------------*/ + if(PWR_STOPEntry == PWR_STOPEntry_WFI) + { + /* Request Wait For Interrupt */ + __WFI(); + } + else + { + /* Request Wait For Event */ + __WFE(); + } + + /* Reset SLEEPDEEP bit of Cortex System Control Register */ + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +} + +/** + * @brief Enters STANDBY mode. + * @param None + * @retval None + */ +void PWR_EnterSTANDBYMode(void) +{ + /* Clear Wake-up flag */ + PWR->CR |= PWR_CR_CWUF; + /* Select STANDBY mode */ + PWR->CR |= PWR_CR_PDDS; + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SCB->SCR |= SCB_SCR_SLEEPDEEP; +/* This option is used to ensure that store operations are completed */ +#if defined ( __CC_ARM ) + __force_stores(); +#endif + /* Request Wait For Interrupt */ + __WFI(); +} + +/** + * @brief Checks whether the specified PWR flag is set or not. + * @param PWR_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg PWR_FLAG_WU: Wake Up flag + * @arg PWR_FLAG_SB: StandBy flag + * @arg PWR_FLAG_PVDO: PVD Output + * @retval The new state of PWR_FLAG (SET or RESET). + */ +FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_PWR_GET_FLAG(PWR_FLAG)); + + if ((PWR->CSR & PWR_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + /* Return the flag status */ + return bitstatus; +} + +/** + * @brief Clears the PWR's pending flags. + * @param PWR_FLAG: specifies the flag to clear. + * This parameter can be one of the following values: + * @arg PWR_FLAG_WU: Wake Up flag + * @arg PWR_FLAG_SB: StandBy flag + * @retval None + */ +void PWR_ClearFlag(uint32_t PWR_FLAG) +{ + /* Check the parameters */ + assert_param(IS_PWR_CLEAR_FLAG(PWR_FLAG)); + + PWR->CR |= PWR_FLAG << 2; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c new file mode 100644 index 00000000..4b2ec1f1 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c @@ -0,0 +1,1470 @@ +/** + ****************************************************************************** + * @file stm32f10x_rcc.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the RCC firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup RCC + * @brief RCC driver modules + * @{ + */ + +/** @defgroup RCC_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup RCC_Private_Defines + * @{ + */ + +/* ------------ RCC registers bit address in the alias region ----------- */ +#define RCC_OFFSET (RCC_BASE - PERIPH_BASE) + +/* --- CR Register ---*/ + +/* Alias word address of HSION bit */ +#define CR_OFFSET (RCC_OFFSET + 0x00) +#define HSION_BitNumber 0x00 +#define CR_HSION_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (HSION_BitNumber * 4)) + +/* Alias word address of PLLON bit */ +#define PLLON_BitNumber 0x18 +#define CR_PLLON_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (PLLON_BitNumber * 4)) + +#ifdef STM32F10X_CL + /* Alias word address of PLL2ON bit */ + #define PLL2ON_BitNumber 0x1A + #define CR_PLL2ON_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (PLL2ON_BitNumber * 4)) + + /* Alias word address of PLL3ON bit */ + #define PLL3ON_BitNumber 0x1C + #define CR_PLL3ON_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (PLL3ON_BitNumber * 4)) +#endif /* STM32F10X_CL */ + +/* Alias word address of CSSON bit */ +#define CSSON_BitNumber 0x13 +#define CR_CSSON_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (CSSON_BitNumber * 4)) + +/* --- CFGR Register ---*/ + +/* Alias word address of USBPRE bit */ +#define CFGR_OFFSET (RCC_OFFSET + 0x04) + +#ifndef STM32F10X_CL + #define USBPRE_BitNumber 0x16 + #define CFGR_USBPRE_BB (PERIPH_BB_BASE + (CFGR_OFFSET * 32) + (USBPRE_BitNumber * 4)) +#else + #define OTGFSPRE_BitNumber 0x16 + #define CFGR_OTGFSPRE_BB (PERIPH_BB_BASE + (CFGR_OFFSET * 32) + (OTGFSPRE_BitNumber * 4)) +#endif /* STM32F10X_CL */ + +/* --- BDCR Register ---*/ + +/* Alias word address of RTCEN bit */ +#define BDCR_OFFSET (RCC_OFFSET + 0x20) +#define RTCEN_BitNumber 0x0F +#define BDCR_RTCEN_BB (PERIPH_BB_BASE + (BDCR_OFFSET * 32) + (RTCEN_BitNumber * 4)) + +/* Alias word address of BDRST bit */ +#define BDRST_BitNumber 0x10 +#define BDCR_BDRST_BB (PERIPH_BB_BASE + (BDCR_OFFSET * 32) + (BDRST_BitNumber * 4)) + +/* --- CSR Register ---*/ + +/* Alias word address of LSION bit */ +#define CSR_OFFSET (RCC_OFFSET + 0x24) +#define LSION_BitNumber 0x00 +#define CSR_LSION_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (LSION_BitNumber * 4)) + +#ifdef STM32F10X_CL +/* --- CFGR2 Register ---*/ + + /* Alias word address of I2S2SRC bit */ + #define CFGR2_OFFSET (RCC_OFFSET + 0x2C) + #define I2S2SRC_BitNumber 0x11 + #define CFGR2_I2S2SRC_BB (PERIPH_BB_BASE + (CFGR2_OFFSET * 32) + (I2S2SRC_BitNumber * 4)) + + /* Alias word address of I2S3SRC bit */ + #define I2S3SRC_BitNumber 0x12 + #define CFGR2_I2S3SRC_BB (PERIPH_BB_BASE + (CFGR2_OFFSET * 32) + (I2S3SRC_BitNumber * 4)) +#endif /* STM32F10X_CL */ + +/* ---------------------- RCC registers bit mask ------------------------ */ + +/* CR register bit mask */ +#define CR_HSEBYP_Reset ((uint32_t)0xFFFBFFFF) +#define CR_HSEBYP_Set ((uint32_t)0x00040000) +#define CR_HSEON_Reset ((uint32_t)0xFFFEFFFF) +#define CR_HSEON_Set ((uint32_t)0x00010000) +#define CR_HSITRIM_Mask ((uint32_t)0xFFFFFF07) + +/* CFGR register bit mask */ +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) || defined (STM32F10X_CL) + #define CFGR_PLL_Mask ((uint32_t)0xFFC2FFFF) +#else + #define CFGR_PLL_Mask ((uint32_t)0xFFC0FFFF) +#endif /* STM32F10X_CL */ + +#define CFGR_PLLMull_Mask ((uint32_t)0x003C0000) +#define CFGR_PLLSRC_Mask ((uint32_t)0x00010000) +#define CFGR_PLLXTPRE_Mask ((uint32_t)0x00020000) +#define CFGR_SWS_Mask ((uint32_t)0x0000000C) +#define CFGR_SW_Mask ((uint32_t)0xFFFFFFFC) +#define CFGR_HPRE_Reset_Mask ((uint32_t)0xFFFFFF0F) +#define CFGR_HPRE_Set_Mask ((uint32_t)0x000000F0) +#define CFGR_PPRE1_Reset_Mask ((uint32_t)0xFFFFF8FF) +#define CFGR_PPRE1_Set_Mask ((uint32_t)0x00000700) +#define CFGR_PPRE2_Reset_Mask ((uint32_t)0xFFFFC7FF) +#define CFGR_PPRE2_Set_Mask ((uint32_t)0x00003800) +#define CFGR_ADCPRE_Reset_Mask ((uint32_t)0xFFFF3FFF) +#define CFGR_ADCPRE_Set_Mask ((uint32_t)0x0000C000) + +/* CSR register bit mask */ +#define CSR_RMVF_Set ((uint32_t)0x01000000) + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) || defined (STM32F10X_CL) +/* CFGR2 register bit mask */ + #define CFGR2_PREDIV1SRC ((uint32_t)0x00010000) + #define CFGR2_PREDIV1 ((uint32_t)0x0000000F) +#endif +#ifdef STM32F10X_CL + #define CFGR2_PREDIV2 ((uint32_t)0x000000F0) + #define CFGR2_PLL2MUL ((uint32_t)0x00000F00) + #define CFGR2_PLL3MUL ((uint32_t)0x0000F000) +#endif /* STM32F10X_CL */ + +/* RCC Flag Mask */ +#define FLAG_Mask ((uint8_t)0x1F) + +/* CIR register byte 2 (Bits[15:8]) base address */ +#define CIR_BYTE2_ADDRESS ((uint32_t)0x40021009) + +/* CIR register byte 3 (Bits[23:16]) base address */ +#define CIR_BYTE3_ADDRESS ((uint32_t)0x4002100A) + +/* CFGR register byte 4 (Bits[31:24]) base address */ +#define CFGR_BYTE4_ADDRESS ((uint32_t)0x40021007) + +/* BDCR register base address */ +#define BDCR_ADDRESS (PERIPH_BASE + BDCR_OFFSET) + +/** + * @} + */ + +/** @defgroup RCC_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup RCC_Private_Variables + * @{ + */ + +static __I uint8_t APBAHBPrescTable[16] = {0, 0, 0, 0, 1, 2, 3, 4, 1, 2, 3, 4, 6, 7, 8, 9}; +static __I uint8_t ADCPrescTable[4] = {2, 4, 6, 8}; + +/** + * @} + */ + +/** @defgroup RCC_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup RCC_Private_Functions + * @{ + */ + +/** + * @brief Resets the RCC clock configuration to the default reset state. + * @param None + * @retval None + */ +void RCC_DeInit(void) +{ + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ +#ifndef STM32F10X_CL + RCC->CFGR &= (uint32_t)0xF8FF0000; +#else + RCC->CFGR &= (uint32_t)0xF0FF0000; +#endif /* STM32F10X_CL */ + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (uint32_t)0xFF80FFFF; + +#ifdef STM32F10X_CL + /* Reset PLL2ON and PLL3ON bits */ + RCC->CR &= (uint32_t)0xEBFFFFFF; + + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x00FF0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#else + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; +#endif /* STM32F10X_CL */ + +} + +/** + * @brief Configures the External High Speed oscillator (HSE). + * @note HSE can not be stopped if it is used directly or through the PLL as system clock. + * @param RCC_HSE: specifies the new state of the HSE. + * This parameter can be one of the following values: + * @arg RCC_HSE_OFF: HSE oscillator OFF + * @arg RCC_HSE_ON: HSE oscillator ON + * @arg RCC_HSE_Bypass: HSE oscillator bypassed with external clock + * @retval None + */ +void RCC_HSEConfig(uint32_t RCC_HSE) +{ + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_HSE)); + /* Reset HSEON and HSEBYP bits before configuring the HSE ------------------*/ + /* Reset HSEON bit */ + RCC->CR &= CR_HSEON_Reset; + /* Reset HSEBYP bit */ + RCC->CR &= CR_HSEBYP_Reset; + /* Configure HSE (RCC_HSE_OFF is already covered by the code section above) */ + switch(RCC_HSE) + { + case RCC_HSE_ON: + /* Set HSEON bit */ + RCC->CR |= CR_HSEON_Set; + break; + + case RCC_HSE_Bypass: + /* Set HSEBYP and HSEON bits */ + RCC->CR |= CR_HSEBYP_Set | CR_HSEON_Set; + break; + + default: + break; + } +} + +/** + * @brief Waits for HSE start-up. + * @param None + * @retval An ErrorStatus enumuration value: + * - SUCCESS: HSE oscillator is stable and ready to use + * - ERROR: HSE oscillator not yet ready + */ +ErrorStatus RCC_WaitForHSEStartUp(void) +{ + __IO uint32_t StartUpCounter = 0; + ErrorStatus status = ERROR; + FlagStatus HSEStatus = RESET; + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC_GetFlagStatus(RCC_FLAG_HSERDY); + StartUpCounter++; + } while((StartUpCounter != HSE_STARTUP_TIMEOUT) && (HSEStatus == RESET)); + + if (RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET) + { + status = SUCCESS; + } + else + { + status = ERROR; + } + return (status); +} + +/** + * @brief Adjusts the Internal High Speed oscillator (HSI) calibration value. + * @param HSICalibrationValue: specifies the calibration trimming value. + * This parameter must be a number between 0 and 0x1F. + * @retval None + */ +void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_RCC_CALIBRATION_VALUE(HSICalibrationValue)); + tmpreg = RCC->CR; + /* Clear HSITRIM[4:0] bits */ + tmpreg &= CR_HSITRIM_Mask; + /* Set the HSITRIM[4:0] bits according to HSICalibrationValue value */ + tmpreg |= (uint32_t)HSICalibrationValue << 3; + /* Store the new value */ + RCC->CR = tmpreg; +} + +/** + * @brief Enables or disables the Internal High Speed oscillator (HSI). + * @note HSI can not be stopped if it is used directly or through the PLL as system clock. + * @param NewState: new state of the HSI. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_HSICmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CR_HSION_BB = (uint32_t)NewState; +} + +/** + * @brief Configures the PLL clock source and multiplication factor. + * @note This function must be used only when the PLL is disabled. + * @param RCC_PLLSource: specifies the PLL entry clock source. + * For @b STM32_Connectivity_line_devices or @b STM32_Value_line_devices, + * this parameter can be one of the following values: + * @arg RCC_PLLSource_HSI_Div2: HSI oscillator clock divided by 2 selected as PLL clock entry + * @arg RCC_PLLSource_PREDIV1: PREDIV1 clock selected as PLL clock entry + * For @b other_STM32_devices, this parameter can be one of the following values: + * @arg RCC_PLLSource_HSI_Div2: HSI oscillator clock divided by 2 selected as PLL clock entry + * @arg RCC_PLLSource_HSE_Div1: HSE oscillator clock selected as PLL clock entry + * @arg RCC_PLLSource_HSE_Div2: HSE oscillator clock divided by 2 selected as PLL clock entry + * @param RCC_PLLMul: specifies the PLL multiplication factor. + * For @b STM32_Connectivity_line_devices, this parameter can be RCC_PLLMul_x where x:{[4,9], 6_5} + * For @b other_STM32_devices, this parameter can be RCC_PLLMul_x where x:[2,16] + * @retval None + */ +void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_RCC_PLL_SOURCE(RCC_PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_PLLMul)); + + tmpreg = RCC->CFGR; + /* Clear PLLSRC, PLLXTPRE and PLLMUL[3:0] bits */ + tmpreg &= CFGR_PLL_Mask; + /* Set the PLL configuration bits */ + tmpreg |= RCC_PLLSource | RCC_PLLMul; + /* Store the new value */ + RCC->CFGR = tmpreg; +} + +/** + * @brief Enables or disables the PLL. + * @note The PLL can not be disabled if it is used as system clock. + * @param NewState: new state of the PLL. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_PLLCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CR_PLLON_BB = (uint32_t)NewState; +} + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) || defined (STM32F10X_CL) +/** + * @brief Configures the PREDIV1 division factor. + * @note + * - This function must be used only when the PLL is disabled. + * - This function applies only to STM32 Connectivity line and Value line + * devices. + * @param RCC_PREDIV1_Source: specifies the PREDIV1 clock source. + * This parameter can be one of the following values: + * @arg RCC_PREDIV1_Source_HSE: HSE selected as PREDIV1 clock + * @arg RCC_PREDIV1_Source_PLL2: PLL2 selected as PREDIV1 clock + * @note + * For @b STM32_Value_line_devices this parameter is always RCC_PREDIV1_Source_HSE + * @param RCC_PREDIV1_Div: specifies the PREDIV1 clock division factor. + * This parameter can be RCC_PREDIV1_Divx where x:[1,16] + * @retval None + */ +void RCC_PREDIV1Config(uint32_t RCC_PREDIV1_Source, uint32_t RCC_PREDIV1_Div) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_RCC_PREDIV1_SOURCE(RCC_PREDIV1_Source)); + assert_param(IS_RCC_PREDIV1(RCC_PREDIV1_Div)); + + tmpreg = RCC->CFGR2; + /* Clear PREDIV1[3:0] and PREDIV1SRC bits */ + tmpreg &= ~(CFGR2_PREDIV1 | CFGR2_PREDIV1SRC); + /* Set the PREDIV1 clock source and division factor */ + tmpreg |= RCC_PREDIV1_Source | RCC_PREDIV1_Div ; + /* Store the new value */ + RCC->CFGR2 = tmpreg; +} +#endif + +#ifdef STM32F10X_CL +/** + * @brief Configures the PREDIV2 division factor. + * @note + * - This function must be used only when both PLL2 and PLL3 are disabled. + * - This function applies only to STM32 Connectivity line devices. + * @param RCC_PREDIV2_Div: specifies the PREDIV2 clock division factor. + * This parameter can be RCC_PREDIV2_Divx where x:[1,16] + * @retval None + */ +void RCC_PREDIV2Config(uint32_t RCC_PREDIV2_Div) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_RCC_PREDIV2(RCC_PREDIV2_Div)); + + tmpreg = RCC->CFGR2; + /* Clear PREDIV2[3:0] bits */ + tmpreg &= ~CFGR2_PREDIV2; + /* Set the PREDIV2 division factor */ + tmpreg |= RCC_PREDIV2_Div; + /* Store the new value */ + RCC->CFGR2 = tmpreg; +} + +/** + * @brief Configures the PLL2 multiplication factor. + * @note + * - This function must be used only when the PLL2 is disabled. + * - This function applies only to STM32 Connectivity line devices. + * @param RCC_PLL2Mul: specifies the PLL2 multiplication factor. + * This parameter can be RCC_PLL2Mul_x where x:{[8,14], 16, 20} + * @retval None + */ +void RCC_PLL2Config(uint32_t RCC_PLL2Mul) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_RCC_PLL2_MUL(RCC_PLL2Mul)); + + tmpreg = RCC->CFGR2; + /* Clear PLL2Mul[3:0] bits */ + tmpreg &= ~CFGR2_PLL2MUL; + /* Set the PLL2 configuration bits */ + tmpreg |= RCC_PLL2Mul; + /* Store the new value */ + RCC->CFGR2 = tmpreg; +} + + +/** + * @brief Enables or disables the PLL2. + * @note + * - The PLL2 can not be disabled if it is used indirectly as system clock + * (i.e. it is used as PLL clock entry that is used as System clock). + * - This function applies only to STM32 Connectivity line devices. + * @param NewState: new state of the PLL2. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_PLL2Cmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CR_PLL2ON_BB = (uint32_t)NewState; +} + + +/** + * @brief Configures the PLL3 multiplication factor. + * @note + * - This function must be used only when the PLL3 is disabled. + * - This function applies only to STM32 Connectivity line devices. + * @param RCC_PLL3Mul: specifies the PLL3 multiplication factor. + * This parameter can be RCC_PLL3Mul_x where x:{[8,14], 16, 20} + * @retval None + */ +void RCC_PLL3Config(uint32_t RCC_PLL3Mul) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_RCC_PLL3_MUL(RCC_PLL3Mul)); + + tmpreg = RCC->CFGR2; + /* Clear PLL3Mul[3:0] bits */ + tmpreg &= ~CFGR2_PLL3MUL; + /* Set the PLL3 configuration bits */ + tmpreg |= RCC_PLL3Mul; + /* Store the new value */ + RCC->CFGR2 = tmpreg; +} + + +/** + * @brief Enables or disables the PLL3. + * @note This function applies only to STM32 Connectivity line devices. + * @param NewState: new state of the PLL3. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_PLL3Cmd(FunctionalState NewState) +{ + /* Check the parameters */ + + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CR_PLL3ON_BB = (uint32_t)NewState; +} +#endif /* STM32F10X_CL */ + +/** + * @brief Configures the system clock (SYSCLK). + * @param RCC_SYSCLKSource: specifies the clock source used as system clock. + * This parameter can be one of the following values: + * @arg RCC_SYSCLKSource_HSI: HSI selected as system clock + * @arg RCC_SYSCLKSource_HSE: HSE selected as system clock + * @arg RCC_SYSCLKSource_PLLCLK: PLL selected as system clock + * @retval None + */ +void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_RCC_SYSCLK_SOURCE(RCC_SYSCLKSource)); + tmpreg = RCC->CFGR; + /* Clear SW[1:0] bits */ + tmpreg &= CFGR_SW_Mask; + /* Set SW[1:0] bits according to RCC_SYSCLKSource value */ + tmpreg |= RCC_SYSCLKSource; + /* Store the new value */ + RCC->CFGR = tmpreg; +} + +/** + * @brief Returns the clock source used as system clock. + * @param None + * @retval The clock source used as system clock. The returned value can + * be one of the following: + * - 0x00: HSI used as system clock + * - 0x04: HSE used as system clock + * - 0x08: PLL used as system clock + */ +uint8_t RCC_GetSYSCLKSource(void) +{ + return ((uint8_t)(RCC->CFGR & CFGR_SWS_Mask)); +} + +/** + * @brief Configures the AHB clock (HCLK). + * @param RCC_SYSCLK: defines the AHB clock divider. This clock is derived from + * the system clock (SYSCLK). + * This parameter can be one of the following values: + * @arg RCC_SYSCLK_Div1: AHB clock = SYSCLK + * @arg RCC_SYSCLK_Div2: AHB clock = SYSCLK/2 + * @arg RCC_SYSCLK_Div4: AHB clock = SYSCLK/4 + * @arg RCC_SYSCLK_Div8: AHB clock = SYSCLK/8 + * @arg RCC_SYSCLK_Div16: AHB clock = SYSCLK/16 + * @arg RCC_SYSCLK_Div64: AHB clock = SYSCLK/64 + * @arg RCC_SYSCLK_Div128: AHB clock = SYSCLK/128 + * @arg RCC_SYSCLK_Div256: AHB clock = SYSCLK/256 + * @arg RCC_SYSCLK_Div512: AHB clock = SYSCLK/512 + * @retval None + */ +void RCC_HCLKConfig(uint32_t RCC_SYSCLK) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_RCC_HCLK(RCC_SYSCLK)); + tmpreg = RCC->CFGR; + /* Clear HPRE[3:0] bits */ + tmpreg &= CFGR_HPRE_Reset_Mask; + /* Set HPRE[3:0] bits according to RCC_SYSCLK value */ + tmpreg |= RCC_SYSCLK; + /* Store the new value */ + RCC->CFGR = tmpreg; +} + +/** + * @brief Configures the Low Speed APB clock (PCLK1). + * @param RCC_HCLK: defines the APB1 clock divider. This clock is derived from + * the AHB clock (HCLK). + * This parameter can be one of the following values: + * @arg RCC_HCLK_Div1: APB1 clock = HCLK + * @arg RCC_HCLK_Div2: APB1 clock = HCLK/2 + * @arg RCC_HCLK_Div4: APB1 clock = HCLK/4 + * @arg RCC_HCLK_Div8: APB1 clock = HCLK/8 + * @arg RCC_HCLK_Div16: APB1 clock = HCLK/16 + * @retval None + */ +void RCC_PCLK1Config(uint32_t RCC_HCLK) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_RCC_PCLK(RCC_HCLK)); + tmpreg = RCC->CFGR; + /* Clear PPRE1[2:0] bits */ + tmpreg &= CFGR_PPRE1_Reset_Mask; + /* Set PPRE1[2:0] bits according to RCC_HCLK value */ + tmpreg |= RCC_HCLK; + /* Store the new value */ + RCC->CFGR = tmpreg; +} + +/** + * @brief Configures the High Speed APB clock (PCLK2). + * @param RCC_HCLK: defines the APB2 clock divider. This clock is derived from + * the AHB clock (HCLK). + * This parameter can be one of the following values: + * @arg RCC_HCLK_Div1: APB2 clock = HCLK + * @arg RCC_HCLK_Div2: APB2 clock = HCLK/2 + * @arg RCC_HCLK_Div4: APB2 clock = HCLK/4 + * @arg RCC_HCLK_Div8: APB2 clock = HCLK/8 + * @arg RCC_HCLK_Div16: APB2 clock = HCLK/16 + * @retval None + */ +void RCC_PCLK2Config(uint32_t RCC_HCLK) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_RCC_PCLK(RCC_HCLK)); + tmpreg = RCC->CFGR; + /* Clear PPRE2[2:0] bits */ + tmpreg &= CFGR_PPRE2_Reset_Mask; + /* Set PPRE2[2:0] bits according to RCC_HCLK value */ + tmpreg |= RCC_HCLK << 3; + /* Store the new value */ + RCC->CFGR = tmpreg; +} + +/** + * @brief Enables or disables the specified RCC interrupts. + * @param RCC_IT: specifies the RCC interrupt sources to be enabled or disabled. + * + * For @b STM32_Connectivity_line_devices, this parameter can be any combination + * of the following values + * @arg RCC_IT_LSIRDY: LSI ready interrupt + * @arg RCC_IT_LSERDY: LSE ready interrupt + * @arg RCC_IT_HSIRDY: HSI ready interrupt + * @arg RCC_IT_HSERDY: HSE ready interrupt + * @arg RCC_IT_PLLRDY: PLL ready interrupt + * @arg RCC_IT_PLL2RDY: PLL2 ready interrupt + * @arg RCC_IT_PLL3RDY: PLL3 ready interrupt + * + * For @b other_STM32_devices, this parameter can be any combination of the + * following values + * @arg RCC_IT_LSIRDY: LSI ready interrupt + * @arg RCC_IT_LSERDY: LSE ready interrupt + * @arg RCC_IT_HSIRDY: HSI ready interrupt + * @arg RCC_IT_HSERDY: HSE ready interrupt + * @arg RCC_IT_PLLRDY: PLL ready interrupt + * + * @param NewState: new state of the specified RCC interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_RCC_IT(RCC_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Perform Byte access to RCC_CIR bits to enable the selected interrupts */ + *(__IO uint8_t *) CIR_BYTE2_ADDRESS |= RCC_IT; + } + else + { + /* Perform Byte access to RCC_CIR bits to disable the selected interrupts */ + *(__IO uint8_t *) CIR_BYTE2_ADDRESS &= (uint8_t)~RCC_IT; + } +} + +#ifndef STM32F10X_CL +/** + * @brief Configures the USB clock (USBCLK). + * @param RCC_USBCLKSource: specifies the USB clock source. This clock is + * derived from the PLL output. + * This parameter can be one of the following values: + * @arg RCC_USBCLKSource_PLLCLK_1Div5: PLL clock divided by 1,5 selected as USB + * clock source + * @arg RCC_USBCLKSource_PLLCLK_Div1: PLL clock selected as USB clock source + * @retval None + */ +void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource) +{ + /* Check the parameters */ + assert_param(IS_RCC_USBCLK_SOURCE(RCC_USBCLKSource)); + + *(__IO uint32_t *) CFGR_USBPRE_BB = RCC_USBCLKSource; +} +#else +/** + * @brief Configures the USB OTG FS clock (OTGFSCLK). + * This function applies only to STM32 Connectivity line devices. + * @param RCC_OTGFSCLKSource: specifies the USB OTG FS clock source. + * This clock is derived from the PLL output. + * This parameter can be one of the following values: + * @arg RCC_OTGFSCLKSource_PLLVCO_Div3: PLL VCO clock divided by 2 selected as USB OTG FS clock source + * @arg RCC_OTGFSCLKSource_PLLVCO_Div2: PLL VCO clock divided by 2 selected as USB OTG FS clock source + * @retval None + */ +void RCC_OTGFSCLKConfig(uint32_t RCC_OTGFSCLKSource) +{ + /* Check the parameters */ + assert_param(IS_RCC_OTGFSCLK_SOURCE(RCC_OTGFSCLKSource)); + + *(__IO uint32_t *) CFGR_OTGFSPRE_BB = RCC_OTGFSCLKSource; +} +#endif /* STM32F10X_CL */ + +/** + * @brief Configures the ADC clock (ADCCLK). + * @param RCC_PCLK2: defines the ADC clock divider. This clock is derived from + * the APB2 clock (PCLK2). + * This parameter can be one of the following values: + * @arg RCC_PCLK2_Div2: ADC clock = PCLK2/2 + * @arg RCC_PCLK2_Div4: ADC clock = PCLK2/4 + * @arg RCC_PCLK2_Div6: ADC clock = PCLK2/6 + * @arg RCC_PCLK2_Div8: ADC clock = PCLK2/8 + * @retval None + */ +void RCC_ADCCLKConfig(uint32_t RCC_PCLK2) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_RCC_ADCCLK(RCC_PCLK2)); + tmpreg = RCC->CFGR; + /* Clear ADCPRE[1:0] bits */ + tmpreg &= CFGR_ADCPRE_Reset_Mask; + /* Set ADCPRE[1:0] bits according to RCC_PCLK2 value */ + tmpreg |= RCC_PCLK2; + /* Store the new value */ + RCC->CFGR = tmpreg; +} + +#ifdef STM32F10X_CL +/** + * @brief Configures the I2S2 clock source(I2S2CLK). + * @note + * - This function must be called before enabling I2S2 APB clock. + * - This function applies only to STM32 Connectivity line devices. + * @param RCC_I2S2CLKSource: specifies the I2S2 clock source. + * This parameter can be one of the following values: + * @arg RCC_I2S2CLKSource_SYSCLK: system clock selected as I2S2 clock entry + * @arg RCC_I2S2CLKSource_PLL3_VCO: PLL3 VCO clock selected as I2S2 clock entry + * @retval None + */ +void RCC_I2S2CLKConfig(uint32_t RCC_I2S2CLKSource) +{ + /* Check the parameters */ + assert_param(IS_RCC_I2S2CLK_SOURCE(RCC_I2S2CLKSource)); + + *(__IO uint32_t *) CFGR2_I2S2SRC_BB = RCC_I2S2CLKSource; +} + +/** + * @brief Configures the I2S3 clock source(I2S2CLK). + * @note + * - This function must be called before enabling I2S3 APB clock. + * - This function applies only to STM32 Connectivity line devices. + * @param RCC_I2S3CLKSource: specifies the I2S3 clock source. + * This parameter can be one of the following values: + * @arg RCC_I2S3CLKSource_SYSCLK: system clock selected as I2S3 clock entry + * @arg RCC_I2S3CLKSource_PLL3_VCO: PLL3 VCO clock selected as I2S3 clock entry + * @retval None + */ +void RCC_I2S3CLKConfig(uint32_t RCC_I2S3CLKSource) +{ + /* Check the parameters */ + assert_param(IS_RCC_I2S3CLK_SOURCE(RCC_I2S3CLKSource)); + + *(__IO uint32_t *) CFGR2_I2S3SRC_BB = RCC_I2S3CLKSource; +} +#endif /* STM32F10X_CL */ + +/** + * @brief Configures the External Low Speed oscillator (LSE). + * @param RCC_LSE: specifies the new state of the LSE. + * This parameter can be one of the following values: + * @arg RCC_LSE_OFF: LSE oscillator OFF + * @arg RCC_LSE_ON: LSE oscillator ON + * @arg RCC_LSE_Bypass: LSE oscillator bypassed with external clock + * @retval None + */ +void RCC_LSEConfig(uint8_t RCC_LSE) +{ + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_LSE)); + /* Reset LSEON and LSEBYP bits before configuring the LSE ------------------*/ + /* Reset LSEON bit */ + *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_OFF; + /* Reset LSEBYP bit */ + *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_OFF; + /* Configure LSE (RCC_LSE_OFF is already covered by the code section above) */ + switch(RCC_LSE) + { + case RCC_LSE_ON: + /* Set LSEON bit */ + *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_ON; + break; + + case RCC_LSE_Bypass: + /* Set LSEBYP and LSEON bits */ + *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_Bypass | RCC_LSE_ON; + break; + + default: + break; + } +} + +/** + * @brief Enables or disables the Internal Low Speed oscillator (LSI). + * @note LSI can not be disabled if the IWDG is running. + * @param NewState: new state of the LSI. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_LSICmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CSR_LSION_BB = (uint32_t)NewState; +} + +/** + * @brief Configures the RTC clock (RTCCLK). + * @note Once the RTC clock is selected it can't be changed unless the Backup domain is reset. + * @param RCC_RTCCLKSource: specifies the RTC clock source. + * This parameter can be one of the following values: + * @arg RCC_RTCCLKSource_LSE: LSE selected as RTC clock + * @arg RCC_RTCCLKSource_LSI: LSI selected as RTC clock + * @arg RCC_RTCCLKSource_HSE_Div128: HSE clock divided by 128 selected as RTC clock + * @retval None + */ +void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource) +{ + /* Check the parameters */ + assert_param(IS_RCC_RTCCLK_SOURCE(RCC_RTCCLKSource)); + /* Select the RTC clock source */ + RCC->BDCR |= RCC_RTCCLKSource; +} + +/** + * @brief Enables or disables the RTC clock. + * @note This function must be used only after the RTC clock was selected using the RCC_RTCCLKConfig function. + * @param NewState: new state of the RTC clock. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_RTCCLKCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) BDCR_RTCEN_BB = (uint32_t)NewState; +} + +/** + * @brief Returns the frequencies of different on chip clocks. + * @param RCC_Clocks: pointer to a RCC_ClocksTypeDef structure which will hold + * the clocks frequencies. + * @note The result of this function could be not correct when using + * fractional value for HSE crystal. + * @retval None + */ +void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0, presc = 0; + +#ifdef STM32F10X_CL + uint32_t prediv1source = 0, prediv1factor = 0, prediv2factor = 0, pll2mull = 0; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + uint32_t prediv1factor = 0; +#endif + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & CFGR_SWS_Mask; + + switch (tmp) + { + case 0x00: /* HSI used as system clock */ + RCC_Clocks->SYSCLK_Frequency = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock */ + RCC_Clocks->SYSCLK_Frequency = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & CFGR_PLLMull_Mask; + pllsource = RCC->CFGR & CFGR_PLLSRC_Mask; + +#ifndef STM32F10X_CL + pllmull = ( pllmull >> 18) + 2; + + if (pllsource == 0x00) + {/* HSI oscillator clock divided by 2 selected as PLL clock entry */ + RCC_Clocks->SYSCLK_Frequency = (HSI_VALUE >> 1) * pllmull; + } + else + { + #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + prediv1factor = (RCC->CFGR2 & CFGR2_PREDIV1) + 1; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + RCC_Clocks->SYSCLK_Frequency = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & CFGR_PLLXTPRE_Mask) != (uint32_t)RESET) + {/* HSE oscillator clock divided by 2 */ + RCC_Clocks->SYSCLK_Frequency = (HSE_VALUE >> 1) * pllmull; + } + else + { + RCC_Clocks->SYSCLK_Frequency = HSE_VALUE * pllmull; + } + #endif + } +#else + pllmull = pllmull >> 18; + + if (pllmull != 0x0D) + { + pllmull += 2; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13 / 2; + } + + if (pllsource == 0x00) + {/* HSI oscillator clock divided by 2 selected as PLL clock entry */ + RCC_Clocks->SYSCLK_Frequency = (HSI_VALUE >> 1) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & CFGR2_PREDIV1) + 1; + + if (prediv1source == 0) + { /* HSE oscillator clock selected as PREDIV1 clock entry */ + RCC_Clocks->SYSCLK_Frequency = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & CFGR2_PREDIV2) >> 4) + 1; + pll2mull = ((RCC->CFGR2 & CFGR2_PLL2MUL) >> 8 ) + 2; + RCC_Clocks->SYSCLK_Frequency = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F10X_CL */ + break; + + default: + RCC_Clocks->SYSCLK_Frequency = HSI_VALUE; + break; + } + + /* Compute HCLK, PCLK1, PCLK2 and ADCCLK clocks frequencies ----------------*/ + /* Get HCLK prescaler */ + tmp = RCC->CFGR & CFGR_HPRE_Set_Mask; + tmp = tmp >> 4; + presc = APBAHBPrescTable[tmp]; + /* HCLK clock frequency */ + RCC_Clocks->HCLK_Frequency = RCC_Clocks->SYSCLK_Frequency >> presc; + /* Get PCLK1 prescaler */ + tmp = RCC->CFGR & CFGR_PPRE1_Set_Mask; + tmp = tmp >> 8; + presc = APBAHBPrescTable[tmp]; + /* PCLK1 clock frequency */ + RCC_Clocks->PCLK1_Frequency = RCC_Clocks->HCLK_Frequency >> presc; + /* Get PCLK2 prescaler */ + tmp = RCC->CFGR & CFGR_PPRE2_Set_Mask; + tmp = tmp >> 11; + presc = APBAHBPrescTable[tmp]; + /* PCLK2 clock frequency */ + RCC_Clocks->PCLK2_Frequency = RCC_Clocks->HCLK_Frequency >> presc; + /* Get ADCCLK prescaler */ + tmp = RCC->CFGR & CFGR_ADCPRE_Set_Mask; + tmp = tmp >> 14; + presc = ADCPrescTable[tmp]; + /* ADCCLK clock frequency */ + RCC_Clocks->ADCCLK_Frequency = RCC_Clocks->PCLK2_Frequency / presc; +} + +/** + * @brief Enables or disables the AHB peripheral clock. + * @param RCC_AHBPeriph: specifies the AHB peripheral to gates its clock. + * + * For @b STM32_Connectivity_line_devices, this parameter can be any combination + * of the following values: + * @arg RCC_AHBPeriph_DMA1 + * @arg RCC_AHBPeriph_DMA2 + * @arg RCC_AHBPeriph_SRAM + * @arg RCC_AHBPeriph_FLITF + * @arg RCC_AHBPeriph_CRC + * @arg RCC_AHBPeriph_OTG_FS + * @arg RCC_AHBPeriph_ETH_MAC + * @arg RCC_AHBPeriph_ETH_MAC_Tx + * @arg RCC_AHBPeriph_ETH_MAC_Rx + * + * For @b other_STM32_devices, this parameter can be any combination of the + * following values: + * @arg RCC_AHBPeriph_DMA1 + * @arg RCC_AHBPeriph_DMA2 + * @arg RCC_AHBPeriph_SRAM + * @arg RCC_AHBPeriph_FLITF + * @arg RCC_AHBPeriph_CRC + * @arg RCC_AHBPeriph_FSMC + * @arg RCC_AHBPeriph_SDIO + * + * @note SRAM and FLITF clock can be disabled only during sleep mode. + * @param NewState: new state of the specified peripheral clock. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_RCC_AHB_PERIPH(RCC_AHBPeriph)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + RCC->AHBENR |= RCC_AHBPeriph; + } + else + { + RCC->AHBENR &= ~RCC_AHBPeriph; + } +} + +/** + * @brief Enables or disables the High Speed APB (APB2) peripheral clock. + * @param RCC_APB2Periph: specifies the APB2 peripheral to gates its clock. + * This parameter can be any combination of the following values: + * @arg RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB, + * RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE, + * RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1, + * RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1, + * RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3, + * RCC_APB2Periph_TIM15, RCC_APB2Periph_TIM16, RCC_APB2Periph_TIM17, + * RCC_APB2Periph_TIM9, RCC_APB2Periph_TIM10, RCC_APB2Periph_TIM11 + * @param NewState: new state of the specified peripheral clock. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + RCC->APB2ENR |= RCC_APB2Periph; + } + else + { + RCC->APB2ENR &= ~RCC_APB2Periph; + } +} + +/** + * @brief Enables or disables the Low Speed APB (APB1) peripheral clock. + * @param RCC_APB1Periph: specifies the APB1 peripheral to gates its clock. + * This parameter can be any combination of the following values: + * @arg RCC_APB1Periph_TIM2, RCC_APB1Periph_TIM3, RCC_APB1Periph_TIM4, + * RCC_APB1Periph_TIM5, RCC_APB1Periph_TIM6, RCC_APB1Periph_TIM7, + * RCC_APB1Periph_WWDG, RCC_APB1Periph_SPI2, RCC_APB1Periph_SPI3, + * RCC_APB1Periph_USART2, RCC_APB1Periph_USART3, RCC_APB1Periph_USART4, + * RCC_APB1Periph_USART5, RCC_APB1Periph_I2C1, RCC_APB1Periph_I2C2, + * RCC_APB1Periph_USB, RCC_APB1Periph_CAN1, RCC_APB1Periph_BKP, + * RCC_APB1Periph_PWR, RCC_APB1Periph_DAC, RCC_APB1Periph_CEC, + * RCC_APB1Periph_TIM12, RCC_APB1Periph_TIM13, RCC_APB1Periph_TIM14 + * @param NewState: new state of the specified peripheral clock. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + RCC->APB1ENR |= RCC_APB1Periph; + } + else + { + RCC->APB1ENR &= ~RCC_APB1Periph; + } +} + +#ifdef STM32F10X_CL +/** + * @brief Forces or releases AHB peripheral reset. + * @note This function applies only to STM32 Connectivity line devices. + * @param RCC_AHBPeriph: specifies the AHB peripheral to reset. + * This parameter can be any combination of the following values: + * @arg RCC_AHBPeriph_OTG_FS + * @arg RCC_AHBPeriph_ETH_MAC + * @param NewState: new state of the specified peripheral reset. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_RCC_AHB_PERIPH_RESET(RCC_AHBPeriph)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + RCC->AHBRSTR |= RCC_AHBPeriph; + } + else + { + RCC->AHBRSTR &= ~RCC_AHBPeriph; + } +} +#endif /* STM32F10X_CL */ + +/** + * @brief Forces or releases High Speed APB (APB2) peripheral reset. + * @param RCC_APB2Periph: specifies the APB2 peripheral to reset. + * This parameter can be any combination of the following values: + * @arg RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB, + * RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE, + * RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1, + * RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1, + * RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3, + * RCC_APB2Periph_TIM15, RCC_APB2Periph_TIM16, RCC_APB2Periph_TIM17, + * RCC_APB2Periph_TIM9, RCC_APB2Periph_TIM10, RCC_APB2Periph_TIM11 + * @param NewState: new state of the specified peripheral reset. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + RCC->APB2RSTR |= RCC_APB2Periph; + } + else + { + RCC->APB2RSTR &= ~RCC_APB2Periph; + } +} + +/** + * @brief Forces or releases Low Speed APB (APB1) peripheral reset. + * @param RCC_APB1Periph: specifies the APB1 peripheral to reset. + * This parameter can be any combination of the following values: + * @arg RCC_APB1Periph_TIM2, RCC_APB1Periph_TIM3, RCC_APB1Periph_TIM4, + * RCC_APB1Periph_TIM5, RCC_APB1Periph_TIM6, RCC_APB1Periph_TIM7, + * RCC_APB1Periph_WWDG, RCC_APB1Periph_SPI2, RCC_APB1Periph_SPI3, + * RCC_APB1Periph_USART2, RCC_APB1Periph_USART3, RCC_APB1Periph_USART4, + * RCC_APB1Periph_USART5, RCC_APB1Periph_I2C1, RCC_APB1Periph_I2C2, + * RCC_APB1Periph_USB, RCC_APB1Periph_CAN1, RCC_APB1Periph_BKP, + * RCC_APB1Periph_PWR, RCC_APB1Periph_DAC, RCC_APB1Periph_CEC, + * RCC_APB1Periph_TIM12, RCC_APB1Periph_TIM13, RCC_APB1Periph_TIM14 + * @param NewState: new state of the specified peripheral clock. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + RCC->APB1RSTR |= RCC_APB1Periph; + } + else + { + RCC->APB1RSTR &= ~RCC_APB1Periph; + } +} + +/** + * @brief Forces or releases the Backup domain reset. + * @param NewState: new state of the Backup domain reset. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_BackupResetCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) BDCR_BDRST_BB = (uint32_t)NewState; +} + +/** + * @brief Enables or disables the Clock Security System. + * @param NewState: new state of the Clock Security System.. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RCC_ClockSecuritySystemCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + *(__IO uint32_t *) CR_CSSON_BB = (uint32_t)NewState; +} + +/** + * @brief Selects the clock source to output on MCO pin. + * @param RCC_MCO: specifies the clock source to output. + * + * For @b STM32_Connectivity_line_devices, this parameter can be one of the + * following values: + * @arg RCC_MCO_NoClock: No clock selected + * @arg RCC_MCO_SYSCLK: System clock selected + * @arg RCC_MCO_HSI: HSI oscillator clock selected + * @arg RCC_MCO_HSE: HSE oscillator clock selected + * @arg RCC_MCO_PLLCLK_Div2: PLL clock divided by 2 selected + * @arg RCC_MCO_PLL2CLK: PLL2 clock selected + * @arg RCC_MCO_PLL3CLK_Div2: PLL3 clock divided by 2 selected + * @arg RCC_MCO_XT1: External 3-25 MHz oscillator clock selected + * @arg RCC_MCO_PLL3CLK: PLL3 clock selected + * + * For @b other_STM32_devices, this parameter can be one of the following values: + * @arg RCC_MCO_NoClock: No clock selected + * @arg RCC_MCO_SYSCLK: System clock selected + * @arg RCC_MCO_HSI: HSI oscillator clock selected + * @arg RCC_MCO_HSE: HSE oscillator clock selected + * @arg RCC_MCO_PLLCLK_Div2: PLL clock divided by 2 selected + * + * @retval None + */ +void RCC_MCOConfig(uint8_t RCC_MCO) +{ + /* Check the parameters */ + assert_param(IS_RCC_MCO(RCC_MCO)); + + /* Perform Byte access to MCO bits to select the MCO source */ + *(__IO uint8_t *) CFGR_BYTE4_ADDRESS = RCC_MCO; +} + +/** + * @brief Checks whether the specified RCC flag is set or not. + * @param RCC_FLAG: specifies the flag to check. + * + * For @b STM32_Connectivity_line_devices, this parameter can be one of the + * following values: + * @arg RCC_FLAG_HSIRDY: HSI oscillator clock ready + * @arg RCC_FLAG_HSERDY: HSE oscillator clock ready + * @arg RCC_FLAG_PLLRDY: PLL clock ready + * @arg RCC_FLAG_PLL2RDY: PLL2 clock ready + * @arg RCC_FLAG_PLL3RDY: PLL3 clock ready + * @arg RCC_FLAG_LSERDY: LSE oscillator clock ready + * @arg RCC_FLAG_LSIRDY: LSI oscillator clock ready + * @arg RCC_FLAG_PINRST: Pin reset + * @arg RCC_FLAG_PORRST: POR/PDR reset + * @arg RCC_FLAG_SFTRST: Software reset + * @arg RCC_FLAG_IWDGRST: Independent Watchdog reset + * @arg RCC_FLAG_WWDGRST: Window Watchdog reset + * @arg RCC_FLAG_LPWRRST: Low Power reset + * + * For @b other_STM32_devices, this parameter can be one of the following values: + * @arg RCC_FLAG_HSIRDY: HSI oscillator clock ready + * @arg RCC_FLAG_HSERDY: HSE oscillator clock ready + * @arg RCC_FLAG_PLLRDY: PLL clock ready + * @arg RCC_FLAG_LSERDY: LSE oscillator clock ready + * @arg RCC_FLAG_LSIRDY: LSI oscillator clock ready + * @arg RCC_FLAG_PINRST: Pin reset + * @arg RCC_FLAG_PORRST: POR/PDR reset + * @arg RCC_FLAG_SFTRST: Software reset + * @arg RCC_FLAG_IWDGRST: Independent Watchdog reset + * @arg RCC_FLAG_WWDGRST: Window Watchdog reset + * @arg RCC_FLAG_LPWRRST: Low Power reset + * + * @retval The new state of RCC_FLAG (SET or RESET). + */ +FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG) +{ + uint32_t tmp = 0; + uint32_t statusreg = 0; + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_RCC_FLAG(RCC_FLAG)); + + /* Get the RCC register index */ + tmp = RCC_FLAG >> 5; + if (tmp == 1) /* The flag to check is in CR register */ + { + statusreg = RCC->CR; + } + else if (tmp == 2) /* The flag to check is in BDCR register */ + { + statusreg = RCC->BDCR; + } + else /* The flag to check is in CSR register */ + { + statusreg = RCC->CSR; + } + + /* Get the flag position */ + tmp = RCC_FLAG & FLAG_Mask; + if ((statusreg & ((uint32_t)1 << tmp)) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + /* Return the flag status */ + return bitstatus; +} + +/** + * @brief Clears the RCC reset flags. + * @note The reset flags are: RCC_FLAG_PINRST, RCC_FLAG_PORRST, RCC_FLAG_SFTRST, + * RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST, RCC_FLAG_LPWRRST + * @param None + * @retval None + */ +void RCC_ClearFlag(void) +{ + /* Set RMVF bit to clear the reset flags */ + RCC->CSR |= CSR_RMVF_Set; +} + +/** + * @brief Checks whether the specified RCC interrupt has occurred or not. + * @param RCC_IT: specifies the RCC interrupt source to check. + * + * For @b STM32_Connectivity_line_devices, this parameter can be one of the + * following values: + * @arg RCC_IT_LSIRDY: LSI ready interrupt + * @arg RCC_IT_LSERDY: LSE ready interrupt + * @arg RCC_IT_HSIRDY: HSI ready interrupt + * @arg RCC_IT_HSERDY: HSE ready interrupt + * @arg RCC_IT_PLLRDY: PLL ready interrupt + * @arg RCC_IT_PLL2RDY: PLL2 ready interrupt + * @arg RCC_IT_PLL3RDY: PLL3 ready interrupt + * @arg RCC_IT_CSS: Clock Security System interrupt + * + * For @b other_STM32_devices, this parameter can be one of the following values: + * @arg RCC_IT_LSIRDY: LSI ready interrupt + * @arg RCC_IT_LSERDY: LSE ready interrupt + * @arg RCC_IT_HSIRDY: HSI ready interrupt + * @arg RCC_IT_HSERDY: HSE ready interrupt + * @arg RCC_IT_PLLRDY: PLL ready interrupt + * @arg RCC_IT_CSS: Clock Security System interrupt + * + * @retval The new state of RCC_IT (SET or RESET). + */ +ITStatus RCC_GetITStatus(uint8_t RCC_IT) +{ + ITStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_RCC_GET_IT(RCC_IT)); + + /* Check the status of the specified RCC interrupt */ + if ((RCC->CIR & RCC_IT) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + /* Return the RCC_IT status */ + return bitstatus; +} + +/** + * @brief Clears the RCC's interrupt pending bits. + * @param RCC_IT: specifies the interrupt pending bit to clear. + * + * For @b STM32_Connectivity_line_devices, this parameter can be any combination + * of the following values: + * @arg RCC_IT_LSIRDY: LSI ready interrupt + * @arg RCC_IT_LSERDY: LSE ready interrupt + * @arg RCC_IT_HSIRDY: HSI ready interrupt + * @arg RCC_IT_HSERDY: HSE ready interrupt + * @arg RCC_IT_PLLRDY: PLL ready interrupt + * @arg RCC_IT_PLL2RDY: PLL2 ready interrupt + * @arg RCC_IT_PLL3RDY: PLL3 ready interrupt + * @arg RCC_IT_CSS: Clock Security System interrupt + * + * For @b other_STM32_devices, this parameter can be any combination of the + * following values: + * @arg RCC_IT_LSIRDY: LSI ready interrupt + * @arg RCC_IT_LSERDY: LSE ready interrupt + * @arg RCC_IT_HSIRDY: HSI ready interrupt + * @arg RCC_IT_HSERDY: HSE ready interrupt + * @arg RCC_IT_PLLRDY: PLL ready interrupt + * + * @arg RCC_IT_CSS: Clock Security System interrupt + * @retval None + */ +void RCC_ClearITPendingBit(uint8_t RCC_IT) +{ + /* Check the parameters */ + assert_param(IS_RCC_CLEAR_IT(RCC_IT)); + + /* Perform Byte access to RCC_CIR[23:16] bits to clear the selected interrupt + pending bits */ + *(__IO uint8_t *) CIR_BYTE3_ADDRESS = RCC_IT; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c new file mode 100644 index 00000000..f798d2bd --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c @@ -0,0 +1,339 @@ +/** + ****************************************************************************** + * @file stm32f10x_rtc.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the RTC firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_rtc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup RTC + * @brief RTC driver modules + * @{ + */ + +/** @defgroup RTC_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + +/** @defgroup RTC_Private_Defines + * @{ + */ +#define RTC_LSB_MASK ((uint32_t)0x0000FFFF) /*!< RTC LSB Mask */ +#define PRLH_MSB_MASK ((uint32_t)0x000F0000) /*!< RTC Prescaler MSB Mask */ + +/** + * @} + */ + +/** @defgroup RTC_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup RTC_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup RTC_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup RTC_Private_Functions + * @{ + */ + +/** + * @brief Enables or disables the specified RTC interrupts. + * @param RTC_IT: specifies the RTC interrupts sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg RTC_IT_OW: Overflow interrupt + * @arg RTC_IT_ALR: Alarm interrupt + * @arg RTC_IT_SEC: Second interrupt + * @param NewState: new state of the specified RTC interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_RTC_IT(RTC_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + RTC->CRH |= RTC_IT; + } + else + { + RTC->CRH &= (uint16_t)~RTC_IT; + } +} + +/** + * @brief Enters the RTC configuration mode. + * @param None + * @retval None + */ +void RTC_EnterConfigMode(void) +{ + /* Set the CNF flag to enter in the Configuration Mode */ + RTC->CRL |= RTC_CRL_CNF; +} + +/** + * @brief Exits from the RTC configuration mode. + * @param None + * @retval None + */ +void RTC_ExitConfigMode(void) +{ + /* Reset the CNF flag to exit from the Configuration Mode */ + RTC->CRL &= (uint16_t)~((uint16_t)RTC_CRL_CNF); +} + +/** + * @brief Gets the RTC counter value. + * @param None + * @retval RTC counter value. + */ +uint32_t RTC_GetCounter(void) +{ + uint16_t tmp = 0; + tmp = RTC->CNTL; + return (((uint32_t)RTC->CNTH << 16 ) | tmp) ; +} + +/** + * @brief Sets the RTC counter value. + * @param CounterValue: RTC counter new value. + * @retval None + */ +void RTC_SetCounter(uint32_t CounterValue) +{ + RTC_EnterConfigMode(); + /* Set RTC COUNTER MSB word */ + RTC->CNTH = CounterValue >> 16; + /* Set RTC COUNTER LSB word */ + RTC->CNTL = (CounterValue & RTC_LSB_MASK); + RTC_ExitConfigMode(); +} + +/** + * @brief Sets the RTC prescaler value. + * @param PrescalerValue: RTC prescaler new value. + * @retval None + */ +void RTC_SetPrescaler(uint32_t PrescalerValue) +{ + /* Check the parameters */ + assert_param(IS_RTC_PRESCALER(PrescalerValue)); + + RTC_EnterConfigMode(); + /* Set RTC PRESCALER MSB word */ + RTC->PRLH = (PrescalerValue & PRLH_MSB_MASK) >> 16; + /* Set RTC PRESCALER LSB word */ + RTC->PRLL = (PrescalerValue & RTC_LSB_MASK); + RTC_ExitConfigMode(); +} + +/** + * @brief Sets the RTC alarm value. + * @param AlarmValue: RTC alarm new value. + * @retval None + */ +void RTC_SetAlarm(uint32_t AlarmValue) +{ + RTC_EnterConfigMode(); + /* Set the ALARM MSB word */ + RTC->ALRH = AlarmValue >> 16; + /* Set the ALARM LSB word */ + RTC->ALRL = (AlarmValue & RTC_LSB_MASK); + RTC_ExitConfigMode(); +} + +/** + * @brief Gets the RTC divider value. + * @param None + * @retval RTC Divider value. + */ +uint32_t RTC_GetDivider(void) +{ + uint32_t tmp = 0x00; + tmp = ((uint32_t)RTC->DIVH & (uint32_t)0x000F) << 16; + tmp |= RTC->DIVL; + return tmp; +} + +/** + * @brief Waits until last write operation on RTC registers has finished. + * @note This function must be called before any write to RTC registers. + * @param None + * @retval None + */ +void RTC_WaitForLastTask(void) +{ + /* Loop until RTOFF flag is set */ + while ((RTC->CRL & RTC_FLAG_RTOFF) == (uint16_t)RESET) + { + } +} + +/** + * @brief Waits until the RTC registers (RTC_CNT, RTC_ALR and RTC_PRL) + * are synchronized with RTC APB clock. + * @note This function must be called before any read operation after an APB reset + * or an APB clock stop. + * @param None + * @retval None + */ +void RTC_WaitForSynchro(void) +{ + /* Clear RSF flag */ + RTC->CRL &= (uint16_t)~RTC_FLAG_RSF; + /* Loop until RSF flag is set */ + while ((RTC->CRL & RTC_FLAG_RSF) == (uint16_t)RESET) + { + } +} + +/** + * @brief Checks whether the specified RTC flag is set or not. + * @param RTC_FLAG: specifies the flag to check. + * This parameter can be one the following values: + * @arg RTC_FLAG_RTOFF: RTC Operation OFF flag + * @arg RTC_FLAG_RSF: Registers Synchronized flag + * @arg RTC_FLAG_OW: Overflow flag + * @arg RTC_FLAG_ALR: Alarm flag + * @arg RTC_FLAG_SEC: Second flag + * @retval The new state of RTC_FLAG (SET or RESET). + */ +FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG) +{ + FlagStatus bitstatus = RESET; + + /* Check the parameters */ + assert_param(IS_RTC_GET_FLAG(RTC_FLAG)); + + if ((RTC->CRL & RTC_FLAG) != (uint16_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the RTC's pending flags. + * @param RTC_FLAG: specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg RTC_FLAG_RSF: Registers Synchronized flag. This flag is cleared only after + * an APB reset or an APB Clock stop. + * @arg RTC_FLAG_OW: Overflow flag + * @arg RTC_FLAG_ALR: Alarm flag + * @arg RTC_FLAG_SEC: Second flag + * @retval None + */ +void RTC_ClearFlag(uint16_t RTC_FLAG) +{ + /* Check the parameters */ + assert_param(IS_RTC_CLEAR_FLAG(RTC_FLAG)); + + /* Clear the corresponding RTC flag */ + RTC->CRL &= (uint16_t)~RTC_FLAG; +} + +/** + * @brief Checks whether the specified RTC interrupt has occurred or not. + * @param RTC_IT: specifies the RTC interrupts sources to check. + * This parameter can be one of the following values: + * @arg RTC_IT_OW: Overflow interrupt + * @arg RTC_IT_ALR: Alarm interrupt + * @arg RTC_IT_SEC: Second interrupt + * @retval The new state of the RTC_IT (SET or RESET). + */ +ITStatus RTC_GetITStatus(uint16_t RTC_IT) +{ + ITStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_RTC_GET_IT(RTC_IT)); + + bitstatus = (ITStatus)(RTC->CRL & RTC_IT); + if (((RTC->CRH & RTC_IT) != (uint16_t)RESET) && (bitstatus != (uint16_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the RTC's interrupt pending bits. + * @param RTC_IT: specifies the interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg RTC_IT_OW: Overflow interrupt + * @arg RTC_IT_ALR: Alarm interrupt + * @arg RTC_IT_SEC: Second interrupt + * @retval None + */ +void RTC_ClearITPendingBit(uint16_t RTC_IT) +{ + /* Check the parameters */ + assert_param(IS_RTC_IT(RTC_IT)); + + /* Clear the corresponding RTC pending bit */ + RTC->CRL &= (uint16_t)~RTC_IT; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c new file mode 100644 index 00000000..d1870cef --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c @@ -0,0 +1,799 @@ +/** + ****************************************************************************** + * @file stm32f10x_sdio.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the SDIO firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_sdio.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup SDIO + * @brief SDIO driver modules + * @{ + */ + +/** @defgroup SDIO_Private_TypesDefinitions + * @{ + */ + +/* ------------ SDIO registers bit address in the alias region ----------- */ +#define SDIO_OFFSET (SDIO_BASE - PERIPH_BASE) + +/* --- CLKCR Register ---*/ + +/* Alias word address of CLKEN bit */ +#define CLKCR_OFFSET (SDIO_OFFSET + 0x04) +#define CLKEN_BitNumber 0x08 +#define CLKCR_CLKEN_BB (PERIPH_BB_BASE + (CLKCR_OFFSET * 32) + (CLKEN_BitNumber * 4)) + +/* --- CMD Register ---*/ + +/* Alias word address of SDIOSUSPEND bit */ +#define CMD_OFFSET (SDIO_OFFSET + 0x0C) +#define SDIOSUSPEND_BitNumber 0x0B +#define CMD_SDIOSUSPEND_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32) + (SDIOSUSPEND_BitNumber * 4)) + +/* Alias word address of ENCMDCOMPL bit */ +#define ENCMDCOMPL_BitNumber 0x0C +#define CMD_ENCMDCOMPL_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32) + (ENCMDCOMPL_BitNumber * 4)) + +/* Alias word address of NIEN bit */ +#define NIEN_BitNumber 0x0D +#define CMD_NIEN_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32) + (NIEN_BitNumber * 4)) + +/* Alias word address of ATACMD bit */ +#define ATACMD_BitNumber 0x0E +#define CMD_ATACMD_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32) + (ATACMD_BitNumber * 4)) + +/* --- DCTRL Register ---*/ + +/* Alias word address of DMAEN bit */ +#define DCTRL_OFFSET (SDIO_OFFSET + 0x2C) +#define DMAEN_BitNumber 0x03 +#define DCTRL_DMAEN_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32) + (DMAEN_BitNumber * 4)) + +/* Alias word address of RWSTART bit */ +#define RWSTART_BitNumber 0x08 +#define DCTRL_RWSTART_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32) + (RWSTART_BitNumber * 4)) + +/* Alias word address of RWSTOP bit */ +#define RWSTOP_BitNumber 0x09 +#define DCTRL_RWSTOP_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32) + (RWSTOP_BitNumber * 4)) + +/* Alias word address of RWMOD bit */ +#define RWMOD_BitNumber 0x0A +#define DCTRL_RWMOD_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32) + (RWMOD_BitNumber * 4)) + +/* Alias word address of SDIOEN bit */ +#define SDIOEN_BitNumber 0x0B +#define DCTRL_SDIOEN_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32) + (SDIOEN_BitNumber * 4)) + +/* ---------------------- SDIO registers bit mask ------------------------ */ + +/* --- CLKCR Register ---*/ + +/* CLKCR register clear mask */ +#define CLKCR_CLEAR_MASK ((uint32_t)0xFFFF8100) + +/* --- PWRCTRL Register ---*/ + +/* SDIO PWRCTRL Mask */ +#define PWR_PWRCTRL_MASK ((uint32_t)0xFFFFFFFC) + +/* --- DCTRL Register ---*/ + +/* SDIO DCTRL Clear Mask */ +#define DCTRL_CLEAR_MASK ((uint32_t)0xFFFFFF08) + +/* --- CMD Register ---*/ + +/* CMD Register clear mask */ +#define CMD_CLEAR_MASK ((uint32_t)0xFFFFF800) + +/* SDIO RESP Registers Address */ +#define SDIO_RESP_ADDR ((uint32_t)(SDIO_BASE + 0x14)) + +/** + * @} + */ + +/** @defgroup SDIO_Private_Defines + * @{ + */ + +/** + * @} + */ + +/** @defgroup SDIO_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup SDIO_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup SDIO_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup SDIO_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the SDIO peripheral registers to their default reset values. + * @param None + * @retval None + */ +void SDIO_DeInit(void) +{ + SDIO->POWER = 0x00000000; + SDIO->CLKCR = 0x00000000; + SDIO->ARG = 0x00000000; + SDIO->CMD = 0x00000000; + SDIO->DTIMER = 0x00000000; + SDIO->DLEN = 0x00000000; + SDIO->DCTRL = 0x00000000; + SDIO->ICR = 0x00C007FF; + SDIO->MASK = 0x00000000; +} + +/** + * @brief Initializes the SDIO peripheral according to the specified + * parameters in the SDIO_InitStruct. + * @param SDIO_InitStruct : pointer to a SDIO_InitTypeDef structure + * that contains the configuration information for the SDIO peripheral. + * @retval None + */ +void SDIO_Init(SDIO_InitTypeDef* SDIO_InitStruct) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDIO_CLOCK_EDGE(SDIO_InitStruct->SDIO_ClockEdge)); + assert_param(IS_SDIO_CLOCK_BYPASS(SDIO_InitStruct->SDIO_ClockBypass)); + assert_param(IS_SDIO_CLOCK_POWER_SAVE(SDIO_InitStruct->SDIO_ClockPowerSave)); + assert_param(IS_SDIO_BUS_WIDE(SDIO_InitStruct->SDIO_BusWide)); + assert_param(IS_SDIO_HARDWARE_FLOW_CONTROL(SDIO_InitStruct->SDIO_HardwareFlowControl)); + +/*---------------------------- SDIO CLKCR Configuration ------------------------*/ + /* Get the SDIO CLKCR value */ + tmpreg = SDIO->CLKCR; + + /* Clear CLKDIV, PWRSAV, BYPASS, WIDBUS, NEGEDGE, HWFC_EN bits */ + tmpreg &= CLKCR_CLEAR_MASK; + + /* Set CLKDIV bits according to SDIO_ClockDiv value */ + /* Set PWRSAV bit according to SDIO_ClockPowerSave value */ + /* Set BYPASS bit according to SDIO_ClockBypass value */ + /* Set WIDBUS bits according to SDIO_BusWide value */ + /* Set NEGEDGE bits according to SDIO_ClockEdge value */ + /* Set HWFC_EN bits according to SDIO_HardwareFlowControl value */ + tmpreg |= (SDIO_InitStruct->SDIO_ClockDiv | SDIO_InitStruct->SDIO_ClockPowerSave | + SDIO_InitStruct->SDIO_ClockBypass | SDIO_InitStruct->SDIO_BusWide | + SDIO_InitStruct->SDIO_ClockEdge | SDIO_InitStruct->SDIO_HardwareFlowControl); + + /* Write to SDIO CLKCR */ + SDIO->CLKCR = tmpreg; +} + +/** + * @brief Fills each SDIO_InitStruct member with its default value. + * @param SDIO_InitStruct: pointer to an SDIO_InitTypeDef structure which + * will be initialized. + * @retval None + */ +void SDIO_StructInit(SDIO_InitTypeDef* SDIO_InitStruct) +{ + /* SDIO_InitStruct members default value */ + SDIO_InitStruct->SDIO_ClockDiv = 0x00; + SDIO_InitStruct->SDIO_ClockEdge = SDIO_ClockEdge_Rising; + SDIO_InitStruct->SDIO_ClockBypass = SDIO_ClockBypass_Disable; + SDIO_InitStruct->SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable; + SDIO_InitStruct->SDIO_BusWide = SDIO_BusWide_1b; + SDIO_InitStruct->SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable; +} + +/** + * @brief Enables or disables the SDIO Clock. + * @param NewState: new state of the SDIO Clock. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_ClockCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CLKCR_CLKEN_BB = (uint32_t)NewState; +} + +/** + * @brief Sets the power status of the controller. + * @param SDIO_PowerState: new state of the Power state. + * This parameter can be one of the following values: + * @arg SDIO_PowerState_OFF + * @arg SDIO_PowerState_ON + * @retval None + */ +void SDIO_SetPowerState(uint32_t SDIO_PowerState) +{ + /* Check the parameters */ + assert_param(IS_SDIO_POWER_STATE(SDIO_PowerState)); + + SDIO->POWER &= PWR_PWRCTRL_MASK; + SDIO->POWER |= SDIO_PowerState; +} + +/** + * @brief Gets the power status of the controller. + * @param None + * @retval Power status of the controller. The returned value can + * be one of the following: + * - 0x00: Power OFF + * - 0x02: Power UP + * - 0x03: Power ON + */ +uint32_t SDIO_GetPowerState(void) +{ + return (SDIO->POWER & (~PWR_PWRCTRL_MASK)); +} + +/** + * @brief Enables or disables the SDIO interrupts. + * @param SDIO_IT: specifies the SDIO interrupt sources to be enabled or disabled. + * This parameter can be one or a combination of the following values: + * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt + * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDIO_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt + * @arg SDIO_IT_STBITERR: Start bit not detected on all data signals in wide + * bus mode interrupt + * @arg SDIO_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDIO_IT_CMDACT: Command transfer in progress interrupt + * @arg SDIO_IT_TXACT: Data transmit in progress interrupt + * @arg SDIO_IT_RXACT: Data receive in progress interrupt + * @arg SDIO_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDIO_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDIO_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDIO_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDIO_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDIO_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDIO_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDIO_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDIO_IT_SDIOIT: SD I/O interrupt received interrupt + * @arg SDIO_IT_CEATAEND: CE-ATA command completion signal received for CMD61 interrupt + * @param NewState: new state of the specified SDIO interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_ITConfig(uint32_t SDIO_IT, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_SDIO_IT(SDIO_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the SDIO interrupts */ + SDIO->MASK |= SDIO_IT; + } + else + { + /* Disable the SDIO interrupts */ + SDIO->MASK &= ~SDIO_IT; + } +} + +/** + * @brief Enables or disables the SDIO DMA request. + * @param NewState: new state of the selected SDIO DMA request. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_DMACmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) DCTRL_DMAEN_BB = (uint32_t)NewState; +} + +/** + * @brief Initializes the SDIO Command according to the specified + * parameters in the SDIO_CmdInitStruct and send the command. + * @param SDIO_CmdInitStruct : pointer to a SDIO_CmdInitTypeDef + * structure that contains the configuration information for the SDIO command. + * @retval None + */ +void SDIO_SendCommand(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDIO_CMD_INDEX(SDIO_CmdInitStruct->SDIO_CmdIndex)); + assert_param(IS_SDIO_RESPONSE(SDIO_CmdInitStruct->SDIO_Response)); + assert_param(IS_SDIO_WAIT(SDIO_CmdInitStruct->SDIO_Wait)); + assert_param(IS_SDIO_CPSM(SDIO_CmdInitStruct->SDIO_CPSM)); + +/*---------------------------- SDIO ARG Configuration ------------------------*/ + /* Set the SDIO Argument value */ + SDIO->ARG = SDIO_CmdInitStruct->SDIO_Argument; + +/*---------------------------- SDIO CMD Configuration ------------------------*/ + /* Get the SDIO CMD value */ + tmpreg = SDIO->CMD; + /* Clear CMDINDEX, WAITRESP, WAITINT, WAITPEND, CPSMEN bits */ + tmpreg &= CMD_CLEAR_MASK; + /* Set CMDINDEX bits according to SDIO_CmdIndex value */ + /* Set WAITRESP bits according to SDIO_Response value */ + /* Set WAITINT and WAITPEND bits according to SDIO_Wait value */ + /* Set CPSMEN bits according to SDIO_CPSM value */ + tmpreg |= (uint32_t)SDIO_CmdInitStruct->SDIO_CmdIndex | SDIO_CmdInitStruct->SDIO_Response + | SDIO_CmdInitStruct->SDIO_Wait | SDIO_CmdInitStruct->SDIO_CPSM; + + /* Write to SDIO CMD */ + SDIO->CMD = tmpreg; +} + +/** + * @brief Fills each SDIO_CmdInitStruct member with its default value. + * @param SDIO_CmdInitStruct: pointer to an SDIO_CmdInitTypeDef + * structure which will be initialized. + * @retval None + */ +void SDIO_CmdStructInit(SDIO_CmdInitTypeDef* SDIO_CmdInitStruct) +{ + /* SDIO_CmdInitStruct members default value */ + SDIO_CmdInitStruct->SDIO_Argument = 0x00; + SDIO_CmdInitStruct->SDIO_CmdIndex = 0x00; + SDIO_CmdInitStruct->SDIO_Response = SDIO_Response_No; + SDIO_CmdInitStruct->SDIO_Wait = SDIO_Wait_No; + SDIO_CmdInitStruct->SDIO_CPSM = SDIO_CPSM_Disable; +} + +/** + * @brief Returns command index of last command for which response received. + * @param None + * @retval Returns the command index of the last command response received. + */ +uint8_t SDIO_GetCommandResponse(void) +{ + return (uint8_t)(SDIO->RESPCMD); +} + +/** + * @brief Returns response received from the card for the last command. + * @param SDIO_RESP: Specifies the SDIO response register. + * This parameter can be one of the following values: + * @arg SDIO_RESP1: Response Register 1 + * @arg SDIO_RESP2: Response Register 2 + * @arg SDIO_RESP3: Response Register 3 + * @arg SDIO_RESP4: Response Register 4 + * @retval The Corresponding response register value. + */ +uint32_t SDIO_GetResponse(uint32_t SDIO_RESP) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_SDIO_RESP(SDIO_RESP)); + + tmp = SDIO_RESP_ADDR + SDIO_RESP; + + return (*(__IO uint32_t *) tmp); +} + +/** + * @brief Initializes the SDIO data path according to the specified + * parameters in the SDIO_DataInitStruct. + * @param SDIO_DataInitStruct : pointer to a SDIO_DataInitTypeDef structure that + * contains the configuration information for the SDIO command. + * @retval None + */ +void SDIO_DataConfig(SDIO_DataInitTypeDef* SDIO_DataInitStruct) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDIO_DATA_LENGTH(SDIO_DataInitStruct->SDIO_DataLength)); + assert_param(IS_SDIO_BLOCK_SIZE(SDIO_DataInitStruct->SDIO_DataBlockSize)); + assert_param(IS_SDIO_TRANSFER_DIR(SDIO_DataInitStruct->SDIO_TransferDir)); + assert_param(IS_SDIO_TRANSFER_MODE(SDIO_DataInitStruct->SDIO_TransferMode)); + assert_param(IS_SDIO_DPSM(SDIO_DataInitStruct->SDIO_DPSM)); + +/*---------------------------- SDIO DTIMER Configuration ---------------------*/ + /* Set the SDIO Data TimeOut value */ + SDIO->DTIMER = SDIO_DataInitStruct->SDIO_DataTimeOut; + +/*---------------------------- SDIO DLEN Configuration -----------------------*/ + /* Set the SDIO DataLength value */ + SDIO->DLEN = SDIO_DataInitStruct->SDIO_DataLength; + +/*---------------------------- SDIO DCTRL Configuration ----------------------*/ + /* Get the SDIO DCTRL value */ + tmpreg = SDIO->DCTRL; + /* Clear DEN, DTMODE, DTDIR and DBCKSIZE bits */ + tmpreg &= DCTRL_CLEAR_MASK; + /* Set DEN bit according to SDIO_DPSM value */ + /* Set DTMODE bit according to SDIO_TransferMode value */ + /* Set DTDIR bit according to SDIO_TransferDir value */ + /* Set DBCKSIZE bits according to SDIO_DataBlockSize value */ + tmpreg |= (uint32_t)SDIO_DataInitStruct->SDIO_DataBlockSize | SDIO_DataInitStruct->SDIO_TransferDir + | SDIO_DataInitStruct->SDIO_TransferMode | SDIO_DataInitStruct->SDIO_DPSM; + + /* Write to SDIO DCTRL */ + SDIO->DCTRL = tmpreg; +} + +/** + * @brief Fills each SDIO_DataInitStruct member with its default value. + * @param SDIO_DataInitStruct: pointer to an SDIO_DataInitTypeDef structure which + * will be initialized. + * @retval None + */ +void SDIO_DataStructInit(SDIO_DataInitTypeDef* SDIO_DataInitStruct) +{ + /* SDIO_DataInitStruct members default value */ + SDIO_DataInitStruct->SDIO_DataTimeOut = 0xFFFFFFFF; + SDIO_DataInitStruct->SDIO_DataLength = 0x00; + SDIO_DataInitStruct->SDIO_DataBlockSize = SDIO_DataBlockSize_1b; + SDIO_DataInitStruct->SDIO_TransferDir = SDIO_TransferDir_ToCard; + SDIO_DataInitStruct->SDIO_TransferMode = SDIO_TransferMode_Block; + SDIO_DataInitStruct->SDIO_DPSM = SDIO_DPSM_Disable; +} + +/** + * @brief Returns number of remaining data bytes to be transferred. + * @param None + * @retval Number of remaining data bytes to be transferred + */ +uint32_t SDIO_GetDataCounter(void) +{ + return SDIO->DCOUNT; +} + +/** + * @brief Read one data word from Rx FIFO. + * @param None + * @retval Data received + */ +uint32_t SDIO_ReadData(void) +{ + return SDIO->FIFO; +} + +/** + * @brief Write one data word to Tx FIFO. + * @param Data: 32-bit data word to write. + * @retval None + */ +void SDIO_WriteData(uint32_t Data) +{ + SDIO->FIFO = Data; +} + +/** + * @brief Returns the number of words left to be written to or read from FIFO. + * @param None + * @retval Remaining number of words. + */ +uint32_t SDIO_GetFIFOCount(void) +{ + return SDIO->FIFOCNT; +} + +/** + * @brief Starts the SD I/O Read Wait operation. + * @param NewState: new state of the Start SDIO Read Wait operation. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_StartSDIOReadWait(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) DCTRL_RWSTART_BB = (uint32_t) NewState; +} + +/** + * @brief Stops the SD I/O Read Wait operation. + * @param NewState: new state of the Stop SDIO Read Wait operation. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_StopSDIOReadWait(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) DCTRL_RWSTOP_BB = (uint32_t) NewState; +} + +/** + * @brief Sets one of the two options of inserting read wait interval. + * @param SDIO_ReadWaitMode: SD I/O Read Wait operation mode. + * This parameter can be: + * @arg SDIO_ReadWaitMode_CLK: Read Wait control by stopping SDIOCLK + * @arg SDIO_ReadWaitMode_DATA2: Read Wait control using SDIO_DATA2 + * @retval None + */ +void SDIO_SetSDIOReadWaitMode(uint32_t SDIO_ReadWaitMode) +{ + /* Check the parameters */ + assert_param(IS_SDIO_READWAIT_MODE(SDIO_ReadWaitMode)); + + *(__IO uint32_t *) DCTRL_RWMOD_BB = SDIO_ReadWaitMode; +} + +/** + * @brief Enables or disables the SD I/O Mode Operation. + * @param NewState: new state of SDIO specific operation. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_SetSDIOOperation(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) DCTRL_SDIOEN_BB = (uint32_t)NewState; +} + +/** + * @brief Enables or disables the SD I/O Mode suspend command sending. + * @param NewState: new state of the SD I/O Mode suspend command. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_SendSDIOSuspendCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CMD_SDIOSUSPEND_BB = (uint32_t)NewState; +} + +/** + * @brief Enables or disables the command completion signal. + * @param NewState: new state of command completion signal. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_CommandCompletionCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CMD_ENCMDCOMPL_BB = (uint32_t)NewState; +} + +/** + * @brief Enables or disables the CE-ATA interrupt. + * @param NewState: new state of CE-ATA interrupt. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_CEATAITCmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CMD_NIEN_BB = (uint32_t)((~((uint32_t)NewState)) & ((uint32_t)0x1)); +} + +/** + * @brief Sends CE-ATA command (CMD61). + * @param NewState: new state of CE-ATA command. This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SDIO_SendCEATACmd(FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + *(__IO uint32_t *) CMD_ATACMD_BB = (uint32_t)NewState; +} + +/** + * @brief Checks whether the specified SDIO flag is set or not. + * @param SDIO_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg SDIO_FLAG_CCRCFAIL: Command response received (CRC check failed) + * @arg SDIO_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) + * @arg SDIO_FLAG_CTIMEOUT: Command response timeout + * @arg SDIO_FLAG_DTIMEOUT: Data timeout + * @arg SDIO_FLAG_TXUNDERR: Transmit FIFO underrun error + * @arg SDIO_FLAG_RXOVERR: Received FIFO overrun error + * @arg SDIO_FLAG_CMDREND: Command response received (CRC check passed) + * @arg SDIO_FLAG_CMDSENT: Command sent (no response required) + * @arg SDIO_FLAG_DATAEND: Data end (data counter, SDIDCOUNT, is zero) + * @arg SDIO_FLAG_STBITERR: Start bit not detected on all data signals in wide + * bus mode. + * @arg SDIO_FLAG_DBCKEND: Data block sent/received (CRC check passed) + * @arg SDIO_FLAG_CMDACT: Command transfer in progress + * @arg SDIO_FLAG_TXACT: Data transmit in progress + * @arg SDIO_FLAG_RXACT: Data receive in progress + * @arg SDIO_FLAG_TXFIFOHE: Transmit FIFO Half Empty + * @arg SDIO_FLAG_RXFIFOHF: Receive FIFO Half Full + * @arg SDIO_FLAG_TXFIFOF: Transmit FIFO full + * @arg SDIO_FLAG_RXFIFOF: Receive FIFO full + * @arg SDIO_FLAG_TXFIFOE: Transmit FIFO empty + * @arg SDIO_FLAG_RXFIFOE: Receive FIFO empty + * @arg SDIO_FLAG_TXDAVL: Data available in transmit FIFO + * @arg SDIO_FLAG_RXDAVL: Data available in receive FIFO + * @arg SDIO_FLAG_SDIOIT: SD I/O interrupt received + * @arg SDIO_FLAG_CEATAEND: CE-ATA command completion signal received for CMD61 + * @retval The new state of SDIO_FLAG (SET or RESET). + */ +FlagStatus SDIO_GetFlagStatus(uint32_t SDIO_FLAG) +{ + FlagStatus bitstatus = RESET; + + /* Check the parameters */ + assert_param(IS_SDIO_FLAG(SDIO_FLAG)); + + if ((SDIO->STA & SDIO_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the SDIO's pending flags. + * @param SDIO_FLAG: specifies the flag to clear. + * This parameter can be one or a combination of the following values: + * @arg SDIO_FLAG_CCRCFAIL: Command response received (CRC check failed) + * @arg SDIO_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) + * @arg SDIO_FLAG_CTIMEOUT: Command response timeout + * @arg SDIO_FLAG_DTIMEOUT: Data timeout + * @arg SDIO_FLAG_TXUNDERR: Transmit FIFO underrun error + * @arg SDIO_FLAG_RXOVERR: Received FIFO overrun error + * @arg SDIO_FLAG_CMDREND: Command response received (CRC check passed) + * @arg SDIO_FLAG_CMDSENT: Command sent (no response required) + * @arg SDIO_FLAG_DATAEND: Data end (data counter, SDIDCOUNT, is zero) + * @arg SDIO_FLAG_STBITERR: Start bit not detected on all data signals in wide + * bus mode + * @arg SDIO_FLAG_DBCKEND: Data block sent/received (CRC check passed) + * @arg SDIO_FLAG_SDIOIT: SD I/O interrupt received + * @arg SDIO_FLAG_CEATAEND: CE-ATA command completion signal received for CMD61 + * @retval None + */ +void SDIO_ClearFlag(uint32_t SDIO_FLAG) +{ + /* Check the parameters */ + assert_param(IS_SDIO_CLEAR_FLAG(SDIO_FLAG)); + + SDIO->ICR = SDIO_FLAG; +} + +/** + * @brief Checks whether the specified SDIO interrupt has occurred or not. + * @param SDIO_IT: specifies the SDIO interrupt source to check. + * This parameter can be one of the following values: + * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt + * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDIO_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt + * @arg SDIO_IT_STBITERR: Start bit not detected on all data signals in wide + * bus mode interrupt + * @arg SDIO_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDIO_IT_CMDACT: Command transfer in progress interrupt + * @arg SDIO_IT_TXACT: Data transmit in progress interrupt + * @arg SDIO_IT_RXACT: Data receive in progress interrupt + * @arg SDIO_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDIO_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDIO_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDIO_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDIO_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDIO_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDIO_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDIO_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDIO_IT_SDIOIT: SD I/O interrupt received interrupt + * @arg SDIO_IT_CEATAEND: CE-ATA command completion signal received for CMD61 interrupt + * @retval The new state of SDIO_IT (SET or RESET). + */ +ITStatus SDIO_GetITStatus(uint32_t SDIO_IT) +{ + ITStatus bitstatus = RESET; + + /* Check the parameters */ + assert_param(IS_SDIO_GET_IT(SDIO_IT)); + if ((SDIO->STA & SDIO_IT) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the SDIO's interrupt pending bits. + * @param SDIO_IT: specifies the interrupt pending bit to clear. + * This parameter can be one or a combination of the following values: + * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt + * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDIO_IT_DATAEND: Data end (data counter, SDIDCOUNT, is zero) interrupt + * @arg SDIO_IT_STBITERR: Start bit not detected on all data signals in wide + * bus mode interrupt + * @arg SDIO_IT_SDIOIT: SD I/O interrupt received interrupt + * @arg SDIO_IT_CEATAEND: CE-ATA command completion signal received for CMD61 + * @retval None + */ +void SDIO_ClearITPendingBit(uint32_t SDIO_IT) +{ + /* Check the parameters */ + assert_param(IS_SDIO_CLEAR_IT(SDIO_IT)); + + SDIO->ICR = SDIO_IT; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c new file mode 100644 index 00000000..51a9cce7 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c @@ -0,0 +1,908 @@ +/** + ****************************************************************************** + * @file stm32f10x_spi.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the SPI firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_spi.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup SPI + * @brief SPI driver modules + * @{ + */ + +/** @defgroup SPI_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + + +/** @defgroup SPI_Private_Defines + * @{ + */ + +/* SPI SPE mask */ +#define CR1_SPE_Set ((uint16_t)0x0040) +#define CR1_SPE_Reset ((uint16_t)0xFFBF) + +/* I2S I2SE mask */ +#define I2SCFGR_I2SE_Set ((uint16_t)0x0400) +#define I2SCFGR_I2SE_Reset ((uint16_t)0xFBFF) + +/* SPI CRCNext mask */ +#define CR1_CRCNext_Set ((uint16_t)0x1000) + +/* SPI CRCEN mask */ +#define CR1_CRCEN_Set ((uint16_t)0x2000) +#define CR1_CRCEN_Reset ((uint16_t)0xDFFF) + +/* SPI SSOE mask */ +#define CR2_SSOE_Set ((uint16_t)0x0004) +#define CR2_SSOE_Reset ((uint16_t)0xFFFB) + +/* SPI registers Masks */ +#define CR1_CLEAR_Mask ((uint16_t)0x3040) +#define I2SCFGR_CLEAR_Mask ((uint16_t)0xF040) + +/* SPI or I2S mode selection masks */ +#define SPI_Mode_Select ((uint16_t)0xF7FF) +#define I2S_Mode_Select ((uint16_t)0x0800) + +/* I2S clock source selection masks */ +#define I2S2_CLOCK_SRC ((uint32_t)(0x00020000)) +#define I2S3_CLOCK_SRC ((uint32_t)(0x00040000)) +#define I2S_MUL_MASK ((uint32_t)(0x0000F000)) +#define I2S_DIV_MASK ((uint32_t)(0x000000F0)) + +/** + * @} + */ + +/** @defgroup SPI_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup SPI_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup SPI_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup SPI_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the SPIx peripheral registers to their default + * reset values (Affects also the I2Ss). + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @retval None + */ +void SPI_I2S_DeInit(SPI_TypeDef* SPIx) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + + if (SPIx == SPI1) + { + /* Enable SPI1 reset state */ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE); + /* Release SPI1 from reset state */ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE); + } + else if (SPIx == SPI2) + { + /* Enable SPI2 reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE); + /* Release SPI2 from reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, DISABLE); + } + else + { + if (SPIx == SPI3) + { + /* Enable SPI3 reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, ENABLE); + /* Release SPI3 from reset state */ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, DISABLE); + } + } +} + +/** + * @brief Initializes the SPIx peripheral according to the specified + * parameters in the SPI_InitStruct. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @param SPI_InitStruct: pointer to a SPI_InitTypeDef structure that + * contains the configuration information for the specified SPI peripheral. + * @retval None + */ +void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct) +{ + uint16_t tmpreg = 0; + + /* check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + + /* Check the SPI parameters */ + assert_param(IS_SPI_DIRECTION_MODE(SPI_InitStruct->SPI_Direction)); + assert_param(IS_SPI_MODE(SPI_InitStruct->SPI_Mode)); + assert_param(IS_SPI_DATASIZE(SPI_InitStruct->SPI_DataSize)); + assert_param(IS_SPI_CPOL(SPI_InitStruct->SPI_CPOL)); + assert_param(IS_SPI_CPHA(SPI_InitStruct->SPI_CPHA)); + assert_param(IS_SPI_NSS(SPI_InitStruct->SPI_NSS)); + assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_InitStruct->SPI_BaudRatePrescaler)); + assert_param(IS_SPI_FIRST_BIT(SPI_InitStruct->SPI_FirstBit)); + assert_param(IS_SPI_CRC_POLYNOMIAL(SPI_InitStruct->SPI_CRCPolynomial)); + +/*---------------------------- SPIx CR1 Configuration ------------------------*/ + /* Get the SPIx CR1 value */ + tmpreg = SPIx->CR1; + /* Clear BIDIMode, BIDIOE, RxONLY, SSM, SSI, LSBFirst, BR, MSTR, CPOL and CPHA bits */ + tmpreg &= CR1_CLEAR_Mask; + /* Configure SPIx: direction, NSS management, first transmitted bit, BaudRate prescaler + master/salve mode, CPOL and CPHA */ + /* Set BIDImode, BIDIOE and RxONLY bits according to SPI_Direction value */ + /* Set SSM, SSI and MSTR bits according to SPI_Mode and SPI_NSS values */ + /* Set LSBFirst bit according to SPI_FirstBit value */ + /* Set BR bits according to SPI_BaudRatePrescaler value */ + /* Set CPOL bit according to SPI_CPOL value */ + /* Set CPHA bit according to SPI_CPHA value */ + tmpreg |= (uint16_t)((uint32_t)SPI_InitStruct->SPI_Direction | SPI_InitStruct->SPI_Mode | + SPI_InitStruct->SPI_DataSize | SPI_InitStruct->SPI_CPOL | + SPI_InitStruct->SPI_CPHA | SPI_InitStruct->SPI_NSS | + SPI_InitStruct->SPI_BaudRatePrescaler | SPI_InitStruct->SPI_FirstBit); + /* Write to SPIx CR1 */ + SPIx->CR1 = tmpreg; + + /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */ + SPIx->I2SCFGR &= SPI_Mode_Select; + +/*---------------------------- SPIx CRCPOLY Configuration --------------------*/ + /* Write to SPIx CRCPOLY */ + SPIx->CRCPR = SPI_InitStruct->SPI_CRCPolynomial; +} + +/** + * @brief Initializes the SPIx peripheral according to the specified + * parameters in the I2S_InitStruct. + * @param SPIx: where x can be 2 or 3 to select the SPI peripheral + * (configured in I2S mode). + * @param I2S_InitStruct: pointer to an I2S_InitTypeDef structure that + * contains the configuration information for the specified SPI peripheral + * configured in I2S mode. + * @note + * The function calculates the optimal prescaler needed to obtain the most + * accurate audio frequency (depending on the I2S clock source, the PLL values + * and the product configuration). But in case the prescaler value is greater + * than 511, the default value (0x02) will be configured instead. * + * @retval None + */ +void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct) +{ + uint16_t tmpreg = 0, i2sdiv = 2, i2sodd = 0, packetlength = 1; + uint32_t tmp = 0; + RCC_ClocksTypeDef RCC_Clocks; + uint32_t sourceclock = 0; + + /* Check the I2S parameters */ + assert_param(IS_SPI_23_PERIPH(SPIx)); + assert_param(IS_I2S_MODE(I2S_InitStruct->I2S_Mode)); + assert_param(IS_I2S_STANDARD(I2S_InitStruct->I2S_Standard)); + assert_param(IS_I2S_DATA_FORMAT(I2S_InitStruct->I2S_DataFormat)); + assert_param(IS_I2S_MCLK_OUTPUT(I2S_InitStruct->I2S_MCLKOutput)); + assert_param(IS_I2S_AUDIO_FREQ(I2S_InitStruct->I2S_AudioFreq)); + assert_param(IS_I2S_CPOL(I2S_InitStruct->I2S_CPOL)); + +/*----------------------- SPIx I2SCFGR & I2SPR Configuration -----------------*/ + /* Clear I2SMOD, I2SE, I2SCFG, PCMSYNC, I2SSTD, CKPOL, DATLEN and CHLEN bits */ + SPIx->I2SCFGR &= I2SCFGR_CLEAR_Mask; + SPIx->I2SPR = 0x0002; + + /* Get the I2SCFGR register value */ + tmpreg = SPIx->I2SCFGR; + + /* If the default value has to be written, reinitialize i2sdiv and i2sodd*/ + if(I2S_InitStruct->I2S_AudioFreq == I2S_AudioFreq_Default) + { + i2sodd = (uint16_t)0; + i2sdiv = (uint16_t)2; + } + /* If the requested audio frequency is not the default, compute the prescaler */ + else + { + /* Check the frame length (For the Prescaler computing) */ + if(I2S_InitStruct->I2S_DataFormat == I2S_DataFormat_16b) + { + /* Packet length is 16 bits */ + packetlength = 1; + } + else + { + /* Packet length is 32 bits */ + packetlength = 2; + } + + /* Get the I2S clock source mask depending on the peripheral number */ + if(((uint32_t)SPIx) == SPI2_BASE) + { + /* The mask is relative to I2S2 */ + tmp = I2S2_CLOCK_SRC; + } + else + { + /* The mask is relative to I2S3 */ + tmp = I2S3_CLOCK_SRC; + } + + /* Check the I2S clock source configuration depending on the Device: + Only Connectivity line devices have the PLL3 VCO clock */ +#ifdef STM32F10X_CL + if((RCC->CFGR2 & tmp) != 0) + { + /* Get the configuration bits of RCC PLL3 multiplier */ + tmp = (uint32_t)((RCC->CFGR2 & I2S_MUL_MASK) >> 12); + + /* Get the value of the PLL3 multiplier */ + if((tmp > 5) && (tmp < 15)) + { + /* Multiplier is between 8 and 14 (value 15 is forbidden) */ + tmp += 2; + } + else + { + if (tmp == 15) + { + /* Multiplier is 20 */ + tmp = 20; + } + } + /* Get the PREDIV2 value */ + sourceclock = (uint32_t)(((RCC->CFGR2 & I2S_DIV_MASK) >> 4) + 1); + + /* Calculate the Source Clock frequency based on PLL3 and PREDIV2 values */ + sourceclock = (uint32_t) ((HSE_Value / sourceclock) * tmp * 2); + } + else + { + /* I2S Clock source is System clock: Get System Clock frequency */ + RCC_GetClocksFreq(&RCC_Clocks); + + /* Get the source clock value: based on System Clock value */ + sourceclock = RCC_Clocks.SYSCLK_Frequency; + } +#else /* STM32F10X_HD */ + /* I2S Clock source is System clock: Get System Clock frequency */ + RCC_GetClocksFreq(&RCC_Clocks); + + /* Get the source clock value: based on System Clock value */ + sourceclock = RCC_Clocks.SYSCLK_Frequency; +#endif /* STM32F10X_CL */ + + /* Compute the Real divider depending on the MCLK output state with a floating point */ + if(I2S_InitStruct->I2S_MCLKOutput == I2S_MCLKOutput_Enable) + { + /* MCLK output is enabled */ + tmp = (uint16_t)(((((sourceclock / 256) * 10) / I2S_InitStruct->I2S_AudioFreq)) + 5); + } + else + { + /* MCLK output is disabled */ + tmp = (uint16_t)(((((sourceclock / (32 * packetlength)) *10 ) / I2S_InitStruct->I2S_AudioFreq)) + 5); + } + + /* Remove the floating point */ + tmp = tmp / 10; + + /* Check the parity of the divider */ + i2sodd = (uint16_t)(tmp & (uint16_t)0x0001); + + /* Compute the i2sdiv prescaler */ + i2sdiv = (uint16_t)((tmp - i2sodd) / 2); + + /* Get the Mask for the Odd bit (SPI_I2SPR[8]) register */ + i2sodd = (uint16_t) (i2sodd << 8); + } + + /* Test if the divider is 1 or 0 or greater than 0xFF */ + if ((i2sdiv < 2) || (i2sdiv > 0xFF)) + { + /* Set the default values */ + i2sdiv = 2; + i2sodd = 0; + } + + /* Write to SPIx I2SPR register the computed value */ + SPIx->I2SPR = (uint16_t)(i2sdiv | (uint16_t)(i2sodd | (uint16_t)I2S_InitStruct->I2S_MCLKOutput)); + + /* Configure the I2S with the SPI_InitStruct values */ + tmpreg |= (uint16_t)(I2S_Mode_Select | (uint16_t)(I2S_InitStruct->I2S_Mode | \ + (uint16_t)(I2S_InitStruct->I2S_Standard | (uint16_t)(I2S_InitStruct->I2S_DataFormat | \ + (uint16_t)I2S_InitStruct->I2S_CPOL)))); + + /* Write to SPIx I2SCFGR */ + SPIx->I2SCFGR = tmpreg; +} + +/** + * @brief Fills each SPI_InitStruct member with its default value. + * @param SPI_InitStruct : pointer to a SPI_InitTypeDef structure which will be initialized. + * @retval None + */ +void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct) +{ +/*--------------- Reset SPI init structure parameters values -----------------*/ + /* Initialize the SPI_Direction member */ + SPI_InitStruct->SPI_Direction = SPI_Direction_2Lines_FullDuplex; + /* initialize the SPI_Mode member */ + SPI_InitStruct->SPI_Mode = SPI_Mode_Slave; + /* initialize the SPI_DataSize member */ + SPI_InitStruct->SPI_DataSize = SPI_DataSize_8b; + /* Initialize the SPI_CPOL member */ + SPI_InitStruct->SPI_CPOL = SPI_CPOL_Low; + /* Initialize the SPI_CPHA member */ + SPI_InitStruct->SPI_CPHA = SPI_CPHA_1Edge; + /* Initialize the SPI_NSS member */ + SPI_InitStruct->SPI_NSS = SPI_NSS_Hard; + /* Initialize the SPI_BaudRatePrescaler member */ + SPI_InitStruct->SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; + /* Initialize the SPI_FirstBit member */ + SPI_InitStruct->SPI_FirstBit = SPI_FirstBit_MSB; + /* Initialize the SPI_CRCPolynomial member */ + SPI_InitStruct->SPI_CRCPolynomial = 7; +} + +/** + * @brief Fills each I2S_InitStruct member with its default value. + * @param I2S_InitStruct : pointer to a I2S_InitTypeDef structure which will be initialized. + * @retval None + */ +void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct) +{ +/*--------------- Reset I2S init structure parameters values -----------------*/ + /* Initialize the I2S_Mode member */ + I2S_InitStruct->I2S_Mode = I2S_Mode_SlaveTx; + + /* Initialize the I2S_Standard member */ + I2S_InitStruct->I2S_Standard = I2S_Standard_Phillips; + + /* Initialize the I2S_DataFormat member */ + I2S_InitStruct->I2S_DataFormat = I2S_DataFormat_16b; + + /* Initialize the I2S_MCLKOutput member */ + I2S_InitStruct->I2S_MCLKOutput = I2S_MCLKOutput_Disable; + + /* Initialize the I2S_AudioFreq member */ + I2S_InitStruct->I2S_AudioFreq = I2S_AudioFreq_Default; + + /* Initialize the I2S_CPOL member */ + I2S_InitStruct->I2S_CPOL = I2S_CPOL_Low; +} + +/** + * @brief Enables or disables the specified SPI peripheral. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @param NewState: new state of the SPIx peripheral. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected SPI peripheral */ + SPIx->CR1 |= CR1_SPE_Set; + } + else + { + /* Disable the selected SPI peripheral */ + SPIx->CR1 &= CR1_SPE_Reset; + } +} + +/** + * @brief Enables or disables the specified SPI peripheral (in I2S mode). + * @param SPIx: where x can be 2 or 3 to select the SPI peripheral. + * @param NewState: new state of the SPIx peripheral. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_SPI_23_PERIPH(SPIx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected SPI peripheral (in I2S mode) */ + SPIx->I2SCFGR |= I2SCFGR_I2SE_Set; + } + else + { + /* Disable the selected SPI peripheral (in I2S mode) */ + SPIx->I2SCFGR &= I2SCFGR_I2SE_Reset; + } +} + +/** + * @brief Enables or disables the specified SPI/I2S interrupts. + * @param SPIx: where x can be + * - 1, 2 or 3 in SPI mode + * - 2 or 3 in I2S mode + * @param SPI_I2S_IT: specifies the SPI/I2S interrupt source to be enabled or disabled. + * This parameter can be one of the following values: + * @arg SPI_I2S_IT_TXE: Tx buffer empty interrupt mask + * @arg SPI_I2S_IT_RXNE: Rx buffer not empty interrupt mask + * @arg SPI_I2S_IT_ERR: Error interrupt mask + * @param NewState: new state of the specified SPI/I2S interrupt. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState) +{ + uint16_t itpos = 0, itmask = 0 ; + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + assert_param(IS_SPI_I2S_CONFIG_IT(SPI_I2S_IT)); + + /* Get the SPI/I2S IT index */ + itpos = SPI_I2S_IT >> 4; + + /* Set the IT mask */ + itmask = (uint16_t)1 << (uint16_t)itpos; + + if (NewState != DISABLE) + { + /* Enable the selected SPI/I2S interrupt */ + SPIx->CR2 |= itmask; + } + else + { + /* Disable the selected SPI/I2S interrupt */ + SPIx->CR2 &= (uint16_t)~itmask; + } +} + +/** + * @brief Enables or disables the SPIx/I2Sx DMA interface. + * @param SPIx: where x can be + * - 1, 2 or 3 in SPI mode + * - 2 or 3 in I2S mode + * @param SPI_I2S_DMAReq: specifies the SPI/I2S DMA transfer request to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg SPI_I2S_DMAReq_Tx: Tx buffer DMA transfer request + * @arg SPI_I2S_DMAReq_Rx: Rx buffer DMA transfer request + * @param NewState: new state of the selected SPI/I2S DMA transfer request. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + assert_param(IS_SPI_I2S_DMAREQ(SPI_I2S_DMAReq)); + if (NewState != DISABLE) + { + /* Enable the selected SPI/I2S DMA requests */ + SPIx->CR2 |= SPI_I2S_DMAReq; + } + else + { + /* Disable the selected SPI/I2S DMA requests */ + SPIx->CR2 &= (uint16_t)~SPI_I2S_DMAReq; + } +} + +/** + * @brief Transmits a Data through the SPIx/I2Sx peripheral. + * @param SPIx: where x can be + * - 1, 2 or 3 in SPI mode + * - 2 or 3 in I2S mode + * @param Data : Data to be transmitted. + * @retval None + */ +void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + + /* Write in the DR register the data to be sent */ + SPIx->DR = Data; +} + +/** + * @brief Returns the most recent received data by the SPIx/I2Sx peripheral. + * @param SPIx: where x can be + * - 1, 2 or 3 in SPI mode + * - 2 or 3 in I2S mode + * @retval The value of the received data. + */ +uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + + /* Return the data in the DR register */ + return SPIx->DR; +} + +/** + * @brief Configures internally by software the NSS pin for the selected SPI. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @param SPI_NSSInternalSoft: specifies the SPI NSS internal state. + * This parameter can be one of the following values: + * @arg SPI_NSSInternalSoft_Set: Set NSS pin internally + * @arg SPI_NSSInternalSoft_Reset: Reset NSS pin internally + * @retval None + */ +void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_SPI_NSS_INTERNAL(SPI_NSSInternalSoft)); + if (SPI_NSSInternalSoft != SPI_NSSInternalSoft_Reset) + { + /* Set NSS pin internally by software */ + SPIx->CR1 |= SPI_NSSInternalSoft_Set; + } + else + { + /* Reset NSS pin internally by software */ + SPIx->CR1 &= SPI_NSSInternalSoft_Reset; + } +} + +/** + * @brief Enables or disables the SS output for the selected SPI. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @param NewState: new state of the SPIx SS output. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected SPI SS output */ + SPIx->CR2 |= CR2_SSOE_Set; + } + else + { + /* Disable the selected SPI SS output */ + SPIx->CR2 &= CR2_SSOE_Reset; + } +} + +/** + * @brief Configures the data size for the selected SPI. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @param SPI_DataSize: specifies the SPI data size. + * This parameter can be one of the following values: + * @arg SPI_DataSize_16b: Set data frame format to 16bit + * @arg SPI_DataSize_8b: Set data frame format to 8bit + * @retval None + */ +void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_SPI_DATASIZE(SPI_DataSize)); + /* Clear DFF bit */ + SPIx->CR1 &= (uint16_t)~SPI_DataSize_16b; + /* Set new DFF bit value */ + SPIx->CR1 |= SPI_DataSize; +} + +/** + * @brief Transmit the SPIx CRC value. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @retval None + */ +void SPI_TransmitCRC(SPI_TypeDef* SPIx) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + + /* Enable the selected SPI CRC transmission */ + SPIx->CR1 |= CR1_CRCNext_Set; +} + +/** + * @brief Enables or disables the CRC value calculation of the transferred bytes. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @param NewState: new state of the SPIx CRC value calculation. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the selected SPI CRC calculation */ + SPIx->CR1 |= CR1_CRCEN_Set; + } + else + { + /* Disable the selected SPI CRC calculation */ + SPIx->CR1 &= CR1_CRCEN_Reset; + } +} + +/** + * @brief Returns the transmit or the receive CRC register value for the specified SPI. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @param SPI_CRC: specifies the CRC register to be read. + * This parameter can be one of the following values: + * @arg SPI_CRC_Tx: Selects Tx CRC register + * @arg SPI_CRC_Rx: Selects Rx CRC register + * @retval The selected CRC register value.. + */ +uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC) +{ + uint16_t crcreg = 0; + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_SPI_CRC(SPI_CRC)); + if (SPI_CRC != SPI_CRC_Rx) + { + /* Get the Tx CRC register */ + crcreg = SPIx->TXCRCR; + } + else + { + /* Get the Rx CRC register */ + crcreg = SPIx->RXCRCR; + } + /* Return the selected CRC register */ + return crcreg; +} + +/** + * @brief Returns the CRC Polynomial register value for the specified SPI. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @retval The CRC Polynomial register value. + */ +uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + + /* Return the CRC polynomial register */ + return SPIx->CRCPR; +} + +/** + * @brief Selects the data transfer direction in bi-directional mode for the specified SPI. + * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral. + * @param SPI_Direction: specifies the data transfer direction in bi-directional mode. + * This parameter can be one of the following values: + * @arg SPI_Direction_Tx: Selects Tx transmission direction + * @arg SPI_Direction_Rx: Selects Rx receive direction + * @retval None + */ +void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_SPI_DIRECTION(SPI_Direction)); + if (SPI_Direction == SPI_Direction_Tx) + { + /* Set the Tx only mode */ + SPIx->CR1 |= SPI_Direction_Tx; + } + else + { + /* Set the Rx only mode */ + SPIx->CR1 &= SPI_Direction_Rx; + } +} + +/** + * @brief Checks whether the specified SPI/I2S flag is set or not. + * @param SPIx: where x can be + * - 1, 2 or 3 in SPI mode + * - 2 or 3 in I2S mode + * @param SPI_I2S_FLAG: specifies the SPI/I2S flag to check. + * This parameter can be one of the following values: + * @arg SPI_I2S_FLAG_TXE: Transmit buffer empty flag. + * @arg SPI_I2S_FLAG_RXNE: Receive buffer not empty flag. + * @arg SPI_I2S_FLAG_BSY: Busy flag. + * @arg SPI_I2S_FLAG_OVR: Overrun flag. + * @arg SPI_FLAG_MODF: Mode Fault flag. + * @arg SPI_FLAG_CRCERR: CRC Error flag. + * @arg I2S_FLAG_UDR: Underrun Error flag. + * @arg I2S_FLAG_CHSIDE: Channel Side flag. + * @retval The new state of SPI_I2S_FLAG (SET or RESET). + */ +FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_SPI_I2S_GET_FLAG(SPI_I2S_FLAG)); + /* Check the status of the specified SPI/I2S flag */ + if ((SPIx->SR & SPI_I2S_FLAG) != (uint16_t)RESET) + { + /* SPI_I2S_FLAG is set */ + bitstatus = SET; + } + else + { + /* SPI_I2S_FLAG is reset */ + bitstatus = RESET; + } + /* Return the SPI_I2S_FLAG status */ + return bitstatus; +} + +/** + * @brief Clears the SPIx CRC Error (CRCERR) flag. + * @param SPIx: where x can be + * - 1, 2 or 3 in SPI mode + * @param SPI_I2S_FLAG: specifies the SPI flag to clear. + * This function clears only CRCERR flag. + * @note + * - OVR (OverRun error) flag is cleared by software sequence: a read + * operation to SPI_DR register (SPI_I2S_ReceiveData()) followed by a read + * operation to SPI_SR register (SPI_I2S_GetFlagStatus()). + * - UDR (UnderRun error) flag is cleared by a read operation to + * SPI_SR register (SPI_I2S_GetFlagStatus()). + * - MODF (Mode Fault) flag is cleared by software sequence: a read/write + * operation to SPI_SR register (SPI_I2S_GetFlagStatus()) followed by a + * write operation to SPI_CR1 register (SPI_Cmd() to enable the SPI). + * @retval None + */ +void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG) +{ + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_SPI_I2S_CLEAR_FLAG(SPI_I2S_FLAG)); + + /* Clear the selected SPI CRC Error (CRCERR) flag */ + SPIx->SR = (uint16_t)~SPI_I2S_FLAG; +} + +/** + * @brief Checks whether the specified SPI/I2S interrupt has occurred or not. + * @param SPIx: where x can be + * - 1, 2 or 3 in SPI mode + * - 2 or 3 in I2S mode + * @param SPI_I2S_IT: specifies the SPI/I2S interrupt source to check. + * This parameter can be one of the following values: + * @arg SPI_I2S_IT_TXE: Transmit buffer empty interrupt. + * @arg SPI_I2S_IT_RXNE: Receive buffer not empty interrupt. + * @arg SPI_I2S_IT_OVR: Overrun interrupt. + * @arg SPI_IT_MODF: Mode Fault interrupt. + * @arg SPI_IT_CRCERR: CRC Error interrupt. + * @arg I2S_IT_UDR: Underrun Error interrupt. + * @retval The new state of SPI_I2S_IT (SET or RESET). + */ +ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT) +{ + ITStatus bitstatus = RESET; + uint16_t itpos = 0, itmask = 0, enablestatus = 0; + + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_SPI_I2S_GET_IT(SPI_I2S_IT)); + + /* Get the SPI/I2S IT index */ + itpos = 0x01 << (SPI_I2S_IT & 0x0F); + + /* Get the SPI/I2S IT mask */ + itmask = SPI_I2S_IT >> 4; + + /* Set the IT mask */ + itmask = 0x01 << itmask; + + /* Get the SPI_I2S_IT enable bit status */ + enablestatus = (SPIx->CR2 & itmask) ; + + /* Check the status of the specified SPI/I2S interrupt */ + if (((SPIx->SR & itpos) != (uint16_t)RESET) && enablestatus) + { + /* SPI_I2S_IT is set */ + bitstatus = SET; + } + else + { + /* SPI_I2S_IT is reset */ + bitstatus = RESET; + } + /* Return the SPI_I2S_IT status */ + return bitstatus; +} + +/** + * @brief Clears the SPIx CRC Error (CRCERR) interrupt pending bit. + * @param SPIx: where x can be + * - 1, 2 or 3 in SPI mode + * @param SPI_I2S_IT: specifies the SPI interrupt pending bit to clear. + * This function clears only CRCERR interrupt pending bit. + * @note + * - OVR (OverRun Error) interrupt pending bit is cleared by software + * sequence: a read operation to SPI_DR register (SPI_I2S_ReceiveData()) + * followed by a read operation to SPI_SR register (SPI_I2S_GetITStatus()). + * - UDR (UnderRun Error) interrupt pending bit is cleared by a read + * operation to SPI_SR register (SPI_I2S_GetITStatus()). + * - MODF (Mode Fault) interrupt pending bit is cleared by software sequence: + * a read/write operation to SPI_SR register (SPI_I2S_GetITStatus()) + * followed by a write operation to SPI_CR1 register (SPI_Cmd() to enable + * the SPI). + * @retval None + */ +void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT) +{ + uint16_t itpos = 0; + /* Check the parameters */ + assert_param(IS_SPI_ALL_PERIPH(SPIx)); + assert_param(IS_SPI_I2S_CLEAR_IT(SPI_I2S_IT)); + + /* Get the SPI IT index */ + itpos = 0x01 << (SPI_I2S_IT & 0x0F); + + /* Clear the selected SPI CRC Error (CRCERR) interrupt pending bit */ + SPIx->SR = (uint16_t)~itpos; +} +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c new file mode 100644 index 00000000..81c8484e --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c @@ -0,0 +1,2890 @@ +/** + ****************************************************************************** + * @file stm32f10x_tim.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the TIM firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_tim.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup TIM + * @brief TIM driver modules + * @{ + */ + +/** @defgroup TIM_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_Defines + * @{ + */ + +/* ---------------------- TIM registers bit mask ------------------------ */ +#define SMCR_ETR_Mask ((uint16_t)0x00FF) +#define CCMR_Offset ((uint16_t)0x0018) +#define CCER_CCE_Set ((uint16_t)0x0001) +#define CCER_CCNE_Set ((uint16_t)0x0004) + +/** + * @} + */ + +/** @defgroup TIM_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_FunctionPrototypes + * @{ + */ + +static void TI1_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter); +static void TI2_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter); +static void TI3_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter); +static void TI4_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter); +/** + * @} + */ + +/** @defgroup TIM_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the TIMx peripheral registers to their default reset values. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @retval None + */ +void TIM_DeInit(TIM_TypeDef* TIMx) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + + if (TIMx == TIM1) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, DISABLE); + } + else if (TIMx == TIM2) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, DISABLE); + } + else if (TIMx == TIM3) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, DISABLE); + } + else if (TIMx == TIM4) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, DISABLE); + } + else if (TIMx == TIM5) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, DISABLE); + } + else if (TIMx == TIM6) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, DISABLE); + } + else if (TIMx == TIM7) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, DISABLE); + } + else if (TIMx == TIM8) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, DISABLE); + } + else if (TIMx == TIM9) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM9, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM9, DISABLE); + } + else if (TIMx == TIM10) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM10, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM10, DISABLE); + } + else if (TIMx == TIM11) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM11, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM11, DISABLE); + } + else if (TIMx == TIM12) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM12, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM12, DISABLE); + } + else if (TIMx == TIM13) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM13, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM13, DISABLE); + } + else if (TIMx == TIM14) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM14, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM14, DISABLE); + } + else if (TIMx == TIM15) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM15, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM15, DISABLE); + } + else if (TIMx == TIM16) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM16, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM16, DISABLE); + } + else + { + if (TIMx == TIM17) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM17, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM17, DISABLE); + } + } +} + +/** + * @brief Initializes the TIMx Time Base Unit peripheral according to + * the specified parameters in the TIM_TimeBaseInitStruct. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param TIM_TimeBaseInitStruct: pointer to a TIM_TimeBaseInitTypeDef + * structure that contains the configuration information for the + * specified TIM peripheral. + * @retval None + */ +void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct) +{ + uint16_t tmpcr1 = 0; + + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_COUNTER_MODE(TIM_TimeBaseInitStruct->TIM_CounterMode)); + assert_param(IS_TIM_CKD_DIV(TIM_TimeBaseInitStruct->TIM_ClockDivision)); + + tmpcr1 = TIMx->CR1; + + if((TIMx == TIM1) || (TIMx == TIM8)|| (TIMx == TIM2) || (TIMx == TIM3)|| + (TIMx == TIM4) || (TIMx == TIM5)) + { + /* Select the Counter Mode */ + tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_CR1_DIR | TIM_CR1_CMS))); + tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_CounterMode; + } + + if((TIMx != TIM6) && (TIMx != TIM7)) + { + /* Set the clock division */ + tmpcr1 &= (uint16_t)(~((uint16_t)TIM_CR1_CKD)); + tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_ClockDivision; + } + + TIMx->CR1 = tmpcr1; + + /* Set the Autoreload value */ + TIMx->ARR = TIM_TimeBaseInitStruct->TIM_Period ; + + /* Set the Prescaler value */ + TIMx->PSC = TIM_TimeBaseInitStruct->TIM_Prescaler; + + if ((TIMx == TIM1) || (TIMx == TIM8)|| (TIMx == TIM15)|| (TIMx == TIM16) || (TIMx == TIM17)) + { + /* Set the Repetition Counter value */ + TIMx->RCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter; + } + + /* Generate an update event to reload the Prescaler and the Repetition counter + values immediately */ + TIMx->EGR = TIM_PSCReloadMode_Immediate; +} + +/** + * @brief Initializes the TIMx Channel1 according to the specified + * parameters in the TIM_OCInitStruct. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure + * that contains the configuration information for the specified TIM peripheral. + * @retval None + */ +void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct) +{ + uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode)); + assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState)); + assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity)); + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= (uint16_t)(~(uint16_t)TIM_CCER_CC1E); + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR1_OC1M)); + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR1_CC1S)); + + /* Select the Output Compare Mode */ + tmpccmrx |= TIM_OCInitStruct->TIM_OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC1P)); + /* Set the Output Compare Polarity */ + tmpccer |= TIM_OCInitStruct->TIM_OCPolarity; + + /* Set the Output State */ + tmpccer |= TIM_OCInitStruct->TIM_OutputState; + + if((TIMx == TIM1) || (TIMx == TIM8)|| (TIMx == TIM15)|| + (TIMx == TIM16)|| (TIMx == TIM17)) + { + assert_param(IS_TIM_OUTPUTN_STATE(TIM_OCInitStruct->TIM_OutputNState)); + assert_param(IS_TIM_OCN_POLARITY(TIM_OCInitStruct->TIM_OCNPolarity)); + assert_param(IS_TIM_OCNIDLE_STATE(TIM_OCInitStruct->TIM_OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState)); + + /* Reset the Output N Polarity level */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC1NP)); + /* Set the Output N Polarity */ + tmpccer |= TIM_OCInitStruct->TIM_OCNPolarity; + + /* Reset the Output N State */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC1NE)); + /* Set the Output N State */ + tmpccer |= TIM_OCInitStruct->TIM_OutputNState; + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS1)); + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS1N)); + + /* Set the Output Idle state */ + tmpcr2 |= TIM_OCInitStruct->TIM_OCIdleState; + /* Set the Output N Idle state */ + tmpcr2 |= TIM_OCInitStruct->TIM_OCNIdleState; + } + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = TIM_OCInitStruct->TIM_Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Initializes the TIMx Channel2 according to the specified + * parameters in the TIM_OCInitStruct. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select + * the TIM peripheral. + * @param TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure + * that contains the configuration information for the specified TIM peripheral. + * @retval None + */ +void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct) +{ + uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode)); + assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState)); + assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity)); + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CCER_CC2E)); + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR1_OC2M)); + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR1_CC2S)); + + /* Select the Output Compare Mode */ + tmpccmrx |= (uint16_t)(TIM_OCInitStruct->TIM_OCMode << 8); + + /* Reset the Output Polarity level */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC2P)); + /* Set the Output Compare Polarity */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 4); + + /* Set the Output State */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 4); + + if((TIMx == TIM1) || (TIMx == TIM8)) + { + assert_param(IS_TIM_OUTPUTN_STATE(TIM_OCInitStruct->TIM_OutputNState)); + assert_param(IS_TIM_OCN_POLARITY(TIM_OCInitStruct->TIM_OCNPolarity)); + assert_param(IS_TIM_OCNIDLE_STATE(TIM_OCInitStruct->TIM_OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState)); + + /* Reset the Output N Polarity level */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC2NP)); + /* Set the Output N Polarity */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCNPolarity << 4); + + /* Reset the Output N State */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC2NE)); + /* Set the Output N State */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputNState << 4); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS2)); + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS2N)); + + /* Set the Output Idle state */ + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 2); + /* Set the Output N Idle state */ + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCNIdleState << 2); + } + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = TIM_OCInitStruct->TIM_Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Initializes the TIMx Channel3 according to the specified + * parameters in the TIM_OCInitStruct. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure + * that contains the configuration information for the specified TIM peripheral. + * @retval None + */ +void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct) +{ + uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode)); + assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState)); + assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity)); + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CCER_CC3E)); + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR2_OC3M)); + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR2_CC3S)); + /* Select the Output Compare Mode */ + tmpccmrx |= TIM_OCInitStruct->TIM_OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC3P)); + /* Set the Output Compare Polarity */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 8); + + /* Set the Output State */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 8); + + if((TIMx == TIM1) || (TIMx == TIM8)) + { + assert_param(IS_TIM_OUTPUTN_STATE(TIM_OCInitStruct->TIM_OutputNState)); + assert_param(IS_TIM_OCN_POLARITY(TIM_OCInitStruct->TIM_OCNPolarity)); + assert_param(IS_TIM_OCNIDLE_STATE(TIM_OCInitStruct->TIM_OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState)); + + /* Reset the Output N Polarity level */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC3NP)); + /* Set the Output N Polarity */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCNPolarity << 8); + /* Reset the Output N State */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC3NE)); + + /* Set the Output N State */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputNState << 8); + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS3)); + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS3N)); + /* Set the Output Idle state */ + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 4); + /* Set the Output N Idle state */ + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCNIdleState << 4); + } + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = TIM_OCInitStruct->TIM_Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Initializes the TIMx Channel4 according to the specified + * parameters in the TIM_OCInitStruct. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure + * that contains the configuration information for the specified TIM peripheral. + * @retval None + */ +void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct) +{ + uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode)); + assert_param(IS_TIM_OUTPUT_STATE(TIM_OCInitStruct->TIM_OutputState)); + assert_param(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity)); + /* Disable the Channel 2: Reset the CC4E Bit */ + TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CCER_CC4E)); + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR2_OC4M)); + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CCMR2_CC4S)); + + /* Select the Output Compare Mode */ + tmpccmrx |= (uint16_t)(TIM_OCInitStruct->TIM_OCMode << 8); + + /* Reset the Output Polarity level */ + tmpccer &= (uint16_t)(~((uint16_t)TIM_CCER_CC4P)); + /* Set the Output Compare Polarity */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 12); + + /* Set the Output State */ + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 12); + + if((TIMx == TIM1) || (TIMx == TIM8)) + { + assert_param(IS_TIM_OCIDLE_STATE(TIM_OCInitStruct->TIM_OCIdleState)); + /* Reset the Output Compare IDLE State */ + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_CR2_OIS4)); + /* Set the Output Idle state */ + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 6); + } + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = TIM_OCInitStruct->TIM_Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Initializes the TIM peripheral according to the specified + * parameters in the TIM_ICInitStruct. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure + * that contains the configuration information for the specified TIM peripheral. + * @retval None + */ +void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CHANNEL(TIM_ICInitStruct->TIM_Channel)); + assert_param(IS_TIM_IC_SELECTION(TIM_ICInitStruct->TIM_ICSelection)); + assert_param(IS_TIM_IC_PRESCALER(TIM_ICInitStruct->TIM_ICPrescaler)); + assert_param(IS_TIM_IC_FILTER(TIM_ICInitStruct->TIM_ICFilter)); + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM2) || (TIMx == TIM3) || + (TIMx == TIM4) ||(TIMx == TIM5)) + { + assert_param(IS_TIM_IC_POLARITY(TIM_ICInitStruct->TIM_ICPolarity)); + } + else + { + assert_param(IS_TIM_IC_POLARITY_LITE(TIM_ICInitStruct->TIM_ICPolarity)); + } + if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1) + { + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + /* TI1 Configuration */ + TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, + TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + /* Set the Input Capture Prescaler value */ + TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } + else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_2) + { + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + /* TI2 Configuration */ + TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, + TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + /* Set the Input Capture Prescaler value */ + TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } + else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_3) + { + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + /* TI3 Configuration */ + TI3_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, + TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + /* Set the Input Capture Prescaler value */ + TIM_SetIC3Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } + else + { + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + /* TI4 Configuration */ + TI4_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, + TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + /* Set the Input Capture Prescaler value */ + TIM_SetIC4Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } +} + +/** + * @brief Configures the TIM peripheral according to the specified + * parameters in the TIM_ICInitStruct to measure an external PWM signal. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure + * that contains the configuration information for the specified TIM peripheral. + * @retval None + */ +void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct) +{ + uint16_t icoppositepolarity = TIM_ICPolarity_Rising; + uint16_t icoppositeselection = TIM_ICSelection_DirectTI; + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + /* Select the Opposite Input Polarity */ + if (TIM_ICInitStruct->TIM_ICPolarity == TIM_ICPolarity_Rising) + { + icoppositepolarity = TIM_ICPolarity_Falling; + } + else + { + icoppositepolarity = TIM_ICPolarity_Rising; + } + /* Select the Opposite Input */ + if (TIM_ICInitStruct->TIM_ICSelection == TIM_ICSelection_DirectTI) + { + icoppositeselection = TIM_ICSelection_IndirectTI; + } + else + { + icoppositeselection = TIM_ICSelection_DirectTI; + } + if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1) + { + /* TI1 Configuration */ + TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + /* Set the Input Capture Prescaler value */ + TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + /* TI2 Configuration */ + TI2_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter); + /* Set the Input Capture Prescaler value */ + TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } + else + { + /* TI2 Configuration */ + TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + /* Set the Input Capture Prescaler value */ + TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + /* TI1 Configuration */ + TI1_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter); + /* Set the Input Capture Prescaler value */ + TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } +} + +/** + * @brief Configures the: Break feature, dead time, Lock level, the OSSI, + * the OSSR State and the AOE(automatic output enable). + * @param TIMx: where x can be 1 or 8 to select the TIM + * @param TIM_BDTRInitStruct: pointer to a TIM_BDTRInitTypeDef structure that + * contains the BDTR Register configuration information for the TIM peripheral. + * @retval None + */ +void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST2_PERIPH(TIMx)); + assert_param(IS_TIM_OSSR_STATE(TIM_BDTRInitStruct->TIM_OSSRState)); + assert_param(IS_TIM_OSSI_STATE(TIM_BDTRInitStruct->TIM_OSSIState)); + assert_param(IS_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->TIM_LOCKLevel)); + assert_param(IS_TIM_BREAK_STATE(TIM_BDTRInitStruct->TIM_Break)); + assert_param(IS_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->TIM_BreakPolarity)); + assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->TIM_AutomaticOutput)); + /* Set the Lock level, the Break enable Bit and the Ploarity, the OSSR State, + the OSSI State, the dead time value and the Automatic Output Enable Bit */ + TIMx->BDTR = (uint32_t)TIM_BDTRInitStruct->TIM_OSSRState | TIM_BDTRInitStruct->TIM_OSSIState | + TIM_BDTRInitStruct->TIM_LOCKLevel | TIM_BDTRInitStruct->TIM_DeadTime | + TIM_BDTRInitStruct->TIM_Break | TIM_BDTRInitStruct->TIM_BreakPolarity | + TIM_BDTRInitStruct->TIM_AutomaticOutput; +} + +/** + * @brief Fills each TIM_TimeBaseInitStruct member with its default value. + * @param TIM_TimeBaseInitStruct : pointer to a TIM_TimeBaseInitTypeDef + * structure which will be initialized. + * @retval None + */ +void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct) +{ + /* Set the default configuration */ + TIM_TimeBaseInitStruct->TIM_Period = 0xFFFF; + TIM_TimeBaseInitStruct->TIM_Prescaler = 0x0000; + TIM_TimeBaseInitStruct->TIM_ClockDivision = TIM_CKD_DIV1; + TIM_TimeBaseInitStruct->TIM_CounterMode = TIM_CounterMode_Up; + TIM_TimeBaseInitStruct->TIM_RepetitionCounter = 0x0000; +} + +/** + * @brief Fills each TIM_OCInitStruct member with its default value. + * @param TIM_OCInitStruct : pointer to a TIM_OCInitTypeDef structure which will + * be initialized. + * @retval None + */ +void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct) +{ + /* Set the default configuration */ + TIM_OCInitStruct->TIM_OCMode = TIM_OCMode_Timing; + TIM_OCInitStruct->TIM_OutputState = TIM_OutputState_Disable; + TIM_OCInitStruct->TIM_OutputNState = TIM_OutputNState_Disable; + TIM_OCInitStruct->TIM_Pulse = 0x0000; + TIM_OCInitStruct->TIM_OCPolarity = TIM_OCPolarity_High; + TIM_OCInitStruct->TIM_OCNPolarity = TIM_OCPolarity_High; + TIM_OCInitStruct->TIM_OCIdleState = TIM_OCIdleState_Reset; + TIM_OCInitStruct->TIM_OCNIdleState = TIM_OCNIdleState_Reset; +} + +/** + * @brief Fills each TIM_ICInitStruct member with its default value. + * @param TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure which will + * be initialized. + * @retval None + */ +void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct) +{ + /* Set the default configuration */ + TIM_ICInitStruct->TIM_Channel = TIM_Channel_1; + TIM_ICInitStruct->TIM_ICPolarity = TIM_ICPolarity_Rising; + TIM_ICInitStruct->TIM_ICSelection = TIM_ICSelection_DirectTI; + TIM_ICInitStruct->TIM_ICPrescaler = TIM_ICPSC_DIV1; + TIM_ICInitStruct->TIM_ICFilter = 0x00; +} + +/** + * @brief Fills each TIM_BDTRInitStruct member with its default value. + * @param TIM_BDTRInitStruct: pointer to a TIM_BDTRInitTypeDef structure which + * will be initialized. + * @retval None + */ +void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct) +{ + /* Set the default configuration */ + TIM_BDTRInitStruct->TIM_OSSRState = TIM_OSSRState_Disable; + TIM_BDTRInitStruct->TIM_OSSIState = TIM_OSSIState_Disable; + TIM_BDTRInitStruct->TIM_LOCKLevel = TIM_LOCKLevel_OFF; + TIM_BDTRInitStruct->TIM_DeadTime = 0x00; + TIM_BDTRInitStruct->TIM_Break = TIM_Break_Disable; + TIM_BDTRInitStruct->TIM_BreakPolarity = TIM_BreakPolarity_Low; + TIM_BDTRInitStruct->TIM_AutomaticOutput = TIM_AutomaticOutput_Disable; +} + +/** + * @brief Enables or disables the specified TIM peripheral. + * @param TIMx: where x can be 1 to 17 to select the TIMx peripheral. + * @param NewState: new state of the TIMx peripheral. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the TIM Counter */ + TIMx->CR1 |= TIM_CR1_CEN; + } + else + { + /* Disable the TIM Counter */ + TIMx->CR1 &= (uint16_t)(~((uint16_t)TIM_CR1_CEN)); + } +} + +/** + * @brief Enables or disables the TIM peripheral Main Outputs. + * @param TIMx: where x can be 1, 8, 15, 16 or 17 to select the TIMx peripheral. + * @param NewState: new state of the TIM peripheral Main Outputs. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST2_PERIPH(TIMx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the TIM Main Output */ + TIMx->BDTR |= TIM_BDTR_MOE; + } + else + { + /* Disable the TIM Main Output */ + TIMx->BDTR &= (uint16_t)(~((uint16_t)TIM_BDTR_MOE)); + } +} + +/** + * @brief Enables or disables the specified TIM interrupts. + * @param TIMx: where x can be 1 to 17 to select the TIMx peripheral. + * @param TIM_IT: specifies the TIM interrupts sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg TIM_IT_Update: TIM update Interrupt source + * @arg TIM_IT_CC1: TIM Capture Compare 1 Interrupt source + * @arg TIM_IT_CC2: TIM Capture Compare 2 Interrupt source + * @arg TIM_IT_CC3: TIM Capture Compare 3 Interrupt source + * @arg TIM_IT_CC4: TIM Capture Compare 4 Interrupt source + * @arg TIM_IT_COM: TIM Commutation Interrupt source + * @arg TIM_IT_Trigger: TIM Trigger Interrupt source + * @arg TIM_IT_Break: TIM Break Interrupt source + * @note + * - TIM6 and TIM7 can only generate an update interrupt. + * - TIM9, TIM12 and TIM15 can have only TIM_IT_Update, TIM_IT_CC1, + * TIM_IT_CC2 or TIM_IT_Trigger. + * - TIM10, TIM11, TIM13, TIM14, TIM16 and TIM17 can have TIM_IT_Update or TIM_IT_CC1. + * - TIM_IT_Break is used only with TIM1, TIM8 and TIM15. + * - TIM_IT_COM is used only with TIM1, TIM8, TIM15, TIM16 and TIM17. + * @param NewState: new state of the TIM interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_IT(TIM_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the Interrupt sources */ + TIMx->DIER |= TIM_IT; + } + else + { + /* Disable the Interrupt sources */ + TIMx->DIER &= (uint16_t)~TIM_IT; + } +} + +/** + * @brief Configures the TIMx event to be generate by software. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param TIM_EventSource: specifies the event source. + * This parameter can be one or more of the following values: + * @arg TIM_EventSource_Update: Timer update Event source + * @arg TIM_EventSource_CC1: Timer Capture Compare 1 Event source + * @arg TIM_EventSource_CC2: Timer Capture Compare 2 Event source + * @arg TIM_EventSource_CC3: Timer Capture Compare 3 Event source + * @arg TIM_EventSource_CC4: Timer Capture Compare 4 Event source + * @arg TIM_EventSource_COM: Timer COM event source + * @arg TIM_EventSource_Trigger: Timer Trigger Event source + * @arg TIM_EventSource_Break: Timer Break event source + * @note + * - TIM6 and TIM7 can only generate an update event. + * - TIM_EventSource_COM and TIM_EventSource_Break are used only with TIM1 and TIM8. + * @retval None + */ +void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_EVENT_SOURCE(TIM_EventSource)); + + /* Set the event sources */ + TIMx->EGR = TIM_EventSource; +} + +/** + * @brief Configures the TIMx's DMA interface. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 15, 16 or 17 to select + * the TIM peripheral. + * @param TIM_DMABase: DMA Base address. + * This parameter can be one of the following values: + * @arg TIM_DMABase_CR, TIM_DMABase_CR2, TIM_DMABase_SMCR, + * TIM_DMABase_DIER, TIM1_DMABase_SR, TIM_DMABase_EGR, + * TIM_DMABase_CCMR1, TIM_DMABase_CCMR2, TIM_DMABase_CCER, + * TIM_DMABase_CNT, TIM_DMABase_PSC, TIM_DMABase_ARR, + * TIM_DMABase_RCR, TIM_DMABase_CCR1, TIM_DMABase_CCR2, + * TIM_DMABase_CCR3, TIM_DMABase_CCR4, TIM_DMABase_BDTR, + * TIM_DMABase_DCR. + * @param TIM_DMABurstLength: DMA Burst length. + * This parameter can be one value between: + * TIM_DMABurstLength_1Transfer and TIM_DMABurstLength_18Transfers. + * @retval None + */ +void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST4_PERIPH(TIMx)); + assert_param(IS_TIM_DMA_BASE(TIM_DMABase)); + assert_param(IS_TIM_DMA_LENGTH(TIM_DMABurstLength)); + /* Set the DMA Base and the DMA Burst Length */ + TIMx->DCR = TIM_DMABase | TIM_DMABurstLength; +} + +/** + * @brief Enables or disables the TIMx's DMA Requests. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 6, 7, 8, 15, 16 or 17 + * to select the TIM peripheral. + * @param TIM_DMASource: specifies the DMA Request sources. + * This parameter can be any combination of the following values: + * @arg TIM_DMA_Update: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_Trigger: TIM Trigger DMA source + * @param NewState: new state of the DMA Request sources. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST9_PERIPH(TIMx)); + assert_param(IS_TIM_DMA_SOURCE(TIM_DMASource)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the DMA sources */ + TIMx->DIER |= TIM_DMASource; + } + else + { + /* Disable the DMA sources */ + TIMx->DIER &= (uint16_t)~TIM_DMASource; + } +} + +/** + * @brief Configures the TIMx internal Clock + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 + * to select the TIM peripheral. + * @retval None + */ +void TIM_InternalClockConfig(TIM_TypeDef* TIMx) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + /* Disable slave mode to clock the prescaler directly with the internal clock */ + TIMx->SMCR &= (uint16_t)(~((uint16_t)TIM_SMCR_SMS)); +} + +/** + * @brief Configures the TIMx Internal Trigger as External Clock + * @param TIMx: where x can be 1, 2, 3, 4, 5, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_ITRSource: Trigger source. + * This parameter can be one of the following values: + * @param TIM_TS_ITR0: Internal Trigger 0 + * @param TIM_TS_ITR1: Internal Trigger 1 + * @param TIM_TS_ITR2: Internal Trigger 2 + * @param TIM_TS_ITR3: Internal Trigger 3 + * @retval None + */ +void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_INTERNAL_TRIGGER_SELECTION(TIM_InputTriggerSource)); + /* Select the Internal Trigger */ + TIM_SelectInputTrigger(TIMx, TIM_InputTriggerSource); + /* Select the External clock mode1 */ + TIMx->SMCR |= TIM_SlaveMode_External1; +} + +/** + * @brief Configures the TIMx Trigger as External Clock + * @param TIMx: where x can be 1, 2, 3, 4, 5, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_TIxExternalCLKSource: Trigger source. + * This parameter can be one of the following values: + * @arg TIM_TIxExternalCLK1Source_TI1ED: TI1 Edge Detector + * @arg TIM_TIxExternalCLK1Source_TI1: Filtered Timer Input 1 + * @arg TIM_TIxExternalCLK1Source_TI2: Filtered Timer Input 2 + * @param TIM_ICPolarity: specifies the TIx Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPolarity_Rising + * @arg TIM_ICPolarity_Falling + * @param ICFilter : specifies the filter value. + * This parameter must be a value between 0x0 and 0xF. + * @retval None + */ +void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, + uint16_t TIM_ICPolarity, uint16_t ICFilter) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_TIXCLK_SOURCE(TIM_TIxExternalCLKSource)); + assert_param(IS_TIM_IC_POLARITY(TIM_ICPolarity)); + assert_param(IS_TIM_IC_FILTER(ICFilter)); + /* Configure the Timer Input Clock Source */ + if (TIM_TIxExternalCLKSource == TIM_TIxExternalCLK1Source_TI2) + { + TI2_Config(TIMx, TIM_ICPolarity, TIM_ICSelection_DirectTI, ICFilter); + } + else + { + TI1_Config(TIMx, TIM_ICPolarity, TIM_ICSelection_DirectTI, ICFilter); + } + /* Select the Trigger source */ + TIM_SelectInputTrigger(TIMx, TIM_TIxExternalCLKSource); + /* Select the External clock mode1 */ + TIMx->SMCR |= TIM_SlaveMode_External1; +} + +/** + * @brief Configures the External clock Mode1 + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ExtTRGPrescaler: The external Trigger Prescaler. + * This parameter can be one of the following values: + * @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF. + * @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2. + * @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4. + * @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8. + * @param TIM_ExtTRGPolarity: The external Trigger Polarity. + * This parameter can be one of the following values: + * @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active. + * @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active. + * @param ExtTRGFilter: External Trigger Filter. + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter) +{ + uint16_t tmpsmcr = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler)); + assert_param(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity)); + assert_param(IS_TIM_EXT_FILTER(ExtTRGFilter)); + /* Configure the ETR Clock source */ + TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter); + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + /* Reset the SMS Bits */ + tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_SMS)); + /* Select the External clock mode1 */ + tmpsmcr |= TIM_SlaveMode_External1; + /* Select the Trigger selection : ETRF */ + tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_TS)); + tmpsmcr |= TIM_TS_ETRF; + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} + +/** + * @brief Configures the External clock Mode2 + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ExtTRGPrescaler: The external Trigger Prescaler. + * This parameter can be one of the following values: + * @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF. + * @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2. + * @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4. + * @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8. + * @param TIM_ExtTRGPolarity: The external Trigger Polarity. + * This parameter can be one of the following values: + * @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active. + * @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active. + * @param ExtTRGFilter: External Trigger Filter. + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, + uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler)); + assert_param(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity)); + assert_param(IS_TIM_EXT_FILTER(ExtTRGFilter)); + /* Configure the ETR Clock source */ + TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter); + /* Enable the External clock mode2 */ + TIMx->SMCR |= TIM_SMCR_ECE; +} + +/** + * @brief Configures the TIMx External Trigger (ETR). + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ExtTRGPrescaler: The external Trigger Prescaler. + * This parameter can be one of the following values: + * @arg TIM_ExtTRGPSC_OFF: ETRP Prescaler OFF. + * @arg TIM_ExtTRGPSC_DIV2: ETRP frequency divided by 2. + * @arg TIM_ExtTRGPSC_DIV4: ETRP frequency divided by 4. + * @arg TIM_ExtTRGPSC_DIV8: ETRP frequency divided by 8. + * @param TIM_ExtTRGPolarity: The external Trigger Polarity. + * This parameter can be one of the following values: + * @arg TIM_ExtTRGPolarity_Inverted: active low or falling edge active. + * @arg TIM_ExtTRGPolarity_NonInverted: active high or rising edge active. + * @param ExtTRGFilter: External Trigger Filter. + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter) +{ + uint16_t tmpsmcr = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler)); + assert_param(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity)); + assert_param(IS_TIM_EXT_FILTER(ExtTRGFilter)); + tmpsmcr = TIMx->SMCR; + /* Reset the ETR Bits */ + tmpsmcr &= SMCR_ETR_Mask; + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint16_t)(TIM_ExtTRGPrescaler | (uint16_t)(TIM_ExtTRGPolarity | (uint16_t)(ExtTRGFilter << (uint16_t)8))); + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} + +/** + * @brief Configures the TIMx Prescaler. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param Prescaler: specifies the Prescaler Register value + * @param TIM_PSCReloadMode: specifies the TIM Prescaler Reload mode + * This parameter can be one of the following values: + * @arg TIM_PSCReloadMode_Update: The Prescaler is loaded at the update event. + * @arg TIM_PSCReloadMode_Immediate: The Prescaler is loaded immediately. + * @retval None + */ +void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_PRESCALER_RELOAD(TIM_PSCReloadMode)); + /* Set the Prescaler value */ + TIMx->PSC = Prescaler; + /* Set or reset the UG Bit */ + TIMx->EGR = TIM_PSCReloadMode; +} + +/** + * @brief Specifies the TIMx Counter Mode to be used. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_CounterMode: specifies the Counter Mode to be used + * This parameter can be one of the following values: + * @arg TIM_CounterMode_Up: TIM Up Counting Mode + * @arg TIM_CounterMode_Down: TIM Down Counting Mode + * @arg TIM_CounterMode_CenterAligned1: TIM Center Aligned Mode1 + * @arg TIM_CounterMode_CenterAligned2: TIM Center Aligned Mode2 + * @arg TIM_CounterMode_CenterAligned3: TIM Center Aligned Mode3 + * @retval None + */ +void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode) +{ + uint16_t tmpcr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_COUNTER_MODE(TIM_CounterMode)); + tmpcr1 = TIMx->CR1; + /* Reset the CMS and DIR Bits */ + tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_CR1_DIR | TIM_CR1_CMS))); + /* Set the Counter Mode */ + tmpcr1 |= TIM_CounterMode; + /* Write to TIMx CR1 register */ + TIMx->CR1 = tmpcr1; +} + +/** + * @brief Selects the Input Trigger source + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_InputTriggerSource: The Input Trigger source. + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal Trigger 0 + * @arg TIM_TS_ITR1: Internal Trigger 1 + * @arg TIM_TS_ITR2: Internal Trigger 2 + * @arg TIM_TS_ITR3: Internal Trigger 3 + * @arg TIM_TS_TI1F_ED: TI1 Edge Detector + * @arg TIM_TS_TI1FP1: Filtered Timer Input 1 + * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 + * @arg TIM_TS_ETRF: External Trigger input + * @retval None + */ +void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource) +{ + uint16_t tmpsmcr = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_TRIGGER_SELECTION(TIM_InputTriggerSource)); + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + /* Reset the TS Bits */ + tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_TS)); + /* Set the Input Trigger source */ + tmpsmcr |= TIM_InputTriggerSource; + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} + +/** + * @brief Configures the TIMx Encoder Interface. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_EncoderMode: specifies the TIMx Encoder Mode. + * This parameter can be one of the following values: + * @arg TIM_EncoderMode_TI1: Counter counts on TI1FP1 edge depending on TI2FP2 level. + * @arg TIM_EncoderMode_TI2: Counter counts on TI2FP2 edge depending on TI1FP1 level. + * @arg TIM_EncoderMode_TI12: Counter counts on both TI1FP1 and TI2FP2 edges depending + * on the level of the other input. + * @param TIM_IC1Polarity: specifies the IC1 Polarity + * This parameter can be one of the following values: + * @arg TIM_ICPolarity_Falling: IC Falling edge. + * @arg TIM_ICPolarity_Rising: IC Rising edge. + * @param TIM_IC2Polarity: specifies the IC2 Polarity + * This parameter can be one of the following values: + * @arg TIM_ICPolarity_Falling: IC Falling edge. + * @arg TIM_ICPolarity_Rising: IC Rising edge. + * @retval None + */ +void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode, + uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity) +{ + uint16_t tmpsmcr = 0; + uint16_t tmpccmr1 = 0; + uint16_t tmpccer = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST5_PERIPH(TIMx)); + assert_param(IS_TIM_ENCODER_MODE(TIM_EncoderMode)); + assert_param(IS_TIM_IC_POLARITY(TIM_IC1Polarity)); + assert_param(IS_TIM_IC_POLARITY(TIM_IC2Polarity)); + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = TIMx->CCMR1; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + + /* Set the encoder Mode */ + tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMCR_SMS)); + tmpsmcr |= TIM_EncoderMode; + + /* Select the Capture Compare 1 and the Capture Compare 2 as input */ + tmpccmr1 &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCMR1_CC1S)) & (uint16_t)(~((uint16_t)TIM_CCMR1_CC2S))); + tmpccmr1 |= TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0; + + /* Set the TI1 and the TI2 Polarities */ + tmpccer &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCER_CC1P)) & ((uint16_t)~((uint16_t)TIM_CCER_CC2P))); + tmpccer |= (uint16_t)(TIM_IC1Polarity | (uint16_t)(TIM_IC2Polarity << (uint16_t)4)); + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmr1; + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Forces the TIMx output 1 waveform to active or inactive level. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_ForcedAction: specifies the forced Action to be set to the output waveform. + * This parameter can be one of the following values: + * @arg TIM_ForcedAction_Active: Force active level on OC1REF + * @arg TIM_ForcedAction_InActive: Force inactive level on OC1REF. + * @retval None + */ +void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction) +{ + uint16_t tmpccmr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction)); + tmpccmr1 = TIMx->CCMR1; + /* Reset the OC1M Bits */ + tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1M); + /* Configure The Forced output Mode */ + tmpccmr1 |= TIM_ForcedAction; + /* Write to TIMx CCMR1 register */ + TIMx->CCMR1 = tmpccmr1; +} + +/** + * @brief Forces the TIMx output 2 waveform to active or inactive level. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_ForcedAction: specifies the forced Action to be set to the output waveform. + * This parameter can be one of the following values: + * @arg TIM_ForcedAction_Active: Force active level on OC2REF + * @arg TIM_ForcedAction_InActive: Force inactive level on OC2REF. + * @retval None + */ +void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction) +{ + uint16_t tmpccmr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction)); + tmpccmr1 = TIMx->CCMR1; + /* Reset the OC2M Bits */ + tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC2M); + /* Configure The Forced output Mode */ + tmpccmr1 |= (uint16_t)(TIM_ForcedAction << 8); + /* Write to TIMx CCMR1 register */ + TIMx->CCMR1 = tmpccmr1; +} + +/** + * @brief Forces the TIMx output 3 waveform to active or inactive level. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ForcedAction: specifies the forced Action to be set to the output waveform. + * This parameter can be one of the following values: + * @arg TIM_ForcedAction_Active: Force active level on OC3REF + * @arg TIM_ForcedAction_InActive: Force inactive level on OC3REF. + * @retval None + */ +void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction) +{ + uint16_t tmpccmr2 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction)); + tmpccmr2 = TIMx->CCMR2; + /* Reset the OC1M Bits */ + tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC3M); + /* Configure The Forced output Mode */ + tmpccmr2 |= TIM_ForcedAction; + /* Write to TIMx CCMR2 register */ + TIMx->CCMR2 = tmpccmr2; +} + +/** + * @brief Forces the TIMx output 4 waveform to active or inactive level. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ForcedAction: specifies the forced Action to be set to the output waveform. + * This parameter can be one of the following values: + * @arg TIM_ForcedAction_Active: Force active level on OC4REF + * @arg TIM_ForcedAction_InActive: Force inactive level on OC4REF. + * @retval None + */ +void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction) +{ + uint16_t tmpccmr2 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_FORCED_ACTION(TIM_ForcedAction)); + tmpccmr2 = TIMx->CCMR2; + /* Reset the OC2M Bits */ + tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC4M); + /* Configure The Forced output Mode */ + tmpccmr2 |= (uint16_t)(TIM_ForcedAction << 8); + /* Write to TIMx CCMR2 register */ + TIMx->CCMR2 = tmpccmr2; +} + +/** + * @brief Enables or disables TIMx peripheral Preload register on ARR. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param NewState: new state of the TIMx peripheral Preload register + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Set the ARR Preload Bit */ + TIMx->CR1 |= TIM_CR1_ARPE; + } + else + { + /* Reset the ARR Preload Bit */ + TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_ARPE); + } +} + +/** + * @brief Selects the TIM peripheral Commutation event. + * @param TIMx: where x can be 1, 8, 15, 16 or 17 to select the TIMx peripheral + * @param NewState: new state of the Commutation event. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST2_PERIPH(TIMx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Set the COM Bit */ + TIMx->CR2 |= TIM_CR2_CCUS; + } + else + { + /* Reset the COM Bit */ + TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_CCUS); + } +} + +/** + * @brief Selects the TIMx peripheral Capture Compare DMA source. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 15, 16 or 17 to select + * the TIM peripheral. + * @param NewState: new state of the Capture Compare DMA source + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST4_PERIPH(TIMx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Set the CCDS Bit */ + TIMx->CR2 |= TIM_CR2_CCDS; + } + else + { + /* Reset the CCDS Bit */ + TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_CCDS); + } +} + +/** + * @brief Sets or Resets the TIM peripheral Capture Compare Preload Control bit. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8 or 15 + * to select the TIMx peripheral + * @param NewState: new state of the Capture Compare Preload Control bit + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST5_PERIPH(TIMx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Set the CCPC Bit */ + TIMx->CR2 |= TIM_CR2_CCPC; + } + else + { + /* Reset the CCPC Bit */ + TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_CCPC); + } +} + +/** + * @brief Enables or disables the TIMx peripheral Preload register on CCR1. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_OCPreload: new state of the TIMx peripheral Preload register + * This parameter can be one of the following values: + * @arg TIM_OCPreload_Enable + * @arg TIM_OCPreload_Disable + * @retval None + */ +void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload) +{ + uint16_t tmpccmr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload)); + tmpccmr1 = TIMx->CCMR1; + /* Reset the OC1PE Bit */ + tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1PE); + /* Enable or Disable the Output Compare Preload feature */ + tmpccmr1 |= TIM_OCPreload; + /* Write to TIMx CCMR1 register */ + TIMx->CCMR1 = tmpccmr1; +} + +/** + * @brief Enables or disables the TIMx peripheral Preload register on CCR2. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select + * the TIM peripheral. + * @param TIM_OCPreload: new state of the TIMx peripheral Preload register + * This parameter can be one of the following values: + * @arg TIM_OCPreload_Enable + * @arg TIM_OCPreload_Disable + * @retval None + */ +void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload) +{ + uint16_t tmpccmr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload)); + tmpccmr1 = TIMx->CCMR1; + /* Reset the OC2PE Bit */ + tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC2PE); + /* Enable or Disable the Output Compare Preload feature */ + tmpccmr1 |= (uint16_t)(TIM_OCPreload << 8); + /* Write to TIMx CCMR1 register */ + TIMx->CCMR1 = tmpccmr1; +} + +/** + * @brief Enables or disables the TIMx peripheral Preload register on CCR3. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCPreload: new state of the TIMx peripheral Preload register + * This parameter can be one of the following values: + * @arg TIM_OCPreload_Enable + * @arg TIM_OCPreload_Disable + * @retval None + */ +void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload) +{ + uint16_t tmpccmr2 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload)); + tmpccmr2 = TIMx->CCMR2; + /* Reset the OC3PE Bit */ + tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC3PE); + /* Enable or Disable the Output Compare Preload feature */ + tmpccmr2 |= TIM_OCPreload; + /* Write to TIMx CCMR2 register */ + TIMx->CCMR2 = tmpccmr2; +} + +/** + * @brief Enables or disables the TIMx peripheral Preload register on CCR4. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCPreload: new state of the TIMx peripheral Preload register + * This parameter can be one of the following values: + * @arg TIM_OCPreload_Enable + * @arg TIM_OCPreload_Disable + * @retval None + */ +void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload) +{ + uint16_t tmpccmr2 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload)); + tmpccmr2 = TIMx->CCMR2; + /* Reset the OC4PE Bit */ + tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC4PE); + /* Enable or Disable the Output Compare Preload feature */ + tmpccmr2 |= (uint16_t)(TIM_OCPreload << 8); + /* Write to TIMx CCMR2 register */ + TIMx->CCMR2 = tmpccmr2; +} + +/** + * @brief Configures the TIMx Output Compare 1 Fast feature. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_OCFast: new state of the Output Compare Fast Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCFast_Enable: TIM output compare fast enable + * @arg TIM_OCFast_Disable: TIM output compare fast disable + * @retval None + */ +void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast) +{ + uint16_t tmpccmr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_OCFAST_STATE(TIM_OCFast)); + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = TIMx->CCMR1; + /* Reset the OC1FE Bit */ + tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1FE); + /* Enable or Disable the Output Compare Fast Bit */ + tmpccmr1 |= TIM_OCFast; + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmr1; +} + +/** + * @brief Configures the TIMx Output Compare 2 Fast feature. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select + * the TIM peripheral. + * @param TIM_OCFast: new state of the Output Compare Fast Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCFast_Enable: TIM output compare fast enable + * @arg TIM_OCFast_Disable: TIM output compare fast disable + * @retval None + */ +void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast) +{ + uint16_t tmpccmr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_OCFAST_STATE(TIM_OCFast)); + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = TIMx->CCMR1; + /* Reset the OC2FE Bit */ + tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC2FE); + /* Enable or Disable the Output Compare Fast Bit */ + tmpccmr1 |= (uint16_t)(TIM_OCFast << 8); + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmr1; +} + +/** + * @brief Configures the TIMx Output Compare 3 Fast feature. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCFast: new state of the Output Compare Fast Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCFast_Enable: TIM output compare fast enable + * @arg TIM_OCFast_Disable: TIM output compare fast disable + * @retval None + */ +void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast) +{ + uint16_t tmpccmr2 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OCFAST_STATE(TIM_OCFast)); + /* Get the TIMx CCMR2 register value */ + tmpccmr2 = TIMx->CCMR2; + /* Reset the OC3FE Bit */ + tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC3FE); + /* Enable or Disable the Output Compare Fast Bit */ + tmpccmr2 |= TIM_OCFast; + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmr2; +} + +/** + * @brief Configures the TIMx Output Compare 4 Fast feature. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCFast: new state of the Output Compare Fast Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCFast_Enable: TIM output compare fast enable + * @arg TIM_OCFast_Disable: TIM output compare fast disable + * @retval None + */ +void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast) +{ + uint16_t tmpccmr2 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OCFAST_STATE(TIM_OCFast)); + /* Get the TIMx CCMR2 register value */ + tmpccmr2 = TIMx->CCMR2; + /* Reset the OC4FE Bit */ + tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC4FE); + /* Enable or Disable the Output Compare Fast Bit */ + tmpccmr2 |= (uint16_t)(TIM_OCFast << 8); + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmr2; +} + +/** + * @brief Clears or safeguards the OCREF1 signal on an external event + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCClear: new state of the Output Compare Clear Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCClear_Enable: TIM Output clear enable + * @arg TIM_OCClear_Disable: TIM Output clear disable + * @retval None + */ +void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear) +{ + uint16_t tmpccmr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear)); + + tmpccmr1 = TIMx->CCMR1; + + /* Reset the OC1CE Bit */ + tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC1CE); + /* Enable or Disable the Output Compare Clear Bit */ + tmpccmr1 |= TIM_OCClear; + /* Write to TIMx CCMR1 register */ + TIMx->CCMR1 = tmpccmr1; +} + +/** + * @brief Clears or safeguards the OCREF2 signal on an external event + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCClear: new state of the Output Compare Clear Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCClear_Enable: TIM Output clear enable + * @arg TIM_OCClear_Disable: TIM Output clear disable + * @retval None + */ +void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear) +{ + uint16_t tmpccmr1 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear)); + tmpccmr1 = TIMx->CCMR1; + /* Reset the OC2CE Bit */ + tmpccmr1 &= (uint16_t)~((uint16_t)TIM_CCMR1_OC2CE); + /* Enable or Disable the Output Compare Clear Bit */ + tmpccmr1 |= (uint16_t)(TIM_OCClear << 8); + /* Write to TIMx CCMR1 register */ + TIMx->CCMR1 = tmpccmr1; +} + +/** + * @brief Clears or safeguards the OCREF3 signal on an external event + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCClear: new state of the Output Compare Clear Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCClear_Enable: TIM Output clear enable + * @arg TIM_OCClear_Disable: TIM Output clear disable + * @retval None + */ +void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear) +{ + uint16_t tmpccmr2 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear)); + tmpccmr2 = TIMx->CCMR2; + /* Reset the OC3CE Bit */ + tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC3CE); + /* Enable or Disable the Output Compare Clear Bit */ + tmpccmr2 |= TIM_OCClear; + /* Write to TIMx CCMR2 register */ + TIMx->CCMR2 = tmpccmr2; +} + +/** + * @brief Clears or safeguards the OCREF4 signal on an external event + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCClear: new state of the Output Compare Clear Enable Bit. + * This parameter can be one of the following values: + * @arg TIM_OCClear_Enable: TIM Output clear enable + * @arg TIM_OCClear_Disable: TIM Output clear disable + * @retval None + */ +void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear) +{ + uint16_t tmpccmr2 = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OCCLEAR_STATE(TIM_OCClear)); + tmpccmr2 = TIMx->CCMR2; + /* Reset the OC4CE Bit */ + tmpccmr2 &= (uint16_t)~((uint16_t)TIM_CCMR2_OC4CE); + /* Enable or Disable the Output Compare Clear Bit */ + tmpccmr2 |= (uint16_t)(TIM_OCClear << 8); + /* Write to TIMx CCMR2 register */ + TIMx->CCMR2 = tmpccmr2; +} + +/** + * @brief Configures the TIMx channel 1 polarity. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_OCPolarity: specifies the OC1 Polarity + * This parameter can be one of the following values: + * @arg TIM_OCPolarity_High: Output Compare active high + * @arg TIM_OCPolarity_Low: Output Compare active low + * @retval None + */ +void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity) +{ + uint16_t tmpccer = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity)); + tmpccer = TIMx->CCER; + /* Set or Reset the CC1P Bit */ + tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC1P); + tmpccer |= TIM_OCPolarity; + /* Write to TIMx CCER register */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Configures the TIMx Channel 1N polarity. + * @param TIMx: where x can be 1, 8, 15, 16 or 17 to select the TIM peripheral. + * @param TIM_OCNPolarity: specifies the OC1N Polarity + * This parameter can be one of the following values: + * @arg TIM_OCNPolarity_High: Output Compare active high + * @arg TIM_OCNPolarity_Low: Output Compare active low + * @retval None + */ +void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity) +{ + uint16_t tmpccer = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST2_PERIPH(TIMx)); + assert_param(IS_TIM_OCN_POLARITY(TIM_OCNPolarity)); + + tmpccer = TIMx->CCER; + /* Set or Reset the CC1NP Bit */ + tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC1NP); + tmpccer |= TIM_OCNPolarity; + /* Write to TIMx CCER register */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Configures the TIMx channel 2 polarity. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_OCPolarity: specifies the OC2 Polarity + * This parameter can be one of the following values: + * @arg TIM_OCPolarity_High: Output Compare active high + * @arg TIM_OCPolarity_Low: Output Compare active low + * @retval None + */ +void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity) +{ + uint16_t tmpccer = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity)); + tmpccer = TIMx->CCER; + /* Set or Reset the CC2P Bit */ + tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC2P); + tmpccer |= (uint16_t)(TIM_OCPolarity << 4); + /* Write to TIMx CCER register */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Configures the TIMx Channel 2N polarity. + * @param TIMx: where x can be 1 or 8 to select the TIM peripheral. + * @param TIM_OCNPolarity: specifies the OC2N Polarity + * This parameter can be one of the following values: + * @arg TIM_OCNPolarity_High: Output Compare active high + * @arg TIM_OCNPolarity_Low: Output Compare active low + * @retval None + */ +void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity) +{ + uint16_t tmpccer = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST1_PERIPH(TIMx)); + assert_param(IS_TIM_OCN_POLARITY(TIM_OCNPolarity)); + + tmpccer = TIMx->CCER; + /* Set or Reset the CC2NP Bit */ + tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC2NP); + tmpccer |= (uint16_t)(TIM_OCNPolarity << 4); + /* Write to TIMx CCER register */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Configures the TIMx channel 3 polarity. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCPolarity: specifies the OC3 Polarity + * This parameter can be one of the following values: + * @arg TIM_OCPolarity_High: Output Compare active high + * @arg TIM_OCPolarity_Low: Output Compare active low + * @retval None + */ +void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity) +{ + uint16_t tmpccer = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity)); + tmpccer = TIMx->CCER; + /* Set or Reset the CC3P Bit */ + tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC3P); + tmpccer |= (uint16_t)(TIM_OCPolarity << 8); + /* Write to TIMx CCER register */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Configures the TIMx Channel 3N polarity. + * @param TIMx: where x can be 1 or 8 to select the TIM peripheral. + * @param TIM_OCNPolarity: specifies the OC3N Polarity + * This parameter can be one of the following values: + * @arg TIM_OCNPolarity_High: Output Compare active high + * @arg TIM_OCNPolarity_Low: Output Compare active low + * @retval None + */ +void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity) +{ + uint16_t tmpccer = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST1_PERIPH(TIMx)); + assert_param(IS_TIM_OCN_POLARITY(TIM_OCNPolarity)); + + tmpccer = TIMx->CCER; + /* Set or Reset the CC3NP Bit */ + tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC3NP); + tmpccer |= (uint16_t)(TIM_OCNPolarity << 8); + /* Write to TIMx CCER register */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Configures the TIMx channel 4 polarity. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_OCPolarity: specifies the OC4 Polarity + * This parameter can be one of the following values: + * @arg TIM_OCPolarity_High: Output Compare active high + * @arg TIM_OCPolarity_Low: Output Compare active low + * @retval None + */ +void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity) +{ + uint16_t tmpccer = 0; + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity)); + tmpccer = TIMx->CCER; + /* Set or Reset the CC4P Bit */ + tmpccer &= (uint16_t)~((uint16_t)TIM_CCER_CC4P); + tmpccer |= (uint16_t)(TIM_OCPolarity << 12); + /* Write to TIMx CCER register */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Enables or disables the TIM Capture Compare Channel x. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_Channel: specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_Channel_1: TIM Channel 1 + * @arg TIM_Channel_2: TIM Channel 2 + * @arg TIM_Channel_3: TIM Channel 3 + * @arg TIM_Channel_4: TIM Channel 4 + * @param TIM_CCx: specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_Enable or TIM_CCx_Disable. + * @retval None + */ +void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx) +{ + uint16_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_CHANNEL(TIM_Channel)); + assert_param(IS_TIM_CCX(TIM_CCx)); + + tmp = CCER_CCE_Set << TIM_Channel; + + /* Reset the CCxE Bit */ + TIMx->CCER &= (uint16_t)~ tmp; + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint16_t)(TIM_CCx << TIM_Channel); +} + +/** + * @brief Enables or disables the TIM Capture Compare Channel xN. + * @param TIMx: where x can be 1, 8, 15, 16 or 17 to select the TIM peripheral. + * @param TIM_Channel: specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_Channel_1: TIM Channel 1 + * @arg TIM_Channel_2: TIM Channel 2 + * @arg TIM_Channel_3: TIM Channel 3 + * @param TIM_CCxN: specifies the TIM Channel CCxNE bit new state. + * This parameter can be: TIM_CCxN_Enable or TIM_CCxN_Disable. + * @retval None + */ +void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN) +{ + uint16_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST2_PERIPH(TIMx)); + assert_param(IS_TIM_COMPLEMENTARY_CHANNEL(TIM_Channel)); + assert_param(IS_TIM_CCXN(TIM_CCxN)); + + tmp = CCER_CCNE_Set << TIM_Channel; + + /* Reset the CCxNE Bit */ + TIMx->CCER &= (uint16_t) ~tmp; + + /* Set or reset the CCxNE Bit */ + TIMx->CCER |= (uint16_t)(TIM_CCxN << TIM_Channel); +} + +/** + * @brief Selects the TIM Output Compare Mode. + * @note This function disables the selected channel before changing the Output + * Compare Mode. + * User has to enable this channel using TIM_CCxCmd and TIM_CCxNCmd functions. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_Channel: specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_Channel_1: TIM Channel 1 + * @arg TIM_Channel_2: TIM Channel 2 + * @arg TIM_Channel_3: TIM Channel 3 + * @arg TIM_Channel_4: TIM Channel 4 + * @param TIM_OCMode: specifies the TIM Output Compare Mode. + * This parameter can be one of the following values: + * @arg TIM_OCMode_Timing + * @arg TIM_OCMode_Active + * @arg TIM_OCMode_Toggle + * @arg TIM_OCMode_PWM1 + * @arg TIM_OCMode_PWM2 + * @arg TIM_ForcedAction_Active + * @arg TIM_ForcedAction_InActive + * @retval None + */ +void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode) +{ + uint32_t tmp = 0; + uint16_t tmp1 = 0; + + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_CHANNEL(TIM_Channel)); + assert_param(IS_TIM_OCM(TIM_OCMode)); + + tmp = (uint32_t) TIMx; + tmp += CCMR_Offset; + + tmp1 = CCER_CCE_Set << (uint16_t)TIM_Channel; + + /* Disable the Channel: Reset the CCxE Bit */ + TIMx->CCER &= (uint16_t) ~tmp1; + + if((TIM_Channel == TIM_Channel_1) ||(TIM_Channel == TIM_Channel_3)) + { + tmp += (TIM_Channel>>1); + + /* Reset the OCxM bits in the CCMRx register */ + *(__IO uint32_t *) tmp &= (uint32_t)~((uint32_t)TIM_CCMR1_OC1M); + + /* Configure the OCxM bits in the CCMRx register */ + *(__IO uint32_t *) tmp |= TIM_OCMode; + } + else + { + tmp += (uint16_t)(TIM_Channel - (uint16_t)4)>> (uint16_t)1; + + /* Reset the OCxM bits in the CCMRx register */ + *(__IO uint32_t *) tmp &= (uint32_t)~((uint32_t)TIM_CCMR1_OC2M); + + /* Configure the OCxM bits in the CCMRx register */ + *(__IO uint32_t *) tmp |= (uint16_t)(TIM_OCMode << 8); + } +} + +/** + * @brief Enables or Disables the TIMx Update event. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param NewState: new state of the TIMx UDIS bit + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Set the Update Disable Bit */ + TIMx->CR1 |= TIM_CR1_UDIS; + } + else + { + /* Reset the Update Disable Bit */ + TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_UDIS); + } +} + +/** + * @brief Configures the TIMx Update Request Interrupt source. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param TIM_UpdateSource: specifies the Update source. + * This parameter can be one of the following values: + * @arg TIM_UpdateSource_Regular: Source of update is the counter overflow/underflow + or the setting of UG bit, or an update generation + through the slave mode controller. + * @arg TIM_UpdateSource_Global: Source of update is counter overflow/underflow. + * @retval None + */ +void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_UPDATE_SOURCE(TIM_UpdateSource)); + if (TIM_UpdateSource != TIM_UpdateSource_Global) + { + /* Set the URS Bit */ + TIMx->CR1 |= TIM_CR1_URS; + } + else + { + /* Reset the URS Bit */ + TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_URS); + } +} + +/** + * @brief Enables or disables the TIMx's Hall sensor interface. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param NewState: new state of the TIMx Hall sensor interface. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Set the TI1S Bit */ + TIMx->CR2 |= TIM_CR2_TI1S; + } + else + { + /* Reset the TI1S Bit */ + TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_TI1S); + } +} + +/** + * @brief Selects the TIMx's One Pulse Mode. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param TIM_OPMode: specifies the OPM Mode to be used. + * This parameter can be one of the following values: + * @arg TIM_OPMode_Single + * @arg TIM_OPMode_Repetitive + * @retval None + */ +void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_OPM_MODE(TIM_OPMode)); + /* Reset the OPM Bit */ + TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_OPM); + /* Configure the OPM Mode */ + TIMx->CR1 |= TIM_OPMode; +} + +/** + * @brief Selects the TIMx Trigger Output Mode. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 6, 7, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_TRGOSource: specifies the Trigger Output source. + * This paramter can be one of the following values: + * + * - For all TIMx + * @arg TIM_TRGOSource_Reset: The UG bit in the TIM_EGR register is used as the trigger output (TRGO). + * @arg TIM_TRGOSource_Enable: The Counter Enable CEN is used as the trigger output (TRGO). + * @arg TIM_TRGOSource_Update: The update event is selected as the trigger output (TRGO). + * + * - For all TIMx except TIM6 and TIM7 + * @arg TIM_TRGOSource_OC1: The trigger output sends a positive pulse when the CC1IF flag + * is to be set, as soon as a capture or compare match occurs (TRGO). + * @arg TIM_TRGOSource_OC1Ref: OC1REF signal is used as the trigger output (TRGO). + * @arg TIM_TRGOSource_OC2Ref: OC2REF signal is used as the trigger output (TRGO). + * @arg TIM_TRGOSource_OC3Ref: OC3REF signal is used as the trigger output (TRGO). + * @arg TIM_TRGOSource_OC4Ref: OC4REF signal is used as the trigger output (TRGO). + * + * @retval None + */ +void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST7_PERIPH(TIMx)); + assert_param(IS_TIM_TRGO_SOURCE(TIM_TRGOSource)); + /* Reset the MMS Bits */ + TIMx->CR2 &= (uint16_t)~((uint16_t)TIM_CR2_MMS); + /* Select the TRGO source */ + TIMx->CR2 |= TIM_TRGOSource; +} + +/** + * @brief Selects the TIMx Slave Mode. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_SlaveMode: specifies the Timer Slave Mode. + * This parameter can be one of the following values: + * @arg TIM_SlaveMode_Reset: Rising edge of the selected trigger signal (TRGI) re-initializes + * the counter and triggers an update of the registers. + * @arg TIM_SlaveMode_Gated: The counter clock is enabled when the trigger signal (TRGI) is high. + * @arg TIM_SlaveMode_Trigger: The counter starts at a rising edge of the trigger TRGI. + * @arg TIM_SlaveMode_External1: Rising edges of the selected trigger (TRGI) clock the counter. + * @retval None + */ +void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_SLAVE_MODE(TIM_SlaveMode)); + /* Reset the SMS Bits */ + TIMx->SMCR &= (uint16_t)~((uint16_t)TIM_SMCR_SMS); + /* Select the Slave Mode */ + TIMx->SMCR |= TIM_SlaveMode; +} + +/** + * @brief Sets or Resets the TIMx Master/Slave Mode. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_MasterSlaveMode: specifies the Timer Master Slave Mode. + * This parameter can be one of the following values: + * @arg TIM_MasterSlaveMode_Enable: synchronization between the current timer + * and its slaves (through TRGO). + * @arg TIM_MasterSlaveMode_Disable: No action + * @retval None + */ +void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_MSM_STATE(TIM_MasterSlaveMode)); + /* Reset the MSM Bit */ + TIMx->SMCR &= (uint16_t)~((uint16_t)TIM_SMCR_MSM); + + /* Set or Reset the MSM Bit */ + TIMx->SMCR |= TIM_MasterSlaveMode; +} + +/** + * @brief Sets the TIMx Counter Register value + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param Counter: specifies the Counter register new value. + * @retval None + */ +void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + /* Set the Counter Register value */ + TIMx->CNT = Counter; +} + +/** + * @brief Sets the TIMx Autoreload Register value + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param Autoreload: specifies the Autoreload register new value. + * @retval None + */ +void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + /* Set the Autoreload Register value */ + TIMx->ARR = Autoreload; +} + +/** + * @brief Sets the TIMx Capture Compare1 Register value + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param Compare1: specifies the Capture Compare1 register new value. + * @retval None + */ +void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + /* Set the Capture Compare1 Register value */ + TIMx->CCR1 = Compare1; +} + +/** + * @brief Sets the TIMx Capture Compare2 Register value + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param Compare2: specifies the Capture Compare2 register new value. + * @retval None + */ +void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + /* Set the Capture Compare2 Register value */ + TIMx->CCR2 = Compare2; +} + +/** + * @brief Sets the TIMx Capture Compare3 Register value + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param Compare3: specifies the Capture Compare3 register new value. + * @retval None + */ +void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + /* Set the Capture Compare3 Register value */ + TIMx->CCR3 = Compare3; +} + +/** + * @brief Sets the TIMx Capture Compare4 Register value + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param Compare4: specifies the Capture Compare4 register new value. + * @retval None + */ +void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + /* Set the Capture Compare4 Register value */ + TIMx->CCR4 = Compare4; +} + +/** + * @brief Sets the TIMx Input Capture 1 prescaler. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_ICPSC: specifies the Input Capture1 prescaler new value. + * This parameter can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + * @retval None + */ +void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_IC_PRESCALER(TIM_ICPSC)); + /* Reset the IC1PSC Bits */ + TIMx->CCMR1 &= (uint16_t)~((uint16_t)TIM_CCMR1_IC1PSC); + /* Set the IC1PSC value */ + TIMx->CCMR1 |= TIM_ICPSC; +} + +/** + * @brief Sets the TIMx Input Capture 2 prescaler. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_ICPSC: specifies the Input Capture2 prescaler new value. + * This parameter can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + * @retval None + */ +void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + assert_param(IS_TIM_IC_PRESCALER(TIM_ICPSC)); + /* Reset the IC2PSC Bits */ + TIMx->CCMR1 &= (uint16_t)~((uint16_t)TIM_CCMR1_IC2PSC); + /* Set the IC2PSC value */ + TIMx->CCMR1 |= (uint16_t)(TIM_ICPSC << 8); +} + +/** + * @brief Sets the TIMx Input Capture 3 prescaler. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ICPSC: specifies the Input Capture3 prescaler new value. + * This parameter can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + * @retval None + */ +void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_IC_PRESCALER(TIM_ICPSC)); + /* Reset the IC3PSC Bits */ + TIMx->CCMR2 &= (uint16_t)~((uint16_t)TIM_CCMR2_IC3PSC); + /* Set the IC3PSC value */ + TIMx->CCMR2 |= TIM_ICPSC; +} + +/** + * @brief Sets the TIMx Input Capture 4 prescaler. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ICPSC: specifies the Input Capture4 prescaler new value. + * This parameter can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + * @retval None + */ +void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + assert_param(IS_TIM_IC_PRESCALER(TIM_ICPSC)); + /* Reset the IC4PSC Bits */ + TIMx->CCMR2 &= (uint16_t)~((uint16_t)TIM_CCMR2_IC4PSC); + /* Set the IC4PSC value */ + TIMx->CCMR2 |= (uint16_t)(TIM_ICPSC << 8); +} + +/** + * @brief Sets the TIMx Clock Division value. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select + * the TIM peripheral. + * @param TIM_CKD: specifies the clock division value. + * This parameter can be one of the following value: + * @arg TIM_CKD_DIV1: TDTS = Tck_tim + * @arg TIM_CKD_DIV2: TDTS = 2*Tck_tim + * @arg TIM_CKD_DIV4: TDTS = 4*Tck_tim + * @retval None + */ +void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + assert_param(IS_TIM_CKD_DIV(TIM_CKD)); + /* Reset the CKD Bits */ + TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_CKD); + /* Set the CKD value */ + TIMx->CR1 |= TIM_CKD; +} + +/** + * @brief Gets the TIMx Input Capture 1 value. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @retval Capture Compare 1 Register value. + */ +uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST8_PERIPH(TIMx)); + /* Get the Capture 1 Register value */ + return TIMx->CCR1; +} + +/** + * @brief Gets the TIMx Input Capture 2 value. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @retval Capture Compare 2 Register value. + */ +uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST6_PERIPH(TIMx)); + /* Get the Capture 2 Register value */ + return TIMx->CCR2; +} + +/** + * @brief Gets the TIMx Input Capture 3 value. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @retval Capture Compare 3 Register value. + */ +uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + /* Get the Capture 3 Register value */ + return TIMx->CCR3; +} + +/** + * @brief Gets the TIMx Input Capture 4 value. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @retval Capture Compare 4 Register value. + */ +uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx) +{ + /* Check the parameters */ + assert_param(IS_TIM_LIST3_PERIPH(TIMx)); + /* Get the Capture 4 Register value */ + return TIMx->CCR4; +} + +/** + * @brief Gets the TIMx Counter value. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @retval Counter Register value. + */ +uint16_t TIM_GetCounter(TIM_TypeDef* TIMx) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + /* Get the Counter Register value */ + return TIMx->CNT; +} + +/** + * @brief Gets the TIMx Prescaler value. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @retval Prescaler Register value. + */ +uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + /* Get the Prescaler Register value */ + return TIMx->PSC; +} + +/** + * @brief Checks whether the specified TIM flag is set or not. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param TIM_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg TIM_FLAG_Update: TIM update Flag + * @arg TIM_FLAG_CC1: TIM Capture Compare 1 Flag + * @arg TIM_FLAG_CC2: TIM Capture Compare 2 Flag + * @arg TIM_FLAG_CC3: TIM Capture Compare 3 Flag + * @arg TIM_FLAG_CC4: TIM Capture Compare 4 Flag + * @arg TIM_FLAG_COM: TIM Commutation Flag + * @arg TIM_FLAG_Trigger: TIM Trigger Flag + * @arg TIM_FLAG_Break: TIM Break Flag + * @arg TIM_FLAG_CC1OF: TIM Capture Compare 1 overcapture Flag + * @arg TIM_FLAG_CC2OF: TIM Capture Compare 2 overcapture Flag + * @arg TIM_FLAG_CC3OF: TIM Capture Compare 3 overcapture Flag + * @arg TIM_FLAG_CC4OF: TIM Capture Compare 4 overcapture Flag + * @note + * - TIM6 and TIM7 can have only one update flag. + * - TIM9, TIM12 and TIM15 can have only TIM_FLAG_Update, TIM_FLAG_CC1, + * TIM_FLAG_CC2 or TIM_FLAG_Trigger. + * - TIM10, TIM11, TIM13, TIM14, TIM16 and TIM17 can have TIM_FLAG_Update or TIM_FLAG_CC1. + * - TIM_FLAG_Break is used only with TIM1, TIM8 and TIM15. + * - TIM_FLAG_COM is used only with TIM1, TIM8, TIM15, TIM16 and TIM17. + * @retval The new state of TIM_FLAG (SET or RESET). + */ +FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG) +{ + ITStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_GET_FLAG(TIM_FLAG)); + + if ((TIMx->SR & TIM_FLAG) != (uint16_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the TIMx's pending flags. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param TIM_FLAG: specifies the flag bit to clear. + * This parameter can be any combination of the following values: + * @arg TIM_FLAG_Update: TIM update Flag + * @arg TIM_FLAG_CC1: TIM Capture Compare 1 Flag + * @arg TIM_FLAG_CC2: TIM Capture Compare 2 Flag + * @arg TIM_FLAG_CC3: TIM Capture Compare 3 Flag + * @arg TIM_FLAG_CC4: TIM Capture Compare 4 Flag + * @arg TIM_FLAG_COM: TIM Commutation Flag + * @arg TIM_FLAG_Trigger: TIM Trigger Flag + * @arg TIM_FLAG_Break: TIM Break Flag + * @arg TIM_FLAG_CC1OF: TIM Capture Compare 1 overcapture Flag + * @arg TIM_FLAG_CC2OF: TIM Capture Compare 2 overcapture Flag + * @arg TIM_FLAG_CC3OF: TIM Capture Compare 3 overcapture Flag + * @arg TIM_FLAG_CC4OF: TIM Capture Compare 4 overcapture Flag + * @note + * - TIM6 and TIM7 can have only one update flag. + * - TIM9, TIM12 and TIM15 can have only TIM_FLAG_Update, TIM_FLAG_CC1, + * TIM_FLAG_CC2 or TIM_FLAG_Trigger. + * - TIM10, TIM11, TIM13, TIM14, TIM16 and TIM17 can have TIM_FLAG_Update or TIM_FLAG_CC1. + * - TIM_FLAG_Break is used only with TIM1, TIM8 and TIM15. + * - TIM_FLAG_COM is used only with TIM1, TIM8, TIM15, TIM16 and TIM17. + * @retval None + */ +void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_CLEAR_FLAG(TIM_FLAG)); + + /* Clear the flags */ + TIMx->SR = (uint16_t)~TIM_FLAG; +} + +/** + * @brief Checks whether the TIM interrupt has occurred or not. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param TIM_IT: specifies the TIM interrupt source to check. + * This parameter can be one of the following values: + * @arg TIM_IT_Update: TIM update Interrupt source + * @arg TIM_IT_CC1: TIM Capture Compare 1 Interrupt source + * @arg TIM_IT_CC2: TIM Capture Compare 2 Interrupt source + * @arg TIM_IT_CC3: TIM Capture Compare 3 Interrupt source + * @arg TIM_IT_CC4: TIM Capture Compare 4 Interrupt source + * @arg TIM_IT_COM: TIM Commutation Interrupt source + * @arg TIM_IT_Trigger: TIM Trigger Interrupt source + * @arg TIM_IT_Break: TIM Break Interrupt source + * @note + * - TIM6 and TIM7 can generate only an update interrupt. + * - TIM9, TIM12 and TIM15 can have only TIM_IT_Update, TIM_IT_CC1, + * TIM_IT_CC2 or TIM_IT_Trigger. + * - TIM10, TIM11, TIM13, TIM14, TIM16 and TIM17 can have TIM_IT_Update or TIM_IT_CC1. + * - TIM_IT_Break is used only with TIM1, TIM8 and TIM15. + * - TIM_IT_COM is used only with TIM1, TIM8, TIM15, TIM16 and TIM17. + * @retval The new state of the TIM_IT(SET or RESET). + */ +ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT) +{ + ITStatus bitstatus = RESET; + uint16_t itstatus = 0x0, itenable = 0x0; + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_GET_IT(TIM_IT)); + + itstatus = TIMx->SR & TIM_IT; + + itenable = TIMx->DIER & TIM_IT; + if ((itstatus != (uint16_t)RESET) && (itenable != (uint16_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the TIMx's interrupt pending bits. + * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. + * @param TIM_IT: specifies the pending bit to clear. + * This parameter can be any combination of the following values: + * @arg TIM_IT_Update: TIM1 update Interrupt source + * @arg TIM_IT_CC1: TIM Capture Compare 1 Interrupt source + * @arg TIM_IT_CC2: TIM Capture Compare 2 Interrupt source + * @arg TIM_IT_CC3: TIM Capture Compare 3 Interrupt source + * @arg TIM_IT_CC4: TIM Capture Compare 4 Interrupt source + * @arg TIM_IT_COM: TIM Commutation Interrupt source + * @arg TIM_IT_Trigger: TIM Trigger Interrupt source + * @arg TIM_IT_Break: TIM Break Interrupt source + * @note + * - TIM6 and TIM7 can generate only an update interrupt. + * - TIM9, TIM12 and TIM15 can have only TIM_IT_Update, TIM_IT_CC1, + * TIM_IT_CC2 or TIM_IT_Trigger. + * - TIM10, TIM11, TIM13, TIM14, TIM16 and TIM17 can have TIM_IT_Update or TIM_IT_CC1. + * - TIM_IT_Break is used only with TIM1, TIM8 and TIM15. + * - TIM_IT_COM is used only with TIM1, TIM8, TIM15, TIM16 and TIM17. + * @retval None + */ +void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT) +{ + /* Check the parameters */ + assert_param(IS_TIM_ALL_PERIPH(TIMx)); + assert_param(IS_TIM_IT(TIM_IT)); + /* Clear the IT pending Bit */ + TIMx->SR = (uint16_t)~TIM_IT; +} + +/** + * @brief Configure the TI1 as Input. + * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. + * @param TIM_ICPolarity : The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPolarity_Rising + * @arg TIM_ICPolarity_Falling + * @param TIM_ICSelection: specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSelection_DirectTI: TIM Input 1 is selected to be connected to IC1. + * @arg TIM_ICSelection_IndirectTI: TIM Input 1 is selected to be connected to IC2. + * @arg TIM_ICSelection_TRC: TIM Input 1 is selected to be connected to TRC. + * @param TIM_ICFilter: Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TI1_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter) +{ + uint16_t tmpccmr1 = 0, tmpccer = 0; + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= (uint16_t)~((uint16_t)TIM_CCER_CC1E); + tmpccmr1 = TIMx->CCMR1; + tmpccer = TIMx->CCER; + /* Select the Input and set the filter */ + tmpccmr1 &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCMR1_CC1S)) & ((uint16_t)~((uint16_t)TIM_CCMR1_IC1F))); + tmpccmr1 |= (uint16_t)(TIM_ICSelection | (uint16_t)(TIM_ICFilter << (uint16_t)4)); + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM2) || (TIMx == TIM3) || + (TIMx == TIM4) ||(TIMx == TIM5)) + { + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC1P)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CCER_CC1E); + } + else + { + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC1P | TIM_CCER_CC1NP)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CCER_CC1E); + } + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI2 as Input. + * @param TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral. + * @param TIM_ICPolarity : The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPolarity_Rising + * @arg TIM_ICPolarity_Falling + * @param TIM_ICSelection: specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSelection_DirectTI: TIM Input 2 is selected to be connected to IC2. + * @arg TIM_ICSelection_IndirectTI: TIM Input 2 is selected to be connected to IC1. + * @arg TIM_ICSelection_TRC: TIM Input 2 is selected to be connected to TRC. + * @param TIM_ICFilter: Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TI2_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter) +{ + uint16_t tmpccmr1 = 0, tmpccer = 0, tmp = 0; + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= (uint16_t)~((uint16_t)TIM_CCER_CC2E); + tmpccmr1 = TIMx->CCMR1; + tmpccer = TIMx->CCER; + tmp = (uint16_t)(TIM_ICPolarity << 4); + /* Select the Input and set the filter */ + tmpccmr1 &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCMR1_CC2S)) & ((uint16_t)~((uint16_t)TIM_CCMR1_IC2F))); + tmpccmr1 |= (uint16_t)(TIM_ICFilter << 12); + tmpccmr1 |= (uint16_t)(TIM_ICSelection << 8); + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM2) || (TIMx == TIM3) || + (TIMx == TIM4) ||(TIMx == TIM5)) + { + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC2P)); + tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CCER_CC2E); + } + else + { + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC2P | TIM_CCER_CC2NP)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CCER_CC2E); + } + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI3 as Input. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ICPolarity : The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPolarity_Rising + * @arg TIM_ICPolarity_Falling + * @param TIM_ICSelection: specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSelection_DirectTI: TIM Input 3 is selected to be connected to IC3. + * @arg TIM_ICSelection_IndirectTI: TIM Input 3 is selected to be connected to IC4. + * @arg TIM_ICSelection_TRC: TIM Input 3 is selected to be connected to TRC. + * @param TIM_ICFilter: Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TI3_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter) +{ + uint16_t tmpccmr2 = 0, tmpccer = 0, tmp = 0; + /* Disable the Channel 3: Reset the CC3E Bit */ + TIMx->CCER &= (uint16_t)~((uint16_t)TIM_CCER_CC3E); + tmpccmr2 = TIMx->CCMR2; + tmpccer = TIMx->CCER; + tmp = (uint16_t)(TIM_ICPolarity << 8); + /* Select the Input and set the filter */ + tmpccmr2 &= (uint16_t)(((uint16_t)~((uint16_t)TIM_CCMR2_CC3S)) & ((uint16_t)~((uint16_t)TIM_CCMR2_IC3F))); + tmpccmr2 |= (uint16_t)(TIM_ICSelection | (uint16_t)(TIM_ICFilter << (uint16_t)4)); + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM2) || (TIMx == TIM3) || + (TIMx == TIM4) ||(TIMx == TIM5)) + { + /* Select the Polarity and set the CC3E Bit */ + tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC3P)); + tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CCER_CC3E); + } + else + { + /* Select the Polarity and set the CC3E Bit */ + tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC3P | TIM_CCER_CC3NP)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CCER_CC3E); + } + + /* Write to TIMx CCMR2 and CCER registers */ + TIMx->CCMR2 = tmpccmr2; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI4 as Input. + * @param TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral. + * @param TIM_ICPolarity : The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPolarity_Rising + * @arg TIM_ICPolarity_Falling + * @param TIM_ICSelection: specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSelection_DirectTI: TIM Input 4 is selected to be connected to IC4. + * @arg TIM_ICSelection_IndirectTI: TIM Input 4 is selected to be connected to IC3. + * @arg TIM_ICSelection_TRC: TIM Input 4 is selected to be connected to TRC. + * @param TIM_ICFilter: Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TI4_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter) +{ + uint16_t tmpccmr2 = 0, tmpccer = 0, tmp = 0; + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= (uint16_t)~((uint16_t)TIM_CCER_CC4E); + tmpccmr2 = TIMx->CCMR2; + tmpccer = TIMx->CCER; + tmp = (uint16_t)(TIM_ICPolarity << 12); + /* Select the Input and set the filter */ + tmpccmr2 &= (uint16_t)((uint16_t)(~(uint16_t)TIM_CCMR2_CC4S) & ((uint16_t)~((uint16_t)TIM_CCMR2_IC4F))); + tmpccmr2 |= (uint16_t)(TIM_ICSelection << 8); + tmpccmr2 |= (uint16_t)(TIM_ICFilter << 12); + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM2) || (TIMx == TIM3) || + (TIMx == TIM4) ||(TIMx == TIM5)) + { + /* Select the Polarity and set the CC4E Bit */ + tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC4P)); + tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CCER_CC4E); + } + else + { + /* Select the Polarity and set the CC4E Bit */ + tmpccer &= (uint16_t)~((uint16_t)(TIM_CCER_CC3P | TIM_CCER_CC4NP)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CCER_CC4E); + } + /* Write to TIMx CCMR2 and CCER registers */ + TIMx->CCMR2 = tmpccmr2; + TIMx->CCER = tmpccer; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c new file mode 100644 index 00000000..a3f16f15 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c @@ -0,0 +1,1058 @@ +/** + ****************************************************************************** + * @file stm32f10x_usart.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the USART firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_usart.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup USART + * @brief USART driver modules + * @{ + */ + +/** @defgroup USART_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup USART_Private_Defines + * @{ + */ + +#define CR1_UE_Set ((uint16_t)0x2000) /*!< USART Enable Mask */ +#define CR1_UE_Reset ((uint16_t)0xDFFF) /*!< USART Disable Mask */ + +#define CR1_WAKE_Mask ((uint16_t)0xF7FF) /*!< USART WakeUp Method Mask */ + +#define CR1_RWU_Set ((uint16_t)0x0002) /*!< USART mute mode Enable Mask */ +#define CR1_RWU_Reset ((uint16_t)0xFFFD) /*!< USART mute mode Enable Mask */ +#define CR1_SBK_Set ((uint16_t)0x0001) /*!< USART Break Character send Mask */ +#define CR1_CLEAR_Mask ((uint16_t)0xE9F3) /*!< USART CR1 Mask */ +#define CR2_Address_Mask ((uint16_t)0xFFF0) /*!< USART address Mask */ + +#define CR2_LINEN_Set ((uint16_t)0x4000) /*!< USART LIN Enable Mask */ +#define CR2_LINEN_Reset ((uint16_t)0xBFFF) /*!< USART LIN Disable Mask */ + +#define CR2_LBDL_Mask ((uint16_t)0xFFDF) /*!< USART LIN Break detection Mask */ +#define CR2_STOP_CLEAR_Mask ((uint16_t)0xCFFF) /*!< USART CR2 STOP Bits Mask */ +#define CR2_CLOCK_CLEAR_Mask ((uint16_t)0xF0FF) /*!< USART CR2 Clock Mask */ + +#define CR3_SCEN_Set ((uint16_t)0x0020) /*!< USART SC Enable Mask */ +#define CR3_SCEN_Reset ((uint16_t)0xFFDF) /*!< USART SC Disable Mask */ + +#define CR3_NACK_Set ((uint16_t)0x0010) /*!< USART SC NACK Enable Mask */ +#define CR3_NACK_Reset ((uint16_t)0xFFEF) /*!< USART SC NACK Disable Mask */ + +#define CR3_HDSEL_Set ((uint16_t)0x0008) /*!< USART Half-Duplex Enable Mask */ +#define CR3_HDSEL_Reset ((uint16_t)0xFFF7) /*!< USART Half-Duplex Disable Mask */ + +#define CR3_IRLP_Mask ((uint16_t)0xFFFB) /*!< USART IrDA LowPower mode Mask */ +#define CR3_CLEAR_Mask ((uint16_t)0xFCFF) /*!< USART CR3 Mask */ + +#define CR3_IREN_Set ((uint16_t)0x0002) /*!< USART IrDA Enable Mask */ +#define CR3_IREN_Reset ((uint16_t)0xFFFD) /*!< USART IrDA Disable Mask */ +#define GTPR_LSB_Mask ((uint16_t)0x00FF) /*!< Guard Time Register LSB Mask */ +#define GTPR_MSB_Mask ((uint16_t)0xFF00) /*!< Guard Time Register MSB Mask */ +#define IT_Mask ((uint16_t)0x001F) /*!< USART Interrupt Mask */ + +/* USART OverSampling-8 Mask */ +#define CR1_OVER8_Set ((u16)0x8000) /* USART OVER8 mode Enable Mask */ +#define CR1_OVER8_Reset ((u16)0x7FFF) /* USART OVER8 mode Disable Mask */ + +/* USART One Bit Sampling Mask */ +#define CR3_ONEBITE_Set ((u16)0x0800) /* USART ONEBITE mode Enable Mask */ +#define CR3_ONEBITE_Reset ((u16)0xF7FF) /* USART ONEBITE mode Disable Mask */ + +/** + * @} + */ + +/** @defgroup USART_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USART_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup USART_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup USART_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the USARTx peripheral registers to their default reset values. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @retval None + */ +void USART_DeInit(USART_TypeDef* USARTx) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + + if (USARTx == USART1) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE); + } + else if (USARTx == USART2) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE); + } + else if (USARTx == USART3) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE); + } + else if (USARTx == UART4) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, DISABLE); + } + else + { + if (USARTx == UART5) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, DISABLE); + } + } +} + +/** + * @brief Initializes the USARTx peripheral according to the specified + * parameters in the USART_InitStruct . + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_InitStruct: pointer to a USART_InitTypeDef structure + * that contains the configuration information for the specified USART + * peripheral. + * @retval None + */ +void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct) +{ + uint32_t tmpreg = 0x00, apbclock = 0x00; + uint32_t integerdivider = 0x00; + uint32_t fractionaldivider = 0x00; + uint32_t usartxbase = 0; + RCC_ClocksTypeDef RCC_ClocksStatus; + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_BAUDRATE(USART_InitStruct->USART_BaudRate)); + assert_param(IS_USART_WORD_LENGTH(USART_InitStruct->USART_WordLength)); + assert_param(IS_USART_STOPBITS(USART_InitStruct->USART_StopBits)); + assert_param(IS_USART_PARITY(USART_InitStruct->USART_Parity)); + assert_param(IS_USART_MODE(USART_InitStruct->USART_Mode)); + assert_param(IS_USART_HARDWARE_FLOW_CONTROL(USART_InitStruct->USART_HardwareFlowControl)); + /* The hardware flow control is available only for USART1, USART2 and USART3 */ + if (USART_InitStruct->USART_HardwareFlowControl != USART_HardwareFlowControl_None) + { + assert_param(IS_USART_123_PERIPH(USARTx)); + } + + usartxbase = (uint32_t)USARTx; + +/*---------------------------- USART CR2 Configuration -----------------------*/ + tmpreg = USARTx->CR2; + /* Clear STOP[13:12] bits */ + tmpreg &= CR2_STOP_CLEAR_Mask; + /* Configure the USART Stop Bits, Clock, CPOL, CPHA and LastBit ------------*/ + /* Set STOP[13:12] bits according to USART_StopBits value */ + tmpreg |= (uint32_t)USART_InitStruct->USART_StopBits; + + /* Write to USART CR2 */ + USARTx->CR2 = (uint16_t)tmpreg; + +/*---------------------------- USART CR1 Configuration -----------------------*/ + tmpreg = USARTx->CR1; + /* Clear M, PCE, PS, TE and RE bits */ + tmpreg &= CR1_CLEAR_Mask; + /* Configure the USART Word Length, Parity and mode ----------------------- */ + /* Set the M bits according to USART_WordLength value */ + /* Set PCE and PS bits according to USART_Parity value */ + /* Set TE and RE bits according to USART_Mode value */ + tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity | + USART_InitStruct->USART_Mode; + /* Write to USART CR1 */ + USARTx->CR1 = (uint16_t)tmpreg; + +/*---------------------------- USART CR3 Configuration -----------------------*/ + tmpreg = USARTx->CR3; + /* Clear CTSE and RTSE bits */ + tmpreg &= CR3_CLEAR_Mask; + /* Configure the USART HFC -------------------------------------------------*/ + /* Set CTSE and RTSE bits according to USART_HardwareFlowControl value */ + tmpreg |= USART_InitStruct->USART_HardwareFlowControl; + /* Write to USART CR3 */ + USARTx->CR3 = (uint16_t)tmpreg; + +/*---------------------------- USART BRR Configuration -----------------------*/ + /* Configure the USART Baud Rate -------------------------------------------*/ + RCC_GetClocksFreq(&RCC_ClocksStatus); + if (usartxbase == USART1_BASE) + { + apbclock = RCC_ClocksStatus.PCLK2_Frequency; + } + else + { + apbclock = RCC_ClocksStatus.PCLK1_Frequency; + } + + /* Determine the integer part */ + if ((USARTx->CR1 & CR1_OVER8_Set) != 0) + { + /* Integer part computing in case Oversampling mode is 8 Samples */ + integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct->USART_BaudRate))); + } + else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */ + { + /* Integer part computing in case Oversampling mode is 16 Samples */ + integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate))); + } + tmpreg = (integerdivider / 100) << 4; + + /* Determine the fractional part */ + fractionaldivider = integerdivider - (100 * (tmpreg >> 4)); + + /* Implement the fractional part in the register */ + if ((USARTx->CR1 & CR1_OVER8_Set) != 0) + { + tmpreg |= ((((fractionaldivider * 8) + 50) / 100)) & ((uint8_t)0x07); + } + else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */ + { + tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F); + } + + /* Write to USART BRR */ + USARTx->BRR = (uint16_t)tmpreg; +} + +/** + * @brief Fills each USART_InitStruct member with its default value. + * @param USART_InitStruct: pointer to a USART_InitTypeDef structure + * which will be initialized. + * @retval None + */ +void USART_StructInit(USART_InitTypeDef* USART_InitStruct) +{ + /* USART_InitStruct members default value */ + USART_InitStruct->USART_BaudRate = 9600; + USART_InitStruct->USART_WordLength = USART_WordLength_8b; + USART_InitStruct->USART_StopBits = USART_StopBits_1; + USART_InitStruct->USART_Parity = USART_Parity_No ; + USART_InitStruct->USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_InitStruct->USART_HardwareFlowControl = USART_HardwareFlowControl_None; +} + +/** + * @brief Initializes the USARTx peripheral Clock according to the + * specified parameters in the USART_ClockInitStruct . + * @param USARTx: where x can be 1, 2, 3 to select the USART peripheral. + * @param USART_ClockInitStruct: pointer to a USART_ClockInitTypeDef + * structure that contains the configuration information for the specified + * USART peripheral. + * @note The Smart Card and Synchronous modes are not available for UART4 and UART5. + * @retval None + */ +void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct) +{ + uint32_t tmpreg = 0x00; + /* Check the parameters */ + assert_param(IS_USART_123_PERIPH(USARTx)); + assert_param(IS_USART_CLOCK(USART_ClockInitStruct->USART_Clock)); + assert_param(IS_USART_CPOL(USART_ClockInitStruct->USART_CPOL)); + assert_param(IS_USART_CPHA(USART_ClockInitStruct->USART_CPHA)); + assert_param(IS_USART_LASTBIT(USART_ClockInitStruct->USART_LastBit)); + +/*---------------------------- USART CR2 Configuration -----------------------*/ + tmpreg = USARTx->CR2; + /* Clear CLKEN, CPOL, CPHA and LBCL bits */ + tmpreg &= CR2_CLOCK_CLEAR_Mask; + /* Configure the USART Clock, CPOL, CPHA and LastBit ------------*/ + /* Set CLKEN bit according to USART_Clock value */ + /* Set CPOL bit according to USART_CPOL value */ + /* Set CPHA bit according to USART_CPHA value */ + /* Set LBCL bit according to USART_LastBit value */ + tmpreg |= (uint32_t)USART_ClockInitStruct->USART_Clock | USART_ClockInitStruct->USART_CPOL | + USART_ClockInitStruct->USART_CPHA | USART_ClockInitStruct->USART_LastBit; + /* Write to USART CR2 */ + USARTx->CR2 = (uint16_t)tmpreg; +} + +/** + * @brief Fills each USART_ClockInitStruct member with its default value. + * @param USART_ClockInitStruct: pointer to a USART_ClockInitTypeDef + * structure which will be initialized. + * @retval None + */ +void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct) +{ + /* USART_ClockInitStruct members default value */ + USART_ClockInitStruct->USART_Clock = USART_Clock_Disable; + USART_ClockInitStruct->USART_CPOL = USART_CPOL_Low; + USART_ClockInitStruct->USART_CPHA = USART_CPHA_1Edge; + USART_ClockInitStruct->USART_LastBit = USART_LastBit_Disable; +} + +/** + * @brief Enables or disables the specified USART peripheral. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param NewState: new state of the USARTx peripheral. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the selected USART by setting the UE bit in the CR1 register */ + USARTx->CR1 |= CR1_UE_Set; + } + else + { + /* Disable the selected USART by clearing the UE bit in the CR1 register */ + USARTx->CR1 &= CR1_UE_Reset; + } +} + +/** + * @brief Enables or disables the specified USART interrupts. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_IT: specifies the USART interrupt sources to be enabled or disabled. + * This parameter can be one of the following values: + * @arg USART_IT_CTS: CTS change interrupt (not available for UART4 and UART5) + * @arg USART_IT_LBD: LIN Break detection interrupt + * @arg USART_IT_TXE: Transmit Data Register empty interrupt + * @arg USART_IT_TC: Transmission complete interrupt + * @arg USART_IT_RXNE: Receive Data register not empty interrupt + * @arg USART_IT_IDLE: Idle line detection interrupt + * @arg USART_IT_PE: Parity Error interrupt + * @arg USART_IT_ERR: Error interrupt(Frame error, noise error, overrun error) + * @param NewState: new state of the specified USARTx interrupts. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState) +{ + uint32_t usartreg = 0x00, itpos = 0x00, itmask = 0x00; + uint32_t usartxbase = 0x00; + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_CONFIG_IT(USART_IT)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + /* The CTS interrupt is not available for UART4 and UART5 */ + if (USART_IT == USART_IT_CTS) + { + assert_param(IS_USART_123_PERIPH(USARTx)); + } + + usartxbase = (uint32_t)USARTx; + + /* Get the USART register index */ + usartreg = (((uint8_t)USART_IT) >> 0x05); + + /* Get the interrupt position */ + itpos = USART_IT & IT_Mask; + itmask = (((uint32_t)0x01) << itpos); + + if (usartreg == 0x01) /* The IT is in CR1 register */ + { + usartxbase += 0x0C; + } + else if (usartreg == 0x02) /* The IT is in CR2 register */ + { + usartxbase += 0x10; + } + else /* The IT is in CR3 register */ + { + usartxbase += 0x14; + } + if (NewState != DISABLE) + { + *(__IO uint32_t*)usartxbase |= itmask; + } + else + { + *(__IO uint32_t*)usartxbase &= ~itmask; + } +} + +/** + * @brief Enables or disables the USART’s DMA interface. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_DMAReq: specifies the DMA request. + * This parameter can be any combination of the following values: + * @arg USART_DMAReq_Tx: USART DMA transmit request + * @arg USART_DMAReq_Rx: USART DMA receive request + * @param NewState: new state of the DMA Request sources. + * This parameter can be: ENABLE or DISABLE. + * @note The DMA mode is not available for UART5 except in the STM32 + * High density value line devices(STM32F10X_HD_VL). + * @retval None + */ +void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_DMAREQ(USART_DMAReq)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the DMA transfer for selected requests by setting the DMAT and/or + DMAR bits in the USART CR3 register */ + USARTx->CR3 |= USART_DMAReq; + } + else + { + /* Disable the DMA transfer for selected requests by clearing the DMAT and/or + DMAR bits in the USART CR3 register */ + USARTx->CR3 &= (uint16_t)~USART_DMAReq; + } +} + +/** + * @brief Sets the address of the USART node. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_Address: Indicates the address of the USART node. + * @retval None + */ +void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_ADDRESS(USART_Address)); + + /* Clear the USART address */ + USARTx->CR2 &= CR2_Address_Mask; + /* Set the USART address node */ + USARTx->CR2 |= USART_Address; +} + +/** + * @brief Selects the USART WakeUp method. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_WakeUp: specifies the USART wakeup method. + * This parameter can be one of the following values: + * @arg USART_WakeUp_IdleLine: WakeUp by an idle line detection + * @arg USART_WakeUp_AddressMark: WakeUp by an address mark + * @retval None + */ +void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_WAKEUP(USART_WakeUp)); + + USARTx->CR1 &= CR1_WAKE_Mask; + USARTx->CR1 |= USART_WakeUp; +} + +/** + * @brief Determines if the USART is in mute mode or not. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param NewState: new state of the USART mute mode. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the USART mute mode by setting the RWU bit in the CR1 register */ + USARTx->CR1 |= CR1_RWU_Set; + } + else + { + /* Disable the USART mute mode by clearing the RWU bit in the CR1 register */ + USARTx->CR1 &= CR1_RWU_Reset; + } +} + +/** + * @brief Sets the USART LIN Break detection length. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_LINBreakDetectLength: specifies the LIN break detection length. + * This parameter can be one of the following values: + * @arg USART_LINBreakDetectLength_10b: 10-bit break detection + * @arg USART_LINBreakDetectLength_11b: 11-bit break detection + * @retval None + */ +void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_LIN_BREAK_DETECT_LENGTH(USART_LINBreakDetectLength)); + + USARTx->CR2 &= CR2_LBDL_Mask; + USARTx->CR2 |= USART_LINBreakDetectLength; +} + +/** + * @brief Enables or disables the USART’s LIN mode. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param NewState: new state of the USART LIN mode. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the LIN mode by setting the LINEN bit in the CR2 register */ + USARTx->CR2 |= CR2_LINEN_Set; + } + else + { + /* Disable the LIN mode by clearing the LINEN bit in the CR2 register */ + USARTx->CR2 &= CR2_LINEN_Reset; + } +} + +/** + * @brief Transmits single data through the USARTx peripheral. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param Data: the data to transmit. + * @retval None + */ +void USART_SendData(USART_TypeDef* USARTx, uint16_t Data) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_DATA(Data)); + + /* Transmit Data */ + USARTx->DR = (Data & (uint16_t)0x01FF); +} + +/** + * @brief Returns the most recent received data by the USARTx peripheral. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @retval The received data. + */ +uint16_t USART_ReceiveData(USART_TypeDef* USARTx) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + + /* Receive Data */ + return (uint16_t)(USARTx->DR & (uint16_t)0x01FF); +} + +/** + * @brief Transmits break characters. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @retval None + */ +void USART_SendBreak(USART_TypeDef* USARTx) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + + /* Send break characters */ + USARTx->CR1 |= CR1_SBK_Set; +} + +/** + * @brief Sets the specified USART guard time. + * @param USARTx: where x can be 1, 2 or 3 to select the USART peripheral. + * @param USART_GuardTime: specifies the guard time. + * @note The guard time bits are not available for UART4 and UART5. + * @retval None + */ +void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime) +{ + /* Check the parameters */ + assert_param(IS_USART_123_PERIPH(USARTx)); + + /* Clear the USART Guard time */ + USARTx->GTPR &= GTPR_LSB_Mask; + /* Set the USART guard time */ + USARTx->GTPR |= (uint16_t)((uint16_t)USART_GuardTime << 0x08); +} + +/** + * @brief Sets the system clock prescaler. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_Prescaler: specifies the prescaler clock. + * @note The function is used for IrDA mode with UART4 and UART5. + * @retval None + */ +void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + + /* Clear the USART prescaler */ + USARTx->GTPR &= GTPR_MSB_Mask; + /* Set the USART prescaler */ + USARTx->GTPR |= USART_Prescaler; +} + +/** + * @brief Enables or disables the USART’s Smart Card mode. + * @param USARTx: where x can be 1, 2 or 3 to select the USART peripheral. + * @param NewState: new state of the Smart Card mode. + * This parameter can be: ENABLE or DISABLE. + * @note The Smart Card mode is not available for UART4 and UART5. + * @retval None + */ +void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_123_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the SC mode by setting the SCEN bit in the CR3 register */ + USARTx->CR3 |= CR3_SCEN_Set; + } + else + { + /* Disable the SC mode by clearing the SCEN bit in the CR3 register */ + USARTx->CR3 &= CR3_SCEN_Reset; + } +} + +/** + * @brief Enables or disables NACK transmission. + * @param USARTx: where x can be 1, 2 or 3 to select the USART peripheral. + * @param NewState: new state of the NACK transmission. + * This parameter can be: ENABLE or DISABLE. + * @note The Smart Card mode is not available for UART4 and UART5. + * @retval None + */ +void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_123_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + if (NewState != DISABLE) + { + /* Enable the NACK transmission by setting the NACK bit in the CR3 register */ + USARTx->CR3 |= CR3_NACK_Set; + } + else + { + /* Disable the NACK transmission by clearing the NACK bit in the CR3 register */ + USARTx->CR3 &= CR3_NACK_Reset; + } +} + +/** + * @brief Enables or disables the USART’s Half Duplex communication. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param NewState: new state of the USART Communication. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */ + USARTx->CR3 |= CR3_HDSEL_Set; + } + else + { + /* Disable the Half-Duplex mode by clearing the HDSEL bit in the CR3 register */ + USARTx->CR3 &= CR3_HDSEL_Reset; + } +} + + +/** + * @brief Enables or disables the USART's 8x oversampling mode. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param NewState: new state of the USART one bit sampling method. + * This parameter can be: ENABLE or DISABLE. + * @note + * This function has to be called before calling USART_Init() + * function in order to have correct baudrate Divider value. + * @retval None + */ +void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the 8x Oversampling mode by setting the OVER8 bit in the CR1 register */ + USARTx->CR1 |= CR1_OVER8_Set; + } + else + { + /* Disable the 8x Oversampling mode by clearing the OVER8 bit in the CR1 register */ + USARTx->CR1 &= CR1_OVER8_Reset; + } +} + +/** + * @brief Enables or disables the USART's one bit sampling method. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param NewState: new state of the USART one bit sampling method. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the one bit method by setting the ONEBITE bit in the CR3 register */ + USARTx->CR3 |= CR3_ONEBITE_Set; + } + else + { + /* Disable tthe one bit method by clearing the ONEBITE bit in the CR3 register */ + USARTx->CR3 &= CR3_ONEBITE_Reset; + } +} + +/** + * @brief Configures the USART's IrDA interface. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_IrDAMode: specifies the IrDA mode. + * This parameter can be one of the following values: + * @arg USART_IrDAMode_LowPower + * @arg USART_IrDAMode_Normal + * @retval None + */ +void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_IRDA_MODE(USART_IrDAMode)); + + USARTx->CR3 &= CR3_IRLP_Mask; + USARTx->CR3 |= USART_IrDAMode; +} + +/** + * @brief Enables or disables the USART's IrDA interface. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param NewState: new state of the IrDA mode. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_FUNCTIONAL_STATE(NewState)); + + if (NewState != DISABLE) + { + /* Enable the IrDA mode by setting the IREN bit in the CR3 register */ + USARTx->CR3 |= CR3_IREN_Set; + } + else + { + /* Disable the IrDA mode by clearing the IREN bit in the CR3 register */ + USARTx->CR3 &= CR3_IREN_Reset; + } +} + +/** + * @brief Checks whether the specified USART flag is set or not. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_FLAG: specifies the flag to check. + * This parameter can be one of the following values: + * @arg USART_FLAG_CTS: CTS Change flag (not available for UART4 and UART5) + * @arg USART_FLAG_LBD: LIN Break detection flag + * @arg USART_FLAG_TXE: Transmit data register empty flag + * @arg USART_FLAG_TC: Transmission Complete flag + * @arg USART_FLAG_RXNE: Receive data register not empty flag + * @arg USART_FLAG_IDLE: Idle Line detection flag + * @arg USART_FLAG_ORE: OverRun Error flag + * @arg USART_FLAG_NE: Noise Error flag + * @arg USART_FLAG_FE: Framing Error flag + * @arg USART_FLAG_PE: Parity Error flag + * @retval The new state of USART_FLAG (SET or RESET). + */ +FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG) +{ + FlagStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_FLAG(USART_FLAG)); + /* The CTS flag is not available for UART4 and UART5 */ + if (USART_FLAG == USART_FLAG_CTS) + { + assert_param(IS_USART_123_PERIPH(USARTx)); + } + + if ((USARTx->SR & USART_FLAG) != (uint16_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/** + * @brief Clears the USARTx's pending flags. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_FLAG: specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg USART_FLAG_CTS: CTS Change flag (not available for UART4 and UART5). + * @arg USART_FLAG_LBD: LIN Break detection flag. + * @arg USART_FLAG_TC: Transmission Complete flag. + * @arg USART_FLAG_RXNE: Receive data register not empty flag. + * + * @note + * - PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun + * error) and IDLE (Idle line detected) flags are cleared by software + * sequence: a read operation to USART_SR register (USART_GetFlagStatus()) + * followed by a read operation to USART_DR register (USART_ReceiveData()). + * - RXNE flag can be also cleared by a read to the USART_DR register + * (USART_ReceiveData()). + * - TC flag can be also cleared by software sequence: a read operation to + * USART_SR register (USART_GetFlagStatus()) followed by a write operation + * to USART_DR register (USART_SendData()). + * - TXE flag is cleared only by a write to the USART_DR register + * (USART_SendData()). + * @retval None + */ +void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG) +{ + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_CLEAR_FLAG(USART_FLAG)); + /* The CTS flag is not available for UART4 and UART5 */ + if ((USART_FLAG & USART_FLAG_CTS) == USART_FLAG_CTS) + { + assert_param(IS_USART_123_PERIPH(USARTx)); + } + + USARTx->SR = (uint16_t)~USART_FLAG; +} + +/** + * @brief Checks whether the specified USART interrupt has occurred or not. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_IT: specifies the USART interrupt source to check. + * This parameter can be one of the following values: + * @arg USART_IT_CTS: CTS change interrupt (not available for UART4 and UART5) + * @arg USART_IT_LBD: LIN Break detection interrupt + * @arg USART_IT_TXE: Tansmit Data Register empty interrupt + * @arg USART_IT_TC: Transmission complete interrupt + * @arg USART_IT_RXNE: Receive Data register not empty interrupt + * @arg USART_IT_IDLE: Idle line detection interrupt + * @arg USART_IT_ORE: OverRun Error interrupt + * @arg USART_IT_NE: Noise Error interrupt + * @arg USART_IT_FE: Framing Error interrupt + * @arg USART_IT_PE: Parity Error interrupt + * @retval The new state of USART_IT (SET or RESET). + */ +ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT) +{ + uint32_t bitpos = 0x00, itmask = 0x00, usartreg = 0x00; + ITStatus bitstatus = RESET; + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_GET_IT(USART_IT)); + /* The CTS interrupt is not available for UART4 and UART5 */ + if (USART_IT == USART_IT_CTS) + { + assert_param(IS_USART_123_PERIPH(USARTx)); + } + + /* Get the USART register index */ + usartreg = (((uint8_t)USART_IT) >> 0x05); + /* Get the interrupt position */ + itmask = USART_IT & IT_Mask; + itmask = (uint32_t)0x01 << itmask; + + if (usartreg == 0x01) /* The IT is in CR1 register */ + { + itmask &= USARTx->CR1; + } + else if (usartreg == 0x02) /* The IT is in CR2 register */ + { + itmask &= USARTx->CR2; + } + else /* The IT is in CR3 register */ + { + itmask &= USARTx->CR3; + } + + bitpos = USART_IT >> 0x08; + bitpos = (uint32_t)0x01 << bitpos; + bitpos &= USARTx->SR; + if ((itmask != (uint16_t)RESET)&&(bitpos != (uint16_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/** + * @brief Clears the USARTx's interrupt pending bits. + * @param USARTx: Select the USART or the UART peripheral. + * This parameter can be one of the following values: + * USART1, USART2, USART3, UART4 or UART5. + * @param USART_IT: specifies the interrupt pending bit to clear. + * This parameter can be one of the following values: + * @arg USART_IT_CTS: CTS change interrupt (not available for UART4 and UART5) + * @arg USART_IT_LBD: LIN Break detection interrupt + * @arg USART_IT_TC: Transmission complete interrupt. + * @arg USART_IT_RXNE: Receive Data register not empty interrupt. + * + * @note + * - PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun + * error) and IDLE (Idle line detected) pending bits are cleared by + * software sequence: a read operation to USART_SR register + * (USART_GetITStatus()) followed by a read operation to USART_DR register + * (USART_ReceiveData()). + * - RXNE pending bit can be also cleared by a read to the USART_DR register + * (USART_ReceiveData()). + * - TC pending bit can be also cleared by software sequence: a read + * operation to USART_SR register (USART_GetITStatus()) followed by a write + * operation to USART_DR register (USART_SendData()). + * - TXE pending bit is cleared only by a write to the USART_DR register + * (USART_SendData()). + * @retval None + */ +void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT) +{ + uint16_t bitpos = 0x00, itmask = 0x00; + /* Check the parameters */ + assert_param(IS_USART_ALL_PERIPH(USARTx)); + assert_param(IS_USART_CLEAR_IT(USART_IT)); + /* The CTS interrupt is not available for UART4 and UART5 */ + if (USART_IT == USART_IT_CTS) + { + assert_param(IS_USART_123_PERIPH(USARTx)); + } + + bitpos = USART_IT >> 0x08; + itmask = ((uint16_t)0x01 << (uint16_t)bitpos); + USARTx->SR = (uint16_t)~itmask; +} +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c new file mode 100644 index 00000000..77a7ce51 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c @@ -0,0 +1,224 @@ +/** + ****************************************************************************** + * @file stm32f10x_wwdg.c + * @author MCD Application Team + * @version V3.5.0 + * @date 11-March-2011 + * @brief This file provides all the WWDG firmware functions. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_wwdg.h" +#include "stm32f10x_rcc.h" + +/** @addtogroup STM32F10x_StdPeriph_Driver + * @{ + */ + +/** @defgroup WWDG + * @brief WWDG driver modules + * @{ + */ + +/** @defgroup WWDG_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @defgroup WWDG_Private_Defines + * @{ + */ + +/* ----------- WWDG registers bit address in the alias region ----------- */ +#define WWDG_OFFSET (WWDG_BASE - PERIPH_BASE) + +/* Alias word address of EWI bit */ +#define CFR_OFFSET (WWDG_OFFSET + 0x04) +#define EWI_BitNumber 0x09 +#define CFR_EWI_BB (PERIPH_BB_BASE + (CFR_OFFSET * 32) + (EWI_BitNumber * 4)) + +/* --------------------- WWDG registers bit mask ------------------------ */ + +/* CR register bit mask */ +#define CR_WDGA_Set ((uint32_t)0x00000080) + +/* CFR register bit mask */ +#define CFR_WDGTB_Mask ((uint32_t)0xFFFFFE7F) +#define CFR_W_Mask ((uint32_t)0xFFFFFF80) +#define BIT_Mask ((uint8_t)0x7F) + +/** + * @} + */ + +/** @defgroup WWDG_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup WWDG_Private_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup WWDG_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup WWDG_Private_Functions + * @{ + */ + +/** + * @brief Deinitializes the WWDG peripheral registers to their default reset values. + * @param None + * @retval None + */ +void WWDG_DeInit(void) +{ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, DISABLE); +} + +/** + * @brief Sets the WWDG Prescaler. + * @param WWDG_Prescaler: specifies the WWDG Prescaler. + * This parameter can be one of the following values: + * @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1 + * @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2 + * @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4 + * @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8 + * @retval None + */ +void WWDG_SetPrescaler(uint32_t WWDG_Prescaler) +{ + uint32_t tmpreg = 0; + /* Check the parameters */ + assert_param(IS_WWDG_PRESCALER(WWDG_Prescaler)); + /* Clear WDGTB[1:0] bits */ + tmpreg = WWDG->CFR & CFR_WDGTB_Mask; + /* Set WDGTB[1:0] bits according to WWDG_Prescaler value */ + tmpreg |= WWDG_Prescaler; + /* Store the new value */ + WWDG->CFR = tmpreg; +} + +/** + * @brief Sets the WWDG window value. + * @param WindowValue: specifies the window value to be compared to the downcounter. + * This parameter value must be lower than 0x80. + * @retval None + */ +void WWDG_SetWindowValue(uint8_t WindowValue) +{ + __IO uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_WWDG_WINDOW_VALUE(WindowValue)); + /* Clear W[6:0] bits */ + + tmpreg = WWDG->CFR & CFR_W_Mask; + + /* Set W[6:0] bits according to WindowValue value */ + tmpreg |= WindowValue & (uint32_t) BIT_Mask; + + /* Store the new value */ + WWDG->CFR = tmpreg; +} + +/** + * @brief Enables the WWDG Early Wakeup interrupt(EWI). + * @param None + * @retval None + */ +void WWDG_EnableIT(void) +{ + *(__IO uint32_t *) CFR_EWI_BB = (uint32_t)ENABLE; +} + +/** + * @brief Sets the WWDG counter value. + * @param Counter: specifies the watchdog counter value. + * This parameter must be a number between 0x40 and 0x7F. + * @retval None + */ +void WWDG_SetCounter(uint8_t Counter) +{ + /* Check the parameters */ + assert_param(IS_WWDG_COUNTER(Counter)); + /* Write to T[6:0] bits to configure the counter value, no need to do + a read-modify-write; writing a 0 to WDGA bit does nothing */ + WWDG->CR = Counter & BIT_Mask; +} + +/** + * @brief Enables WWDG and load the counter value. + * @param Counter: specifies the watchdog counter value. + * This parameter must be a number between 0x40 and 0x7F. + * @retval None + */ +void WWDG_Enable(uint8_t Counter) +{ + /* Check the parameters */ + assert_param(IS_WWDG_COUNTER(Counter)); + WWDG->CR = CR_WDGA_Set | Counter; +} + +/** + * @brief Checks whether the Early Wakeup interrupt flag is set or not. + * @param None + * @retval The new state of the Early Wakeup interrupt flag (SET or RESET) + */ +FlagStatus WWDG_GetFlagStatus(void) +{ + return (FlagStatus)(WWDG->SR); +} + +/** + * @brief Clears Early Wakeup interrupt flag. + * @param None + * @retval None + */ +void WWDG_ClearFlag(void) +{ + WWDG->SR = (uint32_t)RESET; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/stm32f10x_conf.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/stm32f10x_conf.h new file mode 100644 index 00000000..59549e3b --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/lib/stdperiphlib/stm32f10x_conf.h @@ -0,0 +1,77 @@ +/** + ****************************************************************************** + * @file Project/STM32F10x_StdPeriph_Template/stm32f10x_conf.h + * @author MCD Application Team + * @version V3.5.0 + * @date 08-April-2011 + * @brief Library configuration file. + ****************************************************************************** + * @attention + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

    © COPYRIGHT 2011 STMicroelectronics

    + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F10x_CONF_H +#define __STM32F10x_CONF_H + +/* Includes ------------------------------------------------------------------*/ +/* Uncomment/Comment the line below to enable/disable peripheral header file inclusion */ +#include "stm32f10x_adc.h" +#include "stm32f10x_bkp.h" +#include "stm32f10x_can.h" +#include "stm32f10x_cec.h" +#include "stm32f10x_crc.h" +#include "stm32f10x_dac.h" +#include "stm32f10x_dbgmcu.h" +#include "stm32f10x_dma.h" +#include "stm32f10x_exti.h" +#include "stm32f10x_flash.h" +#include "stm32f10x_fsmc.h" +#include "stm32f10x_gpio.h" +#include "stm32f10x_i2c.h" +#include "stm32f10x_iwdg.h" +#include "stm32f10x_pwr.h" +#include "stm32f10x_rcc.h" +#include "stm32f10x_rtc.h" +#include "stm32f10x_sdio.h" +#include "stm32f10x_spi.h" +#include "stm32f10x_tim.h" +#include "stm32f10x_usart.h" +#include "stm32f10x_wwdg.h" +#include "misc.h" /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Uncomment the line below to expanse the "assert_param" macro in the + Standard Peripheral Library drivers code */ +/* #define USE_FULL_ASSERT 1 */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT + +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function which reports + * the name of the source file and the source line number of the call + * that failed. If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0) +#endif /* USE_FULL_ASSERT */ + +#endif /* __STM32F10x_CONF_H */ + +/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/main.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/main.c new file mode 100644 index 00000000..5d39655d --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/main.c @@ -0,0 +1,214 @@ +/**************************************************************************************** +| Description: demo program application source file +| File Name: main.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ +#include /* standard IO library */ + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void DisplayUptime(void); +static void Init(void); + + +/**************************************************************************************** +** NAME: main +** PARAMETER: none +** RETURN VALUE: program return code +** DESCRIPTION: This is the entry point for the bootloader application and is called +** by the reset interrupt vector after the C-startup routines executed. +** +****************************************************************************************/ +int main(void) +{ + /* initialize the microcontroller */ + Init(); + /* initialize the bootloader interface */ + BootComInit(); + + /* start the infinite program loop */ + while (1) + { + /* toggle LED with a fixed frequency */ + LedToggle(); + /* Output uptime on terminal */ + DisplayUptime(); + /* check for bootloader activation request */ + BootComCheckActivationRequest(); + } + + /* program should never get here */ + return 0; +} /*** end of main ***/ + + +/**************************************************************************************** +** NAME: DisplayUptime +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Outputs the program's runtime on the terminal every second. +** +****************************************************************************************/ +static void DisplayUptime(void) +{ + static unsigned long uptime_ms_last = 0; + unsigned long uptime_ms_now; + static unsigned char hr=0, min=0, sec=0; + + uptime_ms_now = TimerGet(); + + /* output info on terminal just once a second */ + if ( (uptime_ms_now - uptime_ms_last) < 1000) + { + /* not yet time to toggle */ + return; + } + /* calculate uptime */ + if (++sec >= 60) + { + sec = 0; + if (++min >= 60) + { + min = 0; + if (++hr >= 24) + { + hr = 0; + } + } + } + + /* output time on terminal */ + printf("Program uptime: %02d:%02d:%02d\r", hr, min, sec); + + /* store for next comparison */ + uptime_ms_last = uptime_ms_now; +} /*** end of DisplayUptime ***/ + + +/**************************************************************************************** +** NAME: Init +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the microcontroller. +** +****************************************************************************************/ +static void Init(void) +{ + volatile unsigned long StartUpCounter = 0, HSEStatus = 0; + unsigned long pll_multiplier; + + /* reset the RCC clock configuration to the default reset state (for debug purpose) */ + /* set HSION bit */ + RCC->CR |= (unsigned long)0x00000001; + /* reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ + RCC->CFGR &= (unsigned long)0xF8FF0000; + /* reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (unsigned long)0xFEF6FFFF; + /* reset HSEBYP bit */ + RCC->CR &= (unsigned long)0xFFFBFFFF; + /* reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (unsigned long)0xFF80FFFF; + /* disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + /* enable HSE */ + RCC->CR |= ((unsigned long)RCC_CR_HSEON); + /* wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } + while((HSEStatus == 0) && (StartUpCounter != 1500)); + /* check if time out was reached */ + if ((RCC->CR & RCC_CR_HSERDY) == RESET) + { + /* cannot continue when HSE is not ready */ + while (1) { ; } + } + /* enable flash prefetch buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + /* reset flash wait state configuration to default 0 wait states */ + FLASH->ACR &= (unsigned long)((unsigned long)~FLASH_ACR_LATENCY); +#if (BOOT_CPU_SYSTEM_SPEED_KHZ > 48000) + /* configure 2 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_2; +#elif (BOOT_CPU_SYSTEM_SPEED_KHZ > 24000) + /* configure 1 flash wait states */ + FLASH->ACR |= (unsigned long)FLASH_ACR_LATENCY_1; +#endif + /* HCLK = SYSCLK */ + RCC->CFGR |= (unsigned long)RCC_CFGR_HPRE_DIV1; + /* PCLK2 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE2_DIV2; + /* PCLK1 = HCLK/2 */ + RCC->CFGR |= (unsigned long)RCC_CFGR_PPRE1_DIV2; + /* reset PLL configuration */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | \ + RCC_CFGR_PLLMULL)); + /* calculate multiplier value */ + pll_multiplier = BOOT_CPU_SYSTEM_SPEED_KHZ/BOOT_CPU_XTAL_SPEED_KHZ; + /* convert to register value */ + pll_multiplier = (unsigned long)((pll_multiplier - 2) << 18); + /* set the PLL multiplier and clock source */ + RCC->CFGR |= (unsigned long)(RCC_CFGR_PLLSRC_HSE | pll_multiplier); + /* enable PLL */ + RCC->CR |= RCC_CR_PLLON; + /* wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + /* select PLL as system clock source */ + RCC->CFGR &= (unsigned long)((unsigned long)~(RCC_CFGR_SW)); + RCC->CFGR |= (unsigned long)RCC_CFGR_SW_PLL; + /* wait till PLL is used as system clock source */ + while ((RCC->CFGR & (unsigned long)RCC_CFGR_SWS) != (unsigned long)0x08) + { + } +#if (BOOT_COM_UART_ENABLE == 0) + /* initialize the UART interface if this is not the interface used to + * reactivate OpenBLT, because stdio_mini needs it for printf/scanf. + */ + UartInit(BOOT_COM_UART_BAUDRATE); +#endif + /* init the led driver */ + LedInit(); + /* init the timer driver */ + TimerInit(); + /* enable IRQ's, because they were initially disabled by the bootloader */ + IrqInterruptEnable(); +} /*** end of Init ***/ + + +/*********************************** end of main.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/memory.x b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/memory.x new file mode 100644 index 00000000..32ba23df --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/memory.x @@ -0,0 +1,38 @@ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08002000, LENGTH = 120K + SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K +} + +SECTIONS +{ + __STACKSIZE__ = 1024; + + .text : + { + KEEP(*(.isr_vector)) + *(.text*) + *(.rodata*) + _etext = .; + } > FLASH + + + .data : AT (ADDR(.text) + SIZEOF(.text)) + { + _data = .; + *(vtable) + *(.data*) + _edata = .; + } > SRAM + + .bss : + { + _bss = .; + *(.bss*) + *(COMMON) + _ebss = .; + _stack = .; + . = ALIGN(MAX(_stack + __STACKSIZE__ , .), 4); + _estack = .; + } > SRAM +} diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/timer.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/timer.c new file mode 100644 index 00000000..99b3dc42 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/timer.c @@ -0,0 +1,102 @@ +/**************************************************************************************** +| Description: Timer driver source file +| File Name: timer.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +static unsigned long millisecond_counter; + + +/**************************************************************************************** +** NAME: TimerInit +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Initializes the timer. +** +****************************************************************************************/ +void TimerInit(void) +{ + /* configure the SysTick timer for 1 ms period */ + SysTick_Config(BOOT_CPU_SYSTEM_SPEED_KHZ); + /* reset the millisecond counter */ + TimerSet(0); +} /*** end of TimerInit ***/ + + +/**************************************************************************************** +** NAME: TimerSet +** PARAMETER: timer_value initialize value of the millisecond timer. +** RETURN VALUE: none +** DESCRIPTION: Sets the initial counter value of the millisecond timer. +** +****************************************************************************************/ +void TimerSet(unsigned long timer_value) +{ + /* set the millisecond counter */ + millisecond_counter = timer_value; +} /*** end of TimerSet ***/ + + +/**************************************************************************************** +** NAME: TimerGet +** PARAMETER: none +** RETURN VALUE: current value of the millisecond timer +** DESCRIPTION: Obtains the counter value of the millisecond timer. +** +****************************************************************************************/ +unsigned long TimerGet(void) +{ + /* read and return the millisecond counter value */ + return millisecond_counter; +} /*** end of TimerGet ***/ + + +/**************************************************************************************** +** NAME: TimerISRHandler +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Interrupt service routine of the timer. +** +****************************************************************************************/ +void TimerISRHandler(void) +{ + /* increment the millisecond counter */ + millisecond_counter++; +} /*** end of TimerISRHandler ***/ + + +/*********************************** end of timer.c ************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/timer.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/timer.h new file mode 100644 index 00000000..b2f160c6 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/timer.h @@ -0,0 +1,43 @@ +/**************************************************************************************** +| Description: Timer driver header file +| File Name: timer.h +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ +#ifndef TIMER_H +#define TIMER_H + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +void TimerInit(void); +void TimerSet(unsigned long timer_value); +unsigned long TimerGet(void); +void TimerISRHandler(void); + +#endif /* TIMER_H */ +/*********************************** end of timer.h ************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/uart.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/uart.c new file mode 100644 index 00000000..69d5f1f3 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/uart.c @@ -0,0 +1,121 @@ +/**************************************************************************************** +| Description: UART driver source file +| File Name: uart.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +** NAME: UartInit +** PARAMETER: baudrate communication speed in bits/sec +** RETURN VALUE: none +** DESCRIPTION: Initializes the UART interface for the selected communication speed. +** +****************************************************************************************/ +void UartInit(unsigned long baudrate) +{ + GPIO_InitTypeDef GPIO_InitStruct; + USART_InitTypeDef USART_InitStruct; + + /* enable UART peripheral clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + /* enable GPIO peripheral clock for transmitter and receiver pins */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); + /* configure USART Tx as alternate function push-pull */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* Configure USART Rx as alternate function input floating */ + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; + GPIO_Init(GPIOA, &GPIO_InitStruct); + /* configure UART communcation parameters */ + USART_InitStruct.USART_BaudRate = baudrate; + USART_InitStruct.USART_WordLength = USART_WordLength_8b; + USART_InitStruct.USART_StopBits = USART_StopBits_1; + USART_InitStruct.USART_Parity = USART_Parity_No; + USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_Init(USART2, &USART_InitStruct); + /* enable UART */ + USART_Cmd(USART2, ENABLE); +} /*** end of UartInit ***/ + + +/**************************************************************************************** +** NAME: UartTxChar +** PARAMETER: ch character to transmit +** RETURN VALUE: the transmitted character. +** DESCRIPTION: Transmits a character through the UART interface. +** +****************************************************************************************/ +int UartTxChar(int ch) +{ + /* wait for transmit completion of the previous character, if any */ + while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET) { ; } + /* transmit the character */ + USART_SendData(USART2, (unsigned char)ch); + /* for stdio compatibility */ + return ch; +} /*** end of UartTxChar ***/ + + +/**************************************************************************************** +** NAME: UartRxChar +** PARAMETER: blocking 1 to block until a character was received, 0 otherwise. +** RETURN VALUE: the value of the received character or -1. +** DESCRIPTION: Receives a character from the UART interface. +** +****************************************************************************************/ +int UartRxChar(unsigned char blocking) +{ + if (!blocking) + { + /* check flag to see if a byte was received */ + if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) + { + return -1; + } + } + else + { + /* wait for reception of byte */ + while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) { ; } + } + /* retrieve and return the newly received byte */ + return USART_ReceiveData(USART2); +} /*** end of UartRxChar ***/ + + +/*********************************** end of uart.c *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/uart.h b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/uart.h new file mode 100644 index 00000000..d92e6906 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/uart.h @@ -0,0 +1,43 @@ +/**************************************************************************************** +| Description: UART driver header file +| File Name: uart.h +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ +#ifndef UART_H +#define UART_H + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +void UartInit(unsigned long baudrate); +int UartTxChar(int ch); +int UartRxChar(unsigned char blocking); + + +#endif /* UART_H */ +/*********************************** end of uart.h *************************************/ diff --git a/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/vectors.c b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/vectors.c new file mode 100644 index 00000000..9f671c56 --- /dev/null +++ b/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC_Eclipse/Prog/vectors.c @@ -0,0 +1,166 @@ +/**************************************************************************************** +| Description: bootloader interrupt vector table source file +| File Name: vectors.c +| +|---------------------------------------------------------------------------------------- +| C O P Y R I G H T +|---------------------------------------------------------------------------------------- +| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +| +|---------------------------------------------------------------------------------------- +| L I C E N S E +|---------------------------------------------------------------------------------------- +| This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +| modify it under the terms of the GNU General Public License as published by the Free +| Software Foundation, either version 3 of the License, or (at your option) any later +| version. +| +| OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +| without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +| PURPOSE. See the GNU General Public License for more details. +| +| You should have received a copy of the GNU General Public License along with OpenBLT. +| If not, see . +| +| A special exception to the GPL is included to allow you to distribute a combined work +| that includes OpenBLT without being obliged to provide the source code for any +| proprietary components. The exception text is included at the bottom of the license +| file . +| +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "header.h" /* generic header */ + + +/**************************************************************************************** +* External functions +****************************************************************************************/ +extern void reset_handler(void); /* implemented in cstart.c */ + + +/**************************************************************************************** +* External data declarations +****************************************************************************************/ +extern unsigned long _estack; /* stack end address (memory.x) */ + + +/**************************************************************************************** +** NAME: UnusedISR +** PARAMETER: none +** RETURN VALUE: none +** DESCRIPTION: Catch-all for unused interrrupt service routines. +** +****************************************************************************************/ +void UnusedISR(void) +{ + /* unexpected interrupt occured, so halt the system */ + while (1) { ; } +} /*** end of UnusedISR ***/ + + +/**************************************************************************************** +* I N T E R R U P T V E C T O R T A B L E +****************************************************************************************/ +typedef union +{ + void (*func)(void); /* for ISR function pointers */ + unsigned long ptr; /* for stack pointer entry */ +}tIsrFunc; /* type for vector table entries */ + +__attribute__ ((section(".isr_vector"))) +const tIsrFunc _vectab[] = +{ + { .ptr = (unsigned long)&_estack }, /* the initial stack pointer */ + { reset_handler }, /* the reset handler */ + { UnusedISR }, /* NMI Handler */ + { UnusedISR }, /* Hard Fault Handler */ + { UnusedISR }, /* MPU Fault Handler */ + { UnusedISR }, /* Bus Fault Handler */ + { UnusedISR }, /* Usage Fault Handler */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* SVCall Handler */ + { UnusedISR }, /* Debug Monitor Handler */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* PendSV Handler */ + { TimerISRHandler }, /* SysTick Handler */ + { UnusedISR }, /* Window Watchdog */ + { UnusedISR }, /* PVD through EXTI Line detect */ + { UnusedISR }, /* Tamper */ + { UnusedISR }, /* RTC */ + { UnusedISR }, /* Flash */ + { UnusedISR }, /* RCC */ + { UnusedISR }, /* EXTI Line 0 */ + { UnusedISR }, /* EXTI Line 1 */ + { UnusedISR }, /* EXTI Line 2 */ + { UnusedISR }, /* EXTI Line 3 */ + { UnusedISR }, /* EXTI Line 4 */ + { UnusedISR }, /* DMA1 Channel 1 */ + { UnusedISR }, /* DMA1 Channel 2 */ + { UnusedISR }, /* DMA1 Channel 3 */ + { UnusedISR }, /* DMA1 Channel 4 */ + { UnusedISR }, /* DMA1 Channel 5 */ + { UnusedISR }, /* DMA1 Channel 6 */ + { UnusedISR }, /* DMA1 Channel 7 */ + { UnusedISR }, /* ADC1 and ADC2 */ + { UnusedISR }, /* CAN1 TX */ + { UnusedISR }, /* CAN1 RX0 */ + { UnusedISR }, /* CAN1 RX1 */ + { UnusedISR }, /* CAN1 SCE */ + { UnusedISR }, /* EXTI Line 9..5 */ + { UnusedISR }, /* TIM1 Break */ + { UnusedISR }, /* TIM1 Update */ + { UnusedISR }, /* TIM1 Trigger and Commutation */ + { UnusedISR }, /* TIM1 Capture Compare */ + { UnusedISR }, /* TIM2 */ + { UnusedISR }, /* TIM3 */ + { UnusedISR }, /* TIM4 */ + { UnusedISR }, /* I2C1 Event */ + { UnusedISR }, /* I2C1 Error */ + { UnusedISR }, /* I2C2 Event */ + { UnusedISR }, /* I2C1 Error */ + { UnusedISR }, /* SPI1 */ + { UnusedISR }, /* SPI2 */ + { UnusedISR }, /* USART1 */ + { UnusedISR }, /* USART2 */ + { UnusedISR }, /* USART3 */ + { UnusedISR }, /* EXTI Line 15..10 */ + { UnusedISR }, /* RTC alarm through EXTI line */ + { UnusedISR }, /* USB OTG FS Wakeup */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* Reserved */ + { UnusedISR }, /* TIM5 */ + { UnusedISR }, /* SPI3 */ + { UnusedISR }, /* UART4 */ + { UnusedISR }, /* UART5 */ + { UnusedISR }, /* TIM6 */ + { UnusedISR }, /* TIM7 */ + { UnusedISR }, /* DMA2 Channel1 */ + { UnusedISR }, /* DMA2 Channel2 */ + { UnusedISR }, /* DMA2 Channel3 */ + { UnusedISR }, /* DMA2 Channel4 */ + { UnusedISR }, /* DMA2 Channel5 */ + { UnusedISR }, /* Ethernet */ + { UnusedISR }, /* Ethernet Wakeup */ + { UnusedISR }, /* CAN2 TX */ + { UnusedISR }, /* CAN2 RX0 */ + { UnusedISR }, /* CAN2 RX1 */ + { UnusedISR }, /* CAN2 SCE */ + { UnusedISR }, /* USB OTG FS */ + { (void*)0x55AA11EE }, /* Reserved for OpenBLT checksum */ +}; + + +/************************************ end of hw.c **************************************/ + +

    Copyright © KEIL - An ARM Company.
    +All rights reserved.
    +Visit our web site at
    www.keil.com. +

?^>paOt=t=F;fznkP5p@o6i& z&m{efmwO)YTN#V*mdQ*N*P5;ZcZ-3y2l~Gq8^)X^u+x%za9`;;t;_65E;Pc34^ z<{I1^!aQZu>zLMuO>U|rdPP0Z-pZC^gN=u2$|&n+@5R+FwAXH|6-=+I%9p7Vx?h0V zkNFt+OosON!Eqmqe|fKWg6O#_$PaTTtDf1i8F!bRrkvn@RkRAabO^3|vi`i^Oc?Qt zEEj0WvQ-|!HU8O^7gOFC|9MvC0z3tbHt*aTe_K)Gh0@eqm=uojqyJ_q>yZO@?T5P3 zH2%vquk0!poru1vAO14euZ4O13JLrd`!hHGUtB*B+AsPIrm`DMZ#qw?_mDV_;EK)U zK9bChdi-VRqs!I`xa`Wdw0aci>}7Fu&ft4-M4aSP!zc3K zA4L9rJ{RyO<-tFU{GSH-=jG);iu}I>`PW+im&5f=$h8i~H-r2;ZNAy({~m2U3i2N< z;5UDx`IDhbv0JU*{xi?o*4Q@1j|qLyDSHwdj!cc0=GE_Wnm-wJQwCldpUBHcy>LF+ zr+EH2XY##-BkC`^58%OH^Y8NN?^VEedT1=kEYH(FbW^frkUuUj|83;M$NMyNo{gV# zM*ltJ@9A@a|03((EI*5^67c8K&>PK<5Td}_JR z^z$OF0FM4WyRGJCcT&4W4bq1F%nGB=*s}X_CO67vr(na8sqN{!df#31nU@6*?fdkP zd$PMR7x^e_{W9sYhnffKsdmIUi|j61p8NJ=^XeJ)Uy8WIr+9uMXZ-GmBkVByTeK6% zKB6eyPB@29x`T&C{**jDe+>DEb9@>xFE9Ua>yQT+*Y+E4 z=1kA$gGSI^M?CMEh&AjlvBpVK7G?X*8}E;Zlxt6Q%+r6~IA?UwrWvdG)Y+KV?$Bq2 zYsWf2YVo>zXqnEl^V%)?{L&!)>%1=QH#w#&T^Hd0W*$7o zUZu|j`9IBT_o$~*jJtg5d?wFtp-+|i#4(GyAAL_=`{URh_07aOFEsAR-evhH%XSS4 zNqwj5A@0wzkeP9^Pow{2e1-l*VmOq00(jS>q>g9OBg@#MD5lu2`~q;_RaoYXzpj6O zoP9)Kq9ZObzIC4QDBOqUb22OABZ|d%!Atfh*#0iCZv2yZ?e{6A%UsGh{zapkGkc@o z=wz;@czl(!{6FAG|MCX5eK20?$!mWv0DcP>9i+S`@X8Np{t^ zUfzZLKKw1_y0wk@XUbj{bduQq!kKGdY|Gnq4I6pnm^H}-MU~y!A z3T$mD#$dLxEc9>X!&EPnIc`_o;?)kuSbI82v0ORoBBnbP|7UpYAa#lPBid)y zjRa*rk2W3qDfpN2=jDh2JgoS0t`9jFgG8OjB27N6M9Q>ce^BgpcA= zgY_W;$-j33BlP)PPePw}{`P?6Tt~*SZ#UL;agJ?IQW5%d0{RC57uuOm#ZTcWAtaeE z8HoO&35?V?{Simnly!Gd;=dVq9+7yccbvs~N9eH|7kscE}(Z~LW^gmUm2iX z=K>h`1)qvWSovOm1?2AmKj^p0*&lDn|61SD*MhRk{>}Yw{wm+4@W=cuM$cc!A3v^o zsv3uSTL<|YQBQ0syUUMtNUL2yJCS<0CXb>WiApVp(_m;Kh_PTFgb zQvUfF&8Qls_{3gA`n!P|JtKXEQKo&7W;y(C`R`HJfR&U@;#A3h9r@sovPl|g{LpWg z==iQ2u>exE`Zdt!b>27c#@cB1c+v~udQRz8AiMk}EsIlEy41##A-;E*gE@F?(hhXJ z+ClI+^MOzI=0ih0R73*iD#`+SI4^%ouXA5^m&MVfr_Te@e{pt_ZLB-y6LClR`vKfT z7M}!sR@7*I12JK`Myvm6*R>uGfYuLGX>dIUIbb&x zyJH)JXB^NsF=c<)zaA@W&Yoq3j_RB7Gi`%Us&!L86~6+W%b|w@U=J9BGCt>6nB(Ow zK7kGWQ6=@h8B#3IJn*qqLZEVw0`)yt^D9tRDYu$=ke_T zY*X^^tpUE16c_ik4;8>?q z&pDG9?YZK-1Yh0c0{E^ld?+jU)czNsMrJ~TB5{oG2H?9i!1q7_`?GkW0%ZvYPez^? z1Ii=56-{vICRiJF3pA%qf)7^22ej4i0C&70QS&!{qZ0L`M+<|Sa!f(!f zEYAm!=MM>`A)hW#-~Vm$pe*4qa$y~xfM>3@Mvb%9&1+~r`=!cq;I*+Xp@-aS;~n-N zX780aGF9(f5HH`?(jRXFa3cmL4AYQT3*fEOyh@Z6{cHblvb6Onn&;)O90q*VdX4*r z-TM3AO2i9H)wBBHn+gsk#rVbn-%u^fjE2<(@QqfON|X)kW0q*sx1XH0@5-%#4{?o8 z4Y%~KpUN#Ymt_T?+V6aLBaX?$W5oPHZ;W+(YV_;v!+M#nxz%%kFNbrzPjIT-;pAJH zPQbHrTWik~`fhN)>>|9R(1#8*s}C>!t@#~{p$@y$oMU3o=Q)58Akta2aC zt3=rV-%P}j=G6jx9|u14$38XvvH-q=4Ijz|^}=^f(Z@;JkXvVu?T`UKo_wptG4Jr($l@z`*` z@VEkYxLWh8PcwXKHKA31ny)LMzq2&25@l2JF2h@vICcx=y%_k; z)bfJw(E{>bX!uYzsE?(HTDQl$lhXBZHSi&(_o=zBKz&@Pxz)R-r1)bLunpqIG=J#RD?hL0xo_zzz@PR1mFfO}sXGby=nG?S z81VTW;Jqopdw&1^ztZ~uN|dF1GM}MyRXShDI4GarUf>PlfR^vsyhP|H9#Fc~h{uEa z(Wp;G6#<_=1HSJ!8od*-ZOTA$AW--B9S@O`fUz9$SH$_Ds$ zvpF-x*8@C{VZI(~xi7mD^@5mqDE!ox@KIZi#I{{RV{@Fv_V$YK5tC?rwSYW-*X&A^ zm3q{;Q{Q0LowNy-it)Y!ysR@zZDR`9$6K0NiL#<6^#gpz-g4D?g0HFx_z>6l)OJ|^ zc2QNQxh%_ZCHrf}0&MU5W9-qg80YX!Eoif4yCNJwKONrF^|&|1QRWTxzLd^U?vJ@b z&g0FnXW;VU>8cUn?fryu+q(YurK&nKpJhc~>W70~C(zd@G`H3SUwhX4a8CUU=W{sk z!&DACZGSsG?<3bAm28KJ14KD~O4`>O9@L*G@kE&f2)yg$>sw($L#D(hqVI#Kq7 zfAjf4|MdQ1Sn5Lbf_!VAJ;5*aVsU2G{-z(uF809tCjNQB*%+^JPWwQ3ncc<9%zuoBV3im-ncd>5hI=~|xqiYxm2x2p3c zKf2^xc7=@GebKHMO`(ZqKB4*W>>boW>A@$2~T-BA>@Ep`A z_-;w??H_S<<+1*m{{t7Dyp848I8=X)Aha>U%tD5ec6Lnx}yBiFgY~ zAwJl5`F8ws;6pvJ4x}B|i9Pt1JX7vG@}A!wxIRa1h2^RqPWY&L3g>?eIO?+X8m|V| zaGJ97rxm6e@iOI>_-Q_<=?Z?m*Qn>}H+~b)dlu&}CAjNPwm6FPBHUZ1=9lErgUnU0 zK~A(Up{MPD_x5<-Ah^qje9HHigdQmo)*tKtY3(7eT-95^&$7nbkX@5@gR?1!*r&lF z!k^$w=>`2Haa5mY{A>H?8(FEH{oz%WzyD77t43W`6Ub7-$>s+J(SLP?z(nWWnxeBO z{8oxiH9VBJx9TB)8SbfI9Dc(_&>1Q)(e{Uf4s1r=Ysp?=hG_j@i9>mBxm)@Q?K9|; z{JJ@Sus*6A13u9IhpF+Kz=|aInKNSd@b37ZQy9)c(O%<}P1X}pw(9NRJAb9Q6~Bd_ zf33e?uAZX#EK9toPx?*Xo%M6tX+KK5)3I%#aNL)CJ+TL&yED+hPB{l%aRT!HX!^_< z-@9s@M_A7NlzrX&tk0i?>z6SX$E%V5jPac__&K;Pn!#}xeDI3ui zf>;*!U*uj*1^S!nR|?bz`W>b%dW^2lpQ*?2t=VcMrh5`_AvVSPwj|Yd_m2;%Q4dJb z_ONr2hxe(Ibr&hjF<$tv>SHl)iCB}V_P6Gba#jzg;rJWLl3o46ynOg1&I2%2o(eqI zS0IK(A|(I&rU8xIrs~o8W!c**=GS)hWEMbttA@#d~VM0 zuSI?%bh4l3H(p}x4L;TPBh^=F-WG_@L~lC36|P&;bsW%Uthbwh_j1&s#dM8+9c+mA zONzG|Wu<@8=b!xg7twfCfF5v%y!gJqrw~Yfr{NFJAC@cP{6_|AW ziM|C}?<@29cScS6Y%K3bEReW1MUR-OZ&7^QH{ao8l+xF$*SO}Z9XhTC{p#=In#D!; zK3sTQQG1QT$-1w_|K@QK@0k~PpBUHj;9YW#@nW3t4#0^ntML&1DDqRO$`yaqRh5VR zW;NO#^-7(I{juHBO1N%|D`EM3oJKI(pZqDoi}w$@>bDXK#Y2L4BDtK3U#eeMnA)!y zJ@yC5IvW3eNP(9A>y?1syI9s4C5SVl&HoM3Un2x0O!Qf_?^r&r_U7s=_LoYLHmdTy zpU|s8-%&Fpp;yweVfku65HQgtYXkYTEu?4>E9I-H4CoET|E&UgTW^GX9Rd@bbT{y^ zeKPLZ7ZJ|_XqEE|2jhB=i^jn>kHx#h$7WqL=ASsu!ZsHh-a#>TJhlZ1-A#Qaa-v0h zd#ph$P_t7)rDT@*)xqj<2Z4z$L4Rw{5&CzSsUEiv@b8MUa{~O!?D;_IhwtxBo(+^j zVSA{VoxsL)G}cu*u#;GheNgtmfX=x_hjJ9*`8P``{QD;`a-HK|)|b95U!nrh7kqn6 z=i`8}ew!#uuCjiPbod@_l_%BCYS6C%COYpHvkT4(>8OMjFG=Ve7SKUVRkKX<^KKCjqCEo=Jtk^>d zVVE0?B&f~OXPXTEwNT?%M|{r1SUGe+coi1fAGG7AN_oc z|2mZYc7h-8CQ0xQWCu40Omq^*E6|Iqi)Rl#8?#LGe|f%w*y%4;{0>F?&@VLN2pMb7 z#1X!#=I_`ZWU0-UMDFWV?wVfELo8i`d3c}7YHS{K9j-K>=J-vGMXnPw#Qb^+pRVmJ zBw1e$!pPFA`dmLNPAD7Ke#trb~ zh4@rFIUF{Yucs3l!WaDq`I;{t1Rlxw`i=4R0?Pjx+iT3xRCc1-zuLoiJR{v1b2lNS zM*;XB>FpmvD_VvQNBCoZq&-ShDfwpF`RV{M90M^t9r7 z)hB+~9#me?rR|fyTJ-05Kd{5Q?&DOpu3){6haK_@Dam&TXrDu3%}%y_|Hg3tf2Hp! zgdgaE&&Smw7VtDp|MWY2PrkNW^ATiGAC;W_6et4yJ8*K1zKH>R7Xw>YZG{r($Z*IsB=Z|mXJ3P@{si+QpF*=k zY?GOv_z}s!4g9>4z?U3m^_eq%(Pnu+q-{Np7a{a+%gaZbszrPC3D4$M@jT}5KIEfb ze9E4c+_w_?KSut6m|uBFOJsWkJNNqNmAvSj`jkGB?;0Uaj_IM#=lfr3ab&9aTUsBy z#{7E3leM6YclKv_t*;krDDT0w*WvER;JggyhzI;U#X!%e)gzW=>LZp@{>|qp@}H0B zhF9g&5ew0d`5mTyZ#7rFQ+~b&KTNf6x#D`4&6xeNMV)|c6?)cw??Y#Uq`s+3>AwO* zalCF3QZP?71AQ027NJl5`kr+Lyw_am&%8J1N)LITdhI(2pSACSrg(58w%X>a!glxp z%6uJsy$!x#|8=lz%2|hgy$*eKU6;bLOwrdYjwig{R~_X>!Mkve)+=%p<9`7^SJ$Dq z>On*N9OwD?)AuA##~F36b)lZ=XyKLw{n{qI3{ z9m)+6s-CW{$m>U0X$bxC0sZZP3w@+dnF}}k{9WBn35?WhONu_fhQ|Bwd=JWiy!7=T z?1um0y@opQQ};1!pT`E>)J?|*{~x^x*ZMqs7iHYUN%R0Z-u~+j22J=DpQ4Lh3(uwg z2dam|6sG>kg7u(l-Uq6O9;_*9Le~ph=J#H>_G1jAVnSeYw&Y=kTNHR8Y% zaedU{fnk}GS?7vJwmY}H#uYcu1^gba=!x@O=I2kkqMsqZ`;@`qMgOStSpVlkmsch* zC12VIJG?l7*?=7mSQo+vY%S(vEpUD%;iK&Kjj#iZmpx2@_NZ$V2eO0pfQ8-1^l!m` z_$8kzItI`K;ZVUI&X@PTvGQW`YbZxU;JBvlZY{+=0=T0h8{M45#B+J&LuVX!=>{RVYt;kw-OdtIRQ@sa37jj%)J=eqU zN*R=`Kb&X5`^R$lo33Z?J6JH*d;K{1>*^Tm;#{vd`q(x%IL2D644=+NP$!U#gv3FA~!~ zSOZU0 zCxM38agF%TWSq$rznp82SN8|)n0P;f4Sg_E(Lpx9odaF+$G#c-HJ^lY@LE)q$KMwf zeiCBUdhlAbTORz^&{pWjZWHvbcw8{v@cdIRNRvC1FU%9t{~sXZB+d{9D>!1k17H1@ z6^5|DE0z}L-)VHejdI|z*pG8^CKs;D`ipfqu9191pMhR_4IX_idC!b4!1w)x01xAh zZ(VnCfZY9D5ON*heGvHWQy9VmZ!M28-w%T>@NsOz6iu-BCue+vAC3_?=3W6RW1W zq}GoNK_!VEp`+LiSmWvWm45RnL(orp{6n@+NXXeDt8dhOnEG-74B+Fmx0Ub3?Z9hM z25qb1H#nYwZ5B#d{SNdTLc=!{ldKn7`folD=buC1y@aFigfC{ys5j1+4%u1dY`)&P z;hi`~y!2&Pmab341JoOJ67*w!T{By?KA$y5`UgSS*8`ZNfNm}5%tx1gDW0b}A4^vE zhmUKQBAazbK1tupH-!9L7?2!c{x#p80)IB-yaa~&g2!P0m&nWBn{RAE5_*UONN>nh z*e<~ae-fv=&EKrUl}4F^;@yj-sE3na$Q0*ejidHesz8DOw4TR*LLxgo$!yk68>++@xQR$LkgDuYVSkZocw<) zp&97g%d7KUk}>kA7EOyqdk5a$4_8;1Kaz!eiOE9UD0PzZgVBk3uG3(yn`e9{RYGl zJ{6s-(}XPdf3Cj|65KK$*DUS0kX{PZpmHSqzN`E;Ao6Lbz-I9lOB8+6HS@SB_-$xR za2r1QorGV0TlOSa*;27Lk`=mqUjy~oFbdmnY+Ff|?27(u{%#ZKvtfLKJDA@bh`)k5 zrCjoE3G%xGw(YR7U$#_SWAmGvg5QrOxPy7ngkRoWJ`EZkNUuAYUiSr_J+U3?xkMN- z%i`!w!RG-9?!I2o=*Y9v!h8;_-}%Nj+Hu1X*p>x+uL5?YO=7PY7kJzS?Ui29-+M8i zBK5z-_&W{o@ahfc1^j(;6WZ&i65IvtHO=3^`aHwphYvWC1h#a>m82Tb6#$j>FTD|syb_Q^mk8Zvh$LFyz-q=7~ z-uQ}Q>g&YuKjrzx0mfS#3pL!14da$3#9bVpVm77ddV9W6d_D7jhxHEsL>^OxE4t5B z$a?>%Q{iznI&UpAk+44Wd_E5l#JLTBMmgx8x@En}Jdcm=lc&ex``!((8S=%{@ONx) z>N)r5x2t)Sc#0>MQuJO;U}AdV_uuq+OWv7UC4S=NfZjVEqaI6^4M1-_@~u5J8VKwy zTKN_JSrZl6HQ|fvp!KUItO-fvi!wIW>i-7x{g#UUp7&jkM$lnm+16g3t%+d9k_127 ztKM(tdrO2ujK5vWHI^9wTEO*r?X|JR%AjoP<2(=U|F9kvKjVR;`{5sFunl^|zWBL( z{G+W5%C`QI=LPXEDTsetgB_tq>@%bC@lUZbR+jj8wc?^5u18Y+$8){0es(d~Nd^G? zC+6MXYcxO8xQmN+u4B2p`lWvOPEN+Y`TF16@K1~JM-BP>&#^LlEuTHh+rsBK`|}fhS8PfAjY0?cj@=(`aS+ukm*ENQ2tJ zRIFf}YIcw_|97Y1ienM^3`lXTXIyW*&B|C=%+8L(P$ZRXd`&+n-#8Neejl*h5QoI_ z^(q*zSt_k?C24x!vogKD$WbmzZt2U#*smKsv>v_AdcEB?%)`fY#joNzu30J_ML)j| z|GYi@OmiBothLibGsq6?>14E3eg{AzUXk}4;OF*WK=*fs6W1)2;#C%@c&%~0l|eth zwbVQPgGOAj|6Cl558)ePxzJZLHKK7?D#cQIiO-}Rq5p0K4?+A^ilttu``(T8aY&6Q zs|ic-EXDLWlf`!hSP$pv`*MxX`ZHJhT0p<4610s+mMA*W`g77OF~9bf!m_N{FYPGl zvGdllu{8Y{-fI(0pNMew%Pu67%%)u6JnF*)yi9D-~M*nw2$UB zp{($&>s7)?B# >(TpIe8wF3ql3_Hn($rlgVy7?7v|>>EAaVt>Wue?H+72TL%&XX zK4t!C_i;nLEtTA8^%qP&T_2=hIo|`LMvdn9#uL8L`~a4Y@xzZb;e9~cU#JwKLUwDq zZ9>_g-qVp*o(5z5p8|f1y+|SYgVlS^+RfRh=5Cb1u^v9Y#J_jP=U=M%lMh1~;ELY0 z`Q%W3LtCsqj-hm^Pn>4SnF4+wd%Ror}&s2KT}bM860;ZTBJ1{3Vo!1jO%_!DfmS8NJ z7Cc96_TC(6nKtledSu+s@tc3*eI?9@B3#;)hty2?^=M z{NRu6HcnYhC1f;i4G3EBd9)2j{GQ zSHnj=0RQxD=m-5?@lb0=mQP5=MU2&&5Ze`Z8h^c5UqJh~9_{-FF(xN7uOGneDLh<$iYW(2lfaQ+P5AaE9@pxX^!5w0M} zA0JV_sNb0GeEk1-LZD)bjgtnk_n`+W4Bqjq{jAO(aMc*!Z9*O8QPpx>V;9ry29Chz zRh(<%_`&F+-aHKTCweZ_u4hYxDsOOuJx8mHF%5eOY#IG9zs1h)Y4e-g{GKqrIUJom z7V|Hii4Hd9nbh;bK<-aLhVv2%jTIZA?{gFe@4)tP`@VQ9z;5v5YR5eRe$2fL4aU`t zW6h4K*CISaW+`Pymnuv<^7?YvRp8AX><|1q@b;8bXVejJl_<3bPU;Nx}#Uc?W?-S%G0&oRJr3apv$vlA;7 zer{EMhN7Pzinw^_Loqw9=}*QF+5~1w_|}B+n5UcICdt`pINJjEvgnn!!WI5k|IB)c zP;xS^!Ox}i^rM7^TrV}LxKeJF(iXmc5a{V=fO#_EtNG`_`(OB+L=rpj-XlGlU`x?` zBEeyFLwgY9LiaJ#2Ylhs-=Ysp$hv0SjOO3I3$U9eI#>>gw{Ra7s=VKMB>V-RlRp%> zCyHLuR&Y4#>r7d3Iv$#vi+?-gr*EWS`A#u=y&@6TEAmO zzn=p9|4_r$pBB__OKZZb=r?QrgkPgjpCawM1(PD|4_c;R>%ulYknb}#zM}nX|9_B= z_VPcJja&>W-_(Rxk+00;`#9!d_#Q*T!+*7GWAdTDY552?j7xnQ`n39s59q(vf=5Pe z1!wlf;{AK`CZOaQxWc!WbjH8%4!?i9%TE1Dapb|bKG74B+A8?B<@m=n-Q#6k;&Uh9 zdVl!E@QH+0UY8mqSA%<+Y@wa~Jn=+8uCQ>Ri7=FeM}s;=9sa6N}iU2n`c5T*SeVi2jP#ad6q!^C*prtgyvOUBnJ3B8u{fD8S!Ppx|e-y!xFaZKp} zu>fJ(;WsF!#7oqG#%U`=8+o)vALj>juL6!QCIni)vf+58B;OF-<*)mqKbc`Q;H&Y8@3rpE|^XBVX zdNrrT$`XIp3XA_K5&ZHzYm66tE)%{h$*UN9LjFs)D7wSEwl>q-g4fdA_{!{YtKWk;IY(Kq3z^_mFa=s#( zd7g{*n1kaz*#79EkF0jlEWA5*7Ty;-Yft?Dg3Gjx#MXpuD{OmW+c~EHe>(AcYb`RK z{}`hy$I_&9y?mf~C>x!En5|#El;w@xP$I@(t*|Zc=n?yh5qb91YR1`G?V=tOAbw*@ z?X@&+`}6{mV*Kc{nOfmPEmf@Y^#Y@0duv61&D4srtw+eIYn`YR#ICY2etsjDPn;zD z53};Pw_vH_8Jpi_n{P$zD|kV_{SGNn@scaeh~I?qwgRpd@fZ`!YNA2|j`7dzdzGwE zU}Os(nAo0Lcd)H1;Ax9$%9jlP7D66Ree=i~@Yy1T(poFiF zg9bOmX))b1j4rNOs=S=`x*q?m|7kr{b6QbWQ(_lp4@b*v6X({f#l`s1$1=69)Fbxz zoLYK)RqMH$*J@?a3S%oZ{6`Il{|bXWE5ZMKKK{$B%oQ#=3v(bTKaTpseHD7yW#m2P z`!<8QNRQZ8U7y$gv|eXraDVr#TX@d;(3Q&6H}J-5r22Z$-fzP8Yv`iH6|Hy#ORe^F zMaR#_@lllB%qf=ZP9@ZObxaVi#Y4ZE(|Dove((p`xdwG_?f+^Yb)~8GXszEh9QQ-+ z&+(jc>k4X@CiuN~s`oZ203 zGD&KETaVb+-NSaAv-~>DTj63O);zCN{_DQ!vMGJFRV!>8)>^EY%<~}5q+cuz?j_{K z1#KM$o7E%s^*{7+f$6Oc{U;O3MrY0CS-&{>M9fLkmmHVx2ivBzJYXC3i2ab!d43At zUX;YLZQ|qm`PuYrA4ETzIyeMTVSLuM7tWE|_Sd7FFACy? z!SLkFo(wjKkDI^csuO!dEI>Y$JE7CO+*Oyx@-9*Ol(+3T&0pin;{KX&ZAZv;*M_p1 z`fzBoNX@R$F0=jS3faE1quSVhRHO7WZHsLCc+hS@n|f%&HA~GG2Jt5CNb);zyp8o^Jz1aLmh}IvSQ3=-M{U;s zw^>=XD}2ytmJUcNj?%jOo7({alQE&2~+*^6zZNLR5lg^J6 zzvPn_I4PdT@LA-4o>w&W%ZFS;dwgyIc*sThnOFz$d}j`2;RiW)N%@)Ds4G9unX~*B zT*Ex2Pp!2!FX{8aE!PM7)H(^R9VzC&6Y#NrL!&-1ZJ%t9T<7Og>ji23^E%rtQyc6n zo+s=D@6ap1#WieO9MQY9PeGw#+y)(Foo`1DWsv@(-ml|le1rGvw2y~A=DFy+8z3wb ztnNu$Zzc84`~&cP(k(Tcwe|wOP{?{?B7B(I561m5SFh`p>d|9_>y>o%6Z;PBt;olV zfHuF_-VJ=HAL?H4r`PNF^{sQ@A!VMp{jh|7`!P6Q5pZ(9wO`n3m{RmkNMI!X=lTV| zzVslx4{9#{r&eniUCc9hx!Ym$?L7&FqUjr6ztDbW0wZ!(%KdJYkLz0Xo0)Tom3+0c z{h6NI&%^np3BBTNtQ}F#BD^ogQcBLxBrqapO&-02@Sk5BJy2v83_=&}F{XPJ&aMAu zf#SKgE>h`kZDe&E_OXj0;O4H^VWe&n{7tLp!vepZ`nE58|Ps6yJve9oH-seagp`zCQ3g z;EIo+9LjdA(o*d&2lbK66Q3@T<)Q%pD^~v39=$8VC$HoASk4o*vrduPt!%iCT62JJ zJ?Avw?;4}6{2$iq!IqAx}&#-~eTJL>>kN1I%ivU)~4 zBSex!4;z>t?tnLutud$v&=k3F%~J7~EbbTn(6`6@?T2%$3;s?%f7XX}psc0>{L!Wc zm>=#K4!qo;k617JC|zE&RQ!E!r|3&L9`8UK=s>wtLj2J&rw^Ap#8^ZxRd~LGD|&n# zadwn5$MFBK&&n|~ij`qJ-YV_28qm|Qi3e5ev}3Fz();?S1CH|ea)^OCYz!dfGE#0i zA!B)IC(|zl@M*n#3UEQ+E#;_}3q>z$_+R+ueN%4(D-|2AS5qHdUL|@t zk@HmGIo~c45AC4D?BHa#Jk|%xU5xEqEo<~>FUw(R{Fbw%xV|APQwQKIWe;^T61{v= zuhJfdEkn8Gj`?Z1ug7&O=aGm#+#+({z-z)sx!HfFvL^f9p<*8u0uF*d!f z&&>pPb@Ix812A7!7{R0EPl3#QmQW;*<-SYHb%2hg?3dk6iQG?GK6vU_FXzlp%Y8rc ztei*UGPw4b$o&IeGr6@LgmT0Fr$TNq{EkQ(eoFrD0MA1)R>hN*`d(&t+vLgqSYIsv zb8J6Sm_Yu*`eOMfusz(bd|`d54qOM|EM=c{M<)96{Sozr^Nzb5^W*m8fhZ#rbehWN zdvO`>$LXud_*~i_VgSBBcNoSe_3xq7dloO!|CN{@{<}hVpe*Yd{c$(GHOsa6oN@8* z2$e#y9lQZvh{ICRm}FcpbpIvu3eiD7#JCgXiq_@jzl-qWLEylV3C^;V#~43MLGp3z z04_L{RQ@p73-fs-4m7TGK76j^oN6Zosa#?8a*{#9Qm%AW8a^1Kq?zqS$)D&L!V6wYn@%=#Zz3pvAt zSt;CCPrbit7-9g?A9N$}D94$8y*kHw!F(Tb;_>aUX$k&evv3~95M3J{XAavlff0MJ z#CYpKP@91-&+zz?93uL75++5ZyeJs zl>SAp=aeS5=>UZG1&t4ErKB;FbOjeFyvg$Ah?%aKjLvF|n+s4{*qfd*K@p zSCS8ouYB(={q(Tg0n2SA>Y)daKXsX17P-s>tlzoxPW*=t;`n2a>DcCC8?96}$DZ^T zUE?x4cHnu>Upsg9>)6J*%x*)R+w(~9^d*;Jj5GW5cqSCrC%lbsM%1~?l&6%NMtsX? zyQ2YrIq;zWI0rUy_Hlqe(PhT}(`B|l40(S6{GVNB;w+c>2>i~uUv`74#p*@I`mDzf^6TYRg&c;mnl?}`9F^IajPcX3Gj01X_1AIRpkKr_ zOGTvtU%bY48>g(b(_Z-4QhkSY*Rwe8igM^P5`Vhqy&hjgDo(w+_#(y7 zwMLJ9ojCrdyid?S`OWta*_#IXdU0=KC+O%I=mxgX^#b$*JMsFt|Bk}?8416|B=fXO z{_Xo4eZoJ~OAq3UNw^ulGoHP>1UjKly3a*t;N552KjESaCc`(NAHrO1bTaf%Jd@hk zbcz0e&&5{3??s(1v)AMJ*2^i*J+#;rZ8O1T&OF9t?%vg9UOT!l%?N7^E`To?j_eEW zbeVbQI=4RSie_HtGRNHSGXFK%W&VaT-7gh}r$69x!H`*=x8*azv=PozuW)5q=2JhC zPd(t--IKRLeht1wW6$Ms9$WIEE2L-|+g7D>m_LZ;u_fPp5DN{T;;Mh+YIPpFw%OC35cLx4lAqUzv`Iq~DJ|6Jjh1c0<`Hti89TL35cL%KW zoJL_AyAR0zF-T#*JbbSNM(9;Z44~gp=d&)e@P7d!;Q8QZJ<9G8&^rMC4@(eNzZJ}@ z5Ac1z;fEwJLa!3|`L%ohBpKfca)8^LScTq!0lkHQU7FCVd1}LP$MD4ojL2Oc)7uTw zNn|f{*jK}jn1-K-4R-8PZMEG`q8OLCq+g^a*@JXdXI5zrT(!%`Sme98PRH+up6ER$AqvLY$Mn5?G>&}gU zpBw%Q98bdW9UMEcp^2dQV!7eDoL(EbUwU~ZxAWV5IBV4$vm-t>zNah=-y zP^_Pn-K|S-i(V?Mwilz$kM}jHf(l>Ihw#O|`?uI=E0*wmM~sM|Kj4(-A@l8zeDS$6 zT3XB<%CjAoB=(l#@419Vs@|4@Pd<6fcad_{G3i1d!~bOby@m6avGp-W6TYX1o&e?U z#cl-n;4jT1Tgg~#e10t7;+WSZPfl4&*(kevFX2JTmzuwtgVEW1434iBTmdCBSJAdF2Y+&Ev4kaeE|=XC(k_e$CBuG zIw5~2#uS~iP#*286Sms<6t;7*eG%KShI}&|L{83M+^5J#psyZrctWV-vXnlz_cefc!(A1OMp9!)7aYZ4f_?%UPgXjNwM zLdW`lVimnwO$;O9GRUM`LUO z5P5D6=-dIAdleV=BZlS4W1cTX=i3QPN}l**dMlyBy@fd(D@l)ei_iYJde(HnwO%3v7LuW(OH1{3F$l<(D@Bu(C_=y8Maf_ zk9ocno!=)ga^3fTT=Tex@kKj;uZ!EybMSMX2##Yf%Bvsq2q`*$O<+>;#G@VPtp{!7 zPoRZ1)CoHqfx7C1f9pgWVt++j9PvCh*vbgVy{VJLInSU_hyV9e(*e_VHp&NhYoQ78Iu z4<^e`LuhJS{l}D$5-|Iw8dl-w;b$q|4nMmp&C*iK_PjseVa#l`*j^8-0bEFL9) zVLLe?fl1Lh1or~x2l_%B64O}?m`?_Dz8BCb#{20D_|?wS6PP?Yv%wjnBeSzp0y<{{ z<}(4Em-6To@T;BYCon?C&x0HUJF~t*>IZR1EYGEYxhA1AVR$ePLU{`K)y}IDn3Ozu z>-p$IV>({|%uNBExq0$<{}Da4rX@Y;hk?M2Xf_{~KfWZ`yQ#=agthpZV z+q&09XO6>q{&z6FG#-<)u*d2~ybsvgQ9?O=R&z7nLHKi&f6PUn#yf-;LSIc-Z#WJ( zYewMn#}B5<=l>Hqp97%3OQm#ZgKdwD&;kA6E$ z6Y-8v{*UpCR@BZo!^(AIT^WVoeWNb%IeE|hWNltXXQ||woW7jW>_T77)QNuGr$6yN z73wC&U#mGRJMzaoFK()zq1T8<=B0H;jL(|!9mGdr4tF_b4p+os5g|eE+Us!XXM}Jjj{Q0+;;gax0 zp0>ueQ@|H|h46)ImTE8rh}W$O-T9i+75f!q#6#dHbZKYQ3*YF@d*~~TE@@IHdj)h? z8(mzpRP&|0^^jfND1&mT1Y7S~-iJ$FNAbGU2cHMyEc0^I0>3F6${ntc>ij^~M^R(K zZ#A%d4BOI#g0)Zmy6CFBawnqfVl6A>GN5a3R!iZ7++D||%IW*zj9;m5tz)5Y)az^9 zOj!pd`4&5fJ>a}+nq$7KgJQlQ#ytm~F5?v!oxUE|vEd20Zp06}W8<6ox)B@ALx07X zg7-XjXW_U#TnpNt#fBqOdnS2)PUMGwmV6$;3)bw57mDF;w0s_c1MA7s`SAM!&m(XQ zyErc&{lDb%2pq%LJYaKS!kKFg(_IFPo|IHzppGUi{ zyz->p z$?=OAyjwR1*CAuq&#>LE^tztH`O|vNed+5#e3e{I+0!W48DOHWPQ&+`1mCFPc+Ksk z1hAsgiKnOD-$AKnRY=_gUg(9g(Su+e9HOncsuRN`h#(R$?BM-#)0RHBpZDzaZVyR`EA5bLd#18nKO0Jb$1iynmmMO*$oJ=F<3l5%UPI9H% zFOt7Ac?onG$DNC9uFIV6<2YC>YyL#UE60;7 z@X<7tVO3X!#0n$l&(MDaLK3)YU^xQYa=9csi3gIu>2io+MxLOVgO)oT<$^deK$qyJ zN3W8;rOX9xdZHibgbDg{BX5*b=4;$Q{ar8DRDU<)Ki1hvKHIt1-z7;oEscFKuB{dQ zUCwKw2d*Pu0nPD#D&OM_-XR~>;d|8u`nmw{SI5|NJd^xQ^u==5VY^Z@`{^rZcBrz2 z-)zkM#Enn%0NI#mM^i9X9NFWTpXlKSnlE~0mb$MA2RY@DXQgPP0o3iD)#`&ep~Yg)CXi>qHnTCKc@cOuKT^;uo6WyZH?WEOlb-^LyAO?}94G$A%^ z61yu!oHQM=5PuUCzg)LCXw+zl8KW*7<$LL^1?1FweY|tE59I47EBm!kU9g4w75}Iy z`2W#FmWrM5HgP1OTLylnVJ15Fi$ix6V&zv2ejRA z97nzE9?(Ak|35*Bnrfb~_d3w84MhKt1V-pLrSy@ezZ<9@2z_v61@t5G9~jU-3b>Yg z>ag_>ToeC^{0 z)3pVq__#QM*`QwbA4D(kqjCFL3!K)M2_Kgf(98C?n=q{aKVM8>H>elSPrhDy;FoT} zw`rzf+XLTF{X6{AT37VB<8k~tj))a{&ccQ$XU#%vE3vhc(@m4aPOb~|@mbLlfXoufX5rqP80fh zoj8Iu#bWz4#RAc~b4>jRaQsN%uSI*AjlbM@d;K^*9Q? z)7J~SFgLm?;OBGN@Axayjw9%Y-zo)1AwQ$x?*SWq092teqM9ZYGeOaz-~s5Phk4BBU%Zc z^qhqrm;Ekhxp=lWJb#`IldAADCg5i(aPOM%gO}d5Njd6gfc|jwjtNY^{%~Kcdt!t# z02e|ZJ}s^v^v$E^CG_z=VeJnGqmQ|G4?}#eE~p<*pYxaeZUJM#-AwL10=f%;V_87= zU|>O#dMJ_hyA5Kt)b~_Ie=LFNCpTvr=MN%x584UZ?P%D-DEJZDDBI2GgK*pyTUWx% z<~S3*gI28fRcR`CCa)04iKt4WKd;cAU z=X)nTrf0#9klf>+w69|PpNxE@ z6dw;MuE{Sc9lSA(@SFuaS>|p0oBjO}eTdlgj{xW8e;nuZ36?Uu*n8LLPX<_5J{tWE zVYWEeXj-Hk>Z5!1t%ck~OM8oHD^8^;eu@6QS|x!2^>?~JMaOb6vv*!YYI z?{)C&5=U#f(a!{Qp`+1n2XrqF{MSHozNRpf9|XRK0ox2Z{;lTxe(EAsjUB8j(Q(4G3M#DR{k)L5wk`C7^r# zhU<9@VgbTTe$?b2I)MBG@ZjYiQxotp3^>One3Z4?{hq<(AE_{t*A64c0Oh<{vVUjt=eWI3Sf%lCW5CB9zT)}{@>#m zfWECRHhF&((0>fDzYXZ`umSphoicoZpAR4NRDwh3S7IhlPZ(!=u!F1emHF4!;cBj?g@j(Ikq4_`Fqt%QEtJd4lK#xc(2 z{br75(sbTPU<%NY8WK5yBbM`BJgbli=qwKCWP}PvcWF9f@!!J;o$^?(DiJ6N9mEoz z&RDd`u|onnpA6#I3}l(APhy068(W>g5FehI_t7g?_3#<(1rpns4vC%R##RJ$hvI)Q z7HhjVcrWMxdK`=S91pVrx~cXvwl$y&C5@dD$oo`4cOboDor#ALy0x)hyJa0yD6wyE zly`hUcPjp)5BI6tzpQ>l|*rHw0D=Z*0Pqx2O z*eAU#XR2VMOsRUElfV|FXZACea|zZjj-3w}jMsg_du_{kZsU7TZCZ-XfeB1s4uvaX zeR|2#^|yaO?-PJMl@v6!UvB<~dMtrlwAXFj)D%733-B;jfBo&%Q)UiQUk_j^@ZO5w zy6Bv(u|0t8+b*-u@i^l9U~BN5uybZ$dkEVa7oB|swuq3MCP}>>5y*}Hf9wSbZoKcc zmj6V~4b|&83G4>t5AC-np#NFm_-a7^mB4;WVyjBm^A!n<(5;K>Iczsx^Fo<=pNR3p z_`BdUe~IUD{)Kb2o$;T-`FDX2@!#f5qIb}U?fX{H#JJt3j+$WnH;}#EnZTslkw!R4 zyZvTB2QkE0j2C_CxWw8K{0JzHN6Xy?UVl5Z-R;nJx0QL_Y4AR_!YO6%KTL2Hr0?4? zVu@Hz#1vyOKKH5PTSh;JE0qJ#MplaMx&%jFyY`Z&+x0I3`iLpU{>4+rtx$Xfg8u|h z6=dGV?STCbkehc@cR(vY5YngV=Mo$P+PUY%w{z%s>>mO?{)YdsIiH5zWOn|)sfX7S zTpQ#kYDv|ClcN{BaXKRjj+c!tAma*E*zK>;QY<^I+SG zWlWK_F&*~7wlWPzt_WaD(YC_lgtXm^gP@*9LB6cLj2j*BwH07?4*2?!@r5>kk=aJ` z6tUV2=Qdr4cV#`*|1_hQf19hd#EG*25z;LVZn< zmNXUl+hfxn7dKci=zx{s>~f zoiE3Rer;kg{QG6tZY1SRlgQ^d#51ve7UBQu1UJ^n*YaOqFLs;Cj+Q4hHmIkdy^lK~ z;1hAxxS*f!+Rpg=zu46|3C=;>nLmgo5H@XNpOqZSI6Ut z+4-Xhsn@FlzHR{Q?Vc;#LwUyLg?n+0?=9K_W4Xd}?Bio9I!fl($>W?u6>oYAZu^C)>T$lefqOkbX{d#HUIB9=eC*mUh)#~ zfAX2kyj#xs-gD1Ax6I5P$CK-`t2eF+Yb@+9Fn+S_;c4)A!=S=5VpH`zXfwhFL2oG| zQ(5r7bMU3@G58<4kGB_%-?R*k(~P?fN;CG;UIXos+U<)T&VS+e7Y^spi5|`!RlgrQ z87<%p>+=H-=Qr?Q4yGEqNaNg|dj8Sz;-Wk=PMJ6Cvk3TqkneD-=j{`XLGSC0* zp!&}2?qnpN^u-3uBj=1Hi-U?}uHv~ae3o_Ow9i?5AksQ_gARrY9}L!{!Cxu>Uj;?82t8doQEHT z<7*rkcT?X-{q(O*tfvaE{tibORynD|H|Y99Jws#0Pr3E1NQr!ZoOzVv)q+04_O!&q zb3Ayg^YA>HA|7K0pCB*VIKA(Xxz_PwJc;bcl*i;J`^FsGw!`!A8~w7O;U8%`BK;(u z$A>tE^n>+(!>cKV{ARsd`dx38TKqqa1uc%Nkr(}`p}ofIaV_EK%Dt4-RhXAv?G2A( zGjDRdlHhRm3jQ=6wK)ES-;IW=8tF=nDAViG zF@%}t8O#$w1_4&yLvsJ&c)Zkw>%>hS*!<)CoGP4!2>?T(1=fU zd)bT-8PBIag0Zy}!HKm1BclbJ;dYJjgvI$CbQBnrnClGEIJaY5komLYsqH8EeIK%8 zj3W%55gm}Xr-$d}IQvP=D}nut=<0YS#i3gi>2Jg?9*$k{8_#1I%5JA|kY4D0$B{|y zWqEZ)d40PYk>Pl9cqhEwDo+jCyK1z)xEBtr%?H=?P{9@SK0;p=T>3rES$N(TYrdUU z;y7Ccr*^?H1jkJ{9>B2@0=JV`4}&~C3C?lq?bnYr}XR+mzd>ZoWkWr|32bI9JhONYuh0A4~~bfUvp2{N@lq?Yq|F#J=({J zhdjAw>H2Mro;Nxkq4LU@-<22R2QKepNWU4!bDrGSz4E5(=K-s<-jh5JIO1u?BT`-~ znalfxmisc&zlh_Xp4_jz^0wDd|WQ}oIg&b?LQR9L={~9r3x_ z@Emp8fCK4zZM$>{l5s=_eh$<;m&q|rF^y${B+MG3GvH~DgXnuNKL4>g%>=v)c`IG7 zZO2N&mA3C=q7p3sSvoKJXHDs+n(ty7{L^(Boi>C&hPcj}d;Bw|+`n;M)@mO4a>oDk ze?;~T$g0$7blOlkVukOFv9vRiw0-fe??DMq;U9U~wStr+aZ^|Kl9qR#>KjQ&@ zwiC|O{=CROSXp`;k)_kh{tAMK_&`tbTGEo>U($=ww(zn0^wmeG^y7Qs`^fN1A8%0V z6ZF@gU~Kf+M>sH6`!&dx^K9Xsb)=QjAx8BS({_I|bb#_vsjA-RG#&n-c9Q)aOg&zt zc_6LOFF1+jxP5d@XfIahl!x@Oc2|`?{VA2cbPtt2^evUv_fD18zXk{PB@tDGw-77xc%LXU0Vqj zKl*K=tOw8d(~Bf1?5|`L5w2JC-$YrT${GK6!InDV{^Li9%R<`h47y&MUM4}pzoTtO zR)Q&Cwsve;|Ir!H8)QW4HM@hvQQGVa=$iG(h?3T;mSp8{xsg9`a<+N(nvMRN_Nk6`<}plX#47TW^qt`?_^th9_C%dVr=|L}A$mi%Z|tkdYUDU~PU z_p;B^JQi9xJ$8+jNB8L_t+YdFQH0kU#~H0z+oyR+_6i)ZGwQRm;9n_cR=!G~)kURM z{D|X2l~&nJshV<&VTWB`QQ8ZMg`ju>bUm+W5h1RCe)K_|(D*lJ|v0N>l$I5?35@z40GvMi?52Akm zNu5TgCA$vwE1hh=VkKDquj#y-E&slc&_1frx%F!=>ohuTsC|BdIQlL+?d-)nz((-L zblw-_jQ_j76~+IyP7^a}Jikf&9eyjp;5RwQMl|)qr>&fwB0s&?Y3U=k4oUN+>@NTx zZEPg$iT1_}cGm0EF>U8t;ea1OI-Cdm8S#~RUTosO)A8GcS74swH}MGXaW3M1!ud+% zzf|8JF!2Z{{tZ`&j9^lje~yy;IH_#N3f6@4=fLszKpFXr_;zpU_qR0voQ@Jt`H2_y z9qd8ZMt?b-QO>&&*PTL@N?T90?!_a#3;bqIZ}9nmXM*b$`eMb0qcqpR3@reHl@lz#!r~F9%JjA2@(y^l!mFcNioF2aAN=3j+0z_N2$gntq8W6YLQ$Jy1+FXL%IkmX;7{Frm( zpzervc{#!#eCd6_oES%|&aXz|!I#VT1kwO&m->kOMlJsZ#Lqh-F_fFy7xLtsEob7<=P&v>0uz6|#8X@ju=IIN z$NTc(`#An4EnnW_Hf!=`?J$I(DW>HkPtFD$I1}}~Fw*{Sm3WHFxgPPiN8)eC1pGC` z(K&|B=?{_kyL3FxIpDSHbCLLmC0>Du$FAS&c)xrPP%Pq+*3+*kU-+H4sD3vi-+i2& z|MlBDqTeT=hj%4DCj))d#0b7;5dW2quR{E9BlhtE;+u4Q4&Em!jI{rkU_V`Td>!KN zinL$oj{FxwAdt(3hFT{^W{OXARLpb>d&fkbf6IVp|$0R@PDL_7S(D{-4 zA0Yn>*#FsxFT;JzzeVJu9@zhVf%qca-&`GuM>w?)mJb;jLnHFHN`8)qtc(vL`M*Pc zv|o;2jWNV^k@mX{`QhJ2B0w z?~Hh08QL}MzsN6;{~FmH@xX%kFn{DD|H1s%fYg6Je!FdD5rXzH_^ySZ$cuLFVO7y&gz7uZCg*o0xtVJ8boKMC}K3}~~FcN8*Z*%wc zW4b(Odn4x?uE6_N0(~u!_>oAPgs(;`@oYb2w?{a>In@#ST@Crv{?T?v_Cp)|Iueg? zZl7xqkG6pLaQj3!0!IJzxY(5DXr%hWuGR} z5$(A~zhn(5QyjQq&4$G3sI(XXb>xUX;{?; ze+nf+{+P!9E%ITVuNHG%rjDx12(pi@`nNtcZNSACYpr4z%h}?Oz&gw#8&ilUrKl&F z4I8EFaeO`sR=p5m#~|%;SoR9om3$e3!ViQcFGWgN7U3cq30ywq_E23eQJr~zZP=x( z|E%CM?TvjXEH%z9bNh*2sLZT)>8Ax1J?}&N?$HdR3s@+JC=6!DQyBYmOFA^qc70)vt5d1uX!?2TIaJg#{z1nYT$SH9)QyV@(?wfebm zU(fVTY9c)!%X!mYLt1XXX)G7o*Y&y5lXEiCp5^3pE5b9EIvp(hShP|4#u9x6i~7F| zv@rUL3$=TuPRLMn^Rc zdX7-`(yoK1R#Lw<>uVK!dyfjfL|Yp30*;4N@WsRUoq+?-x_((<(Czp$>*H!q9}l5S zPdhn7cK7yEP4d0S+|4de8}v{OYdMl}V7=M4U+5wCT@S|%8pmA-+f(~B+H2?-*qv#a zt=4|{{fOLuI+^T$`k>v$*XLaLg9g+p?Pg3*>qyj4 zgw|?})^vOP+2J0w3wZT)xbeNE-t>$8MSzj5CSPx(y1P6n%V({L{85<68NH3#4ZL`O zB!Y%st>u&6hFHC&VtI+m8+spS)Lu>&x0}8R^+sclxv)1k8eoePeAI464fF7i!|xed zNjMGbr`I*e?gC?V+P}4zb=FaNE>Ej)XdRL?#xcReQ3RfcQ;g8C4H`#Sk1g3>va*Nu zSm$Ih{#~se>3tshR_TGTI(n;zR*Grgar%P0ZM%dJemM9Ry32#F&6|R2;LpQ&ZPL%U zUWD^AI5y(C2f~lih1!89)?c-!za=QsY9|0|fpY(Z>aiXAb&UInLhayam#39_uric;lZ@9VNNO~Ncf*zBX8(NIuzsJc+ z2|s;5oZ3j#uiWY3-vpk|ktCtLsv>&CT!JX1M~uHro>t+A>T$D&<3;d%pGEP%yQToMJS5=ID2EeLK$A;8+hoeu4_V8m`pXKe;mOh$|kakY7Px zNaWY!X!IvWXDQXADPN=>NAKa)1Nwo{=&KBkcxF55!N?Oo5Z4|?Pjj*uf1-Yt#wiW( zB-C@$jE7eBJ1Gm7(mY9>+>d2*+_QPb+bR z^|;EzaXNTjZct!tzO8ypRPLxAFL1ILf4>C&f>zQBVS}dsjA)YexZcBm6?op_@aL3x z-@$2z(M}>gUhnd>8i&>-cfjd6y_ z(<&U+Dm4!D0al-{gXgCnj@J6g}z0lWP8Zk4W-<~Gf9y!8d@xAP^&_mg9A|I_42S-#h< z$MpB)?*(4vMmok(H!!a6b zl*eJ;g5RmM_eQC-cdt_IR?om52Afnc=>J?&_N6WtpAw#v@k7F&8PfqNWo7Z}r9~p!D7bLUs za+K>O$Z_kDbVs5Ao`Wpkc#=wZkbR5~Vf|s*I;_c$3T11{_YGSjVvS3B8R$-)d;wB#q-%gzTm5v2FT{ zXdr=Ju@+!tNBR|CuVw^C>*U4IJbkasjucq04|(N5pFakDw4reuL-PRIBa|srzgP<} zd0L4h+|FO{aJ&Vc=xYs)&rfL{kXpH;{o2POtMN9pukd`==SOp?a*Y1zo2zr6K~Iaw zNB!Fe9{zvBCJlI;$8Xg0!L9fanAI-i`vkxBJb%nK$KM$Fj}vflyLp9dAUjEr(=7Ftj2q^J`=Zh`O+?p=VZNxuIi0e zo2cJA34G4PfqBiWXR%grKGq7(R%%=Y4$NJDO(Ok`?ds`oB!25L3CW#szvpiPSJi%f zj)ehGp2j=cqzCJ7#*XrEOb1W&r-mlxd-vn^Ks_d22lnf+S-mH^Pdyg%b0d@Oa<^vv zx2#?y8czZ=>$S`)&phy6XiB5h#0S0aGzMl?f_z>(8GC@s(?&eD#V{VMIT(LFb}@K+ z^Y=+JG#=_7X*hl9BZIfZ|IZ9{>{nHU#{hozurBm z9ky7`gzX#ib0aG$ZhCH_7`+~SE11r{-k$JqzXD!wd$_+0>CJYDq4xZS%hL+^PH(Sy z@-gQhi+<10^oO+olc$w9!tM4ahhy9>;5o=hQ)*A~l}sJ)I` z;AADiO;`qf$V#o#2Gz8es-LR3DqC&1(-ao)I-S6k`62m)YrJ@ zjWj&#e{o8FHZ{FR{Ve)vBa897`!tRpjgaVxXS%yUcMWCrAnb4d>fwJ0JpbkJ&+Osd zr%5t?ANLQJr`0%ozYF`ZdVCK&y?%e@B^n2{2YOztdA~b{OPsviVgLK3lg0Co0d_uQ z^hnRv)!0?=M)=|e9yw7fvAQI!v0Z-Vl>`0%_>NAW1--oQ#QWp+7}8))Py5=Dv+?s# z?l$4FR;qD%!}{;> znI4Ww;JKg3qW`nrPH7&Wa=8=v@$p4YW;5lO1wGDAs!#awFMr0k_ca_(;2QQi7Ircg zd;Wgi3w|7Z?8MnB*orla@rU3jKsegV_#JeAg6p%u)8j$ly~OFUaDJpdp=Y9yU17b! zho47GvYt}b~hU%#6lkJ zRN4Mf-UPF&>f%4g|K2OlpTYYvQyQg;5A*yw`5labh(dPypv%)HJQ06B{s9jU=KSNm ze!KXyl>B*X^bqgQ;WLa(F3&*QZ~AWk4n;VXi#-+-LKxW+TtUpG+cc092@(a#utPQY5kgvm}$ z>9LXe)gyMlekbhV^0ZkWrhcj4I}rUG`n55Opqpbb2J8*pybRskhBM|9^xjDx(oEVP z&l6yNGisf~n|m|zUyOSiZ-PfZ+{=KE9f#jr@5THF{&y0_JfrqTcz^Kdir?s?Mt67l zNgt$htB)D@-RR;=e`>XTrD6wR`>Jv>o6%=tKTE>`&5UgyhE$?n~EO7`d#g0azEt@V^$Gj8I4%QE^sk00I;S*0OSRl#J>KAC zF@E>lm(S1GCH3cWx5{c!`tJ$XdiehYo_{gum8w|ptrw6UM@wADKJRgPT8TqzQRBGN z!?6iG(bpNO?2^)YL2Bhjj~&AQoRigz9aQsNm)5oEec6a6o8ULUM!zuuwlLusTw@M2 z5q^B)2>3plkKi}vXTjHZn-cBVGq(qfb*vqJ1RUQw8I|k3_K@Vh{DjY4o>uF@Zx5e% zIDUW*c6K2r*U@%`My!(E;>;BflH+K1KWO7J|(NK>kIa;x>( zY`GKabB&YPOgW&mLqEQiS+rhSB@BX zenBM=Y8dG0Gf96w@k5uVl{museBZ9V=fqt}So z1?J~QX3}y*tv;$xjL$yDH#I(Aiuvm!IIhMuS~b0kpNskZ=jg9TO~5e>*O;T_V*Iot ziQC8joE|3)K$(U+39~1M>NBCgnS^<<$|`Pd@tONyj+(b9PVZzJ814Oys909q42+ZufqL<5$A7lR{{X_JVQ#nd~3q zdwQ31)HbZo0P?6$acsdg+ViN*IPS!C7S30=^6aQ9t~aa~*?KzxWjWJvpL3P>eg)N= zZUKJ(FbV4vCQpjx58M4op8Rvc>nbOIZa*!5Gs5V*s)^Svo7XceJ%sl%Cxh|2=Y1R> z^VFZbPh@M1^>wj__j>U9qlfpB(DOcHOiW1r?_Hjh-`g$F_Fb_5~Z$?Ufp~Z40^b6>pjV#9P{DR{r_j2eRcG^|W`33T)?|Qhu#P4ke zwNmpQ_S$8VdDNzWm_kcaV!kwN9h&aCwOCGC6W_{_o@vG?vjrNh2D4rdvDH&~cz-#hgFt~5?a z^88L-wab%&Tt8B zznpirlfnLjo@+WDyTUc{j-5xsuIOGv1D>*x-8ku~zee;xRnTE*R|M#R^oMbb#g9He z55B?Bf!UG!-wEcuc~`nTZNg)+EVHe^FF8aGYS1?KGp&#Pva@A#$hd!#wGup1U_{*@UHwn zt8hLM2fjIUlGi^w&F* zs6*qw^U*iwV|;1o&<{0^TM-g{?>c_nEj8()g*ZQxkFkJ}ouoW;M_GDF^4?UYke7iT zs630k@*I!f=r0W|xG)91qFtCgt;7-5E82tAE9U?C*BKN_Ei})?w?(hbYaw2*8=UMU z<&o#^%6W`S&lHnpOZ=XZ^@_2EEzeEhd6!q7&7NM9tb^tM!R2Wsj<8;D_Hg_eJfCqm z4lB?&Qf>G0b_I>?k zpFPRCRQ@Y2PpfcPE$VjiqKD%h@I?P==?6a17x#R8eGbbwrJCG;OY43PXlWdO| z2U&ak9z6eN&?|NLCeI%I=lefFn)WiUpNvbBhxu)D{3h>&cLaBH{1(m7{K(c4_1n&l ze7siUP5&R-`DBa*3}!vgrl&`$p*PwejNXHjy%y#ojP|ywbQ-1dPwwfJKLfwBUHOms zPiUT>a9lBYPnRcU`C3CPe-BSSBup-F@{e7qq{JXRWX zO0DkZt%K0>T?yu=lQC~Hc~X$enqj#|dU{z69_Vuotv=UV2ch>x$$lm!wIHeWxYC99 zQ=fdglcD`^RKK+MCw)(czMOL?z9T^25b(U1wxcy3?hC;4DuY_7^FMG+1YILqqRKRvu_{?wx%`6 zi}l>e@8Vr*tm{mv#r3l|{(x)v!zu9fQ^?W(O2l>tS*9PF{4`{ve>QYN;C(kI$^HhD zUvPO+Du1-zP+lwl4eNx} z)Ro2iC3tO^={HVTQFIGP0|5Lg;`6sSymA(>{GfrPqIyxDQ zw^suD-Us7PT8;AFu_IJuUu44u@04Eny}O6^%g}o1SQF#d*OY!PPm1!b##lbuk(ECb zylkx~b<*Ny*Gr>*fu6CBFDEn>!kg=4kbHRVC?E2xAzd*}j8`nqJn+Cg-Ox!Ndi_q4 z_4g^$T%HuP{s~yLa{~2ok7zGN2>|=%GX?z8^QYpW+W~7HbQ9ohjpN!w<8!1YiazLxv zeOE9 zJZH)VmnUWUT4$`U%RKqN123$%8#?uZX79fl`);Y6p>gMwJDiL-ytL{g`l2-oT4UQM zPG5iY@csq7o-k;YS~IofdCZheE>FtxeSJOT$$u8S-ty!>n4-R#FK1X^XrD#~kN^64 z_En8ug)}DX@x{2GM0c2Jm0rHQ=G)oJ9_|=;VvXL=+M`12^NHK#hb~X6arpYf_`Hn%W8||vxc<8e{Saw)7S@62JC+3)*mW9>941vuP`zguj`KtAJGfVf>!$4fj?dYn}L5JA2${A{i#E60RI%|Z0g}S_Qv-e zPeDI*Bo53gCzmqtBD;($3FAMcYV@!A( zn7Y{INm0Jl7|VxUSoz0*mp9Kpvtz65J8?Oq_Pxf*Xu1n!-2>i}^g`dcU4ePCWk%cHWcLi>CBU%uKA+F~mP9^X&i>#*qWvNR`2 z-p7zHs?a`7v=>J$?k3r_D=HD&7wXuS_pgwF`KqCFdSUeur0XN$d~51cF3)!2vNb_| za?i(b3+@9PFXDUVu!_tsIF{h>{FTAEqtC3D$349O$JC#klyk1udbt&0^!3s3^Q_xf zFVXh+t&^RCy~o!(J?mY9kvFaChVF9d`v2OMb6TL(wC=8)=MD|E$AtaCG>lhFo*jbE zT7lr3mgeEZ+HtBJUawmv_2+y^?~{SwD|^|Qs+In1M4HPp5p6cuEWr@ z8CV8DxANubBJ@y)z&9U`UZ}|1>!}EBp_K1ediOY}6s-T*Uil6M@8uLDbn6S=^H53F z^QSFxdD?_0s&9-rjDMbn{(stfgGQ-8)M-4%56OKZdE?6OliH$@h##7Ex|7X*e)ksj zO!qKp-YWaR$+zI+#skyVc;!RiJMB8Je6L`aS`ha?Nxs81?Q)lAyKqJIj?W=K--sw4!u>WsK+s)}E-oEc~vUUHODu0^ylK$f~&vt&NSH8`V@pn@?rEZIP z{XXe^yu|tAk!er5Jll!OYMybS-?w^y6*B(oaQ*R!X8Yak(@WIe-*d9L9S=;&-su@6 z+EF94w?B<%ra|A+b8rk$X%Cm;n4r@3IUC2-IPOwupWTS#LKTcESHXoChwVsWy}sk= z^%vm4ywlJhw?_6!$(ImFGuqKYHpn&_@%6^gGJs zX(OIcJ0e@N`o&_;^m>s=|NnGqv-{DfqThHuMB2~vawn6^({jH|e$hN(9@kGy$1?}E zJm~YMqi;5JN4rSBtaTsK?|v>%oA6le>iVAN;X$829rId4cdXNR$bRGZwM<37Q9Z=< z3)3+cFfzG3sre`B4`@}CR+6ob*?w1eduZ4|1eSFLi#<+-#?t; z;lZ4L`fVPb^PAmADHZ)D(nHuk+~8!U*uNEWPfPbS>oDe_FAr7m^P6@Bg!O!_S1#%k z9&zQmtEboR24*+Eh@ZI6<=IYL)}k5L-5xIV!P7tWa9y=s{ciJmiTaI~oNO*%%i~Pq zZ=UgzSrvH_t99sa4S2$TP@gmH9h_lX(_!z^FvgpPxL=!Czkl=e`xWGS>j`)7;f-^X zyazb_-!9K~>BZK%_G4Qet{DOLj^5R2y>bo2ZG_`fwyVELq=$I@ zPH{3@QJ!c&#GqNf7{i$Uct#m`&vE6scVbAt3D=EgRJ%NF!V}dm)&(sdtohG4%ER;E zcI!8)hj{&Bo!-dg@(gNmJW2KD@5ErgNWuDD;FV_;c&~Nkxo;}I0s(4noqWdeF3)!0 zVJ$PBV?8|U!25O&&*K^o&4-7#dOn;~4~d=!nSrr@k=?A_(4AnpUnzb4-nfe)PX!-^ z`*KX&FTgKPN8dLc{W7&t@*C5z<}z)zE8nkm#d^KS(<^Yy*yN=B`53PqC0TEpalgyc zCVfQP(Y+p?$H5!E)X<;*+lF@3d_BasBlQ19W~<6Wt4#E^jNk85Kj8JdGv3DU&rE5Q zy8lE^ze(;l&3NDCX%n8PesO=r`l+v#n%U9A)1>j3c0}uW(fdn@N4HTehqa;mKEHpP z39%%*@hLsN^wxO{qGroW`+>{T7W6i6f~Wapd@%#}wrzQThRlA3yHXFB_c=d7SbKRM zU}kqo(}*!>o8(9IJ+q6GKNDVa=2$0xV}2X#x%qO(+4D@S1sIuJo@DC`j<4*=C~K$o zTZV+1{Kd?@yz*e4JG00u&qI-QhJ1+&)jQS#OrAF4u^MJPkYVa~W;u8-b9nwTvkmJE zE$IOo4wVOM0Y)a5C)qqWo-fVOLSskj4@kc=F}I!x|4+6<_FI7dpa8!MUdHh#zO%3& zjxtxy9d*U}gdD5SmB4VJj1dMUO10;P^adv1>Qs>8j@7jcWU0r?lH^mSNcUT~gLOOWq4ljQOR z^>G=>=B)!fSl)(pfR^nbv<@)yMklkC`ZRk3+dhfQgZmq{Ja>Zk!>;5H{w-3!3D&V@ zV*YRPv>A`7U-Bmyb67lo#qZZ0o`+`d5dB8=5Y{hj!pP+EBwHtpuQz()*Xou~vwolV z$^%=SNqvi^hu-k|`y}J3nK75AO?a$#)Og^{9lx#j2@f!u`3k&8OsY-2H(T4e83VKL1A1pxsZ)CTsT=JG9 zeW%RM3b|Zf|66b51?ZD&oj6T=u8GT{F)kdmPkDjsv^qfEs z3H5xslijNJYQ8`p(zMpw8u(iHkpgIv?0Xj0#b#lxZWf{ozQFN297r?cSR7annNfkm zYF&72&ws9O@VENC0rJo%8`_-a`LQJXkr&+T@@$u0qJ9izx46*f7d&TBDYf~$9pJ|j z*Gs$~!#vE$Zk0XLUU;-8K(u{f{A|mGv0=f#T)F<*Bhou2WJMg&ng)zOw z^B#C_Gg6iM>xLcBz7psmVf*^p$!?V$(M}G9SoH{LTI+2Kc%mKI@?qRP3+r2k9vh_X zh{j0X{U#Id>wQ+5%e!6pB6dz~-Qb(m12QoGGW6K*cYvKI)=!+B&l>Dxvt6}3kCbsz zHP%5Qx+lLve$19D2fy=8sg!y=+Z*R6c~5p0#w{jKoAGE}GamR>i)T7`H+p#P-mY59B-3M2E*Higwp{x_#^J79PfSo5^sBjb z@>v+Sm^|B!%h&gQ9MJR zMLdodm}lB^xChTT#2#r+qOd-oH>(fy`Lo_LD3p5opV}^7LRicCC`yO}^K!$J>$MAX zk>ouW*2|k7o{y0CJBR0)DuvlB$^+f;cY-sM^Flez+cOy|3$>IHSDWGX`z^~#du|Q* zZw3D}PEXyY*e%8lR!{%M`(ynmM(CMGkQ(ISGJCs5F_85{|4dp_FCkoo?O9gZyeGk* z>}e<9^7lz1x!5=Ff)j9H|K5M%dBZ%|Q{LUU9)j}~IL=hTmiMqP(XKc;;QD)n!C&ks zqIxTA=k!xJ2)}b2_h)l~8pO}Z({qN@vivf{*OjlMXxhYj%3_&m^Oiym)nB@8cU*sk z81I<+D@31PIFk?wJ$oHegYiJl|=%0xS@tpMD=qr_i zB2?i9y3+RH>|NI=;h++8em$-z#U z!&0dV?~^oz52Cym({&S$!uusu{%e0iZ}(9>kbl|vP}Ol5X@+=HeBs~l{bk4~yaT^u z8b5v$QJAKlyQy@CU-$Wp?^UF`P4!$8#rKTlEVSbT#)s8+N4j3j$h`sM4cZ}lG;nn~ zRP{431?PK^vk}K*9!|(6qA*Q8&++yAe-g?#KSsJus^{ZToapC?3jYs!M7@AJ{d$+K z3|T$WUF>9fMBhZZEPTVm2bn|^rm5!(z8<$pDC7GH>0VX6#zgUbBWVhCT8+;eT_A+o zYeyiHdKN9BuSlfFq5+UYy8PV33E4yxrm5Ft)zQ{>5$38ygtI6E={{DyRuRrMN|nN& zls~M}2A!bN_S#*gjW}MV<-DrW#-qRZwaIS}MSVpYVXYy{;d(6U=VP$-Nc)f_smG#G zC?D#wsJqh-m6?dbH1#^!tH&bfnuzr?0r`JYz21-1V^Nl*F=;ivkrFEZleCAi3G1;C zcuBSIGRG|6s$?B2Tm6GXk z9&$mKMfn~+$RwgLO}%q{J?<-^jBh^DO;EiriQ>chJ5iBNtMxcnLgjxFJ&sGL$0guJ zx~%qaLN*bFY3hBouSfLHM2vF<(v_>;uSan%k~Bp~Tf0A9lV2%XETQt>>ahU*Wimak zMK03iAs#-+B%&})z2Eiqc)El#zN?UKzUosH#dngVDbi^*zEcfDIw#TNc+q2C$UhgM z|1Bb29_!(hu?2@|zJ02FJz|Vcl!aDMEH&8YEVWappDVgZ(iB|*|GbW_S&x@UsQhO= zw!?U_&i+O}w^jN%@TT}8`1T^w<#`@H=!S^GH1)YqwR3*&b_r!Y-i354RG9 zQ>4>se772gbWWnj39QFfb4M# zt~$&3s_0otfi$nHv}Z^(kI#x;pexpoo9CPHHjfj{_^jw3?}<1-qa zjlpQmj?WB_q9-h`jC=k5j&z7J2|7-*>&f2utmrGr$NK&j>F!dyUg7DR@)c2^3^Hl8 zzC*nt>$^SX9Cdgf5PMybzQr51!Ef|C zokRUj@oMlQ9q#MlgHDJjOw)kVe0=9hDA(`#NHyYDfm5B1tYLFH)5a)M!tY^sn7Y>xi)3&l=brz z(w(n%`z)%Thb2w1POJ5^$uOj|){ps)U}F8iHy4u)-H-G!84nagCJ}{c+U?&yzSkv` z@j;Kp_o#sjqxfEuG{rit#uw78#%I1il^7rT;o{9Wp7ZcQCJ}{c8o12I_nCw;zORt( zDK#(_#rJ`vDb{HF^y7A7m0yn5KcBdiGzU0|{SA zI?}zV2JIKcw@nh6v>M-!h9RA`{$>d}{vGEZO3)7%lMcVN=?iRoiAjAE1|mwMY0v^s zpCvsdl=1dOy06qAf4;>2_7_QG(hA;^u7)9v zhD#{p$zmPuULVn4Nrt2`X*HfbG(SGE{?g$4OKkrH|KH9I;V8Z&4+nHuGQh(JnM4$( zY4?3S|6ej$LK)w5r0c78e<6x*yreN{HNJ_4A)PfoY99^ycii~01pROcbXbz>;e$*f z3e&XvKYV;O63Y0%xg<*sE{)@PxpeQs@G3chgX!P=w^e65{wyJ#qKtx;(;NU3x9jUA zH%mU&|7}Qjm^xs(r+>;GdN)JC| z5>c3@14@1Scu+za-zKEHTpe&r6yJT4rUYs0eoNPk?|uoD{~Dk9?p0!Z7~7WIgyRkm zA7m0yn5F~n^6~v$LK)vHNOzl>-#v=&8A(%uv~~B=HRF3uLghc>OH=X%CrXh>e=+bU z9X{sagG?d{(=@-o-~M4EM1-#teyC)Vntyy0-@hbHiB7BWy(6LWpYhTBTz}7o@Y%+N zBoxoOBOShu-)mI*@n0)-#rH~W=z%lBuZUrsn1KWLX~tcM<0h3h?HZLf>ocV)FwWkQ zWZFk*C*ew%G|fMa#t&QY%e3$RNerc}pG4Qc;3%PgW<4f)uQs$EQ<_F8q2DfY=Ig^! zY}XT2KE5}S7j4&uR|)i|=@{HsvhBKbAmjnBpyU)szT#NU)=2&Yoisiq^2gE*`2(Gp7Y$!h2YYnew};>{;1Uul-4DMi}) z8FWqUp)^NA&VUFP(*BE)F;}D_@TVC`{84*Lv%ir9~2&b)ZsJ zPoiDirWUvJ+5_X8E@@0!jc=yr$0x>@27LNUHTbRZfiZ~j5w=_$D1*g^Hb_KanihBQ z+H2`N3FY>>1oiuhT6}aAUxTEfwDsfYn)TNxq4MA28>hx{3X4x1D&r$;q{Au?-y+FR zVVV}7MEG99FKut7Ff^i4q^;+6%kmdUsQhR7=@<{vY7~&+H^vJYydFS0X89-Le%Ynq zgYk#e56VnLVVV~I%k#IT+8$XyYmu%@9a-(^huTBwv69oI1$P9L9&Z@ZImtS-+;2@g zh}u4h5S$kvH^wn^f6wBCY$6KNbmUxb9lG=)31ysE!!BK-j=Ug>Q?IpC+Ip-tXq>;% z{P@IrOoImbZY$%7>sL!}0)ObT^h^&QWD-%BrXx4_cINf_rRal8*Qz7^bt%^4b&|7G zr`7mwGz{sSM2};D8~3fdh4r`*a!8lxqpcnxn~1_RE!oM}qnNAoUz?EbGPPu8RFC&b z&QhIL(U0@bEz<5rt`5Qts>VMG574eii9%Q%mlQ;(JEY zlbnOWfwaNhss{3F%%{OAm_T`$p1~ z>a-f)cZMOIlju?3?;I4e$FiLvhjjV5hZC}iC`{ARBRoBpb(T=VS=JrtK2}R_jNmNm zAZbim!CBVPFr>5AqkR8De#hBk+3w&EU6xUNOvd{plZe7JE&ZdX$Fd9wWqiYs|0lJq zM-<-xNn_G#d;>K^nqn(s^#@joHt3DGM!fAw4(-!)$O&8?(Jd~ zgWGF#{#f=f_>(TL_3-I_m%=nH-`8(1nE};Ow-YMKE976l<|FrbdRZ{uZ`l1Nt!a9R^xkL^W#$p-=rk?wt+wC@J$aN zWD-%BrlW81@%<>FjPDnudtI&Q62p(nxbxb=&2^zCJ&!>>Gi zkV!;gnpX7n@RfI!P{LQ<6X`xvD^7~wEAJ?2Oj^NLzO!LS=McUzN$_QWKXh2$&fz1O zL=>iJ#hE_7u@cJoU^ivIs1=__@#&twT&LCeb~g;^9Kwfm3H68mnsiv+7x8OEXM~G> zmrus;YjNCz!`Y%QVuxOvexe*@CL#=)R($8{r$jKPOI^q zqWSSDgfE%>qwgvw9Ukl9gG?d{)3nN8KQ6yqLK)viq{DZE`bO*bLP=xNYJ3+PhI9_$ zOJaYthEcu-$GIN9yMzmcX*y;w)$bPkLR+Ty0m`qFm~x#~)-bNwdf1jNB`pJNQw6H!o4r7RM_?r}6H#NM!x`1LHWublQbr+=!0@NN-{2^^(9sQPaI$1KwsSy({>73 zL=>iJU6D5qD}PHu85d^cFVPusw+b>lGFs zWD-%BrgaDTe&8z!C43d#knVYPmVY0f_4cWxDc5ORp*LDj5=^8!tWQ{6KWUzNeFMMF zT0nZ+f-7UcKj<__Ti=VW(dbnL2XeZ^@4bfYHYW8{u?uHY<=@H~|8HHRx{5q)*A?w0 z&ZMPZ6@yZ;>+x8vorpJk@}qXmIt6|~&HQivooBZdgGDCme<*bHuDbaV&ps$$MSn?S z(u#dl>?Wb|pY5YP`iN$pld6D!uE5;00=hKyPyv}l6sGCsr@ZGhD&Uid7$3%mD9ra@I;dk78tfCnF2jSSu!v~o}6sGBxJRe`FgfhNLq#LSk zxgn~*0!dS$(`tN$h9R9p_;4>jAwJR_>2QjN4>F0o`(U@+=HuH>;t5~nK%|?bZtWGt zH%HP`AZ`7wbWQEQVs8nR{}!KqM?N7w(jDor*2AY~?G&cz)`5iYCH&e+{CUMfiK#e3 zrPXZKsrb~s2c3H3AbUZ(r1$;k8-fR`L-1Z5eI4%zd@=86Pu_7z2dX$w&iIeQ;J&sm zZ>7Xl90z%~+jO{y$m_!L7C^?zs6=bOS7=^#twJ@;R$apK*6K7mt&`}?v-Aw((7ib^i>;F`qBxwJ{-qoIR2*6>(g| z3b1;et_yNy;K-#AA@0Y_51cLjQVB$Q!T<`=8dayj_hXfl!D|-cUy`)^pYY9KeADQ+ zhi_#Zz8(V5rXzgg!4G3oLl{@4)n1B2kI50wR9UL_`WAR>x|obBE1^pwN(XG9ARX_A z1-4we-(|hyx^iHU&g1`>&VMN7k?~a}X0DZ$L3_I%Z|Y?q;Q0v0XOfoxQ@Q7Jx%a2v zUb#)ZRKw1b*UN0=KiKh0S}!L^n#$RX0Y8HFlcV*5zPIui#DDMjvE8g-e9I}+!)NNn z;Y(C6*lVE9V`uB-e-c=ExIUktvgakL7wD3R(g7PN=&+YxFW&k>C9W%LgAT0sn64K+ zR^WO=|5bTP&>mApXrv*D*NqRT&Z+h|H zA^z^5V?(rF9!2<@C@;ptmZ-e9aCx~WBz}>4;rhURN!rh%GHJcM1HSADg>ziHS;J%B z^kwr@`j|~By%CFojTjG}0BfK+sw%*NtY}ZFl604W@%3Qb+?=OW_os#D_WZYc+A3T~ zhEULP|EOJH&Af6e%9CT#;7odYlJ&$j>FLSXMZBI8*aesI8OK+*e>aw_h9$35M_Rn7 zOQOnmh^_^N!we;0J(`$^G$N$bT(@%xvm4yYU4 zU#`&K4X1g7LRta1^>E*+B3ZuF$a}OJIb)_a5~Z+`j@Jn$p0mU2$}L$O_1ND zC!wIzv#MLD-B$HOetbg_^9x77Q?(1>sbcH)@R<5ZjED4)sGeYtmDDY2;(FSNcL|}L zqE=wHkR=pFwp``bNj0Y(d$M{11|rg{P_Xk-(pyaY zM-`6(q(7zW%5A~UC;N7?LUNHERjtR7AM9fH577N>RVl((K<{N*1f59lgIVv~R_zmFI=?Q$4T$1NH^oq|}G|VIK(LY)1zFed;br4@i2HnN2ONIQt4-JRKXaf($CqTg5&m3=|ew8z6Q*T;d?SMcJRs8 zhn4-ANOS1 zKiTrx=XfLKJW#W+<@_7?JnHx+E$5SxhV&v7bh%3HN^Il7AOPI?1Y!gYP#!S#t@1d}Z% z`R9M>K%A16^LWC-{d(iEa zXnk%)`2SGO^^%tVQ#t?1<@`7OX51aPKW)GcBJ{jI6T+Ld+iK{t>c5hf{&P9gF{W66 zKlpfylSF~2-x3PCouxY1`lM&wiO6oN(O*=36m&b^tIz6wI({VL2co_+g6{Q^`mFAP zxPB-nw?IkHcKbaEukKDETu#}~tO~32GJl`N;a#PDj%>#j3OP1C@g0VvuY_?pbc!AG z;>ts!pVhkmC%p&-Jx2TGL>&@wIj#lI zjG#xpU!M&+p6VO@Y*kaxqbXX>Qp7c&oDWM{{!ir`&E>41-wDgPw_nZ&rJUN~+H%eZ zpE}1kncWgLBGQXc&=dPNxcb~zLfLL{T|F)6*~2gADldKw;^ziEe~6ZI0mAYAcirD5 zE&p!^ot(+#Je+=e<)l4Te7o(vCmZa8Vz%0PZ8^^X@1>4!Tsc2M9MwCeLwl`WENPSZ zt7_OR5&Brs5b>*nUj6*|D|I~TtNLaf`v$OT z{d_Ch6y5i(J{QN8(3kd|oCEr*K8p4A8~UA4Ut<3ueVJBZ^>rKgTp}2lPqdvIeNnm% zI4+d5N%eKD#FKu7g5Dwfxluy7o#47UKj79k1&qJ?=_esz|v{nNo#l&c*%OykC?Ng?{>CE9Df~Z zib;P;IwYz_{R#zru-}cd?=2F_?H$+EHwS%o^V|EkUOe<&{aVl`J6a#_OPXq(mVc37 z`<(0J)7}VZdItacVIE`lO`grGsCDR5kKmmnkHD<(czj=*W`@V8h6h`r!KNo4zgMkP7`GreZa8ZfCDX1PndazE|3ss=hDqVz(+p!Ht;)KD3Llj^7D2plRH#QXciw7#i~h$ns2 z!gJPi4hB8w>ti2@Cw1B_Yf3mMt?%)`wwbPf!BK;mEz*&mI$@kjIhSGFs-HIDcC)k2 zUq>l1|2~<|eBJ-|O+v5%CapjATl7AJ@blUc&Ahcd^piCcalkJcipv+%dObi=P$RI#uSKD! z1Z>SZzZB8u(crh%au+-I>mjD~#X3S-q!$W?^j6)RKA|Hn6Y28-90vqLhWYxuK;l`S zkK+2^Uwj_njqu8+-qUl)T3H2Kq_$^ETJdTM6sO^vlWW$M(k&yMGaUV z+95bU5Da_EuXng?il=(5-4oZ32E)Gb>XqvP@l>xwHIE0we(>tGwu9uSdgbfq1H1$6 z?nBiM^5RD#O}k*v!I5@Xt9eseOQ_e{epIiueQmw=_S#(`*4r0ie!l`^qy%-F%%9bw z@2TC*N{O%6n6wwt6%nNu3WhILy{$hZU2)k+uXQNn_rdVfJiXF>x)jfPorm}zgW-7e z$@;Te(got({uXNoZ82)=-udqEEUxn+D!SJV|dYvN3YmwFx>9vsc zI@9(Ke!nmNtN?d5R>7Mc3*9ooUp4E;YOyX-E8_u4zZIth{X{LW5>a}gAaftD-z8lV zUM_bduEzwKb$+=i4DoEwXX1KDkcm%`IK4vGHvd7mt_m{O`T6&kc&?Y<;(E^@6SoIk ze#!&>Zol0i^9sLS7DznfqwB^X^BSN3S}*<_Tptu_4GUvHZc2fSP^nseL`I1uM>+8vX?VUx-<((gj~ku!BWY7i^`9UO zJpMn$e}aEqfae1oKj2yu@+q|op42!7Pa-Gc>*cFM(%SDNBe(nZ+y@-0j#Ml4{d3~5 z5PwVIK~}ZMuOs;VPxFi6oWgnr>6D1dAry>#i=LB>iT%_;d8AjWf4Z)X1!G_F>bI_+ z7f;vSgRvOm+4`*;=*81@?_eD7_iOlPc=2@IFBrFnpMRJaPuBy3ant?yOfR0UGlFsa zK9=D>&x_w5*TaHw&rp7{2R+WM8;fgD9nxA#$L|KRpSrw+_EUsfY2JPY7VG=BVnBM? zU7w8o&@(P|Gptluhw6;lPGUi!eCYq{rb=G6m+r{dg2jaLV*#qJQ0I@~+?>5=yJfs{ zkgrnbqwtRLme~Y;BQcIO_k`WEJV9Q)Z(j!?4fM|TMc0`@-eG?IF7V>%djBAg_Zu_( z7kTk?eNd2hk)MBw7f;sx?UAbEA-2W{@=vc?}F>!1k?C^teCE6 z^#2r3`v%rwUW$q0^d8=Q3>tTF{2d~l;s@Z75Q`6eH^qD7o9RcY?xIJ?qxG-4TR3l8 z-%oLk^hA2~3u{>NoA}{v>#(SZN*bcyY+>K;Y@zgccFZgD^DIx3A7h$y{KP_Wz^ zx6s-r;o@<{Td22Zf`Z?8&7vye}w7$X$|C;UkwWIh_loG z|JnR$dspN7jiBId)qbeW|Bb|Z&&T6aqV2_AFh^#4`4VZ6j;J1XsnoCn`Y(hD07%=5 z*^jRQ_i1LK?>-EF3(@ylebl3`AgcRV&Zw`VnCcvQF0M}Zy(TTEM19q_YoeS@+|FaT z?2HvFdMfWg*s08=3-Prpnp;ynHQ&Df1Agt9GymgpLp$_D@O?x^Kh#Ev>X2S2C|&67 z<5}Mgd{8EGAaq@KQGhMdT)$24HJbQ2<8Zx8P`c8O-&Nw>dy7HodEU6Rem9AC?{@{I zmwWX``#}+Z+K;e)C?O0=-}UOB!YJPD?-Z1N;EhXZe>0mu8`rx9Wn=vO6h`^a)Wugp z8MfxJ_ESH~%RdR%Lj!CT;_Q$1!Q=d}P1%z!DEqB9FQt7QIljvA$1;@TKSkorev9?l zLD}6t{~3-yai|{^l-=+1FVyiE^9TjlZlqnIt>3*Rp6)9z{4eg&oD`HjLH@<-ck0n@ zi0YBn64_%zpMsG8=w|JaJjS6oWF^8{CEF#Bck4@$e~#sr)PL0PCuu0XP*8EMw?0kp zo)Io;Px2mGfTrBp>F-c4p04)`D);i^F<-X%(YEUk4DcF8=aB!bU#c^@k%L`hP>*?#vIIZN0FcL0Y623hf^5ed;>i86RTnv8e@d>{zm~Buzjl|>y(=PC~<{q-a~GXm4CU&p93FT z53G3jO613+eDzlX{{@J{nW$$MtV)4w{%dtS&h_Bc6VIZD;&0UPI1`UvM@8aq*6}#k zgGcX-Nc?R&9_M=S=>2je9^((jcR%96qt9uP_e7P%;SI;?j zy*Lv8pyrQrJuvi(mVc9u$GIN7`kft-|Co-)xgI?Fr$yqQ((yRggGc{UBJt1Zc%19O zqyK*+@qgFxIM;*60Ng|imG2cDk8?eE4EQ<{|GJLHxgI=rTO5ghQ^(_64<5VWx!(}~ zcXT|?_24n^ph*1tIv(eG@EC}7{ZRgobUe=W;4x@!B>pprZ$PGc@E8=W|E~~F^@nr) zJxc9f6{){(bv({g$GblriT_^5<4imTK`7?ya{9PjPuye*U6a0aB zKAyWG6jnY4E!-Y(uD?SmY|a~w@2BH&rZ#f~o_h)9AE@JTrW@Z!{2YnT(D7#>9y}H= ziNp^>Je413D(jKwM(}6qc$^!+Ysr*Ie2$LCnRqPuA`(AZ$K%`p9!sx@#E;kUI5&XD zvd)qCJROg719&VuF%myj$K%`p9!KRw;%Dmk(-99IM_m<(FG4)o3(jOS%Om#MP^RN? zZUC?44@LA>rQ>lX9!KMwN($5z)Am@W<8dZlNB=ew->BnpZUB!J9V7AcbUe-t;ISfV zAN%WgoEyMn1>P47$v;TPxLyd9_I$| zSaoA0|8gCVa|3uB(<2gpBFCo{PeeR;ti$t{jQgJ6R zyFoa$TcU=6O5GBzceE+aPi+gbZn-*=A94|&M&Ijd0IyrSM&eOc#z$wA;rY%Hd{;?4 z%LlLL{u_zE4zDXcf;2d1Z^L((52jswyz>8!KkBXnypH1Pj{Mwk!Mz(WHl~>7 zh6~jl+>7Lfi)_oXEXh@Jkqfpg$&^6oArK&#UPBVdPY4j=1PBBYdZ+PUL{OZrz3{umC&w~VBRzodU1 z;ZGqPFK-Fu4}VGjFN8mf@VSxn@R#)OBK$>!W0QXH58a z@Dr1Sqg#9CW4r zCL=t7O@tdG{0Cjh|8|5Qgm7#k4CN2HlK*cJerQZM_#*kwLHLm|;ouATmvbG$yCM9+ z2>-?#{^6dzUrab~lfOAPA^b#yzZOZKZOWI6@B!G2H#}0lnFvQ6WasJn;by#0`G9-G zod_>T5)QgjzGB2V0raEkL09;@65*3o*8Ytn`Gc+L54w_nCBpNRY|aYh54w{7X$UWf2?t%t|4f7z$Ap8f zR|> z%#Gv^x|09Z2(LsqHrs^q2VKekdW4@A6ArqP|IG+LGbS8#CI4R{{2Y~aFg6#4=!350 ze;>jxKsYv)gu+2r@_!KFKaB|oUCIA$gkKsHe!I#4DTH64vie}NL5Tiuk^TdOJ&S9w zlFbsKaL|?Z{UXATi3$IM$^Q|A-y9Q;a>+c*W4ND<@Hwh=h(5|C<^LDbUybm)BjpEO zDgV0&zdj}$bfx^SApGu_aFko}e;wg}K=`|n{84VHpU)8fOOquhe;V}w7ZvX1N-!H05#KZ#k>5q=-SvFRX` zKj?x#iCMD|{$NZv=raGDF$jMpCLHCK{J%o@>j=L)l0W>(pPUv5e@bQb$4gcv|L3&* ziJ_3B=RNyll{K)FPR}@Wwjay^YUaax_E(5^XgHr7P?d1pK`U!uMI;>gOE{zlG_nTX z5ebL?NaE}d`k$$+Az1Va<=@_<#~pcP4ZS9kzOxC(J*PFo?~H_F>>>H%p3`1s9o;Gt zj`4+rWAY-WGr~uj@V9`%jIVNfVSM#4!jAx79)f>I8DGu7OfB~Suf)0uS5o|y)0*q1 z)rRk&k<&xd0;Q~DZV&f+5(t- z(d7(6_@NPes0ZSc@S|hGfs6Ge;rM>-@#jS96SxHbBG5k`;aD_f+@SoxCHR*hd_+t* z(h2?|gpY{{M>^0?%=$ls&%mN77F9#^kq-0|vwny0lVieH82aZUe11%LiBdzLdyUIF zAqOKbxB&k;g#X$GBYiY{Bf|gfg`bL3OMdz-2!AO>cm?<`5+iZ4PPj8tKj8h)#$Nhp z_>YWy-huMrJHx{lMdb5rl%IO}XONF)5spP$QVYrlzKCA_Il^Cz3BSnj?<&wJiU|i@ z+U0bx{j-K&7q-iDKo|KZrbEl1Z;(Y_#trfZUF4sb4!woGp=S7Xl7C`)YlNR46MmDn zizWY&2>)lK{obnWUI`x`6Mmag{f}g*xU3OvRTn-5_`uixd+R{_uNi)q;r~a#cPbV& zvm^Y!7vYm!dM=vsS3v(yDBn*~g#THoVKP%Bak5VQc|<-RR_cT=z4X!WN0I+A!1jVk zk40BL1^GXT{2^mGFDD6qMyX>~N*MoTo%jw;XTSyNLHC%+^buDx9CRiB*O14kyAC%iPzt3V-ai*C33ixAlLe0_LI}H%){+u$(0TpM+|>0|UA|C_W{%|iQQ zrso3JM(~2NWF6Myr%&;4J&u45AzU^2F&*-=82e?wFM~6|wbJPx-5Trj<*H%%e^tYh zUaH}lYjI&baOSUZ;k~D)zksV6*PFP$#`}QKCib+m^=IjVuhum=Qgx8?)Kb3{C+e=}+5VTIf20m*Qs~-${zCZOgZ9s`hj5*bTu@fD|BoK+ z5#Roop&zE(Rfc~j1g)Gq%;MXBw0)IHn`3OA8?xFW7dnB@JnvG1_Rn*CdAO5qxRvM1 zJ4N!8w07XwiL+iCPzG$4=`kDkzo8sA1Dh_#r+37cBQfeumco={cpBx{lX@&#CX_|w z;c8(2k-*CO@j|q-?Rajk8Xc*cHx22v`*eM=E@VGP8>834nv9(0_r6C`qlrG-8PHeL z$){%}FZtK-JjE?QHTUnl1y3{Xn*O9qWAde5ce(J}y%X?z3f8vp&Pd#KzK`jAXMoi7 ze<(GhIdjskWjmekx7GN4mO5Dey!7f2)k7VJzaFM6{lsUp+6*7OC=fcU#~%4(&Z+Y4 z|3Aui0P;Nq^}>2+5<++wIq1v9477jC+t~UUg`RGB&H9-Ei-&SI1A1l#bis^%q^w=b z2aH_I!tW{HjPlrkw6N{h&j9p;c$wc(9JOPpm>E&EPK6(~CtHA&03(40R2Wx(j zLo){9I#KhA|My;O^fUA+MjDi=wW7_|h>ej88i$BIRD5*dA-g;{O9O(rL4DM_XcOGc3GoW$X`%6%VGxI;S@!7pyB@Xv;M|&4! zLhToWJD$V2uuu7Z&^1y6x(v$%7x`Y~;opScXEQ{*R-=&%T$=a?q~tsL2}?U;{Mlkv zu8+k}+r!Gu1;_*alXb1m%?SU%l=v@qv{San7zr2o{+WmK2GC+18rSN@jN0Q-DRJKB zXbaA^F><2Yqc7irL~#Dn!})vALLY2h>jTZWExmR)C?(DZ9c{tcE(T{RxxL@Ri9UbE zM;0Zvj;_Y3Ik+_Cc5q6Zv;_?9q&SnwXF1Y7kNs^Y;p&0w7F=_2t-@7>>tdp;KPUBx z{Db!KnNl-l=27R_`ksvVG$a+DW@b6sN#!m^hZ2e4#4yw1oY?}jx;nnJvGWn>$=%SD zI6FGpyQ+~#b7&RcKAea*&W?g@2uEBqAxXqF6Y@3_+HmF*4AHJljvl9ciFggpF?NSd zAGHa&w<>kN%@n(DGqRUS2Schp`G0}L*G6%@?RSeQlb-bZfhnY~OAE zaXr>|i{O7R2Q{_4j1HksKZM?F6lkZz{Bgw0zld&4EV>8rb|PN4z#bTl^KIH{<+rky z1@^aIFI|UmP!48Sb1{c75_dS!+n7%Z`jcls`z?lO*M2pq!=-5-*wIAn_-AIdqrDrr z`wJfSH!pd(-&gv>Gz^4m|4c@>Q;sKQ!WNjN$ttnOGvjxE!*9WD$Y{QQ;_%PHoXo6F zHWX8&$7F;*rTsXom7^_ucjLHpSoS*Xr(@0f^+WKheST_m%6h)g(XK;1Q%{8Ym09O`xUU55+dbSjW>n89 z`;}Q(AF#CRfZOV4C!c7ufquIav>$f3J2%S+cglWc)}I{hI^d>82=n_79`46L`&AEj zaYndP_b1Og+JZZ?{v@QyM808j1pIyzv_JQ7|8)=cC$On3?K<%Ls2co+%@N@KMyc88 zXRYgUct-qA*`LhDJcOma8@L1cp54&lp4}d_(Jxxp>hjRjE)|Y6M$iEyi4LwVnjP}he$Rz7`7IeWZw5$4d!lz*# zpRg7&d%4SXzqT38gOX3$CXAWapS{%47I|tDk*86p&m3Hw6PX|qF-h>{8+pQf{p=E4 z7kl{Tnf0(9@GCO&QbB60;)GW#xvtH93CSd9&x~KgE1;aE$`p~65i^>EoV-A>+wuBY5h|pqkRbSz&*T2uc9BFSPMeTYVX3hhm9iheg z>p9f_{;HYObO^__j#e!=`U#G!Jo&p7Y45TqlAo8GCzH8hyj_!>$*rsdLg9rQ1u2}Ho<_+wuqW0TYU=Yn z!Am=C`F``#pFR3MbJNWheScA=GdJ}8MQ>(QzSnKa&0&0h`Iv)U)OzIq{nk%ze&YMg zOMf=v`;61gKKu|+n%#S_r=NqZhV>I`f6eI$o9TGZ{(3k~`)g25`)f`gN2?b5YcR*j z7|%E8H4;}}jEylrFbnglGqLu?b);E2xPRhs?dd1-VGd^G13qBPKWDPbrDv-&`7k(! z591xJTKF(TaGd1fK)L5E@Nnd$iDO6%j=4fBk@p_zy&5!=j~|B$4$P+n{JB(agoE*t5=$MM#SL3xZTpK6^~i96#iiTB&e@TLE{Dw&(bvUjEuo^ zwWC!l9+|~7{Mq5*`2}cr7t5$vt(s>FVZysRI#|p;{oI7B1T6m~0YRrqw`O49%70+M~&*x5F z=3>rzZhH^UAJfDWGjBDwrK4r$r<3Ww9L(qO+XMPN#idyDG&-2&nA^<5*9E_&6WV&;RwbZGDSCuV5-^WC-HY%FBb&Qov>B-8ZuF=td49R5s3UDDUbc&IKo zIA^&#^})GDn|@E7iKsc#Zi}X(8jds|Ci;^y^lpwmy&Qt z(f6e+yW86P;RM$Ar7XMK;`^!ZOPiP8Igs|c$r#(cu@$8MY#Qm2u=eQptMkzR+dfh3 z6?ZN!8~q&Z6Mma8M^3`=EMGs++kmri^eqMF;MmX3>*4Hxc}L>6H_vd$dUGxg@luZ8 zV(hzlu-PoFwD1j1f)8T_JARsn@&CMOM6TT-cc+Oj#@?HU@xP@d_&NvU-DLb55Jf2b z!`L9eHxo3MSab@8ka^EdZTw@ah6~kiuA`L}zW&$)5UF9o2ZKGphq;@18y&trBh$o3 zoe{-X>S(2fZ(vOc6nv{Zd>Hf3!+6=cKBuLLFJ`@S-f50jTKJAan~38d<}(8RT>zR` zH@B|OBWdD`SqGhmxd2NmEqsHM@b6*|-}Ru0xjE|&ZIvdzn0dl^zjU+&pW6o--#+@I zXBisiAm$Gnv^fCR5L^>*t-@7>>tbBDSd{g57x_XyLH#{~GQI8cJ2czu1Ffxn#>^ki zd&AUnW~=cW0dZlN4Ns;odXs zj3?jbVSdBb&wR|W&A-N?z`M4WtNqtY*LVeL)t}qiGvm`or4K4fMsD zv);q%+x14D&cD>@I?<>0-7dN4FXGRmCD*5BM?3ZUe9s=3e?T+?t;kUa7VCM_|UwQq(ACbq?4*!uuGsJICy2Rm!EnsQyR)5AlFt$G<|1q~4 z^k>iG_Xi&SD|COBHvjFL7~=51?r87YfjkbaQ-2)Z9mDluc)ZNa~9o#e{yTM{O-UFSkV zY`e%k7QZpRwXWZ2wJ)F3=D&TTMjZYzj`nWx-|lT209@r7KkI;UG#@&acI$lTs$9%T z)VCA(J$q$aI|-ee|9Gm*22lZ{hw88+u=&ByAf9#rPgBx zYUA6g!Hu(QDU#n0fUNYoR%QJJ>ulveMS6@!)??7JsZcez-J5SoMnU*j?D6j`l<^7| zyMKoa`In+!%*B2KOM8#-&$j;yJp33V<^I;gzdl3!Df-3STODn|U)OP-?n?swn|rf| zA2vzuV;=tJ_guf2i}?>rd$;&+_l{Zq-{;|f8hO0o@DDg9L;k1e|8ie;v}InQL*%@U zJ^wWpE2iUMEAq{T<}8=U`HLE7?%PT&0L0w?dN{8z@15qjzA5OELXvY}xv*PoT7$!` zO*=c3Z%tSX1mTrcIbV|dp2siDEi42dtsC+ug9GFL6!XgcV0{=3uTy?{1NQ%4XU6|w z^c*vUX8|&^qCIN?dD_*YJ+*FCb1(azN3X55A0BpZKIjL?dAqB)K2`|pTWZ|M>xU;b z-l*#bCpEQ?xqfK%VXgfi8txqQF!gyVz;D4^72dO2-&xo{Jic4({vLoIN^k2~wm&%C zlY>=GE%D@h%=mdB#{bq<%h2wV^SleaasI-gpmn0P`tXgGCdTf=d_YROFJ_@51AqJ-ToLXcc+5CZvfgW*_##97iidTmxlZ0pkjejdC$Q&BYim?=D=A;QEKd zS6@#YFD#tu@nt1`Z*jQ|JufZ3a5h0C$=|=QaJ{1?^E#a(;~1?AIey8(C}xyMWn?F) z;9H~dE&LnkRpP?A6YGXPqxXM&gL#;&-ez1-+dj@(M=$l>rr9f`vqz{lr2by8`q79dIs~P!?DYl?-5*yH>1qN(;Do$T8eQp zfAd=_g$OT@eOUT!lA|U5BJmN?7P-gR*v|JY#NL2~pIWKM9)S(W4KA(uQvGHSJ>wUr z?=eodw51#e)S(@Bz}(|r?orw=N~5zeXv{D-ZvXqiQ?)UnrQFt2FmM7g#T(@qwlpR}|i?9_t{u2;!*xHdH*tN=81?H!9wvGGT#YhUxIB;jFoX9ay0=`#^K+A< zZR~^e+NT|B0+!${^YCI#WYNVA?{UXu^j!zLsuz#O7gWR&;_D8Y-mrM%{y0D70>KGwr~x;`KD<%ihkwB6Vy|SwYqdyHFRpTz}}<%$X!*Fp^wE;59h(ov35fq`nPLf%YAGZxQqlxGxk(fwE+<`Dus3y^lX1j)Z)kEV@>Yi6Hf- zQKoS${1)*s{?EI_@n!gY^PSk!;Wyaymz-tI5zTp^jI-lwZVYhs!*`3=8gy@}zurjR z^-u@mPmj?pt^E}hraO3H|4TO!hJt|t!%rNt>>CG7vkb;*>mxCXZE1BysTWY9mB4{mt~1rkLSGc zP2TSv4}^a$0{I*Rt7^DdRi@2|TwtCokWZ}n=RN88H)5k|!C#D*VxF-tB%o$JKI&*C z#bH{C;J{p6fa6)Deci)xZ<;t_&i~}S;%EsD_g)ak55rr*f%(D!2l$%jt^4EK;5gl$ z20u9a!FYbXpw28U;ir2qh>wF`xSWPdoZxxi!-Mtz#TXk~H*$8pZ3@VPR7Q>|ObSLIm-@|;zp}3C6g)trVZhbrQ1NjH_v$#8c8=c6!NB$_S z`iXsy!r}uQEvcXA`&~!M36$Ze9e$@xT9V+|U*lPP9MT_w%bTYk`KWonEA{G-K(E^R z)*6!f(dt&N=B$D2P(Si*>5P#|tNN5;G^=^Nv#*dmNN++SFVx!5UW+xY(mx657kBaH%1hvnl`SGOV`tt0(#4#wns zlVmpTlhGbvgHb>5{n?8lBYEhT7h=s}@lIS=Ysf2uOw_Xz`GjpF@_9Y--GS>im+9zv zsx^Ok^Sw1o!CE;suu{f=JLWAgNLP)-&7hs5C6`_p;hw%PJ{mi(0dFQ=Gv?qv&g)!a!5&!rF3m~j#(ZtQ3;8Sf9bn35 zQ>QMQAFF1$J_Nl+Xk{8lxP8JFuo%pGY1r=9Z+V?AJr(;bk2_MH&vbe6(IWD3mL?y4 zsdXowZ`LbWUx)0$`qDkG9)~vZ5!IB-eC+?Xn52B|BJ~w5pXCxDvwZp3W6t`@hmDfI zKdvFRbV{9ch&vcp+Vpj)FI%n@^_Ab(Vc4}3`F5?PJfkF>yHY2q={Ny90rzB}nLP=}NGb=%&2DyhpDjp^i)cBE@>emvdYz;{~eJm;D}MI*v@ z;S=*F@)-k9l|P+N#1Bis+5wy|DumsWgZC=%3(2E!VbpBmH8u23rVl7sq383uEb%jX zYf~*>ct0BBl%p`NAF57~WTMYSMhwk-v~}ZJ+^SkN*i~(KT!_3DTJ#d5F$MySgYYt) zs?S}B^9Q6Epc?m7O%o!wd+Bufr8-W28TbKvS@VM_oD+T3G~kQ<4yAmLE&nRe`3Bc= z@TJ<|!afH&`We^wP}Q`7@YmMEHVH{|o2eRh#oW882lVbiJ&b|l#faA8R=I)Is=Kc~8|U%+JeBoNK_(*?boHLJH@E53K`!W}}P?Q9gT$I?UhSA+L3~ ze(Ld8=PiDQYLot|wUdjxwJ&il0iOH|RMT-$oW}mhzZ*CqL$Np?f_KLNr^d(HSb>^Z ziL10GW>TVkpO3y)WaAbOH)N15AAZI)Jy~^hxL?)2BCr2Myh63toT$A1MaRj16}Tb) zvGV#jyxRx3lkF6@{ML9sMt<-$C70?wG6LB@f)n2K}DqQ>G89b?YiTT!_3*-$v zpd%*Z_QI#v9ly*R0Qt4_kBIjN)$BJ>etn=*=KmM`TFqz5W2Ajo!^_P-)cBf*)aN&# z&pLhEtIscx4vv1tHT%748Q@#eT>JJp9QeS)sUubMGgOlV^@+$dcrFUnB=+^vlE&H- zG!pYR@L6z!l5>%EG)XPOO8#V!44+sC^wN@nI<1#y^YhqlC@)R49$C@>nDBj^xvN}0 zDht1t?}En?$)EM(%|EkWuziIj^7Y&j$P8Sf+f^#D=rBIA97}rgN$9wF+LZmwl7pB6 zbgq-Te!f#HG-HRP)@Osz!}K@$>_fFzhc*oaNEc8N{oWF&jzu}23+U_bZ8kLRsLa*- zk|8?Il2$?7v5%-`Su79xttHZ%;tt|VW=ov0~FPg*`>oX>bmT;GNYK>jZYpGPxQ zq~8g64FA@>Eq*D6?jeJ6ux~#}@|Az6kHoCMgLbv{LpiPMd@cGV`@`fn3H7<&?`dSd zB90HbY~-7DV?R_)9UtatZ{fowDC-b4_6zc%+VBZ_osQ_2Y?Q}wEv%lld@4W~;w_Q3 zD{-(H4!=(lK1mNJ^5*94*hiK?JG18uc*c|{hpl&ESir9>pf|seneE5k@k4zJD-vGUNYTU?ZIiX*d`~>w@9^@tRFz*y8=V|m6 zyiEeVJ`!)iT5SAV1@b_tX2%B?lGsg#874*&(F#Kh(gI zbA>NA(}VI9(nk})qkucYht&M}JLvtIl(b9Q4lIArmgen58q6io)!up>=#&sXA8{UGM8D@SINS=X2aI zQR8m&>*o_4PH{prq%Ae>foT1_2>(yOk3Z|U@;`y!_euS{!rxLqZoPx+Bii=hJ6k~* z;T?{$`i%11C)bl=sXvj+f`-To{IjmMdMbbn7o36XRGq@Mho#5BuLJsI>5mNkM$-Q! z@_{|SiAoe)2>%a}E>7=(S9D8If5we_Q?+n%|F!ldUkkb+-rv-?k3GJUmvnt{fnkSI z6R%R^8`Ey7*7~HttR)EF??Cz|)c8&jz8ApmN4x~jX$LL~abG9j3tH1p`bB34ayLdP zt~KC3#}b8NFK{%W#}~eSB=kUk6bwZ^tP$gq@r7ljV?7x+eu!!x@TK4=?JIoA2G-Bj z_=)7pbMS8={8t4BNSs8sY}If-)RVRs3J&HI`Ga;o2G|!uZtPfycDOiyJXCO`cqO_G z&|&zW=r%HV)(_wpU0U`7*G2n<$3q2^b^3z+Q05YO9=}L63-$8_Cm?LHO3c?$^?&4B z&{pc{M0)JniGTY9di_MHquOfAD?Q|T?+&b=g8iIPL%K#^70g7?M0gmNwEj>hbf|CZ z#xGa;sL zf`X-zgZxWcE?}i2AB-D+tuL3l?nDn3oP&7TYW!V(dp%R9l6uBi19Ck6v1mP0N1lmt zA8WI~o#oD#a#zw<PTl8vI>M?cwUVygrrpq@eA5b>B0%LdKar_Iav#Vdz zpGp1RhIlK~c+p#a{ayn9TTxDr@333dlDDOtJ4ioL&TNd8`EAPeXtgDfZNI)bud&Yd z)sWYe{dB>-$om%NpqfaG)!pJcuGEB~)YsKUpPPPy@>BQ=gqNrZ)1&fpKm1`=%s*X7 z>3@`;tA(%9lgqwh_r4M>Kecl=BugX={-l;C^39F2lJgC`pkuulH(`O=*U8hD+LwG= ziXN%pHZ@^uRA0Of|1VMQ-&hj3L!Jt5lybjE-$=Pfp}#7Hb#Ld1!lPYU7MwR@FGuMz zHipoN$`=Rbq;K@(($2{DBk^+nDePp4|2fippwlFiFP5FI0DLuW!X@O>hxpYHv&WqM zDh7^n$j58A8soF0Js@w88?jZ;pB9ZZDeLiO<&|?4bW(2vfctqh;Z9H9mmaCZWnN=B z47@T^H0qG0{({>|7zV%m!hn6tXJbEyrx3N`4YML;OTQ}Vq=ug#uWa=wFfQ7dflMR zYfsDveeTi;ngZ}~9zrdhtbbFsjhpbk>fAu+8#{dQJ1VjG->}2Mk)-VkbwKCQnRuY5 zx0gaT>7>3cM!W%P;t76znK=cKV?0CdCr+arR~va)E6Kq?gy9+VCKmYN7rOAG_6T3C zCa#UPgRStt5d2)I)PgPgOM%xm9oEFdJXb9-{qUM{;d9c z1@WK9^^8uFl<(jr-BQ%AaT708om@MC?9&O~e~);DYT_+E-*-r`^p}O?#b7n@4_<${ z^mjU(rB9iRTFeT7fd zQx~g=U-^7`QHOK3x)ALs|DS47>nI-{LAn>gho9Iia3>#rBYb$8zLEY@^I;TvNsaXk@9GJ z;34?A_A(qLS%bcwbA3gqL(co@_x6OWOVLXy+Y9^Mr5W`96903gsjdH~7KU5;ioWCj zq|sh`VH=>M92E9Oyx*%y^E^2y++T;YUnxYNwe&JIX;q|ODQtnT{lPcKTg^A=ZwuRz zLPXC*`BmrsxA1V}i+Zz8^h`_Of!-|K4_8MW68OJ{GUUPE=!ssASM`0JrTj6o^jhuf?rk|ty z)O|BYH?`WKdH|7BKkI%o!M&Yy6;9oE_xz~%`Y`7QGU zg)+k+`pTXE%$(n8+Kq)($ahtMLfc1i_KneV5+7sd!sR+mQa*w=bmY5nlaE*XIX;$a zU*Y4mh?lJ<&-eLwr4ARly%FJusL89Na*O_@@Jf|faDa|0|H;Qvk=qOSTlnbSyPJHZ zm|Sv&laR~QdK0~E;S~;t-_8r6s|$@z^86DEU{4iZqSGYhBX~ncz8g3BeAUD85xk)j zKE8~2o7LpoeLns|hm()RQxRUSCjZ&9GYVhO;T)G2PlvsJmzw-qWL#c|ejf1>3r6X< z@*n+c;YGsdKk>Kh=W*w+Ya5rR=C(Il2ftE|(=k>|Eb!%5+u`ByPap7Kw`t#QCq=%{c<& zwvAF<0{zc9f}&$^4bh>7zCP6hKU*K6a$t(E(L!U&w#c}t2xIo5<5Xh7UolQ^0(+W_x{dkee?T;t6>|G>v{N(SvRi+yk5D6ej_l_xAj539wlDRzp?DJSb{MG zS5%xo>u;<|EO;CD{>ERoOE*5Q*5k_}@RpACZQPU{YJXP`;0>MB!)nB9t)~3RuZQJ2 zT=)om3cgSIdz6ppp^Ff&XpxR9{~?)0O@xoodMGE`S%+Z#fqc^|=e{+~eI=%}kfX?Y zot|OH72+P>wyDIz=EjrxSbjqP6fMC8T|^i7KLfw}a6wOrzp;B3Nb80_>cO~keyTb& zh;2WOV7?uVxdWtK{7=jupsj`40d!u_4!~17kM5NBR0qd@@RUyYe=Xt-S5q7K{71W| z6aL?b@X=~&2Vc%lG2viL5uTUsP*eMR>wHC5y6|G)##ndi=!m^kbQ=5-ujnEjSN^jd z%$52(m%n4jchS~ht*rw|&iW}H zi14*)YI(GM+zx-lEBb?uEC0#g%Y?tb!uApkV$!kl{|xwuc4=L} z$HCf%{4ws5Wy$26d?cN0-0#t`Lvr5N<0E)O=h2;djW6f0)#=E`;w;3wR!#NSzly%m z;VeewZRihXs;PgA%IQCl4)KcK*Ky@P^-Qkt@lF1YjH6QVF$aAl*NRGUUx`_Y#dz{G zw$1~5i|8TQH^6BlahBi3Ey1S(;jbVL&Mce|skh>G@JGDjUOKM)r~Lni^;WzOe@ngf4*G{w_2$2g zBk4?a&GvD)WE=2r2y#A1ytKd7GsW7E^=A-u!}c>S2wC@7e(|+@$m?o2-&FAapgbiySRt&bu@pA zz3SG3lWx&j)~}s!EfWH-R8}o zb4*0XTuR2G-J_h3c;lzy5*^O*QwjQLtZh#FS7iKDoD2FT;KMI2O|Z$Vx~E}x|3xBO!KRk)09s9{f3YdftNGC;?6ZQQhv zR2wHRkO4Z8m!BbCUzOd^mlxA_i@f|C;R986r>MMC!T%!g=|xRT{)11&vhTL|bpD3^ z;rPIw&lm~4m@jMUhF2(Wq~D3Ot9wE3Y*Nxr_|rI`$9-Ai#2;;pW5nVMah+-WleH(5 znU4H7F1xR4>G*>((+Pi2KJYX9c%MIa>2UI=pXcC@F(1!26kjiK65Wne z4ZDfn`xYK%Ul8k)?|aV)?+Myft{R?pCa&{veV`gvbjKb0@kZ>2`%iIQj_YcnTQC1u zUt9+$epZt&M%hZWPR`Dc>f!q(USgrKbtMJs|2%0Yf8lT8hg&bz?W9JjMIY#PQhb$f z$K?j~`a0-7rZEX!@-LMfF#g|h{Z*$)+D?q@Qf`dPUg52u7Qdo>DF@3ib}#;!%HHD1 z!7`JG{n@gn2;WO(pBLrR+Xz!CvFKo%1@7e2lfozAUc_E=?S#CVf;O`P_C%qK#Yf=2 zre?bV065_n`d}GPJb>{8_Mt94H{`F1KUax|G0u3Q-1zSWJB8=^ywjZ_yA1ZTM^`O7 z3gv-(m!fa8@oiT_^g5@XhV2bdLm9K^~YX7p7ARKzd3KVSZdeC&c%r}KCcrBN8*X|0GjS{ zNxdXUy+{=!2cCW+j%t(}dSO{-{?e`#^^Q_DI#M-nYWk~O$+aeu5jdMV1z{&KUNLN9 zOJ~^$cph&lg0JTpzJKWa_!N?lQ7(;Hzp?alp!@k9Wb$WkU2PoZ;cj z$Maeb=cVSna(Xz;+fO3=T;XUMe(LkN4z2#KDNl9gg0DP(tWW9Az)8;uM8kSr2AO5O zF1rNRMqJlBrjJuo*6sXa)a+#843N#RozwcpDPz@A?2LKm~!FW;`lotn#qzYlphVaF_ci^#NVI@^3- zxOV^Udk#w+9*h<(HtQ2CGe`Y@4lb9Y&2tJ+^yj<67-Z9h80PCz^!nP}V?;Y$4eh0C?s*BSA_e67OB zOCuSlspU60nlXGB$lL@6<`V)Ow;_!iv#RDtXMjV$V?+uOs*k%J%@`aQ^%)#@dN}Sw zn#Y8c{A*s85srBI{HvoGgJV#D<1ZeLr;(=G!*NGOIO63K{j#MQgJW=j;{^}LKau7? z9*$2k!VxbY|8_KEa104>yzAjWpT8pEaJ1;30gmA7A*k*A;tvIJzK>NU}zPm$LvF;?-_n z@!R3CanjLy9>#A+w$-B6pFTBaR3gh+Sk5tyR<8aNxbs#R(=CX%y{Tdg? z3A7D|TdvjpPW`cBKhWx|X{^9J$BHqIUW@lK;6sx4*{&GrXvXpZJ&WKN=HVERG&3EJ zmVGk95ib`xj%F+l^elp7s)u7P(k%6GEX@c7@&+JoRI^>A!Knjd*M-pBw4zmXnecdR(g(Tv3b%`P~qJRIjB4f=cQ_QuPQ z_?%XI0bL+CFi#V-Tj+%q zfAetsJR=eo*Wu1~_FLSSK&Lf_PFsuL&*66&?r-A` z`C0KL?$Beq>x2)#_4x24Xus^J?){Gp_`q-d#>vHtj%ExW*emM#c+SJ|I?{aLaJ1^0 z5srBIe9zI0#lijr7{FsE7oR9hD>&C`Rz^7Dy4F)N!VxPUD`A&dnz1;HK3{pfhhr?# zpkK7E_1PKWh?kFPj%F+l>T~L^TM@52?mKZm9CzptV9UDt4csT={weOOaHrgFQ(4z^ zg%V5eha~f-E75;jnz4L<38prt_j?0neMi0lS z8R3YRPxRlGW-Jb)&sSnR5b%StihkL;Huq(#Bj$s+$h?kG&9nDxAR-ZrP;doVHfycSFTQb5C zFCXtXnz1;j&!NArIShEO#vS?;b(D3@6x<)c9pi_U&)~iW_kZCIeYNr%+|iy^9fJE! z4sTtb1Q+^t?rT|veswiFLL3{$7;W##fIq_{avL7c55U_!$p<9b3hXkVc*rTRY$HtLMmkp2#&ZG`LpkTxG_JL39ts+2lR%8UNN zw$oL;P~Ib5y0%|tRNmP3u?qEUX~xO}`!ncI)UCq-SzR^E;b=D`BOI~qW7TnvW-N{& z1_xv!;KyjBnd;$Kml2NG_OWV`qZy0C^e3yvdpKqw4cdiu?eLOKKBqNq91)R2EBCpM zW(*F_is*Wo>)|Ls8uZK7wfiU|9P#o21!QT);xPTmD$FGW^-_j3=$EZ)-!~&1@$!NG z+tQ51VfvF*TRa?RAPxFu>)Nl#2uHkpp#Qcs1;<|40g;UrOmB5X+RHf_$7<;FRX@YJ zCG>!G?QhlJE&8+v_PD%f)(<(0SaaP_&n?p5u2ymNE_q!2P2lw6>aX(JxOLexks1r- zDP7!0We|5zDDIxeJvc-^br~tE>6US5DDIxetyfxXeWu3U4=aE~uJ_B-7I$~QG+i5g z|NGFj#nn=k9&RmFb>90!}Qm0nyeRrQBkOJX`$^y*A{a?(E}Q+r;%`K`Tl zWwt-|FQy;Ym#O-|?aN_mnd%R_Gkx5?Ow|W&Uk+=-oxV(QEbPj-=W!1R$zf{T+#~C- z)E3v5srta}%VBL;(w8ZYWn3BS1Gg`Swc$=*rUu}P7xjr-uPmmg+XiMJQ+$uQ-skxt zEWU(TYZzt0UVjV!jD5fQMQ0Pn?vopdb0-sETaJKT$ZtuH#SS^{w4EXT(`BC=#%0_O zN4tCVd$=$*_Fb3X=zVImN3oNdHRDo~v+fHigRxUwf8VCD7e`Q=aZD3E9$)=m*~6a5 zf7{C`3-1JevqKv@6~C(*Va+^?IQss3@*&xIG>@!1$EA-fk}k_y(nm*H{Xr19>xF!8 z^W*q!aF#UF@k-hUag-v?Z+5|B^|$mje7BZ+s(sj@vz1bhEkPe+j@4f{`oNc1jPH8b zZxfU>48mG|#rL;S9vVXX@hhSnH{nh$C54!Yj z$7>1pe%m*KN8gL*_;9$;vwXmue2LEod_O_-#5Tr480Juo>vX*8+Q9yxTuJ$_(mr0i zZWXGlEB_yLIL`-edlqv1bJgwg$oa_<=#!E^qCRf0)Nw~nCGwtxlH2Jk`mj?_?=!K- zo!__0htERUoxc{-(fVzhe8Vh5N+ccL!_!;N+v*q7YbgLdTmC1I&)tlvo#;XP19yqn zILMc?8{))Y_m_#KU#P^=Z&YH#V#KdDd_i5)m4Ls-b-UNR|4jJy7ws!@f#;G6)$JK` z&P&4o=7r*-f_IXsU!0(cOfv@*l2)I+O?hv_pnZCkTcix8_ zT!^z+wQyDV(o(-qF#gzE{Sx}z#6BnE?qt{z*uzf& zUyNNxJ{s43x;c+bIVd&lkLPhu$2@oOU8;L=MD9z`A0l2te@VemA>Z1uo=cCRkJNLk zfN#mq1AFH9Xhr%h_C%1^s=2;l0EozmD_djPW}J{Bm-Z{9JA@o+x<(`tg00DEr*BhlbDs z{QhQ{!)d{lg0IGPKhK<-m3m(ZUShq;I{)0Ogu^B z7mg|?U>rFGBgknORZh|8a7(Y&`Ie$jE&Ua)CtSXbUNGlyXTfiZS+DTY%P3u+*wnfB zbIWy^Z|I@o|2Tq8m9HIlvmTm+VoIy?>b_L-;-tT8XlAgYsE? z_D#w91S-x)f@8}hJ^2OO!t!fPYo*q7Wr%hMd;k=1yQ=Zew4XKLpdUxV%W?c2cG?NI z<2p~NVK3oAJr4Udt}7U$eqGx2Nxrr*`ZqUtgEUV`uf*RfXn3)wMUG&11bo>KW%l}q z-a}2ht3y4lImpp6xNFuE-$q1<=GP$L7;nu19vjU`-H8;Oh!xR z2wBe;@Xe-9L)t#3P;_LW+Gt|&v&e3a>Aj8sGIEzB@qk0gFzlgPu&Y9me!8Ywi_ViH*N8_&NnGFcrRR(PQ~~yPW7T z+MA|-Uh^<$QfC==@c!og6LryJPdZx0ZV2m%$;R%`bM}+eiO?aY1q!amG_JKRKnMNT z+D;agQU_zu$zR`|j(@+cRd1x?M=JTUZER0kX8Kfla!r#8t1nw&y|Wkg$<+3jTEnHv z*U5}&=`y}d($3emk-AE3{0HPRY%khYozh-hySJ0awcSBWM##GE54pVV_TpOf*PxZy z__S#+9fS4~k1NhzEQc%(QVp(o5ZBeJ!L=iC?T4!$eq+z#HSgm32G{c#$4%Cl_vC-J zi?#cE{27MdQ(O*xS{QrvPWbIF?ILQg?q5r(J?q`9a~V5x?F7jyQAT}O4f@RkO4(|h znu*ri57yCYq7j^9J)F~#b|FKw>+`(s_ZcsxT^(chubt;;CBe}@gyUon#}cG1u_%-} z6dzyXuUc`$=-;*Ie=MyeI0l4p6ni+JZ`W3OIPfvsv~a}Oi)%4IU}+`6F))M!<0Y%_ z*Ft};MSWU#=*~28#Mp&v&vmo}N3)1ssHH@*68ZSC#VE`M^sCV>@A2v%WAnApht?gQm1h0NwM*!FODhSEaJ$6#G>}8+%eDWs zD3m&UQkpp8+U2W`RuUZHcFB1JWB;su2Wda`a9o-uj<|M-@jqxK$}X;0s+T}XT|65u~_;Hl4AJ!pT%a3)iz1DShIF2|fO&r{x1Lw=>y7rD% z5*&j;LPAnE^w?HfGY>rf0SB}IpOu~aKWyrZ%2L2yo36HZL@BU%k{|aY4U;l zpWs4#nCWOG;lt2?55$4;2RIhs_c9MhVVXF&wV+oR#F^BqYI8lJRHv=?dukWQvH6ECJyYqtAXPcM@w)-?M~f#B{RW+ zaVhz+4*l&qw7YemdpKUucBjnubP~H$r>5Pe_W;^CE2k5588xmCL8~EVt!Z~17U9jqquCXN_8ZT(nBD+!K}owk0A zhhrMjuCOSS8t{6WIAZLy^%%EXT1jv?JFOgXfnz;v39M5#xbZit!A)2-zo{Lb-^Ydd znj2qGYEv&<<8i_E+Oz;yYln4ro~T!tcOVy~_`TIp9N0HaKE&9G>o+-CN%-LGMB*s( za8%*<4iCpEY2t{n)7GEmXbFxuJ=N0V^VAM;dY-yj^Y{== z!;HtZ-j3+`^}lv`5eN41hUdMfU^l^NXngi0e6umyjNrZ1;C&G3@5Tk5S$EWlpaQpR z2mT#y=0j@IA^PJnJJLheqkE_W@u%lO;^XQbjaF@cc_-5$re15tMj7e+{(n9Ce~VG( zdD}UXStrdW^lTJL(J7p3jDVoL}+NyISfe zrZ3CB`8JG@2Op3oUfXYz zUu{#?uU*j)j!6EnS(txWKU^JfdHv+z4WI_Ms|WrqH}Y&Luy(^Ue6`k(wA*&wFzI=_BuUV;`2G{|Bwa`uEbt#j{}!muC-@<$%^Ai%O{>SEPx{%AGeZE}QFUNjqtm zQXZXtMfSq4*+w4GCzci9I>*EHp@MaZc%AWYwUI|hA+KA7A#l-)k(c$>>EipS^hit`(JCNzQ6F^slBL zgZ!qP7m1V0%Y;^rTs$zp4p zslTFytnH=duxhw}IE0X+f5@M&zdmso&3?sjIdfnMl1?_P4(?-~h+njzMxbp$=7k>k zQ}!QS?hVahKf`ka#;?{L^Q~F`y#YQ4irl28$~x2~V$DX^iuL(BTE*7xW&N}Uwp2(_ za=+Xgpjj=(UDZh6B2vHn2G1z?QO}gawt`()23@@wyxV{|#I4ZPYsTSv3~B4xQLZ+? zhGM(ifbsPPlx4#SF4JRYn0cx@;kU2w*P)N+CG~DDW{nSlek_C3jKQDdr`5xj12KAd z!!Zs+EdNGBI(X{U=xL6r1pg$YgWrZ(9{vjr{$Ihbm*97))4|_Q@Usm1&y+;!yD@Bg zizKcbISz}IBRYN@1z8`du}VEmHRZ@hx_P*~@$|9Jn(^CC#P2HQ(5d6gFvP2YzVfzc zE6*PyeM4}LIY;HTNb*cx?xd}RKPdecn+6(KSZbKEW3-mMpA2%1JfHV5XZ}VX} z)n8|F|1G~LuNX`4ePbKWcC?vq4gQRVymL%N4q-32ZIQQ@5xv6}lcQ#H7n<-5btCQO0i;9Uyus5q$9>CFnxKz5gQZKp9V{)* zq(_U6j#=Vmgz@&=I3-;a(V7VBpC+M_NXrfJ5&GEjLip&`#dzYA-?nn+P+7kZdG!nV z-r&viAOClwe-H;f)$Yk3<_#=uk-xoz_GxkP{NQrz6s8o4lX`y9!v}fU@Tm^t{}Xzv zy?M{DeVAG0i2QxzXbaz>`c9){c4DV)_`t~DSC|un-$sm?tvg}8(RW&3>68(DwGk~F zX%ZX02EEgf(tdA8$F3=%mP@wwoNTgQYD?ww*2&Z3$hTck4>`~P+2B6+^{&NyMd)k@ z%O>?<<_Y+FV^>_BJu|F>8J9t>pc#C53G4Kj@xsQQLMyT1bDfW;pK9WotiPy5JRA3O z^05&--U!>nx?zPzKh=gOX1uU*pwLQexCVI0r}ioM6#llP^ebzNv7cl!Xkb2dBla5J zd?YUHKfHOSMOS}!;S0u7wqMye85rif{D%F}o3Be%PciE+8-X9R5*wy~FIq3yezs;k zaR)5t;hoYv#}l(2vJrd-t;9yq7rn^ua?(!sM!u5& zQZN5fq}k%-|EzwG9phyz$D4#!V&kl&`S+9j!Hb~$l}K}r%OB@9_u{Ww^N*9;Gaap6 z)gTf*?_o!EhCb)>iDToHxGuzXGXjhovE8gcTnvxC(wg8@5;3FXYd6p-+tVL@xP@dd~@qAarnjv zAD3%%(%`edvAPO-!loLFZF_%{Z$XLvY& z4C-)Jmx*T$c}U&H?QW9?n-)_cU+@ zU$_b3ge_ocrBTm(BM85($rdek*CzI*Ut|9O&UxI}LN&PI3*7tT8tw4a*OS!W0*^1S zDK?$$ayxNgT5=YAStZ1mQyr}|>W^Q}U4j~0kD4oir0IA5SU$0xf=@yHVa{RG4iD$n zwCXST!bb?_rH+=!sT=2w!Mx3IIX5;)Pi5z+J4x0}_`A>8ij-Qxj`TJqtjH|C$ zIodqH(M~Bx&<)^AgPV(0gIlIx@7hW{KZ3J`n{Z864X(Qz{gBZg4r%ylA~AybjJN~q{Z7c3-40ujEUj+(O={X=cTP2Z=QhPC%ahVZ%JE@eZIuYG3*daJB7SZ zUS)i{IordPi?quft_jW4tgiuHefjeG7HBon^V*vW9qpv`H50brblvVZFY$1}X4qWr z;W|BSemNbfS15!?sC}d1TiQwal`TEuc&SI&PeDCyM_TmB)=hXWZGJgi)R|}}bRk@r zXRx%B@@q6s;h}vAuCqK`7b7i%)4GXIrO7X%qUP0qvHkL9%>P^3DR51Jd}&-)c(^cU zu^D}`b(0RQ6RvoEVcc$MC&k4z-!TT)Z62x3(Iy<{``OwdkjT8ezD zkw;vA$Nh>U5nhhI5&Z|-ML=k+TL42p|K>GjUev`w8cdfPJuP<+a z&bdCA2h-`}X0@!HtNG6uJ-jaxSbHQ@N-a@3rA@mh_Jz>KN+0;66 z(fwv4k!m#N6}Yl(C@>z+Er>qHcpuX+>XbXF!L^(Et(o6Wl`rNWkS4+L+pcQ-YZlCx zakp14u8GK3oaFaw*T0?ed!&6thw*<-mm236?B1>LIM-T8DeRdg7opj3kLOZd!b5ee3t&i*l7v>QHT%SUARykbLXVi&bvE!*N%Y=4f6KsmF zci?@Yx75k5s9Ve5(>hD%}vZ?p9=1L#`?)1^lx?rvCiM}E; z+;!>Yv`yrv{BChOYc4ZMw|$KCFrts*^`y+uNW1sum$s}$+r<31b<=OFL%UBhU$JGY z&`xabkwQ)qb;Z7_eB;JzQNhC4tg?JT|@qFfmS0ukFw=_p`F-#a7sNH z@M{a^5dvJ7BJGVHu9bD*SFmao!G-=Gv=f}?itSg-+zxXWewluszqj0q>#uy$ZpObe z;+LCCiJ3>)a;MNvY#x#X7bOsDWON*VlV4lg;2Mkzb1PeC!Vhx`r~F!?)ayUt3-Su; z>j~ujipz55$c*^n=Dg$h@}kgAY#x?`FJ^9uxeG4Hcz_G*|64xtaNUy;E?P~x&f;)k z-2t={n@>uLOXijWT$o1)aD9gQLOZc;R;P?{X`aR4+L|S_6Pu?b!DZ%_0$krZTw9wV zZD)&0saYi%Y)^UzT%KZC*Z{!PfP>?_71-H)k@_)Gw`D5L|(ny(qf0IA- zUyy$u(t7IyCuh|m{~||2`ZfFgTD$89wIJm#(D`n~eCXB^tZ8}e`s9Q4zPqn>qEFQ4 z6u56ZM@INzi&odE9s|1ZKj&*w#kXTKJ>Rh>tialHjGI$RjnUbudR}99Exy_@#?8T` z#u%M7s(*}eGhC@K>V8hw^moI@_&M8D7;DZl*Eb*IXT(!s)cX9p2->)mtsEQAv2$linp2TFQ-lH=)Jxr#?8vR5n!q^g=dt%o0jKB$?0JX>xSxS~Ht=f@i;#SGcw;`oiwV8H=+El=m^_eDP>C zih7_N^9a^{DnApyueVx2srhG^{Q{4}&+Xr}?@mv8#>bxzD8JCrH1?FXq%5AvYCOla z>+Zt!2+q3PgX?d&UdHtS{2ZKmdlEjJ=kWn++U0kV`Sr&wqp)70PhLw_Qg6?CI57WT4w;6NFIcJv8fU+rA(Eh%tBPiaPRpr5w11cw_Bx|4kT zmcnpTFJCwu+h8kfYvbW~)f*4R(cy``g<(EyYvE{!e7JqMHh;d?if{4ZJD;1s&kZ4O5_4+qBl+Xi?zrkHx6e#_+i zqK^kH)Y26BX=2(l@j$mRH{r+O9*!YMGs?qp2EWRz<9Yg^<~cZfUeV8gn4=~9u=UFP z`7N+XIHyZpd!oT{oQGp9(oXkq+-u~6{K({-qK^l2CYGk~!=0O(1b*;aA0vbxlRX?5 z^KUEkaC{!CZ)@@+*||U;&tgYAB){xWN8@jbCpD%{1RvUgZO_|QfW}6LZ{a{sex1Jc z&ujVLQwZsmZRpS}t&sdWJVt6veU*AR&{uCmA8p;jA|t=m@Uity4axUL@mnvs;CM0U z`22vKZ)pfWZ2vP88iXfZrq|?%@B`}@0YA3GPg}k>kw_PjV{MQ=a(QFWe-zViT=p|0$ZFu8T5dM@-$M4rx z+>dXnzN;EvWWQSqea%vDGj_$cr@)WP8K3-M3g@Jr9Dk?C$&k|Ejb$aYPq)2+Jg&g~ zK@UIrYC8HE*Z2z6(&2wo`^tBk-vPd>RFebjcbYA}S9P3iZvvn2NAN+rIw$hpG_b4e zyZz)`=(f+0{}Z^dz7X&QdC}3&xF(0GrVbbSR662D(a*RhAE_n{Lj6oGPDJy)!*D@5$TpqeZH@Hr zsJ#|P@qVM@RI~uzAM-f|FLCXI^x#=VLytaa($UYjy_OMIwU*P0{j@LhuLLrbquJz0 z{uNzy9K=m5N1Kk#pL)XaOTTv$Uc#@wpbMT=wD)lJA|36gpH#D%J}%4|)5-VW2SL8_ zRP*`v`|n1+DvTsm^arkqj7`2Ug>w=4%7NuG68)OSH4^!QXB7u|xR4he{fukA!jrEG zV>byd=%9*Ts>N|pT*Guq#7!)hKD$<2!{r@P7S{~WCC{Mqf_g$;bo4W>#Y7+1EbS|} z<|5u8)v|LGSGJB*F$=in@i`4#Gv%$InqP&WOP&#DwUHm>MMpp5S|04<+N6C2*H*+E zt6IJv#U+{Z+ZCZ`%ETkpR7T|X|?iZ=V@WWJM*vq&#!r9$1Dskv| zl^AjdY1gj{_=2+15tDH(zw!BUw)PdioR4^O)!u)N^5qO2r{ZkzWjUW~<;yhL4`<~F zI=zB*R_WCj@}i@kaeM#6$91LlC9cYH#M`P`T@}T3nT}I&C2+0fbFH|v#Xm*Y7j=3C z>+B*A*FABJ6r9{T-0)%qpR4q&>9M|B*;O)R^Z&*V$Q4j><${Tt@bVs#Qu{1&LCx_&C4 z%PY?XT>uHnfxPMHXI$$yRcluc(=Q87^ntKh+IEWKd|jukcn3Il@Hq)iYv*z%gzpj2 z@BQUm0Ke_Io++hYLGlXNNfj@7I8FacKjYf=@a!%t_QY9l;wF}f zT*lyh9C6&Z%g1TnNDLb^!q-alf8=e&M-DGB(9zGhc5_twfUlJuwXfhsKV0!|)&A88 z-pajo9K=m5gFMCZm3ZB_IT_v%e=83~ekginQx7jN(9zGh_V1{64)5XGmw3-a-JpCO zS4Z(4pyN~?4*el?V)*+I;&cw|LLaZ4ZyOHVyj0|N1uS&)+SuZn3(w zpUz!%+^9M`+#|HF*g<1Z?$)Z)IL{7ZJF7fK$Eh3vKI6CHvnjC-6TK4O&L-il4$JXw zvV1wWPMoj}$m7bRJeRc7&(^?&;ax?g}jL#y6HTe{;kK9{@ky7|{F7lbKc@p3( zCtdBQpH%0we0^m4WA?Y({|f${uexALHX;4lUib|;tNf8pS$RI%OAkI1CsQ~Vd2fPW zpTjZQTZ4A84r6QH^>=w8f7G3otlKJ2{%+DV>1SM*G1N!T;g{)$D=*a{l{cxxifi~x zJe5D^Q($lN?Gc;>nusKp{&o=F)Y-pge`{%0Iy++Dd7gb! zc^mRY88uqTzbl$tFz&A0sWJ7r3vupOs_048b&jXMn66U#1l)I`{GTvB%g+?fQ65wy zjP}-`7eG%S^6|J*Reg}|4v*i+gN}a2bzQ6)IXQk(`;vOq1jM^db^TWq&!aj{<&!G0 zvLT<7;?XnM7SC&-cP}pJh(KP^R_N$wT-OhMJa1@UX;*I{Ua{&{=Cv!~PqmIy`3CSn zR~S6uc18YhUCe%m9KS2U%S!O5@&ykM@}Q%iaox&Q!tv)*?JIb`M7(EIcYpjUcue0~ ziEsU_gbb&^qvy#HgY{L_5%kET_dGnvgN}a2b)V_ssp_nKiKnVN;=QHzIh_2_wb}08 z-Rc+N55)xz*b^%cF8(NK1ccd5PEukqiPlS@uk}5t%$r- z9jH@QVa&F2GoN?isybNv>i@z&z6aK>dwi(&%2Q1PpwhnXMJm);RSyr}D4m{u#_jW= zY8cXIRi>}48l@7e${CAftA_9?q|c_s>$9rk7!xT@(sy~Dm7zWxjQ5xvg}I@~_`%Yw z>KoARg>nb-Pn`hV2Cc-|_hwI@Rh_KUiT;=m{@<_m-RbEMma=Mwj)S;~RhRKu*m{@t z)&GV65q(xwgtX7#n&R;rdC<|%xPAZP>5r;q+Lw4v`xNmesQo5H@hsJG5I3>v7CtA% z6Vhi@ke#YoxE6VMAaiu|Gj6}>KAtVwSK4a@;&oU1z2wQK@MoirQ?&(nF66V|snI^7 z`mE|~&?Ar5czBQp9sP{k@1K5qIam7%9^{2K)8p4sJZI@RRp$cFJ$z1zC#=tQfF5~t zs)t9)qy02h)#G>ht5z+E@7TFydXPdUlKQW2cT&^=Fk>J(tg-&;F!+_5XDAnY67P$OCO9z=u5P z=x1EdUessR2LE%~m-x1KLA*Ou&vT;qp4M@yo}!cFSAD=Ip<~yjcw#ff`cKs-Ora77E|I%_E;D+Y_}i(t^`9d! zPjWQgQo{ZH{p`vQ`}2MBRHFAmxG?{CU?)M8I2afYIXa+UZx5)Sy*jjMAdGkuxk$g& z65QPfd@gg@8oASahClhm^{VY1bet-Y2YJrhTQ$oH!XZm^RUp3o7Cjt?sVSt~g5|ZK zydyC;XyjYyLB^N<6?v5N7xLam-|@fod+0~)FO%;i$lZFe+G%Ix0}te0HAGF9;p*%0 zOY^{|mv^RW>iBhnrY!t=2>EtUc^CTpnytfGfbBn$=e+CfxXt9hRs1+U;GM*C@*z`^0lyYvOlfQ+iC3-prRP_X*GT$`>(P+oYo8yOQwi#S zo{r?j&wEVm?f7x34oBu@?pEc!tUBm%t}Sl?@4$4mviY?I{Kg|@}bw0k=Mc??1=Fwul>dTiDSxB$18RELAcf+?k$jWypN?f z>hDyKrcJXa?*X5+toS$=xApmajm{N?P86LEj3=nY`$y&KLii)z_A5Mu!7F!)(7F_5Qw&EB~Q)mcJwA zl^&n`_4Xl*Lg`M#>@(k^n2(pe=c7EWdRzUAk85c2q2&G%Hmw zp+&HpV4+(nDi(A_VS#07YhY;t3n*=q1*D^*#@M@wCbrc?qxoB7>}CJocV_0!ytnr~ z-hHw}=l$+`_syL-^UawvGiT0}JM+{vFohV#_W zC5iIzS3LUwwv75V3H+iYChrpdyhdNCch0V<=TUi5sI?aM!2M9kUvfUNKl%pO+b$j9 zM-5{s(x;#_jiF=%kpQ+p%^pIaFjiNHKhSkt*)O1{%BjL zT#oA!His-CF5)8%T8Up>ez( zq1!CsPcEccpIm<#tfUi!zUd#XnIq8^_-);mgFebBeD-olKBP37^;w5&-Gg{8PS+E)e+Fz+62o!6Ef~${65-yid7M$RuqCr+^1^ z&5l#-sm}UDXZ^fs2fv><`dF>6o`8pZZux}q?U+3Ak}uC+O__x>Z`04jKPO0! zy8?80qo-XfQi|~4yK#f7t6F;9Q602p&*6F$*FpMevi5Tdct+>Z89qkUa`hcNqZ9su zCdy+tURCVs^Ai1B_=|Z3$mHvGo@##!Kmg`FG$8s_5cfUgWZOc{4 z>c7DDZ~e4Vxt1F_2CwKmIwP|Dc8J{x9Qm4mB*HzXMl|;LnveX`k*~a;@`@U9q{r8M z)4#~`WAOY(HKHhiulcnR7vb_-Xj<}3TAz`x`J$`wK9hHJ9=#EZRP#W7 z^T8WB;d39*{8o*)&*$^;`nm8C_u%!2$9z7UK2e_c#q(p-h<_&XxeNR;Cop!KrX}C7 zTaEca_;WGVP@;MsMk5?mWCFb*7_`^;$_In*xzO&$WhU8OvX0|Jyea>H} zEy4Gg->X6I5(%oqC(AGLK$j2x7&o$!XNSs19_S>$QxL9?8hMbP-%0wpJV{Bu zlFB{uM3)bK88>p4YV67zd7_j2uSU4xYUD~k|E8Uj{G-PNzea9P%>P~RUy1w=)wJZB z`4>A}{$l>G*p09K1HD7%KVI9>Zx*mzxDKs~UZ=(Ad*(+O(kqdmI(#yDKpyGx!9U|h zKBV?{{6HS*gdfly@~5bgulxLXOg|?-3J=Ef>1yO>iTv0C|Hr_OJRMfP$&aNX4-fKx z1>1mw68O;<){yR%^yHt$7qpN0O$C8`C6yE8l`bEAG;ZWK>LACLkF~Gx zzB~{ATs>aR{|o#-M!u!Q4HfFUGbG>AqD#GZ<5cROe1p!_YB>6l5#S5Psqy;m4z_y6 zIwEo)YSgD5pQoOop9`ORag++zD#W{d}+u3BEN3`OAj+j7z^7TEt(^c?}Tvz3YPKS#~1lA09PmRk}vTO8;|+n zPeYuObeyE+jy%(m-^Pt@>Dl$BBF}WfpDPirl^T7F&!1oG=fa z8(a7p%A~CtJt&cX=OErl@b76&OTNiJu@6kWkpC0LTUxHz3M5!oz!xo7SCoXy75dz% zmq-fowMRZOJamDn#+HzjkKhd*%gMOWc!jQ$Gw_B^_&68gdZ^J?`g}C~ituqBp7&Ox zZ%gFUP4LIO!F8`|TJlXkT`qE#$N$oCLZ9-L zgE@}z*ng(qC`E58rxHG&ZPp#)ZQH*}^Hx*A13J!M7&m&pYU20>9?*ebvC*d@+?8r{ zsmCw<6yq0ElR}Ikr(UZ@@Al>HZphkQHWa4Lt~clImYa5AjZ)SBjCiH^KMv19oS{V? zbUUu5u9En%PY1&v@l4!i z^mn9tAbwefPas9eSJrWN|L57(4P#GbcO6$Wrf9^WH7CrgR-n<$MB7JKF#%s^pe-Av zE>p*gb~@CI^+w@$Wbh=BgWSi+Iy_XQb1dRBG~X1=d(QNX1wD=xFE?~6?}FqT%{UuQ z9OX)#vjW&3;y;w_Z1DPQ+|*M09j|Itk1OA|bv~H~({BwCH1TCjgnZ9e5B&CFxT$YC z`cwZ8_olCAdf9Wl^PTBoTwJ=Jx;TM;uj%U=H5mET?>^Ig=Fni2EI6lrO! zNl^AIwq$(KvTXUm82YT1pL$ji&pb;0;VDs3P==QtPLY!SZNGq4+5!vfeP}*{Clv8Z+w(VN)Ih5+ETid_2-X{XHt%wztQc8ZNGGzMLKM!)_d}>4gVjJ zB;>2sa-%nt<1fd>wjCWL?H$`tIg2!|9evQzkn~+Vn?74#?%mYs@AA@r9C4v%Sy!tZ zslo{zj%yOrHAG7ZVLTO0;Kh)_@`&ubfH#NPZm;T)x z6#^%830dzuShbb^UVlFQU>8SlRL5@Rp7@YEgYZF&A3D@H0=@`#X?~m&e57#&5edlOLR5QUX{n%1+Jb?ABMQ&9PYaJnRbr2Q@y7| zpZ=}Cjc!dUak#E=v{T?>Z>(`$>EW7yxbr<+-$%lg^4#?4lN@bR4{Uqx_;t2u=4TQc z9mlKFpTL+AyqbO+eow=739h5@e+4eIodwX_r?Y*k0w?l@bgjNLeKFF4USeIno~9n8 zS8nbdlp<{j<#vywowVF&fw$#`{0F%Hh`9G#R7%yG5vknlsoyeIBb7LL+U{rzF4qsc zax-ru7k+K=a6OE;&wIFDHvLID{Blwrj_YYhJ1MTdGEVCyxFAOXzc3dt{htn3{R1Q5 za#9|S3;n;Pom9>TC&>A$h~w!2(?7ufuRMH1BgmPPvT%IRFD&h(e4}PJ0D3-gp>73y z`yTbJribf|H2KE1%6&rLuT+rZXs5&l-Ho^kVh&e9J^c5^{|%1J2v_L)l?pH-vb6V5 zo}$x|JAx1GlI2^$p`Za z*I;V~d`r^57j$*BQ{d8amIu8C@;?oAdfF~r>s7TQx8Zsc7yPT*NqM1f3HXA(x&Y&3 z>l##Kz!$a?A?`T~_#oJ~`kQ z`(`t@Kx_?XWq^ylP#C|aIoeYH-23tDXpq`rrT60%OwsrXRw8~8u0L3=0pH(@{d5BS z&M@PW`1gh$0sXKIRtnK3JYH<^&Z?<3M*V#Po>8OJ7CSowL7yY=sr>$`gAr2e#jMe0 zL~q9Pwm*%thZU@G*d_n&eXlzIc06ZeBTG^~&?i_v1)G$b;j%7wICKRqCc;r~^50AN zD*o5j^W_CQ7y|LJH+$l8-u=jb5Ax37u=?9s;1Snxr`&&5@F&Iuh3E9I+`p40f5e{E zG<5$N&mXjwcb-4kK|T{T4a%wH(aHf+Ca00vH!RPME+FT) zypMI<`>PzB>lK_!!CV)-p=lTV6Z{Zei~L{==Zt(>zErleTRR;1UV#2xu2;a%a+43F zO;-Rv<8s=m2D0B#aDJnGnQ9^0E1Wr#^HL(t|L8CUIPY&F%HQmF+%rz!0_Ed;2kG$o z(BYi1%A^55<8odnPU45fUiH(I2Zdb%8^Jq7xw7jxg@&XnV} zPTPK(W7%BYKh9W+b`JXvC+4|!PGP<5#EDHBG%#Ll*JT~4?x`#9^Jf2>4O^)_=L6x{ z&d-1jOgCeJ{>69GJGd^?PydfP+>EV3816Gy1+rdu#zy)|d(3rb)?%vrY4-be|Fm?O zLA(7Y;D5o#1#4z>|Bv*bix^k;Kz~1Rxxu|#KlQ>jU1atNOTOOK&ylF5*>q*X z{=6AaBAs{f{AC?hzLBpP_f_C_#xwjcc)32#YJjpE5B|ZvOuZy8$k#`R`JzygFTw$V54cF!tqCcLALY)B}hGkNSbqR&*aDCxu?u|RE2XHMN9n&+e z>C-A#)~yI1$qG2;vJm57?BQ$rav~o;NBjyEyA}Fe;K;}4gpXg*Pvq0tEop;~U+H1*?MrR zgu-*Q0me0HiSxqjA6tH0drRkqYj&tv*DU$%qMyq;-Sbd>>s7PP3F~wVk3oEdE9{`d z$~W>`*hKPs0{@G?$$hFizk`s+@vvU&yz<;`&i#%>xS$-hzG~}5VK?v({I(AGrM}+^ ze>(8Nx~4^!soRGtsg(U{uIqtGV3ubPdtda7wZ3wwk9An^G&HVOPP zf9)lIed!yLzpGJ}w!Q3*wG;N-g3$fgg-E~9qc7tfFS($+PzH45hjGpF{rp^{eWko` zkMeC+%3&v~lZ>csLK27jD+bt`@Y$Nct}{9Zvnkzbx$smn8d1$w1i zn{t(5$gyah@Zad)g&4~hUP~YClIA;KKPR7zYgVQj#q~3VY-93)d!h}3U*f*X>*rYS zxPRWtq1`ner*5jb2Gl>y6Li6h=bEY4^CJ&UAO`9oD_mZZ(MF369;K)uAc=I5LB)RLdiv@i2B6T*VEtIda-b*p?nvxa`o_0nZe zAiuv>&2LU@pTCoEvD;eMB=F1p$~t^)>=Sw7{#0L{h?eVYsMBH%K4T+4TAr>b(XEvs zY4cCrY9{Re*6k_(Y-8y>{R`)v>UGePKhtlqJ)T9(7pdlVCA7ygn;}i~^S529X~{Rj z&Wy1jX)n0WS?AA{C-X>q3EL07!%%EJ$@x1#j zwaLM{gPXG*AzdQ2+oloY$w4ce>@16}=;riV?r4HMGHNv}R7ko^gGZ z&NuZH?noamtAFq)sNXX{Ym%cQ{d~f>msr_W(apS0|KdAmv)Pv~&+pd$(ypQHD*Q<0 zJdx0D&76z)cLVq2fQGbNGjEf6J&(T9PCMK@2jWUdht3C|+xF^c+26(F#0B}mS-`ii zF`oDd(^~{DFw)IL{*B9d(a#TT^mLLR+#~-vZ<=~6@gMb`qn(~vqH;b-%x@X|5pL#A z9ag?kA7{3b{BGudkz0-vbUE4lc1NzSLB6lBIY<7?e&`*tuf=9R$oF4B*VlV6UbuZQ zF0>(ZZ0C%t(U0Q=-Olmc+jE7-+<6Tr{`-j?B{u2*RBRIVA52*W|8mfv93ZcB9=)8e zjXo~VpV7~SZ@8a%kIJp#^X&!iIqpF(x26C5J@MZ&o!JBxll`W?yP)^uyI0fxw zT>1SS{%^tme9aG*5Bpp?=F_;`^NhYF&q0$;`e)puKhGUy##8eA0QdY6=#8M4drLz9 zJ*yu4u}{!zR#?wtw~PI2mfN2|eb+CaWck*bi7O|YZyXRh>3$WPe3O)?24=pkyjss$ zHSC?rz0=Px`%$#V*7^OhTy8d|nZus>?-*Om! z2jV&rfl&Wb^~VdoMHsmMVShXn?LnpeG_#J;xVV>Q;UTyW>5pgqTIZ8_*h7EZ6SkjV zKMng_OMlimxF4d^;&;;iko8r|ftq!p#EJ2I6Vskr`aC;``-4ZY4x#_&+yAa+OUH1t z&hye8iu>^{-C9R_>lIV2`-@)(5;{*l3%Z!4ZN|CD@C}wdI$VR@8>3%1!Fh#;^G4iH zb2w|a!s(z4hqf~1`owsgq3da8-Qj5O5oc#`GZAN=hZAKn%jg8eS9^U%ID24TLY&vG zsaeI2_8xJb7=rWn9?liG-=x#vcbz4B5hwayOM8zvJB8pxpB>bTZMbI{8&~(i3~;u? zX|ZAaeAv<6BhC&XIMH7QIML_N`pBZhddI#Q;S4W#jHxYc!Pyx7q;5wN>-k_=kKjpY zMIPefn$u9J+27;0jZ*Xb;JR4F22WG5&AoBqesfD)?N!#&?_3`C#+}q-%$o#!`VVmA zILh_@X7(RNsmJZmhK7{qY>>6I*$>)wayIkc+@;C8J(hR-kn;Y<s!3XqY#k&*$8P#tFm$&fcKq z=|>IcXCS91CXv(MINIb7R$l7;Fs@c}S6Xj;WRC&4C4B6!@y&)D&b|nB*{es54$$j2 zzpD>bYphw_R{YcV0J)T8Jj#8{?s#?1^q0~ zQR7()w3BdrWKZbhXvrHjnfBM~Z|9)@=Xnv5pw})+xQB&i2IV$>H9wi|m_q@BCA+X_@;uqDz!8*KT}@ za@j8^&$#vNb0$k!#wNoupP=vd#Y#u+G(QJ2dllM_aj;a|^MFoZ>5KeM^5l0mXf5Xx z?V4wz@9K5=Lcnj==D_%7X`A|BRSSyZK~TSKuPl zH@!byDcsnM=d%U9^2`|SrK3?c` z0p3$Uv#*DDO=P^ClHx`GZfQrt%dw%47y3nj7i0dpmpQx#9v>O6-V+_tPR)faz|xL{ zw@U)v^F6#HKy!kJcXMRCU6S&5jH4}hoj$&&e(MB_nC;qJ&M%mDZSF+;_w4R1Pl>FL zcT0*l-_eeUH|S|A@^rh#HexR7-CW4>T*${<@Vw|#Tz|*D(muE@R@Dyw78mAO=fVzN zgm`RRaj+^csTRxS-g`L-h} z!RyTf%-s%}PddB@ofR3co(T%8KjF~BXJTl&-deq!c9Bskt#AEoy-Ohd8{gt3}2er^opEOVI(2b_RGmV!yD)+uXwon}1Pf z5AT@Bc$4ZcMc|L6EqGf5_JZ`}p}p!P{5{UYdm3oMK5kv>a&vAR?LFz~iAnXBqTY^n z26)?Zf3V=~>ERs&n%=zo!2=`XO{%{X{npXW059Ky+>ZU#T-3KBj17x`d+u)hLY|BM zfD7vmiXba<(SC4lrz)KAi|ZRq|6X(>(kyT(9lSd-zmn=tMRz#b6}yqf{t@Nz1e}X2 zy@07lc^>ZBpk3l{A94by!%4ZMCzna}s3MI2E$s|&v%Nk^NpE0qqpSmd-wWE?J>1J9 z<4&qi6>V^|Gr-MuunX#xIFS>`WPtkt(0&oQbHj$bD2#XV1B_EIKd=$N+)LkH7^iMAz zlaU&nwEH=*LGlE$b6|;t9vS$f->P;p;=LhpW0N5tB4E(8M^IJ$9fVQFHtRTA**a^>HQee~Rd!Epn@#=A-OiaJw|2l^E`Dtn z{N>`;cEVpSer>n=<>J@&yI(GTZO{AV;@9@QUoL)a@B8KA*Y>|(E`C}_XmR}|=RjKs zf6h5bZ%qD6&w)NOZC|{zAWWm%lOC5&8Fczt*MoF&z_ZkT`Eu0m7oP`O1b^w}&<-}4 zUw(}c+u<+1EX1Pt^UB4KZNw4~zX~h8HcDIje(CkYTK|6O`LNbNdmdW)_I}!U;$<|sMa;M0?VD1i){+_4cd%)FR za831a!O%NzlL3XF<4Q8XmE^qZc~}o&X*1nQ`%HSMK9JS^vc|Qq#=v=>0;~a?hPfZU z*J3{AE$1!5FASw~u->(*o$v?g(T+P0cKmtUaKWB!-Er@lbIMPE&t;~*#OI@Oov9=p zRnQl)E=0w_*2iCuz;hA(59;8$a%b-x5<#T>Q#)#OHvMpuN|Ruzo~M zzwchGr%}?k65#qJha7d1&aapAf9-fLa_{8IuItx(NzC31iO=%ufwsrgGBuJ+mH9Ez^+yU57BjbB;nUH*AO!rt7+KzU0i-2}ed z9zo7uNwPm-{sNchP=2vhqZSG${6gO??Zj%t^VTBpdHd~#U(e%@es7kIO>UhUyc@v2 zTfoZKrwG5F$PrU&D{@s^&p*%qBPk=T-70nm`f`2V`~3TOC*fSbmDV}^^UXSh`F|n> z?dJbAOK!|Miks!Un8Y{ax)VM0IsIJiFj2=R--IWI=6tL*G_K}!b56fJhkPR+N~4z$ zIkn6={qh|3n2zWE%zqtcrM#eWTHAAbYUp_Lp~uk8$JxbqEalygxPl{`=wZ))vi*^k z3VVJBpM&4?(Z9||)cH^A@RB~#q@$m4IY+5laz4L2|5*D9zW*TH<0>~h5#M_{%>0jm z59>Zc@oD+6_-wri+czh~1n>7q@2|MZJ-om`M?d3o>!^kS-eT~Kj(Cfqp@XN@`y}8k z)eys`pt@MAksQ$2g7Ih6YFN>)v8i%^bxc{gcC5icJro$8;hQGmz%VHVA%kZqXf`63$ht8KhhJ-0=4i2Rtb5fq3USI;I`7C&jkM_#$>x zJC!}5Kd#RZJ|9yquXLeUnuIqjA?{s{o zZCr<`3FlZ9pM`W0uJ}S51i#ggzl$nxQ{0!nq6btD_+r~L`s4lby8PteGSk3Fc=Bm9 z=*%Mp?a(g9CKbaEvcdEqC$T$*;ikHif__k#_?N0H=idq+mgyKsRF}zc)#1y;d=?@dgezWbspFUO z@u1{$Hhl$eZXh4-9N+ggQ zL_CBmepu6zZwxqw^3m(=`1`%t`#l(ZARht(6yuNPJ9 z&chJL=oUy{*S{}yeDdG8gSM)gj$hybo%g&`Beommrhb42biyyJYb#!km=*h&H(RU6<~j__&}2 z_&619G?XGb%f~z0=>J~3eMooJ)bSC#q4S=1I!85id<1Xk$j1d|Al#Fx)0G|{7nuHx zd|c23&!1JDCMEE30oojdi`{v#rX}BOhu&fRTp*f8#ctfX^}apP2Jz(0^!XW_pG+ho zr_v9CFKR(u`e>JwkL6l!mvEUT#EBWn>a9^oT42V@8z}>im>Bn?$rdun?585g8(Xl(|Wt``)795A?Mh?Wk zMv!h`ZAj^_$FH%e=c(A#->TTmWuAP^)d`Z%#vL_7H3{U4GDGJ*@AQ^AubA!H0@FW= zeBr+MbJgh!U%tR&I(dF0!k?i!*YclBFQ)79V#qSeuk%5PPx>3Qq$+a`sdo3_D}Sx%Mcd223^u} zpuPqjn|y3BPN~H&;M$36g^C@G_jxsa8vdJcKKfr(cDDs8cEAvoz2JP6efdO{ec32Y z`=@-{c69;DfQ~w$ah=aF=haJjnsJ?!*HVP*p*j!p%WIL2CFfJGz&PzF)p-P;dwTE! z^pOh|p}hWXlfW;_YlxH=dVBDR;oUi1Vdd36QhD7A`bDIyU4p*cPRfP#4B?88#jj`; zUU@TqJ6yjv@yktn0v^z@oQ>-|(dQR4o#*)cddxf@f@ja+ny5OjO5|55 z{2v3qzSUvnI|jdE;g=roKMvofLA}@fvaM{qoO@C(`HOFNhDhr(B;dzuIM3y1moE5L z^KzAal7s@EY&gp4WWRm-)WzYQgiE0(K;C2dmqXr}4~8!{`~}bGST4qO-s$yU(ChrA{~Wp=9p$-fq|oS6J+XY=hCjkB z_*jRPZ}fi)wo3W1B}mjG^m)OyB>d53+-b?eH+_Eo(Yj!46DRyM?RNeV;N3B}Q1`4} zFd2OU9mjdbbvf443l-5 z45y%*F2pa-y7kYUXS+hj=ZnA7XWgE>)tz(8^l>I^7SF3$cs#E92#oe3)j79|zY>zF z;#&OjwChorZ8%=6S3|KcgC`J;!tco731>w6VLeWJ%rJAFZ-UG*kH=nF`*uWz9)cRi zm^{m9Ea>qK0GAuOm91iz;k=!z@ccS;9O8A8?7fda zT8`AhPA&{_VrCs}iokIL#KQ46fcDu0gm*|7%^&4MwgWhfn(R(V^=X7NY;Rw1aWBUk-Yf zy}zKnKqHWHxzNKm0{2raIv70f%V0i&`^&=kHpbBwe6(lz_|AgmyeH&F%am}iA`fxE zzr~QD#n9&$p`BP<8&_-Gqb*qUtixIrcfy~mJ^mEneyvL>=d;M?CMVtBy%2r5r5(zj z^TPRa+QTYq_5&(*L0_f*4gP%aHx;|ElZst*l*+pHT9w`8VwJU^p^82Et;22aPXC)y zr{P^P7rdpio8nz+yC$pb#^)gZY{c(_`}+|e=fz%df{HzjJ}1!$f1s1w_G2M*#)S{K zP`SrN=1#8Ew3fd7u-)0>;d=!4FM9Z{h>S1ke(Z(MINB-jarY8y zqLy#sgKZ(;ANu@-?|JxEN5+?Qzw1Ki1(tRSeB7NBkMB(n-~Zv>lcU^sBjVH2A39&T z@C!#f1wQURipK|CC*U7coJDmV|EeDn5ucX6P<)GOING83dSFJZe`Wbwl;iL%Y6Kdv zKUr6ONJM;E`oi(GbhM?PugLRyxD+q5rqEQ{dz7w|IOPdic=)FS_29ca1@j@LA~$$A|vk z(oTVoyW8UNdHwIAn?Ylthi`Tyd{!F6@lAHLQ{dz7HHR+`x(M~oxhgAbvWmTp_Y{@i zgzEy_!vHnY zSnuMbKO7%yXqI+Ld|nL@e9wCLUIUGPd-(8j7ye6YT;rra9N)W+c1nC+4G?_qc=$d+ zeQ@wp&Ggp``O+7T?;A%uB|c9AVIPWr?-A<@bY!b9EXG)KabpL#=8tLf)0f6jyo>8O z+9~mR8W+QHd=ubnf&XnBzFMcGjn9|HaD0b4+9~mQ8kgW}?csyXZSkodz6ojL^QAEy zAIATdw%|(~FY5Zt-K?%XCjUG;z~XNBFC%e{vDW4^+nac449E9tM>{3|xLegA6#ii> z8%f`#=T<86DXmaCG{e(ol}P8{V4a>0tM^mn z#)WH3TovU8Gx}dTv7>H<9ra69XL^GDcrp6<#hYNiMg0q07Q*hr;7Tomllcz&2fqP6V4{Ql-nu$P=6$M^iNzRW(+Pg| zHA_{Ub&2>Nl5nwn)X%^H|KdLo|KdN>Ps%$SKThTG@F(^kHb3ag7a$$$^gKj;HxE&6 z_>J*09rJHoo%@)d=kYHWX5*9b>=j%HxA-W%k>=eYSn zJu7YaukER^e5^Ife^bQ@p-*`B%vkH_dsXYUq4!G-&u1| zW0thRRSSVp4yo+=8^Bw-|LObdcp|y6=#x*h=P!u~EO~d`hNE#G^8UIdhw6MX4^kf* zpr6t`Rb_iVPqpIvWM4&`){g!X^#4n|b|QO@X`esU>DzBluGEtDE{;jp?z7XWaMgWZ zq~^7DlJ4<3-6f|gbvFnv>0_zmy<7h@>9T%?wSV;2^*}A@?&3;4(n@`d&#j(>MK9*ErV z95gMD{#>7xL#~s&95U+f`;_{-WRB)5Q(UqPm)GAm-Vpg5PtM|m%jH_39h*JS$T{td zd&V2L_fzEaUJoyH&Lxj)Uh%u}eGzcU_%%H8jQ&U6UsI?o!|9eVWBxQr4m*FO zvLEF=Q@n8{tYu&1JjbI5*{6$>|NlB3nt5d_PyH~jeHC`-j8!+HJi_E2?c$QpaGCz@ zZuISUd-j{A9khO+Q&s94gpV~g<>HrnV##n!6u(ZTs?PTa)9dZtZ`P{HNI3gj719tL zNmZQ}5*-O=oPQoXsj9PVqVuHV&xR*ebt222ctT6y&!ZMsM)JR^#g&o#uWE5+B>$^g zTp0;#F?6>`dOWQ;R^Ri+8+W76L7xBjX0e63IdowH< zny~lu_`BbAv?bro67(d_68FPA@!9Hvr20`F&H}*rYIc9@<+>JQZ2Vt>aohSXO09ca zsa5YNwfrv*|K7e6ejyF=YiTQ7S-3DpwXW$-bAEAs_>50OKMN}%U-Pb-UdQQWY~fPr zV`2E>B*@4y<#7*s*wVv=SFzdWLr!-iJm2S+T(7sQMF(Nk;Z4xfcp}b?;OQ{Ll<~;Y zL!8_$#h8C7Y~9v1yC;M9`6U^DE`>e7(w6<5ts>&?BYQuFV|5iZ&7s6tkq7J;Pc4Hz za#=a9r*M^E&%0QcJA3O1mEHL*6`S{Gyhr;|thG9e6n>hc94|$k zvGsl_(p!pgwsp-uP>^omcb#&z5~#qk(Nc4w&z(Wa4)c{u-O3eFOL6xc`M!WeH0#u86=R_Zad zWqWedk3hS(0`2FAO5M{`sjVeS?Y={)XJ#t(_NH}vyTpO)bsa~jLmdAJ6f`NawFJKfYL zj-eQz(&k(GhJXt;{|V(IVYU62@}3R_pM&x95c>u3w^!V^)#Br*AOIvvP>~OS2ew=()#_8jOE+63g z6KK5b@U`p`QNHc^o3M8JSw~y=$bF-B9F@pNwogOB!|NdHaKcB7H3FP}11*l-jB9xd zcA>(ht@qn?Okp_xA+%$&q5lgXxxOkH&b}ypvuU>*ZVjwILXNf(6?^8l=X7F)70sY(Zp13gnUp|0Ov^%JpZYO>KPqS*6`j|+k za=ol9R|)d()z6EuPNODj_TKogu4jVINd30@C1qZ!MkSudwUf(# zL~e=J9Txjf&c+G^L{>))48a_*_VI;EE=U+<6N~2@PzJDT@JgCr5%cAuzqjf@<%*8=<}C*_L_q` zWP~U5eAwk|I}GhmdF_Edus`;R^Nd)oTR__)^$B)%=?6bS{C9AD?f7-@1S7A-@M~w} zwT;B36x#Kv`t(Qpt!Kcs#u~mpm1#46<#nl_BAuAfZ!6_Qon}A1{&6|_Ym2R-9RA!- z&6>!WZ!M90e_}g{M_!{_k=mP#G6$iihh5 z4;SVaN)EE9lscr2!Sy)&(zDmH#)Q_FlKma+B>X~+akxsFdAJTmT;Zg~cF4etaD~>J z63nw$+DUMs=6JY{_HcDXT*$3;hZJRmE42QUbak|o;G%qChC=$mtRKHtSrvV7t;Y2= zR)C(5Yc($Vx5jlXuIKT;HLg5dxX)_M*gxH|-jmBVRxG3Ka7xbv0JwP8_Qt08jI0IZs z*1eTXbF`D-qI^4CuppfiC5EuQhb%z}u8CTMIqmqXm?IgG;Uk(@S7(qE=Y+mv= zi%O}(Mn=Y!)E-@e{@T(`f{XIyaJ}f^dJ}QIarj~DBI8PGcP>F+YH26IMfp03T;Vuk z#R0g`X03o+twcY#9Q`8OjuMpbis}qibx!2_UB{OdSxB>6C$hAY;G%pBS14aAx_P+z;XlT$ z)*b$BBz{@x3dePxqn!j7<;&q3?BTiuaj&+hlse+HNVu$Yh2t9SXeYr%`Et0>76kG& z4smbyaOFk9Wu+?|*F;A<2``2F z%6Wi`x>SJcK*WVyS=XjGZCt*ThvPcJ(N2Pka_(@!rV!vd9&s^#wXV%;Y2)&xEF4!C zM>`G|SMP?{iB_T}2DrK-?m&x5siRt_i7Q^poIS`d$G(ns5?qw8z<#yzEDzT?h>LN! zbw^#E5w1`>(aIr?b`o5aFNf=557$Vt@8A z=HdDvBV3_&qLq^!?IgI^jfAopg9o;qqT$Ht=GzGCc+jgwj(N2Pk z@}+U*A?%?lYsq6Ot9Y`?x_b_O=VKrDlek}ld%Q1T>W8?00rwB7*tEL1|G=XD>A%94 z-+O%706fn*x<_A=0bkgXhVf;mqn(5=lyA$I*re}O*8H!K-?NljjXJyfS*6y{28Q;k zgn9$?=M`APTl`n0)^2r}dADdf&T)Djaod1@w;>GL-qqhB{_FT1g!t?Op8=l52vdf& z?i=Id3tzT*e0dpR(I;DX^u`SM!j?RYFR%qz+DZ7r`sL*KH4oRn5Ep&2bw_`Z0WP-W zVYohXw3Fas{W_6p3%@@0aD9ut1Jx}mrH<(w8JBL!LvXEv{$Xh+!NvL&;93Qng6&sU z)j`|?JX|+N#-;UyFkH|(EbSz?DBliOV-Htr#D%VD-7ybD#-;UyFkFy*OFIcJ%9q0h zn?k@Z_^!hE*}Aq_k#T7~Aq*Glv89~^7v<|DrcL=;b+U)+O#B~eQ7P57XGC09PYA;W zy~EN@f{XH{apfWGwYYYnuAGGnZ7Jn#73>VF);N4sbtim5T0wb@Lb^A&)Y|4po@Fl=?3*t`qaM^jk$KjW1e$AGX)q=xtVXS6pC&5MecDU~FaLq#8 zB@WlI>CXFETviJX!v$M_rJV#9<+}q@mvWrv;VMB~^h?$qo9?`y#%0lkw(F~)_gLCV za8bS;t~DO6&4~MmMTPfbr#tVb5n1U9$Av!K(oTYl^5t-$&IR%XIa&ohz`A48op;l? ztaOFrdePBNf{XIya6x|xaG|eW^>2#`?~P7(-c94O(iM&ic5_Rc@`DvO@%w3dK)QNi zUjA&m%D~7O^cdn>^$GUAAlj<0J$%12>vlecUy}L%RsVHygdcSh((R2@xh@4`JdtbY z5t7~yNDpJx)wy1JFY>f0;CeqkJsYB8AnpbS>m9;YJjAa|bSroK6%TGDZeClSl9j3_8fz?(2wy`R(9?=H9fYB%D=s}i+s=c$Ui@| zJ;xyb{1{cwKYu5CI{2v7JC0W^KJw2`EggK+qW2X(tsA@4(!ocq)y1fK{`sk;gO6I; zzQU(_P4!)|_U*h@a_x9=Ft9t##;iLRT#i#WbV@u;G*`HTi4V#6v9T>ZV+jnp#q^Xe~3fzZ-XVEH-wBJ=q_fU4VCN&&9>zYU*gGz$Lwp;A-UIYK6GR zdbnQ82p8MQ%DCWXX{W#?{gmK>Z6@FsW}8-bb-3_yY;C8B#xK^N%D7H-v{T@c(Y)Zo zI)VUKFT}mv!*yv!xI*WXR}XNsQ{a+*lXjjG*mp}{gX8)_t^r%|0sdnSs04QMs&>K` z%!vkk842vyyHq=^%z!VnIfj+jSVubrUnt-01=lqmuA32enuqIO8Q@AXpS*gqqn!em z=n;Zzl7|cP|Em`}T%C{309TUv+||X7b_!f#Z4q3*_i!yo+&_A_uF3#clKI@#>m2PA zxJ0iJTxdW8`MM8rANFvSMaHEq+F|nbfTNuP7v<|j!L`%F^%&y*#l!V^WL!z-b63CM zXs5s>dY0hA`hj&=%MlrPP%w>?}RVGV@0|E|l8k#QxR z&t3hMqn!em=zVNI*I-_H4ce?VkgK)q2hlICM%%F(<+}#$XjM8XFU(`u@>)|LX<{9| zbzOEv(Dri;^bSiq1z#xNClMF(9^g6@|JzwqctuG?L|k^pEu`M9f!<+hr@%$| z*0@k!0j`dS+tcAXxqC!hcE&9XS64?n1un|B#)WkR0j{$U_dE~Rk4M5~r7K*%hCA9Ra8bTAF6d7IF4VU*6CJKoYDL0jr7IlQ zjgEE-T$C@33vEGw3w`yP*&eR`k#Je*3dc3W(N2Mj@}+T2^KhZBUbDi(H761-D_!BZ zmO9!ga8bTGihMzT3HXJ+dd(IO*UJ%bIq3?=wb9W|fs68`aY26xaIr0a!r?l#Sp-~8 zy25ci>S(9HMfuXW(9Z<8&{wbd(8G0M1YAzK!g0OoXs5tM`RXYBAo#VG<5P@tRztp4 zqrYB*Hf;^$ZVhyswHS+W4}DcQkt3uL@CE6t^%6RDNd&$)=?>@1caApG1?6Pp_f8gq z;QQL)Te}}4@9cqQVg@YtqK$ zOIbLsK8|)AF50F->_lsOdANRqxI;W#AE${cUb;fJ1X|8wdZ@du-0)c z#^KhT-Yz3tp?0FRS3BA%a8bTAt}8rTHy|#?;ntl#J|kSAcA~YnJK8C5QNA>;TRmLU z5x3Z)!cl&BZyEpX@jQ|EatyT-t-Z_9PJxU4wAe$|&hc<9L0pW(tvmhO3~&)+h<>{E zUPn6xF3Ok2wbH{?hPW7qTX)838Q@||7KUqwqn!d5fw3>anT=IcSc?YxY&|~ z;d;i=PJxT^)xIJRVV}g>F0}FMP!HEZf8c&4?kQRMG1hyXjB6h5q35sMX3_4wU+Hg< ze$alt2RsvNHD>3%v4*Qt(n3S5*g8Q-si{u1CqU%d|F zaO=7?jEKv&?_szGINB+2QNA=T=q~}T^AUHrMWs}?b0XrhT3{Hi%N*?#xF}y57xb3^ z7y9aTH+s0zo%gbQvRYsmuIn7_6u2l~8W-Bl02lh|bu&C%>CSsuTviJV!!^~>PJxT^ zCFA>b&|d;v=&RQ)b-22xJMX1&S#+W8>bgaab_!gSFO93%!-c+j9mcQLbx(KROCz$< z6^`oRMt0uyv>p>wvi`9s5D18M&FP9?sk+EcaG}1&s`izH*vp#UH5NegOsETn&iv6 zAC!WqsrB8xbk~~w2AnJL(zPKfy5jCaZ~ece%~eS5)Wi5$dOoXs>Y-cZ-X_SOPbK<3 z03S=G6BKn0e$+g6D-#k|MEErPb^7sRRcRBTtJ$^sKV{{MJ?EI~Mbb-MYQC3x`Z1+$ zAf`U2cRzi8G;(7pkbkE`GW5IL_1e56M2eUrKh&u~7%N%kMD|MW0b%{CZSr*iQwFBd zDpv3f?|$UJ-|^1W7k6&!)i^_ZJX+Kn)wMWLyeBTv9wc0KL+^6N1cj^huiW2}C4bB~ z_GUE>RIb80ul9(~wqpV~HdM~x=NqO^hF=G)vg)KJY8n;ghIfYM`oY>C-}NS{dh%Xy z;Vt@VzF%9TmoPcC@J6a2z8Uk&d%>sSynE$2?&`@8#&FK$ z!}2BUJviO*zJqb#PdDUiD9*JP$8uP|K&jG8@q0b^TW<0NEOhiUF6SuK)a46(FrDB= zKaY2s=j12iF4AGvF9Pmt-iP3R9^MU&{gUqiaPK`$ju(yY`a5tHdU%blK|kYiW~+t{ zFB?oa!MhQ0r>UHOC*obB!>s=U@IrP%@v?o*4e$nUcosfB1iIkm`V}57q(w(R<8nS% zxenJO+E;L)4_?1i<=&r&YnKkQ{t@7+&-)NQvi`X9xVz(A{o(lVZAkXLM?yq!{uSwv zhg&?HNSls+#^wH5)pa;YA5L(-j&K`Qjk<|A(a+PZe-$_z^DYTa|Gfp3-`6DXyA_=O z1}*aRDGw*orlX&6HJYgg4(Es3S8!6cA5%5{n}`!*e!BG^0_TCe3&B|qZ);bNm&*WO zDVmV=7g34AL(ScgH_*o?Nk58>PM@D6WplJo0i@C;>LdVnkE zQe$hNpK-P3dF@T3?TeF$E*H`Rl3w(m)i_o|on*JWAS z&coG}bl?v^<7%I!syq1`sC@<3V1zqX)p;Wk*ROP#(t*Gw`3S*Pjxe(31rp`6^hAG?8BE7?c(2MZtL0;sW5ZA%pm@ z<9S~^|3N=7d{L$M>i^)Ibu9+^^-|}Re6_CMMpfPMWvBK=`l=KN-Arp<^J?n3Ty* z)xT+CKHot)2v_=d>`G*(+gR~bl&s+r>oq64`ububI3zkM}*s| z`kzU8u<3S3x^s0Het(LqIGRue(zWvmr@!OBNZ*h~~iF?7)=eHko-{K~}{nVrJ+mE?#ag*QaT1qRoCw|O* zi#v*?G!ggS+q<7x`|a<1k0K{~Z%==8+~jwrxcA;(|LC|W-~LYdX#DnL?tA(6Q;&js z@0|^h4!`5)Pss0d^{V)o`&u82Po46eDeir%560srzkTf}m7K)K+}HYGeCp(PrnvXs z*#nu$x33*V;I7Dn zod9--GR(=9Jp+3|F>C>_715qi)}0oDs&&@BQ`TOmL$gZR>6q{QT=gHFV81EbAI}i3 z>^Kio4EBt1wBM8+L|@YL?9V&_uZOw@me%3&UT!{b(!tvKXvaBvhiA<(_8-_Wk@wh) zdEke&*U^5W=htI*VSebY&s1zxa}!?stFmL@|AUH^Of~*BkoMWIn+%k569&NsHXi9~ zJI_s^2S+{|cifYny_>chI`4V^0#)1Dd0+#lqus9z7An|<`WJh4Kk|@H?B(n5e6Z@j zi}vzzZ5J%Ngio~@YxAj~QD60cCXwHL;C~6Ob0nz#g1xNl5aIU#dL+y*OCFKy>tG!m z3u`y6eV0lJT!%8Cn6Os2J&S(!(0l!)QF9=e#{Ep4INBgmjFs{Q8Z~mR>F-PhGf78*z(I(8c)(qE>|)yQHHuj$M(~> z0drLYCpQmiU#W+%vt#aRKrnA*%Y8Ha@$P{_)UCiVe==`Tww->gx8A&S59DkZ@-`N7 zE_uX!O!X!WT$Y0TpiM7(fE2V7e{0`nJz)z87qkn&NLL0v7&qWSRmbJ$3GFNSc^Bc< zsR7UUa{jh{eg*38mTZ*gXKKJd66O3Q#Cse0_1kggcc+x+tE3?1SudC`)8$F5b`Ak$ zDdB8+UQyyQ&-g4iw&Ne*dXpiw+hhKbCpz|p#tryT)pPkb{Q>j8ftVjv1HMnp-zV@# zKTvp+C4pateNFNwGZiv#)g;KDD^KQ;v-VeG-eDBJN2u-Qk!mr-_a^-&I$O%9QcM7 z2#h+Bb==+mdA4=K*i+eE#}$n!8gXdN3G=F%c4tdBQbfKd;HxX@!YFl_I$l<74V9H& zW8rfxR%+QNd=GgUIl&PV@bsKsJN{08>OOJIt?ykmMm!_Mz8f+NWgpEfC z&XY<#I%fs2HxO8A$$`l0aNO5Y`?XiKs!RFka#I`H>3lK|A`cBwAGsc{GQwVX=k8$C z)gh{nrpx-V0rkhGvjKhh2JqCn>>{&Hj}ttei%TEr+BlRC=uLW^t4pmP-lW|V>jb4f zZa7`1x8WlEVlBXiVUBRlSgz6w%7OZN8}M1jb~6+{R+xYfyuDCs0@cahbl6 z&vT3QI@=%FPd;Mi(&DLvabd7X*$C8fYDPnl)+orXuJ?`$dt=O~#{?{u=%~&_PjjWz zAht(8A6!1SsPV<4JW9%q{Xq4EJhz3M(%;rY^i{Sjr5@BosoVP2S4v|TR(^_;dbbqe zP5s`0{(r+Z{fytWM`4u*oLNsneqSdP#!H(sMC8++obH`?7Ki6PM>8oNv>lQT<#L0E z=YHJFjJ8)dwo)7QBl)g#aYQ_3$7&p&e><8<@tmX+<#=20{0nhv;cAKNcwA_U zHx5F7`;`Z-3T{oi*cYu^e@J;-;SaD_dESURv9X~`xK3##{;)@_R9+kFI+{uO(?O?6 zJmgD&ry2eq=HdA<5}shktY2OmTRWOb@tE1Za!)0wFmJk%phd$_S5;$Enq@w@J4 z5%B1}IhEz-Tt_o0o-R5~;ScIjfM*Eenz1=U)axDrkGCT=jz1$EO~F$uq`zQZ-~Yxjp&c9t8d>Yy65t;d+{pcdDziRfk#?s z!SkSp=PAT})uO>xxntAjkKKb;8PCg(W(qvg3JabWJUnk8F8X8Z8r+s99xFXz^7Edf znF5cr(1Pb59v;{NHp$3HBWmzbns}`AgyH$x(M*A-GgG9#u@UusBkI^j$n{3Z(ngfu zM(}JSaBlnpw3=ybRq-wSKpM6_ZEAq@JiAZBOVZ?rmEI73Y}((^Ou-N7A;^zajd6y= zHL6C9Z#|YS|0-%z?Gw+p58cI}UN1<9Zr#uR`30xE|eeeDZ_*4)}pq zXH!=fuhFm58i( zz71xdwf@Mlpnhvpc(27>hG(KDv>!JHwqqbo!M^#)r>l2-y75yxtVD?)KPBvY+;ow{ zPCl#pKsg9;?7mrlRHyOl{GYG$zX|=c*VGFW8lMX)aAA5gIaBRqq-pdE+OIY@VQ4T? zZ5qQngTtn5_i0pGsW0;=H4VK9j0p-Wn|o=qB?MhH26<(#AH%es8Z#HJ!#$d}HIgvkNS92wt2PnY}`>bM9Sn+qP&dEw>1 z84p`NaOYHV`wwDJZY6!_0+N2dkl|NOOVvp4zp&{q(a$z{dIQtn#5k5ul!tnrp61eb zmLmiS(#5z{(sg{#IhFf2NynD^I^4r;LfFl1cqiq)fp-b{O|J!!2(h!hT}^aZ1gE zE>VpA#?4k>4i$9-`xIgaT#5gqQ04=1-Kw(B_*SWhF2LpLkSatUI~=-NF~({Oh9Nxk zfHKhC^dR^>PQ}_P_<{cBGL_x!6_tHzf6NP7@Jzp4=l{MJO#WS&R!IeSQKA5-3R*$X(siE=Qg;K*jGq1sY~tRRx9+Wl+fFr()A#OsO+UNuAL#E)|0ew%<5<0DH|`Hek$$SV zBSa1Q-ybxdK>q@sLF#}wJ@CE{5drQ#%=ynfhj-Ki@B55*3Hm?RTZEoWBH^H`P@lf< zOU8t5kfnd+zMlRQLEmqWIqvotGfiZCn;%Q_zJCR@YyHL3_c`Z}d>Hf+raI2GeO!ys&I?xnmJz1-8zkly?7_Vpn%9uQoxEN!lb ztA&TFjiCuY<7zDTadpV<@(A;`au^xUDaxA*ZWy~XX-GUu}^vK7~T_~ z+32btRmNxaLbFp=_($H6hh05$<%YCYxl`Zm8%ra@DKGrhIKEoIm8JfmO6fMZo!-%Bwy3$EA5g$ZceiE zJ2amxhef!qcJysNbvub?w+7GZ{R87``!C3+#_oq}jw8)nK6mRF$fxjb^G&Mxj>LR| zr<->}rf;;=@yqfnkbGhUgnT}ZujXF8mC2F*Y1^Fs?u1>Y=iGorN)JYfW!&eFuC- zTTaLFGOqbQRddH@@&``Z{dW;=Kh^vPvo1{J?QQ*>>o^~Q{l09LYSAcR9p~m35fAJB z<`(L(^38HsE9LMi|4Y4Vm{1PmVMDC6l2g+FUsJB<-24IPzp29t{rBBHu6Qu=34(f64OQ(un^h-}SwGCt2AUlxvc8om-#> zY;k>Y<@PtBT(`7l>WBlr8Q0<_RX-@#EnT#)sNlV*ZYXe-{-i^3r9wZfPp{ zYex#wjx_c1=gKw7%1)hbXgNa{gFYC$>q%VCso2uhpwDu){;$Em9RBD-Z9U!s>~!Rh zaV_pK>#AP=87+RQ^_`FQAVuVF0=~Kht2oDD9o4>C z-#J{`o^e>+i4~sYGuL-+=|@!H0c7IQ+i-*RotUbQTi?0mDxFW}LE5!On2QKs->G*i z48rP8v%-`0WXoum&KBf<%OpuszOv_IwE!ICCeC^Cp|(tPaireWLp#d1c)Jg5;(m1_1Zt_N|=!2k9t`;M=u48Jln-$ zS$A3^J@?VJ#prnUo(zlR&`{#LIJ*Vw3#T4daz?c!GSkCt}D zHV{3?%wzlV-UnRni~O)w^}t;({O^HJFSPEQ^X4uBEv1B|`HmJ;>fLbA?~ZG{Jd&@P zjgSi5kLCC(F!j#S2(NQdO1^4pV|-n3|0p*<6@6U!>)K-KMUF=sb%oAv7q?#Ncq?*u zK%Ct1OhleW%$<9eL#y!5WKF0orrbt(a(5$W7w9zkUF%R-IpHGJ7d;EXXz{r3aI^(? zd_7N%JDyuw-ts)$vq2k%MC)oz&8VJ-*O!Hkw%~3VQeOsQZv{^v?}d8N1A12C8Q7+_ zQ~>ibjL>9F%<0hYeyh|2_}vYiX!jqG4(iZ@o<3yrv$uYwotbay>EDqaI?1j7a@1>m ztlOC%*$+=mv!13dIlq10m$fvVI+_}Jyv(`&Y)|#G-0{@Z8^2{e50b)kuR;Cf-fiw6 zWnXpz{$GRnEpbv#Z+P+n021WC?8H=F=dznujy=Q`npzdv}mngdrCKGCl3 zxu6Ock-ug)3F3Kr?6yN3ZK2mZExhe8yF!WJOroq8k#R|hiZ#9z7xrW}hOM9x&i!ok z2`<=!8Xuuz4Kb$Jnulu?{^R`f##2?+0ykFInakjt{My#a;}_bjZ37&kx-jPPUqpU| z>Q&qNINFi;)zR<^`T; zUE@z=jTipX)?n-^+t9~uyVv1u&^iOWTq7IC-(`+=1iaicta|{~ch{>H=mZDjuH735)f-*L1f;nnqxZ~u_?f9GG7+DSbC^={{PO6|gUaT{cM$G;u! zs=5<-e9Pn4k4kOFJgjw%Zja0_y}~?%U)!rY+L8FB>w5=V-?u~8u=Ra=W6(U@qQ%mY z>Jjnk+7nvew;$waN5I>`)b|e3zeE1EAK>A|_<#E;9^P3I@!I_zVf;PG(T;>y*Y^&# zzHdjn8t}I(X#U3GZPGL%Uc3Jy4DYWT?Fe`~n)=?+*7xnbJ-p|F<_Hh(l8AWi{)jNV zmpIyy@ap>B(e|&~f9v7B5;P||yiE^_gx5-Mxcpx4Xh*`U>szOwzK!$nP6Ev$5AV82 zc&+q?mS4aZyJXh*`U>l;_qOZ$I6ESL9p z2Q9P{_n(jJYTTm^-hZdVT~&8%|F*W-?M1b&ew`}fX4 zeSg%$`!Z<0>+m-38Ue4XJ>huYbhIPk)%Cq|P~Ttk@S;!O{+);Su?Tow?Fq;GUq?F< zUR~e$jtwsj+%~k1iW2LeeYuH`;J@>Z&T1b(!=|g z2zZ_JhU0DRXh*`U>w6d5zwT)1;cW|=r#rm+Uz|2xUwXswc678Wb|a1b)3i@;j)XOi zDL|*DV>__}_f{|1fw}1&oQF4V|9^lwobV;}{H`y>;kYrDv$P}P)-{i~t^JC)p=SiR zFT{WJxz=G%PP({#X%5Fd)X|QJTh~C^uuuo-gx{BXxW|At?CjPZ@I~6VeW?z|eY2w- z3AeLki7kuR1os3F_f*hcXi;Md@YXbO$4hrO?zxV3MBKVYlG|N0Ho-m1!;L<1#|DSH zWp0|ddVOR+H# zo8X4sBdC|pfHwMD>kev>ChmCY4#)k9qix!!^zHV3eT1$N;Qa?^qQAB7pdT`_cZaSY z+3}I19RaVkG6^K%FLaFn?>De5pue@Q)q5G?b@uu9K?&n6E=vQt@%W|*3V^xH`H#wvxTD_0k75C1(4u{t`Xpc4PqzyTk8(qmJ!}iyZO%J z9qkBstybsoLe~iJo&uT|TeM0YvOEL4Y@3-j0(w$6)d90@PjJ`pKid zGI+gyeHX^nHjJznj$wVwV1-@;<@GqeQjha=yJz)yn=i&ouRq`(L~6Uiyd>vF0{o4D z&71!|`kjdU*3ul>UhKm7+|rK3Z(aY|+i^bUaRR)^|1RiC)*bUqM7&l%w|w-=3GKh7 z9Rcr&Xf4U#U>g!@hSEyjiQVcVX-@1Jn}9rthH z_fyz^b70Tg4|U&VE8{!1uS_>6-<$D&h9h^}%t-vQwI`fklO63y{L=OPL~A!Cj{>}N zK(oZ*J^sc>cx~+o$GgbUj)Yg&_h6o!Wf|bT7c{pyyeABegxA)daJ(BF?Fe|u1J?JG zY=29+3-Cg(-u0}*+ipMvysq|y<9*E0j)Yg&_h4S1^&`Oh5@`O@;cb6%1iVgq!|}f1 zXh*`U>-$Nzzhzwx@O}WA-#WY}9v%U&liqN=pF7%-@ap=e*CDWdK${cbtw8%z-{C!} zegwQudPDKvU&GOkgjd(MlWhOW_R-?KzX@o1#HcMWLnaClFim?qwM z>HUA|z5~9hBKv>B3%y8HL|L&@6a`VS(|eO5DkY#)yMT&q#noMPbuDY}x~{G(x(im+ zpAaDQB9M>(QlgS2bnKn{zuz-6cjmo!-^+V3QT~(9y}57h%$e_;IdkSrxijH-VMkip zg7?sr=J`%D^QfG~IbHO_3=i)d&|Ky4o;5*X)HH>DU$pdw(szt8%r9Pz>)x3tTEm-@d=$u#Kw?w|u6e+1kgZN%>pxF(|=I2ix$alEdGC*c>; zwDo5;5}Do9rF8bqhF@O4ayHr~8%Fy7mGM$XZW;wf?hjRjU)v`Dno9};YY4YnGy=$)B z=f;g$vj&516wZ#0Hu)3mm+Q}}b;S8UUF6#-epjgRovZQ9z8LX)<3c%Dch0}eez|wU z=X8TFng&sxi!XSa!LFK$D_X+%_BgYraC1nhpE}>29Tm?n2Pp~3U$vNcD37Rok8+r$ zeCnI>>5s3%c=8j!o9u|E=+q^PU1P>(0$I`z0{{?Gxr-f4|K9 zw?Q4!f8;~#PIl1*5r_f4}=Z!OIPczQ(P!5mVc|DHzNe>*(q`RB`& zjwiHTn+`AR}RY&7vu5Pb*RJB_duWRMCs)aIv+h7wt%H6cxuMs5iF90b=mHILkuM=Sj|?{_)0NAddiebZm;a6rsyh6Y zqMU@T1DMmq(G)qU6@tr1ir_iK!*ev^dUim^61`(`ig-fhWDaVUr5Vz`una7>JW28R z1wBsvHm5r-wEuGkI(~J!+_W##;CFV4@?ujftHjv&p3J18Pv$TW2D_0L-?HEw6u);L zh`;{0#7X(UKD7FM4%(qPuojdtTrvoo@%s8SQ8rxe3EZ%_r^P zoRJ=`%McgszjZzTW#lGRT(-X*hHHwWE%MVa%Ffn&>jdkhpXv?!A&Q5>Ka48`{JRab z{$^1s)$0&rKcZfOlVSOdE{|e_tE|@t&AH3bGIAXsKN^?tj;RYS*hvAdzk}AZe4|~j z+uc4>;AA}Au8w@NzHN@QbPCDs_7+k3o+a2LuNrFbpt0KKUa7%-)2>&nVWI2Z=D-%Pw3%)~e5Oo^Lhvo|@a2O>k%#Z)GT`GF zQCR&d6xxwjOuFc?`10oX$8+1Ye$x0hdH8mK#*Yr)km{!2lWP6f`YF6U`&wv6UTF-z z(0*!=0H5tca_1h_TIL7g=fK9W^(-5H*+=k=c0(@H`-a)yrS^B79%X5V@-w@Jq!D>} zjFHEB3GlK88>|=)5S-johx-A|fo_-sy+s{6rIX?;Md#O!Oeplq}pb4_5qRyetp6T+${6gczmybQW%1{u#U~GYWncE!kKSVswT{uMRt)IcK zjG2ZnHg%Uv?Gs<0s3#c8^(Iq|tLw6h`|Hjra65VF5sy?+I4$6iaG#-6^8lAM4jT4*)7qycuMw|GxS3CTnouIyd{B5OPhy5jIr$IOI1Ph|gogt(v^hSP& zPBVF&+cHS5%8lk619^`*BJLxsxhP?(REs$eY;Km0I~QjFJb$)%7Ovyj@Jsk#!{`OA z2e~7hvy%!9o=GM>(~km$Du=5YQRk7&z0#yH3F!e09r5u@Fz#k67ZqgmE%qCf(~9 zTU?b+Jok=vNKGS;_v#mOA4IwrnrEiVIGOr)NPat`2j3Stk+_c^3H!8|iv#RevE3zjocjiUOFpCR$3e2QWAyII3C{_bJ6lB_Z!DDM27Hl6?n4@1 zYrnY|r!cPjb>^HFsRtj#y&u-p>}M|T^Ywe#=X(Rn_8c{=b+HZC^*Tj7szbNA`6a%cWmNd9;7x8y&1|GH#* z5}Mp2UV?KW=G6s#Q?^3il=tIZBy|P;Sl9Okb%@Tt^}+u@evv0SFZ{5-sY7Hxd***$ zQ~jR#pGSSUK@EGE`SjVALf>*e_%VMSo^Qbazu|gc)2XPt=#{Ekugp7G za7P{=uW%Y?-PR zb>7Rog4Kwj>uRM&fL~=AmuNSz|o$5BwFq^*CgQZeDx+ANOHzv;8PE`GhRedGCi;Hs`sB z+?w`ZoYkqw`D!~ZRKnu(z=X3+9fPsV5KA9j2nKIYT(NEZtW}Odmq9L zQNxGE=IbW--;I0~S`zrr^4%%iqED@&kPj>gBxm zL6?5UnSALHd#tw!bY{B zseMJh@eJKO{2#u2gEw^Yz5wsvP{ZH$-{J9OSl z!p8-qAo3r*ek+=fwv|uH&n(BM&p}@-28}OHPE387$8f7~EjHokpNya20UgTAy5Vb7 zBgfBAv^V)RA2#p2nQC~k&oA(Zu4NY9qn|V53N`#k|2#%Z%UYqwd3unGqG9mo+_pKfZE>9GFW_NBL3wyxoI#2;0^f^%p+OzrSN6h=dr4Rl{ zdnQVUC=LqVy)c63KNcGPfhTm{`w^G={4-+!!oPbEE}}-<=JU_A)xw|i@xG=S@pvqM z&VYYU6?q!`4IKD0znSo-1N}nm)PazN(a=);F`_U9ZM)vlIyqm0!~Q(EQS+e>tuu0_ z*C@G_3{IY4f6$Si#*O%=XP3@L9_g4+P8*yJb+#Jue>{h<(D3s{c`fpi1I;@BBsF4P zEI)?9|3=935*=3V5&WJn{J50AMP8!!Ng5(H&ZN+q*cq+HRoIiCCxVLuoOFT8#fhUYUXGZ54TQ zv7vAMv*Eu0{=48`X!r*mM~C`u-H0O9#MNi95{y2?^Sn>gNSwOj`2S}eP4p$6p)*I; z_uoT?>G-|~ns5H?YUDBg`8^A*;`m-@I3$l zQ6H^Km|x_9j(u(8M!u+;1^LY}?JDz|b1K5+sgX-#@{6veLb%AYMrMQ#^SfR0E7n3# zE*9rLo1FeHdNTT494!ZIFA|+n;&H;(FVSm$Kd4ZbYfcND4#yRY8@X0Bjp}dbG(tYG zzW>=G8wCGhU(LUg`N(NPU$Oh6$4{vz+~R_>Rgt$kU%JYdYf2e*o|Ms;r~D_A#fweowh5=#KYas;qNk<>EY~k8nA?by&G$ z-11pD*EOdre~0vcb-CNqC%rP3@Ya4Be}rbP5HAA+*k7G;5 z<&IMg0{bZkJfQR5XZ7^@#W|Pj_rkBM5$;5lH6lje<&1zo!sVE@TVkLd1F%pnTd8}G;gW;*YE){WkH2W=cW$=~Y;hqIgR z@#Vp^w``Yk{)X~CUuC@zV-Mw^&Cj_9{D;g0j`<%W`TrCBLh`T6JGPvyUW*;)_#X7` z3aIOG0Qb|$KQPjfU&dv<;pg{N?JN0Nhj2I{EVloe^EmupRgvd$e)qFhZjhe^RU|*p zlY;22X!~v`tX=j2x}kPY!Yl*Fa;Av2Hx|D+UZF=m1OV!B(*6M3`<$0GR!NU~B20f2 zntG42qsw_n|HnORjc0e|WNUwx^Mdmb?rN2_J64Y0g+FY%$L|hk=y9ti-nb)ph8cd} zUi8O5J0YJ}VH~uL=qc38c}IfgY)3Cqdz53^U)npyjq1a3i&gklRgcf+ECsDR;LEl_ z@E_$euT>1b==ml)E*fBC>;NCmLVw((E&j3XQ=#E6^9`57Mo+s@m-}*M;)z^+jc|Wc zqhiOGaz2CqKG+7(d;-h9S_!?Zv1x8MkbTc<|NjMW3sPY4%z4z}O(V+^&i4l<`cu9OJy+g;;%dA#}E*djT-Rep!J3be&dkRfYHdV)LH=fuUQ~ znD-;id;SNF-v5kw54@ls=~9UQpfUQ`==V&E=NPZUfAZjxCrrMwvG#2Z{BFZJ#_jPR zx@5ss2viBGu=R6au54C6vMjU1K{drao5bUc7@V_)-6tbBsG+zG@;)#5_q_ zsNe1!W03+FPcb+k=!j`1lm=NK>ei_RzWAo`;|N-NPh#)D9< zo$0^tm3|rsL`pzfR+KB!h5u z1PbOx?4AV=d+EQ3=b1KjrP@t4^1K*+seMnPS42Z6(0TPwEtu|T2ljR8IJN#DpI-HF zzKdtbpLOl#mkDR+cXbQ09qlx5oP36_jY>n_e0^5_Wtysl z`C3Xi7N_4lJ7VGUF7FBItzK=fd)N94I=|k+Zee?}Fdx@zxC%W!?$Pyj{|oS&e!%dN zwKetn8qLk$x1Pr6_n=GQP+46t?8-T8ZeDH+|8H zPeqAFp9GDfV!1A=tIL%oxu_YgPJGht%pc2eZh8WHWl>9^9hvzy(#-~aj!UM7+h4;V zz)Ge8Gy4IwvDc`KCtp+<&%cG|ZFpWPK`Qhnd^;ZLp+3+pLf?1M5dF;iS$$GG&%@eL z`hRFYWYPJKc1aM7d6Md-6H`V-%1ch+;Jf8H3suQK&i z#}2ca(vha}Xx&(2%8JI95w~9l^?(3>A^*?C&8P@%vtbXg>W42a~vIuQ2>sR z-w0iJql`hZFR%N|n$I_S<$o7wVLaZtv#-|eT*`K|m4lFe)1rqQZNbU)XvuL7ut-H7 z?)Pw_ZC>=cMTxC3=A^ivm&K?5hxS7ky&|+DGe#MH`r{9MF@_hq39=SU!CcUE9mTBP}=lu8j4$ zD$2@HK`oD|=RZhUMP_2`AXqOGR)4Iv8;ViKG3e<|K#SQP+tCk^!v3{Jc=US;2Y&0GRW^97sKuV&muFk;g3rl?#W9hSbmda{JbN^ zv@eAg=1T0oXxYZ#InE-K^1wWSwQCkbmKLL5Y+Z+{pbl3qa(;!QEx3I0)Fcw*BBYl6n^?wjy2hzIThK899Fg@iG6u z810aC9bPr#3-q|f$T??!xW{5w=-sdpt#nGZA|#%&{_8OMrKraxDA!dys$udDJ0HA@ z%*0%&$PL$JS^d}%(tRT=+e@LnxsvxPTwIA}XBlH8UgTzmCpX!kjqz~nI{sbB>}|Qo zJNhM-c3eFz9k_UGbH9c_{Kx^eQ}5&XXhWA;NK zuXj2IZ*UCvV~i-T`~}x~?2!Rozw{fWR-CBRlHqth6z`9-sLSualFEjVryrm5$MuB5OaDQs0&wDZGo!Tx{x_ucvLj z8U&kZJZjr$+0FQB+()DSah=hPXl1yzc17&_o~u>+PIFw zbvk}ufomE=m%pQ2EWwmm0scoRxpgbM~F7y}Pk-)-}@_Epcqvt^DKdyYb%r4V-K)4*e>S&vOforGZar&A` z+P5VydpObNFPZ0XcCC~4_)5b4Etg;n(b6V=LhL#2|IiVok|m=8#-3a9fsymi5g%>w zk}o}cS;n4g2EWUVoEuv(fqW+|H;Gf8eQ!P6ksczyglzw0AM#h(awSGiQOCiP$V|wn zd`EGtXQzeLXZBFI`t*9~nRLQ^9NG=8uXmx%7keVdMV@?o2V0`HRA3Nv)z^? zUrQq{tuo}Ri}c7QqOBYso-Ynx+xBT`eWZo;2-bDGGwpn7%PvIEFGWwz(w6qANt|8h z^!y;a>n$47abD1eoBy+{1k{ zXy2zX^WNi(H0NiMtaDlVXGdG~%^@N6NZUtUQFpjA7WWon&%P&qVYbHb`A??)yaRd| z^Iw|FH`?{MM~^S=FU0TrO#O+c6kdx`FY$`EoLr455A=SyOARR@e|SzqERRFR5tja+ z-#*b_N%;Mmu=+6#G>{~1bM`BizK?4Qo?&CreyM0Da*i~E_JVqNyGym_tK~N? zz4SAo9hr$VOuJedzx?tMP=Xiy3GnU#&HWzU@6CRri{Y2bI#YYTRapD>y`!CAT-vs8 zte1WZr}ZAjDTs3!#w?bh&0lts!`Z8+H!eNZ)JLB}cug!_rYf=q>hS~Dj;D^%FGpR^ z*ni_W8ID?9JG891@GLTOqmdWx|7yqSx?(*7_f@${#-Ya~>#r<3*2&AVcA$y6W?k=- z&Hk^c%8Q-P2$7d%7z+UH$c$+QuRrgS7_ZM8k(*^_d3bw)Cg$L+>pd;ac^7*gS{Pom z%a(S6etK7|3gGxLSJQUI71e)P20M-Ny#)1d8Emy>cUzSB4gi~n@K;GS-0Zwdvfe^s z{#5j+n6=3$-DN}Qm!NNFRo3$>%WfCmL}nHmx!^u$R*s!r;$|$u+6m~)WqocqT^z^dF9qkZ3ZLI+xug?JiL_NLi5fAT6_>Dfeb$zR)rKj!aa_Bh0vNs%U zk>dtQ?I$<40x*K}HH~vwKIqKCwbi0js_#W+-9TOVO)+}fQ3%(7VI2Bxq?j^X7Ic33 zIsIJ4qZMNREQ4OQyfXH7>^NWaxms)^xhLfi840obMGCW}9M+q1K%2e{HpsFcT{-kS z&)D0LE36b`K5cxK!P&t%XWdLcNB6&Nn5gluWnVekBHxF`$xAHm9x_Tv{bwjr&bU`M z_1|*T^W}iG9P<>`^;@Ld75kg{`?a{2*Klc=dKt@ad!|}aJ}<9oa5n?JgK?R%CD#6Z zOud|eA4eH^w_GHr&&9=B=%23PzxPXmWntT$B;~Oj?X$%o`HJuVP-X_o=mF2L86xdb zP!_~Z{&H?e%HuRVx53qcZ?x;b!|2EICZJ)=X*s{NQAc-;j6`@7K@v8>2i$sA*}G#{~jfL z^+8AB>!lhmF)qIb*KK^#?)*#4IO<~jPNhGP#J*d8lcSv?zD|Pg1`pqzpz*Lpr_}jx zrijmuA0)$fzoVTZzRrU0UJu_Bpz$wma( zF8sbWdNrA~nLyq}^Oo;8KJDMqY~OG+oen58oewB9U4RB{pIL`*OFGI9S&=C+5_yyI zL;d9U7wy>fIP`J#ZuOkUi0c_p?p9>D`mqA?wc7arlk)+Pc9nm8l;Sy6%0&$&Pk{cF>OB@JyDj(h}0nK-(-hPt-V9 z3|F^4X)Nr{T>B$LfkQHcutsAnztiLITc74TljyB63mY9=ki_gzD zf{1)f^6&OgEZM5uE6~G z3iSV1EOnGGxXHBJsG}IcWBXIuT0on}itkCMj>VS>zuz2`18s9U-#%Y4Uw9Fj`7`_} zAJOBQv@qHQx& zTI}>tHgKiFKbA;4eC-g%Kgc=t0Nu)CaCzSyz z;qI7}-@_g41ooA!Z5^@p!_JXiZ0#$yOO%V11-QoJ`oi(|qE_0z`gt1m`}r_vA9^ar z4zsLmN~5tVW-NMV3G}AKtq9vnw;AcKHA6Kaa~~1DK(;JIpRCt(M}+TJ*0jIwN%R?`-g&W6yguV zg+91-BNmpU9FBFgjU2lEx86x)AlmcExVYxEEBcFUVXCL6=>f!oH~FrHyCKGKP;jCj65xCSv|b@H?M4=r;k$XZ$YD7D;b;s0 zYQ*Uqq7^5&FfJkTHyiP$<6;>amvt&u>A{suz^%Kn51WJDV6mW%!w6cUoyT|f`XI$H*=H)XpQ02p$;$@caKCqyKO7!hDA8A7D=-j^;P-5tR@TlAIx{gJ~LT3Uj$nTHcL z$11eH){SmertgnJ_aj-=-qB9NM~>2`g8V<6sR^oWg3?GUR=?7NE9C(&~k zTyfCd)7!2Uc4(Y*mzPdUA48}Fmz%yT3mz+}rgw*WzYpbH8SSCwX;lAZ)e}xO67&z) zyW_kW`!JS3Zz<3827n9J4Yj;~tCr;=>k{Cx$YcPiEAqiAcaCu}l)=WKV0 z>H_<5oYd!PCY@!Zh;;Jxe|g@KAwNVPACmAKa<>z;K85@=XyjWNv82$HjiI^feIdtN zy`xl9IX8qljC++ce>ztZrb-j+un@%GrQ`9ug;kIxoVkGWv&}hF)pfj8TXmRKyHsSl zjGga?2V*!F*A7JQKc~-nz7F4|nv-QHx2q9-HFC3RvzH&rGaUVltI}RI3i7kMlJ;fl ztE(W~232)NEZ!e=7=(>XKc3GC@cMQ@G~OQg?(hoqQw&;N&sHCd^mgEa{bu<`40QA} zuIl@$p~Kr)`wHH}5pJKV9?Rd=b#<84je++hJ}1CiA9d9BSM1I_SvS!Od`a6LBHg)lszw0e+<`Db#vlHS$i!w2Z6O%bbf&y|DT+ z?JImjK2X-RUybF{r8*44My6wYBPBjrxr{&8UFy1&=?Jepkv83G_!(DwrjPSB?JGFZ z1|eT{$Hd~Cs>7_l4LJMrIYD{)c68W^D8yvFVI7w;o#f$s+N1$Lu)Qep*Fdo6Kk8Sp5K>jGlM$6y2VLwjmOa^i4am`VsnoBKp zM6F&7Tq18F^0NwI{Bap8=h5wk-e(m-1@9+FZw4;Z@c=I{(0TQ~{#E9jFR7QC^n1bk zDZ;(08vHdDZ@vz*dK2)X5JLG#x$)&aY_CBC5u9Hj9q@KF@)+Pm+H~|YuEE3Rye`4{ zmG%{!-yz&`)$oZ}oI7=x)n5Up)Pe+j_1j?|r{%HRk5A+M3F(oyMIK&YprfC04PW%y z;WenEbi})+F2a4P8Vw=deR%!_7kEJZ%yFJI=>M%o8r0#|iG2fmh;qE9iuMJ~$ZL=D zIfZ<=uWdp#kL5eD(GiPrjYj(UXr_H79~ie^{hd1ajTpYKX`;idX$E|vD-z)I`|YLd z92DR~nsgp-4u03O&(?I;?*(6PgsZC#*%*rtZ6zJTMqZP88-kDZHu^iO_-`i%h?VB{ z8A246=Nh*ADAP5~@p~GcVe8~o!*wY9a-c(?M|1y(w)qsibMk`N|c2Jafq`4!@)aM#<{yy#-Ep#9>3}RD$)|R)S6)`(i&%Do?DR8IylOA4RprfC0hpqA2y*2-*eFbke!ab@Ee=Qd8J30)) zMqXRQ=McQ>;O)12Vf;l9!TB-LA#eZd;mpQMIQkiP_*-7Pw`R5W6`X4kZn|ok8;jG( zEy6}#LmCNj`rpSS_qh%fNHAG z!M5$~*E$fwMy4Oc=Mr3Ne%8MFUXqRfet*-RQ|#o`AG6`veUs4dWIYoH{8cMaoXkK9 z^Fv#64SB!E<;P$YKOIvYakba~%x$54?Rd#vS_*V8+K)AadsuLsWd3?G7X6}- za=<+ZFNRdaa98*`66uh)k9asudrd#%j{7^?AJRo%i{tCLujx0rXs@S_;4^XL&ft^u zr~H1Ot-lFILj3Xc+;>O;l(OZY+;UfY^|Wz{+B$xEy1lKNv%TX=<9*gT!9R^_|(%KgN{iL~kHXIzV?z45+0<4K%(nFv>)T8@gviT(*4!bYZF%cl^WtPj3? zr7*6L3o_&_`$Lrbykqc;Jh1O*`Akf73}YO+A8x!qub%c5{EZN9muhur4E{XR{v&K; z`i%@9f}iEZ@3O3(*6X7k4$!6}Hse|yrK$ybI1ha(I>FHr;WAaL#j!Y!&|wfZGW~Ww zhv0}U@9=fnnqRE*Ai;iiz%QgtM?d3Qt@g{ikMtRpSeiFe2H>tY=fVI$MAwk(uiELUIu>y@l= z+!8)PM)Od%YtVsiY#+~?(*Z;`7S^Lu7$-7OSTR)(V4D5R9&%CR37=(>X|2LmY zaOK^gef7O08~^?D3_4@X=Sn$A<|@>UYcOxbGYt~j_Q0?0dSiG=ejY(8Ec=OGel$k$ zGwHW}OC9d&(_`9K^7A9&j#aIHjLnb8Cf+@U{48O3$+r;HA4<&?D2L>Wx;Bqx<&6{My{S{DpK&MsK^+m*PUk&u!eCr}y0jy#UwN<4H?AMz zTh|HNYKcerf^MQ6kZ1b-dGGR#c6m!OSTYsU2v|~G4nnJ&d>QAg0n1o@@u3Ad8Qr= z@B#xJ{fs;LMPE;uHkx?XUW0HSt2U3t@^!C{nfER5ZsT(ZUh*|XJ+&6?DtSx29pL=Y zqyazU+C1;+skL>rFYEQ%hKPHcYWuWTugTZ7rp-s#$m{Z4f=Fv&m&MOQC_!)P~ld5qg>F-q4`fzPO#JNI6UNN??gv-G1{|Vl~{4L>q zdnS6mm}`uz_Lb0urZT%-rZT%{sLT%iRptd3 ztIP+xsLZo7aqU%^gS)HDa~t7mgKL}0y!0OU|H;w)wNC;6peyLs_R#-vA5%@$&j{Y% zrTs;(+za_GQezIYdd2ehCd9u>MgG-1pn;DN;dg=X_cr=Uf6^b!G+w{8tH?Y#NJd7K2nmWkk>v`?VeB~o7bmo|DvH5xw{?8*{k604; z&wSn9sGjL|=zRJ5(r>T5yji?!Ujn^6M-TbszEoU=$8)HhTmu)~TIAcfF{4$zj3~MO zH{K)M+P7>F{3pJrgzx{MukhV(C!^&$kZItk-l(38$jXug!5b#Gg{U`YBM;IpBdwQ$ zv>Tqt_LK6?dN5B#UiIo*P%g7|crV_VX{xR(7t^mMi2TDO?3jntA=-|$^0pZC5pFH) zufQ?i?@7Lw(~s#z&C6MNGdcG1D?<+f?ky_vZ)3w5I+EX4zvM5;mwrH(pgrfS{POel zlI71l8(fW9qH4Q*exv=Fc>bC4Jf=W3jLs+8{Iv+Tc5gsKm+wl+=MMVD)hl2Ag3?7e zSH5Dp+5F~T3HmdDp^r`je3ShCdzSvac8mUxd;7VZM{snsoD`b&;)l5KW2<}hE&mYx zo{8sAl;^RBs)Hi|4va0lc7+bZyD#VYRS*a9^Xt0zBImydAHI_CkO}Np=GvKPIrrxu zJgy)e%4;?3k2e;(t}+zY#f^o(;e%dRgtT4K-S4BlYvert2-s3X-Al?H*J~Kr_2Z50 zuMQ5%KOc3S4osA~w05={J1$1f^N$4`gv&o!hm||zJij6HoiCP$@X4Pqv~r#x$6onG z$$kF0$cI;-Z2t8)B2qgdz;J#i&LjGA-(L8o^Q~ps4?p%f)xhN&yro0p5!R`-pQy2K z#>jm>Y>9k?%kQtl%ANT>QS#l3za`)Pysj_zA$j-m9Vh?!&{x(4`G$U>17EDWpn&te z%y(t1rXK)%pud`0G7Vwi#rdcFS;!CcHS3JX`MD}{+B0}rfev^z-*uhx@s8c98ack3 zb{x1OtlMjUP-A~&{aXcaMz7{iMjp_PzixDaz^;U_yM*sk`8!VEMAx&<7%3Pd;fhtA zV~u@8D{1U4^hJDIZyrWkf7E_~e^@>A!?T^gS;rAN;q8;=hiU(*-;5h~vagR!yDIJf z4CL`%HLe5O|3bsh*L5u7&VO5}oHlCQV0BP5zn;Xq*TFB7H;Dm$<=-y+dX~RQ599N` zUg{{jaT-n`AIbTIvdVXDY+`+7`IL+BunY1RFm=Q4WPC#2>GDw?#*Mp9)pBx!yweGv zzCbwe=}$hNmg)Dxr;qXe0X6QiSU#c6&qrVWbc-UH*DpH^^D3a_|f2ZY4$S63V}k1K7nX9~MGE4KI9EPY%tOl9W$r zuTZvh`QW2*w%2Wac_XQ*-C`Eme1I`XTaGv0r!#@8gj3N`(Ly7F4&sGuR< zf1$=7A7gJ9L=YE!{x>evVdYLa`IP)DfR+M33vsLI<)b@V>nZrAhPy!VeX*+Dhzh6W z2l`G=I4dXQOM$QNOOX>|rOOBZjT?Wmsu{>h!RgwUd?`2!;eJr#&yLO4AMoyUk3ACA3Vg)^CO8V~R{Jk`^uI(uVp3G&q&X*AbZgdX$d*L(97 zPgMBUhyxoVG`w90OgfdNA02u7RTX&~`tHML3_q>^d+=Wgf9MM4gYraP(2?K9jUVdS zzXj)MU*Q{`!RPU^PPov-m(tXFr{FT7H~vOX-U_{LD(B=8xsPXsu@&*iagP)QZ=IVcft9fJ5EKUqojjN{VixE4toC*!!z$>}}$b)g?-}L(P1y^Zb z;X9sD4&&u}lR^{!KJWd5cz>B1zdlx;r^5d}@a;mA0{=np6^s(T-O8VF`n)qZ#+^AQ zq3-gm%JB>(`HyP6F;k(b@SbiaobOqqE zapS-C+JS;cw6E|B&*0yLh%bjvc<-qL9#j(!@!!9z-(UU@$l(;F-py1KPK@Oz-W9wH zei|$igZ%u9@bh2%E&TNR@mdb4C2X%nWH6Aw%l{EBfAc`sYp{er$@t0eZ{d1P=c819 zn(|{g7&qZGuYX@KTl)$>@eKY>=GlXB# zvd7J%IQb*b20#}1E!0HZ$72sReorV4`AaO1R^MTs@9nYBcQ2UwYyGc<|8*+zL3WJ) zH2D7+{_A4=AAtYE@Sg?$X=o3?YZ(tX0{>5hPP-C*J#f7w&?@v+QfTTwcurRUEXGZk z;`Lh#zSX``et1TCPPo@AKO2efcTjG=R1==}-h%~dfmfe1r<(6t{jx+Di)URX%(#Wv z?+E`FT!NvpnP~mJ_k8C2owX1K&lCR7yq~7j-E)M(gLkT-mICWLaj1$q!%q@c5%^Ont1 z;G`>=idzS0O3qWBgw|yWr1cs|EoUyT!CBk(4R_A$i#fWs(5u|FNEn z9QBU)-kRqp>eI=3;=i9>XPw@na!O^nONq8SdO%o+GEJxG$(}Y8}h{ zOZ8?-|8b`dKL_z?SJckpdKZ`EX;;)f;;E#~UBfG8@8{BauJ=_ekDXX-IotoGr_GZ> zey@CUCkefeb=4@TJb`s5N*|yNuyv}W5HD+^?(iG{TVtrHC|fuwOX~l7raq#dyKX)% zV+)XOwUM;$U_*V6+wErmgCMqWL+`ZV)26;03r(0Mx~(tj{!Jd=$mP^2w1t+9jz1iT zYM2^oOD?_t=^;23+TCK%{IBBS7w*UKe~06t@V{0Z|Ls2eVqdP?ruo0VC;oqh{RIb; zKW?}$|U#qd3~n2e|Q$>9MG1uvfVMChem2=*zCZ2-mfyvfy8xw~f8> zAbzwp^~I;+>WuDva6cfPlfv`99LHJW$z$0VEp*zVf2&5tiPOvL(XX&rMK9FwH1Ytk z4YQzY#7RCereN*A_17cr9r_*b2mRITE4KP_NQFOPlA0T z*Kc<;6XH2drzv>;=ix#Be}jXg>WxVQPlA2d*8k*aGCfdqR+`l}W*prnEx5jSxHh2A zx1qj$izSM0rGbmP$@}`z^dC3WaWoV1sl85#%ToTVvvYKD{>b7S$G5I5#Y+Uf{OBs(oiy%yXppQW_(jVhHN$`M+cs~tw z@&#OP;zIpjk2<&hd&GxKZ9q9zv=e>|^7wHz(nULJU4srO@l!?mA|5Th;duV)XePnaj%f;>yF5G(Bkl_p4Yr~wOc9Tk-f%q6IGRcD zNJ}Ajp7ij%jJS{;>l$JblF!C&rJWdVciEFP!sPcqLNoF~2P40=Lh5%%j5J9{7sd^&YnW&F zGZj7^js4A0G}{-A-YqfSR(1BdwO;Atb~bjD^qz=`_^)-D?uTTW^kI?v<0KolIPA<9 z_EWI=W^ceBFNx0oMxFmpmLdLjr9N3}bB`@A+Uk8%zu$+2b$6KjJIt|TCAJl&+?LuIQaxf7>+A z_#Jqwds@G>#cy97%#+F{pE z<^DETV%^F$XpcE-&=ax($8evlaCXrruth#WTWsB-O?5kL)+6|K8s}_d$H!=W2GmUdEnJwds%hwoDl-yWr4HU#d_Ka~kz=(yP@-#glZubyX5`urOL4ss9d!K#gK z2W_l{`1Le2;p;aJ_eS*D?K_4zbQ``>giDjJZhVb)R_XZK3XWeq90vo(@l08}CjH8U zBXnGCV>3tFd^hLhk0&rr!f5J5{J#RcbJFOziJlelZbX05j#F%et-0}Rixyipy_3fI z#;mPc8bkXt8!_HsX^Y+8$Sdz|=#Q}HkN~OR1l|B=N6;GRa2|F{8s`#NoIJB!YI(GM zy|K5WZR8~tzUq^aq?Q}LVmu?jI}|iA?r+^;58~?+xRm6Py$$j;!Fbum(T=w8wLvL- z^^gi*M|wEXciZ?ki&Ck>eo5ne8jG`Y0={1FXiL5i@o*-R*EZ038m}7{xdr_fj2&%& z3~U&L3*!PC&==o;{%=J);n!r3Uw=oQFy3z6;p5XdU%L%*z#+43d)6QwhA^FPM z9nRN9j<%_Psn>7lAUcr)jAsP(I~O!R*Y9|5`bJvyo9BQg95>v!$;>z9r;(}ktr`0DF*EuXOAhT@~f=?r_LA1xw=+Z1v5Hr2)NBRu|X$F34^Mvju(Yi%&Qo@BglQxiu! z2|m{FXndGku;shy7|`hK@Ey@FO?>tQ;1GSZskNh>w0ybxfqIR6nWoehj9+irhU-UM zzu^4I3vpeJ>yMxZ-fjZ^P0-<+?#1;YuJ>?#s?=t0e9Gl0y(cNZRvv%QCU2VPXdHpf zL-{ME@}t}*86Vv=(9w?5EAjGwDoU{j3J>c`JBjkzwlPp>7Fc7ttqq4n-N$^5;0{OoaG#|BSm1_1> z8tt3I8`@vlbibpWCSI=9=pNvOoCkQH0?p|T?~x74gxB>`px^C!*G>O)v{S%Ky~6S1 zc>bbJ26$(H=3Ec&y=B51+Mn6;?pUOl=bnfCjio6!Ha zv_&7*32jd_SD|<4L|(oA|E3L~v0cC8{is{?IfIh_($15&^2+~V`g*IQE%*|($GSBM z>@e!yfPZ_Shoyzn7?1iP4Si|xCFr+o`rgql$p-y{6Yy`48j9MUg*tyV{!>D^iap9n zJ97!fJAi%5OynCnfAbVQ*0LG8bu+A?&4))tDc2uTuHQJmZEl40j(15MJt+;nsV&!p z{esP~KP+wGTa!}wMxOCRH=d3&8RG$$pr1WfV&u&B~axlWfeI;mn z_QtV&)L{~CG4848C0qBy_U2cf22m^JDlw zW&N4N9^ZVQqb=nh-e0i&?KbLEgYO;>-(#SGxp?c2KP5$b+}fEe`vmsW<`*38l<=Yc zNjX33;d>1fumvn_!B?6dIa%|M^&r59Hh)WN zhp%PlGRR>9J8Vk}M>{2aZ45rt(EuM>zb$Bst!ufc4EV@PV4?Hv>@DXw+9}}!7KWql z2=JlzwFPalb**}*jW1z4yybjHJ0*PW3_j?!0N*gsxZI*ss@2Z4@g=mow!qf2w51+5 zOwis&?>f^(fnUPMOFW#{fY$8}=LxBvtL^GZLVIh=O^&v--;ERC)b;o@oGnj{!|xpe z%_DeWUj%&p3ut=n?}=?voX>K2^;4K!KImwtRPJrT&uP%9BQQ>iG0#mHXW2qq2zuy~ zZ*cvhG8-+y^@+;7xr5_zc|Hk$(5?pjLHobueV4+COVgA)T`R)tE!uxeTlkYmFZY%8 zYtq6AKCk`VG8;6OJAAE&rKy*b*r8is%Uaqcg-9d*dqa*ZutggnxE5%>ZCR}pgKzQd zf|LHHzc&=URRvbIiKk9LK)5J%9C=>(q5a>o zPp83q`|a3OAI|XGACGR2S~3Ot)vZrtxMJKY<1=&GSvwr9v~WT13$AS*F39s|=Msr_ zXEaR_ms!c+ zXYFQ(r)+tPr}JA#V4`yKXYA9-St5G=jJBiqTjVfIjx?|RI#PO>CCZr{Iq;?X_sy4& zr1X6GT2%9e{oLQOZaD=0tgXY4P9FSuRY&2sC=Ztl?mVLBP91`D@?a$@c5cy8`>pen zXztD;N-uZu)Tn#8!^H0+b^OwsbCdCNXBJUe^5;|gz4ONz!5#sB)60#WSF*flrhaSb zvoi_NGe-_jdik-`!sk;Q)!!?Z(eouOlwS9rZXUT-*>4Aa>)hBDHqmT_<8yjBi=Itz zRDPfQakju=NG~VW-YfsFSdv?^emi9`_+Pc8mkT|r?RfBem4h8Sa!At4hvr22fAx}n zS#T7_wu5EKLq&Ygl723H-IH=I_IKbYfP8IXCG+>QMY#u&JwJ^5>vJUa*Og4zSf``- zd)1uudO^PSup@rvD;ta-twQPf5-!7x%N<4r%h@utt4Gg=XlAbxnh@4r2)J?Em%0*d?F1He(2$*-mPl z4{4mAW3KYE7nSOZV7uruzo$GG>o zKO28CQxHA5(AkZj=YmEd-)ML4Ub9X?(_;?peoLj!!+-vXqm=@lHcV0QAT4XheqIC` z-nzi^j!qFz$o%`~yB)0*@L-jT!GrY#0iN%a+KP2>)}1#rMLf2DR*0CD^*RN7)(}OD zG*iHZRbdD>4Qp?n#D%p38*^}>ZT%eO_&IpD^_VC#CQKjh}j@!cd_UqQm9IX`av=8u%_wZn>VJrIM z)^&IwMgEu-$WeH1akNsvBT~z7TW|F6`~|-swrFrf#{3lVa6A_-3eWwHmf-Q%@y53k zTp1_zn0h6UpC>@$9S_fUX1!f$<;8w@ES?t}t(5SfUQz#j4*kPAzZJhJ+gl+|TTzDO zTSYr5AL!VCA0HsyMK0Bjty1I%EpND}@GM8%5^M-X_r%83zk~dbHTgd)2v>bL&ky$VKU%*l z!dYVPRnyOsf5vI9eC{` z5~TMhlioxf5BKVi#inE2)|s_Oq` zJ@ff`pMHn1k^Vkk8K-W_>GCT@m+lKDUDzMSRbLjH?$i2B(F-O7{z-lr2eL>f`Stsw zF2C;73x+E+dgH$)-A5T)T=i`{huzQbYx+gee^urkkZ(FkmvO)|x>D1X+Ve* z3~zw481_;{JEmU*c`t(O6+sSm9EO8Ls0zdG$e<6HTzdn;eQ`Rm~hG`?|+#jX!K(6E*7 z`nmEgQ~llffy%k^UbR==ygQIvhc@NB(z(2OcObVAdIfU}ZG+M7!wEuqe8jiB#Lm}t zo1MSehW@l28!5>~Jb&LB{k;LtgXBq^+`X7RfhqVk3HJYJ`5u;Ud*Tm{{f2EA7_sA1 z+tByhHkfa;>wbyZw+7*`^Rk{#;ZEA_J6OHLioWY}GR-{Gwmy!Q;5^(LM@bFmK#Npx z0&#%zBG8^_Q7YB_S>5B4eo$#RVGH`>p4%`kU}+hC#*SM#v^YBzoa=~@5Za-Gu_9$4 zR;%(G`mRJHI7e!n+a3Yks~ko?^=eB-OK5OZI?Y3v}47Y6t`ZyR*()}X#M0NRi`;ZTkzOg>DHmavA{a^IE z*iYW}Z^p#`xAlK{&Nt7xyNp9$^zStK&HS>ytvbW>n+uK1m^8LMVd&$t>`tm)Fs`|6 zzRs7yvMTagl9nOuDlyMO7^$W;|xw z3jGdYBk!GKp4tCroJ#t)r0b8z`03g+e-X5#(D36^ldhZNsMaKAJZ9TQO?%s?=m&pi zo|!J=*m7Bi=S2B+C;bNL%GfdFXPYf&l*38PFX>o0+o989*y4lv%>Fk=f{dKG^xUXZ zl$0UdVg$Bw_AO(gpMI$RFVAi~NP9wo(4{43r{G(e(~O)IBXTuQ59@iiAm6&a=&=Gx z2&2dQRkc9=iZPBt=gDWS>8f5t#>c87-bdg?9UTT?GlvT|gfCBMUwvo!BHwOY-N}Ij z;CmSd5xz!^Rn+GdEETKjUgoQq`m6qqwzxgRqfV)%eVG^(dH0PoG8G5v?*$8n{|r z<;z2HdlSF2{?B`{*EWl@;}#Dz1{%{)f&#rj?G2-><{X=!@cO@C=P~S{Kv{%#j#*5b8q5KMyWePmm5|i0x7F zjf@LAJ>Z@i(@cudT9>k01$aBwER4rXUEuSC3yXREo-QfWZ zDaYd58`Z04yyDsoj^1-ka4f$q{(pepR7X$nR}RW)YJl%U9ftWeuID^;P=@f);(HbN z5UzM8%B{eJss#GCiX2R*kCAI92Sx_qU-wwcUtzNz5f1pg2r}H<&?KF8D)M#*(4MCK zip6S?=LT1x9%x^aUYH(dIfdm@^Im!MdTvqGT{#(Bp%~?~y$bUBSJiVn%c;Y8zsU1e{T_)%-i7=Z&sV+LGoR-D zc0;ix(%TOGKEJB!H9}R5mghZq2l;rfkESJe{_ZJ!_?o{(zWjMse%&=1JvQ>-8t`KZ zBzrXOqqPo0{u>_4TH5kNQ(5IlmgNiQH?~Vc`X>Hi@?q)+=Rmd}gX>5WK7rg&7U(#4 zVqCAWs!_l%&P~vX+_c31IjYyqp4@D&quVxjujT>i3kV9akgVR@G}=j67{`k9d8N{|9wg zxkC<%f06v3$KPT%#P0vh{OeiW5Q);Xkl*BTh4y%RZyi?BA%Bv|722ll$jA084E;oW z125>jxwu}1>R`t=$O4`4?K*^Osd|0q^X(%2UgQeTkh9*ke7U;Td;cWf4^h33jFqcP z;eRdonytgi9dfn3lkjySf1CEy>2+IA!}!YZrO6ffBO?Wp8r$DceZ3udrsI62alKor z297@uX7t>U}QxvkLyU-rNR%%*nr(hk5yv4Hd}E_8yYIJLtoD2>Zn4ZxHm* z6k|6{mi!zPv|qZuFq*3;&w}1P;^q94$p^zffD85)UBdh$PjuVCFXMV&tZKRZqfF@} z{~sXSb*lGxUp`D5A@VUB?=MolZ;37cm*D>{__G!KX(r^PpSt}%;m@n|5xXOHU)jmg zJd$w5DmkC#A+7(IG)R~AsEXn91<>-gzF7S;54g}$Y!~Yy37?R6y6xbralIc?bsV3N zcRJzIHwgEr>ix3Mr!Vw-;nNRz|D@{uK`fsZ!~YB5@$@13)sgqK{#{NAB1ir@siA1q zCqk0On)a(uH9FPWL0XP@54syx@9xM%T4Eb(T;g99;s1^Gv87467J+9BIf zR&?7TH^%kOQ?*^WqO9lyS5t)hK=uC2E7u+RwX6o%fi`~oY}NZamTMw8E!64mI8;YO z!I(a)>Qh5ikJ2kU(B>mtWEOA+j(R0u>di0oV?Lt#_f8)8I?x}oKBJy^IsYX3L&6_| z^kGZTCDI=|z!N&J%=#RyY6ScvPw0eyoq_!u)u*-3zw`8a){7n8@%{(Zr*llb*wG5_ z*tc)4!^$0e*wK)D*wKc+*yl0Ji9We z2lPK5skRH~NIwp1Um~-fga4n6Kiiv3SeZPra;h#T%G(a`fR6k%uFr7Kjv)`|z^}+V zhzI`mx!UI!>IWV9^&NN*{`R>umS4ojdNfjpl{@)$y722l{*JR_x~l7;LpX!sx42<^ zt8;8Us+5)|>bp>Pa&`mKxm5e{Zu$*s$2jfhtxr7tFX~{R(oXnW4I}+y)eTq?LwlS$ z&Bl++xEb|9Y7x9IZ@?Z844 z|6X~m-){z;t5u(sF?QmPTj75%aQsn+l{@U29m9mbckp+dJ(GyPSHgB=_lW%Y@@vG~@bbsRqIL+K#uhulK(1Q9ggb6S|gY?{}gdD)?6Q zJ&pCN(C~MIycYaFLbvUBK=th%%fGqsN4Om;bXd8Qe=iIF7V&o+|LhmneW0VRg5)RW zUwFOyANV)ir5Dt@wb~E-wQk6>;D`Mod^Y_2@H-Xx@F(ySHmvRMzkhI)rLY-Gc|hM{?5AS zJ}v~m@P8fB%ACnjU6($e`F=m7k+k|n%=>J7v;Q;vPE;8Wb-@3gxDH2PNK8iS=e}Io ztbSx!W{1fSU;FU*qialktkS)B2e*H|{$DZ`|IdS!JrSq(oFuDS$H?3tt<-BUGHT!O zWTd`W)zB8>i<}3WikV*O{V}jXIft%8bI&V2vu&CLdaN6l8oIHoWha8xrHZ4kaOCrl zmw>$?e}MAAmg+(K_1R`h&BVCF zyO$}o;0`H|jEBf`rUhB8NJpGZ$L4QmKRjRPQp|h^v#)Ssw>fXEZ?!zDor7E)lW#pA zZ*$oZC;s&TCkDvuJJ;p+kaP#=bazg|{}H%uaS7B|XVN8>0l_*~&fZIWS=pucbok8zXXov>9^{jDHLv3=1?a58t-e|3L8+dCT5uZZOo>_X0gQA}c>d~W3Y~@_c(|`u zCyZ}SmXZ7GQFFLMyT*5yhwo85|5K;Id(D|aN8dySq;4WIcMF@}F{I+{|RHNiiAKjlzzzN0GviM+!WVm;gW zIWDxLJNIa;yw_@__2&L;{CLL5dtaF^(K{;mvK}ul<+FZ-vYtwsj^~`su`=;{VX)<{ z>)}4|uX2!!6Qbk^^$t9bEVvNmq08NtR2Lb+zY*5bjgW7i7MEq}(HWozC*@a!_@*7$ z`4#r4X{6urUb|h2@|5KKEvkCZj4T+8^a}CA=+|A%;D0QBdrtK1L4l-&;cv^}Y+qWu zgLA@Wbr6#-RgZN-`_4bBC)OcS zy_oveMfMcC2xZqMH5e4neu?LQUM&64wBi+1fvtcBVP}#+iB-#71g%_pnqX zrF?2Y^lB~E$#n6UHi@|u`LE(pkXFg~Tlwnkcp`FDCy*?g;ARwT`CXsv9GRTwT~3T%+aJ5f|i6a9w5O@Daqn8P|&*E_=RJd-#nua_Hj6 z%c13fUozz{f0VvdP(+slG_jF87dK4qo)R8Ja-IQy79-z>269Jwlc0rzbvEGUVEBxN z98OkO;_Vdt!Il@kKJJzGE1(H|XI>j@J;vdp*OfodhQxw-9G00PU^E{_(Jxn*)`A6lKjQWAy>X~KibaV9oJs;Gjce` z$l-3pUycj<(Ym^K>Mua|e-EGAj2y<(iI>NeOH6dC-l@C1zsaDqmKAGk>6w+RC57Na zjS#9~^8B^%GBO|kOR^D<`(JY0mb>Otk6r}}^#-vn#$f!It5`eY8Y7ZE8FHP4RX&%9 zY-@e-g_E1z7@ydU@eJ$g-C)*Fm!@Bn*c-bs9$;w--ll2eWsh4BQ~q{W_3$2o-_0#r zG}UimGzG5IcD^$x@-Ia1?r!F23f?Bb>)YE}@AiYF4`thrQtOVpKC_^U)Pz9@FHZ0R z5$%HA=i@pN*Kqxg_j-HvIl%i1@#Al%9&l%4M<>1xq+816udkzR2ltCLqrA`uWsWk^ zdcIl=ZPX3l?%qAr@ix#?x?Zr>jfcdu-^P&{T5deCSLA>9U{9V#gT^0OGTPPOlj6P? zMv|iNOmwtT!UId1cJ$64l=|lHxL`wn13muDO}JX)8f8FL;6IVqaUMS~PPF?$mtceA zQ{+d;zE!(1_GW1bKWJAcDxdx+Ym|`Sx!c3@C}{k{!!yd*)upv-A^RZhe%8@S5l>se z1AD^uGj{(AG~V{`JeeY%kbP}-qu*|62_Dz)ikDyN2ROm=x`*d|(7>3Ubq&@SJ2W|e zSl2`oM#=A7M@#Uq-A`0rgS`5LK48F~WuU>djcZslCHZNC^{DZ9P#-L5)wAXv2w`}+aJHz7LgT9=7$9N6jHRBP<X)uEVo~Dx_jP4nrJ`wtYnJXH8lG`{!|x3{nwdxGnP(#%NfrH-40Yt3(3~7teDuh zu81#V%Zkb9;{y`afyOK9<^!wrw01u5Fdb+mr?vEf#V4n!tsPuFPOC(XKku0(x-yc3 zv80%Gz>TPPl>Q-4#LYqN zdxJKA&zCNpLkdzH|4wo~@t%!BGm^8*@TWmw*M#$@2YL?U%{(pmvkB`YHhqKhrMF|V zt#K;j(QYadc>@=|Z_NA<*kKoZgLd_+vm9>wwCNPY!;j6d)3(5tJ-Uv{czPn@V$MDD z1r@2>4g9`Jsc(_aH_zEv?!WK{WfAZPZT{ZV-2282R0IAhwg1~CW}F+cV#gg}k_0pZ z`SIIp%_W{9%RVoAz&u$)9OS3cke;g2<=?AH7k#BFjmB8*k|LGy(E}>u1GM2AFh=!N za~(G9zUd-W>EcsVrE4BS+@n;b@xxT5K_9A&`LC;t567b1K2sTI+!z*9`!W4@UR3J3 ziPEslT@XxSEx!yod+IN0fz1>qvu)Ri3rU3f-Uwnk$u}L9OYpz^htp8R{Va3Z?rpf6uu6HD^*`~!8vX6mgH^7iB8r{^=^C@{@@F4C0okj3bfvWKQ^lF%I%)?_69j;(~s+?$Bq9KBdRa zroQk59X}uOGMcD-to$%W#f(jJERHsQ*)c}TkYAsw$5D;4JN9C}0lbUk8 z>Bv9pZ&-OULPYAQXw3cJE4eJj399#|Wjq|i44u!}hj!Z1WO^83i>^uZKwnr~`m8}3rUT;4qYzV{G!fro1icWFTRrix3K zUU<39b+kk4asU5E-FLuAQDpyDGqVXc!zOlNm!P7E5)~Ac98N&8fWV?80}^%tF|T)e zr)N%g>QB#b>Un3*S-~@a5wo6Yz4O#NJtYV$u;KrGud2GLdwXVj)&>37etLGMy6e@q zUcGwn)vM}m=oNb$BVOQ+Ax19$*_LO@F|}D{nF58KGFV6yZ>kVr&g`j>?ZlkH8Iuj$nJ3bn62JfC9g z;T?u{Ag*CNbLSppT<~Lb|7~uAxhv)!I(2?4X!)9RHd?CI=$8SCm|Dns6kE?(g-*;DHzMww0 zzm7z`Gfi#fSE&8uiRD{I@Otz87D0TOW@rcUMeal(Ih1k)Nq2G0McE}5uD4o%izF!s z*YSon<7)07PPP5R%?mADnDcKw+u*7QFW-h=q^p8(!GF=T1La%q+(7l*k83Pk=c4T8 z7OwE}ZR4VNKPNj5v-uK3J5Zlb5yKb{vJ2A+Ue(ub0~Y|wC9>USZiLj`4vkZ&`+B&7uTuVXQBNw?P(Bag7q)r z5SljQGy5P6KIvnRfgYy4sB-*#X5sr5y!ow0Cq(yhHGfE~2es!B8z1bprp@z6v!3C{ zM|X+PQ%R?RlRycawfInSzvT+h`6K0;v}+^ALgHQ(q#C!+_D2h~1CR-ouax9V|4Y6}Fx2!B(U9w!miFI;A^q zZYS*$Vtz_b!Ie7C*2~cI9KVtCE2H1YCQU$$nKTgMS&XCJ!f`!tz$WX|{l+Bpubv~@ zI4pl*%k73X>r>;O8+^2iKUCt{@@EUzy(nv~H+26jv>!@nbW|bGZf$wo&}LjFu3&Ic zta6H&$@2!xmuYUg3HF41Qi@w{8i}Ky=GyN2PyMy!5sNQx;dia6Z?E#uaSh^&k(>a3 zbIZqucFg`753VRV+VY`=>)$B*gN3Uyss1vO6od=008N|y46{Gh^p`J|$9#itq5a}5 znDcKX|alEY&L!0ph`9WT5&f^g3z{R%}(W$MNo9eW8UdVB%@o9+< z;NR9FL!0rLIH=*DZTSI$uGB$q6U}LAwjsX7NBXz#HD;B(yJt2Tj5u4 z{So6EV|6nI#AeJ5w!$9K*dTkbmFCxoPqcPoz8q`uL)Nh5kxjzGKGqwq9pw$LufVH8L*rm5Yn|<^c=Wn@RIa zTInEu-EC-7y_m7;xUm^`#y4dUj1O|-;(HV{UNrc6OoAjHd-hxlz^6gWU#aPs-M@!@_Mx1Rcd_zq; zro5?G8}}!C3K!RA>>Jad@V`e(3QM!BX6XN zWAxCad4?Tttu}1zO^;Wa&&l=LF!8q(7l&sb%@4gz8<-FN_@j=$=~~e==0h*Zhi&_# zJoXrD8)Wg}De1@j2tGufQ+&|n3AHyeqtDRujC9=1J6F|L#4GEKiJ9_0W$vnXdeDqC zJO*#v%OD9$#XGw+<@aPu1$ndCmjv=%aWit-_6mM?}3y`-AA0d=?lz z6=ozNSn{bH>>toQErKy3yOE$J4rEg7(le7dVmML-*Ra?V5?-OXWHG9IytpBZZ1L_r^{>YSqAC|9RVd zL%Zn?5Zxz4yX13GM&e59vDiJNTEy*{XSJsqbz19&1Gb^o@a^fx?TIlT*oIhurrq=y zh?a+FkC87mgF&n4X%{q~BwW-Vr&;(BYuI)VossFFRj36iWPfP~xr z55p6?XspP0OwrpJWzT4Ns=?e1aipz?nQWyPG-A@U&b%3G2^0t3-HG{kg~h)I(Z-id zt%IKuo#|In{EM-#XdBk;HSMPRK(uR8{A)g9=}nJ_2U6m8JYlutRn&!;mrjSRMr}wT z+o8v0;5x^)_Y7^8gDyX@9TFAIObE-o=td8J2Yn9 z#W=D<_m5t035+{zZ)@sed(bms`U>h5c`^G<;%LFjhLy?HV0 z!S=lj?WSu$^nirzYHkh4O3VG{BNFu?4c1e34 zIIgx2HMF^XeG;}WR=4JyMy#?I)ZZ@t=TXP|7XE)AW{4C@&-BKVqNQIQX#cjqZfM7`-}X3+ho8L= zmK(^bi~nQP@twhc)TE^Bx5gjL|1S+~mYdRq{MS$Jq`i1!p-HAeqhJ=J^aRG6i+d~V zuw&tVOTBkJoV*j)W3I1mZ!ol*YEcKR*V+3#jkaL_f$nK1Tsz<^{)o$WJY{fAyi2V| zgAQFo?*O3Z^6!8@p;9UqU{k3cK3^hp>8%BgQRGEMYFGVUm<(C2POUT4;hjRyR?+p1 zIOKZ{WNFDSYu#)(o@ycApcC-kV6L~5EJ?nNN~t|XHotF!&m(qDiQiY#8}Bg~EmGg| z01EKuaTYR_OE;* zBeIx(<&^u4YI2jq@;Nc{|qkt1%v@q%!U_#B0ILvq`Vwo)P-Dy46t z_ZrtKzFaDEi7&gZ#dR}9#-IIsQE`a6OTib+Q3LrxddWPeAl#EGQH1!$V}km$#_G?< za1x2~RLZzZ6nWmqTt|2x6Om^Y>Pzq+?_+-ExF&q5yPtBYowx%{&#QcI2gdmia6VJ+ z|F63R-?2<~@cAP0_vQ4J`oHdW`o?t3x~cDN%!*FBqH`ye0G*5Yzx@6uhkvMj+Nbjq zDZOt7G4Ep@fcJ6tZuUOrx*I@&^$Qeg-CDHsHkUs0(f=MV)*nh&*InseJM(b$-ZMV` zq0A@Zb)WF}nPWve&wG~YUc@eAw9uxSkR-mk=Ln)i{9-q(tb|*O_Pg-ltRt-?$DZ>$b^j`4in<_bT&=kV$zn z`#tDQG68Qp#&za>$ILL@?>k{L>)tW+HNT!+D)Yckow|Jl`=)>Bb|~z`cb#Vbh29V8 z~bDBkZ~F*fHY@@yg%LH=dpctz{2C(xRJ!4@8O^O<`5S>Df&I2NZv z&%Il5jkWc-{{IvDmP7}Bez`GoDX+|r*aPyAIMNv#9X&zE%yji$5buta-Ot_K(E|T& zlilA6?H3tM>DA(<7lO3RFHKT{G5-H2FUhszmnStbqhotOvjjNIv&5L|bXtTu9Y0w2p!!IABTnqjs$Ys183qKD&dwvug306-XQ}gLm zYX+m@lROVhk#U9{i2v(Ytb6~r9ml2jluT&0M%;%ceiZkh=aSOgcgIUO*5P>*e^9e@>qK{BcYKGv$ZhN3B>GEB1VQY&t{vxM^~?h$$B ze#9O=7c(F6#XWW+=8x+l&mwl>Cd7xHy^i7@I}znk@@(R!!|{%-1u9>^-@fh!Vv~B| zwj1x*3l!SZl`?UD(EHaZE{mFW;`%z!*_o@Zua)hjm<}b1pQtqRQ<3Jzf9M_AlsNt~ z3I9J4GrzRrKRd_E^8{}vV%~Ts`OF=DKJ>)7@o4wc@>>2x1ZHO;^MUU!B))s%k>mlm z++aS%=f_OY8(`=s#VLvBl(>J^;JQv?)?Rl1Al68U`-l3d ziKdT$Kkzj^adgGhPXxiHleWn7EfMl zP=6ILH82_(M@@C()wCm$Q?q`nRdNkpP}+%pR%zBuQE22^$Nz7@HFQi8vzFU@yH=KB zzTJ%T)5NUb`1$r*%-*i3h+uM1Gy51MZbma?er?j(%|Ix>+TScDX6WUIRc&O?}L- zG~Ws%)vN6YUH?xUAIdT@`9;?wk)BlPm;*(D;TL#7iTJe(Yk)hS6UU6S__eF8JWu@E zH4x`t6vxc)^J_cKwFSTC$!qzO`1Kj{tDb)Q_!YE%N;?Z<^J~9eOjfslS0U;|9XfG- z96iR@lf58FNU``uJfO4_{8j0gQ!Re&%9pv!ul~61YjMn_Hotny^8|O-TG-)#ieqjO zX`c0}U1d1e8~i$7)jH3{=za_1QAB#N%-WBJt`W=49uE98Z5M`MX z@{6uN0LNbHdg4b^>3!&Qt+#f82b74vDjoBL$am$7WQG#+YZk7{7RS71^J}_1&+;`F z{QOoNQ|ptjUBggrI{0;myp}(SUp<*$W9YY!U$)*_0=XjI(SPOD;raynYu9n0Kf%JOD>J2t<-14_)Vt8ra_F}s7!FJ*g}Uo>V1irM@4`E@+< zF9*L~k+k?Tg5T?zUrXpW^&ju6k@7`$+!}p+zFbEKblEPg|G!4L6rM*$UOGfXUOG%fHp~ZoDTgE2ZXb)^ zHQ+mJL1RxGkjqBQaT>tey0w_mdac2IcC%!BHadwAQCP4$xPWs6Lfuj}e(> z94J4A`}HYYH%rW(X7?-lk`nE6s4oEiGsNuUX`e%_^rLn?#;3Uh>e239bH(ga{r!&p zhqx}X7VUIX8{}1Uzu!rDM9=E?DeMO=z%D`ZgNUF0apBjy>p|~+q9ju@Ij4RjxuE`B zjpIGfb@FM^10@cc+wTG|D3KhgH2XT6Z);^P^X)TSceR-P7n^U-%k!*n@g4ek_7kLU zYZc!XM_j{DTR?Hc%_c5vdsxQYmTvxxJyp}&{{Ib(h-<^K@{BvqQwcY>z zK8zkbC=DpU(54kpzFT^4{i{1p7q&>df=|d zb@k{cH-TUElbB!F4T%0DeN*W2E7sd6JiY>#^Ye`i8IsF~OTf2_I7{ZMeN^j~%RI8t zDotA?3V}){tGuYM0oGM2KbG8qH~@xNuqlJsW%<&$&fzbm~g2U5=8k{HN`S7}~PQQ%(5{g;HC6Hh2v^yWTh&GSii zDKY4@}T9c0d1#5{i0H3 z8_SN9>`-DpO~!TYL}h!MPXpz7mb2Ap`&XiJZ<4cGDaQ>Hp@j$uqTK9=Km`-@A&-JBCcP~{9q4@t_Hmr_N4)Bq(pN} zl`4N_tphYHmATB1DqPoFRPsD;Bl0np=sishvvDj%dnyzK`Ukma*oWIQkAC{vL$T?J z+DGB@3G^Q6q=rRwrA!Isfv#VIW4^jRR{PN=O2jXfDwo;qM;}w-_FseRu;1b|TOMFL zDX~0UkMsRS<;6a|(@=x_tH7TjxKJnJ&k4*Qw(!m7EwoRW`g}g#hidM&aU(v>^p4L? zG~9&x=IP47e?3laLcLeuxImtB^Pztmp2Ts#%8$h_@PHEahf0n~)^XqAO9&nu~^gzREQTeW)U$-M4*EKvOujNnT*G0^)d+2x5T6~!MzeYj3(29}1 z|EJmgHr{9u^CPZ*LThggk5NrBHL3aDa|`5e@K>jk_Y$RYK9S-2neP6+nBxw-p=8mi z+%8I8|F{7i%$IYbp!j3{2Rl6^WlPkwV-Mdw3&7a~%64*!?mm7nJ3IP#m4 zR3ca&vf^}9A{Bws46xSj3?sFi%6d-N!Azjs61)`=AlTm9acF3&K%dPXUhoDz=tj~@&<|Drxe6+_G`mbR#@v*UpDERESv_E=X*5W1jqU_KUf$<^Y zOT!Nm6Vr{MR~pe)O2l`Ss!p`*a^pTSm-#XV*9lQ|y3Lmn^88}F%hXvW#QUQ~b%AK> zk)OssC^rJ_en(e<|0F+k-0p)Ym)q@KS6zvHHsrl5w#SGoKa0zQqPnlmr{m>$mY?M~pDwCL`sD+*u<>}@ zla(v4hRvUq@;vkBTAUvzs{d(^FQxZR zx5#K)M0K5?e`lc_)+_$Lzof;V#J~B>zu(YrmNOH7mE((6E&O^|>#37&36`@P zKv&svrc3;a$49#UQXK4c0LLa=AFvMA2;NYleo_gXG4a|)@P-oe5q?AC60y>bFE&0Z z&odvN#rfr8Wj8;c{*3%b!6(&cT!Q$-cE0hi^xHQdGjc|}n#dY`0cOxkF*=9QOggUI zrLaAVys!c9ddB;6U)%ut#4nwX7{m)7BmWbXpM|>{HzV&WM#dk^FZ0v2Uya}arAF{q zrIm+T^RGtmfD-r>dFBLMcePkK$&x#H7V*|6;1`{S^Vf=%3v9W23HlxSOQ+~+^}N+u zrT1SEBK<{_!~btEZliar=f$e?R1W7I=PFzSS}SYR`L)PPL*CcIxg0vQ3A|{09~Yw^ zoCE%}<@JjE$Scty)mN^#a&fn|YyQyYLZXB+m+^nmMDj5NqyGePoH&quumxf{`lSjv z%VB->8QPID9#+3EGz2|gVGZ_4lB_S_Ues69T_yCLY;_grQP0j-biH?P(r&v`Pl>PXJ&f<|L`px=F5T*9(fB>LliR@Zl@Bb0ra8i~*wHzH--|Rx z(rv1Nd$mYJ4;clqIRGxwUf?zSqU-QpZ0B*|Tv37Z>xJlrv7fOW-KNZ z6u*s45~;I8zVCbh_DRy;z7nqoXLm!BangIF6X6^Ixu`Zs8D|#@XK&CvLe@o}saJ)3 zkF?y88u(m_CfICEljVux^KxIXK|2|F@_A^q|B#-CMo)8-e1zvga@({32aUmH7QR>2 zd!#ArG_}9hra(Jv^&O(7HX1|m`>^$PWa}pdoBwoIVoNc4`_H>So7US6?=Zr^tFQ4P z^|xp`(eRG#EA9KzJedf&CRv^j*&ts9^HS{3mHc09$p@@l6UMVnY4@x5Wn{M>l_ z!5i&({6Obxy-LrgYP!wfNiS7)C=q|u6U#h!ZZfn&;eqvFJmkY*yijVwx#2F zjuUXe@7djn`SOm%mo4z|a!sx2--qPOK>_l!)6inR(D?G&fr*HFlIE9BG^6L6sYHIo z{~Cn&u0c45z`r_Vo^S>tMm7*M4~C83-HG{9$9!?bAJC2h95k8^6pEHwagka5;(_X}?29QY%4gx|jw%v`aKi2&HyTR{2am2lbW*j_|T|9SLcpgL97c4voE+v5{ z=((+qSZ8Q59`k%SKbOc}JK`Cor$5B^mvQ{d!n1>-|KQL0_!y}4wB|95OaEL!pHuv| zMhEFoeKvkc<`ha|4#)A4;ODG6;!}f_>za>*&dc_Wn%W&Ppz)+c_HjLh&b+xSwf#P}5T*%WW6>1c~{hiez1;)`hrT zGh{CJ-$l5toyfY;-+$wgKLhPTOv+8vu0aKPx~a|lb-P8huVodlk)AY|toas1dze-t;()|F|xN?pIt&@NgaT7NY&M6koTAZQhziEE?<4>B;)hIXE zrK026o_*QOzh!)lUfcFOGL< z(1>%KMJzXGQ*JZ<%E*4e3X-G&{$}z1>c!0v&O`!1uoVKFA+{ z{NEtIR_TF@n6Beg^MCrt+OF=$Ks((;a#T7P*oTYk3>9Z)K2UsE>Kwi{x<<{1Y8Cx! zR2&)qDb^gl-^7_UeTp-ubO&wF%I;y}%+Y<2_b}qjWAJ|+j$2U$G+Dejb4mrnka6ZC z+-Neb_3x=T^K!(Qt7Mc}@)>bv$GKkOqPTg=NPI_}`9N=+*>Rqd?W8s+y%{UcJP~q^ zoh4!nuH!heqVG5qv#*tP(P#8>6;Ie?^5~l-FOKtyDZ};VLO)CTFDcT zLHz4!Xotdw*c9XIVc{D98Y3)xqgsHE-tioS?+8OX6h3$)jF0rS8Xs-Of(FK`PH8nQ zz&A7ozA1)wD0~AIzKIsTIiRsbqk~>~q6PSd$H2GP&<=%<)@Mlm7FhUJ;CGFM?}rxP z8yN%N>4vt#C*y!#EnEpbEcb~)=Q6%EjL&KFPn16o2hT7h#`FUuzJ_89@?~mXXUd!T znYWJSnx3wd@dcXSB~O9k=B*o_Xc-PWj?*#<6xseIw8W0)wX7uv|3X?Ko0pKc@|RFFi(ldVpp%i``x4w7;Lepv<>tXbVB6w z<-&<%;5&Sd$gxHz?2d0d&dIk?dOXqwb+$J(VShj_{o?iRpXldAG7W7-Piu!D{*1%y z?-Y27^l9dQ(3`{?7jH3s?_=RT65d$yc!S_oa6+JSnLB0Hn;4hMSb@l^CDR!@kZ z5!&;2J^mkwV}Be+TlmgX{3Ks(wbGl-=``1$K^!6pGWxT%S1oAlw-lMb@65V+E!y2S zfNsEeicDtSMP7#A!~D;4=MDM^lQavbo$04yJROZ#+F0iQQI>qn28|O8|JyB6^OX;f z7jK=h`FgbzfxXtWLgE?8c#gI3ECr3zEj-tT#M6Ae+KH?-v=kn%UDsTq-7@sf$jM?R z$X~pnoEA>@%o#uPQvt@pG7xPq#Enn~d1%k*n)y))SUwk|ec+#z@ex{Z)D% zo@$2(l9y{tTbgQtznv>DI&Mr-GL0I_e7M@`mzz=cUOFRFW|fK)Bsaec)+2Ws+A(pd z_pdXqJ1kreq3m-S74~o8rd0Zsq&^Oe^GBXBv>8`c0Keo6{V2xuq=oAxlto-hr_3+a zxy#ZDCDlTDsuPeF6TsZO(;%1u^|^SZ#lj!>^kDR z-Y=lXIz5+hBy1f;h7=c=@4FP=8$r*vHz4a_rB5ycz5aWM@6Z``d^g$|xb{J8@+)A_ z3GWGc=?hH79Au3?Du)7>Mhu$R@|4;iqYBX7XsaYeXC z;~4DLBF9_M{hS)VivOd%I%Thy>o>A}Gi5g4H#G~cpeuPyWD>Ur7?Fq%I%PM=`|4zS5M!jo?SWmu zyk83j+|COa&jvHp{@(%Ik#O`^KasdPC2vW{W!8+YHf@9ui#abpCfWk^7r43$Va?CiamO6!h9!s z3AgK3%42(D{7mW9(CkC|IqHr+;LYAkuA4r=3njd&X!YMZ(A~?eh2)(2&%ycxB`12V zd#-4L$kWgN&~l?~j4nrOkc=Ds7Fmz?Fs(mZ6wQEcFmMkNDOpqpMJk*hQfOr z0k3kVdtam+wSBT7zmyGuW}hrIua`0Xa*XNNCv-4>C1kTouN z-B6A#zSg?Wh5IX|hg^Tef5*ATbDxV#pVl8s#(?wPp)#i`|9vg$`xtp6vHmy?|0m(V zx=Et-$C42eGT-O&^Q=Es!2_A^Uw=%I^D$meEx7?01J)l?R6D5+YJA07f1J$w>ec#V z3f2}h{gmnWUMYD%pRiMT^uL)OX3Zy3jxl9e?%TnGrG5LL54}$Bgg*-Y>?o##_)W?T zt3J&6Q!IO*-m^vXufTPe6vP5RJMwM~@YkYtii`MhAx21v{OpvIEL^AH`)}nr`b=L! zcSqy8_4r5}r=vTb(=H4G7#<*@m5FAgWh2cO05C)lf$ zzshs;nSQt07ZnbldFpx)KIjZhTk%cK553%zxN3xW7Brs0*p6VH62Tm?%^LiNeTX0q zlDSMc*#`(G|0?0+9*i-0uW;Jodk2iw)=113#96=>Ck1=sQtrVaZ5WeJ|4#K=1%95W z=0{R0&HU2aE-kIzS!v=jtr07vS!kk~Y}qjJn@wn6RF#FUuE+&GZ{ZL|Zcs)|%KTDr(!8G*4?;!fZX2 z3SU6?C6Av>*DgvuHJ(@aXb%&QpVVV5IXxL=t+;>IuhhQiaQ0AJ>p*>!3SU6ej*Cm} z8%kYi;ewx@dWn(GtP7LE71vIu{@&1zi%abnO2xe29oJW)?9CRgSChg;J6&S>H>ueF zuW84{rS=J>LI=CJZb#XN46f{~q;Sy=lGwQJGqmI4I!MXa-4?FLQT8PZ*MuZ+8SNY_ zUw=2WJTJarp(Cocdo2*QH6}iZ5U98QO7i4FtbP&cQFjmijgh%*#{AzL6~f z#;hZ76yVs;U~SEBY!^_k%a`wgp~2LUy)h}i#FuZZe`wlq`7%h!5%EIV(=^1x(sB*1 zoV=uP#g%XDsdH&FuB;gP6Y@y>O2az8iwk{|X2p?nCMU7pMEe@`pRMne|C0uLt!XE~ z)rWDFS-3FoPs4cBDd)vBUI z^_u&#ydH5SqR6!Oh7;qvgz-6P|0kSu0UEa(e0e1*{vhX}vLtk#?cb%{WXkY5P6t;% zO+n0>?vfsdchUuU;_UCG!LM-j)t#XAq^ZAeqk3*eEBJe94;$J^;T$RTeH!BXE>76P zv^NdTen+$jXW+hvG{ieJZJs9=h2W?3q$Q^Ti~IE@3omRwo;l&Bel_a3F3IsVa6d#^ zt)Z>>>WwSeQs9~ODV(1u`TGX)hkG*8w!1JzzjcbQUn4KUJR@zhDa-Po6UaADM1lE) zc!BQM^ml>bb5no+t!n=R)vxScI^xgz8jhc)AU-2Gzdzo)BidY`=BIMBG>=F5XFX=7 zM>EH8rD*@IoYS?|-q-MT`}gdILrnX0e=fxSy}98K(|+8a3$cF>ZaBoW@Al_HOtT@X z-Rv6Ii~ycTZUMUzCAzk`gopukW5SE==(Vk)7aaW<9077y%;|>W?PFO zpTYE4YsT#4s3DI26m+!nQjdUN7CPHMK!1c>@6xkBI2Z@@e>eUqUb!tT>*G5bg9|FiJz6i$YL*V1*<1oGz7Cy}RGcLC9J<$SuG43wV267dvc-2&}O z#*>D20$hD5PM!uGK(Vnj#GxqWL+e5NQ=oGtBP<2?L+Rp|{~zPaAeW6QMD%r{8}!k27KeG$G^zpe;hvNiQY z_*$iofDKe}UR`p3kN#h4`qXE4=vm?Pe26LVm?mQ<8{bFT_GwEVH=yjhN*M6((EF9$ zA^A@7KHIi$8d@=N(6eeaj@K<5|3F!5ec;e0v>++)6fdUK|3LBetc%(z#2f? zI>V2_dxgZI?uhi@*lK9S#9{LT^FLQl)MGzuv4x{DBo2~OBpXLN%>Om5KpZkQBl`t@ zB<)vj*A>`-r!9EX7X3sr(+>0T%nb(9?)XOfit5pPXx9n9l@Cbu4Zb!MA7m^T*L(PY z`Ld?Pd@%dA zp8*=KzaQ7{w8Q+n-QhT<>Dq-jY;Tc4znU(?hrU0v2k1;?FK%yme8Eqcmvcbv51MDr zSBSmwN2LsvF7O&FU~SeYi-Ue(Jrv=3unOzr?<9j!$(grZ`u<&TwY&R_MN5Ue15FvNvu+81X`tjiZ9~jU{IZw_Oa@;`5vp(opnm&iT(>U_V3wbg6zGdn~B%0@D(EOfc2IC_W`nr7<^5Em7S^FXB z+TD?OTwbN*_E})S{2$L=aMR(qd69l3Juc-l$ac@TeBNMeS_^QU+{no^=$&DK`y=dl zeI+73au+=Bb7{AZ+fU7O+QH_x`<%YYH1s@BM^gPsQXTd^7f!nm4K2o5mNZUxuRiw^ z_8hqS8}a{kRxEYsvx4t1ONdkLknrg5?+mTL{RTEy1NIxVgUkY#(+>OnGQq=4Yajg3 zT?zIZ)PlKcA3!GTlUVwQ% zQ4Vq2%zG?c7b!pJG34E(#&2{~sLCUHK2;KpZUpMewQ(Y#($j=`+$9nHZO}XFQE9vfYA`48>oisqvnuUjpX!nXvzw7RyIlpWiCEBKbgiTiN@p_V`|hdlfoc zIEDt?M=HxVkG^ScOX>5D>BMDP>ps#%HQBPDW&x02xqnxd-CvDE<;P?d8=m;~#ZHFT zuQVk_o_#l|q{McS?*GvJoYf7qaKDsJN486PU#z^VCP1%eVSQiIP73E(v=?%KdsGb0 zf%yF^jZ%ms$0dzZ-W?HybC{vcesrnpN5|$T%}VXN|I{16821qt?xR54x{v?Ji}Ch! zq$J|#a@Tzj?wN*mpkHmH5AdtAu*ZP>>MYDFvlig^v&G-nC4ccgVj(t!@{jG>f@IH( zzt*sc$$G=_(T!!lptW|}d9ld|M|@vBHo71=gO*Ts*`^9D;nNd0m_B9s$am#>C{`;BVLCMauCwGAYyMe}$#e8MzKwc6LHKnTve|+A=d&I#v_s>x z<{@<7xU0_)cg=du!a2M}I8~I~$Iq7x?GQMpfZIdCQ%**p|28bv@EC*le&&aXggyKDn}j(-79X+ugve^IZSb-=GtSlhA9 zhBoS@JI3`6l_2>XPG=b({0WUO8*@9{o9dAX`yDZ%Kz|_@+EhfxMy8mO^-Rv?$JCvM`K>w?`G2z6s7Yu** z!EZHZCA1T6P8w&-eJR;}3~kl_-gu^z0(wIhMRLdDKfkAgo@0Xkcd{|>&OQ{!bc>Jw zRQ-QG@&+lpMeD3C1=jQwxu-b2d@~h&4#l5bvy`(#6UDb9{eC*lBK}G*+t)SI%h?kd zbM)B5A%7%C_V}C#z1-KQnTGLKo*@mBv}E|7h?Y5%09Ef}9M^m6t>rX4-@5QWp+ zCpHuao8ugfT*5gN*JD2O;1(R8;8-u5hfc(SarhA8Fb^Wu@!+ZWUW)&i|2>2~SPz|T z+Rz%`m`}%9d;*^A%M9g7_a^N>lKl$Qx7ojE+L6caOp;H-a6OH;-&r`X#_!uKoSRyN zQ>|)(zO4suWZIFVh9rp-I*f5%Z{hqKXz7Q*0q*2JEx;MWE@Wfw3)+##KS~m(oNqhX zSYvSQ1J)d}t^J0Rt6G3F#`|KjF<%Dl$m3g+#5q#&ljioU9YE(D9AB7zpZs78aN73C z?sx3}1MSEYnMvY=N5K95k%bfSiR>K~&L3KU(_Q5SeH-UirX6{rdy+UuE1cGTfb2%$ zKx2x@o+{b7wacEmcC_>Yg|oo&=Y#wkS^=b|f=?Cve2kp4ESwjC*7X)YpTwKI zsXgoQk@z`<QAmEuXgzBc=I50b&YMB&ehX)PlKhOb&XjW}(~h=1 zUg1pSFY0kL0N0aVgl=)=^AY@h(cqkRSW^01OJ}fru4UTMwlzuO#5{;`LjSoqUjZ%n zDLPF%D=C~>I)ib(%e13yuSpW8dOi{9XcuQKXi-dArD@M5g;PssFwXxn?P$h(3TLAE zjO_P81cmwem4$N~>w7GrwSqb-(6f4wc)})Hi)-68&mMiQ$)}$8)j& z5459g(^bEQpH@ zuW0TX|JEX$ zfpOm4bD4HDV{TG7dFKi96Mlt@^HR{d(Zcyni*N?U9dfT_+R=>FN#TUGRs9aX!o_(j zXgy?b&e*?2I0NGjx%V*bXvQT;;XKI23BSU{`8a58uyCH-0-U7x0{p>T=yK4GX55|> zPFP#TPxuus&euW9vNJR8X#q~sdqFr!w|)n`T%mCK^>Xldr+bj3{enN3jd@Bo<^U9X z%0^s=VkX&^zhyYwy5D$wz^`%nggJj+#MCk4`y}jw);2NX9=Wi|pdD?CnMI(TkHsfw z9LBlR;LO9EKd;!}oY}htIAg>;@~{>F+R?TXlf(&)LpbwtES#P2yO)J?MbbE>R}dg~ zdHXQ!X!&A=Gm-v28gCgIfj0*tG0yH5&c2|9_@_=YA4qz9#GEJR!8Zf#$oDUY#3|>= zu06~fWZ@hQT1RV?Ld@KnBu?!)2k{gBBWOpy$2wprdnj?b_AqaPg>yD&EipJ}^-mI~ z_MC%oE@IlzW1*25r+=R8A4g`M%=f+L&9`u_0IhQ@oU4+WCmT;N2Up|jd#pHa$&b~VH0yx(`ajJugY=-XaV!s(Kamfc4-9TPW>*sH>Sok<@g(Z^;m{)!Ox!vT{*ji? zeAwoEp20{+vj>Once~dO9=ji~UJu%l)gOfHcZt*O_xzp~PK>?$u`b)h>@!2-w0kia z=Ws)t?OdY%9fo_x;j>Yq{>>j^;e>6@$NW*J+0TUTU%PjMan4}ckqz)mLgAEezhWqi zbDD({b|b%9qZDFxQ%Ib)P9i@%z#iwH%(NrtO%I841mx4&FO!cw1Fn3+Hs@0eMx{AJ zLgMsFXE4rRGwsOPmxsiO_g{E$o^9cTZOp$xqZDG!IU#X+r85}k9}R8Q??G{{KG<(> z?>}KM-0xR0PA4C8z5H8nJZ0fbF3vR&T7;rJ{e*tXL;O4OY&^6Nv_<=7@*g#r(H^=# zK<~ej`?)Hi-Ik$emf(}#9*V^6e#q*db)fOOY4_YS)cuE&UQ+kp1cHr@+Or4fm&7@qo(xLgJwNUHmv;-!v^AFUCG5kJ_-H@T^db7!)?@lTnevT&>X{qV&nySy%{Xa43p5ai(P@57 zC_UB}I=i_%A`S>zk$2Z}J+blV`{_|Bwx(=QOuN<%9qeyh?YqicVmh3AKmc<71DM9=Oo!~!&}n0Vy+0 zU$D{b*I9UO35Dlic#O^a>nTGk4xXcc#*6213lD5``?oDTc@|tKIR9<>eELAE>`Wx~Xa5MD=`BnwQ7xpAnKDx}-hMJ46i4 zn0(POZOs?-3-LtDaR=Dy4jnahyl4IQ3RiqT;b6=tn#oNE#GEv(n0Us)*Qa;N+jtOL zaPgFbMo$aR^C9t!3c!Onnx@5mi~l)lT6$0&^%vePN;sSjcjM@d194fM78OaquD%$| z`(F7ix;)uz?>*Z3jMpw2+fL(AUz4b`wqmAq%Y7K~NW#`_TP#y|*wVIrF{Sqma;jU~ z5>t0r8U8CQ%Li^iJu8SQ%X?7BM~8F{bw}l>~)a{x838b@+#hQ=g9a zP_GmxBks~yEP^jacPUl!8-wMW$`3(af9zB0EzXoQpr@q{uI1lO2eZbXcA3a)#sHzdwElXqJhTuju{p)Y=R#=X8+!9h?r^MC98Ghz9r}P{K;e zj@k3NO7Oc1yjX!JA1xG15xK!U0`lS%V9s4I8noeyyEt|*G0szDQ#OfQw;cs|fHft; zS&)sgUx?Jhd^ihae8IuBk+*)Jt7G8IcAx1Rh>=P%POQ0iz&?f!4F)Ibro?&t4ZIvB zvJFlZ`)8cpaNQ1(dbuBGv7}K@4*815&m8yw@(HFC`wQTv!r52x6pJUCp9S4i9mrD& zuK~?5IQz?7#yOCAn);<5r`&Jg6!Ztq^XU2*{4_Y}c|x&qqR$J!(}I00oC6sL=Sf5& z^?MuVSeeT>SEFnN`Pm}!`m^c^`sd*HQw4c>DhvH15ZTf3P0|%(F*Z)X=;y?K zD}2p@c_Q+Lk|jF9dRAT{uT$f{po)Jw1>@b5OVUMK$AfDT=v9GUSN9si(DRmhztmUH{5`3)PmE8X^Ajd~uD zRnTY5e!7RRaSG0IuU#@h6nOjT|A6rx9Cx_a$bPzrasQceo7UpPJhyJBSRhV>ekJQ6 zBY4Bnk|k)%acBqe{sivB>6{BaZ1p3LZnquSmtU}qYLE&1j=cOB+9uZ$oPw+M8L{sb zqEj0~XWmMEY;dmQPupA3F*YK9NC22YT33O0%e8*+J>j0frbD9%5p%4>Ohm47=0rjM6A zNaIVN|3+R9E;xm-OVO*vl4nGYw>|HH?l(AU<+c3T2ESk6_WXl>b9>DA(@{q={=OF3 zd#UkfMj^^kyMo6X^`BGl71u`X)~U}1k<~``d*NLo@@5LK|4E((4(|7jWTR`@-bU~} z@#6z9JeC#Pt=uEud8q#xHs zHYy)Y)`)8xm~VH{Z{3c9I^=&M>*V}ed>TEg`Dx@s$wOg2=#R0=Nq%bmte^Ak$~XF$ zl7sqmI=PD_4~4vI6!8I)hu3i3tK#JSeezIPjB^L$@af~iD7CAw6A@Pal*VEERhCx9 zbusjE;c(P_sfNh(WWP!~;h^0*jU59!rhia82(lh28UiGD38x4?U=jS7;wSMN_P6kI zPuq2|R{O8V6=Z^vjdR(dBG(;v&>fsez6z^=X{%T^&X%v~>OAQgtmhRxAeNor(=&x* zac(;Le}%l3KVc^d%efzpqTg&M%=*%3*s_(d48dkbvmZuXCR8ao$&Uk~dl zh$8Y9bNkMrTpk~0o!I!vz81zDACTk1-x~T#kLvN(eB8^vqcNb->ecqFt7r;&%Op+jTurh|#XTwlBul#p*YV*}|J87QQaFec<_H;T?P} zjcc8jePy@n1)0t5!u??Avt@Puc43}h_yX)mx+a1DWZ%BvcCqDT`bU&`~O_lvNX33g&RmV!KfK;iqy{}RXNx(fU! zxqh7a^fBf7^uGOUS}(t1_5XLECw(@q1oT+%zuAX>5+8M{++yo}-H!h@yKedMmfkIr zVGEvz7m?p^hgg29Umkt{4>0d}bEK{c|EZmyayxmZ?`x+$FALR9vP*>|C@OLPrn&N< zo{9&4s&)Y@C8zK^RX~X4KicgomH8y+MbmNJf5nOnU%QI1AHS#+?K;_|A=|Z!+Evt^ za#_xeA185GEwc1cFTP&MH`&;tVna8Pyg~*kk$u)_#aEX9RWv|mle`wciS}#|E4KOU zU(voOKLG79GQsUBD&Y1=e6^rs{3sbQ9*#&=0zbRxFwp&!!@Z#&U@rhQV=x_a|m(5*0ZW6EI->LXqphQ5FgJqTE#TWEe8U9=p>B_cZH z92{2~TCMrb9oIEXm9XekwZt9=*T`&^o9BUdkf=J%FE_tO{xvwRLY(VNMTYpfi22E0 zG|P>N`$|91j{d5s7xnDQjb+7txwI~IM1dQ} z#2BGupRanG;wrV$E*Cw|=cT=Z|AO&X^&c8f`n+woVLOXzM786WkJph8yIu6Th*n}z zm=pY)qKBD(@6vA-$JhR2&~vnW9F$}d@^K65`AA;N^$@>;^r+_J7VvQ)%6y>cEBpWU zQ2y1rzkY@KFtqh|E=q)yNW`?Ph~&JP8MSw8~m>xWbv~&Pm-tcR*XGu;D7aG zKRI2dS5*Jr=Bu0!b6laA z?A&*v`p-VT7SlW(v6SM2M6_^~q(^>uaR$k0@qUyOLQW@Rj$6(1T-(kk81Kc1?HBh} zby7Wv_&FN||H|JQU| z^k3`Y;#0XeVbN*jwRV3hyG;FAx)fNB5G(Jq`}1m9jQjIioF6V$Zt(Z#?~spp{oAlD z3%99iVCRc@9i;eT%HepAxj$qW;^wsDd=*x9gZt6-6HzmjS9+LuS9}HK$P{xtD7{;J zEnnvppQB5NmH!p_uHG$vQ08;{XxyABRyO$C_h;lki1yXHG%)UwcPY#3os`RZwWF(7 zjSiiH5kDX8q~`{gZH9JH#i5Wc>x2V%7s@xkKzOugJ*Gar+?kEwp$-beXbk};iD zbru~>dtZ~;)ZWq|pna`aHOSxIb;y5BMBb4mLl&U+-p%dh$OY=7_<^>|5{KpK8$TE` zB_y~1AnV01Q;tlk|1=%FSHraDO}>ueq&lsdW%;4S@5*eRk8Q?yDi^Dcx8euI|C8qz zV;qUo!ivzbVzFA$T1o3g zXipZ$DHoTM`z9Mt<+c1`t^ZB`{5sX;qk0RK)t{TGc3}CC|I^2+-&%fZNmS-j`%Ajx zx;MqDYkc$3;$1iwMf+;xwfsr#`^vX|YWkDpcOlwVg_S#QqsC8qs#y9mOa}ezNm>p| z(q%2sc{;7as~=rCEUA#$C*6X6ISDJv;NDB5cQztlty7fb19t^*U!_UlKjChoekm!U zT<#YWuaxr#;-X$7r8PXdPWQ`6w*>Y}3G{M_v5m67;`9r6O^NijPOCOr@x7A4GMoEl z2rzFJt7?7yQgQ&w4@UcxFU=*;zLJjIzW(%^`C;Y{reCOy^gQyVh!~uJ&&7y#L&F4) zJH%+PUncTV9~_8Fe7b=7p`Y^<`DiHeMDTEcdPqW^!bTGoDbP3q5pq{s_93& zh%9{Y68QX7TmxF==lagiQ0Hez8ePZv&d*loXX89*9hT!eKTn;Xhx4E{^dR4P@Q~|Y zfb*a=V!H4A@#_5XI1gGA#`?}LQRkQ7JZM$kdC;m}?>Ud2ko{M7C(e%%Vs#JI ze`{e^1|ko3`tphR|5qFr;bP2)oCE%}<@JjE$Scty)mN^#a&fn|YyQyYLMG*u{e}OF zCe$U4P%G^RvZY+WyT9~v_vIS=ff(OYaqkW7>l)?m>!LBgfJcSCnx4{6-&bR#REYz5 zq|C>EvcS!Eg{_38K0tum%x5tTcE99Y#^t1pgr0g8-`k0l14X-Z)`xOjIVHEsc2XOZ zov6fqogjoVUW8q_xXvlL+0ZY!2j5@hy7(h{xf(B|xu7ra9j2Q2Q?byL!WqxM?m)s94+vj^PY)8aMxSa>1TqhhdhQp0b zyHvgpt*JMD&R6Z!$n+k2muqs2F$d(kP;8zAT`eWCb@oOls!K|ly`MN1{{}M;BA;HP z^cUTiE8D33@k-8d-%7^UIUNTvABk^H$5A+@Fbnx3eWtoEH_W)Ed(QWjWo`Y|@hGMl z`E)JntHpU*=WLFPcAb;nbvll-@XWyPg_0(HrvFXZuP}Ie^P3I0um{hvh9={o`-S~@ zpmV7p5S_t#^rRp zALU`AJDRzt$aq`XgC)YXG}oP^VbB<=c+o#6Lo*z{uS!x;AmbbQ2M=60L+9!qJ} z`cT(`rf|E-pCJ7YJJ4}0{J0#PP^oQidH-DF3}n2a+O5l*)-)dvloRwmxo~A^Y`2cK ztN_R9kF;i(x@jDnn!}cAP5quM;^z83mVE3qearHZ>l+snq1R}iuDp+g?*HQFL(%)s z(%>)A`-MAVjC6#&uq`!nd@U}m{-5QuPReI#De!mjR?)6p-KV!6`NiDJ&09hJY3^Gw z@3MjIVSUvWa|eIR_m}n9af#BsQ2#*8nOV~-9BuHM_lcFVCG+V&@*u3}80s@||H`0s zzS0qBtGkNC*YkdzvNFs=3QgPDKBYIaL-sr&^4U@m`K($*zDnnI@)$22%rqRtw{^;l zs(m@60}vbJv|lCaL!8>VNMz=zxGU6dSGbaBDpFS}#B@61O)CG-l$k{EeVE6yrRR>vh0S zoic~}_WhNjjis0iee_4*JXT#sI4AmWQv6!uTtm^8SST%=RiMK&N=Y{+PPIP~?b0c8 zfr?XeJEYy__14mx!0%H<=Gne@S?L z*SOaJCw`yJc(0^fA6|;4ORfjuRr|QP+}HRdIl;cbk0JLu0bk^!4mdvJ9H;breMV&c zUhTJJe&5vWeCBOxza^i4T$bZ?lc!P7Qjz(Pzd!zl{Ks)TBfO%(v9O8E)r0 zvOKpFJ~m`8^I!gUzJz?t!Aq%cb)tT}pWFEgW%=}>Z0AspEmt8D6T5xDS^8^Dl-*rz&cHhkC@{Py0z3AW3k3tSux{vN^AK)ePs3V zjkmH~=<;IFt9P%F^7ubX&#Ce8@#TDtQ@Y)~w*8+)`!*C$LLE-o036G(pPg(W)>hCD zG?sY09iqmDTe20uu>LUi!h3(wIE)vH>`mqWCsDOA`NgYJz-!ukM7Sr9wT^}q@ndF@vpS6q02b+zV(4D=d4GuW<|+?-Pb8= zsbv?+#>#A3-|BNK?83Vu>jK~URvGp#;JV1iA8Hc#k9L&xAUQ1?Lb)ubv=2+#Hz}tf z*0(CDFp}G@NuX%O6FEP~KY44w@ZS-1PfVcF3r zKVL*X$t5U*mP#xPl3#^&bF@F}bxZG*{YI9fb+JA~GhJl)^=;WI zl!H(8Nf);c+1@$a-qR?T`;*qi?EWOQ3D(89@l;;7|3cJNLlk97*#6(~b)*|~%KBEV zi*fsJl-b;V#MjFfi>!Koe_oFK8_~WKGzt8t{ydZ0_eaWQJwWSX{{Eyk#$OlXCUQGc zi8H?~Z)kzkg;-PT7V0pFXlXsC6;4&rQ_6!!HKr--+z~ z?Ea?CguB-8`i)s3FzHb*?b0;bvW!7DKfi~7CoXe-;Ki1jH zC~lEp-KB3QiG|l)hWsq+F4eq(xlFFS&^V=amon+Y@;XxAVZexWm%hGrm$J8IJE;vU z5BZ442CutJ!8#B<1%aN2!U^NUDcfl3Df<-P|0B=QXY@+-97@afQobcOP8s6%C=>be zTUCDnMwhO~>;M^w_AQ1#M={hBV4rxkmg|R1>2{WVhwl(?ojSap)bq3Tll=qZsAWGI z+G<}_e4L}$@1&JBT36=8co7%UcsoUf)5)5H7v$ruT}X;P#Y^< ziazNZIqsZJ*@m|2R~fgnQIA7!4#)FkD-o%nXXcMobkMJz+A&V2(?R%Nf`jBorGn|I zUyG5kl;Z?FTnZ+RW!I#ijv3gGR*dMUJuRd{m_Op4ZdF)J-aa$W(IfdyajAKpBhm?e z0eBPn64!9Q6$i@iFnBS`*`ulkx5;;{#;@a`D;A<0@q3^p7o+iehUPY2<#vF2j>vlC zg?X==mgFG0fN!B`Gv1;QcqyXbqE&b&Sa|1vCgvYH6;_KP`W{-2^_%E|@WNlwv{{Zj zs5qM~T}FljPRe!?KHQ7Mqpv9)KTcJ0Y*UCYH}U$E zO3Kx&){|%{+a%X5#c1~TLbo3GsjMEb`?K;OAQKsWebtCc-yA1+rX) zv&ZsIfo4*!`U5dfSO3A+?qsdk7u^BsNJ+>|Z2fnSq0P8EhQ@7kiQsVDw$q)W&8gi* zn>AB#yo93>zw`0`A2@Et@eqzhI8Nmvt@^?Gf&3C>&pW+>wtZ}>DEd}lsW~aWNy`y5 z-rhB|l|GASH|SYcM?*7ChE}8ZR8GftIqu$4x1x(Ftiz;UQe>6 zp6_(b;caKGi-9_Gc9~y$@LtMyy?*kdJH_Qu=LFs*t9ClKu+QR3$gY|{_H7gG%O^K?*HDas0Z@7a7`&zq|$b?NLg&Fg`n9VBx8EY4658i^-aq#e8x zNiuXMfQo(|rlG*I6R(_=_cU!me+XDS(|;7lB;7C^dSN(_4TVk_r})vs^jkUB5z0px zessFm+6NJSz8$!Ks{9B;I|e>_>R)qwgDrg6cU(Th!nd_W_yYHvl}|CWW8fPOE{?@M z@sSvz)9{_gXZb`6ALjq%XBd2)4{i~@!2Nl6@1sjQ2EGx^@YRSmryPu97LJpJ(-Z5e zJ^zFG8un6jebnIGUEhGyDVK2vs=_Hh2ghZmw$7)wh(Cevxh=oY(2l{MsbU8DZ36p@ z^ju=ue^_VKdaL|u(74sY_iPLBk#8HIU(0Vav>Bg0Pm<$vGVmS6Ge<_J@L^Abi|?r-}@|l*t<~vsz!(VXhydHANfW> z{CmmJj*E|Wu8{|%@jY+hdlNKjEqoWY03Xe)g7CpkYuYjJ(HpkN26*|0G2-^`zd-}> zC7sIONE)Am>1@wyMUj_E)R4Cg>C@YRmnt#$W58z)#k)h4_vIFcZjSqT@8cQF>M-9r5 z-h&MzJy>xh4#Z0;p2LATM1|U~A$C&&PN$-S#h*U-eT1p3;{VjX`tW{P%(y}Y;{Td< zQ!VPqYQ`VZzsw!RHPFH}0%f6(b*jKaD(QRZ`Ba>ELIq+0nsy9aq<0N2^pPu1*b7jx zh>*zCrCXA?;;c(m94lPfEKkkHBk^k##^Wehg)xwN*0&Y755UED5@_%Wy~4LR$?+Ix z9$K-=(2jwR_-627#=`xIwFMX7*`RTW#73W8?o1M&ej8)Zc*J~M(`J0l?WxT_cRp3| zTMOTnpm7T!lc@_HYE9ol%AJrweR;m%U9b z-G(Q@A2a#_`O~F~p&f%idj3ux87IO=^5f#`iQk7<_^>~SeudIsX7mN)Lo7hkW_-=< z6TOMmoOU~S$v8=y633-V(qw3tou>DJ5VUjqodI>vQ{BvyfpY;Eb2>&|H%8W;_YjpxX&iQ zi*cW2mlI4IxPSEhXr}#gzD9hIbKV)Gf4Z+joNp-N0O#PqoUar3L3>;}VV$zeBE$u* zF??z5Z`=>41M=&1!MwZ6Z*W{`YU%#4x*zTXhPH)a~1rt*V!tb8Q#B_J5U1r ztuBum+Rfs_&2f%no?838x;$jzgpKY3J+ISVe{Vs2czEzUybJa$YTBy5{qbRWR~AKy zCt!}E{OT?nlw86lcNL&ftI-Lucbe*N*d^S#?l13IKkI`1|0o;z3i}dRFJ)TuAibm8 zmNVL0sn+ScVE*4_tEqRNf$F~1Wcp8PAtvIHGtB=r?KrsD*6=vB=KWoM1WyK9xNcLp z)*>%lT-Xzr(3Bc$@a<_8XZLe8C`#U3&S<=vID6}?t?Kn8irTjfl^LbKJZySo>UD(_ z!SBDq+`{c+9yhi>Yvfk%hUP9LIq8c11X_N(9){oW!F1}8m4rVc^<>QWP}k9hwvu1} zxTf_`SAM%9ra*S4>rxzu(RW>=Q3=tbTFEbI@oFW1x^$4-nf80-O|HVrTH}|~cE2_D z!iBF@_m*0*WPc)s*Nq8}M{jklW*$Yps#SI}&(d4Nv6pZPqQAbqY~26Lt^Pj~G%hlH z-gk_$=dGZ>y8h14X8E-3xWQ+y)3P1!dai}W%>nkY>;D&=%xN1an(64YDjRVhWFZd8^D!5O)Gv+Sk&*HccF>dVOsMrq& zd!$B&TH_n@Gn9KqTf~>Z^}B9}|7+SY`O;tU1$L*KFu1y9;y3U7l;?Yn zX%Q~{e)KGp-az0?0j zn%AAD#8TdX4#{xPd)BY>1`H_6igH3^2W1jHP z8@p@GQy%yY%`7Kro?7=O${zVaydHH%zMhEujW}uF*E0h9=xE>1Fy2Q;&#;|>y}YOK zOcZ;08UHbsoMX=4&5B>`U*CH7^>l;%*R+$u*;nDT{D5v}ftD5b?=_?aIBCWZU}w7_ zZlGx=g%i6lnV;ub{JavhetuNrq4_b2V^FBKN-zMRE&wJc*Zm76h%8Jeo@?zcjqg;^sa^X3((wV z;hoq5yaQtN?{|iFQg{yn2W-6G7`)wKd%JU_Sz{SuUyg z*+EwO)}y?AzgB!X?JKN(?A@&Res|bvjfD^$@Ilh|YxTzS3(fdX23KD(0MDdk4zv6= zSp3}^xDJ*)qR#`%T7Zk<=K*@DJLc<}HuFC$9|yqxDG4UL-FsPhvA?0a73V*2UJLNj zd$WV^!v1U8jMu)eFn+(&UMH4e#w+~*VyDv`@&E4g>8nf!-r9ou3WvtPJKNAs3NP7_ z{!&sI?@Wuo$Ajht8ZG4E>lWZ076WgUp`8?7(vO3r1e5;%f9zccoK?lupUYdNBOoY5 zj3QE2VA%%jE@c}_k!|cQU0B$q35bNE7#p$0sEIZ97^5aJi7m#M#KcG}QDYKI5~H!L zEwQ0kqQnB<|D2h*Gxxsx-n(~s&&A*8-QV5!-YsYTbLPyMGiT1s41xR(fekPOdhPII z@ribpWMqgn-^t`4z2BH$NK^MK4~NhHaI2r6JE|T0O5k5U{BlD(62FR2e~M)dV!YqA z@S^{Zu@CpiUEdD8QxcT#ErvGZ9ccAjlGmScSP{91Y7pc7nS~d9{==!PB>FyTd``Fi9zW>N|FA6+dkwK*Y-id1wkAY`Eae!M6}^$=zdOSa z2R{rkdc&p>5_ya(R_m(_!0+|S?v(G6O#0{7hAGWV$g;FO+lNb+j*;Um#T|IWJ>_4< zyotRwFGTt4wR)Q^4>?#!{2n&R$nmgh{9dG(jgRsD+g1L7{gGjF4DGo7p1-6FURoJ% z1M1>ZUXPUUHd=UF@cT3i@BDW3_sCli;4c}r*3eddXa9Iryd2k{KZTVPs2@KJeWvU# zhz&%a^s7G*&S3aoXwK|t70YE%r~ez5E5{gS``0pvdcW+$Vtm=`% z&V7tjH7U4!GEmuo=gmD|ger(Aj zV)KUGXZT!na{A&nhW*~qM)`W@B^!Kp+=8s%m|LLRsbLR+#*-Gldn3nfP%9NUFL@Z^ zUN!9mNGJ;k_!TRxu(XE={+OI{RT-;Q|B1m!b)Uqd?y&bYbb8s~7t6=RBd%N@CBJ9~pAw9R4_|F)vwpSpzp2MG*T$V& z&iGbZ_%?yY=^C97B_Fjz|0fs+AC6c6O*;ub&)jmxccO*wY|yyO;F~a^9rzNA=MKNf z&`ya@%`Inq=Ue!$292Lt_)cvHz69fS!+&IGC&8y>RnCkQ4^m@x#$>YuZWqXw5Nae1Eq1 zh*NGe=o*~e~UCbxUIrQ)EqpIW z(koi(g88`4&`yHS=A*>7#=^G+G`?x@O&%TzpO(g8e5V=ON$}bHt786PZ2`BwoCg|L zS@_mO!l$J$7~iFab`pFx|0F)>FBjjnpmC3d@7758wDbkzL;qjXW_-cz2Jz3GYt4EW z_TPvXpm)&z4u=jL0e`><@N@*^lIl3@*Nh!pewP1X1jhVF{LLgcIm)_TM*4&K^H)PV z34f^k41Y+^p$&4&kADBh;46)?u9uPiV0J#1=0AkOUWhIRr!j?m(W!T(_@k`sv$sWM>oYC*P&vbr*_Ak=+N6726|5NrT_)52nE-&bP zNV?+p_i_C&Nh5oNh`n?Tecy!>Z&-)It;?Fc-uC*=G(O~H!|y#BV-4AZz+aud?9cKw zMXt+hYX2(AV|J;$%J`1M?*XFgcl`LIy+O~$UiuL|AAs*6T(;xy!mR`K@SUhlIKqXEk>X0#5e(#}$}7s7Jro#kQ$KmQc|cTseuzun2+KzI0X zvd?h%iyHqs5px&gcb>O*Kqa0ELD zvbcW~3cM$yJKb@ce3jqetDmGRwPD;JbsK z4}s4&KbrBO-eeOGue0#o>_tiA3~VWaCqF@)#fDIkT@3JwNp0`<7SExpwdIz z@asSkMh}sdQHVd*Lqvp*50J(_JJmRzZk=hIBYsR=-;E!Upy$&yt6Ha$3WI;Np(8N( zM-n;$gMXBuBQQ|U#vTFa2n^JFaJ}n168(8gq{n~Wfe7^Ks~u4a9v^sz@WAio?iemu z9_$X`g6*U32o8`&kiON9NS$;+$E9xj$;fZpQ5>+>1?>n7HXrPj`1dT8a&@l*z2imXK5prnz6+0q*?Mq7c`a@xBf!{A^;zRdwYmz4}X(akT+83w% zjsEz>N?vh+_P~)l-;`s;2R_K(Nb4H1U++46#~A%c_C3h^Q@^78jjQl`hU#~CYxFSm zCK9d6NUJ{-;GBwC9&(gV_fvw`dbD{Ie!a&;e1X4Q=Y{)cy^sU%IwZ7jDed#YK4Qu- z^Wz4^kDm)?6#8x>e=B)G|EHd<*5}%R9|_i(9C@dChtrMUkIOC(*FQ~bOL93NzHa0; zoX?qbt4r0m^m<&=`>cdtZ!=06Xt@v1|3rNFr^y4$rM->^`CXR6v!~YyGjXQGo0(h= ze`kIW6P%IoeT?Lux#UUp+wEA-Awj&{$hQpbxOoDJacbK+pAa$L*Dbs|;h&+hQb$d` zim%>=3t{JbTI1rH&Ib>n|9`ovhq|P6ozj|1%5!G>{i)KyiVW~M)$DpkAhmF|9csM%L(h;+3zs_~`Ezpv>fwtBsLEXe-zYp|eITQN^;uDRtBEkoU>K|)a zp`J@%qz6BTu}_L08GQr2iBB`n5wR!^UyKmvk%zI>Vyr0UiStl2ozdTAa`dnJD$&~= z&mN6FI`W~=^E3PW(~9#L&EwY`rR0pp9K3^`75ltpjdxRA)9AbTJqORmUgEfrfbnh` zr?%G0ZqC-@m>^y|RMaTy74+VPVHX9dUVEJei4M&Kfxh{2+mq0xWF@2x^ixkJQ; z7l^D=?-5yB^Kn+-%);*jaUO>gL1vjcTt2B70K%k>eIK^UJG-B}%5fb7fc+uS`C&hw zKH_H_JR5uIQu-dir^j&F8`nhpfYbV=_I|ia#c{G^F<*pZzo=}j7&^Cnb7X9RlTCU} z9{qAfKev1-)&g-2Dw=^G*biBBEs9C1Lu}F}!R4Pb3N%l}3B92CpL4KE1J~5C-y0VHb5tM) zRa&^Fj^1~Oz6S4nd6n@l!n^sR&uTy327boLnGd{M=z9QOfBF08_sexPBwyDe9pY`Z zg>#Wg1J~5iXQN&I>*Q6&xdHD^7k$_JajLk#9K;j8vX!1sfYY95;K!-_kIYY!QR3-R z3+D!+E3ff4l+p>JkKyMx$%|vEg zB$LF$<1Ab^D4MvYj{VCh&WYrxvurPO&c!=7h}eq{>PPVD;P<`#`}9$lP#@9KdE{=n z+ZN*%&tK~aIyXYc6{(l#`VRA*zEND-pg}?$+$v%N|9}%Ze&F*scjA0g#JT@tCp8edw(GxY@6jspS_cFrc0^zm!iAl;ma+^&u?+w={`ezadOVz zjnAB)(^by5T^`ClLB6~8@6!ndC`|>IKlgz@Cm4FLTVgL9j%$$a!-`cHst9RL*LEkDSXYzF>50nG#z?UKk4Q}Vz-~G>m>Fw`Fu~(K|YCh zPR>1|uCG6z|Hk$AaGy&`r9k<7jPv;hT|s)n6EAD*6OK$pIdXwS-n6-$X67o1YK)K_{n8zai=-ik@zM#`Kogk%}{>33g$bs5?^Z z=P9=_C?!1SjOp&ukmdFkJsK;0z*U7nv zuE@hJzbE*&lk>5@BM$j7+710n=NCGT4*R*fHKMP{?*RD*>qFR0IU7XXDWnhEWc?h2 z%+kU4>w%}AsJl|@OC`r+4#V{^C$PhoiPRcN&o8Zv*o!-Ugz?A23Q7&y2tJET`ljkyhG3Dd?@N(_RITX zytf*BDU#3fe=6TH=2Hv(WTTU@{{`;U~Cfgz5V&wg6o&#JWWxc56aIn&d(ylMFet+83U3;L7Q>$k%m5Nglw*?aRvx__u?6>m%nfvZF|jJ7EkyS6-&} zdCYyt!$h2zhmdz8&R1{^`e4ipC@1{3`o5Z0+CE)=Ud<$Jy!Cmax8XPXvN&kIg)>IB z<@FU}f3Lp8JpVDj!s*lhV@_p$-$VrB^n;v_kf60o!gug&jJ4jd%l8{872La)Kj~lL zTC%f=@7CewTiGSn^Yt5Sy?GD6MEQ=POr0@Ti~2Ju-)%~7!r4Fv&F?863jQDt{x&_o zN9#?r|6~4%_x~)P<^Lpyw=iEGqu+7k+){6PrO-Dwg5RV1#`<%#SARlw#;oL&_@9zH zS`$+K*7%>{pCp6&sQQzsfA6BzSRvx;(q1wdkWcYd#J7A3R1)whJqy9xpu5+1dvfaxq0_JB# z{d<%@!fV@Ox_@f52}IDgU&nlcI@|}R&t4d_o%oO|?FD1Mv8%w%7xn2EYlxt$^vEmx z7Tz|uN*7X3W+IQJ0T z%f)$wNtDVnm)rT=p>&n=ZTn9&e-hMW;MMlIH{Yc9a!fjIzPUBQJ>?g{6Xk!R`CXK6 z>%j9e-!d=u^Rw#2{;nLOZ0VqU$G}que45ot`PT2(Nung@xs8y6kHoACd~%+PzH)9I z-oHRT%m0Zl!?}E?)9*OGNIBQsA?ewS7KLn8ZW)jtRe$gD)Zbj_+1whFPQrXQN)%{6 z^fBuSJKwA1WzN@Wpjjkl{nDQ=_#1LpAzwFW68NNi9m)AZubbt|YaeMpxyo6>e4u}v zyTZ`re9*dza@Qc&Ue7&+pK*|Hea!kj**A~jr_!Uj@HgPO*ek!*kKmJVwldD+=_=P- z+fO?ee5RR-G)GaT$qgP~GOE!u=8ajzS-ts~FpZiPTZPSn7lgj5Z#(Ohe<#z4> z%da8(ZnPV)9&^x=r6bXp7~>D<7v|m#`nU5V@;S0Ale7o073pwtujNnr*DzQdV9M=9 zd7bS_YS-3@h9aL`nM?NCi^%7vE)AK_TREQ((^ZyRJHC$cc`WA2Cdg&N{K41%>Hw2Y z!uD<}FhOVJeG8aTPx1<3JARDM0l2Ql77Ug2e{<#fRi^ErT=dZ}U-WnRo7Y=jCjRD8 z8}l2{aIBxd@8Di<-1|h6z$eMkBg|j!*|Qwk^SEWdI{|mmMji_*emU1?dNBXCc{p<==67pkyTNz(7^t5@eKVG;L9<0xMY(XwY(JKM!Taf8-=WyR zKjPi9@h;|}&U#LW!$#tL#JZNVM)SVl|E2j39YTkVv*7|U!0>&Pe3SH1-XHMXS)$=5 zK7Et-Rooi|dCQZ}@_*v{PU3ss;q*H|uF2n_`CiAf!D%JuP0+gNJtvZDlFz(slTJdp z25%__7qUVJ$+JEh{%p(D40)O5ss@-}6%8->;DsLF)ube2v+2OiB zsB_rJ>lx6TciBr!(eKT}IAGpX4H@)P=%+l1jq0yH8e^6{o~PPU&L_sr!I#E^{P`q3 zumbr!T9d#h<+GCW$yO%k)80qL+tZN0)?-gUDqSu~^oWtygyl)T<5rVi%6zWoXC3fI zAB_{mKqIfpf6w_m6SQkY;~alJH{m*b_phF*N#K+6xrFn{Uf(!7-bC|D4^OJ{gFelZ zwh1SaGG7u4`O@{#c)VqQ=c#s|^K~s~uNIBp^ydpP|9CF;>Q6KYd{Vwn20MoNBBU#WPftyA-ixvDt)3u^$>nn8t=%{olJc_86WVGu}d{RDt#rb@Uu5$U>b}aeHDMEh(qTys-`DIfdt@f<5 ztB>886rA6Ec>F2$Ml<}2%iwps4e99ed6vl$KlIVGpJmVHwaLqzuTO#X52ER-mOY!d zQ{G>5op35AqI}ngrb2(d-@tnqclvh^odiBH?)BN4?wm(P&*(BD$7(E_?)*vo6nalxG#n^I9d>`g%RCH{m+!rY>h- zr^6oOYg%dSU%pBID4(Uz0sE(-$sQ-jAB?hP36+m#9gop*94`H#Fu!5X1kSboW4`^#|F@&@@Q3bkKwmhxNmR78%K*A6|c}H#O&*VJzL@% z^k>wE`|-WI*k_FB-o>hiPW}v;Ps)SR=go{J2qE>yn#FWH=j2Z{^z-4X$X~>1@xQDK z)w*mu%r*MvNtgJm-cjk!01t={GL>@7_^HP4dPLndAl-VE?rcui$v+F9EjTYUY3$!e zrn{>R*UnRMcGmkGH>YFmC>47@=sla!dZ@7fD2gswy6M|f+D=vOJCQ71+F2Shq4bdb zBwOa5@;T4&R_Q};`Q$?aJ*C6)XeApqn{^s9<@0Pynw-%|;b9AjQ^Kmm%-2{mq2fCY3%6cxPHDAnAz7H9i zySIVPK@o5_0B0Sv(ON|F;b6S5VO+ehz4BkBJM!pvBdFsDfmg1gC-s(BUp#MUy6ubNSp1?ZI4CIAQm>IAIIqf2=^_qu(oP|J_u4)obVl;e6lFjEJ+zgL8+4bGL8` zdKsMk4-JWv_TEfT{smnOP1T?F)^E9gO%-}vvb#fi%=bv;SfYz(gkrC*6+pu?iIYscP%(qAX`R%}!c?D_3lay;|f z3zis}KO4y_MH-uN4(Qbaj5Fx^UjW}l!P!P`4|rCs51p$1%N42v_k}3f z$TVX+ma)DO9Ix%i)dMu;kh50G3OD#WoMF@V`wpR+!{)1+0$0~)()OS6mW^h^i)E8LoeZgy>A!G8G z{s06a(w7i+Nn*Kv*U(gY$Sc=+UX0$2kkX_2_O_C*PlQv5X0mVyL*jn}&QQ3hT)M(K zEJqt$j&hKDG>=l{N2?vy!Oj`A`%pZ$M#-W7X_7O$&qKY+;BrilMEcuPlF;^Gk~_e% zMA>ps2;Uue72B~Ed~8F$d${tc`OyrX9E*rd=5yg7BbS9E@a|Z=qmF?`sr89d%Vomy zFU&JE84s<)D(j2EGac6XO0kN{y)ehZgRy|ZX&Q|X122a+5JyOP4BS7du+q>B)Uz5D zr9*hilpOBD_iCKdC(fV-{$1(0di`L)|)qB0bT&IDC@;wo-ulz9*uE2fV3NbH0(@ZEogboMG&)HIb3en#$yaXqE$muS+l%1@0 za-JnW^nP$z`pYA|GL$M^!*ARE)Nq|TE_|oVr<<*EL#$}w zlafcwrw2ppp@jSL6yD1;V>>9lHc&NsQRC68jI(`}PyI{sF`(Z*;S8LYiI{U0?5igX zu1tMnevnT?*Dtiuh1AxmV~}1qeoyo=;#W0I=0`W5y(ziEDKefH8ILoz6W-enK3M(j zL8YP_J;;8mdL_s5{dg(X+-^i0M5Vvy5=8G?)7^7S5AE z^E}N>A-;N8B%HzgJk!u*oD^>nrQGvH5#xld;gA;q>d;yv!@|_%4wT0^ms~led zjqMh$>Ik^VqYxx-@C9g^3YWJWDSEX5cxWZa3Vd%;{CZWD+j}TC*ns06ws4)TaP7dg zEcKSZ{r!mFiS5|xmeUOAEV37ayfr)~u)7WP?(ca2Y5ca1kGEoo`gh7MiIXL1RB>qh{PP&kjUp75^86?JQ?xYhrX`C-6abj9;i8CyW|7Y?vDGb zx2+j6B|^JP7J+VeWxJoOo#QcjPXALYefa#xy+z36F=T7#^yO}bI(_mj==SqJh93i5Lo*aEaEx)mp3u0) zqfb7*k47cLke#7%kyUQW%i`Dgo`xpdA$r`-aE;eMqf`mc_->5H8DER<2jHA<@El$! z{eip6aP1jYU-Y=2sWFDKoG(E!VS2n&jt!@yjij0qEp3v~^wid{Y5U}`15?*|=Ngr4 z{BV3Dmw9Z*8IT965B=TxC1Yo4#sWnUFXNukD)db#0*WFYH?sWHTk^aZwALE=8G4M2 zD+$%lOeD|n1!$UF&w3}pXZ4fDFSBrc4Kysj`_P|+)=M&SAV4pT|GJ@>5|{2LZDqX_ zd$R}nGSHi2KM=7ur-9D#IDvOO{JZ1PuO447#1(G}@lDL*IvSB!*_R11tjh4Uz2CUJ zkd~`|;Qt?gy`eVr)d+k^;Aa{CJwr2uJkgrGjfjFh7816J@ge^%z8gX7R|em(!4c#s zf!|{M&kaq+*Dr}Y)ng>9hDRqUvRdj(l#z??ccAqr3*REqkA8)c_lgAi8~%MwljUkZ z;G^EA*0R*YEr+j|#%LSxpVA{e4u1l0IpZG{4$K>8{4;b%9>cEij8FS1c*aS_qyLY0 zV>`}v^PyALd%Jt5FDnJ;P<(cj|UGp?_lh>xSm; zZJ_-Xmov%mQKTlt6_GYuj*}0@`){i}KLqcrxabj=f;x^+-HZHVCi_g~QI@X4w%j=-gX=Nn%F6kisRCJQm>qY3>6`h0A z^7m#RDe-;Q27S_9+2=NucwLfAM`otR%J|&&qw;I+y$z+5_q`33lyc=M;QG?pBVRls z;i*UPQ$x05JLakO&h!InUTYH-2wY z_1&ftU*C0V3Ck`+t&Xhq?ZM_PH`(rxf1|U9UvctVJj(FO<-7C~m2;E?&FGoR5fWcx ztF;*Iz#7R{;(IZ8uI>8b@%U}^w?^sx)8g$`s%LWkP9D}Fm(m+37sX|UCejn|^yqdf z2wyR*>NSiDu>~%!BS8cG5PgiAtNcZh9@%SpUXj5?l$14X*Y{$?0%%$x@D#%HyN2St zi+_j{vDU@tQy16aL@ZD-Fcw?meHvf7Kbap$)8)rnr28$C%BYJ&@Pl#^#E(seRw#ZH zGC#z-TZGv0dm-MuO2qbgREX_2iP*jm;e1QPI>UEKa#aG~+PIIkJ=5@4=+aiBxuEUTo7m91mT$iFTn~}4>aGC{Zi0x2G=L3(_IWM ztl7>p{W+gK6X0^AzrDChVuqGmZg&4bMyJq>KI$P*WXdc&=ais+flp3J2~PO@ODZiq z>t(s^x*XSTQ+5LF_sMT_i$58oU56%Zfv7~to*0I|Lq+;#TT?4#Bbk^IiELR3P5P~D zKN>j(n5<>?NCsn)>%GzbrINoMe_BZ?mrZQPB`Ehclt&Mj>pDta$KP{*uVkW;vy$m} zceW|lG3SPkJ60M(zH8Tml39i(o!1%0^Rzs8V z_{Xa>myi{f`z1>55#LsV_P+%E0e$4gLd}2BrK>4x{-;N}NTM|5czaym!Kw`CpJ0v& zNl@JUAWLtReADDn=?5Jrrt>j{eFn4w9$B_({Ilc?tK48elzd-vNr>DBm0pjxXQ_4Z z&qsGPmq(7SG&DouQsbW`msz-O0FB!XuDn$EL^1u*A`qWb@i#{J1DSb^6sJR6P*CG^&16`!f)I~7in_>F{>akg1F z-@*I{Yd%1JQOG#bsc2oPoC5reB|8mG&hP%vo77Hw(b70gE$Sexfl|xyqr{)Bn4?gJ z_m39Nq}SzK!U=cbb03TW!XGi|50amm`p^9Nuaxfzg}{OM{|U7wwfs%k)dLV-RkB_LM6(+ zQfgx2sx1GpIgkPPzY8%RjOG+#o?}dW6Xzz;3F{Db+I^0EHWUA;{3nbz^0AyFHo!TR_uNIK1^!mWsiFx=8l(1lSQ1P$m;BJEGuOh2wHOo~!DEd_TSx z*rjb`U0MMo2Z`U1F&ZRqJCIHmo~7rZ$vyc(`wwifcgt}7DLiN5#DmsRVO}$zt@eKc z+W!f+;$3wVem&$ke+6s9Kz%p??LTP7-o?6QA#lmKXz0O7*Wf%6XLp=m1r7L1C(gm= z$2ig7n|Ojonf_1ai)DXIxC3e4YtkvaGbCT+syBh{*@U|dO~n_l9LBHH!tE@z2P}`T z;Qa@2l1!+h@I8fV04}Uo@)%DiUeXdth>_Fu_3Mm2ZZ9$!D@OI94f*T_`-UR=?GV?KR5wUuj24!SiKNZ)J94GmUBu;uR z5r4>HX&|bMkL#tIF6QJ-94_zC|8X^;_`^OkdfvkatOclPu^mP6H?|$6xlsv^M=kWv z3^5I*=g#Mt2%SOoWMUJ}Q8*V<3i23tmW;pIwGF?oa_yL=03EDTv1KFuwSrm!N+G^x zdehfs-f;+I>9h5N@*>?6W8`uDiiz_L&y&`-Ix)wVC(`k*JfY7&@mN`A^nd)6kn%)x z7I1jv3FH5o*6udkqKUw(?sGcOQ_hZS| zNpE;?V4PmlVjMkvIArV2e5QJhcFyqQO#J?V#6bVY->Lj6sc_I-0vsM3-!`-u2hF3F z<6x2>a;_V_#{ClVH;qTk)_BB0jsFy5qS({n%>`(i^Kec9Es8lnAEn6hQ}fGd_{V$z zeOE3p|8L?QhVb}zLfM03v9e)2A8s+U0{d&4D>SxE`$RWrEd#z#`TUG=ITN?x`)_bs zaehT3WPeHZSE-gKuIJSDSY;2S(%+M)em!8);`&A7ghBdo8c-8$lq%!BSK^)274JWa zvg00|C|KSD#OsW@xfLH{%C}PfDjVpP;i{Jc!MoWZ6e0 zt0Ijb1p4bIq5ao16`!CG?`Dy>hp{*QhtKu!i?-o> z1iqqsaNdmdUhctp4$h$lYdXI%U(h#q<>zwb;ZBpngh3JN8TFBa`0@ioGbLXtP}?vc z34Dn;s0SC%5#oWF!g(4o4#ocwqUbr1bOC(geIyk%WtzFcGR<+sR#We-f47lAJc=C@C}-_T@xh2rmm+I`zzQIgI0 z{=oR0N&f^LYX4s{8JKX18lT>VYX__LU)Kt1gZwiet6>jOugk8-+HRq7PI=$s51sU^ zNi(UvrR^3?1&|p3(+dB8u%zu2Go7eEEleyEV+>NH*h-vI1#XY%i`CjNAMUT7$O z24AVODrGsuw?DEzc&!G_$M|xLe_vY<>9lpUU!H89#8~tly(TgF6g7&lZ+fLsznxAG zRxpxyKFansRSx3cv+W1-cII=STj+R1emgyw1Bu@^Jp|}_YQM-oQ-ZP7NvO{g(I+W@ z&MkZq*WhD2{{mA7GVzVu{q8|ET&}=^dQR~dyl(1b9^pj2#Gc7-eN1R}p;As}?=wGV z`{&kStbP-ETPMK#N_zrQY!D894(&*%61;f|UBTzK_>;d+`pn@U+)q3}oXBgsB;E<4 z1UiF!3%NqAU5NZpTdZk1la0@$*8#Mjr@oIqKkb7d(Q}gfV)%1k_x{f$rX!m1%&l1B z`+BkO5WNox`ipqanS2>P<4pb;_yJZhKLp;e4$zbPIZFRZoOhYZKl?gty-|&GDZbw+ zvgYKA*zoxxHUb`)s&zOQh*(*Lh#mBXhz$b2O09mXl~lXFy7`r39k$Nhca-R9`1N~9 zp7{Y8o&0UFFYn(U_1ooc_$uIFp|ME*|3!z}1Fldbqgs zoDaR;uEd9NcWRp^|Ixztq@s;$>gfDK(Zk?-RbFL$XfG$8FDY`m-T<`NU&SdN*wEe5} zJrpipIg`q>l;nbVhB#-pJU>-5P3&{mZWgZ6?tGu5#wmsWfAZ_1>jOSqr7T;x-yOJy zCBa4e5J@?caS?cwaUBA>;8`jCR&s{4=-_Mo4O0DA(b+A>(!ug7;~I+hKNa2H@#7lE z&p3ECwmpZw2k?vP3+-1aaiv_Pi18Kx7kEka-o-2XGqx`1wo~*sc-0!fjJFu??k9S@ z;Kw^g;T;RS;}YO)!*x?H{40D&e!^BO1y4(P6`Sd6n^j$dZ)pZs{@fCMcZEpYr<^5!>AYM7A}^)IqSr~5TvC2YFXcxZJR952zN-Mal=@nii>I9{MZ8_qXfSzwC|-? z;Jn_#hc+1pU*m5W?HO#>=lkVV=G#Mf?)zfDzxeUp&CfWc_XFQT`W}GqDO~R5`Vnb__VyrIN!zlzYx7o_v4f{g;V-8aB|&C zi8E-<7$?Ly-$XjZQ`jMHc|XUu`I^Gn`#c+`Y9DETxHF-ju%BF?Nq(I0=iqQkw*%)I z`pP)(qHp>@dSriUIgE?jXM7}!#LE{geD5*^zNTpPnQGaCW$GgFv3xGxeMn%}XzaVK z>_M(4pGX>bHnx2ueGlNHx1MgpDq6_c4%6wpbs`!90@Uk2+`99)9o9u6vNm--* zrc?G^P75YA_GP8=)N+Y-5YIVfD>O=ccEaze%%>%ERq;vJ*Cc$BEu5RrlfWlaCrG}T zPj8JSsz_rlf6~7}&3--w?c<(EUX%~OqBj}!-tY;sg+t2AeG?brrHQn%vMIVy!%dab-lPV-> zMNjhUW4`8;o#fujMSU=GrOR8EvHe_WgIY~!fsK#V zb!yj~vZrxAz?aPRAbF;CMnC@u-jRL{PL{tr%0%J~PNw@H-# z+Lm*oi-Y%R-iiHPuN9?_`1$ez-rE5_TqB?5|D+Ed;_`oqek;D{@(<4!^y$ke&+1@0 z$@uaqaQq(cD1SvlzI?z0iSPO-eaq&{PIVvcMfqURdt8)$VDY6~wtdW(a%x}xA<8=Y z_)-oY;5nyUwzo2!81UUod?|-ERrMl%e2}6VXixQZ@HWz1A!?WVkJar9$u`RnOrJ<;rZD1?RclVdcIBS+wD>ooigd?pqphF0_?=}bUFv&y*}!_1o8*o z(cz&pLhX}G?NRwqb)Wd$i03{KWyLn1RloZPu^?aTJm2EzXxzR6ww8r9@cUy=j6E38dMI=!R3HGv$xY7b+~*ZJF^Do zM0vx#{yeUsK9{ThhpXS- zSb7jPFdeK9%FhL!!J_N}yF9qRBm0%*=fkFbSCm~(_OfbE%DGjO`U1_8gSt`nJAZjB z$92qqc)K^JCI3-fDdqB5O&7R4;_HRpwO;q9NUwPHDhzpkU+Ky6%RqNMUy|4Te9_OL zFIxT+oIjG!D*mlNTTDASv!A6R3o^J4=cU-A`2d_N!6#g!I#&T5SXqYO&{s$^?T5?X zbD6YLF0)BL%AT|9)A{l~*}3Jn;%pRUZ`G!~6_lz$H=#tPm(R6fi9(cYJHzoh(n`px#@{;oeu*C(27(~48>ld$(u*>nPkjwzqm+qs+)|4S&}xAJYf49X7@`@8L3`4jR!^XExmK39}upKXtQTmBnd zM_gq2gC;$)Z_78ZeExy1?%sxf2fO)`ep#~Eg67p756|5O*fwV~|Inw`Z z*S*dDP2BqhU#5T6h2r2&ar_{@1+|k>{%N1s8k(Eq%GHxh&!$^GLmX`QCjIYHFMNXZ zZx!V$ZMpi0-)Fh17>@fFi}J7g?zdM*xMUSI$DmX4wqv*vivQ1&%IuSIy?bqk-F~J6S{sVUqJcuF70x-h#cVN z@jB={I+#xtLy*ps0<7vDla~#@D-MxY$gZkbf#(*A@_T)HvI6~oJm*v#px?$P@#`Jp zS4D5S%JrG2**;v|hYzWMZJ#Yj+AwhhzQa(5iR?|^^$Xjm-zN_!x&oW=Fi z!4o=cI^{2mzOI}>cKANk&x&&7^%GJ4p(SS(llZ=rv(>o&FHzCeCubFTcy|)Y|2y(o zNfFofXTEU_^2u2f>gQ6_-i_>M-=v~n@FMC}pkJbbY)*AKft!&I0K_d~cnJPPkfyCR|8QPILQ9q>&b6|<~%3w3}F$%k`5 zuUz02#899=&F8PPPIGBf|EdE_2Un4uZvK6v3R8;)h zvZE`0s_w%+t$+^|{H}P!&%dj2{iopH^BMv^(e77p|F_~gy2|>fpR12-{soL?F+Y>G z`xUTh-+tSqmykcV@H1qa>7(NBqMzZaRi~opS z8(sN={aNuBocF2s63Nlu;^Fc=ioc1JQlx?(p zfy(W_RBn~r)8}@`jAQF^t3-({M_Fw^oFKJGE5YBS{WkQaV(-+-B=ts$VKwcuN z4)F839;~^}t_N=Wgg$HRozrAe{JgFQ5`zQ2>tpSMVt>O|^mQxete~J zv_HrvppT6^#6ZbE{oW;b?{c*B&*D9)pX2&rmEYvoZ8}qii-ATiRsSFSi@gbZrV@LE zmmB`+wBa6vT>b&~Tg8+ntDUbzpFe-9`O@uodTRDjpV<6C#J5BwBeEID*4ACdW_JSe@}%xK~f zN;$*IQ+Up)L|lWWU-=Jwe}U8De_0nQc_8_;4o|x93+Z=Mx^ljPPKEYPtOk;L%#~_@ zrvZC+bGooAk*-q-Kfn~^tG96?n<{>nuFHDlRK8)}Rr=AJel^mha?0~! zpzJV?|0o>r15Ei4-({bkZi^uU)qH~xII4P>cbP8i1j=6(>P8i8qpB7rDe2xN>F%r- zBK8jz|8Mb!W8&pp49P`WUm#O)?#a^4)c$G|U7jpmn#bD_`K6h69g!~0BkzcGGqv|$ zs`4G*LHW(pu63#MTiikUm2)K1zv@=1{8BVew&;j-Nn>?Hx}>o>B3;s09g!|+td2;R zG*(BXOBySCH`;615+wb}+pkQu*N38&kSppZYduNJ@kn`6dx+Mnx2Yg&pS8gdlj|0D zT>et=Hd8u03}xT-uqD{cveZ`43|UqratX-K6qY5HEjZH&>Bgf$Zkr;)I`} z>OnS{`QOk3q}}}463FS19b6An$!Vr+=P>1!Df>B0+L^MU!=#-lJ336-uGU4rGE6;z zKSs-T(t1*upq?PEjqAyug##CkQ}vXoC&S=mqhFzLJYn8Vieqd79PsZjj^}{mG|=La zdx<4`RRkO_n|G7qpmnKz?H22eHihGD;J}zd)yIY(BWFgyfw)KgZc-fM18~64RQ0aJ zF|AcN(@`$dPBl12e^27jS3ZHyqtiZL>M`vXLffj>ppbr#FZEbDcU&MX7S4LigfAjY z+W*h(t54BxIN$nGAAG3~e0s2>?V66&2ic$YM!k5igX=|V&6!DyKXvMvY%5czo=K}e zb?TX{AE{H%q(>rk>hZqiu2{Ro`xmb5&5Z9foYf&)el@=%OuuCs#&@-CozzaJoeTW^ zg{{Jw1(i~d@$dS{!l^^7e;w@hnePav`hDT7JV9INnfavt$~46JQom^i;vS~ofY0kq zTDkvL{S`bn1LKl-jt*zqw{YHIo-5v{#z`N;wN&d$7Fg@>QD1RCjEPd*H|;-4yW1a& zQS0T*tGW13)k=P`%iR79>woQz%||~ z7xEiuTn`wUjEmL}pmhN4Qq!xbRmpT&uI`m`H4XjpBOzDQEWbcWu3BFk{Z6DKSHY|j zp7r~t{oTB?yA99Ly3zi0YpnDhSLvbuf8=hw`yY9a{!jR&TDLh_dM}xGIG=s29M)TM zNm1++nWOd@p7w&p|F=NH8n>VHL4MPlrCsCE&!49cAa(2d|Jkm|RCGW%iy%`m0^w5M z+iW_CIz9hWja=j*o-I?OT&ZiEWeM&?dl>uXm-_Kb{RkTbaf5OG;V=7r>5qj7rynyF zSrj()%)}RkO}%6FV`gHF!sb0Q5l3NDryAdJGM~8!j4xN@b3!ekgM_g67U4`xK3Iuu?GBi`utWnx7{P0pDYq$>=D8l z+(|g^{8n^21^wXc3ar`rBawBAJ>Shog!+#&i0{hpGXwsX8BdyritdcmzYW}fVFvo` znr2eIlw+=f)vulLR}0rOpz(%<>%S3jCD^}X2Id23no4eMkB9M7%|J;lHP{FR^9?fP z@(upHY1aJP;zA`iVfVa>nI#dw>(ElI}>soCH?fu zZa6OiN2*C3*`O-?JwyaU!_q`&&V$IYi6D-`@=JTi0|kd&qTjl zACotz@n*D_SR<73n!K$_Fs_;wPD@V?{f~koU=$T-H2;!}AJ6#B)T>?D|N1wUuL+z*?+d zz^kx;k5nJwTL3O+=BMy!p*gQsF&KodY@CX-Xv2>#h_10IjG`yxvFlKLzM<-?_bJkO z_6h*B2cu7#k(+eKWm1ieio>)Md!nC>*3gU5lCZSwKCq^<4ED z!;{_Hz=uJ;cC`|5ZZ#N1q+Q-?aMq%opxxf*$8((d4SzTD8|_Q=7Myp0raHStmO#37jK&l6*&d8k@9p}QN=|O$vdrqaQ?-XZEPG)lR_dYEdS-|@ z6amR{fN=ob{#2u_uC~?#ti=9fBnNw9FI3Z5ilWKwVIn+;JY+l=S8(y5t*%D9u8+#v z(0IuE9%!FdBmPg*Oo|6xt8i*Bz%|QuFzDO=jroE&X3}3ZV{!JzS!U=}{#n{5yC^^BEBz&1E731Y9;AZ4% zHsVG3pmM4iZ|ZYR6@E9Fa+-1vqPlVHiGHbp+-aIjr=O+og7HlO?&E=*^$qHRR@3U49tB^d9kX)!c+{~E-;ni5|n`g5AA<-8W#O77z=lTqsmH}sI!lQrv+ zhPBRN)g+`67I%Viz?u^b%{|5q-OhMO9-up2+?X3sbA`M||Eo@lfV(hQpVdI$XqtPB zyFg-NIflM>abJTpZnkj$HUjPhar!mrw`-b#_A}Xcv)QVnb>`yyCpCzLXMG6WTZ^`$ z=57n$$I5hZV zuX)_0KTYpz{}`^d)2~zmTR_uP`aeRtPC%c^12V*AIf|5fBI~NkJ9TJ zN5eC}p=O79*QXB&L2a^-^rkkH`Pi!}I zB(xyWr*)*fH9FqH4AxIte`cnPBp>z!pVXh+_f-0fsBPv5vQ4l=Xq}Qx(1f%qEcGqy z{srlIZ~GCXcU%q4dIxcHuHHePqSmqtW}Fcrt|`HMr`n4RP0r8$KL3f-j)5AQ@KHYo z_?%kw0c+9z*IM)85Pv7vqv?WtA0J6Bg81@zNQRD*2qU{e7%l05y%3^Zs=beSmenf@ z&p!k{9cbAXn;}W-AzPa;QY2TorHf?dCC|2=GZca}T$mEfl%^xS z)E;zpxk)`oa=foaOO0jNe6JhCyvpj;1?5L_JOEtP^NbA_XpgLfl1%=SCAZ?d5x%Gux=E*c0CI&Rq8?UtGIj>QSw?CNaK7RgX}nbxU!c zYvH?8*~^d>w_OM;sb0=_bz!Dzl57>)htMuN<+0{^ld3*J<~7g2Px3$N`b7N*T5;Z{ z%*aAmH7gHf~!|Z&-~ls%l(nc zDOj%{PG8exT)lmAO}M-{lenI@aJ>l{I}NV7EI}>up6TTe3{94w?mm4dO9L(>#V7dm z*-rQjYl*n~OB>JKt`_myV_ykfN9&le2pdn#zvw`ok*V1FM2fIul$o zEe=Cqe6rnl>Q{nJHO`G1oe=fsD1X=pT+{v~LnFSNZBE#_AU!f>`y8~)g+=2j7t{^5 z^ux59^~W$zvU*Ka`oOH;VR9SqwdH;r^LMpX{#!unY{TDK3*`D8dt(39f5Xu9^`nyE z(|unf2d7v#zYUsKTR5)>*^iQ=pTYG9?X{-K`R(u1hqj#hd_BxZ_!US$*8c(L4{%!j z(OFL^J`&`Ul^*ob2+)Vg_@n#XnT}cr=Q&D-RF|Y~uT%J~>mM|{c{Ji^?Ok%?T6ffkt)kP|vvJ;p^B$b&PmO&E{j7a)4m9$Usc$S7_giv{{(t>{ zO==B~h_BGEl=X|oxDx4C^#4IKt5+H5Yy+`_Li5Y3a|j2uQ_>%RU-`8$YpH&GOC@6h2mF~G+F$=bUrpdTWzbpt> z9;MB=W>~n;=byDnqY|R&l+gBm!nmSY7?0O9L*U{Oane&q3=o~NkHhB?I49z)#qY;( zzGU!a>KpUrD2p!`@0;~alUmc=q4|<9zG&8IhGq!9uyxG1Fs`WkXS2=&jVmo&pN7Uo zs{#hL`?E0LUDIS-eSG>zOH(sPRL+5|TFtl+>%@8oI%ZFh^1W*SF1(}k z4#i{g+W{@TP9v@+@w4fg*{5|2X_KgE(isn>aY!#yR3w=hC2S8*%s8Obqb4T-{^D6L z85!aB)5Is$q2JTUQfEBHcJD;$trx6%fHuED3mZP?+!i`MNm>#C;|Q}pWSUvMa#j0o z`Vm3+JS__Q4^;oSp*!fXcftVV`U2m!uE!1gc%PZ`PCNSq6KGIt|;mZFB2DU4*yeNXpwMZG)A|aNl1!$Uze|~*RD5tQ+V96@W zA=M+q8Im2;@Ep!9s1)r59>!$(Xrs~5`5=dY8IF+unYCm0Ol#Q1`4 z?;FwQZ#>N4TzEuCf1UJt1lsM5Jq%67$9TCVZU#s$`db`lNpp>7!7gZk&aK1vEyY4C zdBEVz)HmV}&559T(}-C3#^E@v{_(=2RXLI!wIO7^NhUd&syX56PB1bfGm-3)#+l5k ztX_x4=~MC*#e2FNIC|)4*mWzJ@6#>0ME}2Wg(>Bu8uwhEHlqIznpr*XkE=hy_@=^} zxfXwnP-0=6R)4&44QQTd;k+nP{RxayZro&O`rF9Gy7YBb&-|3A?s#V?2lL00Gvp(4etBxG+KbUEYu=n0R6RHGUnC!7v5?(quk}Gz z?gn*@JlnGVJZ;sV*Ff`s22bi;TKxohPj)t?^_?nc{a|?u$j;=X+YnJ*2$dlBF@h+*AuafSkE(Uhtl_yvt;q+ zf$dvUy^&3(WBP@OiK{O+NyiV{zUt)1d!LkC*tk-aV!2T|A}WmMx6t%4GXy zdSw2bhsPVF!S;5{Qu?^&?QTOMc0(KD=Rkm8x#?yu`>b9gST5|iNol7vLUydV{v;nP zKR>nP8*O5f)$eKfQ>3`b!2Vg&HbWEXCC8Ods1&ZdEnI&B4SH7{t#c#c3XI2V`kSGd z5?7&2nECaXg$uf{=}nDFh}H)p;R;+YsOjH^W=dQ|7B2V`-1c|}XzVt)mK8+86}WCt z)Bg<3Bzmfzqqs=c%2{8rx0m^b_Ji!L+30u8&cfMf;roHqQ=hfL5bN&R2NVxxQwpy4 z_56&H?9Zcq$LBH(w#2_c1%l2WTI+D4*%AR4PdcrNI(ueUm4A6(O>x_)?duE+9 z>W4HVl4L!sTZ$m!{i|kU96{Hg+4Jx&_iUw%t{5C?-K{|Tdp6o>O;hDV$7M=96qU-+ z2~z*fUToo6jd!ha_!Uc3oHlIv5b-yGcG2vOhGs%MS|7vyYlOW|w$SWna01)x^*Ay1 zJsbVF*>~c62q$Bt6idUaPi!RcdhyUD-Vu2 z*FQkRimO?9RfKjj!Fm(3pEop_PiB21Sw9pIkiu!MpEkE+LfpU!m9Yp;@kh z_SbCK0-7fGJG#dC&6=1m+Zl(`xJx+b$~$v<8yu?!!V7}K?zhZ_&qhDP{O{?bI}NQj zl>_Bk9q315;|$flkKjAh>I}n~sAq>LGBxt6y>H(6#q_p(-_RQjKi#2t%btfU+Yizs zJ7qrSoCN&+ah|2o39)LO)bpP{1O{B8a1#EY*4@{Jq^bR+K5nuUWh;@MwmM8&>9SeE zq(%MXbl4za(n^=TlR7QZil0xuyc+NGNz-UE*l4`ohvo0H^~IcTn7YRL!o+D#;TYcv z*kUx=P3u86NK1(H(wtL_ew=eIep~JS>UE*x{^ST^fd6F<#sW0W5V+VPVq6zmxX}L3 zxyk5})i+1N6=*NcLHn<1GA=V;%+Iez@Q--L?a3U=4w&AcH5e?s{3Mcm(H>%a zcDUaLwJ<&Jy1(o>x z0X`St6ZL2T#!QcfA8G;a9sL$QF$Q+@r}%{Jy!sG{VNd>3dCfh*;!6R3Tk!>JS466J zf&G-Z6Aew~OJez^s1~*bX*^-pIE)ee7h?s8XRZAQ);5?eI*q(mbjmqFIL+IHvkYTO zi;oe`ck|;o;LJWAebMoF7rMI@`Kud(_y3CX0KES%j8ps??=J(LABx!WvbguT-p?(z z_%a81SZ1DE`@=}}t2j_zF#fM;rr?Y8U?F)fFZ7*VIX)URj<;~V5(!t}IQrZThGq&} zv?`gakLE&-U0kr8=bmG59Wx{nu8Kf@ooQ&Mz(u1o1{dZNxVX*-jqh2wS|Z^J^n1>| z+|XoP$?H8^E?kcAC%Cw-1C84(TtA3Z@1_Lu3%*oMGZZe=BgS>3h3l7~VeK<`Oj{&e zRe`vEZ)k?X1)mDz`mKcvee}83{QGr>M8Y*S5ZB{|W++_nt&pA~`*RL#y?JPt=D>!T zgLZi?>gZg^9c-|GTGzMEZ zpN*g&CM1AeZ^ktu> zBN4d0mk#BFM$xggLibEMwmhg8(2)qFz1@)rq-EWa2&4_&kqAf@JHDMF3>{x58#p#B z9lr1OwU)9h(&ZCx9|mn*cBD*7%TYxez)qw1-+hGWR08{KzOm7EZ^QLL&|-3(M{R#? z#yI0f#1qi$ZOk&jw^i_F=i#{x@NKWdy%lmSlI*|v@HuF^bp8tbw)**-%H)1Kq3mVy z)dtwh^U+_|G#T%~A@SzN;oZo1*IIbd|DXSD@IW1#PM7Ozgut6{e%yTY|254>cncEX zwfq9}F;+kSdW}|yO@9oHH{txK`Bxd5k?d<%-&O@L7prIKF@3;hbG3Ma%_wS%>`S~}W9~$piH5$#C z_2>uq1vJe_c*iHe3qPid7ykeGpIH2TA~aswT_RXN!2hplM#5W^0IxMJumJvm1y(=% zxc;H>j!%Sl0s8-%W+c4D0eIopIeI$iVg0A#CouoyJ2}4bnK-@ca0| zp>bCv#J$PTjEFm+<+X5s&BBegc)=wW?q#8IS0==LuAvzbcR&kl;Xd2KeFf66;`)yN zacJCA65_^KfTkG{cR)*Q;l|jZE8n*vje9MAzY!XDRYKgqF*GCM4rq}r+;>{I(dI9B z+Th+YIy7z_CB`q??ec=h49$qR16pPaH{uOkem{@-iUzjWvOXkkX$=Rq&kO!zXhy^x z&_XNRX!lkZfgi76KIOw`|Ir6o*@jQp_A5Wa=V?|ZGVqn#52UU6wh-(8EZpBDwB;9} z`IfLBv9On+iS%flx?q1i&8DhF#6^>sPPk|uDsVZAwg?AH$~%irw{U%^;s=t^Yvk1l z$*)pH^k_~i(OX!E^DvxNJGu3JMQ=UQs8s%a+OvSxH)IOzA4?V&N$ozxMpAECjs|$+ z9qqVCKi$Ofk!169_Tb>idb>U?L|<6vMe$engR2m6xe5Gi09W;_47m;<*0mdRKTfP= zH>MfqdYs?Dc@fTE;DjBqv=QgIhUe-0#^sB60axzO{x57bDSYGSk>W!F>+3?a|C*-i z2Pfl;+*=W2vUD&$tDRrC3bZVLz&CcN`RR}0;biM=CebGg(H?7>q48l1ln%zX&f*{X z{|l|MI&Dlye6lwk%s=%1HO>c5nHS?#aYifPG8)kpRFR5MeO#Fst6 z8Pv1eJCO$U<@QdbLA|%V6KPO?ZSO=H)I-}lkp}h2_D-Zhy|BF#X@G|`L+$sT>Ql0B z{hEK{UW+xzAGvo*0L8X_arpYhX{+)uC*+I6*Dp?cMZ3*@arpYhX|wV$i#Uj{c6>o+ zk3}5kA6j&Z@tvXHX|MMpZFO4=bTxaM6W^ zCihdiBd2!!2F*KED=;t~j0tLg(V{EyuC*TUsVAs?&Qkefa-mlfjK40r-q1{fhdo4$ z=UNNTO?dY=7Jq&n8c)LU_C=TrplK$-gJ^wKUKlHN`2!!uqDL$|ABDz~aQt!+#sW0W zBzV|E#r(0x_ZPwEzvwxGXY06-c#`3w zf7zlp4Nasc5HaqTXR67b6%ZKLYZfldzgl>(MkU17J3_|8ODPKWlMOI5F(24jjo6#j zkK^17xv}D@7Gu7i_Cfjh*#r-?TsNQrwFd{`UJTci=I7!b_&w0zK4V5me#&{Rfw&j< zH#C#r;T2jKPhShqSMlyh3(wgR@Q}>e`c=i7Ego)YCc)$ChsB3mcyjUXBn!`j5%7@A z1>q?+G?UcTW|23xo-qK|>3VcdDqXwRV$}MV z)^llt{tCJNXfwv}wa(*smBBteI)i8blMb!rwIOMRt`wS;^goT6vR=jbWi#6R=3h#k zO8?KkUks+t&u)Zqn61W@qUtSb6+SO%iI=2k@)V=Z8+k=?2 zaWwh=o{>#od@^aKEwCOaI)>JwTgN*+RKkxk6S}Gq`zg@Okyc*&h_%@6tyl{m{p*$o zvF*q2MON`)BJ1?QBI`8z{GJf2R|&D=9jt9pBw{ChB(jd%BAlxxW33GIL$0#c_n^Ab zo`dThd>+~kY`zP5v-$gKJyES6@>K+O6+42)KBQB)*LkstZf>(i2@h~LEiPt|* z&>v|=A6(N6j9VdY&x7ZSq>=V@GBIdu*EUnU3fZ-YXIla_yF~S+2<5qB)&4Yz;>O75 zu@BY`szVP9^Z$1h;r9!!o;E3w2KHONQF)q4EiN@kI`L*!Bc>m39?Ptn8E5-(mP|A< z!S&eeJME1JJQn+4EMCUFA$ch>Q4!5dgB^6EQOAC|z+p!Lp@8Th@BBuyUYeJA9; z)6%OL*xy^yU}*Z{YLnxwg`QrAx)O(4_EVSCS-6)Vjbk-xA%~}IVm$9(4&(&JU&{C{AU4zeM+}>NO zP^)sX+TA5T0nNLp1m*Fa9+CEe36_7@6`+~b{S4Lan);dy=L~TS{+9E8FuZ0qA!50@ z)sp*rK--FC{Lajf^;OD!;JPnM9x^lo_Zy0j0c?islaHnjwSZeI#`%DffB3wY{2j5z zofK2?@tt$z{#3hm;>S0X{M$6*+oxo_vdc8HQct!n>H79#jW1U%@0~qVUW5aSn9t zw!}C|cUf2o=hB`Q&O!KX`TNiRoft@n_ry+HI@Hh%w9}?Sp5@$tDbOk9u-J&-yb}!L zJ50*=(t6Oz#kp275g+G&qU(Z?U>uDH1`HehtqvIE`)wtBjW5EkHU#@hNhq5yc_3ZIA10NnLStz zFpompPfLMi=~k2G1+PTfuP9I-Fa5fq8G%3UI2HCJGWZblzw{D=@4_LG@R1G8hi#88 z#kjqusp?U<@&iKV-?M~~rJvUwP?Jqui?cIkD7rsAL9j;lr8mOUmK zZ_vFbB+2;XJU^#-7wFuK)0)SAq1s1f*9Ca^4pqCq8EB4ucOvs7}j%2H(Yczh__npVLWQZvyLeOIMRd1iY@^X|d+p zxAX(8Ar{`UNO~u5o#&Q=4b2Gn-0||3uUPyX0b1iNe5Xdj7r0JuOP-+_0iPRR(~@K1 zL!ZCJ>X%>q`v~|F#5=T98JeN->3AEoyW}@mf>MLzBy~e@gx5?jgW@JkjFgw?ON1jZTP5PK>ZGGx>l5?1Pqz3{53x{`PkcdXKb5 zozEL8+h5wFmi#C!==Zju&)phy++wx1!OIDvj z$mc`Af1q1#cKhUQxu&s4qlL#a@Cuh7{0rLtZ21FdKCZbV#CMO0AYWud1(n~Q3{A#4 zAOueGy{v@qTzViS&Ic`=@WHoOcGRW!NAj}-wy!NO7@90+{m@IW{dKe97n*{;247EHmZJ; zp%LG63gV0{Ihm|SI_5;@FdRBhxk0b8X61g%z81IG8=~sfK62f|)-8rt;3KW4Vb>qp zNuJg`^wb>YH*5=6E?|qbUTFAz#kG;vTL`qbThUL~G+A!@Ccx#*IfGz)XIuCXThjVN z3*QSN*9(yS{J?gq75#Kglkxe-Yef6q! zMt_*#xsB1#1q{uk>QC^YRxpp49%qZ>w=bR_`A;G z5AXUK{e;8c#%l1FU_Em*bOA#%Y5r0i{vL4n!<>Kg2Fu^=(Q5FQV4vLR)s|+`{B?Es zTjB7Bv3WGy{?-*Ca46H?1@Qn6I0@jQho={(O2E+f8Xr(C%Avv{LC8$H1;) z#^o`vn~hmy`^CFXsMb6sbiO|ZYXOF468xP3y9DjF$CO0#SLX0{J!swI@RwOF{zBiU zItFV2hGt;g3&SsFZHC5`G0wifF%RN?v%}wG)fo3W<7|u&yZM+WnP&7rjHdznei(nj zrxpDDEu*2|kA{vo8hY4h=sKgJPmIQxjd{s_cZ|~#rygHInclV8-t}d*))zwG^E&1q zmL~FxKR6``*T)-y2&>LM-myrusdXb#Om13AvG-Y;mGYzaDUQ9{;Rj>l*cA>x>DA&V zRNor=oTXVQKiI*<_&nqAvleMza`<_qTKt5rQ;vl#z|gFeAM99Sez0z0^wF`H^N;<& z;pg*e@RPs}Ird#kvl4!IhZ6GxnfCd?8TezrxBT3HbT#-%V0Rq*m8FUN6nZ9OSGMvT zJ5mTvpF4d0g7*MGKQZq9ak_s?MsG-9PfJynCi7*_X|a6yJAfo-#%rhLE43bIbTnKk zb^im^IHx6nK9kzi(oD#gw0}C$njP&2NX32vYI~_E_=U`;4#Y2HE%jpjQojW}sqY&3 ztL1lJ{Ucl`eYs_vefVYZ_>Ds6ouOVQ(AGgDG^_=Pa2xcSHpn5L+9Dh%Cl*OfCcfqRJ;oWe0gIqj~Pd8ce;buM|#|K z<}s;LY#h!f_`VHy?NH~%`Cx5<@=3iJR~fE*Z9b2**7GGWfO!MyE%XWYXQb&?_Ku7J zSXU8r%+tk*-;ohUyYl^Xb>sLs*4+o5dWS6&;}X<22VvcZ&>w`^5$ypxPvZ~Wf^otA z!qkUwInVz+@{ZFVH)TwSic5nq>5XTpJD}vn2(k8`y2vRuZY;l83ovkV6vkB)Knc{F2wg^ELi=PLn@c|5HLOz4dYZrqUlDXCchH+cs316Fm0 zd_U;yWFr!}hkoI=M`{P3JLULL?+089zrA_yr`v8Y|2KIs-}bq*%K7es_pl4!{9ew~ z3Wx7+K-1YD@K`7PTpICh&sV65K4}T=`%3d%xgNLF<^g?|-y39b8@CF5hV%UAWBHOl za%cDZP^^o*#d6RQ^(s~YlGxb2iY6p>Ua)WHwbY-Od@AEWG=M)Y?|uE$OLfYV)RkH7FMz@{p zxRm0IOKXuX+3_X?V|-=f&1O5MREwXk4nG*r$3Z{w$Ei1Q@9gt?Z1oT&9|KB+0d8Q?G_JHq@Q{H3vhF#y}Q7yi^2l)QM@;$x=-nZL~RRI24 za^4>B9dhEk%lG&OHjirYeNrsn<6&zsax%U(Xgc%jC4bukzC%ubkKr48yi6X|;=6~# zH|!D@--LRDtXvFR;5cA^@dnUESuTDDzlT`t_s2h)2OtlN8|MGx@ldF7Oa8kDxP_cV zAA{RjHjirI)-x8jOR$DWeZ$4y;ymricqX<87uog}`Y}})AguVZTiN@5&y*96Emcy9|YJ8|2V$Y#pA6WArztNWCiAH-=j<9#b z#FqneKa*EA%i(AaPC1r4<=6_^|8~l8=^m9MMAOjuxpMUnn^!f<;bzenW=(L6%R0b78{tD5C-G!Um8U)pj^fL(AxW2YS7>2g%S59{f-%s}5qk0L^P=u!2-X|Pt z^QvY!98E>jMSGvn-YLfkxbH7v^!?=QJt{|t#-j6c+R21oHm_=y!_izcT`ETpryOUB zzxjUh^*t&_hz8;3N9(;Jr?PLwn=oEQe#bj1l)^3*Z^GsDkM#=s9Q65k_L0s&>&N?Z z#=xGM37>q7YZFyA{7=V)tv@VZO4ZTyMGx{OWKak@@A6$9|6%$qa3T{uL6@OY@V1z- zY_l$gWjLR6J6?@bC&RBhLVGIx%p&Zg)W;i|-h^{CWt3`(YFWb%&q18=rZgO<7S`ix z`Qg(fU8fOs9IB0od~aEQ~SLf*JO_4O_&CJIDgv3gA|SfJ%u*|7#q4gQ=5mg zl1A~gW}74K8koVRqd~X zeBRA*ya^A2&x!OugwG0i*K=^A9be=5gegiO{H*}}YjNQ@2cJLDP1uhkg1=u>JyK&J?Yt}EYxZmBz-*2vY{t|iQ7!Z@ipWF zEGInS@VQRs0YB~Pwo;8PpL(sJ6V@^3^o0D)Q*~FX+OhH{=MH-l-TgF!KcrzSCr5IWM*YE~szGO0jy{CnZjRz1Zshmd>3@hERlwWIIpN~8 zLg0q_NNa@)>**7Iv-N>I$*~{*Lod_Qk@K`R;>-MDE;ivO)!@AVe`!rQj)%CB-|wgY zA^cJO+Wuk)dW(EW5Pc8BWzV}LJ|U}V5nK%%KHKR$;HO=KPn`ZD?F8{4liMxB8SaVk;Btfq+J27^(xZ)GT?-M{*b>Y z?>Ow$I=V9_4gH#>ROGM<73qjJ+U_T$O;wT8a#f`Bc%=qlU*pm1l-K9h(4@joh3Fe; zS{ERmv}-g+9cXcyFTRY^V(@-}YJ6M}r&5mNrOgLUFVO!4IJxbyKhEO`L5gv@1No3l zL6`CCbFt1t>o>S-+}&-DcX7DL`F%(`Sv46Dh(k@m_GlP6Su4ya)@-FYQ(E@d5n@A70u9`WF}%X&*wB<6_ztN(l;Y z@~`~=Z#BooZWtH4;}aMcHBB##+bPp;1yQwfOjy5axaaU@KfB{1^>1)2=a?6#-KUy2 zaOwr6_R>D$C|=rUz~evkKcrqN;BDW3)gQV(t-EJJe$pug*T;6{rDHyw2ED_Vn=dI; z{P>?z&0DDYKL4B;0mNT=6!G3x&F>5HhXTQQh#UExpH&FqkLuUagZZoPH!-#%$rgCE|UlT8s?vpMIdwK-|dhKhXaK z{M&wn_#ejDj)4|yG()8H`D&?YTAo{sciLlmM-CUhj%93H)(G--h^EmId~K)yN%0jo zXQGr;|6KRLHvJ%n&toZ6{P-VE>#FbadA9g+{lh++-cq$(8sxJ($MMq7R*~%y`X9n) z1-$LPXxTqB9I2a4Jv)+dCd+C>wFV83J^Kbny-=XJpL;Ea_PwfOU zLw2w9k>rElH2#(UQ>)o;(QN-D%=!cUmZs^Y5A|ucdrUR8?VjoyYY0*bj?)TVk3Zi} z*W)3}1?Kzd$EsGpJ92?^UOLZJ@r(KX_Qpgbfn3=6KAl)G4EXqC9?R`Dpz#YX)U{tP zdj9X!f9r@d|4+Y8%EkQMh_qR%^&3I{7H}L7aUy{K5W`K2x=E`&GtIbPF&20r1CtL6!K?N%j5l_LZ~IH_=m;>CE5r zpiday>frYX=g)qczcx!;{#H2rtwGuw)j>mo_{saTyz~{|?`VpjfIr*r$*x6jEjS-@ zX|jJwzw~#|Ck&x~`1PxG0P@rBpo^&8RfztW{<8Qoe%OqX)x9H_P<9sNEXjf5QY^(o@5Q3oFpT}yw}yi{|fS{ z=lqBp+0Jvd5I#wtv;Es?Jk!lW-O@~VJjOvrQe;~??@J=Z=!@@D#43KsqG08J0SaFM>Bsc0S6 z-%vg;qY-&B9ji}OYM0GuPANd=Oa7Jr#x5)PgxO`q9@~vAvR&}Dbnc;nPu=E?YcL}y zwwwozd2L1~75UN9CmfZEYI|QX^UHSJj3b!`FMTKf($`b#RXxwg`3woqs12HD@&Bh@ zR`tbBW^nF|urqM=;&Az@f&719oLOR754ZCG)1HI&Y~sJs5vDv`EU_^2ItG<%7_I@h z`bsw7GxFVNDR<*P9z3$BBr8_Mb6QLK5PY z!{IKyr%zY)EnWpWoaE{OTxY4Lhq`#(BjKjCxje_g!3k#NQf<1u9X z>ED8Qy$gTHLdGY;3x5+{8yK$-=spCmuGPUS6XVdYGHx?@gV(Ra`PR#Li+}0s^mQS4 zA-$LJ6)v$k#LKtA>xVdc&m7_6^@|P%UYTt`?4`{pJk2*y*BEZ zEiP`DYrv76&dc14tDSo0y&!Hw;6Db}B_<2}5^g+RXR<~Sz|G9(lfX@8+J3onfSV%( zX!ksB|K5-D_A&?gJdC=L>{+7kWkajZRmZYCvmTWB1^9z5o%xQ$_xrbQ`d+tJU_#EN z`)nN-KdsM@+-225ywlXPEnWQPN_v#S%lwr8Kif$)jTyf)ix398bS96~90xh#{z8_! ztI0?2Q!wlMLA{aY)w!5MkWDRCZ?}3eE0Bz19oU}7s3JQX=l)Z0lri4R6upJA#$(?t zeEkt)bmaHHlD9ZB4rpD@P5102s)dy^J+6X@$dA9HeGXC2<^=S<%$rc=2XNhOsN0zpgFUMIT5oG_1{5}wLGt|=V!S?(e`U1@Rw#zsp8B>2alFR)g zc`)C#{dre^%=|}d|Azj&53^Y{W(s-x^VzHeLFae&vi@Q1S=-1^o$%H)U#cCs&I8?L2+_{8>#RKRFbdas65#s-|E&4A$^-sXH;?1ev^aiE zwp&G;J+Gq8UQ*Gv705S%9VkomH!tgS&4^M<|ECVH?I4Z)1y{^hQ4dRhc5y{xBggi^ z8(^#ZR6SRh?1L53zho_xaK`;Nq(4!HJou5ec)~QT07?% z7|&_VlAhwCl_CFqL@0l3`v7C)92_Itx3HJ^YdgsHReb9Kf8(aNfF0D_#H4=(yiJ#o zgt*Fh>C$_ymuhTry@AsUuIoTARXsP@#Z~wbTsI;-O+DwYM`E0#b)T#|ajnAjjNuZ$ zuzhA-#JJr{zNiP%|IBzJ`<5Lo6yag=s!?-rBRPALD2hWm)}OY&!TD1;BHPJMy-Jln zO63U38}&C~{kG8Yvb3Ioe#W@c+i9J_^iwZ^_6Nx8L7jh)zLB?e98Ud}anDUx4J_^( zC7ktF8n>=h&%xed45BMAXUgHRV zFB|?@|JLzMJ!<_1eZ6sWN7KGHN@x0$htQuaL4N}5QNKpt1eDA#+efm*ra)tcanHTy z%v-a5VsDoFY|O>8)~V-UZ?yP3>kZj7E^SfI@p_@I-|Qwrmim)i=s;OnYFQKNPfYm~ z{Pda>#dPQY*_f{&ePoA_kZ+xbd8YFZ)6v(P{iseG;(Sd0*z>oe zmCYco9hh=xyGFK+x-3Pt^yM`BWDXFV`hdsp)UvY(r&r;x_SJPr|94XJdSUtSy`F$XT|``?!D2 z#yS(^a@qBPcAR}S(qWHa_9)?nzp=L^>qEv@=J{*kYo80DezqFua=STbK)k*nS_3*6 zAD43A0=*?WLwJetCmt_~^Y^l$OJrZF{biiq_v_M=krOTd#Utrv5p5I<9_d+2>CGon0!$=I~O4PgTz!?}nqSruQ&=kxz`(9;+b_nD6d*+UCDokE7W< z>Vp@pCnCnJ_tWzkrhX{ha|qYtqo3|EE|1jfr}#f!-MX4^rE#_f_J)}D=+c4ik$so& zpy@<*OlCTSAN`N)NL9DKM)(mOcOBBw@v@&pnuj$Visv}c<#8o@C40K%dVZAKU#^vK zmW$n>H&H!5(Upr0LX_)u1Hwzy^Yh($-|U3L?w7q*J^!#9zTJlBU@Xtxpq~FEC>NOj zXT!#vT_JJ#o8;nYmWzMUeUfs~Wl!Y-^Rmbe)-Z$zzkWaEdz!l$cTdET3r_bgczr*R z4*S7S9+r!oqwxP;b9o(jpcI!a*@*<{%7IpfO2n>_-G4W_Rl02IjzYD<#F|N z(_i>jc7!K2PGCJTva=yk6sPg`PS8H$3{Q~pT6=@FF{7}4_ zct-6UH5|K^&fZ-DUQiy)TS*7-@_q-8z`x*1T%B-#h4S)|-~MvIhx;YS6gd~y<@Y=D zjhtZ;&hl3VUU#eI&p7>3&V?K<@^>NV)K|+lx$>pQZU=YGfJKf_56n>y&N zXc3e@tX1U9z?Ca;`5S#$PIs0+9<5ogwEJ`7>M^803Y(vRO>usI0Q>pQjy7LomxU~m zqxEm&9(xP>c+8EH-peULJZ)$2{b7sB!J1&so05Y4jh>MWJtJR5500W;1?9`&R>tYv z{8w~UO>Mt1SHij8o@1cv^zGwH{?tadN?1aCkR^CtL z2+E@#Pe8}Z!Tye%Uxb#HdoNeUcd~68x3V}mA40pyg)Jy|1+FJz)8}B^0Zu$V?rID^ zE>bJ61Kx(1so%ok$}2nrCG;7;jR-GLtL6pqdjS5ca5?q^vK!_uX8C)J zC{%%8*J|TO{pT{_jp^%kmtC{i&jY^3y|O5XU)Z`qu%9>WcU>I4Rd`;-%HKu_XZ$_| zPdBSo*xzRH`;V|e_~lJU_-$&{n?d|ufj`zdc0FiV#xLPlhw*!hd>OxHzTQFau{}@E zj%W@`&o;!2iE;9$E&XQvpuM5F@7ny>KMWT$-ckGyalI{R63W}B98Tk#ajSk-%`9GD zNI2n@hxu>rI<>mKgI6BL1af4L&ufVJ*l%hz9^sB1FMdK8=8wB*3^9)I`ZweC8+l=T za_7IUp4J~D#^9>(;r+89XIxeIQ2e}_;6X12B*F(}CP#a7ja%KC$9$Klh=;!(cie|1;pahA5V)7 z#`}&aUT_=;$Wb2Fe)9C3TE`Dxm(y~@@o7G-^@@ZzbtY$ z3lOiqT78WxN9Rd8#_1A-H&m#3gmaD&5z{@`XJdC@`mC%L&A(d^t@;d=$eJHUm@ZAGw%XU=K){iR&R9L zU7n29f*0l)kge6&XYBV=d3wAdyo#Wc0pHbM1@RgUe~jCC*(MA85?+5{ye5!u055s2 zAPh0R*E3GO&`~lSBQK@E3%DAGcFp?w?z7p4a5L`Tr>bVYT{^E6d==r+`cpzVn;J)F z&4Dg%(eld+y&KM0?z*)^rc_?|Ji(?oM1cN?iUX-0~T>Yv?`% zw=SWQmMm_M0=MgJem-tecOLLD?!$k(xM41ycRMbfHX&|eV{qxL8SditAd?q)+Xi}5 z)tU(|Zkr@~#tq{i#>O>MgSf#?lD7%hYQrji3AbArw`JrTf?LX7;f6DM_>4E5rH|W9 z?BV4-ssohzB;UpD4e$m1C~t*?C&X=A9Gx|Pb8&k`!dc$F2fcgMnkQY{z83n7+s_Dp zP_5Yz#O+`3{~FgP5|_UTw-*?<59mGwx2}7I+wZ`wf^*_8A2+?ulJ|xm_StVPZkX@p zeTnNM2~UXI_Z;pybk_XG#qDPaC*1N|f!;Q?=2r)|{ANO*aLaFt@K@B@`T^YXG2S4a zmoHU#R z74-b1?hld9%Ws0Kjsz#d3mA}d>8$PK>=yzC9L{*rIQYF<+uOzKWDe(fe||rN|E$*f z&*4Hxqj`J&k+|shM2XAaz$?EY<8=((hv3x(Z!M@kUIT&Fu{IwqUr~By9nQ7Qf4jiN z3;R>@p`+yMJq-!*>Jvw2ZJLW$KM7~NFb)FWwNqWZMsm2|H4foz)ms02B!d^$|MN%U z(l&ZdL3njzyw0Wj5WG_M2(NVDHB@+Fx*}guoPbNt%eU+GKVInKm5wmzBKhZYyoCBj z{^&S5Yaey-8Ykh57uFH-`>3_N{#zk-seG}Q3tq5yL&nzfy6&q;XYk5}Kh`+%WsDYv z2(L>SuOjjY!K>>Y;dL$WDwZsmuE9%i@baw=@@pd(uWP~2EL@W$Z9@6d_J4=Y+OJ%^ z#Qx9YW&RVOH(IUT?aG%Pceww02I1q>x+cN?3-ix)A`}6Z3`OARU-`Gq14PI0D*2}kc|Ly;xb3IJ|wG8|` zjO$KGn-H%j;^?e9-qHW_pOJ8uuYZ8vT(z!`i`VNypYeJJ;S1HebAx!ThX3oh>|B-g zi~I)|uk}QMDuPVI$4ZJo8PfXX~btn6Iz|*+hg)UzI27j;OdQpNC;`NU> zI_olByxx&;#%l-YJ)zcJ?c(*T&?meKsDF4yt-B_O*T?Yx6_=g63SKWUUjHKsmEvXI zH%{@Yz^i~pN0J%sb{o7lvxk@eZxiB0IyiVCotF>2DE~_dPl(r!ARV=CiGvp~Ajj>o z;84)}hg#?MUj^+X0^>#F;5%wvu>UHk2Q1s+YA$j4o7y8k&tAYY{YvpN??6YwD)H*1 zqFy7LkB^t&-~kuyyjst@cwsJH0DY*Si3BIY3mA}d=%{sHyLcTb;Ur%Lm!OP0)Vf`c zd=<$2l>7Svj4#0Vg~kE-DuBHM@w|fGOiR9iS3zr%uY&I6!FsD*zclm9*c0fgp@(68 zKk9X}`Jp~&ei`+o&S>plJFi~9ko8O6A8nYLV@GC*s)3|63h&d_7U3zxdD}Zf2VQ%WszTC{Z#5N{$xC-28B|U@;?uC zCS~LVem$Pdx3rH#JFmffte=`Y(B<)r>Zbs9k%C+aiK|D0<4g{B=&2Wqob}Rz*%Hn; zJ_34|s23KxI6ffsx!-^s0QVQ}3buo5;Qs(F99ONieiL3-+i7hE}fT*4W@H$iWvdf{ysKhh83 z7{9j>K3l!;MG(K|;g2!1K#!T6fbhGU;L8el5Kl~nW)VdnyWBQXh zoSymu?Yw3ug~=iMgo2lGvGxHzzeRL+pQDk(H-q%l`ueUMzAfR5BgXrJN7VX5T^xTE zHVDT;>K7hY>$?SU{0ROS?+diefm0BU+Zab4okQf1>@RyPhv*lh-dn;Oefx6wB>PdH zsh!vIrVu&geih??!50!OA%1%NxAfHd3miEFCggbhFFXSD-c;+;9sCNl{hINEeYW6j zwcbBZRriO582=H^D{Lvm_?z(K@xQP!-G|6w%D#|8j3rUOlcRi$9KOR`(DXB(at=MU{tibD3y+p?lEXr*{}=2~>zBGX4&rcb z&xKf12kz^)1mv(V1^(EZP}o=E@;7iSY)f)j$Rlrv9Fje2&*gA9D4%ZgGx*hDD-gnt zGhtr4!9h86pG)m8v&uwr2u#R1^wj##T{&c{fR@8@#5;m!5q4ZIEEPUj4i_N&Xtkkf z5I^kmLp-lAUE=aL_L$^0V*EzXJ?hhaeu&mNig8u-{1CDgXU5S&tfLq54ASwh?cbQMs)~&CVim1 z$;U#^qPaTFKQX7Gc>&&n%Aq!-IL|K?E|73;9~ieF4;$Qh zY~eM+3fC|60<@70Jddpqy{_tjm zF;h>z1Ry-A{h5UuQJ;D(iRqepCV%Kxh4%=*e*JHRA9RPp`?bHRf2nt>Kkd9D$Ku== zPKP!K`(w1(xwyutXj_bh3ES86oZO+KHk3H$#T2fRaK?W-_$XH!=DY1{on+7WV}Atd zW5XSUufhKpCww=;SE&up2Jznp|6g$ZQ{wVB;m`XD3t6K<|Kgrg>#oO=j$DlOSa!+Q zLlO12?)tvq>J`eo*+V^P=N;RP&iSBv3S0j-^?|($;Gf3BXpOIM4fl@a`GKxq&hHb% z5xpe7KF}U_ z_d>r+@^Kx~;+m*+{m_)!)6{EGclPigSH^8T%z17DYue-ADe#_Qi0 zXR%(s@tnZ=cM<0KMHowqWK5O>sJEgvTyJNQMxd6bk-${^!QKX zOVMMvMyQRixp+M!$w=;Iqy0cmH+~$HJG6zOhj86#vcNClHIeb+8FyeF;o>y}D2;(G ztlwaPkwo@YGclAmw!a9<-Lt@LhRql4jqPI*(eXUsr=8d9CTCxI5%i6s2XJW{MqIyP z{Or3_;&%2|i689#5v}uZKBnEyraSPU^*8)IZDp|C(l`NKwFtJ1 zB0XLw#PJ_Ndg{fq+;*$yeS~8%<@=a=@hTU`-#9(D+hXX(!2QL-AdVly|2JIJ7K|et z+5TVjIeBrrwa@*yI1WRb9mS_ZI}%tGe#Lcw-+Gf7=o|Tafc*#`?Yx0UVV@`Hal1x3 zuLwF<(N_|j2sdCs&Y`1Tyn*(2CTbTI(oX^-PRDp2h4lYWFFx$xS$r6W3!cXy{2le; zssNtF2cj+x!_`XS@;Bl6Bg^GZx@Wnx@2__891JvRB%xDF;;{8`pnj~KrSIdnh5cxp z*3KJLu3E>R>qL0g=A8}pIU#s4o)KszwDXPb4K7E~9rE<)su$l=t^Iv_#m7iE<90UU zDfOaz{!8(h94@#GMR-(g;`3if7pTp8zgOH1{%1liK9RWmO}I@V+=_Wr3DKuz%#A4p z_)b*MRBp7t;`5QuPc|PP*YgnuU8VRG3Df?O?=VN03_W4;Y1%)*xKVsIhkF=jjN5d) zqlXp`m2k!>7x^5eHl5gAVcSlnUm+Z|^9Ijw*3XM4fgkKu zh_JLHT_U_#$`IG5qc)9q*3W?fIo3;xG4250P44-X#kvn>ykM6HzMB>X@hXA;Jt`Wt zvMYFvXSw2$p7FBl!Gag*;4!67Las2@7thm>;D_ZWh+`M+PjX1{G5;@~BWdDr0`Hj9 z(Kt$D3XdDW%A2?pX$WJntJ@6s@jt))>wXz|8n@|TXPvP45%!jP`aAf_Rh#&{hYH=V zZkA+RPZ;-5ubW;9))UHCyczY>%4C6Gl50Nyw|F`ECQ(m7H;H<}8btA0iYYF%o>H88 zqWCZ3TBYMBlIOp3xLYrqK6P<=Rl>Rbe+POGs7=4P?O%^;jMGmDe?)Dr7sLtrP%-A} z(T>6ke-lpYS)M5{++dO@+%ABW=9)xnA4!~RzM5mASKBAmYCV0SLL`EVB} z>6=-eCbj^*zpKq%9h@dM;q*M7Ol*VjSJmd=`5VQ%(N3BGrydfQzX_+$2&aiW(kFov zN>?>b6Wf7eJ(~~XWZwfp=Tr{GXx^Xw(e62ZBm83QBbNv#l%1Scto1nj-#p5}31#PS zlBbEi5$`*-Img9Gm!0Hk;;9J#No}4Lkf(`|LEd1OOmmC%}4mD zYD>^AHZdFivw+upoQYkgvmyDqnDOEfJ|SLa*LQXCS`7MAOp%hni{j6~HBr(e#7o9$ zZ{h@>_Lf6kyymmN$k!6kyHaiG?&9^Zq+`6ELikv%53Q$(Os{br$TC#-I8xivJ+4JIELD6Sc=B9PCY8%)j)t z#eGh3;!_gN^7S$3%~4z2=M*PaaJaO`&k#OeZ3#Z7IB_NXD}dLl5|_UTulpD;u>(+8 ztlf#`4WtE!yfv81UwQxaE$F{&^JBd1de}gmJ#v~lL*od%CN0PHC@yUmio>gf`*@l+ z$k;&r9kpS|rSnb^o8dnGXY{;@A2VU9U*opi@7TR2l3eKia}td?OVpMXu6%zf$ymO> zMEFx`%gZF+6`}`DirDZ;^%4G=+VW9Q{(lBe5!5HilyM&7ZshvhPF{g=o6h;9`W(eG z*8($JVf+tlz6%LDjj%7lq4Y%C-G4#lqIznGd?>zlKHoAxi1IZzBZq@a+hGuV`%HCYa`&44;Z&3_v)W7Z^M}kAfC*|WhQf6ZNZA5#blBt-*DQNf_rR;k?3{olO?_rE;fnxo49vm)pM2 z!t^ihsXCk({eI=;hKx*Fz)>YW^&f7(W6FIU2a|jmxAh*!ZZzpe3FmS{Z$O=Ib@kRs zOC%YW`(1<=tF4=Y^$nRuylBl+O&0j2a?j;*-%q|=Zu=eqDR+p5UuC(`Mka2y`6R4w zJ^rID8MpOS=REyMG7d?(8oQ%yZ?F)*{^- zDECm41%63C;QelsHj*!w+uF;d+ymLNoyu=gpf%b8m4|XSJA%fC)b@Hjk->$>e;PkN zz_pDiievxE^a6_i8ZM1hLY!oe0rfq`ZSx#E*`#;bTX5PAdQYisOh$}&T;UW?C2$vJ0kpDwQUsP zqub}?4xC=4-L1TNus8JYt+oZ%Q6{7Q5ieSEvBc$X$l0Xt3BSo~v0yo~c1DpiI&GKU z?4V_g(g7Edv$VTI<&5?{O>SlLsS-zu4;#hg=8`56j=+W-jc>+no96Vtz=oXQ_!pFI zyV~ZSi#>UuBqKSSd=A2Qt8IKP_N(v*O?tj?au-~9?ysiU$|M1BntTxB)Pp>Deq)~p zuyRIN4TZLsiG35}@tvyr;Wxhuxg-01v}T25#q>qK#2@pH$-N|uacqFKP>TOQ`1jHN z3Ht5Hf8lW2hi2Ti<<34oU_g%WihTDK=pC-My=vvoq~ZBZDf(^TyX`-&++6@!(|rR) zjuzr{dpKV%FTwU6*d-@lf_NAsqL1ON-8P*5a`?P##DV<)U7m!mRbJ_8_!TMdnvwXu z9@khzt^sC`zy14{J2Z)Gi=LWyUCwo>ht(^-p~gHW<;_dyU$wg!zo(&p9FP4fC-8dJ zXz1RwW;Gta=Bq<(tmo#Y%b_g&0eMHW^n4U zeroi>ydIIS@WxBvpoZTA-meh;`fot{yaxa4tC}aN`gOQIp-{8jT`lFLGU)m92<9f9 z!{OkO&SE(q;b#)%-6hJaIY@b}F^0B%Re4A!D7Uny(W#m68;Y~P>AliJb@?g(TRDGk z@;CU!zJ1-qMduqR7d`}G>%ps)G7FMaB@3Qk?$0II;hJqs?@{pzWNXc zRpsC156(a356WL8yXzmCdpG2MG~|`~;o31Z#XV_EyT$l#WG$iGo`{pDQxeGS_ae7b zj#3^}8*fT~+d!HgE^@nz`q&%(zuYF(Zb@!YcjS_(zbVIA%(?!Wp5x#l&cpM2;$-9aZG zEseCM&idoFJ3X#Xfi7TZCe2?@hrb&f{_X{>rww;XHNP-P{z$i@PZ)oXS(*vk|AjcI z;5=x7BY@)oJSlYsbT70i#_wU>f4>Df%WzdV{H>Pux4RYma&-H1DTL`AmDSn)(?~=r z_mnrPFZ8;)zjdj^jh9m}j{ru|QLwiGKcyPQ$Sch>v!J8%ya~GW2;SF2{T%6dT92Lr zTfmebEzT|O02Mf{zde=HuPseY$JIRJ`RWYbx(N>~2iRBO^Y@$brnYqWt3c~XhQCVW zbSmbchGtT@bpakFm|MVtRO3k%IrlmhIUoC-jy@PyZ(Nt+nxG;rQdH!IM!4`!;2XN) z!rbAOmo4vm^N(?XJ;&fOwJpkUjHTG}kR5>hRYYwDg>s zxNLc4lJ%BS34c8;O|G}bA^HW)Lx(`m?1wN|TL`zQ-I*_M>TLY)kLy|ow|iusy|V(H zc0Jv%1Zbc=#?NVFb{lM8`>$7_dCs2lCGG3a$=m+aQ1%8hk?mOhw{Bbw9P7?srY>OF zijKwq&czdBYOuf_6)a}OY zk7N1LZ%$;sZgcp;*gSQa!`CI+K2ATH0NDY^y-b6MTb}{@k zXPVIwBdg%&e9cc2ho5#x>*xaqb*>gaJwo|`9mUYp_{7iW>8-@4s{xD;)?0v&cXdBp z82_&xDrKbagK{)K*|-^?<-a2=#+;g^`bdnj9kKRCHsRo`Xdupn8wk6Pl}$5OBA+Ai z5v|*$cL-Y{6H%15e>B@sYx;b|^ygQf!DWb!cn|eKeP6p6`Jm_6Xg*lPzhl53?J_Fj zz4TN9IZ;@8dU}G39piMmQ*XnO2k(rN@U}-F7q}$lD0CinHPwNpxqB^$9lS?;lT~~e z^xjC_Au3V_?~Sj6caqdS4!`Sg;hfbvx8eE)esziC{o@#~OC7vm8^3zK&8zKLlnyQl zyktfY*6wCmntOp)f1__+J>B6KcC4%QvkSy$+Xs^7S2Xo7es8ffSuPLR^ZJD*V)=&d z;rDOY^LO=f;#geU&(tCGFA1DQgAe2TNlR0=r}+NlOzyc)hqZ-z@B!eD_Sg-qGZrf%PEOK|z4_d1!A z3pjt~?+}N-6F}<}4&tx&M^)y5yyiahEh^?vp(fX6;#jO=RV`cfPg|ZkbS__Vm z%c~fZXj|Z-agD9_q1?}srIz#>c8u#tr@k{lW3q(NcZXgY*Q)1*B9S5E#I!<7llh9B zN7EBF)c@0pJ-wxkYnA!JK29@!O)CKnXFpztDM`AN|>M>;*2t-lmejTHg2OALH_zgA1NB zoF>o4G1)`zOd6Mjdf~M9EzL^h6SW4t-YdOQd9$##I{hi6Lti<40Dj-W1-UK#tMX=~ zA$%hI9sPB0FmTf{9>|O4i_?Av&I-TVZHz-c)a}E{C&^lje3mrkG|{%%TJC%jy#?hvzRe|*-pZkFb>Nr!$L2A5``H*-={x{guLvcIQPvz@H3FluWcrL)u)a^Nb ze5dDZ$o?&Mec|gwk)M*wkiHKt+SjJtVNuLcakT_}LP@a(89#@8t@jyL zUH_f2b0^f!RD$Ok3{B?efDnGpR~Ml-7k+Xaex@SrT+7elC#VDHE{XPX68Jd@HOkJ_ zi%QV{8JY?4IUi#t`@acI`aV26X?(hapYEaj++=AoKe2X7sju^Z&pBd; z!dOyo{v~T2e!fqd zpRV91)NWd`($Y*QKWC%oI9=Bl#(1BfjY#{E<>!c$q~)gvxCyVXmziet;0?&H0<^>A zS!TPu-?RksJPl(P^|LcR!G-k$vNc}~`|i}+a5?gAIo&t^xPG7m`FMPa@jhy4ACaFl z9zB5ujiu~j*F$ce9E#ApHjRp_11@XDs}>sv6T9 zs2bP2Y11&MnhEisT{61ABVE+z2W6g4b5`w+ z_&I5QQcypk^Z)6X{~MajPuO^XzJ;3u8{kbG! zbxbCO9><(i|5v=~5zEOr8GdD4`M*atXe~{KSLtI}Q{;882-hF9L$qts8*9q*6Vvav zG79;n_YK9%`x$6|q$iRDP*eSL)V=-;P*NgRng`a#*Ju#3t!C&~6jx}B}jWRU&iq&6sj$#83A z2V+yEazMI(#!}0HYaf(%%*v^#BOnFEggDp7$4-Cz9b{o7g^25PQ_^-gu?UBapTAq0 z+#ko<2V?od+P%q}ez9#2N<)%zK+ly_PY(8NKbuTl{_(P!43~d~zBL&>P0KJ(D%OO`7t#j7U{` zNa$URgq%E~7QTlhNHe*8Bs9L%j^QV6T%B=^EfeD#YyZ0t_P;dP(CMsj8dpbSKgk%3 zcC;U64CAxVskgs@)}sa;rH*+`+c&G$yA#?8XWVCL^0}q0V(c)n{GA5=Mq`f)od}kP zTA;l!Y104CzH23(H){n%kzz8WF2u@|~Dtkk$;U@RtqI&<3S-t`H_PAGevs>@Y)O}X~M z+PvGspcOB-pINLz_CcKuSv?2V6_N##;M4I-r`leH@7QN$$O6ny%jo*}#E}!M0nDsJ zH6`x2Q}=!!)QsJh=3erBVhrD~&lvfh*#LR8H(V=qTuC+frj?u!{bpthOOyHT0EC0j z(Fy7!fIIbmBv3B2Gum*nOn3 zZcA@9Dnk3fE^%oGGhtuw<>^Aubk;GBuTcE-OA`Gh_3NSb(U~JH&5&^?o=@6moQo52 zaZW$=o3u{q^M^5drelvh;gG!_cV@!=Z)oar#>@L4$T^`o!r!Y&@Ui`LChVsrCxQm# z`)bJb)b&`uY=&Rhk*Lp~0(eA{`??j;_(CnIx_miuLT!dhUD9-fZax#bfT4-{Ow5;FL!g|w-q$(p z0yh7d*e7gU=c1(fO1LgM^PfyJdik&_@X~8zlsEJBro-2Vpz*cgN~zAvlIAPn{Cg(Z z<2B9Q6`&ov9%bthb5rIAb_BowKpUI|JCkvpe@lA(C*gc!7UTjnqc=eJWq!0BYZmt1 z%{s#5B)?q0vGxMXud(7FD)arD<$G4WSXw8ZT#b2>JI<4QCCcB-k|}@Mcl{IAFmA=Q z1{c;V>Yaw`eE4JkbzSVouDcW0ZBnj%{mtcf^qg6pQ2rh^mlG#fqx>Y{A$rcN6ibuq zB~gE%*Fq?F;%ioCr(RCM{a+luR#rp4Ny5YU8fa-&D&Km&byk0epCL$lnZwV{YRGqj z@q5-qmS&~=V3yDL40re$g|wNLpDul>#ScB5$Ii76&zfLqR>}|TXUtEk!%rU4mIzJy z?lP@f{Lo1<>|*$tVrgoA;`ImJ%9$VRX`=CZ7S<(amEv;t9d%hN{OouToyvoHyf!^V zxDISWWzU2in`uNfVO6Evw{}Ar&6CeNXzflmrRgtinfF$!uMTFWx3sxeCw0(n{(s4N zn3XYE%=fLev3imcZ+A?VYiob}7R|S&-!5YI^UeCnwnd%?G!2>ey6ZnCcaY?E{k^p7 zQmn6+qWPBclR?s7biH5ilh4Mzeg4c)AQ`IMcGzF_Ou}~P(o4>6SP34bEo~VXkFfJ} z+_SIbSs6Kx8sj9*fvBG=y$si(xF!e|^xdtY?AzPb88`pY{ai=Y3IEI!cq!O#L+6ro zLZ5pi{N0>L+wXuUg5;bpvcR5?xhGj8XqTQ?r|GG@y=_(2@>SJ8YWsV`eYY6ysdWE$ zyxZ0Bu=$XSv^}lPNSc`~nfceNsLv)bb#-j$EQ_rfXg6fH*7|bk7%L-aPYNri@#84f z@Nmq;&%-ZlP1NpaA2G`r#^KT|T(gl@yY5HI`s?nS;BkVMvj7d2r9MEMv_$u5&aimB zIi8%8(-ksz8a`dH1KpIL%2Su+(BU$6-*D*+%OjVwQAjyYLm8=*10c^b|DrRfq@33x z{d`=`KELjh+Zer@?CYx76{f2BK=VM9fM9kI3MR9&?c z=fg5ZeN%#yBGt)|hHlu)(?d-K9~HXJgr-*ty-vFZ&(V9VO!$k)ceUZ3W7O)PR4qUJ zpOUH*)*j{q*S_zoTHVaKy4WLzQhTM;_K5#~s_13g=r8b4NZ~jxZ|pp$AM9)eSW7t% zzhpOO2i(0<%(KfdpD5kxl;d3vW5Oj*yh{&3wi_R}psp71?{dGAi?1xIS?Bq;ZY>;ip~g9jcMfXITyLB|gh)A>O;H z4!=KuFf@4n&T%}%jb65f{)g~M@ni7}o-f2i%op>Eagnes{n7FZ9>}quj$7xS4z6WK ziZAnvxiGM;yEuSrStE|)A#U_CmgNwBD-b7kKd5`ggW%aiFfFSG{z{P72P%>>MX7<1 z;Q{qjbWwj5y`UZZmf`w4E~2@goRO=tPMm>9JZV?=W_5tAPrV0_@#({LTL1MRK3z2p zy!-ny-UF8apL#LVy-{5i89n-+3`;O_0hE9r(OMb>3#DR(*DbMm6=`-fpi79 zI;jKh5At`Wrh#`9T=qEq58-b!yj#ccm(-KO+@8@!%BXJpIecg6JmII^0guyr9N)&B z?q|y`;SjGZLq%J0J%BH-Y!vx&zt|#%AN!PIXphUZq<_}^Zken%cx5>fhHtNI<{tFB zvcojR?RPazuWYzayKz3fXV%mU)kTIW4aYgKsnhS4L6IlN^@iu~%Fx+$a_S8zcxBT# ziifz-R$Tuf^;Us6vHMyrP6%STx)HS2;F{>vPr0TIKkW`oq4(Gu{%;mv<_~+dAzKHc zE0c5S(T_2I*Kr)L>}K%So&G1_FIMi&GkKht`FjNPX5zwgjeh=O|6@Onh~DsHSMFtu z7W`m;FDq9KuL<(^0H^fI9s_@U=zr4u(bG@tm_NdfFucp*?@113KZ&Ut-s1ANPJ9W! z+3z9kZK~0bAb%?~4V=~8Y9Rejz+bE#I_60p=8v!=44-xQ`$E%(pLUHdQVnYGe5L$jdo%6%O-i96{k!ArJ|nMQ+1upF zbYjbqP+uy0pHhI1?tA(F*}C1*xY$&M=}S0G8#)p_-O(L$+RoHkkuS!x=8gFX`Z9W4 zll4!mZI}I^qAi6aMT_;vxLqc?gq6o{IGR_sk$>syq($lget#^@5oRB#!(YMwCj9@T zzo`Z>?{O%D-5v3~*%1{v>t~LGia=icKEJY^MBPizS+$Dc9^a zD3`5ss-I}nAK_P*^P_Sb*D3|_YHs}WCxO5ExQ>z#_OIpi!^PTP_Y=CTF5Q!st9lj} zdB(s4_}=V`P}XnMNgD|lll}yzNBXNbJB9zB^qy)QgWK#52s;6njMc(`hkJgn(Cj0~ zBSfzweJK|jDDBtqF?8gCfpf|oZTYp3*7O9od`t_PT2fspN~t%YsmugF}n`6$JsoRayetyS!{prmy+cR3&s}`~HG8SP)xa_zO z{BS>jaZIOF+z-a?Q?odRNRA^n45U*|Z}vIN2Y(qHMV~>QBmJ;04OMgV9_!N?uTkK` zv;!%N8^6ch`aKMciy6y?Lwd6I_ntrL?k@35zNz?@T5 zr1gC&(y9wCNO>EiY4tkJ6e`9qp3!cFakABmxE@#0ejll5|5~`Z;=0oEv#0-j{8?`Y zzten5J-$|TZ9m3(Gx{&;$KJ+uk?QfQE0;3%5p3RU)M-(<>e)~=jFn3~pEvtW)Q`xp zWQ6y`waVf8Sxp|?zGLTogcH5VITMxvIv0W+_-@|Kj02)JIJKthnd%dM$T+^NwdiFcbk@L4XJ;{@CJv;07M6sN| zC*g$ioO;Ob5!JJ=i*tn}BfV-4#?rDURnH4ZuhQ*kPAv(idYA)y`RvD4&+)-}z#JLz zyxH3&E`LXG&+k*3&7%P5#p^w^Czo3bmnSLw=d=Kxqv6Bu8+_}bUW^+!itIXC{?SKybB@QQ z$IOIy8#(M2N3Z999erRMxN4mo?0e;f%A2rGoqV9G9n+u8!TS81 zi*XGxEaMlr%{hi~8$`Z5&NYeYcip|c@%>61ej}K;j{|J!bB3{(_#6Db;9Kg;jT`iY zY9jbm(%;M>dQ{72OEOl^0BIk-yhGx*a;_ciE$6Id9vG2%$d&NJU^VX4B-c= zlewRu`9p1K4|CGsKOOP_xO_+WUBLL|l3&RFM|v{oDqQAmKe2dXEah}T90TL&oCPY{ zy1k#PKmUNgH)k@g0trhfXC#+l{e_XgQcmvyU*k^BS1m1mX8uq8>@&D7S0~SRj78ehW1n)$j-s~ZtJ6%f0CnU>t47bYUm||1L0el+){p5f{~9ZeZm01^B-OUagKU zxIf0YLsJ6o75Iv^#|rLd{0ib3l+O>*|7sazdZr(Q{~VH;E#!-Q63JmAel23@fH4JT=-p=Oh=o~MI7b-~mvwl<#U1g5Uoy7lJ{6t}epcOsz^?QsHX?4_^ zKIC8e>XqT>OOO$A+z*y_LA-ydUQ-;L%C$bk@&ug+ePOTbobkE*cuvp#a~XI#~Fvpdvm;K>zRfGQG_22OkVkEr(3^;NK37s5Xi z*HwlDe$l6u59D(32p^)KP`UDP+CTy34s;Ij`50+4;KvSp2gZR|{jPix$|-%Y#Mkznx20}jSr`a1LzbK~PN3H(7XC?6>y3FXh=#99L4Te`jLJ9-LqH*(TGZ$-Sps&_lL zecmYfu%34Z>Y}IW-7TQ!m6sshjkxAZT>d5;$1#p&be|B%kayp5{Hk!g2lTJuocIg! zC*$SweCq*c*-0Yx7)n&)z%?=LYznssR?$mHrwtzTo;1WEVf(qSC7k4LZd2s>f;z=> z@SEFEk`aD$TO#~LbxNxsewgPYUbIaklLdYWzxN5hx$Mbu7khp#t-q$j=5soF!fbwK zw%8(vem=%kC5JR7&eggAC9FygIX>P6FgGIEB*a(ugTRKISN^@k$M-2cRZ|~FU_*}k z!MVK8TN%QB9A5&pG0Wpn_?xrczClYnDqrX^p%ac*74u_Jke$l(zER@Py_ zGlP*F5B)9``)I1sj#;nJx)SF@a#e|Za{R8~?HG!!@vdaP229A2?qb|2rH&lV?aSVR z-<62hRGq@>O9uZdBpKre`#11D<>?@PgW!J!@EdBfz%SuGhFLlc2uH4-q$rv|`8^F1b7sM?a{x{&7Y_h;F;WnIc<5?2xXR-T=%=2#5 zn#ZzETVnGu<8B+7ixFXYKu-wFwMI`5@|Ijwk)b`3-&=BuE zU#j{%qUy!WQ|7*gbeL1meIN5cV<#mXpJE(E4|o;%#ExU~j(B>D$SCx>X04Fkf(-|p zVNedS{*QRxyr^Lr zzl7h1j2{&|Y@SE!l5_$=F7~Yoh7>POe;+}~Wn4%9I1~+Y20Y1jftV!#; z(to&iI$571e@$;L?5OiRNoM2*SdjA^dVO{}^F(05;fx#RxpTizeH*yAwc&7Xzw=H- z_&2KW;f{S`UJnURyIVy@p-v}9RNr0!T<780XvB-Q`AOpPH*lR-pKzUbG~ILm9BZEt zxujA$G6@_+9@Fj)mB)FfgW?G`pDJ;q_*gfYcdVr0_?74Z^LleUsz2lUp6=KafDt+F z59f^r-6pE<1umW=Ib84@hwv7vZ$=QWzrcT_iXJpr;_^4))rIlmnQVyN+sYwfHWV^R zRx;70L^}W>lrJzpcjVIO;n0QKHH99IK8Nuz{;lBO7XIj~V*F2pe>bdKwF>y32LFMG zKMnpBVz&S$E~}u{`pV~VUL`bk9e0T6@6Bp(ZW{DB@l-fZxlOc2fLx)%-yR^7$ivwXQ*2)_SSh{3SeBVBSZTc2fNH(ENSi@b@MD zZ@2i>_V$3kMELz|X)}N3IV4vK<;k4>u$0jGFXwUnV%!6M-h7NDFadh=t*uej?k3M6 z?W{mR1N|J*Q2l(5Plca>krO%GyyTRttJuy!?VKc@p6A(j?^5ajYW71<{8@3MvjC39_^4F95cFNWM8;un{#jPWxL-EUXIk005c_-1L60o&FS~%H zbvWde`y-r1Bl3#*=KKqA$sC*;Rh{wry$WyRwlT}AO&$9z*-8AI)@O)UOW8PK{Eo7D zaJw?+x>|ne6yxFGm`;&mivzW*`It9xyTTYXKaJV*zv|qn8q&?~JMnd_Zdb8Xh}%B? zlW%fnp!<|xd~Ev^8kY_ABIA?1XUp=3GBWP9G5ntl-b!$lL)Xb7j^o>Dx&x<-vm;h$Ok|$v&7Wj4R5+5Oz8AySb)a`QuG{=L z=!9@Ti}c9(H<7RI=PX~cx)V3rf{!}Q8`Bg>o-5;VoA`Yg{07!@4*om*7IU6d9^($^ zi|5|V4e*e*pK{{uuM;!}c&=+Zu!-?r-68 zE~R_MrKy9zl=DK?oJPZ5Rs;hIf8;!ut#mv?C)nx;p~vBlBNE-v0o$ADb-jOZB-dAZHDn zat?rIXx^NLd4XSV??5ki$Rw1ruQ(Ew+qinI$gV+l1cN`yIR7iq)3#_y0l(K6|4-;% zxBH-+k?pMj9MbcLxg0MM?mvOv=S-QuxE!@%Ar7WDcz?&yy!r3=Y3iluc`xC;0KAhU zycg65?e(f&{~+GmIbO8=K@yk03GYw2T=+t{D)8mDYZq?{Pf(r(O+n{PM9@x`Cm-@i zYpJ==)~})mG0`%&bIDCY5- zRJ}<7`_Y2dC@-ENY@Z@=`5Wb3;8A%Ow5NNn_a=^fRcbxb<)>~VwLN!*M*bFb0>#5Q z2mVSVe+y3LU=Mg1SFe=T&m8$%&>6I_e$@Uf69vD-_aRQZcpH8PI(*yNvSYOYzcQZD z${5Y5bS-c>Fllj~QxIHDh91geT)q4B{tuQjnn(WC1c5}6p7)q~87TA71p^TebJOS( zc0P*q>}Wo^_!pF?A5?^mc0Ri3WB852d=z$s1!=fw(zlcF#fF?*6PZ4=r$i z%tteTVjd)!=bls;$fKh9=Yqe`9m;$S?rDz^=AZoo^UnpkT*NciOC4yyv}c)42k4J~ zXTl$P!UBv7hTa0q{}&xw zR_4!JfVuI42XVbZA>vxB)p}kB+^1B=eAehfB@Z(~PJ&&J$=EJXuAgWd^Cr>0;A!1zLE@#XYQ{Qppci=UR) z>vJ-we{2|2|2;r2A38AEp!}26V)%K_(n`n=&5{Rz8#*HvzswKzRr>t=7yo~B_}Q8i zKmLhjG5lbEgrUXlq-h8~h9AOc0N!22R&*_gUpRbWEnuP65s151v}yv!w5dPDyf4^JC>=Y(Ya#kc;N>lV4Q(OT{1^6;F#5)Gz4hpK z7mbJ4>GnaX!&*fG8R58lV^g3uP*t7=cP$71r+K<{?Y1}F|1X67-(bpe)69_@nhA}E zmPz0FI6>qL{3D%{&PwkraizE#fuHGE;7ZfI4D zuM;(21024Ffz~L)6^;`4BuT#L-9#9bV&oTg14FA?d}({=!iyZf#)8%?%U7G5ljN&g z2w$0&R<-y_0bV6Y3mt0VLhwf8Wv+^>dI1;S_qA#}E^5E~(Q!K`9Zu^-3o+&|ywPTe zwV-Bn$Ni7kWy0l1zePBvzOZItXjKcBu3C-=6T{cvK+BnDxAl_bD!wj$F%qTbYM@Cp4`y^G)Opo#u+(b>4#;{RRvMf+ZGt5U0Z zN2|qjU;N{GLmt#WFT(t3;adD2Whu9P4q6r5&K_WDgzleh8Nzz$%6pvsp~G~51|=Wr z$@iSQ{cD{T8}OcUw}0)^d&^zQUXO^T4#R)Y)Zw^aYs&2_ zNQGLAIlV1bkF6V*W6Zgbi+b3+biWzwpN63)>KDd2^G*E@^$Xb7hqIHsMdur?m1k=a3*&rF2l_gmnQ!o8`K> zmXBc=VQK#XSw85!9)dQ_Drv+$5BGfT;-bY`PF91??UqOS*M75pF9Y37<@VUoP0ziY z%+{+@xBGw8bIQ1fJX-mq^*oY~+A$>;d4C)J2gth7q8AAyVED0$TzCong`w12w2l68 zyLIhQgJ6w}JH=4PtE1^rUqTcpZ*ktD?H>Q*d1eEg%i~()3EItTyzErih2KZmhJu&FF1pjR74B>wns2@@V|FX(AhIif5$^)HY5zsz; zzIc?4DO2s&)ghMe6QneZ``;1o|1ozK;Bpkp-=5h$2~mgvAwd${iI9*W7osFUgoHr2 zNP@fj9}8UcUL@{H^u*oeoVdY7E)w+M?ymWMUEMuZyW6ufvz+rh-{hH`-JPB4cdNUr zs;hfuioB}(XLBEH46$P<4VCi+~?vJZ$tC zy~5od5BC}{e+T_3t-pO9^COrKy2GwBH|?hXN%S4Re+TeitX?aAoFO){r*$Iu<#i3J z{iwF0+AFTH2zW0dq4b#%U+qzKy}s(>X5Oto{Ct1p|NEaO0DQ2WsOD?>pRGP6e^FoX zWYw?8XJoE}=XtB;BuDkjnvi-GGwxY`)j{Jg-*9I`01eMmgiLkEZYH|5EsVDg7=oanufEepAn9+t~`0uhKIXYHcz$ z{JvceGV}M;>!?=gb6u}9QQlB4kMxn}`Wg6u^f}5O4ASQW?O-##S9-Ktz3OHjoPPhL zoa2ojHuKK$_dnDcKu!mRJ4<66F2h2Z!98v7)#@!afoF(03A#=hPn;BN}= zN09!Os!tvIQ<0{chrW(-nHjwyLw`rfULUlZ{~>PGww(&4&nuB%PM^Drmp&JLTi3_@y45_{*-;d20NT?fIJp_NaHt^9k%`M zbA23ED}BxfINscA{GGLP)~>vc&yfr7|B?PK{jd7f3ew-Z>b)5UM8|O1dUV+pqmSM{ zL5Ik-UD5>dO~311RhQoXfAm-Vx7TcM&)k0Zb+D*E_wfHU5y#0@m z?MltBQcuxeEgEg+4XxgO*YmXfVXHA$>lKyqJgt?FdD?XQm5}|j=k4Dkn5R_&{QkJ#sO+x0l&aMrtzJRHF2*S9`K~*p!;()jxkTG+HUsB-%H4&U#@0fQU6{qWmk5h z{Cd#yS6V*id@6PDcB`U}Ut8ZCN4vaq6(7II9KQwYu;~1~z4VnI^6`7k@yArWsN^^D z()T>T$48jsPqjA35A@OxT*t>3nd46%VU8c_rSbeuy@Brqb9`hKbNomz{pkMYcpb0O zmtGy>AA@-nD!&Pin|^@bSGk5ce_m~K{8%qN0C6pCwY zSGj{%n~rb5_>|>PwUU)9c?`MvGuHtH?pY~pQ1;)6vfp3iA z`|H2vIGz=^VFRDPOrP)jqs{R%y!0j=1FAW@%CG42{YpogVcdx1IL+e^QrV;v8(*t;BV%5Qde?Q*}?FRcfo<5z;;wl9>ATeA`$*?*WIZ0U0j zFy~kHc3JLK&RDlT0C55JGxQ-7kAeEB#0nR+Gcy+7c7I;W@+{DJCM81JdOtla|NqOMZ!gSjJhwUD~nRhM^<(aV2u z-eXD{Z#Al@(V~%GmB!PzqgP*r)f#GM*4`)oGR)E52$@H!dL|u?px+S)DmveAe}a!H z>G9%#!F1RkfINd4@2KmGI)Jbv#`|aBUmwiVtLG4?Rhg72GV;}l{(u2=KK)m9Hd-RK zoh4rSw7K+Ay2~H<&TQcSPP@JqDB|c zU-Y-C#m}hrE`RS9{ElbgTb6>i4BxAX->I@Pxz}NIqV|itf|2VFcoFBmZe-(6)oXD! zHpIUfTSj@W(mClJjf{S(LaVx61nYdM9Qfp*oOf`J^(m0N=Z%QEv6(o_ov(7ND9PaX zgk+{)UKz--9O}30r@yF~pgwrl8M)*Rl&8||RP|%nkbv)d&mX9O%vRrC7xX+ns6+kA z=F^&DT@74g_Brj%z)2#@T_M^jSErcz$J`ft7G>eR~x1 z_|N}+eGS}|W$sjcaDR~Gwv*oGv-Z%O>erp|w-Yg|cRlf5XXDk~6xAwn+7$o5>VkhC zyth6C-`MMRl!lG;QyKcycUDrf8nj8h4LpF)EeB4WgKuieQJjqgC*}+Ww$;bf|9gGr zw~^fQ|7`J2?XPgrVY(+;cfCrgzNbu(yL>snnI^Z&c1 zRc}%G{?|OO$E~7WVk|Upoo$t9@>dAI>%%&lO`UhM! z6X%`PNSueU!$9HZaXs!H>Z|1EWqBg57>Koi_8jA<_57xa{<`9K*_l~&t(*2E^z1E? ztL!YsFt88)z|XP6{}05t*KUJ>AcQWgS{4(lNZDel{ z*93MDK7UXZeN6p7My zUiF~QGMrou~xp&jh?D!MQHXZhbW4; z;HLwwZaCMDA#nWp&rSX*ic7B-<5^=zyfz4H0jzAQzZ$4H){|QQ5RefU;+TNzVw`)E ztv%0s;T$ubjpAwsPs>!!xMC2->5yHtAI6R-S6$zc8PT?-wHX1Mq98uRF#+H0knxb< zTP@Z(he*TZH~ajl3h^f$Yk5-Oi}xXV{0OBs<-ux8d6rdg=r{ zxn&XrwXa2j4>{jKm_N7MOVvdCio?gfAeV1D$u6op34BVgRn0h9JwMg7dg9q4c;NE~ zy=Q4W@1=IeewE;}2GCdjmcV+meUqq6`6jP42(bXlD5|?Ki>rAS7usLY4{_h3K|czv zdkf|=D`2&(jQaeJ$|$P4K8s5{L6-D|xdh8K7*W^YDuQc?;ganbbItfpQQiM#$raCb zrEyO({c8VZ^{f2`Sb2RJge@7I^rSBr)v|oddpfZZ8tGtWkIxdUrP{Gw4=kyR0l~L5FiP1|{ahx-dn%za(i=Yw zxH^MO-zQ0OA$|$`4aWb2UlIB$EznNs>n+^<@FglE{mm%>S5L$=ou!qcdVF4Ry@7M^ zJM8xI?*(&(+lP;+jP%zpW^oDYKwR$&uCH*;pO(t=UTIMFR2Z%8%4w+G&f zas4aB1@nd0>ky3pQASb2Qp2a7pQvYVoOX4H82=B!_J_YjWSte(H9nzV~NU!S;J{|9-OQyS5dD>FV_maJPKxT*zMJA z1?r_`p86WdWn}0jyS|*NCCik5lo!crzTm1{r8I&mFWdYF{GHKh(omtcs=byd8&`cK-=JGkK07mJ8JxQY|Ip|xfGLZ!cW+Uuax0^b{&1-R;&KzKp&a@WCGieDL{0do$nbwF~6S zlSdhP7L}1+rt;@yD2wa2y|aGL6nq!pT=*}$y?%PZeBtfyN-8704Do&zpIW14Mo^l7 z>K8sd(BDlsx1Xi+yw@Ktm@mBj-9u%hm;Ii@r&bi^^4%r)9>%$_M|OLCO~HKO?XN$T zkzQUehws!JzJAC*VP0V9UHA)sJoHJ=UyuI39`X13H?jZa`5Ul?dBgtLF>kg3b5-k4 zwDf=fFV)|ZLO;b|Si*8&|FuB<Y?)l*Gilt=I7sN zUZCAo>qtVzBSUe&9+Z*3_|hz{tT=7xdclSH|DkWOzTUX5V6O1?j_U$YMp4~|0xrGo zE^8bz^i{$29?tnja7`_kE4-b5NoAzJMto@MQRg$VxjqwIKYISKwBUNTK(0J_mSKn? zP)1SR!2y@nm%6i($p0Yc8`!O3RdCLp%=Ko&g1JK5*RZ-&M$z7lz*UB_WIjXaOi`$Q zIjol8+Z*o>S4Z^rW-n*HAlk1t56|ZfJA}$eUwluXH{CBqE`zuZ6kNyPoPSs<&wKOf zg7p^K&W0UNWfWE4ZuG|aeP^Cv*l~id9nS3`__h>i&vdOi#|6W>QW-_n)ws6|Wig+a zvC#~qztaUD^8dp`{{O9X!F=KE?qVvVsQMQZk;4fnPL5Mp>BEL51Yy9nQf5G4TOZpip^s^Xc!;jkSt zT0oSM{tV;Ez(1*VZ&~BdVXFlfbTI4{OXYcQA7a|oW_%WB-GH5kGnRtNHRIM{$OS-l zdI0RF;c1UmDQzsc9H$cRw@d z@Jf({@v`0C#=}n4>jF5NB4W+p9KIXLPCteGK!iSpN7W>Xb9fEGiT*hJcuVPd@8IF7 z1#+rLDU+^lNX^UXB;xTqu|7tfB2<>^WK6vTOfkV(SiD9RQV?bo> z^l;=Dh9hrox3Y^0)SKeWZijP7c3RzUE2DmMIfW)Q3F&jD;9L$_V!U5AvS7|!JH4J{ zr=NZ-lGAOcF`pXf^S_Ywj@72;mAzCjXRe*zL9)|NuZ-l(wbRObWCid!^fm&AEYFDQcwb-e+-K%VR6H0zt_iZivR{wbon)sUd?Mg!M?~2?@caSK zJ~-zH!Ly_wo*;XY!GrNXWEVA7JY^`OM#l95J#zGfI5yyFf^$z2T;GZH=JE9uWDPU8 zjwjjaNehjh)cx$TW*Vs8#JGP%Tbv`}g7>h-;ms&HOJ7S#c6u)20TV~CH0D!tQBpRc5T{rd zFk&5Ky=W;t?}OUHpC~)PlBF!ksr2Z)pW}#UNp^an8t;Yau~{Z1@gc4W>?U$ABQUPD z+XpunphtDDa96*4mt?0G9+`(vML6P@6Cd(j0pI74f%Wfp`{2a__$b2G5;FP)<^mu) zy|7gtJ{8$WzUOhycg%;Bl0R}+OXqnXHq(6elfd3b*K-rtN~a!2R--b~k1hab86;On zo}?}29aO zqo{647SFMU=O2Qn6TaKa(s3} z$ap)K=Q1jzsCum|o|c9O@k&r%*W$Y(FYxhU1@XxILoN?u0hCcxy-^kq;yPuQaJ>fe zVEjK)jQ>BrxF8;xXUOG2EPyhKs?{(&l}szuu{*G7xWfWCI+)eF=d72Z?aKZBozB@+|=p)OOQ6uGlzrp84!SxZE2kR9B z9>w>efx(|o9uVzWw;z6npW8z7aqEw=+YhcsK^f_dD97;F>moEync(>h-$mZsZlA2k z;j!n2X^4-9@xcG1jP%!w10H)lgyxZc{twR|Rn^i!KR*f{?Z5Q7VKi299{)9J7b+wD zHR{FaN1tW<*C=>QTVJDg#di_++3nM#3*yP@T_{(ypHX{J8AU_?XFjitXhYqzLA5>j zc(ti^J!%iZh4p`EH~Ue$W*K3+;%}(vRn%S<-%(UnQNzg&KIlws z#CN#hYk_lw-~V*d-{Q-!Klp!?Rn%}5I8^_u#MeI%m+=3i;QvRRO~~}$r|%m3r1Z9L zY`x`PUE#0`qmT-4SldZfd3yQ{QqYI3*yP& z-{AjIM*7azg8H%7SLl8w{QoHU|53vKf3_`$N1q#}A1gVZe&GLY8Ad<)EUO>k|3|_9 zj}rd>^P+-y^6LlwA7!MkoM!ZshV4?kL>cEBAaoy@cALIQwcs+sHD&iH@PZ{^8(HPf{uEHgKKFjDs>i19j zPWplNM(=6#O?BOa*hD;Muhnqt&mPUzpQ;z+Kdj#$T@z(uTy3|{5l^Ytq8xkeg}WSk zG`k$}yGGZiGSVyVG4)ggpRcc*pmscZcfqqCzKi(MZeQ#p`jw6w?YUt+osSD9*^WnJ zEi%eT4`v>Fy@lpEMDR4lci~s<_Qg3lJoel$9zGt%b0U>dbkRSJek$?x5vm=HZY_A) z;XPRZP4vY8<3CIAejoDd_S%Xt9(!C~dyz3;Ji05DkzR&*RugB~bJ`Nm>4K*hzANSd zzSv$ckDLL?Pt=Rf!^{Hoo)ytiN; zdF@0d&rm8Oy$s{6ES`>3UxNe>*8GizU$xtpOAF?a*GgpaOrtW=%WLKEoJu^1_XB%~ zIseh{t9JYH`+|AowGo*-SPOtM(wExytn8t_UO?NQC4#3E--Tbb+gG{cGJS4XZ?}^3 z#66?8QyJ-t`x^aN9uxPB-XeIg=5KVFrSZJ4t`PQ6k6YvL>pl4<>crg5yeX)%bZTmKPkTC}dF68{j zoM@?_ug7xq6{mgY9mkKs{6ESls=nFOALl)3yo`0tfjt_7G5?sZf~Qp2qa=CQtg&)N z{bBweWfWC^Er+Ki)mvx5gPi}EzJllX0(r7B=NUYh|3?``)e%D)|6zOSam0ghy0zD1 zknCa$?iKhrzM!im6*VjbBgE9Y@<;?T#-lD#A|FY+Xc@RDx65o$m zN@b)6Gzxg^x^&I6Nbq3HKW4k&L0(P0qxe<(SG&f-Jsz`?^Z2tdTd9mRo+V@Tqt7z_ zehlK;pgm*EKc-CZJY5h^UVlFZ*Jq%N^pmr}qspp@+OpRXWUU9K_OwIr!T*o>MeuDl z_eUO&&yJ+=kkwbFq_ElyEjcrDoYCHXAcpjl??v*{JlmLWnI9pAKNj_1x9{p0eldO? zTZ6uneyTp?kH6APKjB6#tC9OYlF8bB9}c&-?zN3gXWbAB~0o2SXaq z*Uscuwk6Z*QamtL!~8HfpIJdD>^6Iu})*^gpT{~N&m8kh7#{R+}wwx5vx>3_tK zR?o$b&>#7au`dYzw{Y$^g8$+Q;?L(lz95G5(@P`yX&uPePX+&vXbV*Y|I7;F&tt#G z6%j)k&-jhfKiO}z-N65hL;ior{v66*lQr%@v%KBVs$D+?#$t_ z*Fd;=?9qHYr%)M1jr$v(N|-${&pjahoFsTo#dmuNp1Edxg|_XfXV|C}!u-qxH{~LF?;QC5E$qnai#((vROJ4)wCd#}%B5V9P z4*uWDHtk2RvRCp|`w{+r+%P@%Zd;Q-8U#!f0LPW~@JUt+O8Y6fvadPJ{l+P;PZ6 zKfE4}_w&5%cVNfbh3(@!Z!_A$=1n;N7VMa77=f{EMQ)@&lx@eW@ov)QZJ>|gi-wPo-e%(9LBvOJv)k^ZaB zQ(OlKF695mpFkq%zduee_Tx3Y-Hq(8eZHfb6S)=kQ$77d(GW=n$8jVp{osKprwr%U z2=tV~Aj?f4E+W3B4;LbUT z^wG@aZ^vW&51Hw$SBB`L9kkO6Eesp+i1Gh;jQ__E40wE8EmWPp7q5Pt*MW_P|F<%o z_0tY*rLEu*{&)N^oI6SI+?a?*J*khjjP^2~WjcAf<2kAA(T}i^ez0yaXuriccd?d< z|9$WI1U%|WITz1-mPtI-a@y}1x;Ggf*ztg814SB-X9w%zl^y&U z=QY576!ufFWBfJYa_q1N6}^#OerCN)fX|<>e^9EQ+G?Ih6{j7CTqiqWAC?)Z7ZHC# zCqes}a0q0yV6ODR3AjSq^91DktjtI*5m%y~nCp1R=p?uvOu!Y=t|wqEpp_ZPWptwI z5p9RLy5RkJg6r)BTp`!#PB@!oMsgvhRU2_30xWg|xJ^@!qzngFs%Z%hY zPH-V_5pco(Pk2Bd!~cHK&;(o|*W*rr|F<$DxmpP>5eH0o1TqE-uJ00XsXJ9V?B;~0 zS!N_xYr*w|(ANman8I9@x+dTX@plt&Er69t_B`AFs!>aK!GpX+P=7OUuJFH=W}5L` zwA~VSXFz-X1oBNhJ7FQqBpw;hswZ6b5%HU{pT3-*pZh`1*$8b7u3(@34Or-PZ0jU^6d%YqmcN10{p*~8KRGj_z^nb`howSApC#j z|0d#b#@7?z|E)~ok@1nPA00tS${|WH_&#>zKT@Fj&|3mJxFaiGG$_(M@KrIGs z7~}t4>iq?P!*x=N>QDILXDUG!#?@x?cX=Q-Uub)NW>=O;?YyeF?nIC0)yf-M=ll#t z8n$0Ovj@)E-(q-v)#uE3KB`~k8OJ}fAIo%bGz&P8XAL;u|DS2c9M$eF2M+juE7QTD zGE(i42lXed^t>BS$6w^no`LVbZYtiNkN0H(Pldfu?Lw6q=%EwdBd=gKzq-AD+ux}V z6&V+zZ3aHzGFnq#8in2mFg$2Ob4Tg!6bSi&;N&R5H_qiRiM zdtIWkACn)zjytOamR#z2*DJfc5Py|je8r-c&tI}1kR8;^ z^C;u3K(@b|eO}t%u^&5Frc)o}S&TlEJ;QGdc;3VNubHP-|Cn)GKL7GL%XIRPhY>u8 z`2wCFJb$9kJhkKIaq{u}$ugZh`-E9C(_uOeYU{0KwBl@SKQq zJF|Z3ep?Pa$cP9E|Ef~T$E>56kj9-!XXa^N|KWjcAtBM2VED?xqr#ktq9es;Id z1^OHIXClV`R;H7OJcHm7X@1J9Ez)5()%pC|rX@C?Pd@TXQkd-f;?o^dSG$&+QDCyo|87)wv&wFmy5 zJIjFw<8&+2$&+QDCt^K&(4Lp$T&%0N`l%l`?~un|OkBq@ojlq0xkT`6$GJN!4xa0L zZaL`ZWtQpW$+pi}=Md-z*ZfWVoOv2lE(e~ES*DXG+dh9Fc)r27Ex^HZuosjA&#x@g z$s_Hv$S+N*j`PeMgo@K9{=}S<*tmg(flvd@#c3m%mhxk~VqmIKda zEYr!8WuGTqEO@TRxpyD3G4mX7 zPdV_s&oUi6YSuKm|%&koNm3a<4tQ>fLWSLH$Z2SD3;Q0%Ao`!SdH{xj}c-rIK9)joT1Uw=0~&~ zrdM0(`LfBU2`-HJCyRXl!9T{H?+u-gn%tLVMsi^df!au47YHuo|0my}kKup+kiN0G z^c|~R^@sewl}Yu-@w0A8>fZb&1|%NzA#0x}W6po_W6X1?^%qL-;p0zL#59I$RuLuh94?8~5 zyt8wi>ty8rAv1mD(!BcUtV$&wk$<0Df^(l0JR=kFIOoA9!;V{-R6jLDJJI!{T5M-k zL&URD=;uY8`;OrGEA~9IzVExM|GdF6L)wdKEgb{>ye4=)z`5Tt&*4|Z)=#*d`I2RZ z@^ltFp9!9yJbw!Om)ZQoH^%14v@d0lVEXkG*eM~CM4NiESF!2--3b<1Jp~dzo9gWk z=9*F!GWIl7kayHxrrtK=vwZ99Rju(qXZxN~mt_-IO{{g%&mWRpJut_0uHu?fOK|Ot z_eTh>r;Ptf#^r41Q;-X=vQe(`V=k_<@M&k-aI z9sKF>k`$Mwhdu=!Edv&L)%dY*!Xk3?!?tk zv?I*_PZ=5L!9V7sL|kfYrT@9w5#|D{Y-c-C*AJ)|(%7phg9I0H{!?Z#SCjJ+wIdbT zhI18@?4m}$gtYJOh>^|^Trj{vznhP9O9a>U*j(JU6`4z4D@k@yqYpybx8`Cyx=e6w zz_~9mSJNY6*CV&BFs}cS?4m}`8?NfYj&{U7N_$|O(-SMzuu=QkF1VDv|A@JoZ#Vuh ziT!NiHFxR@YXPk6oOUm{aK!_0A#Mrk5p(`i#JK<1cCqzkTbBCk_JctsV^N#sQQE*opJ&8;}8@5fxoq|AAlWe zYo?(6RrIFnZ7Sj*TW?eM$NQ#1ss6FQ;#Xh`o`=Na@8-B>B6IvLYtGUCrXI<%W9UbZ zUlbo?1$-^>o{kWs-{R_m_?+!(>M0~Uea6Am&+^ruwiHS)iti-Bhy4H4-o&Q<^IN=8 z5TCn!okg;X_CFuxmO*-rkoJYKIdLI=3G{|GHuYMCM4R98s@Qf_)+(ONs|Cn7Yw8s& zo9b1@fwJBAM0;ss&R2T7RPfz|_xP^2k$k4@lm6}$d=Ep$ zVCFlnZ9#m_ICU!4|6AF_S1Yt$``~GjY7C<5_X)u_0y3rvzOf!g0r*}rKj8G6Qzx?Q zSbXT8q`&ckZx&?0Z<)<+wMRjG&g&?rV*GDqNAj7TtL*Mnto@tv4)*Wx8aYeYLDiT2 zS$BH=oVgaYV*ZkTL>^))a{g1rxWCm?1?k7#zA*lW>~ycusFyPQ9vRo${@Do`30x;l zT(60G!}x#d_kj-l)_WD;FV#rMWjDTJ*;H>Xe`&a^EzM=b;3Ny8I8}GFoYQLJ{oYo(=ePc-0KcFjNrxV%?a8uZ@HJBu z#8*%7Va?w(W1Dfg_(HCqn|1`tj=|SF;5$_CwSWxa_m3Z00AENxe%i?-yQnez zqnT&OjoY{#sym#XjmVTX(&LGO6aIhNKlL&E?;rnD)^kJuM*K7l{@==u%}KRw>RZGE z)A~Tx4a|AM1qE=1>GLX<9h>u5%|iOTT|EJ)5p#aX1>r|)x%(7#1wtxkPZKQhtf%RFO^8Di3%=wQK3g8Th zcZzGUY?PasFSl`6cO8dG|5994@a+K^2MNCQiN_)0Y2*0)s_j(L^P9zuST^yw#v#lX z+~=Yg`4ro4iVug3&dhgmtHg0^=)6(!u`D|lAAGcm^JgIkJ8K+v^yyizdj4$0`m=Y( zYvibABi^6wdHxKnX`A^Wc3d+$3)f@JIuLv7;CB@KLbb1Aa0L44iuczA;{1~bCe}~p zJeI7#-Yh$oepLI1ek$R-8pzx4f_0dcN8&GXuvO4s@!Zo?YvkG*oDuM5zwqlqXVsDS zs)6xK)ipRD>yN5d#X9H3UV5l%Ry{m_@RQl6@q5xwFQK2C@f#itj{7Hnkyt-EXYPoT zi?J5K$`17pvVDt4k2voVoR31*Fy=g^Qvv=#Wma6A14wpJ@%wLRo^MLc6#C|N?PoU3R z*<@#2`98}j#vjG+3BIpAe>!ETh|q6)SwcV79MMpi9{$9zeiiKvItl#RbokWi)MJRzZ`V8_pPjvP*u&|~ zS#~TwRey>P^=kd@bolw{U08qZo=nJRXYpKor;_aS*}YM2l)ct#L4yneal+0AobZ>^ zv0mP6e!EW-+ZWX`1>N+b2fw z#5r7W!sk!t{D$A5UqZi<$8Jxb%d%0fd;U#76^wG#N?XJ?OYkj+j4iCkj#U!o3DuZA zOpohXHu2SVjN2ujnHQgqxF+b|&q2mpg7043NmBie&G;`)zS^z`aoHhd^Nj46d^A5k z{bj)ie>eR*!S`xHKHXc~_U8+h9oh~v^`|3nYtKIwoEY=Z*o8SyZJw|l>RNVk&hS}w zB2HK!YL9<0=M0SbXNbK2sUs6|=Be))$OTy0i8xKao`KApZI?5U|DOTBZZ^M@pO7<8 zz0W}Y-^xzJ2}`N;Ipa{liTVE-VjiH=l?gfX^zRv`knEzyDjp28KYIR9t>SH`bVYn8 z2|nciXTVRI&F}O=BKu>bAa}b&{vWc78Xsx+T=qxv^~U<|U_NignS$>^$hgkpd4A`A zBWyj_;eV5v!82`^04OwFR zf7;YUoVHiHIS~t3*|9k(nl$w;#{V^byG}YFq>I!pA+TpG#h{-YV}n;}4v_FUHr%7b1tO@}z!oFYI?=#~g{u zV^!3)vka0=-g_o|^vpV$B~d?mpX+^QrHt?Rm!6*}KIax{<2I$Q-9zg)u;0i|s1-l7 zE(7`s{Pj%C`Oh@6Aj!Y<9Z17g9`!mCv4EAmvjjpL#ODNW&=!dY{u_17+(+X*{H59a z%g%vxY%#gH2U$Ie{P)aOESvmKxPP?vot_gpvxVSm3mNd2X7ew5F_C|?y~WwTXP&{b zWAf2+yk>S5d}l)j{H5i)yj3E;ynbh9UzQz{kDk*t^8&$lHDtg~27F@^@#Xb5GqD!H z%8toL&*7SRliLGDIHWimMawv6XSR zKg0r7c1%8c4&uxaf)74_rWpTU@q8k_{Ou3pe=9pCUn_jipDD)wGco?3xr6KX%9e@v z^0z;X{~R{yFi6LIG453}m9?AV+lzQ#N@b0WT)b(GNOe-m-$?H98SVcD@cMSP99 zcIIpbS#6o~>XwN(^R~}fC$j9=oRn3j{!Z%wY`$a`a{jZ<5u9TZaN1n0iWVGk%&aq6 zc5F_>Fltl%XjWID&-3yAT73-v`_~jD;>_PZFK5}YIgxu(8*yGDIB$ZiesoCv=U;P8 zBF_Bn^KO=na@~35UWl^Q-R#w~qOcL)or3RS$QY!K(B@zBVuHL5YtdcbSpRQj?<|9S z*L59TklW~HxSkMP!*T8s4Tb;xYkSAOu0zl7+KAQF4xeG!q&L?*ujb-B3H;rxOW+4u zVDF6m0_><;#5lf+BPx2MdK)M7vl2Ywe#6)9h&|6NqbYa2As1j}N9srT53ECCdxtUq zEV1tYy5_O@cq|lVN3a&h%8uldegpZ9z|MUD89xNI=3n<@Y(ClQ-TM2AWt07It#`2P zt1DW6J7f~n|EHUNAg%+Lg*pG(RR!m#3G>2v`oZip%O+0OdK}By6ITKEBvMdn&e`~D z^*MW2$l8ZFukRQ;j}WQP+4WgA)we7EYB|MqL|6;QeEUO&X{(_0uU{QI|EkyDP*6T4J^8d5RLX!^t8{)4s(CcpU@twl5Bl+xgM2b)3|7RorKl@y+-y4c! z>o3wC&qn^=$|gQ}y-a6#u0E7$Q?GD^KHooM_L)L|$p6p2j`?mJmB5c#-GyA2I~)0b zD?1OLxr2b5(8hxfBH*os1u_htV57zw67IDBWEn?d>s~;Utx%7jz zfL3-M{n&ON+&5|V7lIG|e@>M^BmOOu67%VJ%E31W{@=K7 zTk9s~)BfMZhq(YNI}cxu{?M+N4>|uiCKm&2|JDZ+^XV~|ix2bvR(1%Vv>U8H%p=?O zHwWX1IanuWHviUd6Y|+;-o{T8c%FY--$ZuJ(mCzN zoSrN@51*}H=Ibu_FbKY8;bb8u~pl^voV*+04dMvM9@h76I1xTAgoK5qT)_P>B-=k@C#BfZTPTp0h) z*>2V5`FA{$z^}8`+*}y{TiIFT*EYx`wZ(jV4~zxX{m=T~UZ)-D-f{X9&ACo+z5rR@ zGUwd~7c_o#-q&Q#8!S7LQ{CULJ7_H@`T^F7sWn*sRM@n0iHi7JzdTJZ!N%@06nR9M+$Z9A!|0syl8Hdl^on^=5 zRQCx~Es@&YTlesyjm$ZEoz_gqu}r|Q2ByE_-x0$SNIIooG&9wIp5|L2Nv|2-QE z;8b4B#R>m!Wk+)A^{GuWI7J*V7vulA;`;x4k4VfJ8i&rs_}|Ko$!RT+u6L0KnA-=k zZs2;q_xr@0q4DV4t5|j<=UH@b$V`2T>;LE83Rw>^=Y7eqZw`%1=VC2@l^x016IQV^ zuF94D=x)(IABU{zf^&O9eOe#rYM+QVtZcJR#@?SI*UzYV3}wB~Vpc_^=Aq{<#*SEM zF6M3KBG-U)yuaun&tJF#JI`$dKcYNeC_9ca+3w82`~La^pb0Bjn#(#_d0Xc|y^KGQ3#X?X2!*BT@IKzLSZ^Cw^w4`+9(i7GKSlLcJ z+19S&7u`=Y?a3R0^Ha$Bl{p`|qX5p3yyD#NS$0g$=0Sa`cK40o{LAy_?J78T6vXMw zFV3sNvLiXq!TlWD)4d%7zdWxJbIwD|HSa*?d^Gue2tw`NJgfzz$({(JH^u+UN+Mmhxr=N^qtg~r%R}0QNA?q>beEjIx^J#K)=jMEnWk+&$ zM}O{Nt&ZWmUvMIiJ8z8O91)Y##sxNu>agSUhOz9(cBk$5v6htTeX!ufod3M}%=zy& zvFqIuYLDaMoXN5yId!}h*c{?SKM30A63E&tI436L%o9J%!(4!soxnZ@K1WdzFYa>` z@IDKfZ!zzG(uwS&rFFN{S6OzXUbTJ9)a(BQ=X;R#o#4DIfnJ%?&55|k%8u+$dOc2N zzyDNl{_Oelt1#yiePi|~)jDO*x9t=$f|tUxWm;*O^1e9pk^i@4p&o)?{-xe!| zx}ra+mG50()tjpKs{U0svh_b7@!x!r4;Z$GS$Fw7zElTKwc-21YpU7PI31l76}f z{ak}`?+(iI$6T0TJs*1#XFhZOZ7e%NPd1y$dQ$!JX2FTLYkq&h`D#I&?tbuZmK}>z zTM~jHed2irf&CZ)S(BM_Z2N*Zo%zK1$p2f}u{ceiP&C9T<^kqUhpgp-b6x?QVf}U? z%Z|m_KFhAm6Z%{OSt9>1Zr=hpRitbE$0zvB7{8^ChukeJJA%_@6EoW<`fE_{7z4}~ z3=_mqf3*U^KE6XSm?JA%_@6EpSs zjnF5?{|j(En%VsE$@_cgxOxG`|5kPcr_ClZr?Nv`uw(tx{7124zH$CM$U7Okvf;4p z3l8`E-O$D=VpIJXjeS@m-h>5cbJ#5_HF^%|AK)* zDe7L5$@LTxFE6-ZuelyF#(I98UeM12&=vGG7xSz0VGHwYe(Foy zXA$F{T@e>8M4o2>)??HjiueqApMN&qb57DJhV*oo(9;56J=+oE!$_YC1SiJ)3tkYM zPb9Jv6CBB!*p< zSp+BN!fISb1gFj(Do*sDg}ASg)#Ji?cz>*=!ZkE;uh+ExS9>=%-@Yt6qP}g`kn0=v zu+Ay4VVD!Ea|Cwesq0*g_pf5dy3C5+NKXxgp5Vh4b`DDQXPq9qy;%)u59{c^3)`{m z2tC=XCF@Dm=P7~{_I{z5f0(r}A*ao;xj1{XY~qY#4~>r_efAQZ$p0@C`TyAs6WK#c z>27z|vFr$a+H7T}K1Ke2;hm6$akAO`*$*YqCsVpPk^i@{Bl@q-R@(k6^8O2-fQ(TV z4|BoSCb-^OS{PS-BYv>5iI1<(Yl~c@em1DO_lkLzq@tjD9wh2{JY>vazU5P6U*9GB zjWbWP5V-&=oA`KLZ8o32V!-ktt_kcP#{3JhPR?xpibe_66*8eS&RMvcWk>MQvmF%! z>2HPL+YA}FUe0X(is1$EIrB#gUu4;#eENyus*cZ448(`LMxehpAp_URnay8WH!+{S zTG`e9K4RI#S3Ah_a{Wp^b3ep|?+ZSRYZvacc%HvsNa^7awACD?271-4Ai$ z&&;=|2X7g8F?(L~w$B3u6x2ji;`doA@ z%O=0U^TuKAOX#4oZ;>7LY5tqQ?29g5OAI+IIn`NI|b*m#GIjaX3;GyoBFZK&uKf85htKuaJ#%0 zGM-?*H60TAIqQpE?GpJqD?5}=wa{QT)3nEj1m6J27$^9qC*tF1-^DkIW$!FQ8S?pW zYHrY8H;N|(Q$HClxF+FTjFZjgm)u;y^WQ@9F^gui>@2;h>-3l_hz^Y2W(dBekiqj? ze#z&F^k!|2Gd@_fmSvOP~H_&DCeI)ph z^Iy!lZh!5OvH5II)phIW4_ICq$d>c`i)-U^T7^pb%DhjAuJ4}E=2?VPcC(6&Eu{lVgf;6R?-Z2sEcV_q+pnSEgnF~7C= zAeK$_o6BeOfUq77F z676<4_8Hg_doMzKyJ!t|#F2`w2pFzO)6l92XfZx3p zvtF&I(tn-f?Zs%jR(32t#KXjg`xyj$&p-y|$<5|}e_TO)PJg->a{*R1@#U*uu&Iss ziUl8X{)=DM$MC=Z{h$KsS4Enx_E*BPBlXu5eFSZg>_#!pTZR2y?8r?osfv9c?B+KF zv=#7z^s`Fn=XEfA8WiOJP`iNoQ@+ThpAT4eEdAK_^{(Li3NqlQ%;x`aO#yt$N4fZZ zVcEo&uYEPs1f;(onQuu7^;X;BdHxTZ61T6=am&1|=x<3QmK}@F)GyjP^I`nIL|g~(sR$dYu}dq z12V8q&20XUzbC9;UAxZqw*>3|t?WqsH5c`Z5p}@V12Tl)|LLxT`m=GQtA5XC*|GR+ z{hllM;QyCAY}M!aKfRQY&&HQ7KKOqtJF5s{ivbiQ1QKUGDZZm}N)S-?5^74G?@|A!C-{o0X{kZ0mCKO=H=y z_-y-{EcoU_Mk(|CvP&X9+q&F*D_M4A`)Z*XsD76TzKxI};*Vc0Nl?FByKcVcS$3rU zT8R36R`9|9FZopH@7)CY$kbsYC*Ubn2Z)Hc; zFUDGGljHxT@Xt$Yo6l9h7IDE+tiiL#@D2ahVX^C7);e?RaeessrlqJ~#7ovcEQSAH zYTBma_-*&t`jfTG9AaF*6#n1Jj;vqBr|MVP-#>94;@zcfu=m1#mFIm7`}}cdt;>r1 zADpUe*3a>H&*l2R#my@;!F7XjjCGi%&S)R)S$1UmI?kN0_}U1*u6Tbzpb`JKZ86(X zW-D^nUvHKjS%1fI`$Cy!6s-f(z@c zmLgvsaLp*7Ue(>wU0ldxSlJPJGg%O$x3>k~=a7NCxaIq+X#w@Ba=k7- zV*TIJou0p}rp5F8zy4DIpUSm5_?996V`WFwD?NW^S!LGSvN|}Ih>6Yr>*K`rs_%jC z;@X>KN9fIDAGCi*yYrX6jr}{EUm5#e*iXWKW}v?cdjU>WUSR*1wZwajm(Awyye@IQ z=@|rc_A0y-7Gr>AJ^-h zg70C-z`8lJrTlb4K07bt;(MB9N7O4lZ)q9UF$8)Wj&u1sfRx`SQN7w)b=xt_1z6b; zdNbJuQ?FRZ5bz=Azifq7o0sxGOr$qkt8TuV@s3g;tO5dG;ms=V0igEk$Jy~`{JEP}~Ew3lI8sXeyEEe?mYV3NJwe03P zoMlJo&15@tJug2*@FC~FydCouT@YJuvXbJ~_;J!8<`um*HF*2$YKRjF>wdd;j=H`iq>J3?x~jy%Y67C#WMR>%u*s`9x0 zFy>!AAt)+U>HC=a$!t|_{fuGR&UV!aqjj6mo)1vf-`HZ05W6ZyN3-j$#C1!ptGoRq*LoUF|CcfG-(DJF>y)5|NgN$zlUs*wX&h;P5zhK#s_1juA z5Z|YQ?uR@6Qx` zH^#Jk+&^@t+{Jey%O<|sS^3IrK6Sl{@(WmRyZlq^f8u6U-ssOp1-E9=WpnZ9mh%# zO}}}I=e>{EeFx%^9qjYfkMNh@hx0e!+}ohfgK#clvNgy*Zp5*T@CPNB+x!6i{e#Jn zbFb&U{?FjI(+kqi1wudnhu`pc@SRk((-P}P&lI@y^AO7>{p4@o=zXSrBX$Vt?X%lKk^WW*K8*QS>=1l!CaPasyKejXKb9Rsf0V-|z83`F z+mP`k^VK*%k^XG$y7@j~*)jQa{eCF;kYirCyWm@#h|kuplMlC{2xL>-3%jE3*R--R z_Je~m=>_rU@87h-OxeE`4`7E4L_76Ytit{R_7AcDnklm)-ckLc9BW@zHpuubshV{X zv_EcrtiRVlo!?JVPM0|T5FAH<Z-G1{5pqjt6uJvPwO z$&kUx^?SYGL(YHYzb&4Z+HL>Xe6n`kd=Im1 z;>&L*S||$A--Ch=IscWoPmbAAyWJPFelu&=%{PK&$Iu_;Scz|_;F|~;Yb_r1_g75) zW!A2nZx+jr$wzS}`mgFE{>p!1zaIO8*oR`DjyMuIfQsBmKhuSNkegrma!_KbR_~bl z$!uM2{lI@%+2p6P*P*C!idcuT@;SlvI?h$LQg5kR3(IdE%E}K|c4*#6bG0IUy(_qo z^Ir-7V7YLw^P1{)!t27F>rhr=F2KsB_T=i1hD(pyO@I7>`BwS32E3NV^HQ~wJzvX? zKAr1OR#j)&G5CUU!z#>gSbMu_cgQ$^`RWwKv=^34|8=fIS+yU_j;Pnxs$N&^Ex0h| zUuD+1fi6|2ZvpkHa?Xx;d=>h;l^vlsla0~!x(f3df!;9YUv;|B+eZcHP34?je6U4U zb__nQSIlPweBB|V5A)SMr2sya^L6pTPFmT-=gOz*exa;3ZB)PK2);`p<6nYrbmDxQ zo>6e|!G>Ge#OKPVGGB1L75as0gFfonU)2t_eE{}upU1$!>;6*p z4osX+(=!?_{S0K;vGju$Mtn~TzR{4u>;F>q?n}(4XB1p~m)c>Q0h-s=h5mz}S2@hxZBk@~aO^C|l#*8i{xuZe#JV#Rf_jx!M8FYpPesq@nJ5&%8smG%7&QweMi(Ua{jA+XTCk^C#qjtyKei2 zxd1CWQh(xlx>esZ-)iIpR_`YG#wXIBtz9SIYRm;#*|GRc{jT0c@FC~FnlcTzZ(93_50jE8vHY+{xWOV%?JN) zWyj)E^$YvE8o5FA5g+Z)UyVG{YS?2i`>SD(S7OXvksCNwIYIok`V+kWDJU`3U|~%C zWVSB1e!gSbIpfmKbU&>=xI2ituNGbRvifVm^*iPfF@82%s^KMOT>3mdDe!qaYl>KA z1P|pS*Z9n{2J8RUG_W{cs^N2qc%17g*6hJDBY5aK1I)_?^|l6M{xwH3&)%&Q@i_Aw zYYt_Z5j?a$ea%6Frzy@A`S`sjCE{`BHP#%@G9!47MZfaioP+&!?9I{czQ(!839VUx zeIxcA*#E$MbS>-$1bQpC7ph;aIZo&UeSA&dKzwSS-4f_SjpiNk{F?JwW`sUk5YM@S z=Q5mov*7u^1UxF|>Eglo-^z^Op>?Zkt`R(U;9R~AFtyKz33!xkcJaWrTA2|%wBB+J z)+5+Bbj{;97x{CurS|QffJfOv7Z3cul^MZ9`PMbU@2?q!bEjDxFSYNA*gQIe@8X%n zG9!2>Pq=1+&<}F{YgRDNeh0_q(HV0W&tjHI{!_-6nf@UozlA={^;QBI$e)`nwch{} ze?a*OD}w|x|6k%|$RyE` z`my6-Ww*t=cL~P)CG|;!`Y+Y!<(PbSUdT~zC3RV5B$pUR!B++Csbn9>ID)wvw~5JR z<5(Bh!7MY9OT_=mf7*6l(gZS25?r%la@qLN#nqZ+=GZB9SGyjV1=4>hZd7a30v?R{ zOS&=7{@2B}Q)idjDgKAwOlByKC2%rYZ*C~hlxM)1tW zxgriY@W%u^A#qy?#=cf&1P{e+B?|=){C~+?te=A}O288mx0S&ETbU6&t<-oP{oOD5 z4fhDf7_qbw_U70-Vu!y)-}BMleY7zj_3A^HKKT6-j7ds93AhV>q5LakaeqS2zXaoG zv!xDtHnu)O<3`+*IglBl4~iSr?+W_&570x(;&`cpO|^Lwx0SYJnUP!~UPJ$4eVqasBJXg>7csf=#A~Hk|7T@J za*22ieV(~`LWc1Bhn^dgD^I*uit)dd8ObH$HP|8Mg8wfS{{PU8F}d=@Yo+l2R%VWU zXp4K8t2>4F!E?QO>O5bm@c*Uo|D}&`yE^PqW3M*jvpq7NtKA%TcwjpyJd79Ce@F#2G)9rT>txJ?~U>VAg_vgyAUli}5 zefg+MAA0k_=$9fMS$hcPZqOc9or4{D&WhS#_f>hU7sQ)uj}A&p9XTg)I|_~a)*jBX zBkGIdKInkC5CgAm%Unm*OUxA-|E)cVW#{<8%=*fR|JEKa_)dk4vjyK>#t+7C=h{;{ z;=r|Mvg}Ac5eKeC922zn^B@D)+nFtO)H{j!LgT@;m&b`9xf}_IAPdFUWx34ESaw)L)+XaP5;UJCaYthih>?Lr}lNAY+Qf z^HRsuPRN%hPFy>IWk>RfIC1S*!8ZdkmI=N)67uDV7uPOg*?H|s4;?SAoiDgnzzb)#kM-mBTN6WnPo?CQM|ZzgW!4r=ZbN6la7hFY-@9Ky}`00xSFYa1niu@wk!6F zvEPmzIW5$!uj0sx-q7CswXX@iz~`?MZX= z#Q48yGXG>-x07pKZI&IuMe*voT?H4$|LYD7YAMz9?gaYc*6rpxkYz`3QM|gYvEah^ zf1McrH+?Sw7q@OV*KsU6f{WtSb+D<{j;_P_f1McrH|v~$i(8kQ>ok@f!A0@vx>E%g z#{cWY_`liQ1YF#@++4{2TiFp@G_Sl)Ott;@}YSis88>koTi{-=p%P<9mk(nlZg(cXO2tq(o=VD?r1qM|ot zN7wZe`Wb`wD}z!~%|DFok7X-&>t`yFAeP|X zaJVmI#OAL?PIC227%SZZ8I`clhm1Bj7y4fIT*TQpO!}E5^nv!SrM2`P6dj)g9hBD+j6gi$$ z_CdtU>%=&GJ$(N9{RH2aG4+?(`j|uhu7)g|?5ez;v~7@G?V)U!>KE(l3%$YTuQz=b zbg7ob=6X`qR|;H5xgN2Am6?|Zfs}I-$;<-@p zT#a+@5Ik=u;&JA0*TcqJnR$88_lf65!E+DJeVln(bx6RYY^NhXv;JY0nU@EBop>G; zJWt`=QG#b?0v=^6T|CGISebcwu+D{e1`D3?IG3-TPqnU_fJfOt7f&(E%*%uIuEc{p zhV^sn;m6mDd4Sgcmw-pvLKhG6|5j#Ro>qouso+8WfBg$wU#;Jb&7(c9i|1LEnU|-v z;n^y9UctHFGtcpzV)JNE>*9g`w=#(*GkGXKO3sy+&!7+1Uo*8 z=Fy(q#Z#AMM)1&l--cR(XK$QqWP&Pn!u@7k6vboXMiE{M+=uWf+;x3VMo#Q1H4hyylEfQ-3<&#q^}7&O5;3TOPb0doOXb|fGArrPj5 zf5SAPKji#3U=U}v)XCKg&|gSAw_y#-j^q>Lw+$-=-xkPFeM@htlW!`3FC@O(@Dj_8 zs!i3ze4+8_#^x-W_~iYavi+C(m6i{$ zZ2Q`H5@ejAj?k8Bb3@|$?1aXP8t_BmBRW z9fOZN81eNMeDMDph5v7RQbN8w@#IGMe=9o%A9*n16aIfA{QpMb|JzPV$d@O++z9_~ zWyjzn4@P|bg#O_FHwypXu6jbgJn`m6_)+o6Q9hFX7}IIH3QjSj4u%b`0%s-hUc+=fc+Q9!kA_wVuOm@NIxR}*th{@z7&+0 zYL_g&w5{KnpV;_cmc6qKWz_WA;2D#hag9wL3oPN?hATy(v5VA#=5V z+l&`p!)Lo?tbc8lvHG>6&XmaK+-xjkSyWHEg>yg_+gV&c5wxSvAmeA|>CoM@qbMG; z0yl%_JC+rLhwUoXQ3O1Hc>boUg2&$1FN(*E1SHR~ zLB`2~=VfzW%_#kto|VCabu3m^OdiVTY(k7`+s`J%ew)r@o>N=J%7Z7oQ>bu?g|U zrhBnJjeSDES}rfZspND0+==%O2clD_+WXW-wHNb*myGtJew&dMQy-L1!f$1se?!JF z=IL}%%=&Tl?}02UCJ*J4pm*jO4H?CPXMIeb7P31AV)D?snoX|?9>iRmzGI%#y2s>c?a47A`QHhUSelo&5IpUp=q+kqGny7M<9Pq6tu?ESGngMA^1 ztkD1PyOli-^s~7k$~`P7GIjc%G4<0nx862mt&NoxTQ3y-=z4>XU@qkUH=iiD?vBZ2 z?))t6_2!l=D>fHJL52&jtzFvO2C}*du6JT`wRh+XKG4dF%|)X|!zJbeHlGDq7c+1^0x>ayZjmhO0cWlP^-^!x?yK9JD=!S97S-MQs-qFvP z2jlsur-K>?ZB{l2`HsyP2R-|)=Rb#W&~wNIKUaa*@7Z5W`Vjtp%U<{m2iv1w zs{2W?^x^DJTN<-0(udm~tISk4>-kZ4sd?D4{&R68O$H5Ga?B83U zS1XJBRy|>lyWn+q%8&J=44Jx*cMnkM&&lp=L8i*K<1PPyEV17I%sw8qqR920G3K$i zbYj_gI6LDy^mbSYn#&1Y2An-1>r$@IGuIZx>738raskUWznk-otj}J!-o6ca+$>f_ zMfEMN3)pfMWd0xX_BaT$#_D?rt`p23JLk8z+`_VB@v7_mMH?Uv)jn?&`n@0T;UCSG z>hbS_c%AdzTOMcGv3S+Jqg}j+XM*-H1Tv>sTrbt*+X8q4>xX*z1hUNdXUjO2O}zD; z{fpZ}CT|e`Y#A+hk@Mdo{Cm$Ey!whhQF{oySr#wW0$AAv@tXK(%Y4BL|Gx$E(Pm5a z+)@B<;O(+_x3TP%V9+A_Gb-*c z^?&s3pnZPo`CDrR<)zL#6~7W&qWV@g){I#*+UNHyd*@sTJs_d}5bu#4>x{o=WNK2D zvvqHjbCCWG@bBLB4|(1V)v*usyc==t_l?(i-gU2g-nD1z@8tR4pF9HRufn;#up{1i z20m;uWL*#W*FBNvOmm3zi~6+s-HQ2t%Z9I{&iWs;fGv@JWq(rbuu(!icJz8de;FDi zPH`Q>*2BRGU70P_>vEKWEfHsko!WXV%g*Cp&%!)e7ngtCihdvH^JK{CZYZJ8UOyJ# zU)4Rx9qn~%XO?Y#x68k}IL)jY^aX#lwWHweh4+^;@7XsLVE=g+8A@CMOf7Vm8=duIts*xT8T-TKY4rKIPZ1vl0;ZyjQ>z0^6U zLOQlY?Ki}ZZGD1elOJfDfIGy75&z?Yez6B8cBK8tiXlnQ%Y>dcL6#cJ=q+{bU5V|7vT|YrT_>r1aFa`=aBHCc9~{mQOihyB`CO>j4W?4t$u zw(_%I+YV&e6o>7f$9`pVhuAOpY1)+jx4}{c`bWI9?Nt69=bh>8uihoF!=deU+es|D z+^BC#sa#%A|DP%JwjJe(`TPqz zm!my?g=I&^li7L;vB$*!lHgbVSFGo|a9iSdGQ8fuV%d@QE1N%`{ra5wu~gFEUNflL zRG%KkewE=flmFVjOU8HT%L)8UrrmfRr@QmhIxbev5fix_()S;Nw+>jy(-B6h&uaUiM!ar}{OK={7_gE)qwp8D)US0J%w%%Hj^>TAI zW!c2JdrVGPTjE6gWBtPR6Cvvii|M8M?(it8i_NLMubUHV-mL6|oV3nxdpp62_5a&1 zVa|)1C*;)Lz|D#Ecvd#q*9Nim$t_j*h3&ls_mz~G3T~O4){9;e{pTyv&iW_ zi+R&$FTjre{w#F$>_Y4~{_LawkGAuGv!Y1;_ym@PC5kzma(btpcY1<|82&0zQBVZM zc!o2a;mn9Ro(Th(bHGzi&z!|@=B&hBa$0iEaS8JOb_oj|`ZOviIAK-h&9|pI_^JAFroWG^}C(ze0)7c&Wt_aQxF2eiA*M1*)wTF!V zS>`u`k7VtfysLl@Ua_~L(VT}1&fd^EM{rJe&by=)?RGq!wLLg>W}rF$CO9vE*0s#} zkAs~#c}&X43kIY9Pud=wIup>GmkCacOM^uo@Q=rwIe84o;>2qKNL$CLt&96*I%@XP zV*<7R9fB9}fAGt~uFHe1)w4~JZw(&E+PeSS^TgVIs%GFvAX2HA)l2Tr#2C)~>vd>< z&fMo->YTR}_gn1$BW=z7J109I0oL}2Q=JfJ)lQcVSlR5X{o_5s{SCB73hreAMl~mU z7x!b-w@F*K-?mQN8}t4wc*j8#`{dFiI`8~oTlLt%KZ^S^Y5}CJ`(5Gw{S#o%uKKl# zDmUzmS9huBdK62?u_=Oc5%$RuCDvarIxyWotmeF&NEx*CPBHaU@V?-|+XYsz#DyVES<{(U(@S$?0h@3rZb{OYid4OCm{b*ubnOQ zN3;JI`!(5qi2p-Q7xw!#oqxOeqn+;v*7W4-p!SyzMV)dOYBs}=ClBj{^8}p##Cen9 ztg{Eo|FM^q?Q=Gs_c6DNE;+@^KGx6I8G`yhX?og6?@w0yY>oe;{y*eS!S}HjpLL() z5bOmYO;0|(UwO!lg702vJ;i*NZsWz5zFM(xyc>dCfHXb%betRVpx}EBT5k!yzFvIR zeVapGVNFlIF53TI5`38R5BWy$ReABHuV$=ezt33HlTXhdhI}IUeuS3T4{%v)FTV8E zjkWkju%z&Ji~bP~c?sty$a_}c`%s+IaPoSH0p8RPbo=2xG`iZ$q~ie1C#gJHhv(2Vcg1zoD&J)00n+Z$tko`2G)CVjZB* zZXSFpGq%|e^?%azwJ*$?rbG@bcWy(}HyhKl$<6!Cwki2qmo-GeV9{~e0>Pnw>5dVCuy;{Q;@ z|DhuOU-5-AUo!u-*$?rbG(Gur{xnp?|DlNgL%(4E>${^fUoy|N@ge?`rYBz~o&Ww7 z*LTEuJjUEc_>P(qY#M?)9Ex#y=+8JO<6LIAH`xO<{^A}y{(g(+RYpGQd!4g=GWWj> z#r&T%J?)c>Z(`m*bS$*gTsS$RzT=$vl6k+a{ZRiWO;5gLe48xnw*d1NqQm_8%686t zYIL)YA1hhYlkcz%)qqLs2E*W6!!~0$^+>lr{EFi5FwFnO??hKV;>@3{xRHI85nSe} zYQF=GbL#}hR^Y&E2+||EYIA1}WkstUhwa3g&UQ@r^f-q(D%)ufXzfpUL3Gunj(k+* zBReTyruM;JK+^Q&)8icG&&-F{{|)Od_=Y<2Q8mxTcNlAW^65MZb9?6N39U1j@9I4r z`I1q_-o9A>CrwX2Jk7elw<8}_7j5>#x*%zK^67B~H4)~!23q|D-yBE2 zWR$Vn5BvW})00o_7+j;R>>#)NS|4Gx6PsdmEOXfrTA1>nm z^;dcES?jRF5&ucklTXK2j2X;__&;34|LaG2@mcGz!x8^U)00ofSBz)OhxkAIQtlr& zwDIDz)?tSu{*$IBUl%nG8}Sp)NjR4VVP$=s+u_^`X9vSsXAji)i?N>V(-+SlHn)pz zc)-g();jQT%qdCJ(>{kO`yhUX!(PT&4VxgoSN6tveh`k@(r{)y2#55*b#KGAyMW=0 zARLMOs`Bz6tU40cr)zy#7pwo*_CXw^{9^bM(D|>qBD!I*mwl{t=;6<^rn7za<@w9- zfr9T1X#J1*ZuF^RX3SrPWBs2rJ^7OH^*zD&6|{y6KA$>fMjd+i&#dXmmyEAJ2)cGQMLm^F1zGQrzAo%7&t48qo)G;&az{8iZrYB!AzAk3I5dr#IGr>o7 z%*8=@8}<6gJ@6tl9Qr=R_90}{g-2ljAKk-~SI=igi2Z&ewt&_?8cBVLZf@_RCC^RpiI$*4<@z+M2-bhb}h9`Eq?Gha7oolJN^bc=gk zHOVL~^W_o8v8E@V9`DdL%y&ApurHqMcZ+*nGqWx|;yl*$Gjr;}m5BeO>B*2UoUYO;0{OzF=<3d53W3sH8o#WJy@;b&_2m@?}o~+Fn?vfv+!KR-#gxS ztk)&ui?tqHc_C{$^QAQAgU2lbdvHv6fSBm)G z?;6McnG;_t5&ucklTXK2_&)Qg{wm^szcF5X)_QOy;y-D6^6B`Be#v}@|CJ*C-__QO z&sqB*<#E5Ync!6ze>dayL))?S?jS?i2tPN$*1G1iUSm1s}TRI#Qgj2H@x_) z_0THBf6{d3+dmy&5WlKA;6!bt3bm0c)JCdM8>vD}t3to7>qEr{+@I}pI-ZO9|2=>9 zvX6DWs|xdf()6^C9^YUa=EMBIO5`8+^z-1$sK-`e{!f~oe0qFCyD=Z)f0c;;_ssI( z%c#dzA^wx5C!ZeQ;8VB*OjZzBFzA^um1_VKLCUq=12 z3h|#b)7K61>#6hdPn|&}AbOk;c|g?yXo_|J{*%-9k1C#rX4XNgRl>8MjO-1~zJl{(XU@!e>B!Sq)0-1)>QM9YD$K{LuvP~@4M!r!9N8Kt z_C}061^GI1oRK%8ozfQ-qzah4$S>GP-|TXFFxqZAae9 znjUsaUy+rtXwI7j=Y7x|C^#Q;=FA)yM?TJ)-kf4wL|d`nA?A;KUvRE+KL7 z()8w(<0A4K(?33jCg;)71HBzNbLzPxzh+HuPB|`qAvm$;Z{%dQ=L7FMa^}=^N2(Z+ zYI<|ZaS{6)jXkGBb2)Q9xP>EUPJMSIaskrx=9J^&T)|m`ail_UUY>Gd??i5$t5%(t z6y*B~jEY&?o0rB%w2d0)$gZQB;rWhqw;+0Ogri+^>b|44VNIP^X4MVVyJ1lt*NWfo zK)NjaNdRUS)A|T{1GQ&&gj_K zvCbZ-aeEZj;*EU}*GBa=w~HQH7o1qP7~PjJ zgXoE!JUBDz$)k}Akft}M7#By2*8z^k{C~8V|37hq2WLiIc{FkX()8w}aZ&XnG5;Tp z`Tyv*ggqyEaAwq(Ma&bmoR>#zlZ2cA^bFi4}`FD>T<+wOQ za4v^Gl?%>mojEh>++zaPl=J*Ch`nRBP1{w~4Ym^R$4K*KweO~I{*d^C952@}|Cq+C z3B~BCanAgO^>1GuIWA(|h1z}0j^N>aQqj}r1iff&gH$|I#t%xcWd2h4AufjTXSxK_jk_XOy0BjNc~w0 z$EKVsnR9HtARLRjczQ&yUgG&V774AjZZ)_ktI5{;`KL?`u6% zKXvm18uhJt^VkDeJHubQ!Jg`KHAQ{Zd)7|dyBJ@==R%JCMsSXR)>Ogy zZ^!ngc22%q1 znj}BN*XZ5eDQ7jFmEk`SBgT~%{Eq(RqJB|mZ;qF!vEUBH+h4D0r@ZR~FKQ6ucGd{$ zOZ4trCE2x|Eq;&Nfwi6O+9qL9b{&V>2=%9NyWu(FV|qmIRg}P)QC}a|inX0N^(u2> z&vB@47*5Rj$00r$&a+D3%&4!A>%!X3oNW^lZBNWC4d*e?LVPlupOwIwQMVp1cyngf zS;xJ?+M087hjCH;)i^ZgOM(;i|8d_EW)OX_t7Cq_<8)^Ia@^;v?ZK%dqvrfnaH9S{ zPSpQDxY?UC$%t(JS;g8OoH{aU&f$U+_5X3A{{O)QPfnV7**NF0wg+dj&r8LbnSvAb z|MB&>-9OyVlQXB@Httu}_TbbJQQLDZbB=EaEyTz4h(3J4laumwi#^A0&e|TFX5ZC# zWV$qdjz|4}yr}@^u^M?yT*>sUxDY=lDMgPSpR$i~9ed!@W4kJFVmV`2S;V z4^ABsHRl0>6ZQY`=Tfr=(V*wOILSNhoIP3FgHuN&9k*wqFRg_}bDV#~iClL)Y7OK2 z7~VR2pzU2*;v;c>MEfR- z&9@Ui>K*p>yoa@&IhBXt(474Q=cCX`*f~F7Z4XWp568bNIKPAz;-ld_--DCA)6R+a|08V=P7@Eu!}pATj)E5A zqv8D4gOk0}&RNac9-Jl~j-Mzv=RphckvKnT>C7p;)6ThqwLLgF9xi3h2|*A}Xi1ns z^vSi(oYFh3oD(Wo+k-QShnS0uM;#G;DTJSf@PQEa4aYBqCh8Rv{(`eT&fch%ti$&U zaNcD8j^F%1jW@WD@w*9#9~06!HpHV(MmgI__71z9{>s`Ob~5o8wqQ=gxCuv?KR^1k zl{2U89d^!6tnI;>#A9Vo>=~kdJOOcd!fAr@9!Ji?-eKoFk+nTIO+188G3Qy(;(Q_c zbe1D$VehbWUc}nYoN8SfhxX441Sjed6A&NMBl=$lN6td;v~&K8wLLgZJXHPCw0nPO zJx!QF^uMPaISakh&iNQ?!#=g^NrU1Zy}EYYh|6z}Ytlry_rw`jFwRvj@684-$4d3HLwW+%EdERS9-dvBqX6 ze-nG5vVr#n8G@aNh0BnPfsXPUHfl?aV3a<7hwTycJs9j?tGhyg8Fh z$i|6WfV4GdVSU^l57l3dL$^C#-$3Ky#K)oaU$*C0hdAaHR9B%Ii;eSn*7o2u`On0G zg7Xb%AwH%@^wksIoJl5R;~d1=9-KNNYJ0vfIKPG#;-leQ;mJvPx{Y%%YkP2-dcee= z1g9F$Rjf^p=<6PyoRp{AIH$6<2d9pR+MbgI=Yk-dM3k66e*LN^C*|oj&Q+}K!Kovn z+=n@-F?0|c)uH*9GykMA{uzE8eN*3)pYnI&9|je-{+`qWR6C3OV$#;&L3~V)=$kXV zc*r}g2xJQ%n-;@85jt#Yx_2=WNT`9-KNNsroqjQ8*FnU=y*% z1lxw-4kuyVVbTd?*1G$y{0sLot-b6-y~A!NtpAg?hn-A4K-q)h z%%pRmh4^SVFZ1H0USQ|EgteVHm51Qa_PkJVUJEV6$MlH49qhr$y~ECV8*6)Tns_(~ zuWvB+#Ge020|_&TzT4e{lY57q^9k1W;56}Y(xZa&MQ9;DrbqPMzdShEJMElrvbG1O ziHDP36PzDI3-Qr#PV(Sn@3eD%!`dF4CLT`uQg9B17UCmue!ssnr}R!c=UCSE;7sD7 z8ka^1&gnroS**W*|By4M^iDhHLe}=+OyVKN?@3rwL|+Qwry+bGgnbozI0^NJ$yoE8 zjGFaiRS%wx@2IyemZ);FF-;oP3GcUaqVGS>e|+k-QS$M8F}7jq&GPZsO{ zKfLJ3S=c-5oLK)SZ4XWp58+eHiS_@SvLmM)yOodH{PQ2I?ZIi{q3V|u4<}y+t(yrmh<^OQk+aY{?VQ)KHu`T6 zY*uSOS`V?0yoY}EfPOz+>~&;5yvAbkBh2^H*-*hzw7qHnIDNO-5xD?qTkO~iuR7;_ z?kOMY`6mBS`!S6jpM=({g0srejx-J>->voW$;bsr+k=zaTfFXX@>|gQf;oTQt0Ycq zeS9)<0n+y1H2Kfu4~0Fyh1N*Hd1pzS*82ElLIH#7xX|0b> zR=Gf`?ZKJkKZw`Wm*Bh&=My-w=dv1l)ipslrK#bqvj^Y}Cr@EJRR_2?;$nJ4zZ{g< ziT+jX5`Bx)88s0}rXjc_;Y@9o>wg+dDhaqlP z?;z}ontwIoqv2d!0;h^OHqJJz?ZIjCplXajG(J|N=3kBYNSuS+^B`_{6?1HyU0K_M z)8s+bT?FT`(Bix`8vKH{J(G;c#(64hdvKaOsQP5Vc^&=;DL^jT+S=);fkx|vn;GZGdKD_sPoS19gi}_an);K#G-a31r?ev7O(;%>@TrN4H zp-nyQMDqokoxWmiFFPSJD?3fbUWzHZ;QS6ccuiCP6N31E$RR!(5rhwR48n)s55j>n zg7CR}2;Y1U$6+0D@?2bd0oD=!i0iQi)4xv;e^wTR;jke7{zP1h{yT63t{-HsGY_<# zJ{NYH2#p2i$I;O9JncmD6`P%Av9_0;kQr#s>4I}9{^m$_Q{d97bhaJ z=B#1PDdo`GnmLE<{;g{4av@8ZS=j9o9HEWmner z;zUH&oVy54^p7d+1?NaFPV!DW=Yg#4#fgZlIq}`t6Jy_$-po0CZ!b>rPCI80*7o8= zMAn?$1t-SmDc1_lyS+HcJMEljv$hAPY9l=^PHBhhy9XiWSK*Yu@C+;0~JKe?FUUo|J0oaB8?qO)X$ej3$>MhhWr+EtZ4m;+&k=?@3FQQr;5jl6aHoT@#lCxRB*2H;N;$6=lqei zy*Sf&hyAOPiIc)op#PitnI~_#=|M&1?L=SAwC+;*PS_~ciK6Zv9=c{ z#lywSITiE%sm%#9h^iW-ocNufUeFisW^`tt#{ErDx1UTLcMcpMtEkoA{ zjO91c1J$o_Pt#wfV!dao*#BSknWLQwdyCypomkt;PHB9GU6>Q=QBzMdMu&RKy zTkM>e8<4gKr(QYG_C$U|jTg-ViwC)s~ zLmfE_dxxF#U#t!L)Lu8}nAYW!ef4790DC~0?_Ow#egC6w*mUa#Q?dR@+S-n__Z21U z1_gX_-9YVAHSLW#>(qDHj-%YyF}W_5v9EqA)@VuFgA=WdaYps?{|Zjzj#Iy9&e2`H z>tadG$>x_>M<#6#PP1+>RqX$ts>ZZU>`F07MD%RLIQI8^R4^CubNk5*p zv*6qtT8AjpFX|h~4hkD5askrz;56$6)9}c&duM1JCpgb8fm6jA8z*uB z()Qp)_LbVRo8UYNT4MkI*w4K=lT66QiCloRJvfp5q?~66&WoXSqxy+HBD}YhZ@VX% zkc|_$0BLK^!u0}cyq4<)7;m`UZ-o}(V|qm6E_ci;3cb_b?%4lN+FqP#{(~`*IUk4C zM}!$fO`xywJ{xahJ3`I8__z`VQuybN9 zfV90h(|SGHjyW->n*NsH{Lq7wdxxD9YXPL~#hJ!K(>`4hAd9}VY)&YaRa?VMN(AZ;(sG#*YLE;uJc3-Qr#{@~0hz0=N# zwE)ug;!NY=^qGQlc@WO1N0>oWy^Axa^iDhHudMCGN%3$kbIxc8tuzM!ZB%`OGpF=U zE9Z>OS=)g^G(1*0Toas}cNl~J)(2|*#yw3x zo`G00<6xs2RgZPFQ(^D0+o>IEd)XxIC2*D4m&5-zDe7I)70nD zZp?{zJmXx!Ilz&#uy@!wu{KZIUYuz>gl{qDh0wZAaL#q)EbJY2&MR3P{#N^aZ`$M2 z0Mx$u_IT$T^=Tiyv9n+2i8J~LzMG+OKl4p}eAB(}%?#uMq^<2(_`WwbzJm9?nQ^D! zd<0tmVa{pwyx)&N&0DPd`ez^)AZ=$(w6!{PKgaq8#p@ZbLhF;{XZRXTJGCTE>%RUO z$OTB-nNwHiQ_gn;=NHgYbGGD&rVT2I(^{XOfn0#JojH;Fs6*Qm>l??BX9=8YthaHh zTp-nU=ERt;4*Y&NV+nI2#Rz92E~Q5_{kw#d{=<3xuX>Xj^DVqHEBGGHyt+!BwExU< z!Mi22(!T|a(TtWQ*j0`BHqM<`+nF<+`>Xr{b`8NA&P07-W_z5y@tVtrasC%4=8O|D z{!JW6mff`9RX@RfjsML=&3~p?|DSP933gI3$7Uz2|C6?}osfg6LvywloT&NF6zl&p zs=PUqjL61`^?%ZK=0px;IC~3D)cj{6PNqjRb1!esBqOqMV*Q`AHD}?vwLLDXzZ!?O zr&#}=iJJe+euNoBGyPwmm1IOVPSmSO+k;a_M$LJXuqSH%GoKNh)4bO`l8ng4`50?^ zaO%jYIUg3B&qM27=A3n~Cnx3WHqO^s+k;a_M$P$(;2Z=k6$6tan)SFRC*|ul&aYV8 zgHuOF&H1_D91N|Agc(G$mV0tizHZ|j&DtKEI+|$CD#1AwT1%O8_R*f4l&{-3=d-p4 zr;do4bB^F#6@;@8AJZe6{fZYSd8c)ppB1vU2d9pRn)6rYoYfdwV*mXdpU;h>*F>ot z!(z`_Td}qWr;bP}ZqIxL=jS+4SDJ~M%}mroW}((FD~(xX+`9O#?1X!nxIGIs|5=ES z=@HF2-K#yRci8Q8AZvTrNk>G@342g}I}0`cS%{B@^Aj&l>K%5@9<1%msm3oHnp5om zpM{$LEX2q3h~{qP!O6YD&WZj1r0v0J;^C~n3wvGyt(yolh~{4E!AWCxR{yw$wLLgZ zJe+l<;Jgi5h>z(J&2{~JJH^J{X}9M9*7o2u@o?5Xg7XPzAwCl4yxlzP$=+$_e1Ww+ zI88j9^_<{*6IzImhVvF@PU)R?&W~8zgVV&rSsw__Z=fai-_M)q%qhLo&N+m&Jvfti zi1B+C>WJt|A^bFi4}`F92=;K+&o~!je+A}bvoR-|@jbp{e4X8e%>CQH>+$AiVJF0o zSv5vCn%~aZPO^8{?X--wJ?v!SF>GPRZ@9Xq%>PN-gVV%E_!x8U0j&d=bAju= z+``^s=WN5;&Ya@?aL@;s^AKo>*Z(hYeO-N_x7sLvxcROo4@R_^<``_4p_d(-X!FRg{ zAF*ZeAr~NR2R@TeU~eAtA?DA1SMV)$g4GW zEq=$5FY&zOYnK0E{!iKtd?tUGE$02Re}Tq$!V97$J9_ew9c}(MinSg1%shH_rLbQ$ zG{ioDC3ku75nERK&Sh-}J`=BJ&k}s7`On#0*l(pHpJdD8!+e*tGx%By|4ZUB@-Emf z1Yr>vTfw6%4U2Cd3~45d9&Xb7K(B{VP6?4to*CF3hw_I1&5or(!)}`WeVup)n0w zb7Gud2LOkx#N^ z@uB`t+8KQNi2m0K)=c=&&uILga}_l1V7}#_I`X;r|1GTT#J5k%ccb9Lyll>s%(voC zo_u6SoBut++D?3kpt^k@6nq1r@uuK=#DkC6vf3B*MbdWSLj=`)FA2W)pi#+uD`Q7K z$(F^3wMo*>;A>Ohe~6$PFuu)s5a&xcKfyT}C+4SfG1s2Ez2U602iiWL2>Yn<4)HQQ zqLtq`+Q-HJr?R$_eGrE<-(ttnI{?#xLX<%!l|tSH%CC{XO}}ju!u$i}+94PJC(n znk(Y}T*UvmBL3I>$Agd9vf3B%pR}F$()cx3#Q(X7|8p^4O^;~J=8k-lEsGEFpR_ah z+7|eqieDIiVZRWJ;oJ*wqIN#_d7K~OMBQ^P#^bpdkLO`L9{Uzf)NjX*Mc#?=dfcb< zXO#XOoa(;pUw7j9qed@UQ{`wM7yrj=EJ)kQK56`fO_=W~XuQgNYukJBQ9IiF|39ql z#HZq?vfuN94{bE}bHVq92OqIz`Pav+?ZlVHFZdGM5B@V(^Bebf1Zf{>p$?|Besn8orm~O+D?3F{KDA9e2D+^{=og?*IgX>BwH3A;y-EY zI(3Vn7xqYZfX}JdNFRr)ZznufpB360k9*-f8Wm!F;O`0Ni9BH5pYU8)Nc4}RU#ENT z6H}DdI`F)GSUa_&jk5=Kc=yB(@1sDe$C-J^S13=J_kYm9`gnRo8%}eyBlQzyPgM!F z_~E?6SUbm#9fOO5i}3zZeS$Oay-z}-?bu0h_JkH*CvP}Mdf73lRcE#LDXgvSxS6%R zduuy(#n+>PV>RE2g6|w?^d-C?4)$|=ADg6g$(nXMUc%bij$2y!x(40ho!#J--Eo2u zUwdlK3kB!3(7Ic2z8!3-o)uk}aOpSL3qacG`VRSHSM;1-@WRvds|?iZ4GLa$kox5< zg7ZFT4P?&nO2_pbwqz^qnKr*f{hzdJ`6Y9z-hC|o9gTk99_)B+ggUf6k=L01^CGm~ zPkx54aX8J(FBNUFB4y*mUI5b8oLiW7XHNC14P{UI+=H%Y`NLAq*90eG{=A=r52kK4~9Uk8PaD1xP!y-PJhRvo>YQ`K90-3N6IR^oS#$_eqy)kTy=_yQE!|Q?pWt~bWno`oyVHhb>L+D@Fc?YW2GYzM8w2{VYxIy-VY?2DM+fweW~ z=9Y2kDD<7KroS6f<)8Bp5uDhoGyfF9`Ih52UuaExyJId)+PJS;$ESGI8-94Sjz`C0 zeD8+GD!$>+eDG1z-dJy$e+l!||EJ?RNfLdM>`1ZN+8gt9($;*Z-b`6*6LZ&Jc&q?@7CAp%}4#8w6$G1pOd`3 zf)nv~uvOKgV|4q!BskxP*0+N58pnLDkkk4)z4@QBcCGP9awhv=4g=}Ym>cy-STrZ< zN~RzE1T7Sm(<4SmYM~x`*mJ+Ecsaj{wKXT_NqL-l=ML&-L2DIz(DtoQ!g+WQE?5u* zt*|Gv)qOaxN{Q>}o3_(%VW&l4*UKX(a9#*4ygv?cHg@0d zO(VFf-`U&!O4jz^Y@=8-XCJ|N3$*@Cm_giRCvSUZ_ap2DAZ-s$cqKTo?y;Z`&VD%G z!1*=CIP9gtSQV;qpw$YTn5)f4%&dz;+o_+h6V_7}piZ71aTCAK^;RvpZ)SVG&DtJz z!s#z(W?Y;JE%;h`#Le#YA-;vE=PztRctPB3MOvT4#(#RBzlB&Eq~F;f|9@-z{|-U?(>?H`AMpEmpWBnj#vvI ztxO)Zrl4#g-YD&RSgwbFJazv`H_k6JT0%2Ys)4Gu@E zDN7xN-k=Xu!2YObax4)lVR z)I6MDm2y;aZ*4CT_ZNNwjh~ontBRnhdRBB?r)*PwS7W>-PA&YFwKX5t+iZMhezEW? zVK>zO7fupwf`tynvUvjg~g**F(%E;teY7imw`tns!7m&9p}8;kzT z+Buwx@-Qps?t-%|wD@(b@wP9P#A%HmiwV$|0g() z#PbWd-M4G%nI|jX%&4a?I*zq9C+7*0v%Ah|RGz6;0FpYennwovevj*~#P>IGA_ge# zwwvKZ?!0JS5VYZWo%sVc)dOv(p2AL8^Irs}^oY0fe}DbV__pX8*3M~9USU)_AJiH% z4$TQ0nSP8l|3xnnW)N>T*1J73>jH}guy#&+CUtW44u&0dOxC2jJ-cE&MNI(lCBzsW zVw?=;pNo3HwuZOP9%wsZzGUo#n*XAo&F$jt5B9D@CNo4!TwC-WYwI|^O+j8j<8tkB zgxa?=GJ56z(KYpha97kXcH1Thckd8{J6;+@*JH2cPHL``e}uao8AR7MfyUo(E&9vu zZwBEmAK`k~y(N$HnJU^|Zwq@3!`~$4{oB6~Y@;rA&QlWax8?zh#<6yey=up?LVKxk zZM5LU{D09Z^XJ7oH1*`A^*CGmV*XFsIlQ&w*~Yx09! zy#w%b)C0ut=wEcUKds8s-}3`5-^%KjGHw(ws~c*+z}QRuXz}J?+C`(NFYykO()neg zFY5sN=vSE)&M#@Vjnyv}|Bkiwc;lAe=-II1T)ds&#Qy)qm=~u<{JV}`@tC~V&e@u^ zb2w}J19SdWaAN=8V$6>X=gVH4Xlz^|g-3yOMots{W^De`?3)(Lp!e-eUjX;&Y&Z`Lf{~na)F9{Zi#M8TF6F z$OT9{ldqG7??Tbei1~}}BD^5psY^+G);xCct*ouvS?-r5`*laQeH3h|=FO^7gIq@) z+Kx91PQ?7h&m=#?*LbJ5yw{1743Wm2*-)YJ>~YrCc9ipa<}6^;e2)me=b?f6bb7=s zw{+ZZk+d(hvfU3~XYCw2c1KJ1gdZmLB=iw=Aby97v6i$1Yxavz#EE(I;?;P5IZmuM z?S~lLc5U*zb@5f(=@nt8A8>!f$MlF>UR6RnX5{&cN3eEgJ9b6YQjILBuW7!af^Pye z<`Z5J|Gu$zJ7(tBi;)YEc4j-OYK_{tsrE(I?hn%h=MuDEC^)b6wqs^JY4KXt)|@GvCW3D}JWt02 zP{up=@*e*(^Y0~pU~SFEbuZ>C7*&#SZ^`ckAJ+eui1q)S2RYVlXk4L;!7}bGX~)`` z{-`RgwsA$-abLlS_5US$1x&Yfyvz2U{+L+NI{q!`&f1!j*NfPWs-4veL>Kg&B%bI< zqTBlj!Fd9-{=xpZ%d1}VQnIF<^Y5&k>5q!8w~lx15%W50KC$k<4BNFO?WJc4oSW?cIyzN5|w{|uL4-n!%noajq!2N~W?{y^L3 za?yVG;hrK7_`^qDb?V%FZ^;v^y`dU^N)xmby}pO?0JZXkSNmwLM+Fz+|B`pjpCAA6 z09=j3ab85;Z}%(2f6~tEr^^3%B}vcS_5D>p74dh;AUs#OXL7`U{Ls0dvhS<0#WtRx zoBYE7x| z^(e_c;DoPA@J)dRCd=s&@7BRPPf&E$ym`qy*4BI+H<+)Bu2Ob{4Rxlc?T4I}=EF-? z1mRNTw}x+wW8B~#l0*<{=V~aW`7)L{q_)0==H&RxoN7!~8P{R>j@{LoQ_S0!RzOR{ z-`%fs9PhZt6mp8Ze(4shUCWN0OgkU0dyRTcRANWu%S(GBFJ6QbuZ>;;*8Mu;+!v3b zz29}IMeFFBvd>b~mZ=?=BK|Ms_XmvsbYR+!YChVmVBNfMe?z(gBG*-ywq>na;~U$f z1Lk3PZHwmEM{pd1YrC00I{wph>G)QRBlYkC4$S{aOScR6Kj!EZ9FO>@)|}g`6>-fY z=KV{LfySwVXG7Zmit$+XUo6GEh_o~h_c!KA)-cp-Y7SR-)jaSM(@tkX;}YiC<0{8? zN>^42>~jHYX&&xZ%%k?i=vVS3oqkrTr@3K5C5Dy|IAjde*AN z(>-0$Q!C8v(Stha83Fb}X`X8Y&mGYC58(vypa1RH&(->){72)F?C1Bhw&r7hqU^O6 z9op}vAlT9}H)mJ<#^)FYNOw{)Ugu?c%?j=NM0)yKE!pE^!=W+Cr$FUz~^mv>jgZMqv*hgdRy!+T7{{G>hUdyL&z7T{@?G}U& z*975m)H{~nZum=npzZRVu*+1ii#*`3w}KvrW8Rm+&gDW}Q|-8{ z8QW{w_IRH59ni&l|6CH6b)9_KA6Yw>t4+$av*1GfUv?1Nt5v%axXh?t%UGV5Ckw8B;M&^+*Nr7`shrowbt!A-a}?Qi1&32mm#NJb~sLqr^_zF zd4CYR{VdM64d*6*p#A6~VVApb-^a{t;@0!M?UKw(ZFYHxwR7!~z7LD~`;8wxjcZ?J zu6<7Q=1S(FHm;XgTXQwZh_#<>pHZ;f*goY-%${B&c#P5waJ1^f1lpJUFyT&x4^*VfA}#QVMA#YNt2=jzManoG{J)ZSb<&r<#^>h8;L#PfRzD~Q{j z;~fuG?6L04UEYtibGgvJw7oEoGxmA_*A5h1Lrdba&U2PO#oD=C={#roZOtX~JQ;8BmuY*o7hK(OE#}XL>n5)_ zm^;r|aXf1m;nMS*7092Ay-vrqn7)_ozxhMm)aXru4MY#0*X2n3kg)wV|SO+-x0Z%T<0Bu|!uyzqHJ-=Cj{KeP{ z|EFjNZLiX^!x_n zM2J2a!v90~T8MTHVZ#u-;fk?1F^{dQLyw=xpG}j<*w(f+?BP9aOt?Sau>n%S6qwvD{-~Iz9cT|JZI(ptX+gl$DNhPM@>6+ zz_mRHD~LNpC2?8jIV-!db`dTecUE>4T*u+sGX>WjC2?8jIV(?N?IK({?yNjTaGi^5 z`!ZL@#wBp6(bO`&ue^-4i*V_A15J`xcCU z^~beOF;}OpO5ni0DO$Fau-h7$!o>j;NNV_Os zYqlSJ-Ha2f5c5}wy2D{@J^3g@wY2Z5-?4U4KGfXQq3nl#$b6XpuR`2RkNB`pJ^3h8 zweey8PufNKP*RR==jh~#JZ8Xw-llaDe+8((MEF3OkINHkvuVZWoHA?DqO z|KQ1&GcQ_&wE)sC%9pmGTF*ef5hAvSh@&B5R*3kZ#==mIJ9T|%`}7v}!Tf*K1Lm%A z*Q31bL*8$V->WeHC+(v4K}}E{%05ex@4s_4_7i*^gll)lc@%7e^*iK`Va!m z{8b+_-w`Ky@lo%y^S#g7Mfp%8REOq!NAO|(ze>#ikEr(Iquyud!~CDLH;U_BHlDAo z67&C6nE$V;*2wBheB{U8aXoWgY8B@Hq+Ntd&(~Io`S&W+n^!Gku5O2x#AThYty;v| zMY!~QZ57rpD4$-nItW*n3ohC}@&*1c@BRB|W}AFB^EFbE`|wuBe2*f0dfv7gBE+}4 zF|I}2OpmyGx038;owu#Vm_gb_xb(bj_2zsO`XU3er{ec>PNd2v<98FERgLjrsrTex@Dbqy5)4k{rV3-?y=L5iUJ%TP^1Q ztNY{Hrz z`NX^p;}-LwuCjVP;RSKeyFK|RbF}fzX6>SUG;hN=i}7ELbs@%;a5Zvb^p|ic))Ep+Gy$f@1wjXN4HT?)Lh zaBK;DY814M&xrq|?Z~I+S2ZI3*C77aEa3J%;oB1UGUit`i2tPR$fwuGYGnLfiaJ;s z^PSkX1ip-U&YFO=b>5EqsQ3R{vl&jzLFM7dujfNGHSC{jDhjmX6JIKUU(ScdfU5X7 zsMpOf&V*~a;6(j#4aU+nn5V3H0w-#WYp{;BW)99@QF}xkU{fEkS6GAECXFL&{)~Ga zVD1v1w2ikNl3c*j57z9<+K%m{=V5D*vm3rcpdnuGcTzuZzRY>pny##!zHbPxpKd>4g3(oVPb#?MHe2q_b z|6EJr%$%34!CC-mJ9CQp8Tta-^9E@37o3wk?MWG`&7OC%wlk-gr=hK%4Y)B;G`nREYyMYX%i11KJ@{XL%lRdBBJ;-ubT=R__*+B)xQ zB<6MeX&yQPYOdV{7v}tHv2LCo@o8TL`qiAyug^@Pi*-J?_F&e|;nERLa~&wS4#Ty_ z5mpeNzGq2X)_L68V^}+fOGh}(b(G*b3D=%0xE?Es%Q}BsdlqZwaOsGqxlqS2{)P4N zwbwG&8F5Km)_L37D_J{-OGhxx)kkn){9P;Zfio^DflG~gmbkF?F4oTB(h*B@-66OT z|JObz>@~Iou8euwTEu_S&f(G#N^^;LzxF@4_C4nMd#4h(GUjJ%-(u|?E*%jx*XzPw zAK}{3g6qu^xa7QRHnh_D;aaudBh}8~YNzh5)(zKU@6p76blUA85OLA?z{%9CM9oeCBrEc1dEo&A(@|c8*- zHB_>=5OMVV*NgjaiTm%8u&Mi>b&B`>Gv`<9uor-|bM1wQqqyMHW?WylJD#VxtmgW` zlZ!G&i+`wE*vF~pk_KdAN zMQ{!DcEtR8 z9q(g}|M9687kRgxOYP^&7Ljm?`S!YD zxONiT>-=rJxTtn!o!_h*r?uk&ol>qQ8*!=k|I}pKUdVBby{6&XC4%c7?|mwY%{sqX zw?J#h0}jvRI$Xb7A}pr4kiQr%QKc))d;T;yK~7vhfLLY}_9hu|7qLOW*6 zZ`OCy+VOy!GP%gV5-#K~h6{6t^_Mf(g$I|wl`+3rkNtnpjt9J4#J^OYh560;7jZ5L z!e6`Nd>rSDAb1XA?Q_rK{2J%UI1dYgXDe~eG0dCfff^6iBY!e>xeCv3H`4KiZ+VZO zne&_Vw`lEn0N!s#_q*)zQ?FC6NB(5EFvnZ}ICEX}2k-XEoZqZ}SZl`v-pb@6|4z7& zzZfpeJJ;jyNssuV$Gy1<=P_cQydG--(2fV7K9FgzWc*CHkiQtNw{h*~gcZaWS9o(} z&TrO#qP61z6H>0M_?+hJ>jw!gtedVMA-Jyd^e@T)EqU?!AzC{gP@QA1Wc<|o4Avum zG4>jbYtir0BffaCr@bfxv~f+*+VOztnOx*w2^aDg!!;Mzt|qJ?zT|9AF3JFHT+6j~ zJODmd#J>_Q=lU{bhQwQqdt~`nI`3L9@`hiV zqK1p55eX4zM$mAcCItEcHDnV%9Z8c zYW}Y5b-LjCC!Sx!T$gX*;ot1tcCNl!JMK^8dUkx)`;6ct+>Y>_U+)!McY3rVd$*md zpVp51S7){(`FFyF{KfRU2XO5`!L{Cli@nRv^_13*`)7~qma`(e=%HxaP4=3tJ>MWq<7i5zS7$902L3aagS{O()++L z{xFvsm&P*J74Gj}CB4heHBxKG1G2|;@~?yo`HQia8cXL3t{!8^tI_wxIJ*J;h3vOsTRh)ArNjEb zl~*`^o&{BqlJC}f%?89;($3){pF@=^vEPQ4f)6o&!$E>?UP*k`y3L0DSUZQ0e2@9s z2)_2v5cB@4{#Fv7wSKeVNY>VTdH#nQjymvr;fBKnALjoX&PslUuklsGO7K55;@SKU z^MBILwO?AxF?^>8KJ5S7a3}L!-MIw&sgcjdhun^|bNI;rv;}qEcnb1E#0TWtDkljM zH^Oyle!}Zj26$6H(Cv4Lu+P2t8=f+EiLd^o1pBBF*k+$cSv$u*Y9zMty~^5}FVFu`V^W8<-^+sUeQ11>{0v{?YX*Aze-iI)e3&u&^(DS;hNt}~>$LIh!rD1}$o^Zo-{9h-W58=e)5dXi9`?&dIN_hazC}=6{^M82W z%_zm!pX_NL%6@J3IgGV)>_h&a*hleo5`4$t`RRghuqPj7!8X2=SzGhv`M=(cru{#{ zXO^*loehmX%y+|~Uj9$sZ;KC6a4~D=+ApnDDGJ@b{}g;zLqp^rH@xp3)yhKT<+{@II% zhxkw0nlI1)P-9YuZeJ1qL&X1Zi{xkc8sA*)?0?extb8HjKWXRMFY!N3sQ3^|&G;N5 z{)f9W-z~>E+fRC*oe%M!v~&2#|Cq0(;M)@#2MNBPo%y8q+4=Tk?HoSxKjuRuru->v z4-N5pz<>RpGoSQ6JKvF7JHGEK_*FG*(8$zxI_m0EE7YGl<8yCu=yp9^a2<78lXzEWw{j8a3kHnjk_QC5Hj2}ONYhPlX z+j@BM*y>kN_&jTB9$x=pf9ZtkY0uPu2MV6oaP3Ee=bN-X?_wV{a$54)5V-(pX4*%M zl|6%wy1m{JJfGoOu@CU}y*=!sMoJsc_pF)8(*rz5r98-EOnVK(wG-Jsx6|h%xY$RH zj5eOJteMHvUGR(&JX3M)V&=I+t$N@{Utg9#-l&n##xsvK(H^RDPW5;8pB~sL*)=!` z*AbAo?x+Gv^i@!aiPMEaWab3m^cdG_rcj4=XrSk4ZdGz z>{w?HRQpBEgZ01A+1MOZdF)0r(6H z)cx@}XCdB$GgR-7SmX%TpNYL~IG@F90G1BM_0>3A;MzlRE+}#}eyr_+3K;eOs0aRr zQ_XeposT*Db;nGjYwGdRmY?-Vsz;g!{l~N);(sLKf4?sr^Rr}BvX4uM|D>5Y zek&fdoaPbnKSKPEMEt*Nf5-8gW+^uNApVnP5gxT)JBkJh`yl>DAG06b^`IjU%}Q)M zi2tOC`vvfTjpIpoM3U~h5$62S1i`h)(T`|0V&nROHLZTsTIBg^d{+7D zY@C>%Vyuk9lW_JAqL^QYZ2&j*1Km#Figua;hK1%X@!hXG`f<)YBbv*aR=-j95c7;^ zmf%?iI~bfGzNfjP-y}TNc}BF3H8Xi=o}v7>hIwMl|Kk=0D87e2f2DX_S47r4KW@sJ znLHxTkFkG|#+`U;T>A&Xv&PFl);vFM$(ov{cAl@=OXT_S?*z}EaILQFXr}nyi++2a zAGc=BO#6sDU-cVfp966%&jsUq$9dQ%BhQbqRzaGXJR;AJ+Y6rVxEAy1^oaW(LEu2 zV-&xE^GlpnIAO!OJk&TCpDpZi3!dL+?idf)$~hm)oM*&$v!*p(723t*WAUAW>tSd- zFSzb;j901#lrjH_pJ7cWt~4KupA=j#L*oO%HPe|ZGp~=|X3b1L;`~+LT({#Jg6k7# z{K#DQ(dT~@AFng>>KJn;(#*6Mb8$O z)v<{G^$`E-?QDSJ`=>jOmpOTLJ;Z;~EW*=D&F8@r)oX+Q{&IexrRUXQrJTn9koFk_AQfhQdOI47^K z*O4`?e!P#!>y@1j6+GSW{6yw?@B~Lc&dICm9mkqhzfn9Quddfq@SKWkFAzMRIQnr; zUS01WteMFp^6GkL37$)Et;jZyIarak+M0ul%=mUa!W% zYQePt&rv5&kNA-3$D$f@q58_zcW{6UR|~WYi711=db$a_&w#zCcc*Kisx82PmlP~186Bo53`aIPk$`Jp{MErm3BWJG6yt)kW zpEULOR6DOu{NCi%Wg`BUA^w+LOU)O=k8kOikL2XlWr+WznK@okUXAe*JW-h%D{t3h zM1=kr!S^GTr_}YK{aNH6Wr|0<4iIZXZtI;nd3{+w)+}NVT`z|n*k2yNwF8Y6;>YJW z^5o>zWtbO7=r_2V{$d3D*Vg6BhA`wjCv zS?1`+IeB&27p!S*H^n3J>aza{o*!}TD8X~CW4q<#)ny}CGm}T;)n!8k&v;xb@_;8N zd+}KF>ayvqnaLya>ar<<2l2mb4cq6bo?blGyt)kWpENa3?YvsG7vEww9kAfBfqY{J!@w2 zP=1Z^5Io9O5&ByMpNh)s;r}qNu74ZO$H+o;^IeV4^|xWasow_A+namEPe0`0HyQbT zeY_TcG&Ai%`Mu&fK=5?I^JAIknaG1DBfqYHG;8Ydxpsc7{MeFT*GGh>Jfr@J(D;Yo zy2v>%%dA`1|2u11<3=Hu$;;}WCb<3yjcWwgbjP@nlV8`rf;FAE(!8wxWr7Q9{`E!N zfA(N!uFU+pKIVa>nc0q<$7-YC_f)^)c0~NIKalP9>=VxIn3-SKNBk$vOnWgGw8os(ae zm$PP$A8(XjBd!{*^39;Jqu^TV=*Kzvb@_IzY4ziM3-jyptp(36xOQ*m`8U0vb}>K7 z$*;@*!kX50Q#>NSE=O)f<4^g%xV8iHJm12x-E#8l@`G73lSky&Req)I7EGYt>$qU!&ibi@0BY0iL6d zogVQEm;Cm+b$K7w%(M^X)fksC|A@*j)m#yLJ3{+K4G{Os-^X_%tE2B~T*kfGfA7Wf zSIo`g7bbYLPexu}{s?Pk+C${^Sm%i9tDOFS`1?^`EXSOzA=;^7=OC)M8z*w^T>AZmPQ5d6Cn zUJr)%1>bNL-g5ylTOHaS4+?vr=3oA4@-uvmUvynRRQ)+4uP-0OnwjX4;FnOgp0Q8+$cq35|mV*9Xq_%FOE< z{E0Q4xKul0yl${7+W$d(?~3zeoEPHx_c-Bqb$#ge+Ev)4BkteB+%m3R?O_LQr{i$#-v!S<9qXMrd3^({1(0Uucq#IFv*P)DAeyuQILteNA-8|C%LF_`NfXgn^so^te~ zoV>ol!>nobBlS8^@p{q*h~Z`&dIr~G{+u51D`z<>d7ZK4Q&G9+B5K!2U&JpRaJO$OB$I(2K{K*Ejf?H8XicUfD9Bl2qH6NU$K{)PuI&+Dgp z*e4^eZird{Y3gygc3!Rg*OFH^Y%RDBfd=N!=@GyFlXE_nnO8SFoHecSqL9nvW0-%j zy?R39bixYaHx6}-7dd%#L*!DV>BN=h)eTP&TxUb$a>3=guTp&mh#IRc>tqctV$IBU zqFb+24NS}{2Tt)+%c> zc-Ab!qw{L`Ec0N^zu{8Bv(%9%C$Da(>Q1RiH!;t9uCHTP{*sYbS6s)MnLHw|uDDw8 z+=go(5Ij$Mv{y!6UD2O4GkHW_jT$}M=TThyBJ;f8(1RxPB<3~=OU7^O6RMUwo&5tU+6=cj*^LnYNi%c&6nQp$mw7P%Z=^}JC&z<2I*y+?d3Gbr z|4Fk5kIu7IKcYHGqhoL_*3Z);9`v*$PfniQ=p@$6@uQ9MY?TWcuCt(V8DRzSpc+R% z%E_}EUC5f6OU9X_kf9ulcWzVfiI_arH^=Wqjm{TbSK|3?%=OV{j^jZWd=9JnXQ@Xt z!k9;znOy2M%eA?#7hHEi<7MXh_~uQ(g*7qK%;Zw9`H);{{C)=~*6T4ZP`PK+_+gwc z4w2U9U4s9{-|HO6uGq1f+gC@;PyQsZ- z(k{x6-W6P5;Q0{qr^cU_Z-Vy1{GT*4xzt);Z7xvcr}HYswH0>B@cXy!gLwk5acf-LgSo!ww+Xop zV(kpBWM{A9Qn3K_+eTw?&c}5D&dqURk3!@9ah`(nVw|^NztkaycauFpKT!8!KSHgd z@tHK4Yo&&9QUnd_@?6LMX~+8JC)WtX@v7F^fj+J1t| z_4D4TztMMFze6p6v@^JpOqjUfBgS5s^EZBqxxT)76WZ%B*4~IqeI9+1RjEhGIQ6jL zdJfmV$z0#G*@RrLvUUcS8mE{G`IE61)=?UNCAj8oLaxtPJA+G&Q_O|@#c+L(YezEI zxBuRRT*FyAgG-H5%!T~LaAAGE@oeV$?&M9#HJ!CHxYRhoTvG(s0$huEb9%(zx7dVS zSPLNS3@$ZJFcrF6kHe5e$I<6)atewH7#tFlPJe;`@YnuF?u!8u9n>HcW z?^s)NRbWKu6m$ejFN_hV;o0$ct`8N5njn8M_Cow?(wez`stmAfqQ{c}@0c(1nRZa> zgLzi+ZuIFp(aXH5$zH5w<>(w74Jv(Tjz0^I{cvsiGyFpQ^FfXr={rLfaG(}ITAHI# zEqfe+-Bc-w<~T@jV9wv<*o0AY{5!2{jKQ-!d!#EG1svG_Pg@(z4paP^28E3J%O8n}~eimwrz6P*oKjX$v?I|4B=8 zG%@y2pV_G@1c|413=Y@!5b?hW;(wF7*dBwsrS+6zd3UnjlzeSvuM;#u{3mVPSG6S4p@DjNdc;Ha zE{V_jKCDep3m|O=K0VrK`@JIgK7;>`AgG=Buy%vAJ$~npqOtC)GWDaX*^xI@S z?HcIM^Ejm?uEAWY3HIAIc?9PxIFXw*84*Oyt}!;OlLwN!Ddy@;nl1)*&ByH_a92aT4?S(v{J?cYx zoNbB`m-3aSnDaM1QrK;kV;;p^NyXnX&Nl7B+8K6B;!`htwsbdPH{>mb4>7+f;%9oq z!;kZ}Te1RR<3s(Qv@`nQ5wO~E$SIE2?J4U1P0z%&ml0MF51-`iZ<*^`O;P_R?F_rA zT?(pA(_QRoyNddMQ`G;P-p+g@dVAX~bDgW{&8)5YHjeK{=zSD|P}}bY(XMwx1Mw<7 z;t|6=$Jd;7rlzRllXeCl+3zT{F0w?}?}N~ZJ*6H8qW&tgB(rseIWS0h6duL;TscdrXD-z zXF2O~O$W2KBcEO`M0@eLF&Y|(Pw5d?wf5x8S)Xeli|S~|nEPGY`M+j#L&@38ZAW^G5lebo31`$b@knsq>KHxoX5JRYBe?}!_9 zeSlNl*Z6<4)A0NvbJuv(WnT87-f6ebd91DNW6LL#%%~u~!xqeUIW%q-d_z3qJGY*l z59{2doskzAI&C-1L1^4)b~~Vj+-CO*F3kCx zy~JE&{^*_Os%UDhCp1GXfV4BXI%=x4F4b(H;Cc<$ek{1|D~ZcmM`(r|hO{*o*X`82 zK-o*p3UubJ+fl6hH~Spd4iQ{y(mIu2{l!{8X!av(Tl`;f^+a~7c5bJ1Nq*bxJ7Kp< zXrO+c9`V>yJ^Y{NF4p=%vx%&oVYlS-lyGxxw{e0C<5sifgcZbNzwx$P=6tHzV%FAN zh4bUY|GQyka9D7Z=2{@QYJ#ZwHq14S-Z#&^Ju~M6&12Tq?OB*_C@wWWJ^?M-3*Qre zQ~CDZ_#oX@yX*&=2s*3E7-@M$| zKu96<-XVoFLg;A(0)d1gV1*S|u`Y^jT?=-sYZrT6ds}l8wA4+_0SB3isZO5mYJ57A31t@LFmmF`1{?}@BhI|-@+J4CSvrl7uk2?8Vm5rMF zA8G+gJHmdPPp%l?=Mveg86R@~>??`yodr(zQ@zj3cL`}*@rC=1v$2ms+wWRvh_(!l z%y({b;#0lP%m?48w5|Bc(7y1$;7erRf)k&ihc8UP-y|@m6BsuM^vy)}XYj|5;p=Z+ zB1bsOc06SJ-NNjHoIm?*eS^$*w{WtL>iuT>pcbICrG47YPeK3EqciOPFEc*m{Mj2A z-!2aG17(|LKGXt~c0~Kl#LT%!#zbP53jD0J-)D>uIe(7N_|`kvk9xnE548ZL9bvy# zbRpkw#FvAdKZnI1?=5$*AN77CUrrurNAQWrV<9Xz4J($iLNDwm`m`FKIhg-**!=(A z`wo26`^Cm{8_&#VzqyLwC#(Xd50@AjypBSsM9-gy? z@%;-Lw==$H)3TqL4{HHR+mcVl=Q%epKGghkSp4zfh&1?wZ!*M}Iamu&+LnAl|69xW zF#qSU`TxTs)8G^Hn28VbztXnoe~6Ak|I6n89L)bYZ2tf79q0a6ifq8lhxuP=Ti8#; z>p}lx^M4NJ|6KN*osZn=;eq!R^Q^MpIv63`uaJw_kZB9^i22Dw3#olQrg1Dd<=^GY zL428mSTYB3WbPoGV{ta(+)+w(=s(~T_to=!E^5rV;qQnWXMW^Xmk;bD=6hu)w1Ku0 z;%B98X&*TbU=!j){X2KEHc95kZgqLV7g;~bMQpFMC11QBE*BKSerPY^Lv22HF5}zZ zc^m|}pviv7JCwGC{lwm5IS$a5h;Jb@{>u1%b@n4cG;HESPNcLg`J^8f{anSFxmaJ$ z#pmY3BlDAOocV%i*u=L#XCd1vFi7U%t%v%_A<_G9r!-XXZ}3Ho-KU-ovgj~bn3 z`y4~smi7ty|BPQ;k}v3gZ2r%~{GZ3>|F1ha@X_cn^I`s1+LDjf;Z*)Ca^~Q*tO5t~e;%9v z^DzH+%cB1G^*v7OaDnd?tJUEg$oKbmL!Pg+|5%56;6CE>3f*#W4%hdTFC;&$bDH?k zJ41dJA9UL)Nh@=``nzJHHf6gHp6|mEb%<0PrQlcv+avDH6LBx%oNi?}8*pxillFNf z|B~(a4)zlF)#IRB0q#3N-yn1S8i(~7)r#VoR;G5ue516j+DWVjf)6$!zNvUWhw-Vu zx8&AN#(Ho!%!Nu@^2Ln-JA*T+H~6PlHd)XC^-6!b)56#q~e1i9_1&9A-c4`RjIT@ICySx#2_S{ufyf z?uI;FX{WTGtOkdC*D=1kpz$j4eWRXl>@t4Ed~34bL!@oR7y93B=is{Qa6W+Z1Drp4 ziG0il`TaF#hrN*P_W-lcTe$xh`gWP$sOK!Z*hkFwCi`HXQQB7aQT_h|#`iyH{7!t| z_I2+6K{RaQ!yKrzC0|_smsQ}ffBi^&`PlQ9pUe0TcJBX?b>RH1Njs(eWED8zLtoPV zEx!jeC}zq0c9XOHf@s)azkIA=C~Ygg(Eo~luKaI4=Kp*)|9`j0nJ0&iWFOR5l(v<9RR2GN@nO$j{!PU9LxUrq z%2iE#sQoBy$rtB;QF{}IwBJ>X?>1;W9DEP|X8v%wQ~!^x1LxmQ+9~ZPtH2@Oy^Qa1 zXt4O>#}SV9Q@OOseptg$+E#qZ|DvC3|AzTLpUwY29_hrVMyGN9&&T|)w5|A5|6}ui zKIZ@Kx_Q0KAK!A~Q=`MohxuP=OTM`NR~bP3vBBHCLc}AZgF%7o68S%pJ-cT?69t6u z$oy%XLw`(B7w+Dbv{TwsR)vH9*u693>jjM}h394d^nXtFRHNBw&+bD=+lo*5W5mB; zOmrWJvmWPioQL8(O>=hG3({-` zU+=(2-oeawHECP%h4TUWKJon<8fz7vm-$PU10Rh}Gatr=(oWg`LLZ8sOLV`R@jZ(7 zFEhTsSoc2_iASyrc7L9Pbb(LOykCv7YHg#8~j z(fz+i4m1WTJTLQC_4n0M^YPJX=IcY+k}uBxjt>}w{m@>-Hw^E?Topf&`K$UnYpM7s z5|8ZvJ;soBO8bqc{*S&yeB+@pgY5U)Kdk#d_a0{Z)seOpU+8~DKUe;@$82b@_~W-% zEcud0r}XTns(sB{I4`4_(YX3nUB>qdz{AX zcQLfEUoAW`|5(`$e3<{0W(1$8A|>;MzC^Y!ivxPx3atkfp67d0+JO)Azta3;9kl6r zr{b@b%>$eGDi6uS=KUUz;My01@8MrRW6SV4qkpEqJxiLcc$z{U@s)UtNh`J4TW{9)_oJO#f4eXc7tr}S(h z|LgTRPOR1U#=gJa$gz7@;`e(XA90<^zYCvFQlD*V|GH#zo)dI zl=n0L?y&DiwPVD3eNU_fC~b>&l%7@a;rG|`XHV4pd)Dh;-Oqd}Ek5IVeb1?+ZNaBM zH-NSwzD8&)CO*F?Ek5IVcu%YaC~XTq=~<=yS{UDs(7@l#4G-TxJ`Fw*ix}q5p1YCu zAM0?3X#Y_mxzLwYT-0*~u029wdA|Rlv;QbZykO=!gtSxGEnMXY{0C|=#CHrd&LqC9 zz0$Coh>=Wo!(Kq8ZNV4#4KXg*-vR8o2Jh*)KYrF@Y4C{*!o-KYfJ)nfkH+mK%zigO z<7u+rW&_jU6A`+J?@rRT;0wkr{4VU5=y?fFtTFU_4d<6Qe}^xYk)&qrkQd+-_oe>z z0^Yx;Z{=@xh_iiy48dfdH%Z&VKIAuEV|*V$<6Fk}vNKCApR_Ib zwBHc@Tk{QoMltbik>|`8hsHw2_qZdU%9~Amb4lBRPmkMPa~R+D(D*y?Z8^x1PgRvne19eF6yvs1#<>&l z^K)?SjPqEW=i$U2uwD;oz7Bf<`-%Hfzd9W6PtmvYw>-?rZ#2YxzNpt~(oWHC;VNF> zH((Ru!@h-Hml5Aqn>n_ds%Dwm?LyMF;3L0*dWQBJ*i+H#4#v0CiBFA6v){div@Q6^ zZ=jx``LN%k*OQFzUMD^^D$RVT1t@I`KJpvr=bG<1XuLywow_;ksZnX>6Ma3@w%{Yb z@e1R^nq;pHjBg(&KGplod|#2a^cz%%p?tn6xHtGkeoS`z0r|1dxSk5@9;xcjA~&U{ z^%B=QXodMdrfIG%ZzB2VIrE%PufHI7*L=OVghmhI>)hng(<=d2Bjefz*HR70@3Mshm#WW1 z)Y*D3A#K>h!^$Q-_d?YFh%2nJg?u|OzTKg*TA9uByZqC7eN@qjuT)3l{eLBCr{t5f z7Wk0o^?|SL^FB`ajy_ob>)Q`!Db8t{v%_ArZL$iFv>fxAlIBv}657Rmk-M<9Zv{B5zh)+4G(KMr3`h z_a~$sYqxOEf?&YUC3<81Li^hdc>jmO^Ze{L)3BSEr%ZPHg|t)hDZe53ej>g;K72?sKj+jm_{6+r;u}obDf!g6h2Mq!5@1a9 zL5-mg*3SDZ!np^|!xd)7eHHx+_tpKY57tlm%+mMs@tmeE;+@0#P7s}$?9)KnDec4j z25drnEzsDB_;PEV`GP3T#J3%3$NCNI`H*&7#JHB>+Wi>U#g2X>roPr^Z_);|#`k2{eMO&H~cM=gQs2h00k>eAkk8N(w5`4^?I6$$I%Ah7jZ82yEpOvbA{#k z-9B%>`c@yT1t@K4H~xGHo+pUD!PesugA?C+#NQgv^Yiy}sxOqp)!+JTBy9^mIdb{) z0s3~v^*I5YwCfMV-8YNAhoA8CpK;<=qlM<#*P#+`KRI$G$0o+n9UQ~70sZd7ojBB} zAP$yi^&Lps7WR`PSMVXP((T)KG~Q!A2@k*fDknZQD$INpq;0_`N3P^UODn(JcM3GZ z8WR}(?r%ErQHF0Aw|!@jc8YN;pBp0bP|by!f8V9bY@Xkv(t6yAte$dc6BpJ3ly(Zc zg`f5h;sNnF1kHzG_=XrB?d7WI<;y>LE(YY+4i1Bc-`&kJzvGF-bEp8N0PS`X(f z>}tG}_L<7;gZAlni2fPBkL~k}lSiM~KD&~(^jodh%fzm9v2uoyC+qQ7;djIOY(LZ% z`W=V!e4IDoq&!c9w)YEZmu1W@N8rAv>bv-T2Rqg`g4K!!Q{Ai|VgaQs`%UZh6tYXw zdJ1ep{Tg$AzsnilwT}5^;MtAqDg6)&DD9Md(rbqO>U_qBIlteX#Mdt~Ek5IVMnA*? zN;@T=^qL_b>KWRvW6tk~ee>br_uDZoKI3{uKg0q`J0)M}yYX|fpKCtM`TgEic%I+y zuC(}!>lyvtAnlZVtiAz%MfQUa>-P=u_0LIzPxx3vKGN@N(vI~TXj^HwFBli*{Qg+C z4-dcp-p=DTay_FzVgaQcYd0P3gnTSN?~ggZfA~9t(eM9#8g>)D*I>8)hy|2(Nu*F@SW`Iz58dlBD4X#AD<1}2>Og2>0jx0JL~@-e@G zzC?T?ZaJ9o?cmH8L>?x-{Yg94Z@_l4-=Tjif7|~sTzfL(y4%rj#H?rZKc2K>?G`@E zOHfEY)KfIy>Cm{8_y$dNwp);onCx}|X{Y2X4HzWf8pii8Xxz^D&U5Aq@(~l?&7_@@ zkB?i_GqnBgfyV2M?>k36l@FNs{zKX+`P8_D-|fE!=M6a5;zaGd|3<{}SQi~IKy!B3 z3)y~anSI{D{lC(;^9Rp%w2#UMO!oPdv{TxL`;Ctn-#5_sgYjMM$fvS#6W_0-9qTv1 zChfM7xCZ!WuRP)!lIi3(V)qLV!1}+^j;FnSB_Hz}qJOJ#IiL_46B*w}PJC)q8t2mim86}LkNFMcm`kjS4g0 zOwvxtr~Jn2xMn)zTY&e-Tf@U2y2go5jS4g0PNbcZkB!>_+cUo9&|vHEL%((6Q@zj3 zw;yT8j$6cUqP_sTCBT*#fc1m{sJ{$AyC+|uI zK9}b=)2KA_eN5UZ`MBTsfbsngHBCi_JbA=qYy0uuXXg8vv}64S_I>m9|AC!xT}}Xn z-zzcTN8%lrMc>0u_#@7<9M4hfEU!Z)sxGKM9TbjRR$my{9USm?;o*-QXl*w>DvWj; zIFPhs+g0$XaVz{TYBB>h;o5#UYjAFZb9XPXb#I&nII#zB>)AMIpPS?1vwI}xAY78q{U}k&lvbLX%s@fp`M24c^Q(zf7}o|JE(y1RY8NT z{}(M!gHO!-CO)hMC~XVAVBCs11Z(yK-^RHC*ZVko;6xmRnr??5vi)!$<#z{R{eRG& z`nG=2!)e$@L>?ylV17~B7WUD8V-Q=1AB4RlgN`7+;=ay&LF8fLJA||?__W^`bP%)O zG0-@J@g3;Q7epQ=zEep%h2N0RT^n=~<2o1DB3}*wDNf{*;ht&HzMXi#0qA9IH@Ul5O*_?{$f3qC#H z4|i8s zr?8!#p9YuUI#z!#9pL20V%Jv&qZXjFQ}iRf!XoUm8aA1-*vmY7x#yjU-}izB&%5q$ zFX7+dWo&BnGQPXg^X@#v^BzTBR@>7{%y^uB#Y532Zk*_O=b!IoK68|p*%h^#DI~oS;C1=c`0LjF&OoKrES5d{V2vG@gdh8jCoV@?cl_x zyp);mIMTM@(|#1bg7{8@#w7~R^ULmZ;!~sF%!mG_v@Q6wAB7(yK2amUys7M0p6$e^ zdY_r^CeoJiPbdA{30~J|688qbs8tZxU3mYf!t(s`y}VBH=it*){+-ow#Ix!@)3`t_ zKxxOsWlf^iBDo%5Tu0aWkaj~oL**%hG3O8dBlsTv^(!`nbv;p&$@QY2 z>m5AR+qe&R@GqokEA!>{WlBYY2S5(lm03sM^4V8lJY-kRH$& zM)s;y`>g(iy@m`VO(R$E6z?|eh`J(ijfMv1uki54<+g*p%1N`8pAfxk3GZ2=Ukxc? zJd^N#mcsG;aZfn-3E?AR`qz*K(w6q3x@^D|JVmFh4PPDOYk>x>i}+Qxbt%OaH$l-ZgiYelGK122jE8_1+ z54no8Lx0iQUWzN}a}GnUV0^bg1M#uqn>536Jtw(6jdkN8_mXx>J{jEx^U{#J7~dn% zcuC=T{v@}*Ll{tsdEF3a40(>UQ}W5^HspJn@rm*A3FG@M4f~1t-Ng3+X&d|9B8-lO z=y|Z691rg?t}k)zFT^!@aT@)uE`sX^(l*+SxTxQ~fNQ=bzM;_Q1alMa@U$D?^Wm#@Pzb z^Q$YJ`6BDbLr<65na9F^%5kxEtN5rMqoO8=MWo$MWnAau+G`ls84h`#@Fgk-HMJ{h z0ZLnPnc_*_o|iE$tp5+ak8%C(6i+HD<2*GKwE(4U^dl;s1e>(i?Tl+Ju6>udYIb$< zBa|7N?1fr@(w1DETD4;kPfCl4`3C+YF?1fzU2z_Q`Q{j$=id?cA zh_7yx10Rh-<2W2PlC)FuF+YL0iulT)QO)>{cHpDYXy!vLKxrHMor)X7em4xyF;e4U z*fdXVrZv4GMxwi|IJ_bb#fG#}>tVYe~9 zo2~7}y@i<%^?#+El27$3(XOaxXuiAg9`jas_zhcH^Koxs=6jg5Q}S_thI)qPdj=YB zDLl__SZ2+~N2QtXRnkt$$KqJT5yZC+8tWO~{nmVZRG9gYJ1cEDE~4XDxi4irp_mqFfGEc{A^Swp#FEciJ(`Dt9 zzn47|_D>8$ysp}Pcqh_=qCfpjFHb1TcIuk6o*|x&yg%wM!Cxs2pV;AWf7$co{aG9` zybtal&NbrxGny>#A67<_>@tM3Bv&_WmwNo=%z4Ne%H+R6CB6<7(^C9|_>PRX;p@pR z$oYp)7M75Q-;mG-ivp8UO??2J5=aE*V-R7Ys$!^Kx^&Hl&nE!`ALUx<|S!g$# zb@m|U4J>FHx0wHxwk0RE?Fnf^#rV?72A|wWBjo-#P=a*6E06 zPQOwA4(;+n_*>kc`akyk4Sz#R`*W6A+e!7Xz*;6dA@5h(k#=f|X-}*P>v8%nwAg&# zTxQM5Thr|4J|k^QPHInK&yN`==Km3yWY6XsEIE^{Y3AHS+LDvzdGg1`(GiYYHqVdP z0$Qk-hlk&CNH}g&t-}jz3RXjVkHA`k(zN2!Rt)$s4s?5u=nJjU3eWRfzPIEPY=Y6m zhjkF8DdU+O^u1u6v>q$BA|6QgEckz7ykKk+*BHEKalqV%y&OR)f8R9YfDu)sY2<3{ zixn6Ag&H3tF#nHeA$!d`x*fPM|0_+&)kWKDKCC5dB{H#X@KxAO9@1WH-XDRQ{|Gkk z&#$+R(}QuVvK>=x%Tfw*v#rqS)cjVzO>>1WEZN_KB{)G|8O3ln8@gVa^o<_!l zxk&e~Q*rGD3di#o?(M{5+_x|SHDaY1=2>m+Q;Ym%nm1e8=Pbr^DXyit(O>vbm}lA9 z$GBf%#I>Xu!y{TO;JJ$N+=^?FKZl3EsJ9c3aUZ~l`$$vrY^D28Gsc}5f#Rz?qCJ8f5eBxv$%g)FS6q?J`ZvP z*0hyoEDwB>lZ6CyeBR6L}w>a?_`}4?5 z(v0OnjYaT`#O)Q&NIX+uBwG(y{Ie5}u|JQ@Cr!z-weCMH=*`ox8)yku&E+e}lgoHe z{~w8U^ziVvJ;!o`2u;w2<&4TaTd;_aIWwYqpEQtZo+5Z6Qi)6GjbzN_<@ladn4hWMjonp z|MUxKk4k2bdC*^?W&Q2Wak7VTJdMO>RFr0`{-WAvo@}88Z<^#;%y@Rewfi!jFD&~@ zFrS;p6ZZcp&4~7y4<0?Ak7WD*MjnW3kvE5jzx^C1`b$ z`|I(&8rQOY0NY>YFup~t(h!f0L@hvRM({Lwjo68(cur+JsQHh)TA9c5xBtz7N5o<# zo-0UG@{qq#_F0hBe=cP_H{jZPh-ZhH4*f?|z)d`NkY+3U)P?>=tkgCmst(%gR>t!H zu6>$#cFb_FPeeR866^6wGm>W-<3T+|_n#MV?bnP)?US>c&&}ig4bqI^nFr4-pPMyu zD1IJs>Bz-6_rQtvJMm7Odugr?dm+cutIQtX;{Jc=+xa`*=+r)DfAcG8w(7ssU&IVG z&ufr88;NI>k2xTR@%-%2f5l%bGW6e3Ta#u)`^@A07juyAFQdBS+9AZV(+UUsMEILg z14uKHhxK2~jl?q&*CKxo4}Yh}9e5)A&8Sk+jNu9TFXAoC)5J3Y@24vq&tKBlfhWS> zjH)BeNFLFD8UlZV_lPsytTkvj4Hwsu!yfXM1LNI zajyK$DAfE%?MXaKdpXRX5%sE3yOCxqo_Qfp@Ky1kj-h!(ymc7kS=$agf0vqmmlpi~ z>!95U_GrXx5Pa@IRHsCKJV)GB+UG#VgBWnsKgDD-1# z)P5Q<<^!J9j0bV)DD0yP4}V!ZW$Sgs&*A0y4Ze05)@$6FJ#AEi)`1~I<{jTtH5%v+Sg;5pS zhkgEU)Kj?jHO6zU15cEHM*Sa}e%FDKJaw=RwHIOsJ-*(?wLdeSpB#89Bm58c?U=YR(lj6YU+8H>7m84EYyYbMUKabAP-KAg{Kt`2)4`^yJp50t_aqqo+#^Z)wy za6aGQZ9epO{QuE|M*lo|OS(r2`^e8}j>bL*)n21>aqR%c_mV@r5ix&_ z#$Etu`d!zA{im(}5mhjm5es{b?#Xx%8;(ZZCp`RJ$Nc&EYjly+^mFcx>Cdxh{u+%& z)Ap&vwRH-|^LM?}x<3b>`Zdg_qo^isyN7q0y~ z@htD-(0?N4)6oY=O~30ku{_(T`E>MtjOTD%%j)mTPj})m&R?Uk{|}meSJj`*_NkXV zs5gy54mt{XF`iwR7=?U&^f5S>;sj?$AF}@*!|ZV>?t7!YtG{~}Cwmy@&(Wy=L(|V` zGLCQ2UuN_9YBa0=k4AlMG^_vbew6k2F7d`i_+!-nm8M}l5sw<*Xh%Js9>KLQGW+~y zJ)T7GHO~*I|0~TDJi+*Wit(TZIr>B5*<+ytPt<&c`oGdl!6WzSjeeW)e1>aT{eO>J z9C)JUE7bp?>E~cymgH$Wok5pqCGM*2u z+beQ@C_w!mnttaMk?j@ml;QjEf1?qzk4Bt~ek5#_C_v0pfHV>`{4K1Jo9iZtN-uyoOSyI`*98PcLD1E z(DXYaFNhdVLHm^B`=b9YW<0y#{l2u&=42!AB(b137%9A3cc|NGd+$3gEg^Pv6@O+N?i z(5k)WW8Ms&-5_2eYb`V=5B2}{ zv=f)H{$B7TX{O|YPZWpbdW>-)=Py_%za{?hR}6FFGRCO|!r!h#oLU(6E2@i8JBpPP z9Fpe^#)F){;9Kz>dH5@i{PS^H!Ftk^{haCu$vk0PR`4a``N>NZ`U(g3`O(r3i2f82 zm%%JrGX;-~%L>?j`$FXWg~N$w-xdd+h`6i}^PD|G-uW@Ffbn zdWmB6rDD`*iz!aipzZZS^cUPq&truJcweQ}{e7=VaP zuZa0v@?gxXd9`pduANCd`)%gn7bD`r!Uocm?PKDZ249K!UGgA5);!I)c1Olz9~VaM z%Pd?>nz*0YPX|0ne!39#3(d7NG!Vyyhriz!)_x~4UM<{{G*fahKV7(-aUtg~Wb^(? zwf`~o{1F+q7NQoQG*fahKVA3_#)bL6@Em0>&tG}5wY?(a$3o2iN;4%FVm5K$=Msf1 z4k)|;?^ztMa-%g@WE@#|C22D=?~Pi`V4VxA?AOj zDectN5SN5JqIRe4#OD7(%>RY#^Z)z596sMLRlkafZwoR1D@_Y7+2ciCg#MmD-xBSZ zDEt*Cp2J)SpI!)`URVl$j`r=SL$()-KMFs@JvZpP`3DqR+9f8=F8oSr`dz+{@!w)! zZ@90e@N+iKe((}S3C44xrT>nJvkQMG%~=245{|E5iKl3DT-%NDd~eAUj4or`UzAOn zt$4(G(=^oRmtdE;+*vHzs|f2D%5N9-!ut`#bKsqpJTdWg(O}Y){g~o@;t4+O7w&cr z>{NvH3(ZvsjS0kc&|qsnB*={MbjV)O4o>hGDR8ux*{ zjPZ5R4AP9{Dra06_XXHJYq+Mvd^uI=K);%4DlQ?)tVf5mKk{vCS=5?DtQwcEt_GH{iF>l>WoW63g_UiUKQ zqQ*P=BwUM}y=XSBKN7#AhqcMiaXt2C#vQUBvpPueXk1&Ruka7;Y1u9@@pN%HX~x(^ z`01p6jP}y~xET3=G0XoCJ>8NkCY~)u{;xD6{m_DdN!SVfhIo+w7w^FAWV=s0CY~)u z+bd1UvlYvSRP2aagg7J*%lnJ}f@}8)zK4JP!ya_{oRhIWTa36yX|}RY@Tm|LJBIZU z)TqclD{<{A;yGMB7soC>Gsca@h_RGrB#($070=%p4?go(d)A#~7y-UrL&hJR(L@JQp#ZYjN$JjAyk2PegoH4F9S$ zBY1+?O!3^zc<#fsPcWWM4m=TYS@9#JDS29tFA7vEjLCpKx)9HiRo49_GX5H~ z6=_EDlo1cwhj{XE?LfwJvo%j-+%={zX-4vtGoD_IXBe(U{v00uQNyiyBIB(w#iSX@ zQ^9z!SwOcJVxBSe3di%0y2z3zCe9dBO`4L2#`m=FQ|8;?t2{)19y6KoG~zwx)9~<* zULN-6*YSUBp7-<_elE-N5)+^^m$X{hMR5c(Cs-uM9LBL7uH98(c>dAPg?35B5zd(W z`9Nb(3s71y9A&~Lk^}n|bo=ayYuWPvj!}75DvofbOyWQ+ptNE*$~6b-7n%ce{+QKd zk7Ly5fm3mWGh`CSF{Bm4QK31GWE`j9+G~m9*g;n9qG!e=j6WH(7ckz!s!^#eNMozK=>iVETsmneaM3=jYKe|y>DwbefTh<(H*aJNcR z{{6p9`S<^-q^_`kDo(82NKUpcP=YzXq^D4jhrha$6Q?n6DM2g%O+VWY?MLfe++33fTi`FgL+AG}qC+$_qxKQIMnM+(J%yAe85&Mu!nn+V} znfq7Jj^fj5=%A9Tk#Q}A#x9KONr(QWXA|hMc%x(qX5b>a{Q zF74f0aqUN%R$PcrMcuBn1=qccuRhKmI8l=-Mg6Db8_m~YFJyb69;oedGVY7d&xMD7 z;$aSU(X&k}yI}r@rk@?`M~okLay1p#i*d*1;gU=6{zir6`6s^NFz)p1(~9dFsp;n) zEbkXL|CI6hr{rJEUdZ`N))LoAP1fTs^7B0*4T6it-QA4qQD`84 z4G;gMXRX^Y$T$r97fPNZ&6xg8Tx#4QZqfZqwCg7d%kxhjVa*kpx0bvwHT`VNACfED zua_mwH`qs^xiIIK{LHwHw(eh%`D@AdQq%9c&Vq~2HyHPt3v2$Rof+5n)?AT!Y$@t0 z(DbuW&yeyVNBAerRhonMST_$3|CBu}`@NWJ#D9kVRoa_0WBQkvZv>a_ z_wbp-H53{w??2^Z%l;LUXO|X{rWIG%@8QRZ3;BPkjC7>M{8Oh|as|EKY%k>hO4Eu< z%r~MPSskEsCf+Yr&FJ~3o@dDw^m;Sbe5vVYS6lRZ=I=2NlD&3>#-5Dp2g`mR^m;Sb zu2R#_L4F-$uSOY{Vow;p2KHLUxK=>p2;%zZ{g(C$dVQU--~XL7!~8&0W`ocFQy#>* zWZxGQvON!Ee8~Ar&m_LnreL?a__-JGPyBN#1);I-Uy53Q(zNEo7!Zf#JCX6Nf!3YD z_wcWO+8QT5WBgotnbh=i;{91*KUQBZJ<&^)VGm5%_Bi*!c_dCezo2vzz7E8R{kw=k zL|&38sl`KX_qCC6D*{;&G|60bZQkG~La*;Z0R8PY%Fa0gx< zSBrew9H)x=mx(>L+MjM>_s5)H7WQ2z_-DLnegELE)EN4G*$~o9;ja`|l0U`R*Zr)l z7+RPw!^1ywdux9c85foz7Eqeje9WK1FA-lYv@maKzB{b>BICodSyI!_Jv8iB=J+sZ zSLII;SHPDN*EV>Mc~fznm1F78)L)4)wd+o#nPPm3IA6zy@bAQheKBR2FE!UGmi;Xz zJ}ldpG_ANoe}*}Sxc&i+6BL%`pY^FFS4@0ZhFCypT5*N`4D%pyoeGT$iR((hFz1(jtmXZ4T;}VDdU)A7(zLRR8h2Q~P;o>V=KM0WcX;^c zy3E%R`@PG)lbU{Z->@IGtw)IV5_zn6O0CQarM)&VF2tbaofMYmpS#L3{|Wk$F^(_a zOltaFzp~(B^@#FJ;wneXQQn_%edEMsjNi+#zXO_n*Xa3%?8WL4<=q(<=KS(-js%^* zW;cg%7g7H%$7cbQW=#JI+L6^G$}xAT{#A~=p`6B-zvcr=KPB2RB7QEPN}5(&VZSe* z#JG^llrN%oJa3W%S48|=K94l5xWf6SyqR$!zbZe3ah>D96%jv||5a-G*=jv6Zak`b z1pH@3DXzo*>++9q{)G3PaQ4UR7d2mpy%7GOd}n4C`0esj^zHofzI7OPJWglpDCMiA zrk{6k%K5H>&v%$lsDEQFDZiAs&fnE~+(p*E%P%0!n0_SYVZo*2Jj`*#^)G1L#<*FH23otBR+h$6ZD6G&jjF$Cvh>??MCfRe1OpcCqG)%x}s+m70E6RR?UF z->CVfg4e&{2gqLEz!xYg%r_SvW7+Rx>fhzRkfzKF+vd}pOXsWtL;8!Kh_50GT6r4K zzwi%BKN^$gRCFQDnEo&3Lt(cin7@4%N6 zR{=D}Gp^e#xnlC13e*pw>1Qvt7?*0^f#1ixLtInv9`jas_!oDz?Ef)&PQ`So>E~P; za+&*?$nVQ}-A3dIYFt*#g~n2a<@p!CW@)b=J~h_CE4Cxeh`NaA|C~#Y0nz^}5YK2n z%=s1j6W=9^t?MF!&=@~g>_eK?d}vE?NItA*Xg<{ZE7<;nOKx@IGse*sM@daT_qVWJ z&3-MgAFJCSCnPSc|5scWFymkU(k_;MO;|0W4qbuuf2A2SJ{6bFUn}R)=ILw}Em z<0}vgC`~K7D1Ukf<9ZkxVr?fl{7XM_;EIUjD-a7PO)Dy9g zh~p~|3n)!1uCQ)|8VB|7&!F)m<67gu6%j{Qh*;o9)ZuSP=}$$RqwC=4$Het3`tw$d z>w9ai$U68~pEOhWE5()MPcg7$oOz9VgaRT&By#H#y{~P{~sHE z4_5Rqf8LreGEN+e{2!WrUVL3b_$?7v%R~4L_$=Z={y&!G|5p@P`qP*?_*mrsN;Abc z5L|&j6Y#pPLiJg~rcij=e}~`nk(f z^0dH?iLuzfsCll!``a1MYfe1I{mo+$3qaHF+}Rjsar?->c_i*GxiCLyu6v;I8gX4U z+tM!tb~47NV-X8L)6d<@f-77z6#Gw0FyEJ6j1zT)QsnHV$d5~ri3NCDE{x}K2cC#{uX0PN>32@mZ}9wA{@jJi%@`N<{8tVlu4^Vc zv|B{HSJ_u;`ng}F=+A;n^=FL#O7=OxO6>Wsgx?Gg|C$FKxFX`c$}v*Y&r9VW%Y*(@ zS;*{Eg=^)Ck0kQ1t+Q^wVCF?^Ar8I|q_Re8`gy7P6S8?R-YTaso|$-$`b2p6*WP8# z6U?|K9_;^vrr-IQ6zzuRF1^D=YmW1 zC-_ISU!t-F=Q5nA$5bAN6KlnlYw$TCu$ET zOJtl|d4kmR^ERaLM-^dzK92FA{$F{C{;mD%%Psp)OdMH>`ad-Nymcvgg8saQ@mz^( zZ)H4JTk^!jkCit{O+PP{AF5#eMvODmQFOcAh4+sT*A4wF+bt$et6WQ(a$ck7 z0V4n4D{d?M5$YG3=Sf`qD&zUV^7**I->WzNUDe9}l4dKOAnO%>Tk*_8O9>wF zH*lrrkv!iqomZE&+@<~tXnejHhyDLbOL8Q~_w=btyb>JaeBu~~ z_5X22$}FCL^T(FsE2iI!!}`C{H1de5ugEv%dGfiz<524xSA}ysFQfTgoKNFC2j|gV z#;mJx-h=aL&DgFlq&>Pbdz68L>W%&_|7r(&Oe9UCJ<7E`%4Ph1H)8bzG5?5tk5{7> zwFouPOlY9pQXGj&QDc1^*CS6VISAK_dgA%Geh*yVFU8gPwzNkTv&RBlx39j=|My?p z!5)YOl%~-h71|yZut&zMcf5>+Pk9;hv7R{$`)E!@8~qb8+htgfIcmC>SdI9r%MPAD z9P!B(Q$26-*#7O5qf5+|S@H1I9Y z-?kc{p5t7Lr#Fee3%W#pogTIi zc$MEDhc*9kS23QC!_Tw7fd7~3^8wnMKv($cEF>cnpm#cHqCfD@(Y5BG`r<0jKk$7o zbJmgYiSK(EEnnb#1kaLu4Cm!IZ-?fgI8Vj-Z=5uDYWP3%LiXEJnO&~OJ?_zp{%yNh z&d)J*i*e$22sKmMh1E6j`%-&701foh@bGVYz=_LPzZi${t~66}p%x|%X)m;a?nf^| z>^^0+Dl4eS-FsGATsH12u%=zQKWnB9?*~?fz7>8IuX{O|=2<|Pp zzF=I)`KvHq!o$D)83(S2Is)9T)=bGYmT_$&uBxq|(Nkf0{vGzuON{(`f>o#mD9w~y zC}@a7*sCg=arMLdg5Z1j*S}+xgS{f^301>MGbPu!;NFsJ2;(Y&Mz{x2a=q!m6;V&9 z8c&+ipHnM`*C03#JmQ3C8{vzS5@L%j1zNtm9XRCI8TE=JsjsAILVIM zpy|Gl_CTAd@m4ht_gbpe{5vZx=eH81re(zM``9$j+n$+!-N#<9e8*A~`Xk@c1;%%Ms%vi~$A^P2B9 zN}j_R&xyG9T*kADb^AruS*p$?%@jQIB+qG#=R#b2E#rC9nkTZpQS~pjELuDy?V?rye>mtyK0Rj36h%~+n6kO%7*db}a$uX>j8sOLkyfd3a4zs1xy zs!$71nvpy;@IT5vk1-zP{8cOtxX1RnjzRA+kAKtxpy_v6ir;@7elJsd&1O8WGak(U zRo~#6;PCG`!m_<$>MT{5|COfXp*l-_n77w^wWuZFko||v`&B>U`LvlK4d$_XCs@`I zgl`m2$1(Xw)B=>Ij`*P zyzbBAd*j*>3di&B+tP{07~hV^oTxNY@W{UpIesAHL9KWEc*f(lera5n8$XsbQ}C3F z_QLa!$v&tzkDtYO?su|}F`gZd99U_l;Hi*2^^6B~@bNnm&;Rvs;E9N1$8SrTlE*y0 zn#5ft&qBttGp_v`<5_7rzQovyh(E?7j#8R2_GuEahvZq#c=pG&r!$_v+*}C5=FHBtbzaR3uzC0enZVy zUl}UqYHG>=BIb3mMNfxb_albD=d)WV|yT^$De!f+rZ?H!+@j zaqZ)b$NulaMaDbh|3jK7c!Kf0mhn7;Yf(1~5B~w%zY7-=?~KP9nbK^-Gh5c+MZHSA zs+Ilczl`TyT>GWM@%#sVw`{MNdh_^CNi*b`hpJhftRl|yX5j05#5#4@X*^Bxe8hM* zh?18+{D*c9d0xl=i>||qxm=EHUN;-Rk+dQ>YP=>?^908_=%aoh>TMH{vrnKs01`%W zq7JFX-Gr>9pYb13f0s2CXE>wE`*p^>lkL*%EfO@LA7*jI1mye^21pd~kN@!aFz!lq zzi`IncA3zJvO@VXM0NyWq(#*oiLfSBuA&Db`kav?E;F>9_XN&qXE~VMjamhf9|zfH_|)c zliFntX+?0%L(2plVjlVpC*tu5qj2tpQ}o?gI5D50%@PxC#rde0(R&5XofKmGd==vX z_aZy&hWD%<@JL@vJA@Hbk{z%Y5L%hQ38#~m*?IVsAoioZ*?P}(Q?{{(irm2o`?4VL#m?(%uvC_6ntnno^RCllABj0^ey zgmq-E$A7ile;Q{m{T}xGO~Cqjc=%7;(+*tgNz=&1 z?Zvqezi2MZ`4cx&Sf2mnet({8Vg_lp;tJ*`Zm;0~1pVuG;+ohA8oh|?snPAg)r~Zb zT-;uaYhn)L>JNhpf0u4y-S$emxO;{w6LVj_1_h2gaCmjf*Fu{;#xRIZ$Dj9E%ypF1U6D<9H(d zxN9O}7Nr%-fqISP*qw14fNPH=j^_tkav0*_iHMh!mgM05Rm`uVhlsB@BnQjCCmx4u z&tx1gSoT*jXNdm{^XtTal4cv8;4dY$U{>2k^PJ4=vIf^)Njxu{V-^1x^QVcZWhku( zj(JHO7cq`&aV_fV;o-lyl_iHEKA(vEUuntlv?aWW@+ZN*t_8APSl&PJ9$bTYRNeoj zmEM-(HGVE`yo^&Vk~D4~A}wi$t=irnv64I_#{_6$d`7h73 zw1cTXd`DW5c7V?ihve8m?J>#2?=E|S{I>t{l_AGEybtsLNyzQl&&VH4(Qhc96FR2; zQ7&Zy9+uZn>VkXq4!(zf{g-X$7en4OsXJ*!+J)_(n3Tutf_mj776-ht*s6VudDA4! z|4J*8V=UQY5}W@gVg8?lMhXxAm0PVijCs?fD$GloZc zTFG-Wv(J6F_6f#wxf73Zoo^D>d6Z@hkMy{b=OM=PEUtZ%@%-k%qrGmc_Ii~xV|b+J zl{|<6^!UaYn)DU%ys^-MM|3gYn$rz@xozE1q9S6ZaGQ zXn7o|{Ef&{7hu1EJR}$57GLE|~KthjTja>A!iH^}ef;NV^~wP?{EY z(S8y3ATHFzCnJvz5C6^Aths^}H$#3lxsEhtzfPXdgMKs(ZPpLfU5}v(Gf#cY(g0|NcfV zN4)#P-j77a7gL%^JH|eX(0+}uP779`nVJ|^ z+V4Wfhx~ua-DJOyIy?H0p!b>iZX@j&zG;Z!76iR7wBId^?|x{o_5P34-`%ktzd`Ra z^F2=5^0{kyM*mg=-?lBH;5uXqK~IFaq#Yk&od1Q^2h5IdcrvTA_A@~*G;_X9+Truz zOz~bF;&tVT=Ydrok`wzF^?3OdT0au!$LjB5+1XQ3nmJJmP};J+ySA~X$OPKt6;swT zzF)n>ROGAS;eY&dT5+@S`B_u3UZAvN`FLJ|`F3i8_@;Kn`~C{g^FP@oEk0vhKeZQW zOTM=LCa_-{wMD_`kNp(Gsg8(QNK{ylCQ15;e0{dhkEc7e8#+DDr~N_WBXUDykhFkjPGyIIGp%C+boU#6_Hm= z{X1#L+OJh!G4(*kcQiCuz5lZ#)36`QD|kLJ^%T;!;#2K=BI7$38dovM= zv67g2qL-*fK2|-_>+nOiAJ$K_fBOmd-9q2i|6*Tf`y}TR8@$bj{tms-^Q9;suhp4! zuULDv$}g&+qepm~x4r^4BPyIasTfUh5qIxQ6$MChu zFA#SSAJ+VgA*z zkzWYT$ovAa9C5CM)=>)6^S}ByeEzgud&lM%)!6^1v}Jp@%`e0gq1xmZ)rT;?)YYsZ+JHi zzKHyyriQd7U)%gb_>VUE1;!-t&4R{u3eWSuX>gABBJ+zHtp6+R7(NwG>HMN*9^+dA z4HgG{bG|a z-X@=@xtQ@G|F5}MTgCtOM@Rn~lTXwj|5w_QuWddd#;5B4I-fvWk^PYW*E~mj->JVp zVHaPj-8shkbq(@=r5(f9CZE7uPJGD!Yq0+$JpAt-bo6gA`9ux!f2AFfPYC-(<`alN zi1RaOZB&?^|NY4J%O`5SCGCiOLU2ar6NryAXD#X!wVfH~DPcar{6g*K^fQ+0Ep79R z*Kv=w`Gk0)YMXqbW)tJf!Mz6(-w!j=ir0<#L~S3^mi;k`uT?%#+mrDPgGL48yDcp~ zV?I$khO{I6O<=!P`9y6Y;~Ni+8N~Nvv7^6@Y8R2V6<-+d)nY$`s;|`k1sbau-_L3B8RPldJxM#ZeR({;3S%E@I(7TwTFiZQ zC*WL)*Vu=Lag#vXCu*y4;&;q}xHaP5C_?NMM^k?QJT-MaQ< zW}j4h}P9mAOv8JcYy4j>a`gW(`Al6iX-oUG&1VAp1nsBu8Q6pR z*S65Wd=(!4uL(#05%hjzK2x`hv}5?%#vnUl{;OkkhhLv>zkH?+eOYNosbE(TSfb=kJKUmSK5a5 z7Jm;xe6FJgd&cXrr)?T`-N}7ybu9m{L;hcPAGP;y>mA!WhJW-)5X&KEY=HD`IqiO*ToeM6jB zN>0>wWt^)5PW68*^MBR;#=NI~E4oL@aWn(Z8v&HCXZ_}k6Z2kug`)EO-``GS97X&c z@%sLxozk8GAC03`UZP-T`YMgE4d))9xaQy*q0#>KXekaCxPa2#Nc}V?Y(zfPg;~4EmoS5_L zS8C2I%!0Y%ozu98$VciC3n*=CPBo6j_}GJS9*pA!GCOSm#~=EBS&8}1 zc8bh9>wh6_IewGt9x6^0br12WGx3=Rxla^!(SC3mKL029Br*$E1 z*^bGd8!_@B?k*8D!j5P=;_QX@p^w0~vogmziC*2$q}}rz$U) zwisHw5vO10#MyTJisdiUb|!7yS3GBxe_lxS&pJe|vk<$AC$9$matY(x3mS(qK9_Y5 z8a-w^Vh^&?mUhfd$(J<$O{_o+SZ(E{)4{;XJXoFoHycp z7(NYk`}#9+VqWa%L-x1T%uZK^laC%VXDw;RjGy4C3i4C$!Tg812(@<;GD24Q&HpCfH+PVTP}-)PP^p!GR%c1ovSr=MyI zKgRNah7U>Gnv?tMb&L~pegpQsg-2GWbn12D334WTZY1rLs%PN;|f$w_}`7-;#0m!21!z*}2Km5Ar!h_-+&DAkwzxWaDQ# z;u~$xLTF)~Iy|yEUzG-@@ZBcPO47FGRO1JJ8=Q&h>Wt|0B0 z@yqMkGGCd#H{-*e{OKn$zB?`BEj2D;>h05yA?+ADa=xVbZ~Bpp6MO!qUqYN+%AD;O zL|!I4o=4i&oP7MA!#FYLPrsdUp6tvSL|!J&n@HQ5Q;lCSey(SnnDeJU$v8i8=8UYj zPyY{TTXXX9vzBpU&Y%7cadxeC<_z){lRbq^LTx#I+Sa>8eAcGkJ^dBN_W?A%WqcR5 zU%h+!SEMcN*tXu?hL6{~r+>~kv34<|7jb3}cB*?))}rjV0b0IyptllxTPopq#r%ME z7Thy2BOB*1oD*%O&|6Nw@y$+l-dd!^vB5i9kC2RqT|HQVVa(vBIwyuK~x9qciX%~1f@_B2d<)l~j_Z!a^>{wo3=b#brBsKs&*RKKAK^My|If33ZX)*{ zX8WKPptNK95w}mW|M-$|{){@?mio8L%KOl|9l7@~ayFv=ue7Z>ng3`6mhy9rU7*G4 z|J^2Ab8_!t=Ilw@)|||LH0Co-)c+g9F$?^xZs%Haa_?d0MEzfBTXQP^fq15o)&Co- z@SfHGyM1HL$w#l56ZL0GsQXfTqyFE>>i_w(E$3g0`hVj>(vGns=Svzt zs7(_m>i>=V()h_=YiY;i(POqF>i4X-Bko z@VRJS{}=s{)!!RW#QXCZUpn=}i28fuS)?6d$JTtw?R`3H?@OS?>hC>fTiQ|8NrJD& z&l@-5vw%w5np3qm+F%COQQ$KZ@JC{-Cz^_JVk|Z-!uua^Zt@Z{$%krVx5o=H|21C4 z?DPoUv-*FJtJAWRvHstPT7c5FwiEZ)s8i~B1@-^N&$R`zdS;}>Y20_;i2A?Mw&vvi zdL84$oIg`zdRaZUPm9x7|8Lw#+9}7cs{gb6btdZbGjjtt*$>#dz|1WA9)2RL=UtY5 zoR1g2E+9U0(l%eB@oT96qu=ZHo{9SZOjiHzH6aZ<3g0~{{C&9{Q2$rjDcf6ds_~2Q zBgUrcmoriSpE)VGhp=0(v(n%czT3oEN!r$&Z2ZhbAJv>S(3;CQ*QdcLA|DgyEYh~- zWaDQhf_Ke{Ie#XrzxSSz2B(O8Oq@$eJ7)aw`nJqhz$fOwL?iMI_|8P*(>T{b3w6bg zKEybkxg)a=>i;uY{lE8>j^i|@{y*~=(vE3IZl9$2cP6X<&qV!yCaeGV8R*=OLF8p> zN7Vn7wlyaozpVa0^Gay3`hTB8oH>KY%fxvTX{A$)onzzGV z2s`24y5G$z#rqn4yR3eXIN6D64kkNIBy9&f$q_6$s~Bekw6-D6{{5XespeqfY$0tq ze%sdj#rSAb??>B_9k+wV9*pl0hxw0J>`Z*SkhZj=Iez7QN%J527jga#T1PO>?;ZRg zjb39MGwbi9ZOzH%Ka2t5#GF6tEaDt6$AObZubJ~y(zfPg^Pd=}%5TrYoImSY#(9kc zCygF6=M|)F&B^A!S(h?S%=xqKC(eNh2TmG2X3o1wJ7)awda|t7&ANl}Jq(Qx7~f9T zm6|(iSrzs*W+9Zy*qF|sd+o>h4h2CkM3`u;=cHtTzF&+ ze9^ic`RFy<=^N6vwi6$}>xmOv&k{{rD@-qIP(jGK4*xHFPD2wuyUu<_{;E?5RL-eaxp%11Hru)MyhFKJubm5t*j>_JfN-!uYR*e4MlS%coQ z=H#Q;%!yb)X~&FXUe}i67IX_q3|J zH(_6c?vI%Bn@(VSuKWIiI-POfd(+XR9bw1Te97&-ig9AjZ@QQ`ho)1vi`e(xw1%{; zIeB}Z%{VdVH{HfK)2Z7n5!4=<)Fm-hZWUku@xx zx?#k=`zFK!N;~EFRdsj4_Yvd6oIg8*@wwLR#Q5d)bw2O?O4=#gQPs0c0v2h{vY|^&oWaAfoO1JmyKF}&)oJU&vYsDzO3g2zw97fvK zoNWA}-xDYHtIV!uoNuMUDIy;eC-!S9ZEH?7e$hY0*i_?ZHs<`<3y5>X*fcmrHY9Gk$noS;jlF5!`CNZK1I{<2&6l-cjuxQ}>>|jI?9y$oZ1yzu8L}=RVLnl{iOk z?QF*&@-f-*VA8hcRO1K!x=Ea8%gV1^er|1V?Yu*lfA^gnj1DKu8#QQ7s?XpJh z=4_`R@-o@!BGR_D6Cc0W-=O>5HPE`7aX#eC8RRV{&Ra>_nv;*;n;GZ*(0YbANA+>$ z4DuEe=i{U;$8X!ZyND0l)ZNj)$c`^U<9)_=Q2W*0XTL?-(vEHG?rr#Z-5q0qI6r~b zkBoDZQ~i^&7Ly$}khTM-9Kmw@V4SLcIR|og#N0i{4!}9+* z$p7bv2O9)ORzW8xPO1TzIFbJ=Z8@IW*1<)8<#lGc4h_D<9K_mluy20OZa5Fcc{=(O z=E;seq*oV4Uwe_(dAc z#<*tA9;9u}spezR-*#i12jD&1_g6U4fs@xDO!hp2w5>VWe29KV_Qd|bIc)!5;n@zH zGVvS^m|_~E0+%!gP&X~)=+^Cgd;dzl@dfEKGi6g^;VM?QMYoc|?lYfe6Xo@boM z|L1HXdlvV!=H#Qt%=sy4TXU-MgP0p}Z({cOIB$jy_7Bau7w7XhQ7dWQ((|5xzv`$% z`fXN+XingsZ2m2_e;za+y+%7VV=sWxwziWRzpxYbt0k}pA~EYyoa>RJ>;;>N+Q!n9 z)=4zNwlh(~orM@+7W!2a`t9t)VdF}i7Ws{^lV}SSUo~U?Z)WxXV*BS&bMIlc6Xt)V z9pgWEeO>ww)Y*t{A~ab2e~j(lSG1`AH=`Dyv}4+l^CkHY)B=eU_5WsSzpODASdPnN z?_sth>io%ZT{?9&wCCv*k@nGSJeLx>WXs+-tUBSKhJv_pLg!4L)wYe|C=%YH-Dw? zmR08Vd|1`*jQj4JG5;%V+}Fd%i;e1d&-{W`=l{0gzq+S4kK*`PCb5GSpB~R z_5YS?h3RFLKamEfh`daksQ)W%2hL#pBHn3X_5T*k`7NyeU*Yz=iJ)8j&LE@hmk|F@jVIDc_&?;!Fq z+3{e~cHj)g58~@))cu=L_isVnzeR9=?Iq?SADG)i^LE$^*`BQa--7yo3#Fhr18t@|1HS*Tb?1#$}OBZ zgS^GW`8a9Ej$c-hlkLsw|1B>Oq>3Uv4{lA6P z|0~~hup`e|Oq{6yD{Ti(n*Uh+zXf^m+)mWqh+ji1*v-+htYFupYmB^cv%Xx${XowjG&$`1plQ zh;t`s?ZY_lvu;N|dd-~6N!x)_k6+Ply1%W2*3rZ{KHr*?k6tt9VWjQAN#pkr#tU3AUHFKUp+76sFe*d4g^MH?|xc>NR$sVEi-U%%bg6X}vfdj@ya+hVxMYiSM zi`?aIxyv@ag&uk!p(G*n8an*x!3hw0@BROq*?sfgO0%n(v$TBH(jB_re)VSNwb?r@ z7o3RsXJ0QkA9d!GtJltXHEZXtU(pfM>*or=cMCM`WxnI~bzDCV{kpUN#@e}d6nv@m zgZ#$K%ZH$adOkU#zYwX%`@e$klOQZLctLdhrHo}ut zS2~up9qdT`uvUsjkM}6SiI`uylsQk@st7wOA8yHCOBb-V2Pd!Jxq=fhzx0oSb663a z%7@!HFJx^GPLuawjq;LPaT zl_D1)?cDVv`eJ%s-Y@tN^GiP!d{aHwPfp*i^cB|5wWHvpIH>9?#1-W;L-?bx?0B4= za1O+Yy|yy$;Tibm{6^d9MPa9}aLveEAv*aR?{SPXFx$HLg|$8G#OqhQf3Iv~Xzk3L zr=0E08E0S?&a!P;+k?}r-?FXPo@IML>kz?toi}G@->&SptnI;R)^FKKdkDUM9_v?D{> zrU*{N{IaVB=Q59ZDJy>)=StT0;EdOg^4l-s{1F;k;oJ}BtvK;q*@uR=#lF$&1F^x( zyX$dX5r131>tQF^d9c~(udJQBennplaV>a!Mo_Z0DkyoNPf&8-gE)T(O75MB^U9{p z@)%1K#Q(B&=EtKpZJqsx^d8oHuMF{@ zv~%Z?uusZ=i1=HEn!oHT!Fjv$I7;tf=lq1VJviBaU|!RF!xnAWWi#e%OL@My55CKW z{4?@%_Pgwa=l6(T>kwb0x8dLGX}mtG-;lO5`<3qn|JKX^rKqiY{x7{sF+3c9ai6HM zCu;sK`u}LVL~Y&ke7Sm=M~=hqSvzM0u_I@CHP|_E zzba{GjyHb-W?9fK=%UBFTJYiXsk+Q(zV?29pM<(`*1lmE#7@%Av||Il)Ob%9oORH; zfH_aw)6tGZ7=N|)3%jggZ4XW!?^S~HQfS>HIBSaHwDt?T;C>3y_TY^DBF3WZry%V1 zN1TZB-5!V5e{iA>?1~zzE9#f7s13ScZnVUq=Nn%X`d;zxA?>dgKt#rgdLUdw&bl{@!1cg?ZIi*FXlgU?g*^| z*q$8*7s07~w~cde*7o3x*DvBU)+loxjK?Pm&U=gC%;*<(J({&WIL-QjA7M_!{H|v+ z=O1<{f-|FE*!4`-&RsvEAE*3K*A9ZO8y-&-e17i}Ry$^K-C!H!ZzGWlk?09Ixc@Lgz z>VAA#vm~6PB>Mv0kPFZ?Jb2AIg8wtT-8P5T@98Q*)UnRPuCl_n*tOe^tnI-WuOs;H zuILeWt;Kl`PW0`%9f$KQoV@>Rz?=IUwN6xwpmFVXI3Bk)SBW~l?O`X`d9c~(MApt- z$D&`O`EXx_;X4f)-I?#KQ=QkbT*cPBtJ~SEojZ<#Pp)H(8FTiA)^Ndjo3kC|DzsjvyRogGWHw;t=Y`kX>(^zxr*(a$OTB-gOk@U?r$)h^P#m?a1L?il&jayiCloR zJvdDq?1uXr4Ce*V!u#ZsBf@*xwo%_Z)PZvK*g264kaq6+5q&YeesEud;X};thWDo> zN7Q+D$MxgTx9fH%Yvv@Aebn1<~2(IgYpNN@U#c*X@Sf=zz>Bzv6s>lHGfak)7^XE9FB7~&b2tN!_Q!Dw8Ww2UH9FEold~x zGtHHv(r1dYleKTx9rwkMwuhaJzwVCv8q9bi=6A1T&a#7w;LSJB%Ci zRY7Bd;9F3{`pxLubsxpr4t8wRx5M0G&KhVfX3j1f7hy-`yDfQR_qnX?!O80v`HdOx z<nU`f+w*d(PHb^C+&?-6Ha^m}C8SD^Bm^tkdm7WXCg*bO`f zo8K|&c7-=jX8*3o{;cg`H?xj=>?7=U7_?3moIiVWX7=xTAQvF*+;uGaV`_e4O_=%F z12MmcYUspA)V-I-I+m3`jjPJpX&!cF?OZzwKC_M$XGg(_nBQXp2$Ud?j<C7otkDYT@*3Ml& zqA#Y_4{CYl+YgVAV!rZS9M_LS->zpX*3Pw~;FIeI{RZYd9$IGz&Sj2vOs^ih9ow^z4N)=o#c!@g+G4+6xKEX| zHJ^R{5nnw2kk9wL9OvyganEZn^k8}|#(6Q$KjVDJu(rrI%09g|6!t+q(W{NQR8$#y z&#yRA+3fRs)^@Uwn*Xp*x5+raM7?tl>KXJn9zPzR5skf-;mDtxIKpnK&xL+Pca;O< zKI%^J(8vk3{=OAGpy#KEk;#G1)mA$>~li644Rm$2<_Ce;W`8o-{ z-q09EctKR@|99~+`zgH!v9=Q*GG5I$K=7gd?=^$@`fcfHKg!o^^9%JqY3qL9W>){- z1=&xj=9(n9=HRuf1lRCDR}YSHle~i6FJOO+w6)#repPeH{1$$|#LZskK;tUGx6aeA zQvPVO+hwfnz-RJW_$cPX9$&A!n6LkFo_thw+4%m#+75iC9)$m7zJEd^xmOO9QUBGR zd{k}O_#S0#2fnxtgkOW-4SOAgvlGq%L0Ard-}@$<_v3sK=LdN1ES%_{HTMBd9a|_b z>-8oce{QZ4_5aw*KC~+B^Zz5(&aqFNS9C^3jzjZ_`~G@;13QR)f&qW<;)`Q;M%*qh zVQtMPKhK!!0_H>H)_gzn{3_oB8auQ72Hfpcx6tae+OK>&)^_AORPmK>E%@;MneyK= z-@qNc_-J+7`SAXK(stxKO!Mt0_;CMUIqKx(hz5@J;-l4R=R1+LGx*fIywY{Cvfpun z?=(CX`v6sYdhtdY4H5STZS0wM$As4V9m>(OAnjbf26buqM8SvnU%ra% zH)wbfd>M6VIpRNQYre*H0nI;EH=DY&T*Uu!#Q$;;{|CMAnKvo>Wz?nRi2tPR#Fx~i zO95queSX*uFQX=^_F`e;;_BA)X6L;NpC;-4JR;7f~G9~pINIpRNQ z=gdE<`!oW6E-ZgY@S*=-F5>Ty9X#hBWuTV)q#U&mY3GbD@tL|5>m$S*3^C4O?-Ot$ zPw9<3rS~M9b!5tx`Ks;nim(sjfA3$LYehqrc+anNUHU1seicj%#_7-P59Iy-y*J=% zIoT^&54|Bt{;v0C(AZV*{?D5?vrg>218Y0+9Tw+Py|)#7dqJZW^HrbX&6imx_C`)i z+D?2)o!I*T!FMDyL?5F1d`~{gNG1U;TCS)rq}P z|C6@1o88YfsuQs;nGf}UZ&Cjb9qQ@lC=<2W4fQ{1JMfu05k7~+f z_8EtB0Z#1G^g+#7u?qO-@m@lalQP1=Ie;OL-mnTOw-2HRIRR%|^ z({4XCPZDiMK3ylG*T8&lLE{U;3!>qF^r~}cb=vtpW^G44T_>Us!hGLio}*uF?DwM= zAFWO+ANKN$b_Soi`>s))*!vget3Y46Vi&>-q7i@c;-fmuS|?U)&)S-=aeRpR8q|sK z4aR;IdqU$7<{Mee{!FXDS|?T<$l98(ah(|RHK-Gn-y;7~aRf9(+#k8xGY`(G6Dv+) z?OeVFbz%kf8w?-fe?@m;zpsnn%cv785dTSA^EIv$Y5t|^#0nArD-i!HMEoB$-ZO8? zsS_&@|4G}4FUgB5MEtKn{I3x4f7Fvj@MYAA6^Q?&t@-ThqfwoRc*^68_+L@a<2(95 zulNzqzKlAt0`Z@;bLJn_VHyHI7gp2>zH{+7iIMn$X!K>C^Dn1PtoS2q=Zr7$nK}{c zBg7mGG0tHh#j-$GrJ6>%t1e zf6{j1J3P+sDn$IRK>Y6`;{Vuv625z2O_%#`C<9IMbG%9)vi|Rb`k$_mQ6DNlZ0bYI zdE-C&ApZ9e@qg^B=Bp3;ApVoKwx8X9+?mEzmJIjW54wDZYF}@|D^4} zXX-=v3g$!n?<3;>xU)R@C$j=RQ_k1|jjAL2i0 zJMdw3V13NOnz{t%{WxF5i9N%KZE$wSiTBC1^Z`!o<0(JtGaQennyW_R{qB#W)oIPo z`=B35+Bx>&`U@DEZ=4uE*sITS!Pm!Y{BrBVKIoN_w&rVGA1c4Wd`W$XI-cj(YG_<8 z_@4EuA82*j?T0=tX*=@i`Vc(^=0pA8N8}$9e&@wUtJBVh`k%BN`E-4V{s;3R{`Yx| z?Kfe*7ay%oJ0IddY3sPKskpzSEV;Y31HP6e^G?M5K2PDbuQJ!fBZ5uUBmH}Bk@`Eb z$6$_($NgpTUy)7TS)PhdSm&gb!*QnJ5bw9^vktH2_k=_fuXN-{D$*3kyR4PNq3*Gb z*Wue@oIb;A#peS|+R~9DsXS90crOfTHHz1AT-5!}%3tArXYyBlQSfTAk(HD7);XuyZcMs;6T;jx`{H2a0DUMxOD~F@K;n-1d z?1R_p$gEkS$u&+KrXovm{EoHsJeU0d8W%;;5j~YI@$atfg5Sv4e|`ykHu#rwVbUW#*s;c2mN^mv>p>@Wn^9d9ld)$HzQ2aEsci(UX}<=Daa5B2++ zd4WCuzVigfB1aC3|L8lLwKRvkZ&1xsnisTgaUX->K+NyER&e~_v|h{|_Nn=~inVe$ z*nc38F&x+j=zBGDOm$ngcK>lXYvpjT|F~3eT#wg^_XAG-!pR@tzpse@)Aw_nuQvaI_)l6n947wv74g3> z;(w)?CP6g)97hh@`bGRFtsIVc{VG3pCe9f+(HE*jKcy1)jrDySUw6b;__w}4;)Knf zD8ab{LpH~EnlI_&R3c7Sa?IEA+Rusnq%unVOf(~Ov=jN4b&zf7M`(VKANi5zX(i%+ zrHKDC#yhPWs~@RE{3k8_d)qmTAA$XiAE`wAuN3zM%y3)3RzFgS_)l6n9LA4eJ}?LN z|0_k@pGo&)zXZEx=VewuQi=QjNXzO+)VNsu2<9mBApTc&)l)_N6V3dvct28!_)l8; z{e)YKI-)bOA(auSzyBD2r#}}TkM*JEX{CtAmA&v--1j%@l3;7~gO2yD$Ng&cStFKy zMCCx%)|}fqamIaN#o15TZxkNSjDH9G8_nK3*w&j<-N9z#L@q$uUYtpPwo=>&SUDG3 zs|Dw@qByPlca`Y>leQOU(xW8VwrFIjIOvQ^hsl{D!r? zIFE)7@{mf@PL;T)wDK{WZ{YkAdOP7fiOkw^U-kO+#yFQM;;s^cOhy$7|sSC*VEx1LooNY7KKA$jB%=VNA??>UT6A zcQ^k#n)9XO`}^Yv*9ws<{yYzxola$KZKv&W;~d*b^>1ed!K535;L*E+lHarmg5wVg zN?!XZD0yY4pd{20&M;fQIR&r3WKIx#vLq>8vSm^`7fO4rw`hca9i%Hw$s0ao!-Z_zc<&5=GS}LiFSl+ z>qEumMBCF&N8{&}P0V=q4-jj%6r3N$ob-&df218E3vYk)73dn8H$UE<9(2Oz6ts;i zJ7w4YVn3k&c6hum(FM_h4j%E2VqJ!R?7s(VJJ^*ull{v6y9&D=2rbmf$q_C1m)H2y zYPPPE{ztI3C#Q}#{ZZf1dhUNRv^o)H5G~x#i<4HfowEaLdvfY{gB*%EyFhE8;GE^f zNvp}u*@v|~Id#10UoJSSp*2NtzT(A6tH{ndjnHPCuQaK7uo$+OeWiT!`l z_T)TT#YN1|5Mv+0u3`W4ao&X50zGH+p+eQ;X~{#|N!*9fA2omf*Uc59#jQQ;#H+(@ zrx#gU+bO?)cslkZdddD_|L4VcqDJfgx!}Cmv41FIOjexvkhL{ue*cg-P5-d}dxG;D z)QgCZ$r07Y#@zHS3cIK3;*v^Uj|47@5GwC0q zUN>=Oz+TV-zu|nmVo!FdL>5FZWaa!1be?6h-sWo<9cq<=V|RB%>83-Qr#zURo9o}G5ip{(u2ne-0_ z3>KUdptXiDgJ@|RN6z%@v~$j6Z7f|~hB(m|Q#of#9xBe@ zdc2Mi=LY=ATrpaDk)xf`tHW-mD_C3G$rfkS9=zPA!WveG=DbXBA{Gz$XZ-*0Z?x@SP zhT9@;2M6w@O{nMVSIj*yg0}9Q>i-=rf2}BP>%P^%Em+%&JBd33(dVJMcHqv?67~0r zql(~EG04)-7`P8>dvU6`gM1wGH5{-G=U31{UNjIn$3W~C4CFYejoT9csPV-0*iNYb z2a5WC#fl>Aq++1WPN@G$+sjT#+=ES+6ZQW>wk?8F#UL9e>VMMKoVGq1`*Yfl(UC`Uiu!*b>i>bF{$F{iM;}f3a;kG| zoT&dvTXWj>jclArA8nwh{|BP}A1LboRlo757b)hbuQpE9|D^57srzUHMg2bz_5Z*- z%!-XxP50)EGf5jK>VMMq*!f% ziTb<#P;bsSle2NY#@e2oM=1Y|`59vDL)bM0b2tz=$H1S1uxcA)*B1Lmuj7}6olyT* ziTc03&eKj*XIbo2h5DbgJ?*6Xc(94_i&cnoRigf{f7_Fj>MR>4>VMMqS#F;8l|5sH)OVs~sCVSbFR*^N% zRH6PSZBI@eXR1W~UxoU=3h^;HqBYNYandTXbE5tyZBI@eXR1W~U9}imh>yg%_IF;K zw2JJUt6AHVQ^%RAm14bL0xiTx!#UrJlU9+P^IF#S+0HQ?S<($C#T-8!Fms|mO{+a5OW}eeZwm3+gH7fni0LDmON1Z2f+sT^uGbYG3q)x?!3)* z8-)6Qkf{I9`Pjp5yjrYw8-)6ww6)#x`)cvNh>kijr@GIB;`kuc|AP)RmWs~(gJWM! z#+;0}GYIuRX=_f~{teeR#A*6!gGBv3=n!a~EI6NYt{3I1w%hYq*7o8|`f7tvhZ}pg zg;p2lJnvvoM*AN7iZE}8+3-?>u6A=;2ep^ zGX&> zMsTii_J16cZBW*9vq>nY|62W-`v_$=V{wI!{>Dg)L#654M?Zuhw-(bCmSW9Z2 zhL{7&z9HDdK`Qq^PT!J;9?#o^olyS|`mecSbU_D4JEd2L-A<_gNn6{=7H8CZpXB}x z)`mJXr>MUNy#uXp;{S(#qYJ)qj5Bd>D*iWP|7MW7cQMh<9M8s_9A`cj_WUsj2lIW9 z(S8(we)ia*RZyiosu{^c#;^;dC*$JoEM)^1gDC*HqPa&?ZuhIS&W&< zR|lg%J6P=hU%a*mP8D-)oL8{67pID|YJH%Fqr7@BddP#t{{O|F7Qv}vo{jTP*4CW1 zJ|4#p+Aq?PPILZMaH7vW_<0`pOV0G@A8+tFVNdvtAzL!%rN8y&j5Ajo=eMlw$$1#>|Cebv zqXVMnC4cUXWJ?*CZim-`U*Fz8!hKTzQE`8mbGtOjfoJX*>C#UW!V%(VX zWN3-~|I3c{5p#<MR>4_Wwy+bLPh#+LtkLXUIIk ziT(c}V*me-mwCh;iaE-!+c>fRPudRlWX>e+3=#YPL$LopMC|`xzK@qZX%*Qy|IFH+ zoI36d5&Qo`kh2aE{fEnEcyZDyvU6hppR_$W_5RTivHw2=_5To2|6l%+7bmSEJ16RY z()Q$x{k*9EhoJr+BI^Gu4)fxqRb=Nx{ZHDSoUxx5_5Tpm|J9=Yzha38C(lkRXSJ$% z5^YaT?dPjS{a=mxzgpD)SNzX|lV_)$6ZJo7dva<&kGjzK&+7f4CF=hxPx0X7*=grQ z{ZHDSoO=JL`e4+i$b$zV$3$->MBhTySFxRQHEVlu zCVf2g#F!KP?P{_AfA!(coN^W0Ij?1HFV1AY2z@)|L=V1N?EhcA)R|MRB0DGc|4G}6 z6KhGY_rD3wN1-M5|F3?>kuyCz?VQ;ECv7jzq>rWgpVW7$#{Pdb;$w0|*PQCenVy|? zPVE1awijp8$3hR1Iln+paeKlHqH8X2_E9X%3C`ns>&ehPp@jUJ|Q->G7>TjW6 zQ2jmf7W4^`ABV_2L*#Yg5X7S)h({{cx8$Mc8gJcJcz?Xc`q%x_HxHK6ZfX#e>3)rh91q@ zmT}ACG;wAq)-$b-p{=2X_?R5gpML9TH_4f?Uo`Yg*7o8|;>^$vg0nlc5FZWaoT50b z`$a?hv9=dy5@&|?5uC%Jh5oeRe7z`6>weMDiLC9#nd}!0MPFg)xj3;mJ@h`DFXH?# z2#1vrZp(dD>lN4Md58U~q3Dk%M|9oMMcK)^Uo`Xr*7mYf66ate=DZ48=#LxDl|^u> zm}lur4857Py*QINhjC=izd;NAal`pR5u7UK**G6$Z7o$eY+w! zRm`(-zQWpGoXLI-)&p~5PjD#u(a8~Ae@PLXDz?}-KVfanneLl4^xw2!18)=OVOX=w zi5NU=W5R?zfAHv=DIZRCjfHdAuUK1iruS>IIg`Gb@+%Z)hHU|@J(%-`*&g*_9Bbmt z(Z;zGYkP9)zS%J3U50ZXXtfobuX=OFnWK&K_pI&7d6>$#h8={nGtMfUH8_{!ydnrk zAun&~L-}u9pY4R6|FE9ss?m){dfO?^Ty1tLV{K16>AoFo#GL5)4;v{smwR)@8KRAI z2y1(C>b@PukvS2Yhs_b3?|E`kU1j6MejRCha_YVv<{ERN=RXYbF*%}}+IVtOU1j53 z#oC^nx^IW|z?|s$4?}!3oELd=Qe9=^yqdK=IraVw)+}?P=RXYb(Qtm_$w~E#jq~rU ztvU1K4DEZEI5X@{!HJ&#FvLgVyt&LH&QOd|e%!|S3~M{slQ}8QJSjNQ^B;!zXgFW? zvL~$~JLmsc+mkbnGj9q`^!$hYK$t;v%i&&}w2G{p!%^>(w)WfK@^y!!hd*5O8E#pc zTvye*`SD%a{V>PR3#3(K=iHK6JngCd{P4}h?}hq*IO0=sM7O--Wlvf~cFuiS+mloK z`QdvD&Q{Pmg)oEY&!>8D^6a#89>?0AoZ8P1M;=Uh(C~K9>MA%d@ZjXxY3J<3+Mb-+ z&ksLSaQ1>0;!|=&fBwpYlV_)$b0BMba_apV%+C;GAHuF7n8V@dGoVKlqW==A-bPCv zYTe^{Jf7(J4@Z1Vj_B4-9(Ll@VYkyF*4B2)@0-Q@9y-dz^~~`3f)hRe;fRlh^E$`A znT#06E1NpS8Dtc-mI zPPRCs-j5l3@_2s+YgiqcvrKRz7LOPc|3Ca2-Cph(XX0K|{BOqo%!pyEojIP3IZd1y zfj1RU9yS6!{}F2ir~CT{C8_oE*hXOPkhT}6iZkl9({cV0=j}NEh4Vi+zYfBYn;PC0 z`$muFbYUm-{6}18E*IV5`u;^}rB>M8v(%>}u4HX5J0)=rHsbNT8Cv%UPS^J@ra7(q zLnH2DZ7kdBi?7uJ6+#DC^=Qk zvyJ;(tnI}~aqd5Y6aIOm!3?51FL(5dl2gSz8|Qbdt?P1IUTgC=h;wx4_4GCKj*OtW z9sOVM{!|37ihUN|kz25~mt9r7L%dP`h5X~lo$>fU=De$W5u7Ua*f{rLZOv)xpRrwO zpGHR<&AFH0JOo;u1m~?D{WCQOsJ^jr9?ROA)7HnaajO0q{P@VDaF*j7jdLE(^KssU z^8v%#V&7;xVIG?C?1JkKG?$D1=KFU?)V&DGUN$>nFMzZ??WFs6un}`sLu-oQ^!>XZ zD%NCiVlRNSJvsIL)fh+SoB^$6f;0KMACCPyMHpwWHhW?(fV4e1b^i`?jXCR~bvbkX z{WOpMgrZb`2{g-|7qPY{r|#cjJuv4r(7Ho#UgpV3^_9(@*b5+SPfp#x!;;gvC#T-08Tqo{d=a1MA=KMRldlQd1Lop^}9gV`?0cktflR1-p zno%1t=cuiqh4`2p(cOOU^P*K`_4A{!7eLycoZ8Qi+EH-s2QAK%qPzXx=S8c?&WXJM z()Q%kety)!g7bK2ok8XdqJR3m&x=-(owFTldva<&KdQCh>fazyvs;K9kW)6RJwYkP9)eHyIy5Nj#KJPk1iLfAJ1dpK$>>Ob_1TJli& zFRo+a;V9hyKZ^72=-v%I?8K|XZYS&okhZo{e*Y}q|Ikq;uDjHIMijS4Jqj(v$K;6a z9pKnMlQAYM&R{Qqv^8gbJxiRXe>Mtx*@pAq&_aAPobG)Lxr*)f#9jbtdvPZFG^51* z|D(PL!qEl745Ito`xtT+TRBk<7;Sm~|7i5yM5p zu5RYX7^0GIeE&Vyu{`dWqk0{Q`|n5Z1|G!6nh#shNv{QO@*zHuu+S*RGIHTSNDfelxHq@c)g!fZ~ zxF21z>gC~Zya#jWG`t@7Sd3P2 z9Pj%ZF(0oz8ILc+>+i+uzr<^M;w$`LuPxNe_)ym$wx6S4&M7#T@z1r? zcY2%_igEfYxF0fCiyqv@G0v*kO8;f-Q;oidwKL~)<8d-^cJx04=i|_NRdAl?IG>0y z{%YN)8vO!mdvPXlcJ#A?a~-rk6`Wrb#cACq8vQ@8S`($+hX4+|BdUjokrrZ`262T zwkX0*D(2ekG?}%vooszW_TRKWr6aB8M1OW4X)pa(`rL3(v zZTnL;&ZKXMab(VOp>>Vm{LG_1rWm8X+Bk7918IA5>b@c78gt@3mSYeflOuZc3~$aj zbGC8fehbp}wQz7jMou zbG32)hqXO9b>C3=6|;^$L|#dhs2CsX>B&iTosIKr*7oE)@|SghO6u3Kn?h%AhE(5a zfA9tW9%G}_&qR;i>iK(6-ABKNs^{I;{ZT3pAA`M&vACD5=Nrh=kz4ipIS9*}v{IUi|zh&*R3YW}f^FUb)-zL}>zsJ2^cr$i1YkP9)cr$i{;KX_uTPHX#_u{10YUiBC+Mb*` z-i)mkoGYMpso?y{i<4H7o%4Lw_T<#@X6!kF^Gay_g*l(-?!`%~$j*s-Ye?IZQ^%XJ z*9*?Op!JyGyv2i)XQ!R>0oL~9)caIp?-iU+LF*0Xd~y>HPM)21PV|LH+mlo8Q=y;4 z{_`#Ld4450t2{V)cG@{VW^GSSy-zjv1N0Yg&kg!6A$l4i`UN3s@ep-xsA|ZTJXAcy z^^KjzZG_)tCv(N<$$xs-iC2f!PUE&=ZEdIg{$aciprcHj$Dn`5oV!B{@i94~r*?7d zpUD`L5og97z}lMAwqL<@4RME1_?tJuytn6$xT8NK^ z)4h)(SCO3)eQ?tD;>21~>m5CB=3Icsh>yhijB6hwJv;53D_Pr%GwGkHzC6`m<1U02 z;-lfLcI>yLXQ!R>D%SSmO!{ZoyI{^+p!E!42GKM3J94IHr=9a}tnI~#`bO`6+yP(T z24@ePBXHK@JO}6XI1$rZ^3e0{4q+$k^^AMlTrqlfH%B|ASBKqB*b5+STsH`|Ozk&! z2s+{3*S>-J8o!r_*2U|B4|VA{?1Lvq^z7qM!QpX#ZQMJv)LY}QPes~#9Mf^o#;0S8 zzW&pA?Ptt6J_y3`noN^M&$Wr;pnl}boAG&Xyt;J%4sl_O$NPjK^L8X*+X@d~JMt!Px~`h>wQT_5I&8;_9o4 zIW~J@UzxO>IT2&jq3u~NIIE$B_?R5g3sDjFR58cKIgYiRIT2&jp*cqj&Kc0UIR1b5 zH+rFO5u7UK*f>#(khU`?VvIUeoEd*8PV|(PW)UbwReJE@psvlI3LNE_D;f~_*+jM<~ne18&r==qO-nEC#1JE-7rjx$ux z*!XZy1ZnGWO!xI>tamEXpA89#%b|M=Gg=TeWpUc83mjM2u4T!6GaICX^4 z_IyroqUS&UGr{?eH)otN+Bi|ClePz^jxd@NyKnq{RQWd(CW(ee5sSCJ*l3taUvHWZ4XWzVYJ_V7xNqUu)(h31ni4U zz@Ec|enHs(d7SUz{Mm3f`#0K7CkQ+B!nKE*%S10->uD#dr)+k@eP5*QVJ98oG$-~q zXdO=&1+5v(`SJ#yoK(-)IB{IGk4kN85dC2L(^|DUv* zu%qFV@nwS8|DSL!w8Z}Z%P)G_k-HH#J7WKzv^_XYe3>Bj|0f{kPZ0b6uN>;dNvqfH zXOIh!wg;z)FB5JPiYl)`^?qL`;;2 z_6J|^?=cbk|Kew&SI_hKJ$Ux=@9{LQmYrA1bsxtW6}QFy`@|iiOhh1Yok2(hPG@S5noL^|>aH86CcwP5jbWcOtxw*er*I5QEkc%pb8 z;AC1*j?DM3Xdl+=j;1B*Mo8u+wF*4fV7=Cb(D$g`-$THe-mq@_-*Uot!Yddr5D3frm6`WT<3-OUS|9zx0 zr(8XD&Kp_VnNvrZg!4MVc_*|G9}VYnN6z%@v~%9i+RmIh$|Rik2+k*=h4^SV-*eeo-$$I8h;uPcUQ-6XIls~I<$bo(q+jEA*}+^Pdc(CZpI#kSJ5548N!mKTY$5t& z?eJH4+61Ng@9)Iln|yZC7J_eAXdJ|R>&^)9e=**V;GgY-1MuI3pgI^Cj1LaiTH{g4 zw+bff`x}P8Va+c1H@R03^Q>gAOM(slbA1p_{cR9VNB%bzHU8AgaQ+47**MwX zm|vi|zESgR66QSB%agj|@c^S9z1cDG8>+tDA~lZ3;5VXCY=u$PBPZYIItljzke0T~ zw%E^W+AiikjY+)(*AQq?5{^9d&8L$6$fmfGcQ&QC(DNoOFD~Q)+Fs)Rze%|NZ_+}x z*IV>=oSNcFcF0m(=mn6Lp66Q$d$qxgIYY0+zW7&tuPoV3^UM-SfQ(oaxz zz}BhpJ2W^dHG-M@p_AYTNmFxenakBKI4iMJz2LeO8h10-+b1XaXVYA9?c4-~-)PG;CEGW}l@H55_{2w&l zVy^$~;LH_AW*ZmoCnwEZuI`xGZG+Z9*MtlE8iwmVXnZTUmO64Bn*BLdlRjrn?GLue znBRg6E2ovB(02QT`6dULOPey^JDVkSps0H%7x-tAcp>9s!*v-)aI&XbFK&FMKZdz% z>^FHUTzgN!H#p&IY8_JkN*wa{*_kzy--rFY^jl{k4xWayt^QX-DEndUG2gy;oaEm4 zf#{w4llapVALXq!KD?KKG;{e*M|^G%@2WBh_%L;7KIAnt|0W*`t<&QFhkv7Yk9Opv zeAUL+nl<&h*h0*|Q;{p22BJ3jdx&k}!PFz-I$3a?35{~W^>y>*HsIv~4#%k2>{iX1nOwAUS_-PNptI&0B)G8WKUv%d z_`bWJYlShf=F^j>v8KhJ#P({yCH=`{asS_B-2XQjb#ih<@1NtiUX|U{oU_?&1#5cn z8GkZ)sj%M#(7KlJg6RFvJ@}Mov+f)erm>bN!ICQf(teOvi~g6HfMX2DrJu(e`;o*yr0IoU)<0O7!7NN&V5ZebVt;#LX!steLqE zl|5oxwLvA>5f;*wqvrdW`KDlRVaiU-_fZ?ib(j;^r)iy4DE_Fg?eyoHoElqAbL}Iz zaPQNUQxu6lqK~(CTz@(7dkX4*(rh%(lem+NVPC{=9fy*~I=`4A>hCG-pap-H9MQ*5 zIMul(Ldtq_N=Md8`Y>!S;%KE~x5_Kp!kS&Q?bJ$a6%%Ot{Xy8TCp3o=UJ!k<1l=7R z&C%zXGJv%+c@NFt)zK-A15+vmFM9q{W+_5_M4z70jJ#7=JCj%a-Rd?vZ%f-(^y{af zuVL2BJZOq||LK>_$cw!I($3^neKZ^I;jsbrd{`oQ5&x%%IQ!W(&B%KtYiIJRJH>6h zNe!Xn2;w7bT(URf(Uc{K9|6ANo&&7AlD!a{Tk_EM`lGNH;{Oy;?|`eIAR`~RtrOJ6Pd-IR5#ZQ(pq=K#zY zKRyk-rzh+Cb;0=ow7wUdVLBTY>QbJ_i+_z z7tM?x!S54J`JDM`FxP4}XTC2N#Ca7xqksRrc&PIDjQjp;HezkfC-dZne5zYm8r!c1 z_cfBgso4e^dl5|#efgDho~*d6_xaagFMu>PmyFX5xjG`NLB*)nNe%KB!-bxIO|phT z7kxF%F;2(!vfkHUa|mlTVXux@AG!yixsb;gF4X@un1{&`ef64`y{z}~*P#9gyUb5zTx<{aIH5WqjdcirygEON~QG@tTnniHxj74*b_*-)eH183dk9%-t^ebxaV$Ed!*yBVg z`ipUnU5bdI56ySG81Dz6^&InkOZUGty?!(INosH}0BPcS>AFe!W8&)+_sMD=7hK9e zi+teQI%j{J*|(_q4{K_!toWt4;y9u6lp5T7VAcoXf6aHoULQOAUodq;*0jcnPUxYiZW!lIs%M~|ga1`|iHfly>=)Lc zmxb{S!5mIOKGo8Pn&(r0#rB!HHy$T78?GIFzm@an7Μ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