From 163eea59ddade104c183008dee9a6ee70b3ce698 Mon Sep 17 00:00:00 2001
From: grammers <samkar-4@student.ltu.se>
Date: Wed, 14 Feb 2018 19:04:05 +0000
Subject: [PATCH] bare5: task 1

---
 examples/.bare5.rs.swp | Bin 0 -> 20480 bytes
 examples/bare4.rs      |   4 ++--
 examples/bare5.rs      |  24 +++++++++++++++++++++---
 3 files changed, 23 insertions(+), 5 deletions(-)
 create mode 100644 examples/.bare5.rs.swp

diff --git a/examples/.bare5.rs.swp b/examples/.bare5.rs.swp
new file mode 100644
index 0000000000000000000000000000000000000000..5f9c56a8961c6eeb8293d8357fd0d60aae8d53b0
GIT binary patch
literal 20480
zcmYc?2=nw+u+TGLU|?VnU|_i4-V$}llY>E9je#M(C^0uTwWt^*g%7(Esjd!Ypng$F
zTCQ$lL4kg1MPhD2PHM4!Qesi6sUBgw@VR4DZZrf&LjXqzl$NCFTJSO$8ySMLy0Vg@
zg0N614#lIwqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0>d!`N(z`6>KPaqn4q3>fzpg<
zGz*k(2c=!1G)x^cl<x_po1rvJ9?Bi1MnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(
zGz3ONU^D~<AOsRq7#L(37#KW39d!W)23Y_9Gd}~vMScc`v-}JUyZIRy>iHQMO86NV
ziuoBBV)z*tocI|S9Qhd-4EPxs6!;k!Sos+kSoj$jKJYOx+~Z?lSi#4@kiy5npuoq#
zaEF(H;TkUk!**T<hHbnI3{!a-7z%kA7_xa87_xX77<_mc7>sxs7=(Bk7+8227~b<R
zFg)d9U|7k+z%ZYOfngpG149cB14A4S149501A{dW1A`$C1H)Tx28PGn3=DU<85r(x
zGccUxW?<OB&A>2+n}MO7n}Ojk7Xw2v7X!mfP6mc}P6mdn91INJ91IKx*%=tj*%=tt
zvN13yvoSEtWMyFBXJue$Wnp0W&CI}1$jrd-oQZ)UmWhGkG9x5xJV4=tFMbrDprABK
z!O_FX&?msvFUU$kAuK;9u_QAm)j2gM$EMWS$W8~MP+wocMj^=A8LU{LAhjs7AS1OX
zF-IXeCqFq`AvG^CDJNASGfyEWzg(dpzdW@_AvZrIRiP*~J+rtZwFqR4V@gU<YH_hb
zep*^_YKfJCL4~P-0t3W+1qF~xf?R`LgTh>0jI9(DqA{FetzZ<ZqX2P9YH?~&S!#-o
zf<c9eg|0z`i8IU`vS}2TI0iTwK|+L>FbQxn!WkyWA%N*N%rG%AK@Ahf04GCITw+K)
zm*9vUBZBD!DRzu0j~H;Mp~jAflQHpO;^AbB87BCn1#G2)0%q(OTcE{`2Px^q16w*F
z*Cpub#DkP{;^BlPosjDi9O=Z6lw52C%Ed;MCl=In65wPM6dVF7*oY|E&~kB6YH?}_
zN&yB<6_^xeIx#|zod738Qe1)(JCwNuN9-7ol8X%~j~H;Mp~jAflQHpOf|iRZ3KK&t
zxtJ7}pp^EMxdc6(c#x7#&~h<lE<sBt&Ys|G1CBO~su)zAD=0wgVrOS)D<CtkB(<oh
zw1CK512!5<8EfE-TE;rNxx<}8q)U?X^U^ZYON$aqGV}9@%fr}8djqs|65!(lcML(7
z1o-$UkmU}nE<sBt&hQW+qJ08sqb29(l@#UY5E~jeV+Wc}K<%~SlA_Y&5^%e)8l1J2
zql-$5OVV;n;)}C03u2*Si8(p><r;bUdGW=0iP@>~$%)0OnlQ<t)Pf=nXU$j!u;N-U
z39=i(0`W@oiWAdP6{-~qN{Xzk%8N2fQsc{@ZB>op)SNWEvc#OyRK4`n5)Dlq1u#cb
z0bvHjc_5QOIK)c9IlrJ%2X0w;Mru(ioCoq+TAl*f77aC!=};4`6hbuNs+6NM^Kvrt
zQZ*8D$`dP#VLkwvkFXcSLv?#mYGMj*r&H=?km(R7Ybxm4DTLs0Ey!t^xdk~kA$F*h
zV~CwXHF|7-1Jp_(IW;H8$|@8b8Q?BLh#e#lK|uyh4Ja7{VOD8zszPx|uCY;?i9v;x
zRU)J_U}dFc4R#|U$UsIV=jRodD7XiB`a8xuIR?90DU=!;fgG%$pkNE`g9Nw+c?NiZ
zB^9(43@Qu^3=AM9fs`T42y%7?D?&B_ml?(u*v$ZSkdW+y8fB}1BnESX5iWNisfFqX
zxziTZe*tNMyFNERMFAQ%3XnvLo~OXU1q#jN{GwDVt7=f3=z#J?tu+HkH$0FPsu}e4
z6`U1vGP6?^90NS{^z;}QQY%VQi}DnbixNvx6_WFdN>VH0bK{FjtQoM%STisvD@Nz#
z#}}8R#DbV<sfi_}MX4IerNt%rx$%i5B}JJ@r6sAFv7p)@FEuqKHANvUzeoYy*~*I1
zFukS4sVSPV4Ep+tAgmA!N`<Kkpf&Xhxv3?IISPpd1v#0?;KCcM0we`qZV&4JZ((I%
z_`(KR{|}qLzXI*|FXd-osO4v1@Zx7+@Z@J;(Bfxcc*4iPu#}I1VF@1tLna>sgE}7r
zgBl+L!xvr#hR?hV3@>;Y7%uQKFtqS8Fr@G@F!=E@F!=H^FqrW&FudepU|7M!z|hFU
zz>v+uz>vbjz!1;Fz!1yBz!1a3z+l0{z@W{;!0?$H(!YPr&A@Pmn}K0JHv>ZtHv>Z(
zHv>ZpHv>a6Hv>Z@Hv@w-Hv_{hE(V51E(QioE(V4VoD2+aIT;wXb22b&;bdU&<z!&+
z;$&cu;ACJB<z!&^!ok4sk%NKZH3tJj3kL&3BL@RRC<g;W5C;Q;0tW+wEC&O_A9e<Y
z-=OgUb_Rw9b_RwDb_NC$b_NDxb_NDPb_RxTY>@DJ#m2y}jg5i98;U*I7#M=t7#ISe
z7~gQgsN84>jE2By2n>!8sAYh(7GTwvl~rPKu9a0%c0q}TCcGk3a#pHE1`G<|_8?S<
zSR)kD@)S~PiL_4vWH<weKwyxy2p(}PR6XDdpP*mC4oyu<EX^s2&q&Nm$w@8J&;&K)
zic1npGLscN{X$%Wf<gmAf~^#yp>@5Ivywtuo`$Bif{}?qtb(mVbPB2o5D9Ar<!Dfy
z9m}8`os*fD9bcT94DMLjDk$ldr6!l;7sZ!=27vY8J-}imQ2nmpSgcT<s*qTes*smo
zqEK3#nU}7BP@@Bq%qlHL^cNKp6;eubb1M~+6HAga6cTfC6rg@#0JUY3^K)}EOB5>e
zON$f|^NPz;i;5LAz>R}=BTWW<eUO@<(maL4ycC7v)KrC%jKmU!l8jV^f}(uTZa#&i
z)QrTk)MBt$abj+&9#oTaMq*w%NIj@clmZ&aF3E>F7i?KxYB{(C1y$}^QIeXM0yYKI
z;MNEC6hI0T$}>wc6cRyW-<fHZItnF;*&r{2oB(aq=_sUSrskx82f>q4OJLmc%#@N0
z9k9c}O>L0F6pTP5$WM6uZAg*7gHj<*2Rkr1IkmVrwHP#t58~(K=NBk|g8>pSDTyVC
z@XlkJLP};)YH~?VrGf@1v~v@)Qx!nci7EQI`6-!cm5@Nugn7YJp(G=-SOL`a1I2nl
zVsWuTZYem`C=}#_(*(#eki`j^DLJVLFpbHjCHe)4#U-iwMX3cjiOH!7`Dx&ghqrU}
zGISKcsVJzlxFj<zGc^UI7Zm4ZnV{BaQl&z02*jEBB^jwj3d#Ao1&Mi?sl}Rl3XaJo
zrHMH?pt#CNRY=Rs0VS5y;?&~2lGGFhP`6MavsfWFzZm4zL{MbF#1fGQl@pVSONtU9
zxuUQ%vm{laI5RghC$R|Rsd7*<tjsS}D9<m=Nl{44%u9g<vR($*&SH?kkp5FKI1%I~
zCKu&{5_c&m+kjmN&O)H@Nh{3*TLezVxy7kDWvRuWRG{FQr{D|@8knizoCnIe;1+pG
zYFcI<C^>>dJ1sFewO9wzIe?j{P@I{b2X5aND`*rH<(K4_R2HNbYw9rQ>q9#c4A6oT
zQX+!-FpzEtxL*#+42ZrhD8(xz7At5$dUNrRt~0DR%#a2em`O~DFEuvO04W7`i@?3s
zQe&fPeAa-|EEaomOG^~u!CiGtNLLWqE{G-+%fL#Z)>gwj1}<%D5hGCLiJ2uDh6eEl
z1_n@5L7qmKmY$TMqhP3DW22y9s-Uf4Xr_szOkW@71W*T!_<;+sBS7}(>!%lF<|pbo
z1qTKB=z(q309$6NX$|UdCFi6j7AYiUmgp$tmzETimVhVVG)hW~@<2t5LQZN5B-kN_
zDS(Ew0~}33svuo_kT~&PG)3_n!f75@oCdNA*<l%(=@}&oP^abLbQwq)*!$q}2Raau
zlUkyXo|FNOD+T0EGfKZ3G!9^BVGZ$^zCNVH0q5SLRE5;Ew9Mqp)VvZ<k_2TVP-2Cb
zXP`_Ds-hqrSUs=<^!346F)^nkwFsQ8z$G9wm`gH>@=Mb*z~Z3Dftv)e9TGIY{w}UT
z(4Z+&s8KLTG5|-OhN*&<f{`X93PIrnH54>u3bq>L-y#KD1!QAD?$yv#P*YIUFi0}Q
zGzTOPc5rTDaW>c#eSP=<WU2xv))R}NsRZK4qU2;f(Ab8nAF?AMCL18R4l=t7HWKDA
zWUU~JL2U?qeFYE`tWIAaIt!ei2N}izi-L70C&wq}7gQ?PDyS7DCtHKc0Z@UjQIwo)
zrJx4N!$Ho@IuNfz1;7JApvDZS|Ig3Bz@QA8-xgqCfUWN@<7Z%a!^gmo#K*vJ1KNi_
z!o$E|#RHjRR|Cznb1^UoaWOFPa4|4&b1^Xd;bdUA$;rU5o|A!LDJKKNd`<?2d7KOk
z{hSO8MVt%_ahwbc?wkw^J2@B_v^f|U=CU&|@Ut^8G_o-;d}d`}NM&VUxX!}B;K{<k
zu$!5IVJkBO!xm-+hQ-Vb40X&543W$X4F1dv44%vk4DQSf45rKs3?|GB3^$k<7!ENp
zFsxx>U|7w>z%Y}EfuWU&fx(uEfx(=Kfx(oCfx(1{fq|8Yf#D}31H%eN28KXJ1_o<J
z1_nz;1_ld81_pCRNEj%A!U45WuCK39TAW&hGKK;x+hE}g4P9tv2E__Ep()rZz>6zz
zL}-Bn-pUF*s;W>6E^*RRAx)~H)U?#1)V$<WPz?uG2ddL@Q*-l+Dv=`_)6gJiXCjOQ
zEjGx^Q-B(nmZy-Ln3)G|(dz3f6jv6Pq~<CVmn0UIloseHBq!!6B&8~3WTvE~<|(8V
z<>!JkCMY0aen+XWz@uK!ZbM#v0W|gI<tyYDq(UbRG?EkZKqW#_szQE2NoH<lRcZ<-
z_dtqM&<IyN$ioJDdYKB<phOHVMKi%g6ey{JYIIPjf~QK7GZG6xrHBPcv?w_lET{kz
zH3Nx4+N-GwLGW<(P0TAz%uxvPH83`_P|zqZFV`zB(M!(H)h|jd&Mz%WPSsD%(}%}H
zd@fkMeoC%^fq|u&g^7t?K}wn?0|RKR5Z+h<54b|Y0z!f+00axf14kx!&=gcuYJqYj
zSO^@eAO)b&)wDbXNUG4aQ$Q$z4q1W*^dQ+D)Byo$LD&G&?C6G=zQD511GLNoRJqxJ
z%}@Xrz<HqYN_aa3Hd9>;2}qC)*f5rPSp!{z3L_H~ulP87!<~aNc#XdP1r!Pj1^GoK
z@M0A_M5zE?0t0grZWm#?20E>Z;u=t8;$a2x4XSGl%}`e3AY7A_SpurqLCGSuL;+NR
z!fPXvT;m9~6~i??l(+`89*A(zV3`Fpw7_(YzY9E~P^T<##}u??1y|ifxC3k_HrJSd
zWl+M#lXTZ)=7E}Mq&WtgYYZ@56A&5zcMod1L0iRzNH+zgIXSwe1^Qq*CBGchAV)0M
z0$YJeV5VXN$l?H$u<;KLaCL>che+2zW2(3yH8q8Z^b2tr7S~`)HzAP$uF#}InrlG)
zAEF(DC8i9pq#JOn5Nn>o8B?H!A@R<D1PwOVAf+2nISlD>f=gLPXwi*6Z38k(IhqPH
zxS%dxYH_iZ6>LThUbzH0JENo>jH(6H6oAZyfh!gW7pw)fS_$y+@iYpC%+TYFW{?RG
z#b_ltaU}$1qO(Aoo(~RohOb#5=#t_BP_tQ~xF9vTq^L9(x|kw8H4oMl!R;z6E`d(Z
zgW?So#X-;|m1d+Y#xe&j#xjRwYmh<YVsIRRG=p5?91P8Y3M4OCPy@B}N=l1~$^w{S
zVvZI&PA-V$69i+&DKR;_v_K&xAJqN?B^TlsQDAWij@U6JC3eg}v13N%*a0ng^&xr@
zFxpZ%$O02cHxbk*237h*F9J40iyhE{S5jPpvQ&;Tm*9vU6H=DSnNl7xpd5o3fCA+m
kM-L}s;==@OsT@UNVv4o|%F)Bgh!mHgES00oB_;|C08&M4s{jB1

literal 0
HcmV?d00001

diff --git a/examples/bare4.rs b/examples/bare4.rs
index 13b684d..91f9b37 100644
--- a/examples/bare4.rs
+++ b/examples/bare4.rs
@@ -27,8 +27,8 @@ use address::*;
 
 #[inline(always)]
 fn read_u32(addr: u32) -> u32 {
-    //unsafe { core::ptr::read_volatile(addr as *const _) }
-    core::ptr::read_volatile(addr as *const _)
+    unsafe { core::ptr::read_volatile(addr as *const _) }
+    //core::ptr::read_volatile(addr as *const _)
 }
 
 #[inline(always)]
diff --git a/examples/bare5.rs b/examples/bare5.rs
index 8d5b122..eaf19e2 100644
--- a/examples/bare5.rs
+++ b/examples/bare5.rs
@@ -126,6 +126,7 @@ fn main() {
     idle(rcc, gpioa);
 }
 
+
 // user application
 fn idle(rcc: &mut RCC, gpioa: &mut GPIOA) {
     let rcc_copy = &rcc;
@@ -140,18 +141,35 @@ fn idle(rcc: &mut RCC, gpioa: &mut GPIOA) {
     // and alter the data output through the BSRR register
     // this is more efficient as the read register is not needed.
 
+    let gbh: u32 = 0x40000000 + 0x00020000+ 0x18;
+
     loop {
         // set PA5 high
-        gpioa.BSRRH.write(1 << 5); // set bit, output hight (turn on led)
+        //gpioa.BSRRH.write(1 << 5); // set bit, output hight (turn on led)
+        write_u32(gbh, 1 << 5);
         wait(10_000);
 
         // set PA5 low
-        gpioa.BSRRL.write(1 << 5); // clear bit, output low (turn off led)
+        //gpioa.BSRRL.write(1 << 5); // clear bit, output low (turn off led)
+        //unsafe { ptr::write_volatile(self.value.get(), value) 
+        write_u32(gbh, 1 << (5 + 16));
         wait(10_000);
+    } 
+    
+}
+
+fn write_u32(addr: u32, val: u32) {
+    unsafe {
+        core::ptr::write_volatile(addr as *mut _, val);
+    }
+}
+fn read_u32(addr: u32) -> u32{
+    unsafe {
+        core::ptr::read_volatile(addr as *const _)
     }
 }
 
-// 1. C like API
+//ike API
 // In C the .h files are used for defining interfaces, like function signatures (prototypes),
 // structs and macros (but usually not the functions themselves)
 // here is a peripheral abstraction quite similar to what you would find in the .h files
-- 
GitLab