From 96c7e0d77c3f5d5d2124927777643a73364b0b3a Mon Sep 17 00:00:00 2001 From: eddyem Date: Sat, 18 May 2019 18:57:57 +0300 Subject: [PATCH] Working code for STM32F0x2 test board, development of the same code for STM32F103 --- F0-nolib/Chiller/chiller.bin | Bin 7204 -> 7312 bytes F0-nolib/F0_testbrd/Makefile | 151 + F0-nolib/F0_testbrd/Readme.md | 1 + F0-nolib/F0_testbrd/adc.c | 72 + F0-nolib/F0_testbrd/adc.h | 29 + F0-nolib/F0_testbrd/hardware.c | 119 + F0-nolib/F0_testbrd/hardware.h | 71 + F0-nolib/F0_testbrd/main.c | 231 + F0-nolib/F0_testbrd/pl2303.bin | Bin 0 -> 7364 bytes F0-nolib/F0_testbrd/usart.c | 259 + F0-nolib/F0_testbrd/usart.h | 55 + F0-nolib/F0_testbrd/usb.c | 158 + F0-nolib/F0_testbrd/usb.h | 37 + F0-nolib/F0_testbrd/usb_defs.h | 106 + F0-nolib/F0_testbrd/usb_lib.c | 484 ++ F0-nolib/F0_testbrd/usb_lib.h | 202 + F0-nolib/inc/README | 1 - F0-nolib/inc/gen042 | 2 - F0-nolib/inc/ld/stm32f0728.ld | 12 + F0-nolib/inc/stm32f042.c.tags | 4218 ----------------- F0-nolib/pl2303/pl2303.bin | Bin 6100 -> 6160 bytes F0-nolib/pl2303/usb.c | 5 + F0_F1-LQFP48_testboard/elements.lib | 190 + F0_F1-LQFP48_testboard/fp-info-cache | 1632 +++++++ F0_F1-LQFP48_testboard/fp-lib-table | 6 + .../my_footprints.pretty/Hole_3mm.kicad_mod | 9 + .../Potentiometer.kicad_mod | 51 + .../SMD_conn_4x2.5mm.kicad_mod | 12 + .../my_footprints.pretty/TH_via.kicad_mod | 10 + F0_F1-LQFP48_testboard/stm32-rescue.lib | 695 +++ F0_F1-LQFP48_testboard/stm32.bom | 73 + F0_F1-LQFP48_testboard/stm32.kicad_pcb | 2736 +++++++++++ F0_F1-LQFP48_testboard/stm32.net | 627 +++ F0_F1-LQFP48_testboard/stm32.pro | 68 + F0_F1-LQFP48_testboard/stm32.sch | 1036 ++++ F0_F1-LQFP48_testboard/sym-lib-table | 8 + F1-nolib/F1_testbrd/Makefile | 139 + F1-nolib/F1_testbrd/Readme.md | 1 + F1-nolib/F1_testbrd/adc.c | 72 + F1-nolib/F1_testbrd/adc.h | 29 + F1-nolib/F1_testbrd/hardware.c | 76 + F1-nolib/F1_testbrd/hardware.h | 51 + F1-nolib/F1_testbrd/main.c | 228 + F1-nolib/F1_testbrd/pl2303.bin | Bin 0 -> 3460 bytes F1-nolib/F1_testbrd/usart.c | 217 + F1-nolib/F1_testbrd/usart.h | 61 + F1-nolib/F1_testbrd/usb.c | 158 + F1-nolib/F1_testbrd/usb.h | 37 + F1-nolib/F1_testbrd/usb_defs.h | 106 + F1-nolib/F1_testbrd/usb_lib.c | 484 ++ F1-nolib/F1_testbrd/usb_lib.h | 202 + F1-nolib/inc/Fx/stm32f1.h | 16 +- 52 files changed, 11016 insertions(+), 4227 deletions(-) create mode 100644 F0-nolib/F0_testbrd/Makefile create mode 100644 F0-nolib/F0_testbrd/Readme.md create mode 100644 F0-nolib/F0_testbrd/adc.c create mode 100644 F0-nolib/F0_testbrd/adc.h create mode 100644 F0-nolib/F0_testbrd/hardware.c create mode 100644 F0-nolib/F0_testbrd/hardware.h create mode 100644 F0-nolib/F0_testbrd/main.c create mode 100755 F0-nolib/F0_testbrd/pl2303.bin create mode 100644 F0-nolib/F0_testbrd/usart.c create mode 100644 F0-nolib/F0_testbrd/usart.h create mode 100644 F0-nolib/F0_testbrd/usb.c create mode 100644 F0-nolib/F0_testbrd/usb.h create mode 100644 F0-nolib/F0_testbrd/usb_defs.h create mode 100644 F0-nolib/F0_testbrd/usb_lib.c create mode 100644 F0-nolib/F0_testbrd/usb_lib.h delete mode 100644 F0-nolib/inc/README delete mode 100755 F0-nolib/inc/gen042 create mode 100644 F0-nolib/inc/ld/stm32f0728.ld delete mode 100644 F0-nolib/inc/stm32f042.c.tags create mode 100644 F0_F1-LQFP48_testboard/elements.lib create mode 100644 F0_F1-LQFP48_testboard/fp-info-cache create mode 100644 F0_F1-LQFP48_testboard/fp-lib-table create mode 100644 F0_F1-LQFP48_testboard/my_footprints.pretty/Hole_3mm.kicad_mod create mode 100644 F0_F1-LQFP48_testboard/my_footprints.pretty/Potentiometer.kicad_mod create mode 100644 F0_F1-LQFP48_testboard/my_footprints.pretty/SMD_conn_4x2.5mm.kicad_mod create mode 100644 F0_F1-LQFP48_testboard/my_footprints.pretty/TH_via.kicad_mod create mode 100644 F0_F1-LQFP48_testboard/stm32-rescue.lib create mode 100644 F0_F1-LQFP48_testboard/stm32.bom create mode 100644 F0_F1-LQFP48_testboard/stm32.kicad_pcb create mode 100644 F0_F1-LQFP48_testboard/stm32.net create mode 100644 F0_F1-LQFP48_testboard/stm32.pro create mode 100644 F0_F1-LQFP48_testboard/stm32.sch create mode 100644 F0_F1-LQFP48_testboard/sym-lib-table create mode 100644 F1-nolib/F1_testbrd/Makefile create mode 100644 F1-nolib/F1_testbrd/Readme.md create mode 100644 F1-nolib/F1_testbrd/adc.c create mode 100644 F1-nolib/F1_testbrd/adc.h create mode 100644 F1-nolib/F1_testbrd/hardware.c create mode 100644 F1-nolib/F1_testbrd/hardware.h create mode 100644 F1-nolib/F1_testbrd/main.c create mode 100755 F1-nolib/F1_testbrd/pl2303.bin create mode 100644 F1-nolib/F1_testbrd/usart.c create mode 100644 F1-nolib/F1_testbrd/usart.h create mode 100644 F1-nolib/F1_testbrd/usb.c create mode 100644 F1-nolib/F1_testbrd/usb.h create mode 100644 F1-nolib/F1_testbrd/usb_defs.h create mode 100644 F1-nolib/F1_testbrd/usb_lib.c create mode 100644 F1-nolib/F1_testbrd/usb_lib.h diff --git a/F0-nolib/Chiller/chiller.bin b/F0-nolib/Chiller/chiller.bin index 65d619e70ea9535791da4451c5737ed71b6ba7de..f25b2760df4a71ee33528317ac1b1e172cf46820 100755 GIT binary patch delta 4315 zcma(z3vd%xlKmvvmSr2umLdAZ8A-NdNhS!46Jz5bk3dK>HW&;9Y(8TYk}(cs7E%}I zcIzZQd#5q6=m5fa?xzuKMZ}ZUxh>dMo z*CRVwZtt$@rmCmEuV26Sy8FE|^~YA|K@U_@8E97^)FB)%v4lZkVE$9+KjqFT6@y!$ z`+t#->i@gVt@i&vIt<$U;{WNyGpvCl=OE>rb@X!9RgGiuI`^XFab^%c+WJfXo?cJW zS8?^?qU2KnNVU&$y^yM(ZK5DmH`~YVgFo(s)RVK2(#-;;KIggck7(tcC8?=NNJVD9 zm5;Pk+bGB^C8>qsNm4y2Mp_;~0ZA=D?xy%3a;SHy8xo@A!T%f5V>sM4`xtBNj^vFL zdpwX*&5CH#;s!A)J>R<#@lomXUO*g?1V#uLgiEr3qjF~-W{uHE98$%zzmdtWNvdEH zsv+@`L4@-XoJxa3!pJ?dr{z7!|1nKcZ(zjVrcdEyehlSj(#p|I z?mgn8?ydybcA(9RnGt_l?nEk)CR7`1={9{1AD4#vAn2dyIhG@ zt?5cUDoEXzwj$?G+vks9J%*>o@Fu<(@kfoI4Ol=+g#oA*Bpxz>_JkR*(q8 zb%dgferXAg{-@Zd>PGUTm_=g>9|(@+n7HHJ8p`H7-Zf&oSoK@7joTl59i!eCEc8V2 zzo1^rz0W-qEca-+=(e8L9PbDPs%l?!gJ~}x(0chG@tJl@+tlVh9MO+i9^ z?;uC)<5j*sPRHx%8)C%X%J!2{o>c05dA2JY%hb1=+TGEu^L2EM*aNYmoZIqz!PU%h zZgtF^Q&)0Nu%4}FqFu+j2D&Qiqr2~p{U~SEa^DPwxc7G7p543mme4bzgQ;K*+#GD+ zV%$eOxMvb}lnED3^2dEAxd-Lgc+S~P7SV@mDjfSfFZXgNPk;IOJl)3ym^+V5>o6O) zP3tdck=r-@wVa2zd-|H3i+IoUH*yZ*E|goXm?{Vr2u6fLYwSv{J-l{y#I}v;U^@cs zoO*A5u0>_h75LPr>{Jfu3URCrGX`NT zMyQ&mdNUJ0&V1fW+&Q8TB{!!elpM%BpOtt~lA8JzO1d+ltYjrhqR~dajv4URv6kpy+zVFls{fFfqr*sF6F)(XvL{jG4xvV&4`(%hFYB`0 zkC6j$|2+2ya^H#%$|HWg1k%H|0Vp;1ic)W3y~_JO5|$;D|V$wQ^W81-(lZf2gC0&wcNXG2|wVs@SWyM!6)bkM}7Xc*F!}USa<`c z1Xz!qt2&~p)6`5P-nVNUGdueM9N`mm@zsd^eDHw4^z_HUr4rfD(b|Iou?;hZ-U6RN zAP$xN{Latp8{s(Z9S=EojURTr%G3(&J%jOCw>p_|w1?7-2ZghYA_2Er1e9oMhXf6E z27Rb~XYjV6dx)byzRk5J*DMjxeQBgX?_qkV8v7hHgpYH9?74F?&sZG@$D4&$EAgpw-n2E=Zh^ z2&Jdh;=%QA(lCAzo$6_gSW}T%{v7geNgCu;;y*j#>g$pg=^T-7sfd=>kkP|Fmq7a; z2$b>~zSOd(;SO}(D8xS~(SPt%ZiTY?%$yd@z$`X@;bP@&V57M2<}>N765dRlrWz9!Jz^LYF`+73z0 zJKfZa;J7B#$#S|my zB(3rhnfg9g9{3?yO!MdW-VX_NQ7)S|%TLTvv+m!_YlnomJeOt%g_NvpZbSCJCi`EB zrAF{8#46Dul*OJZxF-yEg1tkw2krAad4kRt!IdYTpqD50Kq^+_Jr7i~9HB^s7n)>K zcAs$H#5Va;rzvT`WtTA&F3-SrVyZuZySqhJ;U=}qumrcOqKJJ&=)k>|@!6nb+CnSk zj9triguamPhtpy6u{czeDkM^*qDWS5Wfz90+{US4u)pUoV_~?k+$=0esIgUP5nkk8F&*#SSciqy=s&O!SPn;+)fd@ag9kxS6O z6|l*`y*Q110jnQ2@n#O3#bP0A?DabH#-X}E^g0W~{6J>n&5ZtnuY91Hc&2a-lQN;c zlU3Ap+|Sr#VO7xw_+lan2Y*db#N0*ha2^~z2i27#`4^}h@Dr&H@<3;+$5?u1di@U2xslMEn_I1i%1oTiC}G^d zd9Epab68WZ9#ib!!2lPd{!})S`*Z2*XmTU=QBfki2RH9ZcYiMX@%_QUCw0AJ*hd1Q z17D>v32YowA|UjFbG5jubyvX2gVQ2v_~&S2lGwI0J6cMF9ZU%i_9)ofirm#AB%hKx z-6nAd7QkW2#X;qkb<2b;%zo=aiSYL?1t%nk&B+zHOT`_donf~l(aNwbCH&gfD1e<* zDMRdS3{%w>CC$c-#`eu~>uUKL}gfh{GWKS>A!Z8iMsL zQGY(aVto`Uw|*VJSAe@#ilpkEz&-181*nRWMM5p(HR_G^T;|RuZ`i-t*&3jmo4tO# z#wrOHg{rpw))AR%~Y=Zn1#QEpsYx1Ii zs+TPLFs>3bE`wN>4HLu%q!PyIYY^T+z)Yg_!@1e3TO+P=YQ{4Y=hONNgqp#`oXY06XSl4@jrCG4g0nnZIk$;q zsc$>DrxTHi1x&M1y|mZx(~r8X_~atkWhW9khu5ZM6q!kpIovqCC+ifPe;EG;gBV&} za+HvZvEP=u7us&>FT634xg#~a*8hP&GW_(pef}k}e8YzDvSen$p2=}&@zsg*?K(m) z8Y_T~@;p~@66HvM7xFXLK#@^n}?!r7gNY0Y@2QPF=hx*fD`{kVJAh}q}2?Aq#E zu?tddH(9@>bHoVoh35+KwmXUUoxb8rSrzyWW2(X1U+l|dW|0=wj`%CWY$X$;3qLdg zX}D}Yqb1Aj%o%vWNPb5yo~5S~7SkQ5&;Jl?q~Swzzm_cPhf_w?r5HVvFtwQ3XHiEQ zZ@0XvC3UaDVw3jw18ZNwab+zF|4$t*_~wF^;;cUWw}W56!T55alsC*zFxn9^hZXv7 zL3zKxaIuRXErJ|hA*kWiyynD0&^Im4f7!p7yy8E)8l+mN;`i|7+!y>y{3l#F?BIUM z>6h#84z2l1VvWIHTv6yCb&E;RROVe{GSC%b?CY{}&z5qfvx5U92mEgPcI$s``UQP6 zF;{*$plDNx33*F-4ty!w;X8TAvrwyUK1}e1h2T=nVTD%U%X$1gubS5<5uZTaCopIC XZ?QwhC9z{hE%{)c(hsGK%hmq{+Ud!N delta 4168 zcma)94RBM}l|ENLwk+GRjBwD8Z6rP0*m}muKNzq>ke`B(o&*>hvW^Yr89{lrLwRkt z8+A4l8Om-HlP$)gjls?4k7PHHrc|uchQzbpnM{Vvrrq~wn6bb#O7rtNrDRngV}lXe z^MohKrrnv9=IGq>-E+^+z4zREHL~X9Y6BR+cF_nr3F+5JM~kfyPy|@`DD5jb_c|4Y zuhWjdf`8xezjeN@|Nm=8K=;CZe`&-up@AQsfz*7O3Uj6FS}(^}()UjvVaMUOUC(*R zt0dJl2h|#pjAv*vJLK-UBtxp_#3zE^LI4M#bW8lb917RdAe~LR@OL!%7!Ln)`munie<*jV z$mN36g|vt|LHeBZQn-WurSx$a=zo*;vx3hkyescV{X}|yz!V*dL+bbGb252VvHexR z{TOgRYQ39|eCx}I;qEK)9t7V`6WjKHwcq4cTs@l}&kmo&;rlV)9YG7c((-psn5Kq$ zQ2XUHP|03MeUyGu-V=7My%tw5hr|JS8}>bu=E9JAJiXQisUM^}0{h?(sQG^SyK+1B zM$;tK6~QSPO%Gr;UYZeCB(~Bv@iDqx0=o}YJeetPI_v(4uSM^{=snoWr`=x$|6{@rqpA~qdu6ClW^*J1soiPPl!xwH(wf?vQnTDfJEW6g*8@4V)d{dS_#%)h&VX&X zta2<3oakfas^BrX4vn{@m*a#(>Y;QkN{#8-h3R}C4XNvQz_wTh+amejZ)`qN6eKa6USootpy~o0J^D1{Y*J|O9_*8BSXW@U8<=y;0AuqCZbC(7VdM@p<3=S)J z2plK4?!jSCcj!shP+yG0|1l=3TO$IiukYmZ-8y<+dYanOe_5UH>FgV!NX2*jm$hc@ zXurm0_Z;n;vj0cbd*l&rpZ^WeagX{7Tv7bJZ?%p)&kg#^T{GtUB60Kvj`Mm( zB_8LGdX95LRJY%nGt3)3hq;IEsb{r^d2r5M?g(_m5*lk+ATUZ2JgL-sa_yHmKieEU zv8%gZ@9FNFa(H9K+9kPdeuh2DF|ifemBlOl&4Fe%+BecS)>pYYx~nPneeJs1;yWrw zXrRoqXIE&z!rT$<0f*nrDb&r`*%RC)^ms?Iu@+94jQv4-YU>iwgP|BMf1I21K`3|e z2QTI3T+GM4!p`e)v#yvoOzKeb%+JcX$k)yPQO-f$I)7c(B40IsRX&3Y`YWW9NY5j^ zW{rK8x21O^uMy`5Vel&(QFxL+k^{@_Qt&H0`AS@UU$H~@whkcbtTD2 zU4(*;&9JH3pT=34o2OAQ-i3KOk-H9O|*@mizfapO>rHv$gJ zPxYPjqL;)QG3Sm{$K_PH5z}!`OtK? zg9&xD{82dOW6)){Q=7+ST|08D9z z8}b?$t+?BFh*8bBy$3xFg36{KwH2AB7Z@_5AR0u};!kSG6-Clz`yUQgM9XVQLP56q zT6hh=$htN7A_LP;$}PN#>tOLhi1Zqu$aR3(HdDU(0MmcDedz%PE{!L(4M&-lD{X#u zlYg)w`g9zJNzW&t7NlpB*iQUs(g0AQ*DNYnWa=!!U~XHPd+Nt1-b{1#y_lq#B)g_rXF#!Hq5>z(1R;{m?5HyIxSqqQUYTfea*1_jf?A|)4g&1vB>-mjyogMA0&;%{i57V;Og z-?MzV$=;EtyaYc53nik9eVV^2Qt7W+n1N$Vz6j1d@fg!GZ2(fi%g@C3ivxck+N>Wjip#AJkYAi*R<9_-rjq=>F`!7{*x%%lEb+NE%G^J91H08)`q3w#yku zL7+Rt;XSQq+e4qo8fq{iY?61wiLvsXHV}Tak(NnG4NYkSn%{L+nwz)|)o;bHf(xl!2^d}2^R{BsbMw_Le za-T;Ij^@IEVZzLV&B8%VuBgX@%3Y(mVggV3SQ~K}CW#H`dC^^?7B#-i>|2>HWR>lP z9P28qDikwnP`c+NivM%$a3Q@#3y01?wOxc|rJ_fBb2E_%haiK&0@EdLRk*KDJmu3Pa5Xk=w}mYIvwA6*c?| zjCq>acd)&|VxgBU=D`sKM|&Yni!gmG*@L6Mm)wE-^O>ZRgUW|DH3$#0-!9#sB>e7r zr~!%CYq&ysvA8TUZHBxxq^2kl^ap}@d=x6X)-8vbCz8bO4VVR>@bF@(b|ZH$rL}&& zur?dehf)uH6O(-~u-0$o$Dym8pzc+m^Ee^oH*&Er>XR&0JAe^7wBmALdP zea)M51gMIV`-OTo;x-vftGUdwwQldW>Wx08t`FJRSzQ8-pATOhB6;LH1nOsb%=ko_GFxFtp9e0Fc_1;gJ|=CMF2 z3y>!oh1{(394RMY<<%VihD{)BFbeZAdvQr5H(&`93Y;2oU5#cYGy6_j4JI&5s;GG^ z24&N_CKhibloOB5B_h-;5%pJwDhzC!NgX!+!*Bab@sUIDoST*Ol-sUn70j$)6pia( z0#~*m@c&W0XFKj_DTyiF$QA>vCT`c+Uljj6A(OG?M!KZzmSOVTY-VX{VuSZL-l2&f zpV{ZFi|sRRG1gCKW*r$VrNf6FTG{zSW=TvkmP87~?$Qo8)q9Z9%=DPL%X6Loo!AaK z8m<^B=$%s*kJq}h%d=)D-s!gjUTe>k3F0MZ3h+ugj+YYg&B;@EEsMjM%w0@Y*f8aF zvUK1CW4!Qz=Mz&UsHtlIv!492YbHFDlbXgnUNvQg)66aDq>eP5jKCtZ-9O9}UQpK? z%igm*r6cuE!4?x1I4T=B3mj%{OO~Kz<7-Ub1+{}JQ?I;c`LXAkN%#KPhS!*RsU%qP zfA(c&*WW4%7X8)!mvQVAzHxAQlvjtL6m(PM9#`7mq|`)_b5)`cw4MS`!_RV8N+n=e zyF9OsG@A^~%lM_-UVbO{FZ^?y%p00M&@!gvIJ1S>H54~ z)A*T1U3Y6*O=)5~OA0H%sm0gB``iDtl{CgM-PEKO!1;xATh_vL*#S7m-m^a~(W#lo s3H~!d`q2Vc+6uk#4VhKl!#_d(KK9*Q=r32r%FWHHI@Q^7^LN$%1NCB+kpKVy diff --git a/F0-nolib/F0_testbrd/Makefile b/F0-nolib/F0_testbrd/Makefile new file mode 100644 index 0000000..db53431 --- /dev/null +++ b/F0-nolib/F0_testbrd/Makefile @@ -0,0 +1,151 @@ +BINARY = pl2303 +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 57600 +# MCU FAMILY +FAMILY = F0 +# MCU code +#MCU = F042x6 +MCU = F072xB +# hardware definitions +DEFS += -DUSARTNUM=1 +#DEFS += -DCHECK_TMOUT +#DEFS += -DEBUG +# change this linking script depending on particular MCU model +#LDSCRIPT = stm32f042k.ld +LDSCRIPT = stm32f0728.ld + +INDEPENDENT_HEADERS= + +FP_FLAGS ?= -msoft-float +ASM_FLAGS = -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +OPREFIX ?= /opt/bin/arm-none-eabi +PREFIX ?= $(OPREFIX) + +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +LD := $(PREFIX)-gcc +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +SIZE := $(PREFIX)-size +OBJCOPY := $(OPREFIX)-objcopy +OBJDUMP := $(OPREFIX)-objdump +GDB := $(OPREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR = mk +LDSCRIPT ?= $(BINARY).ld +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/F0 -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -MD -D__thumb2__=1 +CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration +CFLAGS += -Wredundant-decls $(INCLUDE) +# -Wmissing-prototypes -Wstrict-prototypes +CFLAGS += -fno-common -ffunction-sections -fdata-sections +#CGLAGS += -fno-stack-protector + +############################################################################### +# Linker flags +LDFLAGS += --static -nostartfiles --specs=nano.specs +#LDFLAGS += -fno-stack-protector +LDFLAGS += -L$(LIB_DIR) +LDFLAGS += -T$(LDSCRIPT) +LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map +LDFLAGS += -Wl,--gc-sections + +############################################################################### +# Used libraries +LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group +LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) + +#.SUFFIXES: .elf .bin .hex .srec .list .map .images +#.SECONDEXPANSION: +#.SECONDARY: + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: bin list size + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +size: $(ELF) + $(SIZE) $(ELF) + +clean: + @echo " CLEAN" + $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(OBJDIR)/*.map *.d + @rmdir $(OBJDIR) 2>/dev/null || true + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +gentags: + CFLAGS="$(CFLAGS) $(DEFS)" geany -g $(BINARY).c.tags *[hc] 2>/dev/null + +.PHONY: clean flash boot gentags diff --git a/F0-nolib/F0_testbrd/Readme.md b/F0-nolib/F0_testbrd/Readme.md new file mode 100644 index 0000000..50ad9db --- /dev/null +++ b/F0-nolib/F0_testbrd/Readme.md @@ -0,0 +1 @@ +Simple test for STM32F0x2, blinking PA0, PWM for TIM14CH1, two user buttons (PA14 and PA15) and USB (PL2303 emulator) <> USART1 echo. diff --git a/F0-nolib/F0_testbrd/adc.c b/F0-nolib/F0_testbrd/adc.c new file mode 100644 index 0000000..65880fc --- /dev/null +++ b/F0-nolib/F0_testbrd/adc.c @@ -0,0 +1,72 @@ +/* + * This file is part of the Chiller project. + * Copyright 2018 Edward V. Emelianov . + * + * This program 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. + * + * This program 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 this program. If not, see . + */ + +#include "adc.h" + +/** + * @brief ADC_array - array for ADC channels with median filtering: + * 0 - Rvar + * 1 - internal Tsens + * 2 - Vref + */ +uint16_t ADC_array[NUMBER_OF_ADC_CHANNELS*9]; + +/** + * @brief getADCval - calculate median value for `nch` channel + * @param nch - number of channel + * @return + */ +uint16_t getADCval(int nch){ + int i, addr = nch; + register uint16_t temp; +#define PIX_SORT(a,b) { if ((a)>(b)) PIX_SWAP((a),(b)); } +#define PIX_SWAP(a,b) { temp=(a);(a)=(b);(b)=temp; } + uint16_t p[9]; + for(i = 0; i < 9; ++i, addr += NUMBER_OF_ADC_CHANNELS) // first we should prepare array for optmed + p[i] = ADC_array[addr]; + PIX_SORT(p[1], p[2]) ; PIX_SORT(p[4], p[5]) ; PIX_SORT(p[7], p[8]) ; + PIX_SORT(p[0], p[1]) ; PIX_SORT(p[3], p[4]) ; PIX_SORT(p[6], p[7]) ; + PIX_SORT(p[1], p[2]) ; PIX_SORT(p[4], p[5]) ; PIX_SORT(p[7], p[8]) ; + PIX_SORT(p[0], p[3]) ; PIX_SORT(p[5], p[8]) ; PIX_SORT(p[4], p[7]) ; + PIX_SORT(p[3], p[6]) ; PIX_SORT(p[1], p[4]) ; PIX_SORT(p[2], p[5]) ; + PIX_SORT(p[4], p[7]) ; PIX_SORT(p[4], p[2]) ; PIX_SORT(p[6], p[4]) ; + PIX_SORT(p[4], p[2]) ; + return p[4]; +#undef PIX_SORT +#undef PIX_SWAP +} + +// return MCU temperature (degrees of celsius * 10) +int32_t getMCUtemp(){ + getVdd(); + // make correction on Vdd value +// int32_t temperature = (int32_t)ADC_array[4] * VddValue / 330; + int32_t ADval = getADCval(1); + int32_t temperature = (int32_t) *TEMP30_CAL_ADDR - ADval; + temperature *= (int32_t)(1100 - 300); + temperature /= (int32_t)(*TEMP30_CAL_ADDR - *TEMP110_CAL_ADDR); + temperature += 300; + return(temperature); +} + +// return Vdd * 100 (V) +uint32_t getVdd(){ + uint32_t vdd = ((uint32_t) *VREFINT_CAL_ADDR) * (uint32_t)330; // 3.3V + vdd /= getADCval(2); + return vdd; +} diff --git a/F0-nolib/F0_testbrd/adc.h b/F0-nolib/F0_testbrd/adc.h new file mode 100644 index 0000000..fe26926 --- /dev/null +++ b/F0-nolib/F0_testbrd/adc.h @@ -0,0 +1,29 @@ +/* + * This file is part of the Chiller project. + * Copyright 2018 Edward V. Emelianov . + * + * This program 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. + * + * This program 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 this program. If not, see . + */ +#ifndef ADC_H +#define ADC_H +#include "stm32f0.h" + +#define NUMBER_OF_ADC_CHANNELS (3) + +extern uint16_t ADC_array[]; +int32_t getMCUtemp(); +uint32_t getVdd(); +uint16_t getADCval(int nch); + +#endif // ADC_H diff --git a/F0-nolib/F0_testbrd/hardware.c b/F0-nolib/F0_testbrd/hardware.c new file mode 100644 index 0000000..716eb3c --- /dev/null +++ b/F0-nolib/F0_testbrd/hardware.c @@ -0,0 +1,119 @@ +/* + * geany_encoding=koi8-r + * hardware.c - hardware-dependent macros & functions + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#include "adc.h" +#include "hardware.h" +#include "usart.h" + +static inline void gpio_setup(){ + // here we turn on clocking for all periph. + RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_DMAEN; + // Set LEDS (PA0/4) as Oun & AF (PWM) + GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER0 | GPIO_MODER_MODER4) + ) | + GPIO_MODER_MODER0_O | GPIO_MODER_MODER4_AF ; + pin_set(LED0_port, LED0_pin); // clear LEDs + pin_set(LED1_port, LED1_pin); + // Buttons - PA14/15 + GPIOA->PUPDR = (GPIOA->PUPDR & ~(GPIO_PUPDR_PUPDR14 | GPIO_PUPDR_PUPDR15) + ) | + GPIO_PUPDR_PUPDR14_0 | GPIO_PUPDR_PUPDR15_0; + // alternate functions: PA4 - TIM14_CH1 (AF4) + GPIOA->AFR[0] = (GPIOA->AFR[0] &~ (GPIO_AFRL_AFRL4)) \ + | (4 << (4 * 4)) ; +} + +static inline void adc_setup(){ + GPIOB->MODER = GPIO_MODER_MODER0_AI; // PB0 - ADC channel 8 + uint16_t ctr = 0; // 0xfff0 - more than 1.3ms + // Enable clocking + /* (1) Enable the peripheral clock of the ADC */ + /* (2) Start HSI14 RC oscillator */ + /* (3) Wait HSI14 is ready */ + RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; /* (1) */ + RCC->CR2 |= RCC_CR2_HSI14ON; /* (2) */ + while ((RCC->CR2 & RCC_CR2_HSI14RDY) == 0 && ++ctr < 0xfff0){}; /* (3) */ + // calibration + /* (1) Ensure that ADEN = 0 */ + /* (2) Clear ADEN */ + /* (3) Launch the calibration by setting ADCAL */ + /* (4) Wait until ADCAL=0 */ + if ((ADC1->CR & ADC_CR_ADEN) != 0){ /* (1) */ + ADC1->CR &= (uint32_t)(~ADC_CR_ADEN); /* (2) */ + } + ADC1->CR |= ADC_CR_ADCAL; /* (3) */ + ctr = 0; // ADC calibration time is 5.9us + while ((ADC1->CR & ADC_CR_ADCAL) != 0 && ++ctr < 0xfff0){}; /* (4) */ + // enable ADC + ctr = 0; + do{ + ADC1->CR |= ADC_CR_ADEN; + }while ((ADC1->ISR & ADC_ISR_ADRDY) == 0 && ++ctr < 0xfff0); + // configure ADC + /* (1) Select HSI14 by writing 00 in CKMODE (reset value) */ + /* (2) Select the continuous mode */ + /* (3) Select CHSEL0..3 - ADC inputs, 16,17 - t. sensor and vref */ + /* (4) Select a sampling mode of 111 i.e. 239.5 ADC clk to be greater than 17.1us */ + /* (5) Wake-up the VREFINT and Temperature sensor (only for VBAT, Temp sensor and VRefInt) */ + // ADC1->CFGR2 &= ~ADC_CFGR2_CKMODE; /* (1) */ + ADC1->CFGR1 |= ADC_CFGR1_CONT; /* (2)*/ + ADC1->CHSELR = ADC_CHSELR_CHSEL8 | ADC_CHSELR_CHSEL16 | ADC_CHSELR_CHSEL17; /* (3)*/ + ADC1->SMPR |= ADC_SMPR_SMP_0 | ADC_SMPR_SMP_1 | ADC_SMPR_SMP_2; /* (4) */ + ADC->CCR |= ADC_CCR_TSEN | ADC_CCR_VREFEN; /* (5) */ + // configure DMA for ADC + // DMA for AIN + /* (1) Enable the peripheral clock on DMA */ + /* (2) Enable DMA transfer on ADC and circular mode */ + /* (3) Configure the peripheral data register address */ + /* (4) Configure the memory address */ + /* (5) Configure the number of DMA tranfer to be performs on DMA channel 1 */ + /* (6) Configure increment, size, interrupts and circular mode */ + /* (7) Enable DMA Channel 1 */ + RCC->AHBENR |= RCC_AHBENR_DMA1EN; /* (1) */ + ADC1->CFGR1 |= ADC_CFGR1_DMAEN | ADC_CFGR1_DMACFG; /* (2) */ + DMA1_Channel1->CPAR = (uint32_t) (&(ADC1->DR)); /* (3) */ + DMA1_Channel1->CMAR = (uint32_t)(ADC_array); /* (4) */ + DMA1_Channel1->CNDTR = NUMBER_OF_ADC_CHANNELS * 9; /* (5) */ + DMA1_Channel1->CCR |= DMA_CCR_MINC | DMA_CCR_MSIZE_0 | DMA_CCR_PSIZE_0 | DMA_CCR_CIRC; /* (6) */ + DMA1_Channel1->CCR |= DMA_CCR_EN; /* (7) */ + ADC1->CR |= ADC_CR_ADSTART; /* start the ADC conversions */ +} + +static inline void pwm_setup(){ + RCC->APB1ENR |= RCC_APB1ENR_TIM14EN; // enable clocking for tim14 + // PWM mode 2 + TIM14->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0; + TIM14->PSC = 5; // frequency - 8MHz for 31kHz PWM + // ARR for 8-bit PWM + TIM14->ARR = 254; + TIM14->CCR1 = 127; // half light + TIM14->BDTR |= TIM_BDTR_MOE; // start in OFF state + TIM14->CCER = TIM_CCER_CC1E; // enable PWM output + TIM14->CR1 |= TIM_CR1_CEN; // enable timer +} + +void hw_setup(){ + gpio_setup(); + adc_setup(); + pwm_setup(); +} diff --git a/F0-nolib/F0_testbrd/hardware.h b/F0-nolib/F0_testbrd/hardware.h new file mode 100644 index 0000000..09b8b45 --- /dev/null +++ b/F0-nolib/F0_testbrd/hardware.h @@ -0,0 +1,71 @@ +/* + * geany_encoding=koi8-r + * hardware.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ +#pragma once +#ifndef __HARDWARE_H__ +#define __HARDWARE_H__ + +#include "stm32f0.h" + +#define CONCAT(a,b) a ## b +#define STR_HELPER(s) #s +#define STR(s) STR_HELPER(s) + +#define FORMUSART(X) CONCAT(USART, X) +#define USARTX FORMUSART(USARTNUM) +#if USARTNUM == 2 + #define USARTDMA DMA1_Channel4 + #define DMAIRQn DMA1_Channel4_5_IRQn + #define USARTIRQn USART2_IRQn +#elif USARTNUM == 1 + #define USARTDMA DMA1_Channel2 + #define DMAIRQn DMA1_Channel2_3_IRQn + #define USARTIRQn USART1_IRQn +#else +#error "Wrong USARTNUM" +#endif + +// LEDS: 0 - PA0, 1 - PA4 +// LED0 - blinking each second +#define LED0_port GPIOA +#define LED0_pin (1<<0) +// LED1 - PWM +#define LED1_port GPIOA +#define LED1_pin (1<<4) +#define SET_LED_PWM(N) do{TIM14->CCR1 = (uint32_t)N;}while(0) +#define GET_LED_PWM() (uint8_t)(TIM14->CCR1) + +// Buttons' state: PA14 (1)/PA15 (0) +#define GET_BTN0() ((GPIOA->IDR & (1<<15)) ? 0 : 1) +#define GET_BTN1() ((GPIOA->IDR & (1<<14)) ? 0 : 1) + +// USB pullup (not used in STM32F0x2!) - PA13 +#define USBPU_port GPIOA +#define USBPU_pin (1<<13) + +#define LED_blink(x) pin_toggle(x ## _port, x ## _pin) +#define LED_on(x) pin_clear(x ## _port, x ## _pin) +#define LED_off(x) pin_set(x ## _port, x ## _pin) + +void hw_setup(); + +#endif // __HARDWARE_H__ diff --git a/F0-nolib/F0_testbrd/main.c b/F0-nolib/F0_testbrd/main.c new file mode 100644 index 0000000..6744eba --- /dev/null +++ b/F0-nolib/F0_testbrd/main.c @@ -0,0 +1,231 @@ +/* + * main.c + * + * Copyright 2017 Edward V. Emelianoff + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include "adc.h" +#include "hardware.h" +#include "usart.h" +#include "usb.h" +#include "usb_lib.h" +#include // memcpy + +volatile uint32_t Tms = 0; + +/* Called when systick fires */ +void sys_tick_handler(void){ + ++Tms; +} + +void iwdg_setup(){ + uint32_t tmout = 16000000; + /* Enable the peripheral clock RTC */ + /* (1) Enable the LSI (40kHz) */ + /* (2) Wait while it is not ready */ + RCC->CSR |= RCC_CSR_LSION; /* (1) */ + while((RCC->CSR & RCC_CSR_LSIRDY) != RCC_CSR_LSIRDY){if(--tmout == 0) break;} /* (2) */ + /* Configure IWDG */ + /* (1) Activate IWDG (not needed if done in option bytes) */ + /* (2) Enable write access to IWDG registers */ + /* (3) Set prescaler by 64 (1.6ms for each tick) */ + /* (4) Set reload value to have a rollover each 2s */ + /* (5) Check if flags are reset */ + /* (6) Refresh counter */ + IWDG->KR = IWDG_START; /* (1) */ + IWDG->KR = IWDG_WRITE_ACCESS; /* (2) */ + IWDG->PR = IWDG_PR_PR_1; /* (3) */ + IWDG->RLR = 1250; /* (4) */ + tmout = 16000000; + while(IWDG->SR){if(--tmout == 0) break;} /* (5) */ + IWDG->KR = IWDG_REFRESH; /* (6) */ +} + +char *parse_cmd(char *buf){ + static char btns[] = "BTN0=0, BTN1=0\n"; + if(buf[1] != '\n') return buf; + uint8_t pwm; + switch(*buf){ + case '+': + pwm = GET_LED_PWM(); + if(pwm < 255){ + SET_LED_PWM(pwm+1); + return u2str(GET_LED_PWM()); + }else return "MAX!\n"; + break; + case '-': + pwm = GET_LED_PWM(); + if(pwm > 0){ + SET_LED_PWM(pwm-1); + return u2str(GET_LED_PWM()); + }else return "MIN!\n"; + break; + case 'b': + btns[5] = GET_BTN0() + '0'; + btns[13] = GET_BTN1() + '0'; + return btns; + break; + case 'g': + return u2str(GET_LED_PWM()); + break; + case 'A': + return u2str(getADCval(0)); + break; + case 'L': + USB_send("Very long test string for USB (it's length is more than 64 bytes).\n" + "This is another part of the string! Can you see all of this?\n"); + return "Long test sent\n"; + break; + case 'R': + USB_send("Soft reset\n"); + SEND("Soft reset\n"); + NVIC_SystemReset(); + break; + case 'S': + USB_send("Test string for USB\n"); + return "Short test sent\n"; + break; + case 'T': + return u2str(getMCUtemp()); + break; + case 'V': + return u2str(getVdd()); + break; + case 'W': + USB_send("Wait for reboot\n"); + SEND("Wait for reboot\n"); + while(1){nop();}; + break; + default: // help + return + "'+'/'-' - increase/decrease PWM by 1\n" + "'b' - get buttons's state\n" + "'g' - get LED PWM value\n" + "'A' - get ADC8 value\n" + "'L' - send long string over USB\n" + "'R' - software reset\n" + "'S' - send short string over USB\n" + "'T' - MCU temperature\n" + "'V' - Vdd\n" + "'W' - test watchdog\n" + ; + break; + } + return NULL; +} + +// usb getline +char *get_USB(){ + static char tmpbuf[129], *curptr = tmpbuf; + static int rest = 128; + int x = USB_receive(curptr, rest); + curptr[x] = 0; + if(!x) return NULL; + SEND("got: "); + SEND(curptr); + newline(); + if(curptr[x-1] == '\n'){ + curptr = tmpbuf; + rest = 128; + return tmpbuf; + } + curptr += x; rest -= x; + if(rest <= 0){ // buffer overflow + curptr = tmpbuf; + rest = 128; + } + return NULL; +} + +int main(void){ + uint32_t lastT = 0, lastB = 0; + sysreset(); + SysTick_Config(6000, 1); + hw_setup(); + usart_setup(); + + SEND("Hello! I'm ready.\n"); + + if(RCC->CSR & RCC_CSR_IWDGRSTF){ // watchdog reset occured + SEND("WDGRESET=1\n"); + } + if(RCC->CSR & RCC_CSR_SFTRSTF){ // software reset occured + SEND("SOFTRESET=1\n"); + } + RCC->CSR |= RCC_CSR_RMVF; // remove reset flags + + USB_setup(); + iwdg_setup(); + + while (1){ + IWDG->KR = IWDG_REFRESH; // refresh watchdog + if(lastT > Tms || Tms - lastT > 499){ + LED_blink(LED0); + lastT = Tms; + transmit_tbuf(); // non-blocking transmission of data from UART buffer every 0.5s + } + usb_proc(); + int r = 0; + char *txt, *ans; + if((txt = get_USB())){ + ans = parse_cmd(txt); + SEND("Received data over USB:\n"); + SEND(txt); + newline(); + if(ans) USB_send(ans); + } + if(usartrx()){ // usart1 received data, store in in buffer + r = usart_getline(&txt); + if(r){ + txt[r] = 0; + ans = parse_cmd(txt); + if(ans){ + usart_send(ans); + transmit_tbuf(); + } + } + } + // check buttons - each 50ms + if(Tms - lastB > 49){ + /*static uint8_t oldbtn0 = 0, oldbtn1 = 0; + uint8_t btn0 = GET_BTN0(), btn1 = GET_BTN1(), pwm = GET_LED_PWM(); + // both: set to middle + if(oldbtn0 != btn0 && oldbtn1 != btn1){ + SET_LED_PWM(127); + }else if(oldbtn0 != btn0){ // pressed/released + oldbtn0 = btn0; + if(pwm < 255) SET_LED_PWM(pwm+1); + }else if(oldbtn1 != btn1){ + oldbtn1 = btn1; + if(pwm > 0) SET_LED_PWM(pwm-1); + }*/ + lastB = Tms; + uint8_t btn0 = GET_BTN0(), btn1 = GET_BTN1(), pwm = GET_LED_PWM(); + // both: set to middle + if(btn0 && btn1){ + SET_LED_PWM(127); + }else if(btn0){ + if(pwm < 255) SET_LED_PWM(pwm+1); + }else if(btn1){ + if(pwm > 0) SET_LED_PWM(pwm-1); + } + } + } + return 0; +} + diff --git a/F0-nolib/F0_testbrd/pl2303.bin b/F0-nolib/F0_testbrd/pl2303.bin new file mode 100755 index 0000000000000000000000000000000000000000..4e273bb68e6be938c9b515b29f075e344c574436 GIT binary patch literal 7364 zcmd@&e^?aPwP$8`VRu1UK+Nv4>g+5LWkEq=Nxu2o_qA`oCa*wH=AFB! z$*b+_d*9dp-olxC=H7G8J@?#m&OLX41Loa%U>!rah5-M=kI>v1CV1MMSsudo*I-xb zU#IzNGCETJyNpO2Shq+efgKIG19qXZ`ZzmmNme!$QW;jRxQG&xWrz0+bE^78bwnAm z*eIKg5+ZVPqgZI=RPQAkDQZmKfgx(C zT$dLWFAAK(=T$j9qg;MDBTe}LvW0o_JS7pI=8PVs>XB97>kUO>ZUb4 zHB&3D*Bo3^S*x-Y%_%f3RMxp_+)A?Gl5+>aL30$u!Ofe7LD2w)5jDUJh4=)>pg5pR zV9lgB4sk2c+=Vz`@Q;fQyeaxNXB4jt!9c0&ZRbDn55D8wl9X{lG;>9?S2zN71ztH* zSx|I<^U7oKi?2?4JD`(iN7wlmj_$CAL}&5I@LBOS=yg^X%rCAN^Ho8dqXHEyuxy3< z8Ru2kv-D5Go77`!fqYqw>pd(3W4>@)j1G>)nKTnKsng6K^+n#0_^9oC!Q1+fh#E77 z37^`~l0;`IgK zOKnY(9PKWptes-hX_JtkT9M;Jos7~r`X4cjLhQFO>>Oer>SWF%M*yCD5`fGd9XQ%g zpLBz%t1p~7*U7?h>V%tfW_@0B$FtX(#2X#GmUs==b13_qRMpP-A<{BlYo@L~FL^l5 z=i?#LCk**=*(9_Q|H6ndvDX-4ePK1@ zB<1GLQsvySKq}`Ea(!pRJGnP?@Fzz2cF4((Sh6;2wk%78W)Dj4Rz7qHpTM@`I^NTT zcGkaE^Z6HOUVownId4SvNxRh7u%Ggujr_a*r9xxk0i#oYJn*=b97ekQ>^+f2j zIvl#L#|(}%|43bFX(lF`ajvB9oYY@&V`JL zc;lkZhsgWO*nXkt7|&_!D81TPeT=WxD2(=Fd_YsZMR1GIqg zjCz|^64<(FzETO_t)%jAgkLH>%ukN2mmXDH^kS42)V7Wcc`wDdcO$nAxu3hs{acL- z6x_r8OQg$NzH{`>9B*q62G-s~bp@$R%iHc!y`kj<^6#N~1*sM<-*cDhB`qV6br02d zkjlS&*IlZA)Z78~9;&X`jGwL;2tgZ73w}~Iv zvbmt>7tHscMM{rwb$@2@WjHI=7TgH+TKeXUboAPLX`e81C?E>WZXP3jsU?DQS#qyd ziQvz?@sW$}=~H?R?NFjSZYV6A+31vWUTqu2ppBzn+hTya)h=m1$S}P8D-C@<&K_zp&l*HMJ>|CmVSu9+} z#bZXvmlI>Fiw_*J(va_<}lPigO_Qdk-)b$9V|-}QxuGE|0Q&r%*vrDQI>*u$ku49ao0 zrjNTNnz`gOCe9kb`a|hXzd8@IVXfJHjb!jNE!W3{J>X!?TshY*m@#t?F+_@`KXN$iDu-lBBNTMa6cDyZz` z>Vzg09XX*^^#z)$=u|0(OVH2ek+Fb{1Wu3~N-jhOO#S>InD^@>lnb@Dy5RmaP zYDRO0Vf+G`fg^hgzk>1Hfy4dAM3zA>G2`2FqRpN!0r>@0Mdyx^l& z854;!_D!4*Sn$HrG-FJdXTS$fbNFt;w_CR;pRe^j{hx9Dm#ko=Y+#)nApU9sb%1U^ zgdPf6OEt=S$^CODm0!6qrTsWuBKwY=@HbV_?MeZuu(_|-7vd=Q!S*2zI)`*nO0Ob)=(g<8gD$iNCHhl(&TIp~!< zb=mL~Kkpr83k$0uCmo{cw;(6&9q{F=9x1&Y{I19m_P&@su~x`8{7&vo<|Zphb5m2q^SOOD+3 z6=HkhC&XV!oDg4e44B&eYj1=f@^2Yk9q5ITif2WGStV69IXQ^_{j_6nWuUBSENmjEUt2gKJSf84_>l$63`oY)Ngf(FxoRURuu-=H?4uOl?rvVJelY{62Xo0`d6sq8LBZltC#-&D$p zY^{>YS^d+IA#Z&^k(9zR+0SbvEA5Iz*-6$=~FfXKzCuu^v z-Jgr~a_Nj21k~n_lTYY@9v1mX@lXua3oY&-X zyk+O%-Jj$WliW(`3p|@LFb2-!-Bm%^9-z7N*s9*v0sH2J;(WydJ#eO?143A#eY2v9 zF7%u!i3^N4ca^se8WXP=`AQG`LBGRKcxTTY6|*Y%7i(#fy7)Biw;8Zvl2SKyi?yO! z&;u!3eh72Mzgr=BUMQ&*nf5Ar+F4Ovi#&-M^+3S}oAyG*5BT5XZvBHHA%CCP1G;|a ztReFm6adkg%;^}g<2iNKFeX|J2d?Y5?}o*#WEQ>7By(q25^Zj|vN5Abg=8+omIB6A zjq39TZcry05`>f9uIfe7qCk(l2y^7@X}?ffSmdrq=7!i55}_q3`=)mo+;Rt0R&Y!T zono&n(R}lZs^GHhU2ClEl=rVqkW)X+a1A5}a^AU;yAk)tO0$JcI)`O3cRXAMo z8=cJ2kM`S%(278O?T()jpKBekz>$7f5+A`jEF-zl)CxY+Hmn~9(QU>p&?Hh1nDXu3 zC9u#1(W_Ird3mi%!0v@;;gl`s_oF^A7gFbv+o`p$l~XIgKNWdTFGRTvYmr>|#mJ)V zz}l)(rdV1cHUYE)@kjCv1qK9ovj5>i>bvtZhMWn|TtJ87a`BFv-^WiyibJ8$5uP43 zVK{jp(2>w_O6=mPQS>r+t7Go5FpjN+`H%&3LPrr_4i>B(ei5qQK#!gm>%}+3j*geG zKP2XXD1MKpN6v`Zut9tl`_7AtKoC#FMw5XTRZ-pm!{Z_+s$o^MdS2mSY?Vh1_aIj? zxFG@7i~UHE=lOb=@;r~DOFbQ7#&e2?VTb1lq=PXh(jVgO!!Kc99+*5K-Zt7Dj_aTO zZu2BRHD-l8jHCq5N0?{Gw;h`d zRrgsd^#B_<3*UB9Z&9zE*H79%2jFuI zphY8&!7Dr8z+2BG-he|qJ=W>$=1n8uiy!aYdAOWfGd+BVqKE$^GN}VASUdT)5tFTx ze{{rT@8kvBphiYrBQS2WUqp-=xojG8m##k? z!#iWR5W}SyPN=DogcyDir6WBZqmSX8F)kL+iKXiuxaWpW4WKJTqmwkr`%5RZ$Mx2Y zCNV)cc=i9cWp<6fl>}N5Z*ss0$Cq)y_KC#OIWZqe8M(=JQ0N!9TZtnb)XC&d-g>(= zW4lH>nGE9{w!hW>jSb(sgSEJaRSt(pp?>&z=2{Woy0KQQis?JMs}|f<{I;&m$2}$S zZKE@RqTtL58y3+f^1(XZa>!%{D&9iV9CUqztOSz z&(PjX0Be0q+ZqOKRTyk;Zt*fjnR}Rh!RopL%j^J;6l^TrP`07`;XFH(Z4t}wz94;R zur}E6c(9JCt8S}iS{@JXW44v?Ymf_I)A|Z8K{EZB%QJH_nH;8JZ!JpQA6#A+oJE+D zM>a7v2bes2W(^^z54JHikF~Y6?A@QapV{A5-4?WG*54T^-cS%@c)Ys#G3;M|r+b6>?uB9FqUQ85-b)r6P zXuFu~&vXzQ6>W~$XnSzqfmw}b$7j{v-4Zh=v!tO7&Cwj(Ti>QI4f~lrEvS2&QoWb? z+yiJnWLdh*UasH>{#Wm9X;W|?TB~s-ExVB}czZ!!MnIMWEsvprf=qRD^XzcL{&lha zDnqN>wg{AywcIw|Z7pInk5o6bF{EQ(u%@L27ll8LJYFXeY6ZT0bMC{r*$lRM59iu} L++|f9A*25V>M3C3 literal 0 HcmV?d00001 diff --git a/F0-nolib/F0_testbrd/usart.c b/F0-nolib/F0_testbrd/usart.c new file mode 100644 index 0000000..4915aba --- /dev/null +++ b/F0-nolib/F0_testbrd/usart.c @@ -0,0 +1,259 @@ +/* + * usart.c + * + * Copyright 2017 Edward V. Emelianoff + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include "stm32f0.h" +#include "hardware.h" +#include "usart.h" +#include + +extern volatile uint32_t Tms; +static volatile int idatalen[2] = {0,0}; // received data line length (including '\n') +static volatile int odatalen[2] = {0,0}; + +volatile int linerdy = 0, // received data ready + dlen = 0, // length of data (including '\n') in current buffer + bufovr = 0, // input buffer overfull + txrdy = 1 // transmission done +; + + +int rbufno = 0, tbufno = 0; // current rbuf/tbuf numbers +static char rbuf[2][UARTBUFSZI], tbuf[2][UARTBUFSZO]; // receive & transmit buffers +static char *recvdata = NULL; + +/** + * return length of received data (without trailing zero + */ +int usart_getline(char **line){ + if(bufovr){ + bufovr = 0; + linerdy = 0; + return 0; + } + *line = recvdata; + linerdy = 0; + return dlen; +} + +// transmit current tbuf and swap buffers +void transmit_tbuf(){ + uint32_t tmout = 16000000; + while(!txrdy){if(--tmout == 0) break;}; // wait for previos buffer transmission + register int l = odatalen[tbufno]; + if(!l) return; + txrdy = 0; + odatalen[tbufno] = 0; + USARTDMA->CCR &= ~DMA_CCR_EN; + USARTDMA->CMAR = (uint32_t) tbuf[tbufno]; // mem + USARTDMA->CNDTR = l; + USARTDMA->CCR |= DMA_CCR_EN; + tbufno = !tbufno; +} + +void usart_putchar(const char ch){ + if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + tbuf[tbufno][odatalen[tbufno]++] = ch; +} + +void usart_send(const char *str){ + uint32_t x = 512; + while(*str && --x){ + if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + tbuf[tbufno][odatalen[tbufno]++] = *str++; + } +} + +void usart_sendn(const char *str, uint8_t L){ + for(uint8_t i = 0; i < L; ++i){ + if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + tbuf[tbufno][odatalen[tbufno]++] = *str++; + } +} + +void newline(){ + usart_putchar('\n'); + transmit_tbuf(); +} + + +void usart_setup(){ + uint32_t tmout = 16000000; +// Nucleo's USART2 connected to VCP proxy of st-link +#if USARTNUM == 2 + // setup pins: PA2 (Tx - AF1), PA15 (Rx - AF1) + // AF mode (AF1) + GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER2|GPIO_MODER_MODER15))\ + | (GPIO_MODER_MODER2_AF | GPIO_MODER_MODER15_AF); + GPIOA->AFR[0] = (GPIOA->AFR[0] &~GPIO_AFRH_AFRH2) | 1 << (2 * 4); // PA2 + GPIOA->AFR[1] = (GPIOA->AFR[1] &~GPIO_AFRH_AFRH7) | 1 << (7 * 4); // PA15 + RCC->APB1ENR |= RCC_APB1ENR_USART2EN; // clock +// USART1 of main board +#elif USARTNUM == 1 + // PA9 - Tx, PA10 - Rx (AF1) + GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER9 | GPIO_MODER_MODER10))\ + | (GPIO_MODER_MODER9_AF | GPIO_MODER_MODER10_AF); + GPIOA->AFR[1] = (GPIOA->AFR[1] & ~(GPIO_AFRH_AFRH1 | GPIO_AFRH_AFRH2)) | + 1 << (1 * 4) | 1 << (2 * 4); // PA9, PA10 + RCC->APB2ENR |= RCC_APB2ENR_USART1EN; +#else +#error "Wrong USARTNUM" +#endif + // USARTX Tx DMA + USARTDMA->CPAR = (uint32_t) &USARTX->TDR; // periph + USARTDMA->CMAR = (uint32_t) tbuf; // mem + USARTDMA->CCR |= DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE; // 8bit, mem++, mem->per, transcompl irq + // Tx CNDTR set @ each transmission due to data size + NVIC_SetPriority(DMAIRQn, 3); + NVIC_EnableIRQ(DMAIRQn); + NVIC_SetPriority(USARTIRQn, 0); + // setup usart1 + USARTX->BRR = 480000 / 1152; + USARTX->CR3 = USART_CR3_DMAT; // enable DMA Tx + USARTX->CR1 = USART_CR1_TE | USART_CR1_RE | USART_CR1_UE; // 1start,8data,nstop; enable Rx,Tx,USART + while(!(USARTX->ISR & USART_ISR_TC)){if(--tmout == 0) break;} // polling idle frame Transmission + USARTX->ICR |= USART_ICR_TCCF; // clear TC flag + USARTX->CR1 |= USART_CR1_RXNEIE; + NVIC_EnableIRQ(USARTIRQn); +} + +#if USARTNUM == 2 +void usart2_isr(){ +// USART1 +#elif USARTNUM == 1 +void usart1_isr(){ +#else +#error "Wrong USARTNUM" +#endif + #ifdef CHECK_TMOUT + static uint32_t tmout = 0; + #endif + if(USARTX->ISR & USART_ISR_RXNE){ // RX not emty - receive next char + #ifdef CHECK_TMOUT + if(tmout && Tms >= tmout){ // set overflow flag + bufovr = 1; + idatalen[rbufno] = 0; + } + tmout = Tms + TIMEOUT_MS; + if(!tmout) tmout = 1; // prevent 0 + #endif + // read RDR clears flag + uint8_t rb = USARTX->RDR; + if(idatalen[rbufno] < UARTBUFSZI){ // put next char into buf + rbuf[rbufno][idatalen[rbufno]++] = rb; + if(rb == '\n'){ // got newline - line ready + linerdy = 1; + dlen = idatalen[rbufno]; + recvdata = rbuf[rbufno]; + // prepare other buffer + rbufno = !rbufno; + idatalen[rbufno] = 0; + #ifdef CHECK_TMOUT + // clear timeout at line end + tmout = 0; + #endif + } + }else{ // buffer overrun + bufovr = 1; + idatalen[rbufno] = 0; + #ifdef CHECK_TMOUT + tmout = 0; + #endif + } + } +} + +// return string buffer with val +char *u2str(uint32_t val){ + static char bufa[11]; + char bufb[10]; + int l = 0, bpos = 0; + if(!val){ + bufa[0] = '0'; + l = 1; + }else{ + while(val){ + bufb[l++] = val % 10 + '0'; + val /= 10; + } + int i; + bpos += l; + for(i = 0; i < l; ++i){ + bufa[--bpos] = bufb[i]; + } + } + bufa[l + bpos] = 0; + return bufa; +} +// print 32bit unsigned int +void printu(uint32_t val){ + usart_send(u2str(val)); +} + +// print 32bit unsigned int as hex +void printuhex(uint32_t val){ + usart_send("0x"); + uint8_t *ptr = (uint8_t*)&val + 3, start = 1; + int i, j; + for(i = 0; i < 4; ++i, --ptr){ + if(!*ptr && start) continue; + for(j = 1; j > -1; --j){ + start = 0; + register uint8_t half = (*ptr >> (4*j)) & 0x0f; + if(half < 10) usart_putchar(half + '0'); + else usart_putchar(half - 10 + 'a'); + } + } + if(start){ + usart_putchar('0'); + usart_putchar('0'); + } +} + +// dump memory buffer +void hexdump(uint8_t *arr, uint16_t len){ + for(uint16_t l = 0; l < len; ++l, ++arr){ + for(int16_t j = 1; j > -1; --j){ + register uint8_t half = (*arr >> (4*j)) & 0x0f; + if(half < 10) usart_putchar(half + '0'); + else usart_putchar(half - 10 + 'a'); + } + if(l % 16 == 15) usart_putchar('\n'); + else if(l & 1) usart_putchar(' '); + } +} + +#if USARTNUM == 2 +void dma1_channel4_5_isr(){ + if(DMA1->ISR & DMA_ISR_TCIF4){ // Tx + DMA1->IFCR |= DMA_IFCR_CTCIF4; // clear TC flag + txrdy = 1; + } +} +// USART1 +#elif USARTNUM == 1 +void dma1_channel2_3_isr(){ + if(DMA1->ISR & DMA_ISR_TCIF2){ // Tx + DMA1->IFCR |= DMA_IFCR_CTCIF2; // clear TC flag + txrdy = 1; + } +} +#else +#error "Wrong USARTNUM" +#endif diff --git a/F0-nolib/F0_testbrd/usart.h b/F0-nolib/F0_testbrd/usart.h new file mode 100644 index 0000000..ae4f618 --- /dev/null +++ b/F0-nolib/F0_testbrd/usart.h @@ -0,0 +1,55 @@ +/* + * usart.h + * + * Copyright 2017 Edward V. Emelianoff + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#pragma once +#ifndef __USART_H__ +#define __USART_H__ + +#include "hardware.h" + +// input and output buffers size +#define UARTBUFSZI (32) +#define UARTBUFSZO (512) +// timeout between data bytes +#ifndef TIMEOUT_MS +#define TIMEOUT_MS (1500) +#endif + +// macro for static strings +#define SEND(str) usart_send(str) + +#define usartrx() (linerdy) +#define usartovr() (bufovr) + +extern volatile int linerdy, bufovr, txrdy; + +void transmit_tbuf(); +void usart_setup(); +int usart_getline(char **line); +void usart_send(const char *str); +void usart_sendn(const char *str, uint8_t L); +void newline(); +void usart_putchar(const char ch); +char *u2str(uint32_t val); +void printu(uint32_t val); +void printuhex(uint32_t val); +void hexdump(uint8_t *arr, uint16_t len); + +#endif // __USART_H__ diff --git a/F0-nolib/F0_testbrd/usb.c b/F0-nolib/F0_testbrd/usb.c new file mode 100644 index 0000000..771c92d --- /dev/null +++ b/F0-nolib/F0_testbrd/usb.c @@ -0,0 +1,158 @@ +/* + * geany_encoding=koi8-r + * usb.c - base functions for different USB types + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#include "usb.h" +#include "usb_lib.h" +#include "usart.h" +#include // memcpy, memmove + +// incoming buffer size +#define IDATASZ (256) +static uint8_t incoming_data[IDATASZ]; +static uint8_t ovfl = 0; +static uint16_t idatalen = 0; +static volatile uint8_t tx_succesfull = 0; +static int8_t usbON = 0; // ==1 when USB fully configured + +// interrupt IN handler (never used?) +static uint16_t EP1_Handler(ep_t ep){ + if (ep.rx_flag){ + ep.status = SET_VALID_TX(ep.status); + ep.status = KEEP_STAT_RX(ep.status); + }else if (ep.tx_flag){ + ep.status = SET_VALID_RX(ep.status); + ep.status = SET_STALL_TX(ep.status); + } + return ep.status; +} + +// data IN/OUT handler +static uint16_t EP23_Handler(ep_t ep){ + if(ep.rx_flag){ + int rd = ep.rx_cnt, rest = IDATASZ - idatalen; + if(rd){ + if(rd <= rest){ + idatalen += EP_Read(2, &incoming_data[idatalen]); + ovfl = 0; + }else{ + ep.status = SET_NAK_RX(ep.status); + ovfl = 1; + return ep.status; + } + } + // end of transaction: clear DTOGs + ep.status = CLEAR_DTOG_RX(ep.status); + ep.status = CLEAR_DTOG_TX(ep.status); + ep.status = SET_STALL_TX(ep.status); + }else if (ep.tx_flag){ + ep.status = KEEP_STAT_TX(ep.status); + tx_succesfull = 1; + } + ep.status = SET_VALID_RX(ep.status); + return ep.status; +} + +void USB_setup(){ + RCC->APB1ENR |= RCC_APB1ENR_CRSEN | RCC_APB1ENR_USBEN; // enable CRS (hsi48 sync) & USB + RCC->CFGR3 &= ~RCC_CFGR3_USBSW; // reset USB + RCC->CR2 |= RCC_CR2_HSI48ON; // turn ON HSI48 + uint32_t tmout = 16000000; + while(!(RCC->CR2 & RCC_CR2_HSI48RDY)){if(--tmout == 0) break;} + FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY; + CRS->CFGR &= ~CRS_CFGR_SYNCSRC; + CRS->CFGR |= CRS_CFGR_SYNCSRC_1; // USB SOF selected as sync source + CRS->CR |= CRS_CR_AUTOTRIMEN; // enable auto trim + CRS->CR |= CRS_CR_CEN; // enable freq counter & block CRS->CFGR as read-only + RCC->CFGR |= RCC_CFGR_SW; + // allow RESET and CTRM interrupts + USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM; + // clear flags + USB->ISTR = 0; + // and activate pullup + USB->BCDR |= USB_BCDR_DPPU; + NVIC_EnableIRQ(USB_IRQn); +} + +void usb_proc(){ + if(USB_GetState() == USB_CONFIGURE_STATE){ // USB configured - activate other endpoints + if(!usbON){ // endpoints not activated + // make new BULK endpoint + // Buffer have 1024 bytes, but last 256 we use for CAN bus (30.2 of RM: USB main features) + EP_Init(1, EP_TYPE_INTERRUPT, 10, 0, EP1_Handler); // IN1 - transmit + EP_Init(2, EP_TYPE_BULK, 0, USB_RXBUFSZ, EP23_Handler); // OUT2 - receive data + EP_Init(3, EP_TYPE_BULK, USB_TXBUFSZ, 0, EP23_Handler); // IN3 - transmit data + usbON = 1; + } + }else{ + usbON = 0; + } +} + +void USB_send(char *buf){ + uint16_t l = 0, ctr = 0; + char *p = buf; + while(*p++) ++l; + while(l){ + uint16_t s = (l > USB_TXBUFSZ) ? USB_TXBUFSZ : l; + tx_succesfull = 0; + EP_Write(3, (uint8_t*)&buf[ctr], s); + uint32_t ctra = 1000000; + while(--ctra && tx_succesfull == 0); + l -= s; + ctr += s; + } +} + +/** + * @brief USB_receive + * @param buf (i) - buffer for received data + * @param bufsize - its size + * @return amount of received bytes + */ +int USB_receive(char *buf, int bufsize){ + if(!bufsize || !idatalen) return 0; + USB->CNTR = 0; + int sz = (idatalen > bufsize) ? bufsize : idatalen, rest = idatalen - sz; + memcpy(buf, incoming_data, sz); + if(rest > 0){ + memmove(incoming_data, &incoming_data[sz], rest); + idatalen = rest; + }else idatalen = 0; + if(ovfl){ + EP23_Handler(endpoints[2]); + uint16_t epstatus = USB->EPnR[2]; + epstatus = CLEAR_DTOG_RX(epstatus); + epstatus = SET_VALID_RX(epstatus); + USB->EPnR[2] = epstatus; + } + USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM; + return sz; +} + +/** + * @brief USB_configured + * @return 1 if USB is in configured state + */ +int USB_configured(){ + return usbON; +} diff --git a/F0-nolib/F0_testbrd/usb.h b/F0-nolib/F0_testbrd/usb.h new file mode 100644 index 0000000..0d5831a --- /dev/null +++ b/F0-nolib/F0_testbrd/usb.h @@ -0,0 +1,37 @@ +/* + * geany_encoding=koi8-r + * usb.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ +#pragma once +#ifndef __USB_H__ +#define __USB_H__ + +#include "hardware.h" + +#define BUFFSIZE (64) + +void USB_setup(); +void usb_proc(); +void USB_send(char *buf); +int USB_receive(char *buf, int bufsize); +int USB_configured(); + +#endif // __USB_H__ diff --git a/F0-nolib/F0_testbrd/usb_defs.h b/F0-nolib/F0_testbrd/usb_defs.h new file mode 100644 index 0000000..6ac673c --- /dev/null +++ b/F0-nolib/F0_testbrd/usb_defs.h @@ -0,0 +1,106 @@ +/* + * geany_encoding=koi8-r + * usb_defs.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#pragma once +#ifndef __USB_DEFS_H__ +#define __USB_DEFS_H__ + +#include + +/** + * Buffers size definition + **/ +// !!! when working with CAN bus change USB_BTABLE_SIZE to 768 !!! +#define USB_BTABLE_SIZE 1024 +// first 64 bytes of USB_BTABLE are registers! +#define USB_EP0_BASEADDR 64 +// for USB FS EP0 buffers are from 8 to 64 bytes long (64 for PL2303) +#define USB_EP0_BUFSZ 64 +// USB transmit buffer size (64 for PL2303) +#define USB_TXBUFSZ 64 +// USB receive buffer size (64 for PL2303) +#define USB_RXBUFSZ 64 + +#define USB_BTABLE_BASE 0x40006000 +#undef USB_BTABLE +#define USB_BTABLE ((USB_BtableDef *)(USB_BTABLE_BASE)) +#define USB_ISTR_EPID 0x0000000F +#define USB_FNR_LSOF_0 0x00000800 +#define USB_FNR_lSOF_1 0x00001000 +#define USB_LPMCSR_BESL_0 0x00000010 +#define USB_LPMCSR_BESL_1 0x00000020 +#define USB_LPMCSR_BESL_2 0x00000040 +#define USB_LPMCSR_BESL_3 0x00000080 +#define USB_EPnR_CTR_RX 0x00008000 +#define USB_EPnR_DTOG_RX 0x00004000 +#define USB_EPnR_STAT_RX 0x00003000 +#define USB_EPnR_STAT_RX_0 0x00001000 +#define USB_EPnR_STAT_RX_1 0x00002000 +#define USB_EPnR_SETUP 0x00000800 +#define USB_EPnR_EP_TYPE 0x00000600 +#define USB_EPnR_EP_TYPE_0 0x00000200 +#define USB_EPnR_EP_TYPE_1 0x00000400 +#define USB_EPnR_EP_KIND 0x00000100 +#define USB_EPnR_CTR_TX 0x00000080 +#define USB_EPnR_DTOG_TX 0x00000040 +#define USB_EPnR_STAT_TX 0x00000030 +#define USB_EPnR_STAT_TX_0 0x00000010 +#define USB_EPnR_STAT_TX_1 0x00000020 +#define USB_EPnR_EA 0x0000000F +#define USB_COUNTn_RX_BLSIZE 0x00008000 +#define USB_COUNTn_NUM_BLOCK 0x00007C00 +#define USB_COUNTn_RX 0x0000003F + +#define USB_TypeDef USB_TypeDef_custom + +typedef struct{ + __IO uint32_t EPnR[8]; + __IO uint32_t RESERVED1; + __IO uint32_t RESERVED2; + __IO uint32_t RESERVED3; + __IO uint32_t RESERVED4; + __IO uint32_t RESERVED5; + __IO uint32_t RESERVED6; + __IO uint32_t RESERVED7; + __IO uint32_t RESERVED8; + __IO uint32_t CNTR; + __IO uint32_t ISTR; + __IO uint32_t FNR; + __IO uint32_t DADDR; + __IO uint32_t BTABLE; + __IO uint32_t LPMCSR; + __IO uint32_t BCDR; +} USB_TypeDef; + +typedef struct{ + __IO uint16_t USB_ADDR_TX; + __IO uint16_t USB_COUNT_TX; + __IO uint16_t USB_ADDR_RX; + __IO uint16_t USB_COUNT_RX; +} USB_EPDATA_TypeDef; + +typedef struct{ + __IO USB_EPDATA_TypeDef EP[8]; +} USB_BtableDef; + +#endif // __USB_DEFS_H__ diff --git a/F0-nolib/F0_testbrd/usb_lib.c b/F0-nolib/F0_testbrd/usb_lib.c new file mode 100644 index 0000000..c359cb5 --- /dev/null +++ b/F0-nolib/F0_testbrd/usb_lib.c @@ -0,0 +1,484 @@ +/* + * geany_encoding=koi8-r + * usb_lib.c + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#include +#include "usb_lib.h" +#include // memcpy +#include "usart.h" + +ep_t endpoints[ENDPOINTS_NUM]; + +static usb_dev_t USB_Dev; +static usb_LineCoding lineCoding = {115200, 0, 0, 8}; +static config_pack_t setup_packet; +static uint8_t ep0databuf[EP0DATABUF_SIZE]; +static uint8_t ep0dbuflen = 0; + +usb_LineCoding getLineCoding(){return lineCoding;} + +// definition of parts common for USB_DeviceDescriptor & USB_DeviceQualifierDescriptor +#define bcdUSB_L 0x10 +#define bcdUSB_H 0x01 +#define bDeviceClass 0 +#define bDeviceSubClass 0 +#define bDeviceProtocol 0 +#define bNumConfigurations 1 + +static const uint8_t USB_DeviceDescriptor[] = { + 18, // bLength + 0x01, // bDescriptorType - Device descriptor + bcdUSB_L, // bcdUSB_L - 1.10 + bcdUSB_H, // bcdUSB_H + bDeviceClass, // bDeviceClass - USB_COMM + bDeviceSubClass, // bDeviceSubClass + bDeviceProtocol, // bDeviceProtocol + USB_EP0_BUFSZ, // bMaxPacketSize + 0x7b, // idVendor_L PL2303: VID=0x067b, PID=0x2303 + 0x06, // idVendor_H + 0x03, // idProduct_L + 0x23, // idProduct_H + 0x00, // bcdDevice_Ver_L + 0x03, // bcdDevice_Ver_H + 0x01, // iManufacturer + 0x02, // iProduct + 0x00, // iSerialNumber + bNumConfigurations // bNumConfigurations +}; + +static const uint8_t USB_DeviceQualifierDescriptor[] = { + 10, //bLength + 0x06, // bDescriptorType - Device qualifier + bcdUSB_L, // bcdUSB_L + bcdUSB_H, // bcdUSB_H + bDeviceClass, // bDeviceClass + bDeviceSubClass, // bDeviceSubClass + bDeviceProtocol, // bDeviceProtocol + USB_EP0_BUFSZ, // bMaxPacketSize0 + bNumConfigurations, // bNumConfigurations + 0x00 // Reserved +}; + +static const uint8_t USB_ConfigDescriptor[] = { + /*Configuration Descriptor*/ + 0x09, /* bLength: Configuration Descriptor size */ + 0x02, /* bDescriptorType: Configuration */ + 39, /* wTotalLength:no of returned bytes */ + 0x00, + 0x01, /* bNumInterfaces: 1 interface */ + 0x01, /* bConfigurationValue: Configuration value */ + 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ + 0xa0, /* bmAttributes - Bus powered, Remote wakeup */ + 0x32, /* MaxPower 100 mA */ + + /*---------------------------------------------------------------------------*/ + + /*Interface Descriptor */ + 0x09, /* bLength: Interface Descriptor size */ + 0x04, /* bDescriptorType: Interface */ + 0x00, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x03, /* bNumEndpoints: 3 endpoints used */ + 0xff, /* bInterfaceClass */ + 0x00, /* bInterfaceSubClass */ + 0x00, /* bInterfaceProtocol */ + 0x00, /* iInterface: */ +/////////////////////////////////////////////////// + /*Endpoint 1 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + 0x05, /* bDescriptorType: Endpoint */ + 0x81, /* bEndpointAddress IN1 */ + 0x03, /* bmAttributes: Interrupt */ + 0x0a, /* wMaxPacketSize LO: */ + 0x00, /* wMaxPacketSize HI: */ + 0x01, /* bInterval: */ + + /*Endpoint OUT2 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + 0x05, /* bDescriptorType: Endpoint */ + 0x02, /* bEndpointAddress: OUT2 */ + 0x02, /* bmAttributes: Bulk */ + (USB_RXBUFSZ & 0xff), /* wMaxPacketSize: 64 */ + (USB_RXBUFSZ >> 8), + 0x00, /* bInterval: ignore for Bulk transfer */ + + /*Endpoint IN3 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + 0x05, /* bDescriptorType: Endpoint */ + 0x83, /* bEndpointAddress IN3 */ + 0x02, /* bmAttributes: Bulk */ + (USB_TXBUFSZ & 0xff), /* wMaxPacketSize: 64 */ + (USB_TXBUFSZ >> 8), + 0x00, /* bInterval: ignore for Bulk transfer */ +}; + +_USB_LANG_ID_(USB_StringLangDescriptor, LANG_US); +// these descriptors are not used in PL2303 emulator! +_USB_STRING_(USB_StringSerialDescriptor, u"0"); +_USB_STRING_(USB_StringManufacturingDescriptor, u"Prolific Technology Inc."); +_USB_STRING_(USB_StringProdDescriptor, u"USB-Serial Controller"); + +/* + * default handlers + */ +// SET_LINE_CODING +void WEAK linecoding_handler(usb_LineCoding __attribute__((unused)) *lc){ +} + +// SET_CONTROL_LINE_STATE +void WEAK clstate_handler(uint16_t __attribute__((unused)) val){ +} + +// SEND_BREAK +void WEAK break_handler(){ +} + +// handler of vendor requests +void WEAK vendor_handler(config_pack_t *packet){ + if(packet->bmRequestType & 0x80){ // read + uint8_t c; + switch(packet->wValue){ + case 0x8484: + c = 2; + break; + case 0x0080: + c = 1; + break; + case 0x8686: + c = 0xaa; + break; + default: + c = 0; + } + EP_WriteIRQ(0, &c, 1); + }else{ // write ZLP + EP_WriteIRQ(0, (uint8_t *)0, 0); + } +} + +static void wr0(const uint8_t *buf, uint16_t size){ + if(setup_packet.wLength < size) size = setup_packet.wLength; + EP_WriteIRQ(0, buf, size); +} + +static inline void get_descriptor(){ + switch(setup_packet.wValue){ + case DEVICE_DESCRIPTOR: + wr0(USB_DeviceDescriptor, sizeof(USB_DeviceDescriptor)); + break; + case CONFIGURATION_DESCRIPTOR: + wr0(USB_ConfigDescriptor, sizeof(USB_ConfigDescriptor)); + break; + case STRING_LANG_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringLangDescriptor, STRING_LANG_DESCRIPTOR_SIZE_BYTE); + break; + case STRING_MAN_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringManufacturingDescriptor, USB_StringManufacturingDescriptor.bLength); + break; + case STRING_PROD_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringProdDescriptor, USB_StringProdDescriptor.bLength); + break; + case STRING_SN_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringSerialDescriptor, USB_StringSerialDescriptor.bLength); + break; + case DEVICE_QUALIFIER_DESCRIPTOR: + wr0(USB_DeviceQualifierDescriptor, USB_DeviceQualifierDescriptor[0]); + break; + default: + break; + } +} + +static uint8_t configuration = 0; // reply for GET_CONFIGURATION (==1 if configured) +static inline void std_d2h_req(){ + uint16_t status = 0; // bus powered + switch(setup_packet.bRequest){ + case GET_DESCRIPTOR: + get_descriptor(); + break; + case GET_STATUS: + EP_WriteIRQ(0, (uint8_t *)&status, 2); // send status: Bus Powered + break; + case GET_CONFIGURATION: + EP_WriteIRQ(0, &configuration, 1); + break; + default: + break; + } +} + +static inline void std_h2d_req(){ + switch(setup_packet.bRequest){ + case SET_ADDRESS: + // new address will be assigned later - after acknowlegement or request to host + USB_Dev.USB_Addr = setup_packet.wValue; + break; + case SET_CONFIGURATION: + // Now device configured + USB_Dev.USB_Status = USB_CONFIGURE_STATE; + configuration = setup_packet.wValue; + break; + default: + break; + } +} + +/* +bmRequestType: 76543210 +7 direction: 0 - host->device, 1 - device->host +65 type: 0 - standard, 1 - class, 2 - vendor +4..0 getter: 0 - device, 1 - interface, 2 - endpoint, 3 - other +*/ +/** + * Endpoint0 (control) handler + * @param ep - endpoint state + * @return data written to EP0R + */ +static uint16_t EP0_Handler(ep_t ep){ + uint16_t epstatus = ep.status; // EP0R on input -> return this value after modifications + uint8_t reqtype = setup_packet.bmRequestType & 0x7f; + uint8_t dev2host = (setup_packet.bmRequestType & 0x80) ? 1 : 0; + if ((ep.rx_flag) && (ep.setup_flag)){ + switch(reqtype){ + case STANDARD_DEVICE_REQUEST_TYPE: // standard device request + if(dev2host){ + std_d2h_req(); + }else{ + std_h2d_req(); + // send ZLP + EP_WriteIRQ(0, (uint8_t *)0, 0); + } + epstatus = SET_NAK_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + break; + case STANDARD_ENDPOINT_REQUEST_TYPE: // standard endpoint request + if(setup_packet.bRequest == CLEAR_FEATURE){ + // send ZLP + EP_WriteIRQ(0, (uint8_t *)0, 0); + epstatus = SET_NAK_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + } + break; + case VENDOR_REQUEST_TYPE: + vendor_handler(&setup_packet); + epstatus = SET_NAK_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + break; + case CONTROL_REQUEST_TYPE: + switch(setup_packet.bRequest){ + case GET_LINE_CODING: + EP_WriteIRQ(0, (uint8_t*)&lineCoding, sizeof(lineCoding)); + break; + case SET_LINE_CODING: // omit this for next stage, when data will come + break; + case SET_CONTROL_LINE_STATE: + clstate_handler(setup_packet.wValue); + break; + case SEND_BREAK: + break_handler(); + break; + default: + break; + } + if(!dev2host) EP_WriteIRQ(0, (uint8_t *)0, 0); // write acknowledgement + epstatus = SET_VALID_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + break; + default: + EP_WriteIRQ(0, (uint8_t *)0, 0); + epstatus = SET_NAK_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + } + }else if (ep.rx_flag){ // got data over EP0 or host acknowlegement + if(ep.rx_cnt){ + EP_WriteIRQ(0, (uint8_t *)0, 0); + if(setup_packet.bRequest == SET_LINE_CODING){ + linecoding_handler((usb_LineCoding*)ep0databuf); + } + } + // Close transaction + epstatus = CLEAR_DTOG_RX(epstatus); + epstatus = CLEAR_DTOG_TX(epstatus); + // wait for new data from host + epstatus = SET_VALID_RX(epstatus); + epstatus = SET_STALL_TX(epstatus); + } else if (ep.tx_flag){ // package transmitted + // now we can change address after enumeration + if ((USB->DADDR & USB_DADDR_ADD) != USB_Dev.USB_Addr){ + USB->DADDR = USB_DADDR_EF | USB_Dev.USB_Addr; + // change state to ADRESSED + USB_Dev.USB_Status = USB_ADRESSED_STATE; + } + // end of transaction + epstatus = CLEAR_DTOG_RX(epstatus); + epstatus = CLEAR_DTOG_TX(epstatus); + epstatus = SET_VALID_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + } + return epstatus; +} + +static uint16_t lastaddr = USB_EP0_BASEADDR; +/** + * Endpoint initialisation + * !!! when working with CAN bus change USB_BTABLE_SIZE to 768 !!! + * @param number - EP num (0...7) + * @param type - EP type (EP_TYPE_BULK, EP_TYPE_CONTROL, EP_TYPE_ISO, EP_TYPE_INTERRUPT) + * @param txsz - transmission buffer size @ USB/CAN buffer + * @param rxsz - reception buffer size @ USB/CAN buffer + * @param uint16_t (*func)(ep_t *ep) - EP handler function + * @return 0 if all OK + */ +int EP_Init(uint8_t number, uint8_t type, uint16_t txsz, uint16_t rxsz, uint16_t (*func)(ep_t ep)){ + if(number >= ENDPOINTS_NUM) return 4; // out of configured amount + if(txsz > USB_BTABLE_SIZE || rxsz > USB_BTABLE_SIZE) return 1; // buffer too large + if(lastaddr + txsz + rxsz >= USB_BTABLE_SIZE) return 2; // out of btable + USB->EPnR[number] = (type << 9) | (number & USB_EPnR_EA); + USB->EPnR[number] ^= USB_EPnR_STAT_RX | USB_EPnR_STAT_TX_1; + if(rxsz & 1 || rxsz > 992) return 3; // wrong rx buffer size + uint16_t countrx = 0; + if(rxsz < 64) countrx = rxsz / 2; + else{ + if(rxsz & 0x1f) return 3; // should be multiple of 32 + countrx = 31 + rxsz / 32; + } + USB_BTABLE->EP[number].USB_ADDR_TX = lastaddr; + endpoints[number].tx_buf = (uint16_t *)(USB_BTABLE_BASE + lastaddr); + lastaddr += txsz; + USB_BTABLE->EP[number].USB_COUNT_TX = 0; + USB_BTABLE->EP[number].USB_ADDR_RX = lastaddr; + endpoints[number].rx_buf = (uint8_t *)(USB_BTABLE_BASE + lastaddr); + lastaddr += rxsz; + // buffer size: Table127 of RM + USB_BTABLE->EP[number].USB_COUNT_RX = countrx << 10; + endpoints[number].func = func; + return 0; +} + +// standard IRQ handler +void usb_isr(){ + if (USB->ISTR & USB_ISTR_RESET){ + // Reinit registers + USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM; + USB->ISTR = 0; + // Endpoint 0 - CONTROL + // ON USB LS size of EP0 may be 8 bytes, but on FS it should be 64 bytes! + lastaddr = USB_EP0_BASEADDR; // roll back to beginning of buffer + EP_Init(0, EP_TYPE_CONTROL, USB_EP0_BUFSZ, USB_EP0_BUFSZ, EP0_Handler); + // clear address, leave only enable bit + USB->DADDR = USB_DADDR_EF; + // state is default - wait for enumeration + USB_Dev.USB_Status = USB_DEFAULT_STATE; + } + if(USB->ISTR & USB_ISTR_CTR){ + // EP number + uint8_t n = USB->ISTR & USB_ISTR_EPID; + // copy status register + uint16_t epstatus = USB->EPnR[n]; + // Calculate flags + endpoints[n].rx_flag = (epstatus & USB_EPnR_CTR_RX) ? 1 : 0; + endpoints[n].setup_flag = (epstatus & USB_EPnR_SETUP) ? 1 : 0; + endpoints[n].tx_flag = (epstatus & USB_EPnR_CTR_TX) ? 1 : 0; + // copy received bytes amount + endpoints[n].rx_cnt = USB_BTABLE->EP[n].USB_COUNT_RX & 0x3FF; // low 10 bits is counter + // check direction + if(USB->ISTR & USB_ISTR_DIR){ // OUT interrupt - receive data, CTR_RX==1 (if CTR_TX == 1 - two pending transactions: receive following by transmit) + if(n == 0){ // control endpoint + if(epstatus & USB_EPnR_SETUP){ // setup packet -> copy data to conf_pack + memcpy(&setup_packet, endpoints[0].rx_buf, sizeof(setup_packet)); + ep0dbuflen = 0; + // interrupt handler will be called later + }else if(epstatus & USB_EPnR_CTR_RX){ // data packet -> push received data to ep0databuf + ep0dbuflen = endpoints[0].rx_cnt; + memcpy(ep0databuf, endpoints[0].rx_buf, ep0dbuflen); + } + } + }else{ // IN interrupt - transmit data, only CTR_TX == 1 + // enumeration end could be here (if EP0) + } + // prepare status field for EP handler + endpoints[n].status = epstatus; + // call EP handler (even if it will change EPnR, it should return new status) + epstatus = endpoints[n].func(endpoints[n]); + // keep DTOG state + epstatus = KEEP_DTOG_TX(epstatus); + epstatus = KEEP_DTOG_RX(epstatus); + // clear all RX/TX flags + epstatus = CLEAR_CTR_RX(epstatus); + epstatus = CLEAR_CTR_TX(epstatus); + // refresh EPnR + USB->EPnR[n] = epstatus; + } +} + +/** + * Write data to EP buffer (called from IRQ handler) + * @param number - EP number + * @param *buf - array with data + * @param size - its size + */ +void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size){ + uint8_t i; + if(size > USB_TXBUFSZ) size = USB_TXBUFSZ; + uint16_t N2 = (size + 1) >> 1; + // the buffer is 16-bit, so we should copy data as it would be uint16_t + uint16_t *buf16 = (uint16_t *)buf; + for (i = 0; i < N2; i++){ + endpoints[number].tx_buf[i] = buf16[i]; + } + USB_BTABLE->EP[number].USB_COUNT_TX = size; +} + +/** + * Write data to EP buffer (called outside IRQ handler) + * @param number - EP number + * @param *buf - array with data + * @param size - its size + */ +void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size){ + uint16_t status = USB->EPnR[number]; + EP_WriteIRQ(number, buf, size); + status = SET_NAK_RX(status); + status = SET_VALID_TX(status); + status = KEEP_DTOG_TX(status); + status = KEEP_DTOG_RX(status); + USB->EPnR[number] = status; +} + +/* + * Copy data from EP buffer into user buffer area + * @param *buf - user array for data + * @return amount of data read + */ +int EP_Read(uint8_t number, uint8_t *buf){ + int n = endpoints[number].rx_cnt; + if(n){ + for(int i = 0; i < n; ++i) + buf[i] = endpoints[number].rx_buf[i]; + } + return n; +} + +// USB status +uint8_t USB_GetState(){ + return USB_Dev.USB_Status; +} diff --git a/F0-nolib/F0_testbrd/usb_lib.h b/F0-nolib/F0_testbrd/usb_lib.h new file mode 100644 index 0000000..0651e5f --- /dev/null +++ b/F0-nolib/F0_testbrd/usb_lib.h @@ -0,0 +1,202 @@ +/* + * geany_encoding=koi8-r + * usb_lib.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#pragma once +#ifndef __USB_LIB_H__ +#define __USB_LIB_H__ + +#include +#include "usb_defs.h" + +#define EP0DATABUF_SIZE (64) + +// Max EP amount (EP0 + other used) +#define ENDPOINTS_NUM 4 +// bmRequestType & 0x7f +#define STANDARD_DEVICE_REQUEST_TYPE 0 +#define STANDARD_ENDPOINT_REQUEST_TYPE 2 +#define VENDOR_REQUEST_TYPE 0x40 +#define CONTROL_REQUEST_TYPE 0x21 +// bRequest, standard; for bmRequestType == 0x80 +#define GET_STATUS 0x00 +#define GET_DESCRIPTOR 0x06 +#define GET_CONFIGURATION 0x08 +// for bmRequestType == 0 +#define CLEAR_FEATURE 0x01 +#define SET_FEATURE 0x03 // unused +#define SET_ADDRESS 0x05 +#define SET_DESCRIPTOR 0x07 // unused +#define SET_CONFIGURATION 0x09 +// for bmRequestType == 0x81, 1 or 0xB2 +#define GET_INTERFACE 0x0A // unused +#define SET_INTERFACE 0x0B // unused +#define SYNC_FRAME 0x0C // unused +#define VENDOR_REQUEST 0x01 // unused + +// Class-Specific Control Requests +#define SEND_ENCAPSULATED_COMMAND 0x00 // unused +#define GET_ENCAPSULATED_RESPONSE 0x01 // unused +#define SET_COMM_FEATURE 0x02 // unused +#define GET_COMM_FEATURE 0x03 // unused +#define CLEAR_COMM_FEATURE 0x04 // unused +#define SET_LINE_CODING 0x20 +#define GET_LINE_CODING 0x21 +#define SET_CONTROL_LINE_STATE 0x22 +#define SEND_BREAK 0x23 + +// control line states +#define CONTROL_DTR 0x01 +#define CONTROL_RTS 0x02 + +// wValue +#define DEVICE_DESCRIPTOR 0x100 +#define CONFIGURATION_DESCRIPTOR 0x200 +#define STRING_LANG_DESCRIPTOR 0x300 +#define STRING_MAN_DESCRIPTOR 0x301 +#define STRING_PROD_DESCRIPTOR 0x302 +#define STRING_SN_DESCRIPTOR 0x303 +#define DEVICE_QUALIFIER_DESCRIPTOR 0x600 + +// EPnR bits manipulation +#define CLEAR_DTOG_RX(R) (R & USB_EPnR_DTOG_RX) ? R : (R & (~USB_EPnR_DTOG_RX)) +#define SET_DTOG_RX(R) (R & USB_EPnR_DTOG_RX) ? (R & (~USB_EPnR_DTOG_RX)) : R +#define TOGGLE_DTOG_RX(R) (R | USB_EPnR_DTOG_RX) +#define KEEP_DTOG_RX(R) (R & (~USB_EPnR_DTOG_RX)) +#define CLEAR_DTOG_TX(R) (R & USB_EPnR_DTOG_TX) ? R : (R & (~USB_EPnR_DTOG_TX)) +#define SET_DTOG_TX(R) (R & USB_EPnR_DTOG_TX) ? (R & (~USB_EPnR_DTOG_TX)) : R +#define TOGGLE_DTOG_TX(R) (R | USB_EPnR_DTOG_TX) +#define KEEP_DTOG_TX(R) (R & (~USB_EPnR_DTOG_TX)) +#define SET_VALID_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX) | (R & (~USB_EPnR_STAT_RX)) +#define SET_NAK_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX_1) | (R & (~USB_EPnR_STAT_RX)) +#define SET_STALL_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX_0) | (R & (~USB_EPnR_STAT_RX)) +#define KEEP_STAT_RX(R) (R & (~USB_EPnR_STAT_RX)) +#define SET_VALID_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX) | (R & (~USB_EPnR_STAT_TX)) +#define SET_NAK_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX_1) | (R & (~USB_EPnR_STAT_TX)) +#define SET_STALL_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX_0) | (R & (~USB_EPnR_STAT_TX)) +#define KEEP_STAT_TX(R) (R & (~USB_EPnR_STAT_TX)) +#define CLEAR_CTR_RX(R) (R & (~USB_EPnR_CTR_RX)) +#define CLEAR_CTR_TX(R) (R & (~USB_EPnR_CTR_TX)) +#define CLEAR_CTR_RX_TX(R) (R & (~(USB_EPnR_CTR_TX | USB_EPnR_CTR_RX))) + +// USB state: uninitialized, addressed, ready for use +#define USB_DEFAULT_STATE 0 +#define USB_ADRESSED_STATE 1 +#define USB_CONFIGURE_STATE 2 + +// EP types +#define EP_TYPE_BULK 0x00 +#define EP_TYPE_CONTROL 0x01 +#define EP_TYPE_ISO 0x02 +#define EP_TYPE_INTERRUPT 0x03 + +#define LANG_US (uint16_t)0x0409 + +#define _USB_STRING_(name, str) \ +static const struct name \ +{ \ + uint8_t bLength; \ + uint8_t bDescriptorType; \ + uint16_t bString[(sizeof(str) - 2) / 2]; \ + \ +} \ +name = {sizeof(name), 0x03, str} + +#define _USB_LANG_ID_(name, lng_id) \ + \ +static const struct name \ +{ \ + uint8_t bLength; \ + uint8_t bDescriptorType; \ + uint16_t bString; \ + \ +} \ +name = {0x04, 0x03, lng_id} +#define STRING_LANG_DESCRIPTOR_SIZE_BYTE (4) + +// EP0 configuration packet +typedef struct { + uint8_t bmRequestType; + uint8_t bRequest; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} config_pack_t; + +// endpoints state +typedef struct __ep_t{ + uint16_t *tx_buf; // transmission buffer address + uint8_t *rx_buf; // reception buffer address + uint16_t (*func)(); // endpoint action function + uint16_t status; // status flags + unsigned rx_cnt : 10; // received data counter + unsigned tx_flag : 1; // transmission flag + unsigned rx_flag : 1; // reception flag + unsigned setup_flag : 1; // this is setup packet (only for EP0) +} ep_t; + +// USB status & its address +typedef struct { + uint8_t USB_Status; + uint16_t USB_Addr; +}usb_dev_t; + +typedef struct { + uint32_t dwDTERate; + uint8_t bCharFormat; + #define USB_CDC_1_STOP_BITS 0 + #define USB_CDC_1_5_STOP_BITS 1 + #define USB_CDC_2_STOP_BITS 2 + uint8_t bParityType; + #define USB_CDC_NO_PARITY 0 + #define USB_CDC_ODD_PARITY 1 + #define USB_CDC_EVEN_PARITY 2 + #define USB_CDC_MARK_PARITY 3 + #define USB_CDC_SPACE_PARITY 4 + uint8_t bDataBits; +} __attribute__ ((packed)) usb_LineCoding; + +typedef struct { + uint8_t bmRequestType; + uint8_t bNotificationType; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} __attribute__ ((packed)) usb_cdc_notification; + +extern ep_t endpoints[]; + +void USB_Init(); +uint8_t USB_GetState(); +int EP_Init(uint8_t number, uint8_t type, uint16_t txsz, uint16_t rxsz, uint16_t (*func)(ep_t ep)); +void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size); +void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size); +int EP_Read(uint8_t number, uint8_t *buf); +usb_LineCoding getLineCoding(); + + +void WEAK linecoding_handler(usb_LineCoding *lc); +void WEAK clstate_handler(uint16_t val); +void WEAK break_handler(); +void WEAK vendor_handler(config_pack_t *packet); + +#endif // __USB_LIB_H__ diff --git a/F0-nolib/inc/README b/F0-nolib/inc/README deleted file mode 100644 index 5fffda6..0000000 --- a/F0-nolib/inc/README +++ /dev/null @@ -1 +0,0 @@ -including files \ No newline at end of file diff --git a/F0-nolib/inc/gen042 b/F0-nolib/inc/gen042 deleted file mode 100755 index a9c08a5..0000000 --- a/F0-nolib/inc/gen042 +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -CFLAGS="-IF0 -Icm -DSTM32F042x6" geany -g stm32f042.c.tags F0/stm32f042x6.h F0/stm32f0.h F0/stm32f0xx.h cm/core_cm0.h cm/core_cmFunc.h cm/core_cmInstr.h cm/core_cmSimd.h startup/vector.c diff --git a/F0-nolib/inc/ld/stm32f0728.ld b/F0-nolib/inc/ld/stm32f0728.ld new file mode 100644 index 0000000..afc34e4 --- /dev/null +++ b/F0-nolib/inc/ld/stm32f0728.ld @@ -0,0 +1,12 @@ +/* Linker script for STM32F072x8, 64K flash, 16K RAM. */ + +/* Define memory regions. */ +MEMORY +{ + rom (rx) : ORIGIN = 0x08000000, LENGTH = 64K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 16K +} + +/* Include the common ld script. */ +INCLUDE stm32f0.ld + diff --git a/F0-nolib/inc/stm32f042.c.tags b/F0-nolib/inc/stm32f042.c.tags deleted file mode 100644 index eff0d44..0000000 --- a/F0-nolib/inc/stm32f042.c.tags +++ /dev/null @@ -1,4218 +0,0 @@ -# format=tagmanager -ADCÌ65536Ö0 -ADC1Ì65536Ö0 -ADC1_BASEÌ65536Ö0 -ADC1_COMP_IRQHandlerÌ65536Ö0 -ADC1_COMP_IRQnÌ65536Ö0 -ADC_BASEÌ65536Ö0 -ADC_CCR_TSENÌ65536Ö0 -ADC_CCR_VBATENÌ65536Ö0 -ADC_CCR_VREFENÌ65536Ö0 -ADC_CFGR1_ALIGNÌ65536Ö0 -ADC_CFGR1_AUTDLYÌ65536Ö0 -ADC_CFGR1_AUTOFFÌ65536Ö0 -ADC_CFGR1_AWDCHÌ65536Ö0 -ADC_CFGR1_AWDCH_0Ì65536Ö0 -ADC_CFGR1_AWDCH_1Ì65536Ö0 -ADC_CFGR1_AWDCH_2Ì65536Ö0 -ADC_CFGR1_AWDCH_3Ì65536Ö0 -ADC_CFGR1_AWDCH_4Ì65536Ö0 -ADC_CFGR1_AWDENÌ65536Ö0 -ADC_CFGR1_AWDSGLÌ65536Ö0 -ADC_CFGR1_CONTÌ65536Ö0 -ADC_CFGR1_DISCENÌ65536Ö0 -ADC_CFGR1_DMACFGÌ65536Ö0 -ADC_CFGR1_DMAENÌ65536Ö0 -ADC_CFGR1_EXTENÌ65536Ö0 -ADC_CFGR1_EXTEN_0Ì65536Ö0 -ADC_CFGR1_EXTEN_1Ì65536Ö0 -ADC_CFGR1_EXTSELÌ65536Ö0 -ADC_CFGR1_EXTSEL_0Ì65536Ö0 -ADC_CFGR1_EXTSEL_1Ì65536Ö0 -ADC_CFGR1_EXTSEL_2Ì65536Ö0 -ADC_CFGR1_OVRMODÌ65536Ö0 -ADC_CFGR1_RESÌ65536Ö0 -ADC_CFGR1_RES_0Ì65536Ö0 -ADC_CFGR1_RES_1Ì65536Ö0 -ADC_CFGR1_SCANDIRÌ65536Ö0 -ADC_CFGR1_WAITÌ65536Ö0 -ADC_CFGR2_CKMODEÌ65536Ö0 -ADC_CFGR2_CKMODE_0Ì65536Ö0 -ADC_CFGR2_CKMODE_1Ì65536Ö0 -ADC_CFGR2_JITOFFDIV2Ì65536Ö0 -ADC_CFGR2_JITOFFDIV4Ì65536Ö0 -ADC_CHSELR_CHSEL0Ì65536Ö0 -ADC_CHSELR_CHSEL1Ì65536Ö0 -ADC_CHSELR_CHSEL10Ì65536Ö0 -ADC_CHSELR_CHSEL11Ì65536Ö0 -ADC_CHSELR_CHSEL12Ì65536Ö0 -ADC_CHSELR_CHSEL13Ì65536Ö0 -ADC_CHSELR_CHSEL14Ì65536Ö0 -ADC_CHSELR_CHSEL15Ì65536Ö0 -ADC_CHSELR_CHSEL16Ì65536Ö0 -ADC_CHSELR_CHSEL17Ì65536Ö0 -ADC_CHSELR_CHSEL18Ì65536Ö0 -ADC_CHSELR_CHSEL2Ì65536Ö0 -ADC_CHSELR_CHSEL3Ì65536Ö0 -ADC_CHSELR_CHSEL4Ì65536Ö0 -ADC_CHSELR_CHSEL5Ì65536Ö0 -ADC_CHSELR_CHSEL6Ì65536Ö0 -ADC_CHSELR_CHSEL7Ì65536Ö0 -ADC_CHSELR_CHSEL8Ì65536Ö0 -ADC_CHSELR_CHSEL9Ì65536Ö0 -ADC_CR_ADCALÌ65536Ö0 -ADC_CR_ADDISÌ65536Ö0 -ADC_CR_ADENÌ65536Ö0 -ADC_CR_ADSTARTÌ65536Ö0 -ADC_CR_ADSTPÌ65536Ö0 -ADC_DR_DATAÌ65536Ö0 -ADC_HTR_HTÌ65536Ö0 -ADC_IER_ADRDYIEÌ65536Ö0 -ADC_IER_AWDIEÌ65536Ö0 -ADC_IER_EOCIEÌ65536Ö0 -ADC_IER_EOSEQIEÌ65536Ö0 -ADC_IER_EOSIEÌ65536Ö0 -ADC_IER_EOSMPIEÌ65536Ö0 -ADC_IER_OVRIEÌ65536Ö0 -ADC_ISR_ADRDYÌ65536Ö0 -ADC_ISR_AWDÌ65536Ö0 -ADC_ISR_EOCÌ65536Ö0 -ADC_ISR_EOSÌ65536Ö0 -ADC_ISR_EOSEQÌ65536Ö0 -ADC_ISR_EOSMPÌ65536Ö0 -ADC_ISR_OVRÌ65536Ö0 -ADC_LTR_LTÌ65536Ö0 -ADC_SMPR1_SMPRÌ65536Ö0 -ADC_SMPR1_SMPR_0Ì65536Ö0 -ADC_SMPR1_SMPR_1Ì65536Ö0 -ADC_SMPR1_SMPR_2Ì65536Ö0 -ADC_SMPR_SMPÌ65536Ö0 -ADC_SMPR_SMP_0Ì65536Ö0 -ADC_SMPR_SMP_1Ì65536Ö0 -ADC_SMPR_SMP_2Ì65536Ö0 -ADC_TR_HTÌ65536Ö0 -ADC_TR_LTÌ65536Ö0 -AHB2PERIPH_BASEÌ65536Ö0 -AHBPERIPH_BASEÌ65536Ö0 -APBPERIPH_BASEÌ65536Ö0 -CANÌ65536Ö0 -CAN_BASEÌ65536Ö0 -CAN_BTR_BRPÌ65536Ö0 -CAN_BTR_LBKMÌ65536Ö0 -CAN_BTR_SILMÌ65536Ö0 -CAN_BTR_SJWÌ65536Ö0 -CAN_BTR_SJW_0Ì65536Ö0 -CAN_BTR_SJW_1Ì65536Ö0 -CAN_BTR_TS1Ì65536Ö0 -CAN_BTR_TS1_0Ì65536Ö0 -CAN_BTR_TS1_1Ì65536Ö0 -CAN_BTR_TS1_2Ì65536Ö0 -CAN_BTR_TS1_3Ì65536Ö0 -CAN_BTR_TS2Ì65536Ö0 -CAN_BTR_TS2_0Ì65536Ö0 -CAN_BTR_TS2_1Ì65536Ö0 -CAN_BTR_TS2_2Ì65536Ö0 -CAN_ESR_BOFFÌ65536Ö0 -CAN_ESR_EPVFÌ65536Ö0 -CAN_ESR_EWGFÌ65536Ö0 -CAN_ESR_LECÌ65536Ö0 -CAN_ESR_LEC_0Ì65536Ö0 -CAN_ESR_LEC_1Ì65536Ö0 -CAN_ESR_LEC_2Ì65536Ö0 -CAN_ESR_RECÌ65536Ö0 -CAN_ESR_TECÌ65536Ö0 -CAN_F0R1_FB0Ì65536Ö0 -CAN_F0R1_FB1Ì65536Ö0 -CAN_F0R1_FB10Ì65536Ö0 -CAN_F0R1_FB11Ì65536Ö0 -CAN_F0R1_FB12Ì65536Ö0 -CAN_F0R1_FB13Ì65536Ö0 -CAN_F0R1_FB14Ì65536Ö0 -CAN_F0R1_FB15Ì65536Ö0 -CAN_F0R1_FB16Ì65536Ö0 -CAN_F0R1_FB17Ì65536Ö0 -CAN_F0R1_FB18Ì65536Ö0 -CAN_F0R1_FB19Ì65536Ö0 -CAN_F0R1_FB2Ì65536Ö0 -CAN_F0R1_FB20Ì65536Ö0 -CAN_F0R1_FB21Ì65536Ö0 -CAN_F0R1_FB22Ì65536Ö0 -CAN_F0R1_FB23Ì65536Ö0 -CAN_F0R1_FB24Ì65536Ö0 -CAN_F0R1_FB25Ì65536Ö0 -CAN_F0R1_FB26Ì65536Ö0 -CAN_F0R1_FB27Ì65536Ö0 -CAN_F0R1_FB28Ì65536Ö0 -CAN_F0R1_FB29Ì65536Ö0 -CAN_F0R1_FB3Ì65536Ö0 -CAN_F0R1_FB30Ì65536Ö0 -CAN_F0R1_FB31Ì65536Ö0 -CAN_F0R1_FB4Ì65536Ö0 -CAN_F0R1_FB5Ì65536Ö0 -CAN_F0R1_FB6Ì65536Ö0 -CAN_F0R1_FB7Ì65536Ö0 -CAN_F0R1_FB8Ì65536Ö0 -CAN_F0R1_FB9Ì65536Ö0 -CAN_F0R2_FB0Ì65536Ö0 -CAN_F0R2_FB1Ì65536Ö0 -CAN_F0R2_FB10Ì65536Ö0 -CAN_F0R2_FB11Ì65536Ö0 -CAN_F0R2_FB12Ì65536Ö0 -CAN_F0R2_FB13Ì65536Ö0 -CAN_F0R2_FB14Ì65536Ö0 -CAN_F0R2_FB15Ì65536Ö0 -CAN_F0R2_FB16Ì65536Ö0 -CAN_F0R2_FB17Ì65536Ö0 -CAN_F0R2_FB18Ì65536Ö0 -CAN_F0R2_FB19Ì65536Ö0 -CAN_F0R2_FB2Ì65536Ö0 -CAN_F0R2_FB20Ì65536Ö0 -CAN_F0R2_FB21Ì65536Ö0 -CAN_F0R2_FB22Ì65536Ö0 -CAN_F0R2_FB23Ì65536Ö0 -CAN_F0R2_FB24Ì65536Ö0 -CAN_F0R2_FB25Ì65536Ö0 -CAN_F0R2_FB26Ì65536Ö0 -CAN_F0R2_FB27Ì65536Ö0 -CAN_F0R2_FB28Ì65536Ö0 -CAN_F0R2_FB29Ì65536Ö0 -CAN_F0R2_FB3Ì65536Ö0 -CAN_F0R2_FB30Ì65536Ö0 -CAN_F0R2_FB31Ì65536Ö0 -CAN_F0R2_FB4Ì65536Ö0 -CAN_F0R2_FB5Ì65536Ö0 -CAN_F0R2_FB6Ì65536Ö0 -CAN_F0R2_FB7Ì65536Ö0 -CAN_F0R2_FB8Ì65536Ö0 -CAN_F0R2_FB9Ì65536Ö0 -CAN_F10R1_FB0Ì65536Ö0 -CAN_F10R1_FB1Ì65536Ö0 -CAN_F10R1_FB10Ì65536Ö0 -CAN_F10R1_FB11Ì65536Ö0 -CAN_F10R1_FB12Ì65536Ö0 -CAN_F10R1_FB13Ì65536Ö0 -CAN_F10R1_FB14Ì65536Ö0 -CAN_F10R1_FB15Ì65536Ö0 -CAN_F10R1_FB16Ì65536Ö0 -CAN_F10R1_FB17Ì65536Ö0 -CAN_F10R1_FB18Ì65536Ö0 -CAN_F10R1_FB19Ì65536Ö0 -CAN_F10R1_FB2Ì65536Ö0 -CAN_F10R1_FB20Ì65536Ö0 -CAN_F10R1_FB21Ì65536Ö0 -CAN_F10R1_FB22Ì65536Ö0 -CAN_F10R1_FB23Ì65536Ö0 -CAN_F10R1_FB24Ì65536Ö0 -CAN_F10R1_FB25Ì65536Ö0 -CAN_F10R1_FB26Ì65536Ö0 -CAN_F10R1_FB27Ì65536Ö0 -CAN_F10R1_FB28Ì65536Ö0 -CAN_F10R1_FB29Ì65536Ö0 -CAN_F10R1_FB3Ì65536Ö0 -CAN_F10R1_FB30Ì65536Ö0 -CAN_F10R1_FB31Ì65536Ö0 -CAN_F10R1_FB4Ì65536Ö0 -CAN_F10R1_FB5Ì65536Ö0 -CAN_F10R1_FB6Ì65536Ö0 -CAN_F10R1_FB7Ì65536Ö0 -CAN_F10R1_FB8Ì65536Ö0 -CAN_F10R1_FB9Ì65536Ö0 -CAN_F10R2_FB0Ì65536Ö0 -CAN_F10R2_FB1Ì65536Ö0 -CAN_F10R2_FB10Ì65536Ö0 -CAN_F10R2_FB11Ì65536Ö0 -CAN_F10R2_FB12Ì65536Ö0 -CAN_F10R2_FB13Ì65536Ö0 -CAN_F10R2_FB14Ì65536Ö0 -CAN_F10R2_FB15Ì65536Ö0 -CAN_F10R2_FB16Ì65536Ö0 -CAN_F10R2_FB17Ì65536Ö0 -CAN_F10R2_FB18Ì65536Ö0 -CAN_F10R2_FB19Ì65536Ö0 -CAN_F10R2_FB2Ì65536Ö0 -CAN_F10R2_FB20Ì65536Ö0 -CAN_F10R2_FB21Ì65536Ö0 -CAN_F10R2_FB22Ì65536Ö0 -CAN_F10R2_FB23Ì65536Ö0 -CAN_F10R2_FB24Ì65536Ö0 -CAN_F10R2_FB25Ì65536Ö0 -CAN_F10R2_FB26Ì65536Ö0 -CAN_F10R2_FB27Ì65536Ö0 -CAN_F10R2_FB28Ì65536Ö0 -CAN_F10R2_FB29Ì65536Ö0 -CAN_F10R2_FB3Ì65536Ö0 -CAN_F10R2_FB30Ì65536Ö0 -CAN_F10R2_FB31Ì65536Ö0 -CAN_F10R2_FB4Ì65536Ö0 -CAN_F10R2_FB5Ì65536Ö0 -CAN_F10R2_FB6Ì65536Ö0 -CAN_F10R2_FB7Ì65536Ö0 -CAN_F10R2_FB8Ì65536Ö0 -CAN_F10R2_FB9Ì65536Ö0 -CAN_F11R1_FB0Ì65536Ö0 -CAN_F11R1_FB1Ì65536Ö0 -CAN_F11R1_FB10Ì65536Ö0 -CAN_F11R1_FB11Ì65536Ö0 -CAN_F11R1_FB12Ì65536Ö0 -CAN_F11R1_FB13Ì65536Ö0 -CAN_F11R1_FB14Ì65536Ö0 -CAN_F11R1_FB15Ì65536Ö0 -CAN_F11R1_FB16Ì65536Ö0 -CAN_F11R1_FB17Ì65536Ö0 -CAN_F11R1_FB18Ì65536Ö0 -CAN_F11R1_FB19Ì65536Ö0 -CAN_F11R1_FB2Ì65536Ö0 -CAN_F11R1_FB20Ì65536Ö0 -CAN_F11R1_FB21Ì65536Ö0 -CAN_F11R1_FB22Ì65536Ö0 -CAN_F11R1_FB23Ì65536Ö0 -CAN_F11R1_FB24Ì65536Ö0 -CAN_F11R1_FB25Ì65536Ö0 -CAN_F11R1_FB26Ì65536Ö0 -CAN_F11R1_FB27Ì65536Ö0 -CAN_F11R1_FB28Ì65536Ö0 -CAN_F11R1_FB29Ì65536Ö0 -CAN_F11R1_FB3Ì65536Ö0 -CAN_F11R1_FB30Ì65536Ö0 -CAN_F11R1_FB31Ì65536Ö0 -CAN_F11R1_FB4Ì65536Ö0 -CAN_F11R1_FB5Ì65536Ö0 -CAN_F11R1_FB6Ì65536Ö0 -CAN_F11R1_FB7Ì65536Ö0 -CAN_F11R1_FB8Ì65536Ö0 -CAN_F11R1_FB9Ì65536Ö0 -CAN_F11R2_FB0Ì65536Ö0 -CAN_F11R2_FB1Ì65536Ö0 -CAN_F11R2_FB10Ì65536Ö0 -CAN_F11R2_FB11Ì65536Ö0 -CAN_F11R2_FB12Ì65536Ö0 -CAN_F11R2_FB13Ì65536Ö0 -CAN_F11R2_FB14Ì65536Ö0 -CAN_F11R2_FB15Ì65536Ö0 -CAN_F11R2_FB16Ì65536Ö0 -CAN_F11R2_FB17Ì65536Ö0 -CAN_F11R2_FB18Ì65536Ö0 -CAN_F11R2_FB19Ì65536Ö0 -CAN_F11R2_FB2Ì65536Ö0 -CAN_F11R2_FB20Ì65536Ö0 -CAN_F11R2_FB21Ì65536Ö0 -CAN_F11R2_FB22Ì65536Ö0 -CAN_F11R2_FB23Ì65536Ö0 -CAN_F11R2_FB24Ì65536Ö0 -CAN_F11R2_FB25Ì65536Ö0 -CAN_F11R2_FB26Ì65536Ö0 -CAN_F11R2_FB27Ì65536Ö0 -CAN_F11R2_FB28Ì65536Ö0 -CAN_F11R2_FB29Ì65536Ö0 -CAN_F11R2_FB3Ì65536Ö0 -CAN_F11R2_FB30Ì65536Ö0 -CAN_F11R2_FB31Ì65536Ö0 -CAN_F11R2_FB4Ì65536Ö0 -CAN_F11R2_FB5Ì65536Ö0 -CAN_F11R2_FB6Ì65536Ö0 -CAN_F11R2_FB7Ì65536Ö0 -CAN_F11R2_FB8Ì65536Ö0 -CAN_F11R2_FB9Ì65536Ö0 -CAN_F12R1_FB0Ì65536Ö0 -CAN_F12R1_FB1Ì65536Ö0 -CAN_F12R1_FB10Ì65536Ö0 -CAN_F12R1_FB11Ì65536Ö0 -CAN_F12R1_FB12Ì65536Ö0 -CAN_F12R1_FB13Ì65536Ö0 -CAN_F12R1_FB14Ì65536Ö0 -CAN_F12R1_FB15Ì65536Ö0 -CAN_F12R1_FB16Ì65536Ö0 -CAN_F12R1_FB17Ì65536Ö0 -CAN_F12R1_FB18Ì65536Ö0 -CAN_F12R1_FB19Ì65536Ö0 -CAN_F12R1_FB2Ì65536Ö0 -CAN_F12R1_FB20Ì65536Ö0 -CAN_F12R1_FB21Ì65536Ö0 -CAN_F12R1_FB22Ì65536Ö0 -CAN_F12R1_FB23Ì65536Ö0 -CAN_F12R1_FB24Ì65536Ö0 -CAN_F12R1_FB25Ì65536Ö0 -CAN_F12R1_FB26Ì65536Ö0 -CAN_F12R1_FB27Ì65536Ö0 -CAN_F12R1_FB28Ì65536Ö0 -CAN_F12R1_FB29Ì65536Ö0 -CAN_F12R1_FB3Ì65536Ö0 -CAN_F12R1_FB30Ì65536Ö0 -CAN_F12R1_FB31Ì65536Ö0 -CAN_F12R1_FB4Ì65536Ö0 -CAN_F12R1_FB5Ì65536Ö0 -CAN_F12R1_FB6Ì65536Ö0 -CAN_F12R1_FB7Ì65536Ö0 -CAN_F12R1_FB8Ì65536Ö0 -CAN_F12R1_FB9Ì65536Ö0 -CAN_F12R2_FB0Ì65536Ö0 -CAN_F12R2_FB1Ì65536Ö0 -CAN_F12R2_FB10Ì65536Ö0 -CAN_F12R2_FB11Ì65536Ö0 -CAN_F12R2_FB12Ì65536Ö0 -CAN_F12R2_FB13Ì65536Ö0 -CAN_F12R2_FB14Ì65536Ö0 -CAN_F12R2_FB15Ì65536Ö0 -CAN_F12R2_FB16Ì65536Ö0 -CAN_F12R2_FB17Ì65536Ö0 -CAN_F12R2_FB18Ì65536Ö0 -CAN_F12R2_FB19Ì65536Ö0 -CAN_F12R2_FB2Ì65536Ö0 -CAN_F12R2_FB20Ì65536Ö0 -CAN_F12R2_FB21Ì65536Ö0 -CAN_F12R2_FB22Ì65536Ö0 -CAN_F12R2_FB23Ì65536Ö0 -CAN_F12R2_FB24Ì65536Ö0 -CAN_F12R2_FB25Ì65536Ö0 -CAN_F12R2_FB26Ì65536Ö0 -CAN_F12R2_FB27Ì65536Ö0 -CAN_F12R2_FB28Ì65536Ö0 -CAN_F12R2_FB29Ì65536Ö0 -CAN_F12R2_FB3Ì65536Ö0 -CAN_F12R2_FB30Ì65536Ö0 -CAN_F12R2_FB31Ì65536Ö0 -CAN_F12R2_FB4Ì65536Ö0 -CAN_F12R2_FB5Ì65536Ö0 -CAN_F12R2_FB6Ì65536Ö0 -CAN_F12R2_FB7Ì65536Ö0 -CAN_F12R2_FB8Ì65536Ö0 -CAN_F12R2_FB9Ì65536Ö0 -CAN_F13R1_FB0Ì65536Ö0 -CAN_F13R1_FB1Ì65536Ö0 -CAN_F13R1_FB10Ì65536Ö0 -CAN_F13R1_FB11Ì65536Ö0 -CAN_F13R1_FB12Ì65536Ö0 -CAN_F13R1_FB13Ì65536Ö0 -CAN_F13R1_FB14Ì65536Ö0 -CAN_F13R1_FB15Ì65536Ö0 -CAN_F13R1_FB16Ì65536Ö0 -CAN_F13R1_FB17Ì65536Ö0 -CAN_F13R1_FB18Ì65536Ö0 -CAN_F13R1_FB19Ì65536Ö0 -CAN_F13R1_FB2Ì65536Ö0 -CAN_F13R1_FB20Ì65536Ö0 -CAN_F13R1_FB21Ì65536Ö0 -CAN_F13R1_FB22Ì65536Ö0 -CAN_F13R1_FB23Ì65536Ö0 -CAN_F13R1_FB24Ì65536Ö0 -CAN_F13R1_FB25Ì65536Ö0 -CAN_F13R1_FB26Ì65536Ö0 -CAN_F13R1_FB27Ì65536Ö0 -CAN_F13R1_FB28Ì65536Ö0 -CAN_F13R1_FB29Ì65536Ö0 -CAN_F13R1_FB3Ì65536Ö0 -CAN_F13R1_FB30Ì65536Ö0 -CAN_F13R1_FB31Ì65536Ö0 -CAN_F13R1_FB4Ì65536Ö0 -CAN_F13R1_FB5Ì65536Ö0 -CAN_F13R1_FB6Ì65536Ö0 -CAN_F13R1_FB7Ì65536Ö0 -CAN_F13R1_FB8Ì65536Ö0 -CAN_F13R1_FB9Ì65536Ö0 -CAN_F13R2_FB0Ì65536Ö0 -CAN_F13R2_FB1Ì65536Ö0 -CAN_F13R2_FB10Ì65536Ö0 -CAN_F13R2_FB11Ì65536Ö0 -CAN_F13R2_FB12Ì65536Ö0 -CAN_F13R2_FB13Ì65536Ö0 -CAN_F13R2_FB14Ì65536Ö0 -CAN_F13R2_FB15Ì65536Ö0 -CAN_F13R2_FB16Ì65536Ö0 -CAN_F13R2_FB17Ì65536Ö0 -CAN_F13R2_FB18Ì65536Ö0 -CAN_F13R2_FB19Ì65536Ö0 -CAN_F13R2_FB2Ì65536Ö0 -CAN_F13R2_FB20Ì65536Ö0 -CAN_F13R2_FB21Ì65536Ö0 -CAN_F13R2_FB22Ì65536Ö0 -CAN_F13R2_FB23Ì65536Ö0 -CAN_F13R2_FB24Ì65536Ö0 -CAN_F13R2_FB25Ì65536Ö0 -CAN_F13R2_FB26Ì65536Ö0 -CAN_F13R2_FB27Ì65536Ö0 -CAN_F13R2_FB28Ì65536Ö0 -CAN_F13R2_FB29Ì65536Ö0 -CAN_F13R2_FB3Ì65536Ö0 -CAN_F13R2_FB30Ì65536Ö0 -CAN_F13R2_FB31Ì65536Ö0 -CAN_F13R2_FB4Ì65536Ö0 -CAN_F13R2_FB5Ì65536Ö0 -CAN_F13R2_FB6Ì65536Ö0 -CAN_F13R2_FB7Ì65536Ö0 -CAN_F13R2_FB8Ì65536Ö0 -CAN_F13R2_FB9Ì65536Ö0 -CAN_F1R1_FB0Ì65536Ö0 -CAN_F1R1_FB1Ì65536Ö0 -CAN_F1R1_FB10Ì65536Ö0 -CAN_F1R1_FB11Ì65536Ö0 -CAN_F1R1_FB12Ì65536Ö0 -CAN_F1R1_FB13Ì65536Ö0 -CAN_F1R1_FB14Ì65536Ö0 -CAN_F1R1_FB15Ì65536Ö0 -CAN_F1R1_FB16Ì65536Ö0 -CAN_F1R1_FB17Ì65536Ö0 -CAN_F1R1_FB18Ì65536Ö0 -CAN_F1R1_FB19Ì65536Ö0 -CAN_F1R1_FB2Ì65536Ö0 -CAN_F1R1_FB20Ì65536Ö0 -CAN_F1R1_FB21Ì65536Ö0 -CAN_F1R1_FB22Ì65536Ö0 -CAN_F1R1_FB23Ì65536Ö0 -CAN_F1R1_FB24Ì65536Ö0 -CAN_F1R1_FB25Ì65536Ö0 -CAN_F1R1_FB26Ì65536Ö0 -CAN_F1R1_FB27Ì65536Ö0 -CAN_F1R1_FB28Ì65536Ö0 -CAN_F1R1_FB29Ì65536Ö0 -CAN_F1R1_FB3Ì65536Ö0 -CAN_F1R1_FB30Ì65536Ö0 -CAN_F1R1_FB31Ì65536Ö0 -CAN_F1R1_FB4Ì65536Ö0 -CAN_F1R1_FB5Ì65536Ö0 -CAN_F1R1_FB6Ì65536Ö0 -CAN_F1R1_FB7Ì65536Ö0 -CAN_F1R1_FB8Ì65536Ö0 -CAN_F1R1_FB9Ì65536Ö0 -CAN_F1R2_FB0Ì65536Ö0 -CAN_F1R2_FB1Ì65536Ö0 -CAN_F1R2_FB10Ì65536Ö0 -CAN_F1R2_FB11Ì65536Ö0 -CAN_F1R2_FB12Ì65536Ö0 -CAN_F1R2_FB13Ì65536Ö0 -CAN_F1R2_FB14Ì65536Ö0 -CAN_F1R2_FB15Ì65536Ö0 -CAN_F1R2_FB16Ì65536Ö0 -CAN_F1R2_FB17Ì65536Ö0 -CAN_F1R2_FB18Ì65536Ö0 -CAN_F1R2_FB19Ì65536Ö0 -CAN_F1R2_FB2Ì65536Ö0 -CAN_F1R2_FB20Ì65536Ö0 -CAN_F1R2_FB21Ì65536Ö0 -CAN_F1R2_FB22Ì65536Ö0 -CAN_F1R2_FB23Ì65536Ö0 -CAN_F1R2_FB24Ì65536Ö0 -CAN_F1R2_FB25Ì65536Ö0 -CAN_F1R2_FB26Ì65536Ö0 -CAN_F1R2_FB27Ì65536Ö0 -CAN_F1R2_FB28Ì65536Ö0 -CAN_F1R2_FB29Ì65536Ö0 -CAN_F1R2_FB3Ì65536Ö0 -CAN_F1R2_FB30Ì65536Ö0 -CAN_F1R2_FB31Ì65536Ö0 -CAN_F1R2_FB4Ì65536Ö0 -CAN_F1R2_FB5Ì65536Ö0 -CAN_F1R2_FB6Ì65536Ö0 -CAN_F1R2_FB7Ì65536Ö0 -CAN_F1R2_FB8Ì65536Ö0 -CAN_F1R2_FB9Ì65536Ö0 -CAN_F2R1_FB0Ì65536Ö0 -CAN_F2R1_FB1Ì65536Ö0 -CAN_F2R1_FB10Ì65536Ö0 -CAN_F2R1_FB11Ì65536Ö0 -CAN_F2R1_FB12Ì65536Ö0 -CAN_F2R1_FB13Ì65536Ö0 -CAN_F2R1_FB14Ì65536Ö0 -CAN_F2R1_FB15Ì65536Ö0 -CAN_F2R1_FB16Ì65536Ö0 -CAN_F2R1_FB17Ì65536Ö0 -CAN_F2R1_FB18Ì65536Ö0 -CAN_F2R1_FB19Ì65536Ö0 -CAN_F2R1_FB2Ì65536Ö0 -CAN_F2R1_FB20Ì65536Ö0 -CAN_F2R1_FB21Ì65536Ö0 -CAN_F2R1_FB22Ì65536Ö0 -CAN_F2R1_FB23Ì65536Ö0 -CAN_F2R1_FB24Ì65536Ö0 -CAN_F2R1_FB25Ì65536Ö0 -CAN_F2R1_FB26Ì65536Ö0 -CAN_F2R1_FB27Ì65536Ö0 -CAN_F2R1_FB28Ì65536Ö0 -CAN_F2R1_FB29Ì65536Ö0 -CAN_F2R1_FB3Ì65536Ö0 -CAN_F2R1_FB30Ì65536Ö0 -CAN_F2R1_FB31Ì65536Ö0 -CAN_F2R1_FB4Ì65536Ö0 -CAN_F2R1_FB5Ì65536Ö0 -CAN_F2R1_FB6Ì65536Ö0 -CAN_F2R1_FB7Ì65536Ö0 -CAN_F2R1_FB8Ì65536Ö0 -CAN_F2R1_FB9Ì65536Ö0 -CAN_F2R2_FB0Ì65536Ö0 -CAN_F2R2_FB1Ì65536Ö0 -CAN_F2R2_FB10Ì65536Ö0 -CAN_F2R2_FB11Ì65536Ö0 -CAN_F2R2_FB12Ì65536Ö0 -CAN_F2R2_FB13Ì65536Ö0 -CAN_F2R2_FB14Ì65536Ö0 -CAN_F2R2_FB15Ì65536Ö0 -CAN_F2R2_FB16Ì65536Ö0 -CAN_F2R2_FB17Ì65536Ö0 -CAN_F2R2_FB18Ì65536Ö0 -CAN_F2R2_FB19Ì65536Ö0 -CAN_F2R2_FB2Ì65536Ö0 -CAN_F2R2_FB20Ì65536Ö0 -CAN_F2R2_FB21Ì65536Ö0 -CAN_F2R2_FB22Ì65536Ö0 -CAN_F2R2_FB23Ì65536Ö0 -CAN_F2R2_FB24Ì65536Ö0 -CAN_F2R2_FB25Ì65536Ö0 -CAN_F2R2_FB26Ì65536Ö0 -CAN_F2R2_FB27Ì65536Ö0 -CAN_F2R2_FB28Ì65536Ö0 -CAN_F2R2_FB29Ì65536Ö0 -CAN_F2R2_FB3Ì65536Ö0 -CAN_F2R2_FB30Ì65536Ö0 -CAN_F2R2_FB31Ì65536Ö0 -CAN_F2R2_FB4Ì65536Ö0 -CAN_F2R2_FB5Ì65536Ö0 -CAN_F2R2_FB6Ì65536Ö0 -CAN_F2R2_FB7Ì65536Ö0 -CAN_F2R2_FB8Ì65536Ö0 -CAN_F2R2_FB9Ì65536Ö0 -CAN_F3R1_FB0Ì65536Ö0 -CAN_F3R1_FB1Ì65536Ö0 -CAN_F3R1_FB10Ì65536Ö0 -CAN_F3R1_FB11Ì65536Ö0 -CAN_F3R1_FB12Ì65536Ö0 -CAN_F3R1_FB13Ì65536Ö0 -CAN_F3R1_FB14Ì65536Ö0 -CAN_F3R1_FB15Ì65536Ö0 -CAN_F3R1_FB16Ì65536Ö0 -CAN_F3R1_FB17Ì65536Ö0 -CAN_F3R1_FB18Ì65536Ö0 -CAN_F3R1_FB19Ì65536Ö0 -CAN_F3R1_FB2Ì65536Ö0 -CAN_F3R1_FB20Ì65536Ö0 -CAN_F3R1_FB21Ì65536Ö0 -CAN_F3R1_FB22Ì65536Ö0 -CAN_F3R1_FB23Ì65536Ö0 -CAN_F3R1_FB24Ì65536Ö0 -CAN_F3R1_FB25Ì65536Ö0 -CAN_F3R1_FB26Ì65536Ö0 -CAN_F3R1_FB27Ì65536Ö0 -CAN_F3R1_FB28Ì65536Ö0 -CAN_F3R1_FB29Ì65536Ö0 -CAN_F3R1_FB3Ì65536Ö0 -CAN_F3R1_FB30Ì65536Ö0 -CAN_F3R1_FB31Ì65536Ö0 -CAN_F3R1_FB4Ì65536Ö0 -CAN_F3R1_FB5Ì65536Ö0 -CAN_F3R1_FB6Ì65536Ö0 -CAN_F3R1_FB7Ì65536Ö0 -CAN_F3R1_FB8Ì65536Ö0 -CAN_F3R1_FB9Ì65536Ö0 -CAN_F3R2_FB0Ì65536Ö0 -CAN_F3R2_FB1Ì65536Ö0 -CAN_F3R2_FB10Ì65536Ö0 -CAN_F3R2_FB11Ì65536Ö0 -CAN_F3R2_FB12Ì65536Ö0 -CAN_F3R2_FB13Ì65536Ö0 -CAN_F3R2_FB14Ì65536Ö0 -CAN_F3R2_FB15Ì65536Ö0 -CAN_F3R2_FB16Ì65536Ö0 -CAN_F3R2_FB17Ì65536Ö0 -CAN_F3R2_FB18Ì65536Ö0 -CAN_F3R2_FB19Ì65536Ö0 -CAN_F3R2_FB2Ì65536Ö0 -CAN_F3R2_FB20Ì65536Ö0 -CAN_F3R2_FB21Ì65536Ö0 -CAN_F3R2_FB22Ì65536Ö0 -CAN_F3R2_FB23Ì65536Ö0 -CAN_F3R2_FB24Ì65536Ö0 -CAN_F3R2_FB25Ì65536Ö0 -CAN_F3R2_FB26Ì65536Ö0 -CAN_F3R2_FB27Ì65536Ö0 -CAN_F3R2_FB28Ì65536Ö0 -CAN_F3R2_FB29Ì65536Ö0 -CAN_F3R2_FB3Ì65536Ö0 -CAN_F3R2_FB30Ì65536Ö0 -CAN_F3R2_FB31Ì65536Ö0 -CAN_F3R2_FB4Ì65536Ö0 -CAN_F3R2_FB5Ì65536Ö0 -CAN_F3R2_FB6Ì65536Ö0 -CAN_F3R2_FB7Ì65536Ö0 -CAN_F3R2_FB8Ì65536Ö0 -CAN_F3R2_FB9Ì65536Ö0 -CAN_F4R1_FB0Ì65536Ö0 -CAN_F4R1_FB1Ì65536Ö0 -CAN_F4R1_FB10Ì65536Ö0 -CAN_F4R1_FB11Ì65536Ö0 -CAN_F4R1_FB12Ì65536Ö0 -CAN_F4R1_FB13Ì65536Ö0 -CAN_F4R1_FB14Ì65536Ö0 -CAN_F4R1_FB15Ì65536Ö0 -CAN_F4R1_FB16Ì65536Ö0 -CAN_F4R1_FB17Ì65536Ö0 -CAN_F4R1_FB18Ì65536Ö0 -CAN_F4R1_FB19Ì65536Ö0 -CAN_F4R1_FB2Ì65536Ö0 -CAN_F4R1_FB20Ì65536Ö0 -CAN_F4R1_FB21Ì65536Ö0 -CAN_F4R1_FB22Ì65536Ö0 -CAN_F4R1_FB23Ì65536Ö0 -CAN_F4R1_FB24Ì65536Ö0 -CAN_F4R1_FB25Ì65536Ö0 -CAN_F4R1_FB26Ì65536Ö0 -CAN_F4R1_FB27Ì65536Ö0 -CAN_F4R1_FB28Ì65536Ö0 -CAN_F4R1_FB29Ì65536Ö0 -CAN_F4R1_FB3Ì65536Ö0 -CAN_F4R1_FB30Ì65536Ö0 -CAN_F4R1_FB31Ì65536Ö0 -CAN_F4R1_FB4Ì65536Ö0 -CAN_F4R1_FB5Ì65536Ö0 -CAN_F4R1_FB6Ì65536Ö0 -CAN_F4R1_FB7Ì65536Ö0 -CAN_F4R1_FB8Ì65536Ö0 -CAN_F4R1_FB9Ì65536Ö0 -CAN_F4R2_FB0Ì65536Ö0 -CAN_F4R2_FB1Ì65536Ö0 -CAN_F4R2_FB10Ì65536Ö0 -CAN_F4R2_FB11Ì65536Ö0 -CAN_F4R2_FB12Ì65536Ö0 -CAN_F4R2_FB13Ì65536Ö0 -CAN_F4R2_FB14Ì65536Ö0 -CAN_F4R2_FB15Ì65536Ö0 -CAN_F4R2_FB16Ì65536Ö0 -CAN_F4R2_FB17Ì65536Ö0 -CAN_F4R2_FB18Ì65536Ö0 -CAN_F4R2_FB19Ì65536Ö0 -CAN_F4R2_FB2Ì65536Ö0 -CAN_F4R2_FB20Ì65536Ö0 -CAN_F4R2_FB21Ì65536Ö0 -CAN_F4R2_FB22Ì65536Ö0 -CAN_F4R2_FB23Ì65536Ö0 -CAN_F4R2_FB24Ì65536Ö0 -CAN_F4R2_FB25Ì65536Ö0 -CAN_F4R2_FB26Ì65536Ö0 -CAN_F4R2_FB27Ì65536Ö0 -CAN_F4R2_FB28Ì65536Ö0 -CAN_F4R2_FB29Ì65536Ö0 -CAN_F4R2_FB3Ì65536Ö0 -CAN_F4R2_FB30Ì65536Ö0 -CAN_F4R2_FB31Ì65536Ö0 -CAN_F4R2_FB4Ì65536Ö0 -CAN_F4R2_FB5Ì65536Ö0 -CAN_F4R2_FB6Ì65536Ö0 -CAN_F4R2_FB7Ì65536Ö0 -CAN_F4R2_FB8Ì65536Ö0 -CAN_F4R2_FB9Ì65536Ö0 -CAN_F5R1_FB0Ì65536Ö0 -CAN_F5R1_FB1Ì65536Ö0 -CAN_F5R1_FB10Ì65536Ö0 -CAN_F5R1_FB11Ì65536Ö0 -CAN_F5R1_FB12Ì65536Ö0 -CAN_F5R1_FB13Ì65536Ö0 -CAN_F5R1_FB14Ì65536Ö0 -CAN_F5R1_FB15Ì65536Ö0 -CAN_F5R1_FB16Ì65536Ö0 -CAN_F5R1_FB17Ì65536Ö0 -CAN_F5R1_FB18Ì65536Ö0 -CAN_F5R1_FB19Ì65536Ö0 -CAN_F5R1_FB2Ì65536Ö0 -CAN_F5R1_FB20Ì65536Ö0 -CAN_F5R1_FB21Ì65536Ö0 -CAN_F5R1_FB22Ì65536Ö0 -CAN_F5R1_FB23Ì65536Ö0 -CAN_F5R1_FB24Ì65536Ö0 -CAN_F5R1_FB25Ì65536Ö0 -CAN_F5R1_FB26Ì65536Ö0 -CAN_F5R1_FB27Ì65536Ö0 -CAN_F5R1_FB28Ì65536Ö0 -CAN_F5R1_FB29Ì65536Ö0 -CAN_F5R1_FB3Ì65536Ö0 -CAN_F5R1_FB30Ì65536Ö0 -CAN_F5R1_FB31Ì65536Ö0 -CAN_F5R1_FB4Ì65536Ö0 -CAN_F5R1_FB5Ì65536Ö0 -CAN_F5R1_FB6Ì65536Ö0 -CAN_F5R1_FB7Ì65536Ö0 -CAN_F5R1_FB8Ì65536Ö0 -CAN_F5R1_FB9Ì65536Ö0 -CAN_F5R2_FB0Ì65536Ö0 -CAN_F5R2_FB1Ì65536Ö0 -CAN_F5R2_FB10Ì65536Ö0 -CAN_F5R2_FB11Ì65536Ö0 -CAN_F5R2_FB12Ì65536Ö0 -CAN_F5R2_FB13Ì65536Ö0 -CAN_F5R2_FB14Ì65536Ö0 -CAN_F5R2_FB15Ì65536Ö0 -CAN_F5R2_FB16Ì65536Ö0 -CAN_F5R2_FB17Ì65536Ö0 -CAN_F5R2_FB18Ì65536Ö0 -CAN_F5R2_FB19Ì65536Ö0 -CAN_F5R2_FB2Ì65536Ö0 -CAN_F5R2_FB20Ì65536Ö0 -CAN_F5R2_FB21Ì65536Ö0 -CAN_F5R2_FB22Ì65536Ö0 -CAN_F5R2_FB23Ì65536Ö0 -CAN_F5R2_FB24Ì65536Ö0 -CAN_F5R2_FB25Ì65536Ö0 -CAN_F5R2_FB26Ì65536Ö0 -CAN_F5R2_FB27Ì65536Ö0 -CAN_F5R2_FB28Ì65536Ö0 -CAN_F5R2_FB29Ì65536Ö0 -CAN_F5R2_FB3Ì65536Ö0 -CAN_F5R2_FB30Ì65536Ö0 -CAN_F5R2_FB31Ì65536Ö0 -CAN_F5R2_FB4Ì65536Ö0 -CAN_F5R2_FB5Ì65536Ö0 -CAN_F5R2_FB6Ì65536Ö0 -CAN_F5R2_FB7Ì65536Ö0 -CAN_F5R2_FB8Ì65536Ö0 -CAN_F5R2_FB9Ì65536Ö0 -CAN_F6R1_FB0Ì65536Ö0 -CAN_F6R1_FB1Ì65536Ö0 -CAN_F6R1_FB10Ì65536Ö0 -CAN_F6R1_FB11Ì65536Ö0 -CAN_F6R1_FB12Ì65536Ö0 -CAN_F6R1_FB13Ì65536Ö0 -CAN_F6R1_FB14Ì65536Ö0 -CAN_F6R1_FB15Ì65536Ö0 -CAN_F6R1_FB16Ì65536Ö0 -CAN_F6R1_FB17Ì65536Ö0 -CAN_F6R1_FB18Ì65536Ö0 -CAN_F6R1_FB19Ì65536Ö0 -CAN_F6R1_FB2Ì65536Ö0 -CAN_F6R1_FB20Ì65536Ö0 -CAN_F6R1_FB21Ì65536Ö0 -CAN_F6R1_FB22Ì65536Ö0 -CAN_F6R1_FB23Ì65536Ö0 -CAN_F6R1_FB24Ì65536Ö0 -CAN_F6R1_FB25Ì65536Ö0 -CAN_F6R1_FB26Ì65536Ö0 -CAN_F6R1_FB27Ì65536Ö0 -CAN_F6R1_FB28Ì65536Ö0 -CAN_F6R1_FB29Ì65536Ö0 -CAN_F6R1_FB3Ì65536Ö0 -CAN_F6R1_FB30Ì65536Ö0 -CAN_F6R1_FB31Ì65536Ö0 -CAN_F6R1_FB4Ì65536Ö0 -CAN_F6R1_FB5Ì65536Ö0 -CAN_F6R1_FB6Ì65536Ö0 -CAN_F6R1_FB7Ì65536Ö0 -CAN_F6R1_FB8Ì65536Ö0 -CAN_F6R1_FB9Ì65536Ö0 -CAN_F6R2_FB0Ì65536Ö0 -CAN_F6R2_FB1Ì65536Ö0 -CAN_F6R2_FB10Ì65536Ö0 -CAN_F6R2_FB11Ì65536Ö0 -CAN_F6R2_FB12Ì65536Ö0 -CAN_F6R2_FB13Ì65536Ö0 -CAN_F6R2_FB14Ì65536Ö0 -CAN_F6R2_FB15Ì65536Ö0 -CAN_F6R2_FB16Ì65536Ö0 -CAN_F6R2_FB17Ì65536Ö0 -CAN_F6R2_FB18Ì65536Ö0 -CAN_F6R2_FB19Ì65536Ö0 -CAN_F6R2_FB2Ì65536Ö0 -CAN_F6R2_FB20Ì65536Ö0 -CAN_F6R2_FB21Ì65536Ö0 -CAN_F6R2_FB22Ì65536Ö0 -CAN_F6R2_FB23Ì65536Ö0 -CAN_F6R2_FB24Ì65536Ö0 -CAN_F6R2_FB25Ì65536Ö0 -CAN_F6R2_FB26Ì65536Ö0 -CAN_F6R2_FB27Ì65536Ö0 -CAN_F6R2_FB28Ì65536Ö0 -CAN_F6R2_FB29Ì65536Ö0 -CAN_F6R2_FB3Ì65536Ö0 -CAN_F6R2_FB30Ì65536Ö0 -CAN_F6R2_FB31Ì65536Ö0 -CAN_F6R2_FB4Ì65536Ö0 -CAN_F6R2_FB5Ì65536Ö0 -CAN_F6R2_FB6Ì65536Ö0 -CAN_F6R2_FB7Ì65536Ö0 -CAN_F6R2_FB8Ì65536Ö0 -CAN_F6R2_FB9Ì65536Ö0 -CAN_F7R1_FB0Ì65536Ö0 -CAN_F7R1_FB1Ì65536Ö0 -CAN_F7R1_FB10Ì65536Ö0 -CAN_F7R1_FB11Ì65536Ö0 -CAN_F7R1_FB12Ì65536Ö0 -CAN_F7R1_FB13Ì65536Ö0 -CAN_F7R1_FB14Ì65536Ö0 -CAN_F7R1_FB15Ì65536Ö0 -CAN_F7R1_FB16Ì65536Ö0 -CAN_F7R1_FB17Ì65536Ö0 -CAN_F7R1_FB18Ì65536Ö0 -CAN_F7R1_FB19Ì65536Ö0 -CAN_F7R1_FB2Ì65536Ö0 -CAN_F7R1_FB20Ì65536Ö0 -CAN_F7R1_FB21Ì65536Ö0 -CAN_F7R1_FB22Ì65536Ö0 -CAN_F7R1_FB23Ì65536Ö0 -CAN_F7R1_FB24Ì65536Ö0 -CAN_F7R1_FB25Ì65536Ö0 -CAN_F7R1_FB26Ì65536Ö0 -CAN_F7R1_FB27Ì65536Ö0 -CAN_F7R1_FB28Ì65536Ö0 -CAN_F7R1_FB29Ì65536Ö0 -CAN_F7R1_FB3Ì65536Ö0 -CAN_F7R1_FB30Ì65536Ö0 -CAN_F7R1_FB31Ì65536Ö0 -CAN_F7R1_FB4Ì65536Ö0 -CAN_F7R1_FB5Ì65536Ö0 -CAN_F7R1_FB6Ì65536Ö0 -CAN_F7R1_FB7Ì65536Ö0 -CAN_F7R1_FB8Ì65536Ö0 -CAN_F7R1_FB9Ì65536Ö0 -CAN_F7R2_FB0Ì65536Ö0 -CAN_F7R2_FB1Ì65536Ö0 -CAN_F7R2_FB10Ì65536Ö0 -CAN_F7R2_FB11Ì65536Ö0 -CAN_F7R2_FB12Ì65536Ö0 -CAN_F7R2_FB13Ì65536Ö0 -CAN_F7R2_FB14Ì65536Ö0 -CAN_F7R2_FB15Ì65536Ö0 -CAN_F7R2_FB16Ì65536Ö0 -CAN_F7R2_FB17Ì65536Ö0 -CAN_F7R2_FB18Ì65536Ö0 -CAN_F7R2_FB19Ì65536Ö0 -CAN_F7R2_FB2Ì65536Ö0 -CAN_F7R2_FB20Ì65536Ö0 -CAN_F7R2_FB21Ì65536Ö0 -CAN_F7R2_FB22Ì65536Ö0 -CAN_F7R2_FB23Ì65536Ö0 -CAN_F7R2_FB24Ì65536Ö0 -CAN_F7R2_FB25Ì65536Ö0 -CAN_F7R2_FB26Ì65536Ö0 -CAN_F7R2_FB27Ì65536Ö0 -CAN_F7R2_FB28Ì65536Ö0 -CAN_F7R2_FB29Ì65536Ö0 -CAN_F7R2_FB3Ì65536Ö0 -CAN_F7R2_FB30Ì65536Ö0 -CAN_F7R2_FB31Ì65536Ö0 -CAN_F7R2_FB4Ì65536Ö0 -CAN_F7R2_FB5Ì65536Ö0 -CAN_F7R2_FB6Ì65536Ö0 -CAN_F7R2_FB7Ì65536Ö0 -CAN_F7R2_FB8Ì65536Ö0 -CAN_F7R2_FB9Ì65536Ö0 -CAN_F8R1_FB0Ì65536Ö0 -CAN_F8R1_FB1Ì65536Ö0 -CAN_F8R1_FB10Ì65536Ö0 -CAN_F8R1_FB11Ì65536Ö0 -CAN_F8R1_FB12Ì65536Ö0 -CAN_F8R1_FB13Ì65536Ö0 -CAN_F8R1_FB14Ì65536Ö0 -CAN_F8R1_FB15Ì65536Ö0 -CAN_F8R1_FB16Ì65536Ö0 -CAN_F8R1_FB17Ì65536Ö0 -CAN_F8R1_FB18Ì65536Ö0 -CAN_F8R1_FB19Ì65536Ö0 -CAN_F8R1_FB2Ì65536Ö0 -CAN_F8R1_FB20Ì65536Ö0 -CAN_F8R1_FB21Ì65536Ö0 -CAN_F8R1_FB22Ì65536Ö0 -CAN_F8R1_FB23Ì65536Ö0 -CAN_F8R1_FB24Ì65536Ö0 -CAN_F8R1_FB25Ì65536Ö0 -CAN_F8R1_FB26Ì65536Ö0 -CAN_F8R1_FB27Ì65536Ö0 -CAN_F8R1_FB28Ì65536Ö0 -CAN_F8R1_FB29Ì65536Ö0 -CAN_F8R1_FB3Ì65536Ö0 -CAN_F8R1_FB30Ì65536Ö0 -CAN_F8R1_FB31Ì65536Ö0 -CAN_F8R1_FB4Ì65536Ö0 -CAN_F8R1_FB5Ì65536Ö0 -CAN_F8R1_FB6Ì65536Ö0 -CAN_F8R1_FB7Ì65536Ö0 -CAN_F8R1_FB8Ì65536Ö0 -CAN_F8R1_FB9Ì65536Ö0 -CAN_F8R2_FB0Ì65536Ö0 -CAN_F8R2_FB1Ì65536Ö0 -CAN_F8R2_FB10Ì65536Ö0 -CAN_F8R2_FB11Ì65536Ö0 -CAN_F8R2_FB12Ì65536Ö0 -CAN_F8R2_FB13Ì65536Ö0 -CAN_F8R2_FB14Ì65536Ö0 -CAN_F8R2_FB15Ì65536Ö0 -CAN_F8R2_FB16Ì65536Ö0 -CAN_F8R2_FB17Ì65536Ö0 -CAN_F8R2_FB18Ì65536Ö0 -CAN_F8R2_FB19Ì65536Ö0 -CAN_F8R2_FB2Ì65536Ö0 -CAN_F8R2_FB20Ì65536Ö0 -CAN_F8R2_FB21Ì65536Ö0 -CAN_F8R2_FB22Ì65536Ö0 -CAN_F8R2_FB23Ì65536Ö0 -CAN_F8R2_FB24Ì65536Ö0 -CAN_F8R2_FB25Ì65536Ö0 -CAN_F8R2_FB26Ì65536Ö0 -CAN_F8R2_FB27Ì65536Ö0 -CAN_F8R2_FB28Ì65536Ö0 -CAN_F8R2_FB29Ì65536Ö0 -CAN_F8R2_FB3Ì65536Ö0 -CAN_F8R2_FB30Ì65536Ö0 -CAN_F8R2_FB31Ì65536Ö0 -CAN_F8R2_FB4Ì65536Ö0 -CAN_F8R2_FB5Ì65536Ö0 -CAN_F8R2_FB6Ì65536Ö0 -CAN_F8R2_FB7Ì65536Ö0 -CAN_F8R2_FB8Ì65536Ö0 -CAN_F8R2_FB9Ì65536Ö0 -CAN_F9R1_FB0Ì65536Ö0 -CAN_F9R1_FB1Ì65536Ö0 -CAN_F9R1_FB10Ì65536Ö0 -CAN_F9R1_FB11Ì65536Ö0 -CAN_F9R1_FB12Ì65536Ö0 -CAN_F9R1_FB13Ì65536Ö0 -CAN_F9R1_FB14Ì65536Ö0 -CAN_F9R1_FB15Ì65536Ö0 -CAN_F9R1_FB16Ì65536Ö0 -CAN_F9R1_FB17Ì65536Ö0 -CAN_F9R1_FB18Ì65536Ö0 -CAN_F9R1_FB19Ì65536Ö0 -CAN_F9R1_FB2Ì65536Ö0 -CAN_F9R1_FB20Ì65536Ö0 -CAN_F9R1_FB21Ì65536Ö0 -CAN_F9R1_FB22Ì65536Ö0 -CAN_F9R1_FB23Ì65536Ö0 -CAN_F9R1_FB24Ì65536Ö0 -CAN_F9R1_FB25Ì65536Ö0 -CAN_F9R1_FB26Ì65536Ö0 -CAN_F9R1_FB27Ì65536Ö0 -CAN_F9R1_FB28Ì65536Ö0 -CAN_F9R1_FB29Ì65536Ö0 -CAN_F9R1_FB3Ì65536Ö0 -CAN_F9R1_FB30Ì65536Ö0 -CAN_F9R1_FB31Ì65536Ö0 -CAN_F9R1_FB4Ì65536Ö0 -CAN_F9R1_FB5Ì65536Ö0 -CAN_F9R1_FB6Ì65536Ö0 -CAN_F9R1_FB7Ì65536Ö0 -CAN_F9R1_FB8Ì65536Ö0 -CAN_F9R1_FB9Ì65536Ö0 -CAN_F9R2_FB0Ì65536Ö0 -CAN_F9R2_FB1Ì65536Ö0 -CAN_F9R2_FB10Ì65536Ö0 -CAN_F9R2_FB11Ì65536Ö0 -CAN_F9R2_FB12Ì65536Ö0 -CAN_F9R2_FB13Ì65536Ö0 -CAN_F9R2_FB14Ì65536Ö0 -CAN_F9R2_FB15Ì65536Ö0 -CAN_F9R2_FB16Ì65536Ö0 -CAN_F9R2_FB17Ì65536Ö0 -CAN_F9R2_FB18Ì65536Ö0 -CAN_F9R2_FB19Ì65536Ö0 -CAN_F9R2_FB2Ì65536Ö0 -CAN_F9R2_FB20Ì65536Ö0 -CAN_F9R2_FB21Ì65536Ö0 -CAN_F9R2_FB22Ì65536Ö0 -CAN_F9R2_FB23Ì65536Ö0 -CAN_F9R2_FB24Ì65536Ö0 -CAN_F9R2_FB25Ì65536Ö0 -CAN_F9R2_FB26Ì65536Ö0 -CAN_F9R2_FB27Ì65536Ö0 -CAN_F9R2_FB28Ì65536Ö0 -CAN_F9R2_FB29Ì65536Ö0 -CAN_F9R2_FB3Ì65536Ö0 -CAN_F9R2_FB30Ì65536Ö0 -CAN_F9R2_FB31Ì65536Ö0 -CAN_F9R2_FB4Ì65536Ö0 -CAN_F9R2_FB5Ì65536Ö0 -CAN_F9R2_FB6Ì65536Ö0 -CAN_F9R2_FB7Ì65536Ö0 -CAN_F9R2_FB8Ì65536Ö0 -CAN_F9R2_FB9Ì65536Ö0 -CAN_FA1R_FACTÌ65536Ö0 -CAN_FA1R_FACT0Ì65536Ö0 -CAN_FA1R_FACT1Ì65536Ö0 -CAN_FA1R_FACT10Ì65536Ö0 -CAN_FA1R_FACT11Ì65536Ö0 -CAN_FA1R_FACT12Ì65536Ö0 -CAN_FA1R_FACT13Ì65536Ö0 -CAN_FA1R_FACT2Ì65536Ö0 -CAN_FA1R_FACT3Ì65536Ö0 -CAN_FA1R_FACT4Ì65536Ö0 -CAN_FA1R_FACT5Ì65536Ö0 -CAN_FA1R_FACT6Ì65536Ö0 -CAN_FA1R_FACT7Ì65536Ö0 -CAN_FA1R_FACT8Ì65536Ö0 -CAN_FA1R_FACT9Ì65536Ö0 -CAN_FFA1R_FFAÌ65536Ö0 -CAN_FFA1R_FFA0Ì65536Ö0 -CAN_FFA1R_FFA1Ì65536Ö0 -CAN_FFA1R_FFA10Ì65536Ö0 -CAN_FFA1R_FFA11Ì65536Ö0 -CAN_FFA1R_FFA12Ì65536Ö0 -CAN_FFA1R_FFA13Ì65536Ö0 -CAN_FFA1R_FFA2Ì65536Ö0 -CAN_FFA1R_FFA3Ì65536Ö0 -CAN_FFA1R_FFA4Ì65536Ö0 -CAN_FFA1R_FFA5Ì65536Ö0 -CAN_FFA1R_FFA6Ì65536Ö0 -CAN_FFA1R_FFA7Ì65536Ö0 -CAN_FFA1R_FFA8Ì65536Ö0 -CAN_FFA1R_FFA9Ì65536Ö0 -CAN_FM1R_FBMÌ65536Ö0 -CAN_FM1R_FBM0Ì65536Ö0 -CAN_FM1R_FBM1Ì65536Ö0 -CAN_FM1R_FBM10Ì65536Ö0 -CAN_FM1R_FBM11Ì65536Ö0 -CAN_FM1R_FBM12Ì65536Ö0 -CAN_FM1R_FBM13Ì65536Ö0 -CAN_FM1R_FBM2Ì65536Ö0 -CAN_FM1R_FBM3Ì65536Ö0 -CAN_FM1R_FBM4Ì65536Ö0 -CAN_FM1R_FBM5Ì65536Ö0 -CAN_FM1R_FBM6Ì65536Ö0 -CAN_FM1R_FBM7Ì65536Ö0 -CAN_FM1R_FBM8Ì65536Ö0 -CAN_FM1R_FBM9Ì65536Ö0 -CAN_FMR_FINITÌ65536Ö0 -CAN_FS1R_FSCÌ65536Ö0 -CAN_FS1R_FSC0Ì65536Ö0 -CAN_FS1R_FSC1Ì65536Ö0 -CAN_FS1R_FSC10Ì65536Ö0 -CAN_FS1R_FSC11Ì65536Ö0 -CAN_FS1R_FSC12Ì65536Ö0 -CAN_FS1R_FSC13Ì65536Ö0 -CAN_FS1R_FSC2Ì65536Ö0 -CAN_FS1R_FSC3Ì65536Ö0 -CAN_FS1R_FSC4Ì65536Ö0 -CAN_FS1R_FSC5Ì65536Ö0 -CAN_FS1R_FSC6Ì65536Ö0 -CAN_FS1R_FSC7Ì65536Ö0 -CAN_FS1R_FSC8Ì65536Ö0 -CAN_FS1R_FSC9Ì65536Ö0 -CAN_IER_BOFIEÌ65536Ö0 -CAN_IER_EPVIEÌ65536Ö0 -CAN_IER_ERRIEÌ65536Ö0 -CAN_IER_EWGIEÌ65536Ö0 -CAN_IER_FFIE0Ì65536Ö0 -CAN_IER_FFIE1Ì65536Ö0 -CAN_IER_FMPIE0Ì65536Ö0 -CAN_IER_FMPIE1Ì65536Ö0 -CAN_IER_FOVIE0Ì65536Ö0 -CAN_IER_FOVIE1Ì65536Ö0 -CAN_IER_LECIEÌ65536Ö0 -CAN_IER_SLKIEÌ65536Ö0 -CAN_IER_TMEIEÌ65536Ö0 -CAN_IER_WKUIEÌ65536Ö0 -CAN_MCR_ABOMÌ65536Ö0 -CAN_MCR_AWUMÌ65536Ö0 -CAN_MCR_INRQÌ65536Ö0 -CAN_MCR_NARTÌ65536Ö0 -CAN_MCR_RESETÌ65536Ö0 -CAN_MCR_RFLMÌ65536Ö0 -CAN_MCR_SLEEPÌ65536Ö0 -CAN_MCR_TTCMÌ65536Ö0 -CAN_MCR_TXFPÌ65536Ö0 -CAN_MSR_ERRIÌ65536Ö0 -CAN_MSR_INAKÌ65536Ö0 -CAN_MSR_RXÌ65536Ö0 -CAN_MSR_RXMÌ65536Ö0 -CAN_MSR_SAMPÌ65536Ö0 -CAN_MSR_SLAKÌ65536Ö0 -CAN_MSR_SLAKIÌ65536Ö0 -CAN_MSR_TXMÌ65536Ö0 -CAN_MSR_WKUIÌ65536Ö0 -CAN_RDH0R_DATA4Ì65536Ö0 -CAN_RDH0R_DATA5Ì65536Ö0 -CAN_RDH0R_DATA6Ì65536Ö0 -CAN_RDH0R_DATA7Ì65536Ö0 -CAN_RDH1R_DATA4Ì65536Ö0 -CAN_RDH1R_DATA5Ì65536Ö0 -CAN_RDH1R_DATA6Ì65536Ö0 -CAN_RDH1R_DATA7Ì65536Ö0 -CAN_RDL0R_DATA0Ì65536Ö0 -CAN_RDL0R_DATA1Ì65536Ö0 -CAN_RDL0R_DATA2Ì65536Ö0 -CAN_RDL0R_DATA3Ì65536Ö0 -CAN_RDL1R_DATA0Ì65536Ö0 -CAN_RDL1R_DATA1Ì65536Ö0 -CAN_RDL1R_DATA2Ì65536Ö0 -CAN_RDL1R_DATA3Ì65536Ö0 -CAN_RDT0R_DLCÌ65536Ö0 -CAN_RDT0R_FMIÌ65536Ö0 -CAN_RDT0R_TIMEÌ65536Ö0 -CAN_RDT1R_DLCÌ65536Ö0 -CAN_RDT1R_FMIÌ65536Ö0 -CAN_RDT1R_TIMEÌ65536Ö0 -CAN_RF0R_FMP0Ì65536Ö0 -CAN_RF0R_FOVR0Ì65536Ö0 -CAN_RF0R_FULL0Ì65536Ö0 -CAN_RF0R_RFOM0Ì65536Ö0 -CAN_RF1R_FMP1Ì65536Ö0 -CAN_RF1R_FOVR1Ì65536Ö0 -CAN_RF1R_FULL1Ì65536Ö0 -CAN_RF1R_RFOM1Ì65536Ö0 -CAN_RI0R_EXIDÌ65536Ö0 -CAN_RI0R_IDEÌ65536Ö0 -CAN_RI0R_RTRÌ65536Ö0 -CAN_RI0R_STIDÌ65536Ö0 -CAN_RI1R_EXIDÌ65536Ö0 -CAN_RI1R_IDEÌ65536Ö0 -CAN_RI1R_RTRÌ65536Ö0 -CAN_RI1R_STIDÌ65536Ö0 -CAN_TDH0R_DATA4Ì65536Ö0 -CAN_TDH0R_DATA5Ì65536Ö0 -CAN_TDH0R_DATA6Ì65536Ö0 -CAN_TDH0R_DATA7Ì65536Ö0 -CAN_TDH1R_DATA4Ì65536Ö0 -CAN_TDH1R_DATA5Ì65536Ö0 -CAN_TDH1R_DATA6Ì65536Ö0 -CAN_TDH1R_DATA7Ì65536Ö0 -CAN_TDH2R_DATA4Ì65536Ö0 -CAN_TDH2R_DATA5Ì65536Ö0 -CAN_TDH2R_DATA6Ì65536Ö0 -CAN_TDH2R_DATA7Ì65536Ö0 -CAN_TDL0R_DATA0Ì65536Ö0 -CAN_TDL0R_DATA1Ì65536Ö0 -CAN_TDL0R_DATA2Ì65536Ö0 -CAN_TDL0R_DATA3Ì65536Ö0 -CAN_TDL1R_DATA0Ì65536Ö0 -CAN_TDL1R_DATA1Ì65536Ö0 -CAN_TDL1R_DATA2Ì65536Ö0 -CAN_TDL1R_DATA3Ì65536Ö0 -CAN_TDL2R_DATA0Ì65536Ö0 -CAN_TDL2R_DATA1Ì65536Ö0 -CAN_TDL2R_DATA2Ì65536Ö0 -CAN_TDL2R_DATA3Ì65536Ö0 -CAN_TDT0R_DLCÌ65536Ö0 -CAN_TDT0R_TGTÌ65536Ö0 -CAN_TDT0R_TIMEÌ65536Ö0 -CAN_TDT1R_DLCÌ65536Ö0 -CAN_TDT1R_TGTÌ65536Ö0 -CAN_TDT1R_TIMEÌ65536Ö0 -CAN_TDT2R_DLCÌ65536Ö0 -CAN_TDT2R_TGTÌ65536Ö0 -CAN_TDT2R_TIMEÌ65536Ö0 -CAN_TI0R_EXIDÌ65536Ö0 -CAN_TI0R_IDEÌ65536Ö0 -CAN_TI0R_RTRÌ65536Ö0 -CAN_TI0R_STIDÌ65536Ö0 -CAN_TI0R_TXRQÌ65536Ö0 -CAN_TI1R_EXIDÌ65536Ö0 -CAN_TI1R_IDEÌ65536Ö0 -CAN_TI1R_RTRÌ65536Ö0 -CAN_TI1R_STIDÌ65536Ö0 -CAN_TI1R_TXRQÌ65536Ö0 -CAN_TI2R_EXIDÌ65536Ö0 -CAN_TI2R_IDEÌ65536Ö0 -CAN_TI2R_RTRÌ65536Ö0 -CAN_TI2R_STIDÌ65536Ö0 -CAN_TI2R_TXRQÌ65536Ö0 -CAN_TSR_ABRQ0Ì65536Ö0 -CAN_TSR_ABRQ1Ì65536Ö0 -CAN_TSR_ABRQ2Ì65536Ö0 -CAN_TSR_ALST0Ì65536Ö0 -CAN_TSR_ALST1Ì65536Ö0 -CAN_TSR_ALST2Ì65536Ö0 -CAN_TSR_CODEÌ65536Ö0 -CAN_TSR_LOWÌ65536Ö0 -CAN_TSR_LOW0Ì65536Ö0 -CAN_TSR_LOW1Ì65536Ö0 -CAN_TSR_LOW2Ì65536Ö0 -CAN_TSR_RQCP0Ì65536Ö0 -CAN_TSR_RQCP1Ì65536Ö0 -CAN_TSR_RQCP2Ì65536Ö0 -CAN_TSR_TERR0Ì65536Ö0 -CAN_TSR_TERR1Ì65536Ö0 -CAN_TSR_TERR2Ì65536Ö0 -CAN_TSR_TMEÌ65536Ö0 -CAN_TSR_TME0Ì65536Ö0 -CAN_TSR_TME1Ì65536Ö0 -CAN_TSR_TME2Ì65536Ö0 -CAN_TSR_TXOK0Ì65536Ö0 -CAN_TSR_TXOK1Ì65536Ö0 -CAN_TSR_TXOK2Ì65536Ö0 -CECÌ65536Ö0 -CEC_BASEÌ65536Ö0 -CEC_CFGR_BRDNOGENÌ65536Ö0 -CEC_CFGR_BREGENÌ65536Ö0 -CEC_CFGR_BRESTPÌ65536Ö0 -CEC_CFGR_LBPEGENÌ65536Ö0 -CEC_CFGR_LSTNÌ65536Ö0 -CEC_CFGR_OARÌ65536Ö0 -CEC_CFGR_RXTOLÌ65536Ö0 -CEC_CFGR_SFTÌ65536Ö0 -CEC_CFGR_SFTOPTÌ65536Ö0 -CEC_CR_CECENÌ65536Ö0 -CEC_CR_TXEOMÌ65536Ö0 -CEC_CR_TXSOMÌ65536Ö0 -CEC_IER_ARBLSTIEÌ65536Ö0 -CEC_IER_BREIEÌ65536Ö0 -CEC_IER_LBPEIEÌ65536Ö0 -CEC_IER_RXACKEIEÌ65536Ö0 -CEC_IER_RXBRIEÌ65536Ö0 -CEC_IER_RXENDIEÌ65536Ö0 -CEC_IER_RXOVRIEÌ65536Ö0 -CEC_IER_SBPEIEÌ65536Ö0 -CEC_IER_TXACKEIEÌ65536Ö0 -CEC_IER_TXBRIEÌ65536Ö0 -CEC_IER_TXENDIEÌ65536Ö0 -CEC_IER_TXERRIEÌ65536Ö0 -CEC_IER_TXUDRIEÌ65536Ö0 -CEC_ISR_ARBLSTÌ65536Ö0 -CEC_ISR_BREÌ65536Ö0 -CEC_ISR_LBPEÌ65536Ö0 -CEC_ISR_RXACKEÌ65536Ö0 -CEC_ISR_RXBRÌ65536Ö0 -CEC_ISR_RXENDÌ65536Ö0 -CEC_ISR_RXOVRÌ65536Ö0 -CEC_ISR_SBPEÌ65536Ö0 -CEC_ISR_TXACKEÌ65536Ö0 -CEC_ISR_TXBRÌ65536Ö0 -CEC_ISR_TXENDÌ65536Ö0 -CEC_ISR_TXERRÌ65536Ö0 -CEC_ISR_TXUDRÌ65536Ö0 -CEC_TXDR_RXDÌ65536Ö0 -CEC_TXDR_TXDÌ65536Ö0 -CLEAR_BITÌ131072Í(REG,BIT)Ö0 -CLEAR_REGÌ131072Í(REG)Ö0 -CRCÌ65536Ö0 -CRC_BASEÌ65536Ö0 -CRC_CR_RESETÌ65536Ö0 -CRC_CR_REV_INÌ65536Ö0 -CRC_CR_REV_IN_0Ì65536Ö0 -CRC_CR_REV_IN_1Ì65536Ö0 -CRC_CR_REV_OUTÌ65536Ö0 -CRC_DR_DRÌ65536Ö0 -CRC_IDR_IDRÌ65536Ö0 -CRC_INIT_INITÌ65536Ö0 -CRSÌ65536Ö0 -CRS_BASEÌ65536Ö0 -CRS_CFGR_FELIMÌ65536Ö0 -CRS_CFGR_RELOADÌ65536Ö0 -CRS_CFGR_SYNCDIVÌ65536Ö0 -CRS_CFGR_SYNCDIV_0Ì65536Ö0 -CRS_CFGR_SYNCDIV_1Ì65536Ö0 -CRS_CFGR_SYNCDIV_2Ì65536Ö0 -CRS_CFGR_SYNCPOLÌ65536Ö0 -CRS_CFGR_SYNCSRCÌ65536Ö0 -CRS_CFGR_SYNCSRC_0Ì65536Ö0 -CRS_CFGR_SYNCSRC_1Ì65536Ö0 -CRS_CR_AUTOTRIMENÌ65536Ö0 -CRS_CR_CENÌ65536Ö0 -CRS_CR_ERRIEÌ65536Ö0 -CRS_CR_ESYNCIEÌ65536Ö0 -CRS_CR_SWSYNCÌ65536Ö0 -CRS_CR_SYNCOKIEÌ65536Ö0 -CRS_CR_SYNCWARNIEÌ65536Ö0 -CRS_CR_TRIMÌ65536Ö0 -CRS_ICR_ERRCÌ65536Ö0 -CRS_ICR_ESYNCCÌ65536Ö0 -CRS_ICR_SYNCOKCÌ65536Ö0 -CRS_ICR_SYNCWARNCÌ65536Ö0 -CRS_ISR_ERRFÌ65536Ö0 -CRS_ISR_ESYNCFÌ65536Ö0 -CRS_ISR_FECAPÌ65536Ö0 -CRS_ISR_FEDIRÌ65536Ö0 -CRS_ISR_SYNCERRÌ65536Ö0 -CRS_ISR_SYNCMISSÌ65536Ö0 -CRS_ISR_SYNCOKFÌ65536Ö0 -CRS_ISR_SYNCWARNFÌ65536Ö0 -CRS_ISR_TRIMOVFÌ65536Ö0 -DBGMCUÌ65536Ö0 -DBGMCU_APB1_FZ_DBG_CAN_STOPÌ65536Ö0 -DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUTÌ65536Ö0 -DBGMCU_APB1_FZ_DBG_IWDG_STOPÌ65536Ö0 -DBGMCU_APB1_FZ_DBG_RTC_STOPÌ65536Ö0 -DBGMCU_APB1_FZ_DBG_TIM14_STOPÌ65536Ö0 -DBGMCU_APB1_FZ_DBG_TIM2_STOPÌ65536Ö0 -DBGMCU_APB1_FZ_DBG_TIM3_STOPÌ65536Ö0 -DBGMCU_APB1_FZ_DBG_WWDG_STOPÌ65536Ö0 -DBGMCU_APB2_FZ_DBG_TIM16_STOPÌ65536Ö0 -DBGMCU_APB2_FZ_DBG_TIM17_STOPÌ65536Ö0 -DBGMCU_APB2_FZ_DBG_TIM1_STOPÌ65536Ö0 -DBGMCU_BASEÌ65536Ö0 -DBGMCU_CR_DBG_STANDBYÌ65536Ö0 -DBGMCU_CR_DBG_STOPÌ65536Ö0 -DBGMCU_IDCODE_DEV_IDÌ65536Ö0 -DBGMCU_IDCODE_REV_IDÌ65536Ö0 -DBGMCU_IDCODE_REV_ID_0Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_1Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_10Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_11Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_12Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_13Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_14Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_15Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_2Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_3Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_4Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_5Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_6Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_7Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_8Ì65536Ö0 -DBGMCU_IDCODE_REV_ID_9Ì65536Ö0 -DMA1Ì65536Ö0 -DMA1_BASEÌ65536Ö0 -DMA1_Channel1Ì65536Ö0 -DMA1_Channel1_BASEÌ65536Ö0 -DMA1_Channel2Ì65536Ö0 -DMA1_Channel2_BASEÌ65536Ö0 -DMA1_Channel3Ì65536Ö0 -DMA1_Channel3_BASEÌ65536Ö0 -DMA1_Channel4Ì65536Ö0 -DMA1_Channel4_5_6_7_IRQHandlerÌ65536Ö0 -DMA1_Channel4_5_6_7_IRQnÌ65536Ö0 -DMA1_Channel4_BASEÌ65536Ö0 -DMA1_Channel5Ì65536Ö0 -DMA1_Channel5_BASEÌ65536Ö0 -DMA1_Channel6Ì65536Ö0 -DMA1_Channel6_BASEÌ65536Ö0 -DMA1_Channel7Ì65536Ö0 -DMA1_Channel7_BASEÌ65536Ö0 -DMA_CCR_CIRCÌ65536Ö0 -DMA_CCR_DIRÌ65536Ö0 -DMA_CCR_ENÌ65536Ö0 -DMA_CCR_HTIEÌ65536Ö0 -DMA_CCR_MEM2MEMÌ65536Ö0 -DMA_CCR_MINCÌ65536Ö0 -DMA_CCR_MSIZEÌ65536Ö0 -DMA_CCR_MSIZE_0Ì65536Ö0 -DMA_CCR_MSIZE_1Ì65536Ö0 -DMA_CCR_PINCÌ65536Ö0 -DMA_CCR_PLÌ65536Ö0 -DMA_CCR_PL_0Ì65536Ö0 -DMA_CCR_PL_1Ì65536Ö0 -DMA_CCR_PSIZEÌ65536Ö0 -DMA_CCR_PSIZE_0Ì65536Ö0 -DMA_CCR_PSIZE_1Ì65536Ö0 -DMA_CCR_TCIEÌ65536Ö0 -DMA_CCR_TEIEÌ65536Ö0 -DMA_CMAR_MAÌ65536Ö0 -DMA_CNDTR_NDTÌ65536Ö0 -DMA_CPAR_PAÌ65536Ö0 -DMA_IFCR_CGIF1Ì65536Ö0 -DMA_IFCR_CGIF2Ì65536Ö0 -DMA_IFCR_CGIF3Ì65536Ö0 -DMA_IFCR_CGIF4Ì65536Ö0 -DMA_IFCR_CGIF5Ì65536Ö0 -DMA_IFCR_CGIF6Ì65536Ö0 -DMA_IFCR_CGIF7Ì65536Ö0 -DMA_IFCR_CHTIF1Ì65536Ö0 -DMA_IFCR_CHTIF2Ì65536Ö0 -DMA_IFCR_CHTIF3Ì65536Ö0 -DMA_IFCR_CHTIF4Ì65536Ö0 -DMA_IFCR_CHTIF5Ì65536Ö0 -DMA_IFCR_CHTIF6Ì65536Ö0 -DMA_IFCR_CHTIF7Ì65536Ö0 -DMA_IFCR_CTCIF1Ì65536Ö0 -DMA_IFCR_CTCIF2Ì65536Ö0 -DMA_IFCR_CTCIF3Ì65536Ö0 -DMA_IFCR_CTCIF4Ì65536Ö0 -DMA_IFCR_CTCIF5Ì65536Ö0 -DMA_IFCR_CTCIF6Ì65536Ö0 -DMA_IFCR_CTCIF7Ì65536Ö0 -DMA_IFCR_CTEIF1Ì65536Ö0 -DMA_IFCR_CTEIF2Ì65536Ö0 -DMA_IFCR_CTEIF3Ì65536Ö0 -DMA_IFCR_CTEIF4Ì65536Ö0 -DMA_IFCR_CTEIF5Ì65536Ö0 -DMA_IFCR_CTEIF6Ì65536Ö0 -DMA_IFCR_CTEIF7Ì65536Ö0 -DMA_ISR_GIF1Ì65536Ö0 -DMA_ISR_GIF2Ì65536Ö0 -DMA_ISR_GIF3Ì65536Ö0 -DMA_ISR_GIF4Ì65536Ö0 -DMA_ISR_GIF5Ì65536Ö0 -DMA_ISR_GIF6Ì65536Ö0 -DMA_ISR_GIF7Ì65536Ö0 -DMA_ISR_HTIF1Ì65536Ö0 -DMA_ISR_HTIF2Ì65536Ö0 -DMA_ISR_HTIF3Ì65536Ö0 -DMA_ISR_HTIF4Ì65536Ö0 -DMA_ISR_HTIF5Ì65536Ö0 -DMA_ISR_HTIF6Ì65536Ö0 -DMA_ISR_HTIF7Ì65536Ö0 -DMA_ISR_TCIF1Ì65536Ö0 -DMA_ISR_TCIF2Ì65536Ö0 -DMA_ISR_TCIF3Ì65536Ö0 -DMA_ISR_TCIF4Ì65536Ö0 -DMA_ISR_TCIF5Ì65536Ö0 -DMA_ISR_TCIF6Ì65536Ö0 -DMA_ISR_TCIF7Ì65536Ö0 -DMA_ISR_TEIF1Ì65536Ö0 -DMA_ISR_TEIF2Ì65536Ö0 -DMA_ISR_TEIF3Ì65536Ö0 -DMA_ISR_TEIF4Ì65536Ö0 -DMA_ISR_TEIF5Ì65536Ö0 -DMA_ISR_TEIF6Ì65536Ö0 -DMA_ISR_TEIF7Ì65536Ö0 -EXTIÌ65536Ö0 -EXTI_BASEÌ65536Ö0 -EXTI_EMR_MR0Ì65536Ö0 -EXTI_EMR_MR1Ì65536Ö0 -EXTI_EMR_MR10Ì65536Ö0 -EXTI_EMR_MR11Ì65536Ö0 -EXTI_EMR_MR12Ì65536Ö0 -EXTI_EMR_MR13Ì65536Ö0 -EXTI_EMR_MR14Ì65536Ö0 -EXTI_EMR_MR15Ì65536Ö0 -EXTI_EMR_MR16Ì65536Ö0 -EXTI_EMR_MR17Ì65536Ö0 -EXTI_EMR_MR19Ì65536Ö0 -EXTI_EMR_MR2Ì65536Ö0 -EXTI_EMR_MR21Ì65536Ö0 -EXTI_EMR_MR22Ì65536Ö0 -EXTI_EMR_MR23Ì65536Ö0 -EXTI_EMR_MR25Ì65536Ö0 -EXTI_EMR_MR27Ì65536Ö0 -EXTI_EMR_MR3Ì65536Ö0 -EXTI_EMR_MR4Ì65536Ö0 -EXTI_EMR_MR5Ì65536Ö0 -EXTI_EMR_MR6Ì65536Ö0 -EXTI_EMR_MR7Ì65536Ö0 -EXTI_EMR_MR8Ì65536Ö0 -EXTI_EMR_MR9Ì65536Ö0 -EXTI_FTSR_TR0Ì65536Ö0 -EXTI_FTSR_TR1Ì65536Ö0 -EXTI_FTSR_TR10Ì65536Ö0 -EXTI_FTSR_TR11Ì65536Ö0 -EXTI_FTSR_TR12Ì65536Ö0 -EXTI_FTSR_TR13Ì65536Ö0 -EXTI_FTSR_TR14Ì65536Ö0 -EXTI_FTSR_TR15Ì65536Ö0 -EXTI_FTSR_TR16Ì65536Ö0 -EXTI_FTSR_TR17Ì65536Ö0 -EXTI_FTSR_TR19Ì65536Ö0 -EXTI_FTSR_TR2Ì65536Ö0 -EXTI_FTSR_TR3Ì65536Ö0 -EXTI_FTSR_TR4Ì65536Ö0 -EXTI_FTSR_TR5Ì65536Ö0 -EXTI_FTSR_TR6Ì65536Ö0 -EXTI_FTSR_TR7Ì65536Ö0 -EXTI_FTSR_TR8Ì65536Ö0 -EXTI_FTSR_TR9Ì65536Ö0 -EXTI_IMR_MR0Ì65536Ö0 -EXTI_IMR_MR1Ì65536Ö0 -EXTI_IMR_MR10Ì65536Ö0 -EXTI_IMR_MR11Ì65536Ö0 -EXTI_IMR_MR12Ì65536Ö0 -EXTI_IMR_MR13Ì65536Ö0 -EXTI_IMR_MR14Ì65536Ö0 -EXTI_IMR_MR15Ì65536Ö0 -EXTI_IMR_MR16Ì65536Ö0 -EXTI_IMR_MR17Ì65536Ö0 -EXTI_IMR_MR19Ì65536Ö0 -EXTI_IMR_MR2Ì65536Ö0 -EXTI_IMR_MR21Ì65536Ö0 -EXTI_IMR_MR22Ì65536Ö0 -EXTI_IMR_MR23Ì65536Ö0 -EXTI_IMR_MR25Ì65536Ö0 -EXTI_IMR_MR27Ì65536Ö0 -EXTI_IMR_MR3Ì65536Ö0 -EXTI_IMR_MR4Ì65536Ö0 -EXTI_IMR_MR5Ì65536Ö0 -EXTI_IMR_MR6Ì65536Ö0 -EXTI_IMR_MR7Ì65536Ö0 -EXTI_IMR_MR8Ì65536Ö0 -EXTI_IMR_MR9Ì65536Ö0 -EXTI_PR_PR0Ì65536Ö0 -EXTI_PR_PR1Ì65536Ö0 -EXTI_PR_PR10Ì65536Ö0 -EXTI_PR_PR11Ì65536Ö0 -EXTI_PR_PR12Ì65536Ö0 -EXTI_PR_PR13Ì65536Ö0 -EXTI_PR_PR14Ì65536Ö0 -EXTI_PR_PR15Ì65536Ö0 -EXTI_PR_PR16Ì65536Ö0 -EXTI_PR_PR17Ì65536Ö0 -EXTI_PR_PR19Ì65536Ö0 -EXTI_PR_PR2Ì65536Ö0 -EXTI_PR_PR3Ì65536Ö0 -EXTI_PR_PR4Ì65536Ö0 -EXTI_PR_PR5Ì65536Ö0 -EXTI_PR_PR6Ì65536Ö0 -EXTI_PR_PR7Ì65536Ö0 -EXTI_PR_PR8Ì65536Ö0 -EXTI_PR_PR9Ì65536Ö0 -EXTI_RTSR_TR0Ì65536Ö0 -EXTI_RTSR_TR1Ì65536Ö0 -EXTI_RTSR_TR10Ì65536Ö0 -EXTI_RTSR_TR11Ì65536Ö0 -EXTI_RTSR_TR12Ì65536Ö0 -EXTI_RTSR_TR13Ì65536Ö0 -EXTI_RTSR_TR14Ì65536Ö0 -EXTI_RTSR_TR15Ì65536Ö0 -EXTI_RTSR_TR16Ì65536Ö0 -EXTI_RTSR_TR17Ì65536Ö0 -EXTI_RTSR_TR19Ì65536Ö0 -EXTI_RTSR_TR2Ì65536Ö0 -EXTI_RTSR_TR3Ì65536Ö0 -EXTI_RTSR_TR4Ì65536Ö0 -EXTI_RTSR_TR5Ì65536Ö0 -EXTI_RTSR_TR6Ì65536Ö0 -EXTI_RTSR_TR7Ì65536Ö0 -EXTI_RTSR_TR8Ì65536Ö0 -EXTI_RTSR_TR9Ì65536Ö0 -EXTI_SWIER_SWIER0Ì65536Ö0 -EXTI_SWIER_SWIER1Ì65536Ö0 -EXTI_SWIER_SWIER10Ì65536Ö0 -EXTI_SWIER_SWIER11Ì65536Ö0 -EXTI_SWIER_SWIER12Ì65536Ö0 -EXTI_SWIER_SWIER13Ì65536Ö0 -EXTI_SWIER_SWIER14Ì65536Ö0 -EXTI_SWIER_SWIER15Ì65536Ö0 -EXTI_SWIER_SWIER16Ì65536Ö0 -EXTI_SWIER_SWIER17Ì65536Ö0 -EXTI_SWIER_SWIER19Ì65536Ö0 -EXTI_SWIER_SWIER2Ì65536Ö0 -EXTI_SWIER_SWIER3Ì65536Ö0 -EXTI_SWIER_SWIER4Ì65536Ö0 -EXTI_SWIER_SWIER5Ì65536Ö0 -EXTI_SWIER_SWIER6Ì65536Ö0 -EXTI_SWIER_SWIER7Ì65536Ö0 -EXTI_SWIER_SWIER8Ì65536Ö0 -EXTI_SWIER_SWIER9Ì65536Ö0 -F0_IRQ_HANDLERSÌ65536Ö0 -FLASHÌ65536Ö0 -FLASH_ACR_LATENCYÌ65536Ö0 -FLASH_ACR_PRFTBEÌ65536Ö0 -FLASH_ACR_PRFTBSÌ65536Ö0 -FLASH_AR_FARÌ65536Ö0 -FLASH_BASEÌ65536Ö0 -FLASH_CR_EOPIEÌ65536Ö0 -FLASH_CR_ERRIEÌ65536Ö0 -FLASH_CR_LOCKÌ65536Ö0 -FLASH_CR_MERÌ65536Ö0 -FLASH_CR_OBL_LAUNCHÌ65536Ö0 -FLASH_CR_OPTERÌ65536Ö0 -FLASH_CR_OPTPGÌ65536Ö0 -FLASH_CR_OPTWREÌ65536Ö0 -FLASH_CR_PERÌ65536Ö0 -FLASH_CR_PGÌ65536Ö0 -FLASH_CR_STRTÌ65536Ö0 -FLASH_FKEY1Ì65536Ö0 -FLASH_FKEY2Ì65536Ö0 -FLASH_KEYR_FKEYRÌ65536Ö0 -FLASH_OBR_BOOT1Ì65536Ö0 -FLASH_OBR_IWDG_SWÌ65536Ö0 -FLASH_OBR_OPTERRÌ65536Ö0 -FLASH_OBR_RDPRT1Ì65536Ö0 -FLASH_OBR_RDPRT2Ì65536Ö0 -FLASH_OBR_USERÌ65536Ö0 -FLASH_OBR_VDDA_ANALOGÌ65536Ö0 -FLASH_OBR_VDDA_MONITORÌ65536Ö0 -FLASH_OBR_nBOOT1Ì65536Ö0 -FLASH_OBR_nRST_STDBYÌ65536Ö0 -FLASH_OBR_nRST_STOPÌ65536Ö0 -FLASH_OPTKEY1Ì65536Ö0 -FLASH_OPTKEY2Ì65536Ö0 -FLASH_OPTKEYR_OPTKEYRÌ65536Ö0 -FLASH_R_BASEÌ65536Ö0 -FLASH_SR_BSYÌ65536Ö0 -FLASH_SR_EOPÌ65536Ö0 -FLASH_SR_PGERRÌ65536Ö0 -FLASH_SR_WRPERRÌ65536Ö0 -FLASH_SR_WRPRTERRÌ65536Ö0 -FLASH_WRPR_WRPÌ65536Ö0 -GPIOAÌ65536Ö0 -GPIOA_BASEÌ65536Ö0 -GPIOBÌ65536Ö0 -GPIOB_BASEÌ65536Ö0 -GPIOCÌ65536Ö0 -GPIOC_BASEÌ65536Ö0 -GPIOFÌ65536Ö0 -GPIOF_BASEÌ65536Ö0 -GPIO_AFRH_AFRH0Ì65536Ö0 -GPIO_AFRH_AFRH1Ì65536Ö0 -GPIO_AFRH_AFRH2Ì65536Ö0 -GPIO_AFRH_AFRH3Ì65536Ö0 -GPIO_AFRH_AFRH4Ì65536Ö0 -GPIO_AFRH_AFRH5Ì65536Ö0 -GPIO_AFRH_AFRH6Ì65536Ö0 -GPIO_AFRH_AFRH7Ì65536Ö0 -GPIO_AFRL_AFRL0Ì65536Ö0 -GPIO_AFRL_AFRL1Ì65536Ö0 -GPIO_AFRL_AFRL2Ì65536Ö0 -GPIO_AFRL_AFRL3Ì65536Ö0 -GPIO_AFRL_AFRL4Ì65536Ö0 -GPIO_AFRL_AFRL5Ì65536Ö0 -GPIO_AFRL_AFRL6Ì65536Ö0 -GPIO_AFRL_AFRL7Ì65536Ö0 -GPIO_BRR_BR_0Ì65536Ö0 -GPIO_BRR_BR_1Ì65536Ö0 -GPIO_BRR_BR_10Ì65536Ö0 -GPIO_BRR_BR_11Ì65536Ö0 -GPIO_BRR_BR_12Ì65536Ö0 -GPIO_BRR_BR_13Ì65536Ö0 -GPIO_BRR_BR_14Ì65536Ö0 -GPIO_BRR_BR_15Ì65536Ö0 -GPIO_BRR_BR_2Ì65536Ö0 -GPIO_BRR_BR_3Ì65536Ö0 -GPIO_BRR_BR_4Ì65536Ö0 -GPIO_BRR_BR_5Ì65536Ö0 -GPIO_BRR_BR_6Ì65536Ö0 -GPIO_BRR_BR_7Ì65536Ö0 -GPIO_BRR_BR_8Ì65536Ö0 -GPIO_BRR_BR_9Ì65536Ö0 -GPIO_BSRR_BR_0Ì65536Ö0 -GPIO_BSRR_BR_1Ì65536Ö0 -GPIO_BSRR_BR_10Ì65536Ö0 -GPIO_BSRR_BR_11Ì65536Ö0 -GPIO_BSRR_BR_12Ì65536Ö0 -GPIO_BSRR_BR_13Ì65536Ö0 -GPIO_BSRR_BR_14Ì65536Ö0 -GPIO_BSRR_BR_15Ì65536Ö0 -GPIO_BSRR_BR_2Ì65536Ö0 -GPIO_BSRR_BR_3Ì65536Ö0 -GPIO_BSRR_BR_4Ì65536Ö0 -GPIO_BSRR_BR_5Ì65536Ö0 -GPIO_BSRR_BR_6Ì65536Ö0 -GPIO_BSRR_BR_7Ì65536Ö0 -GPIO_BSRR_BR_8Ì65536Ö0 -GPIO_BSRR_BR_9Ì65536Ö0 -GPIO_BSRR_BS_0Ì65536Ö0 -GPIO_BSRR_BS_1Ì65536Ö0 -GPIO_BSRR_BS_10Ì65536Ö0 -GPIO_BSRR_BS_11Ì65536Ö0 -GPIO_BSRR_BS_12Ì65536Ö0 -GPIO_BSRR_BS_13Ì65536Ö0 -GPIO_BSRR_BS_14Ì65536Ö0 -GPIO_BSRR_BS_15Ì65536Ö0 -GPIO_BSRR_BS_2Ì65536Ö0 -GPIO_BSRR_BS_3Ì65536Ö0 -GPIO_BSRR_BS_4Ì65536Ö0 -GPIO_BSRR_BS_5Ì65536Ö0 -GPIO_BSRR_BS_6Ì65536Ö0 -GPIO_BSRR_BS_7Ì65536Ö0 -GPIO_BSRR_BS_8Ì65536Ö0 -GPIO_BSRR_BS_9Ì65536Ö0 -GPIO_IDR_0Ì65536Ö0 -GPIO_IDR_1Ì65536Ö0 -GPIO_IDR_10Ì65536Ö0 -GPIO_IDR_11Ì65536Ö0 -GPIO_IDR_12Ì65536Ö0 -GPIO_IDR_13Ì65536Ö0 -GPIO_IDR_14Ì65536Ö0 -GPIO_IDR_15Ì65536Ö0 -GPIO_IDR_2Ì65536Ö0 -GPIO_IDR_3Ì65536Ö0 -GPIO_IDR_4Ì65536Ö0 -GPIO_IDR_5Ì65536Ö0 -GPIO_IDR_6Ì65536Ö0 -GPIO_IDR_7Ì65536Ö0 -GPIO_IDR_8Ì65536Ö0 -GPIO_IDR_9Ì65536Ö0 -GPIO_LCKR_LCK0Ì65536Ö0 -GPIO_LCKR_LCK1Ì65536Ö0 -GPIO_LCKR_LCK10Ì65536Ö0 -GPIO_LCKR_LCK11Ì65536Ö0 -GPIO_LCKR_LCK12Ì65536Ö0 -GPIO_LCKR_LCK13Ì65536Ö0 -GPIO_LCKR_LCK14Ì65536Ö0 -GPIO_LCKR_LCK15Ì65536Ö0 -GPIO_LCKR_LCK2Ì65536Ö0 -GPIO_LCKR_LCK3Ì65536Ö0 -GPIO_LCKR_LCK4Ì65536Ö0 -GPIO_LCKR_LCK5Ì65536Ö0 -GPIO_LCKR_LCK6Ì65536Ö0 -GPIO_LCKR_LCK7Ì65536Ö0 -GPIO_LCKR_LCK8Ì65536Ö0 -GPIO_LCKR_LCK9Ì65536Ö0 -GPIO_LCKR_LCKKÌ65536Ö0 -GPIO_MODER_MODER0Ì65536Ö0 -GPIO_MODER_MODER0_0Ì65536Ö0 -GPIO_MODER_MODER0_1Ì65536Ö0 -GPIO_MODER_MODER0_AFÌ65536Ö0 -GPIO_MODER_MODER0_AIÌ65536Ö0 -GPIO_MODER_MODER0_OÌ65536Ö0 -GPIO_MODER_MODER1Ì65536Ö0 -GPIO_MODER_MODER10Ì65536Ö0 -GPIO_MODER_MODER10_0Ì65536Ö0 -GPIO_MODER_MODER10_1Ì65536Ö0 -GPIO_MODER_MODER10_AFÌ65536Ö0 -GPIO_MODER_MODER10_AIÌ65536Ö0 -GPIO_MODER_MODER10_OÌ65536Ö0 -GPIO_MODER_MODER11Ì65536Ö0 -GPIO_MODER_MODER11_0Ì65536Ö0 -GPIO_MODER_MODER11_1Ì65536Ö0 -GPIO_MODER_MODER11_AFÌ65536Ö0 -GPIO_MODER_MODER11_AIÌ65536Ö0 -GPIO_MODER_MODER11_OÌ65536Ö0 -GPIO_MODER_MODER12Ì65536Ö0 -GPIO_MODER_MODER12_0Ì65536Ö0 -GPIO_MODER_MODER12_1Ì65536Ö0 -GPIO_MODER_MODER12_AFÌ65536Ö0 -GPIO_MODER_MODER12_AIÌ65536Ö0 -GPIO_MODER_MODER12_OÌ65536Ö0 -GPIO_MODER_MODER13Ì65536Ö0 -GPIO_MODER_MODER13_0Ì65536Ö0 -GPIO_MODER_MODER13_1Ì65536Ö0 -GPIO_MODER_MODER13_AFÌ65536Ö0 -GPIO_MODER_MODER13_AIÌ65536Ö0 -GPIO_MODER_MODER13_OÌ65536Ö0 -GPIO_MODER_MODER14Ì65536Ö0 -GPIO_MODER_MODER14_0Ì65536Ö0 -GPIO_MODER_MODER14_1Ì65536Ö0 -GPIO_MODER_MODER14_AFÌ65536Ö0 -GPIO_MODER_MODER14_AIÌ65536Ö0 -GPIO_MODER_MODER14_OÌ65536Ö0 -GPIO_MODER_MODER15Ì65536Ö0 -GPIO_MODER_MODER15_0Ì65536Ö0 -GPIO_MODER_MODER15_1Ì65536Ö0 -GPIO_MODER_MODER15_AFÌ65536Ö0 -GPIO_MODER_MODER15_AIÌ65536Ö0 -GPIO_MODER_MODER15_OÌ65536Ö0 -GPIO_MODER_MODER1_0Ì65536Ö0 -GPIO_MODER_MODER1_1Ì65536Ö0 -GPIO_MODER_MODER1_AFÌ65536Ö0 -GPIO_MODER_MODER1_AIÌ65536Ö0 -GPIO_MODER_MODER1_OÌ65536Ö0 -GPIO_MODER_MODER2Ì65536Ö0 -GPIO_MODER_MODER2_0Ì65536Ö0 -GPIO_MODER_MODER2_1Ì65536Ö0 -GPIO_MODER_MODER2_AFÌ65536Ö0 -GPIO_MODER_MODER2_AIÌ65536Ö0 -GPIO_MODER_MODER2_OÌ65536Ö0 -GPIO_MODER_MODER3Ì65536Ö0 -GPIO_MODER_MODER3_0Ì65536Ö0 -GPIO_MODER_MODER3_1Ì65536Ö0 -GPIO_MODER_MODER3_AFÌ65536Ö0 -GPIO_MODER_MODER3_AIÌ65536Ö0 -GPIO_MODER_MODER3_OÌ65536Ö0 -GPIO_MODER_MODER4Ì65536Ö0 -GPIO_MODER_MODER4_0Ì65536Ö0 -GPIO_MODER_MODER4_1Ì65536Ö0 -GPIO_MODER_MODER4_AFÌ65536Ö0 -GPIO_MODER_MODER4_AIÌ65536Ö0 -GPIO_MODER_MODER4_OÌ65536Ö0 -GPIO_MODER_MODER5Ì65536Ö0 -GPIO_MODER_MODER5_0Ì65536Ö0 -GPIO_MODER_MODER5_1Ì65536Ö0 -GPIO_MODER_MODER5_AFÌ65536Ö0 -GPIO_MODER_MODER5_AIÌ65536Ö0 -GPIO_MODER_MODER5_OÌ65536Ö0 -GPIO_MODER_MODER6Ì65536Ö0 -GPIO_MODER_MODER6_0Ì65536Ö0 -GPIO_MODER_MODER6_1Ì65536Ö0 -GPIO_MODER_MODER6_AFÌ65536Ö0 -GPIO_MODER_MODER6_AIÌ65536Ö0 -GPIO_MODER_MODER6_OÌ65536Ö0 -GPIO_MODER_MODER7Ì65536Ö0 -GPIO_MODER_MODER7_0Ì65536Ö0 -GPIO_MODER_MODER7_1Ì65536Ö0 -GPIO_MODER_MODER7_AFÌ65536Ö0 -GPIO_MODER_MODER7_AIÌ65536Ö0 -GPIO_MODER_MODER7_OÌ65536Ö0 -GPIO_MODER_MODER8Ì65536Ö0 -GPIO_MODER_MODER8_0Ì65536Ö0 -GPIO_MODER_MODER8_1Ì65536Ö0 -GPIO_MODER_MODER8_AFÌ65536Ö0 -GPIO_MODER_MODER8_AIÌ65536Ö0 -GPIO_MODER_MODER8_OÌ65536Ö0 -GPIO_MODER_MODER9Ì65536Ö0 -GPIO_MODER_MODER9_0Ì65536Ö0 -GPIO_MODER_MODER9_1Ì65536Ö0 -GPIO_MODER_MODER9_AFÌ65536Ö0 -GPIO_MODER_MODER9_AIÌ65536Ö0 -GPIO_MODER_MODER9_OÌ65536Ö0 -GPIO_ODR_0Ì65536Ö0 -GPIO_ODR_1Ì65536Ö0 -GPIO_ODR_10Ì65536Ö0 -GPIO_ODR_11Ì65536Ö0 -GPIO_ODR_12Ì65536Ö0 -GPIO_ODR_13Ì65536Ö0 -GPIO_ODR_14Ì65536Ö0 -GPIO_ODR_15Ì65536Ö0 -GPIO_ODR_2Ì65536Ö0 -GPIO_ODR_3Ì65536Ö0 -GPIO_ODR_4Ì65536Ö0 -GPIO_ODR_5Ì65536Ö0 -GPIO_ODR_6Ì65536Ö0 -GPIO_ODR_7Ì65536Ö0 -GPIO_ODR_8Ì65536Ö0 -GPIO_ODR_9Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR0_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR0_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR10Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR10_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR10_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR11Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR11_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR11_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR12Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR12_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR12_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR13Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR13_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR13_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR14Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR14_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR14_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR15Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR15_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR15_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR1_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR1_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR2Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR2_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR2_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR3Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR3_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR3_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR4Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR4_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR4_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR5Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR5_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR5_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR6Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR6_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR6_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR7Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR7_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR7_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR8Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR8_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR8_1Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR9Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR9_0Ì65536Ö0 -GPIO_OSPEEDER_OSPEEDR9_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR0_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR0_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR10Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR10_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR10_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR11Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR11_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR11_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR12Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR12_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR12_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR13Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR13_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR13_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR14Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR14_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR14_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR15Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR15_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR15_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR1_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR1_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR2Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR2_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR2_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR3Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR3_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR3_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR4Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR4_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR4_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR5Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR5_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR5_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR6Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR6_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR6_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR7Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR7_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR7_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR8Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR8_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR8_1Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR9Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR9_0Ì65536Ö0 -GPIO_OSPEEDR_OSPEEDR9_1Ì65536Ö0 -GPIO_OTYPER_OT_0Ì65536Ö0 -GPIO_OTYPER_OT_1Ì65536Ö0 -GPIO_OTYPER_OT_10Ì65536Ö0 -GPIO_OTYPER_OT_11Ì65536Ö0 -GPIO_OTYPER_OT_12Ì65536Ö0 -GPIO_OTYPER_OT_13Ì65536Ö0 -GPIO_OTYPER_OT_14Ì65536Ö0 -GPIO_OTYPER_OT_15Ì65536Ö0 -GPIO_OTYPER_OT_2Ì65536Ö0 -GPIO_OTYPER_OT_3Ì65536Ö0 -GPIO_OTYPER_OT_4Ì65536Ö0 -GPIO_OTYPER_OT_5Ì65536Ö0 -GPIO_OTYPER_OT_6Ì65536Ö0 -GPIO_OTYPER_OT_7Ì65536Ö0 -GPIO_OTYPER_OT_8Ì65536Ö0 -GPIO_OTYPER_OT_9Ì65536Ö0 -GPIO_PUPDR_PUPDR0Ì65536Ö0 -GPIO_PUPDR_PUPDR0_0Ì65536Ö0 -GPIO_PUPDR_PUPDR0_1Ì65536Ö0 -GPIO_PUPDR_PUPDR1Ì65536Ö0 -GPIO_PUPDR_PUPDR10Ì65536Ö0 -GPIO_PUPDR_PUPDR10_0Ì65536Ö0 -GPIO_PUPDR_PUPDR10_1Ì65536Ö0 -GPIO_PUPDR_PUPDR11Ì65536Ö0 -GPIO_PUPDR_PUPDR11_0Ì65536Ö0 -GPIO_PUPDR_PUPDR11_1Ì65536Ö0 -GPIO_PUPDR_PUPDR12Ì65536Ö0 -GPIO_PUPDR_PUPDR12_0Ì65536Ö0 -GPIO_PUPDR_PUPDR12_1Ì65536Ö0 -GPIO_PUPDR_PUPDR13Ì65536Ö0 -GPIO_PUPDR_PUPDR13_0Ì65536Ö0 -GPIO_PUPDR_PUPDR13_1Ì65536Ö0 -GPIO_PUPDR_PUPDR14Ì65536Ö0 -GPIO_PUPDR_PUPDR14_0Ì65536Ö0 -GPIO_PUPDR_PUPDR14_1Ì65536Ö0 -GPIO_PUPDR_PUPDR15Ì65536Ö0 -GPIO_PUPDR_PUPDR15_0Ì65536Ö0 -GPIO_PUPDR_PUPDR15_1Ì65536Ö0 -GPIO_PUPDR_PUPDR1_0Ì65536Ö0 -GPIO_PUPDR_PUPDR1_1Ì65536Ö0 -GPIO_PUPDR_PUPDR2Ì65536Ö0 -GPIO_PUPDR_PUPDR2_0Ì65536Ö0 -GPIO_PUPDR_PUPDR2_1Ì65536Ö0 -GPIO_PUPDR_PUPDR3Ì65536Ö0 -GPIO_PUPDR_PUPDR3_0Ì65536Ö0 -GPIO_PUPDR_PUPDR3_1Ì65536Ö0 -GPIO_PUPDR_PUPDR4Ì65536Ö0 -GPIO_PUPDR_PUPDR4_0Ì65536Ö0 -GPIO_PUPDR_PUPDR4_1Ì65536Ö0 -GPIO_PUPDR_PUPDR5Ì65536Ö0 -GPIO_PUPDR_PUPDR5_0Ì65536Ö0 -GPIO_PUPDR_PUPDR5_1Ì65536Ö0 -GPIO_PUPDR_PUPDR6Ì65536Ö0 -GPIO_PUPDR_PUPDR6_0Ì65536Ö0 -GPIO_PUPDR_PUPDR6_1Ì65536Ö0 -GPIO_PUPDR_PUPDR7Ì65536Ö0 -GPIO_PUPDR_PUPDR7_0Ì65536Ö0 -GPIO_PUPDR_PUPDR7_1Ì65536Ö0 -GPIO_PUPDR_PUPDR8Ì65536Ö0 -GPIO_PUPDR_PUPDR8_0Ì65536Ö0 -GPIO_PUPDR_PUPDR8_1Ì65536Ö0 -GPIO_PUPDR_PUPDR9Ì65536Ö0 -GPIO_PUPDR_PUPDR9_0Ì65536Ö0 -GPIO_PUPDR_PUPDR9_1Ì65536Ö0 -I2C1Ì65536Ö0 -I2C1_BASEÌ65536Ö0 -I2C_CR1_ADDRIEÌ65536Ö0 -I2C_CR1_ALERTENÌ65536Ö0 -I2C_CR1_ANFOFFÌ65536Ö0 -I2C_CR1_DFNÌ65536Ö0 -I2C_CR1_ERRIEÌ65536Ö0 -I2C_CR1_GCENÌ65536Ö0 -I2C_CR1_NACKIEÌ65536Ö0 -I2C_CR1_NOSTRETCHÌ65536Ö0 -I2C_CR1_PEÌ65536Ö0 -I2C_CR1_PECENÌ65536Ö0 -I2C_CR1_RXDMAENÌ65536Ö0 -I2C_CR1_RXIEÌ65536Ö0 -I2C_CR1_SBCÌ65536Ö0 -I2C_CR1_SMBDENÌ65536Ö0 -I2C_CR1_SMBHENÌ65536Ö0 -I2C_CR1_STOPIEÌ65536Ö0 -I2C_CR1_SWRSTÌ65536Ö0 -I2C_CR1_TCIEÌ65536Ö0 -I2C_CR1_TXDMAENÌ65536Ö0 -I2C_CR1_TXIEÌ65536Ö0 -I2C_CR1_WUPENÌ65536Ö0 -I2C_CR2_ADD10Ì65536Ö0 -I2C_CR2_AUTOENDÌ65536Ö0 -I2C_CR2_HEAD10RÌ65536Ö0 -I2C_CR2_NACKÌ65536Ö0 -I2C_CR2_NBYTESÌ65536Ö0 -I2C_CR2_PECBYTEÌ65536Ö0 -I2C_CR2_RD_WRNÌ65536Ö0 -I2C_CR2_RELOADÌ65536Ö0 -I2C_CR2_SADDÌ65536Ö0 -I2C_CR2_STARTÌ65536Ö0 -I2C_CR2_STOPÌ65536Ö0 -I2C_ICR_ADDRCFÌ65536Ö0 -I2C_ICR_ALERTCFÌ65536Ö0 -I2C_ICR_ARLOCFÌ65536Ö0 -I2C_ICR_BERRCFÌ65536Ö0 -I2C_ICR_NACKCFÌ65536Ö0 -I2C_ICR_OVRCFÌ65536Ö0 -I2C_ICR_PECCFÌ65536Ö0 -I2C_ICR_STOPCFÌ65536Ö0 -I2C_ICR_TIMOUTCFÌ65536Ö0 -I2C_ISR_ADDCODEÌ65536Ö0 -I2C_ISR_ADDRÌ65536Ö0 -I2C_ISR_ALERTÌ65536Ö0 -I2C_ISR_ARLOÌ65536Ö0 -I2C_ISR_BERRÌ65536Ö0 -I2C_ISR_BUSYÌ65536Ö0 -I2C_ISR_DIRÌ65536Ö0 -I2C_ISR_NACKFÌ65536Ö0 -I2C_ISR_OVRÌ65536Ö0 -I2C_ISR_PECERRÌ65536Ö0 -I2C_ISR_RXNEÌ65536Ö0 -I2C_ISR_STOPFÌ65536Ö0 -I2C_ISR_TCÌ65536Ö0 -I2C_ISR_TCRÌ65536Ö0 -I2C_ISR_TIMEOUTÌ65536Ö0 -I2C_ISR_TXEÌ65536Ö0 -I2C_ISR_TXISÌ65536Ö0 -I2C_OAR1_OA1Ì65536Ö0 -I2C_OAR1_OA1ENÌ65536Ö0 -I2C_OAR1_OA1MODEÌ65536Ö0 -I2C_OAR2_OA2Ì65536Ö0 -I2C_OAR2_OA2ENÌ65536Ö0 -I2C_OAR2_OA2MSKÌ65536Ö0 -I2C_PECR_PECÌ65536Ö0 -I2C_RXDR_RXDATAÌ65536Ö0 -I2C_TIMEOUTR_TEXTENÌ65536Ö0 -I2C_TIMEOUTR_TIDLEÌ65536Ö0 -I2C_TIMEOUTR_TIMEOUTAÌ65536Ö0 -I2C_TIMEOUTR_TIMEOUTBÌ65536Ö0 -I2C_TIMEOUTR_TIMOUTENÌ65536Ö0 -I2C_TIMINGR_PRESCÌ65536Ö0 -I2C_TIMINGR_SCLDELÌ65536Ö0 -I2C_TIMINGR_SCLHÌ65536Ö0 -I2C_TIMINGR_SCLLÌ65536Ö0 -I2C_TIMINGR_SDADELÌ65536Ö0 -I2C_TXDR_TXDATAÌ65536Ö0 -INT16_CÌ131072Í(c)Ö0 -INT16_MAXÌ65536Ö0 -INT16_MINÌ65536Ö0 -INT32_CÌ131072Í(c)Ö0 -INT32_MAXÌ65536Ö0 -INT32_MINÌ65536Ö0 -INT64_CÌ131072Í(c)Ö0 -INT64_MAXÌ65536Ö0 -INT64_MINÌ65536Ö0 -INT8_CÌ131072Í(c)Ö0 -INT8_MAXÌ65536Ö0 -INT8_MINÌ65536Ö0 -INTMAX_CÌ131072Í(c)Ö0 -INTMAX_MAXÌ65536Ö0 -INTMAX_MINÌ65536Ö0 -INTPTR_MAXÌ65536Ö0 -INTPTR_MINÌ65536Ö0 -INT_FAST16_MAXÌ65536Ö0 -INT_FAST16_MINÌ65536Ö0 -INT_FAST32_MAXÌ65536Ö0 -INT_FAST32_MINÌ65536Ö0 -INT_FAST64_MAXÌ65536Ö0 -INT_FAST64_MINÌ65536Ö0 -INT_FAST8_MAXÌ65536Ö0 -INT_FAST8_MINÌ65536Ö0 -INT_LEAST16_MAXÌ65536Ö0 -INT_LEAST16_MINÌ65536Ö0 -INT_LEAST32_MAXÌ65536Ö0 -INT_LEAST32_MINÌ65536Ö0 -INT_LEAST64_MAXÌ65536Ö0 -INT_LEAST64_MINÌ65536Ö0 -INT_LEAST8_MAXÌ65536Ö0 -INT_LEAST8_MINÌ65536Ö0 -IS_ADC_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_ADC_COMMON_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_CAN_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_CEC_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_CRC_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_DMA_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_FUNCTIONAL_STATEÌ131072Í(STATE)Ö0 -IS_GPIO_AF_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_GPIO_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_GPIO_LOCK_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_I2C_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_I2S_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_IRDA_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_IWDG_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_RTC_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_SMARTCARD_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_SMBUS_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_SPI_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_32B_COUNTER_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_BKIN2_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_BREAK_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CC1_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CC2_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CC3_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CC4_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CC5_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CC6_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CCXN_INSTANCEÌ131072Í(INSTANCE,CHANNEL)Ö0 -IS_TIM_CCX_INSTANCEÌ131072Í(INSTANCE,CHANNEL)Ö0 -IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CLOCKSOURCE_ITRX_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CLOCKSOURCE_TIX_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CLOCK_DIVISION_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_CLOCK_SELECT_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_COMMUTATION_EVENT_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_COUNTER_MODE_SELECT_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_DMABURST_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_DMA_CC_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_DMA_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_ENCODER_INTERFACE_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_HALL_INTERFACE_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_MASTER_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_OCXREF_CLEAR_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_REMAP_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_REPETITION_COUNTER_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_SLAVE_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_SYNCHRO_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_TRGO2_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TIM_XOR_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_TSC_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_UART_AUTOBAUDRATE_DETECTION_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_UART_DRIVER_ENABLE_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_UART_HALFDUPLEX_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_UART_HWFLOW_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_UART_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_UART_LIN_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_UART_WAKEUP_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_USART_AUTOBAUDRATE_DETECTION_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_USART_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_USB_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IS_WWDG_ALL_INSTANCEÌ131072Í(INSTANCE)Ö0 -IWDGÌ65536Ö0 -IWDG_BASEÌ65536Ö0 -IWDG_KR_KEYÌ65536Ö0 -IWDG_PR_PRÌ65536Ö0 -IWDG_PR_PR_0Ì65536Ö0 -IWDG_PR_PR_1Ì65536Ö0 -IWDG_PR_PR_2Ì65536Ö0 -IWDG_RLR_RLÌ65536Ö0 -IWDG_SR_PVUÌ65536Ö0 -IWDG_SR_RVUÌ65536Ö0 -IWDG_SR_WVUÌ65536Ö0 -IWDG_WINR_WINÌ65536Ö0 -MODIFY_REGÌ131072Í(REG,CLEARMASK,SETMASK)Ö0 -NULLÌ65536Ö0 -NVICÌ65536Ö0 -NVIC_BASEÌ65536Ö0 -NVIC_IRQ_COUNTÌ65536Ö0 -OBÌ65536Ö0 -OB_BASEÌ65536Ö0 -OB_RDP_RDPÌ65536Ö0 -OB_RDP_nRDPÌ65536Ö0 -OB_USER_USERÌ65536Ö0 -OB_USER_nUSERÌ65536Ö0 -OB_WRP0_WRP0Ì65536Ö0 -OB_WRP0_nWRP0Ì65536Ö0 -OB_WRP1_WRP1Ì65536Ö0 -OB_WRP1_nWRP1Ì65536Ö0 -OB_WRP2_WRP2Ì65536Ö0 -OB_WRP2_nWRP2Ì65536Ö0 -OB_WRP3_WRP3Ì65536Ö0 -OB_WRP3_nWRP3Ì65536Ö0 -PERIPH_BASEÌ65536Ö0 -PTRDIFF_MAXÌ65536Ö0 -PTRDIFF_MINÌ65536Ö0 -PVD_IRQHandlerÌ65536Ö0 -PVD_IRQnÌ65536Ö0 -PWRÌ65536Ö0 -PWR_BASEÌ65536Ö0 -PWR_CR_CSBFÌ65536Ö0 -PWR_CR_CWUFÌ65536Ö0 -PWR_CR_DBPÌ65536Ö0 -PWR_CR_LPDSÌ65536Ö0 -PWR_CR_PDDSÌ65536Ö0 -PWR_CR_PLSÌ65536Ö0 -PWR_CR_PLS_0Ì65536Ö0 -PWR_CR_PLS_1Ì65536Ö0 -PWR_CR_PLS_2Ì65536Ö0 -PWR_CR_PLS_LEV0Ì65536Ö0 -PWR_CR_PLS_LEV1Ì65536Ö0 -PWR_CR_PLS_LEV2Ì65536Ö0 -PWR_CR_PLS_LEV3Ì65536Ö0 -PWR_CR_PLS_LEV4Ì65536Ö0 -PWR_CR_PLS_LEV5Ì65536Ö0 -PWR_CR_PLS_LEV6Ì65536Ö0 -PWR_CR_PLS_LEV7Ì65536Ö0 -PWR_CR_PVDEÌ65536Ö0 -PWR_CSR_EWUP1Ì65536Ö0 -PWR_CSR_EWUP2Ì65536Ö0 -PWR_CSR_EWUP3Ì65536Ö0 -PWR_CSR_EWUP4Ì65536Ö0 -PWR_CSR_EWUP5Ì65536Ö0 -PWR_CSR_EWUP6Ì65536Ö0 -PWR_CSR_EWUP7Ì65536Ö0 -PWR_CSR_EWUP8Ì65536Ö0 -PWR_CSR_PVDOÌ65536Ö0 -PWR_CSR_SBFÌ65536Ö0 -PWR_CSR_VREFINTRDYFÌ65536Ö0 -PWR_CSR_WUFÌ65536Ö0 -RCCÌ65536Ö0 -RCC_AHBENR_CRCENÌ65536Ö0 -RCC_AHBENR_DMA1ENÌ65536Ö0 -RCC_AHBENR_DMAENÌ65536Ö0 -RCC_AHBENR_FLITFENÌ65536Ö0 -RCC_AHBENR_GPIOAENÌ65536Ö0 -RCC_AHBENR_GPIOBENÌ65536Ö0 -RCC_AHBENR_GPIOCENÌ65536Ö0 -RCC_AHBENR_GPIOFENÌ65536Ö0 -RCC_AHBENR_SRAMENÌ65536Ö0 -RCC_AHBENR_TSCENÌ65536Ö0 -RCC_AHBENR_TSENÌ65536Ö0 -RCC_AHBRSTR_GPIOARSTÌ65536Ö0 -RCC_AHBRSTR_GPIOBRSTÌ65536Ö0 -RCC_AHBRSTR_GPIOCRSTÌ65536Ö0 -RCC_AHBRSTR_GPIOFRSTÌ65536Ö0 -RCC_AHBRSTR_TSCRSTÌ65536Ö0 -RCC_AHBRSTR_TSRSTÌ65536Ö0 -RCC_APB1ENR_CANENÌ65536Ö0 -RCC_APB1ENR_CECENÌ65536Ö0 -RCC_APB1ENR_CRSENÌ65536Ö0 -RCC_APB1ENR_DACENÌ65536Ö0 -RCC_APB1ENR_I2C1ENÌ65536Ö0 -RCC_APB1ENR_I2C2ENÌ65536Ö0 -RCC_APB1ENR_PWRENÌ65536Ö0 -RCC_APB1ENR_SPI2ENÌ65536Ö0 -RCC_APB1ENR_TIM14ENÌ65536Ö0 -RCC_APB1ENR_TIM2ENÌ65536Ö0 -RCC_APB1ENR_TIM3ENÌ65536Ö0 -RCC_APB1ENR_USART2ENÌ65536Ö0 -RCC_APB1ENR_USART3ENÌ65536Ö0 -RCC_APB1ENR_USART4ENÌ65536Ö0 -RCC_APB1ENR_USBENÌ65536Ö0 -RCC_APB1ENR_WWDGENÌ65536Ö0 -RCC_APB1RSTR_CANRSTÌ65536Ö0 -RCC_APB1RSTR_CECRSTÌ65536Ö0 -RCC_APB1RSTR_CRSRSTÌ65536Ö0 -RCC_APB1RSTR_DACRSTÌ65536Ö0 -RCC_APB1RSTR_I2C1RSTÌ65536Ö0 -RCC_APB1RSTR_I2C2RSTÌ65536Ö0 -RCC_APB1RSTR_PWRRSTÌ65536Ö0 -RCC_APB1RSTR_SPI2RSTÌ65536Ö0 -RCC_APB1RSTR_TIM14RSTÌ65536Ö0 -RCC_APB1RSTR_TIM2RSTÌ65536Ö0 -RCC_APB1RSTR_TIM3RSTÌ65536Ö0 -RCC_APB1RSTR_USART2RSTÌ65536Ö0 -RCC_APB1RSTR_USART3RSTÌ65536Ö0 -RCC_APB1RSTR_USART4RSTÌ65536Ö0 -RCC_APB1RSTR_USBRSTÌ65536Ö0 -RCC_APB1RSTR_WWDGRSTÌ65536Ö0 -RCC_APB2ENR_ADC1ENÌ65536Ö0 -RCC_APB2ENR_ADCENÌ65536Ö0 -RCC_APB2ENR_DBGMCUENÌ65536Ö0 -RCC_APB2ENR_SPI1ENÌ65536Ö0 -RCC_APB2ENR_SYSCFGCOMPENÌ65536Ö0 -RCC_APB2ENR_SYSCFGENÌ65536Ö0 -RCC_APB2ENR_TIM16ENÌ65536Ö0 -RCC_APB2ENR_TIM17ENÌ65536Ö0 -RCC_APB2ENR_TIM1ENÌ65536Ö0 -RCC_APB2ENR_USART1ENÌ65536Ö0 -RCC_APB2RSTR_ADC1RSTÌ65536Ö0 -RCC_APB2RSTR_ADCRSTÌ65536Ö0 -RCC_APB2RSTR_DBGMCURSTÌ65536Ö0 -RCC_APB2RSTR_SPI1RSTÌ65536Ö0 -RCC_APB2RSTR_SYSCFGRSTÌ65536Ö0 -RCC_APB2RSTR_TIM16RSTÌ65536Ö0 -RCC_APB2RSTR_TIM17RSTÌ65536Ö0 -RCC_APB2RSTR_TIM1RSTÌ65536Ö0 -RCC_APB2RSTR_USART1RSTÌ65536Ö0 -RCC_BASEÌ65536Ö0 -RCC_BDCR_BDRSTÌ65536Ö0 -RCC_BDCR_LSEBYPÌ65536Ö0 -RCC_BDCR_LSEDRVÌ65536Ö0 -RCC_BDCR_LSEDRV_0Ì65536Ö0 -RCC_BDCR_LSEDRV_1Ì65536Ö0 -RCC_BDCR_LSEONÌ65536Ö0 -RCC_BDCR_LSERDYÌ65536Ö0 -RCC_BDCR_RTCENÌ65536Ö0 -RCC_BDCR_RTCSELÌ65536Ö0 -RCC_BDCR_RTCSEL_0Ì65536Ö0 -RCC_BDCR_RTCSEL_1Ì65536Ö0 -RCC_BDCR_RTCSEL_HSEÌ65536Ö0 -RCC_BDCR_RTCSEL_LSEÌ65536Ö0 -RCC_BDCR_RTCSEL_LSIÌ65536Ö0 -RCC_BDCR_RTCSEL_NOCLOCKÌ65536Ö0 -RCC_CFGR2_PREDIVÌ65536Ö0 -RCC_CFGR2_PREDIV_0Ì65536Ö0 -RCC_CFGR2_PREDIV_1Ì65536Ö0 -RCC_CFGR2_PREDIV_2Ì65536Ö0 -RCC_CFGR2_PREDIV_3Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV1Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV10Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV11Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV12Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV13Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV14Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV15Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV16Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV2Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV3Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV4Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV5Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV6Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV7Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV8Ì65536Ö0 -RCC_CFGR2_PREDIV_DIV9Ì65536Ö0 -RCC_CFGR3_CECSWÌ65536Ö0 -RCC_CFGR3_CECSW_HSI_DIV244Ì65536Ö0 -RCC_CFGR3_CECSW_LSEÌ65536Ö0 -RCC_CFGR3_I2C1SWÌ65536Ö0 -RCC_CFGR3_I2C1SW_HSIÌ65536Ö0 -RCC_CFGR3_I2C1SW_SYSCLKÌ65536Ö0 -RCC_CFGR3_USART1SWÌ65536Ö0 -RCC_CFGR3_USART1SW_0Ì65536Ö0 -RCC_CFGR3_USART1SW_1Ì65536Ö0 -RCC_CFGR3_USART1SW_HSIÌ65536Ö0 -RCC_CFGR3_USART1SW_LSEÌ65536Ö0 -RCC_CFGR3_USART1SW_PCLKÌ65536Ö0 -RCC_CFGR3_USART1SW_SYSCLKÌ65536Ö0 -RCC_CFGR3_USART2SWÌ65536Ö0 -RCC_CFGR3_USART2SW_0Ì65536Ö0 -RCC_CFGR3_USART2SW_1Ì65536Ö0 -RCC_CFGR3_USART2SW_HSIÌ65536Ö0 -RCC_CFGR3_USART2SW_LSEÌ65536Ö0 -RCC_CFGR3_USART2SW_PCLKÌ65536Ö0 -RCC_CFGR3_USART2SW_SYSCLKÌ65536Ö0 -RCC_CFGR3_USBSWÌ65536Ö0 -RCC_CFGR3_USBSW_HSI48Ì65536Ö0 -RCC_CFGR3_USBSW_PLLCLKÌ65536Ö0 -RCC_CFGR_ADCPREÌ65536Ö0 -RCC_CFGR_ADCPRE_DIV2Ì65536Ö0 -RCC_CFGR_ADCPRE_DIV4Ì65536Ö0 -RCC_CFGR_HPREÌ65536Ö0 -RCC_CFGR_HPRE_0Ì65536Ö0 -RCC_CFGR_HPRE_1Ì65536Ö0 -RCC_CFGR_HPRE_2Ì65536Ö0 -RCC_CFGR_HPRE_3Ì65536Ö0 -RCC_CFGR_HPRE_DIV1Ì65536Ö0 -RCC_CFGR_HPRE_DIV128Ì65536Ö0 -RCC_CFGR_HPRE_DIV16Ì65536Ö0 -RCC_CFGR_HPRE_DIV2Ì65536Ö0 -RCC_CFGR_HPRE_DIV256Ì65536Ö0 -RCC_CFGR_HPRE_DIV4Ì65536Ö0 -RCC_CFGR_HPRE_DIV512Ì65536Ö0 -RCC_CFGR_HPRE_DIV64Ì65536Ö0 -RCC_CFGR_HPRE_DIV8Ì65536Ö0 -RCC_CFGR_MCOÌ65536Ö0 -RCC_CFGR_MCOPREÌ65536Ö0 -RCC_CFGR_MCOPRE_DIV1Ì65536Ö0 -RCC_CFGR_MCOPRE_DIV128Ì65536Ö0 -RCC_CFGR_MCOPRE_DIV16Ì65536Ö0 -RCC_CFGR_MCOPRE_DIV2Ì65536Ö0 -RCC_CFGR_MCOPRE_DIV32Ì65536Ö0 -RCC_CFGR_MCOPRE_DIV4Ì65536Ö0 -RCC_CFGR_MCOPRE_DIV64Ì65536Ö0 -RCC_CFGR_MCOPRE_DIV8Ì65536Ö0 -RCC_CFGR_MCO_0Ì65536Ö0 -RCC_CFGR_MCO_1Ì65536Ö0 -RCC_CFGR_MCO_2Ì65536Ö0 -RCC_CFGR_MCO_3Ì65536Ö0 -RCC_CFGR_MCO_HSEÌ65536Ö0 -RCC_CFGR_MCO_HSIÌ65536Ö0 -RCC_CFGR_MCO_HSI14Ì65536Ö0 -RCC_CFGR_MCO_HSI48Ì65536Ö0 -RCC_CFGR_MCO_LSEÌ65536Ö0 -RCC_CFGR_MCO_LSIÌ65536Ö0 -RCC_CFGR_MCO_NOCLOCKÌ65536Ö0 -RCC_CFGR_MCO_PLLÌ65536Ö0 -RCC_CFGR_MCO_SYSCLKÌ65536Ö0 -RCC_CFGR_PLLMULÌ65536Ö0 -RCC_CFGR_PLLMUL10Ì65536Ö0 -RCC_CFGR_PLLMUL11Ì65536Ö0 -RCC_CFGR_PLLMUL12Ì65536Ö0 -RCC_CFGR_PLLMUL13Ì65536Ö0 -RCC_CFGR_PLLMUL14Ì65536Ö0 -RCC_CFGR_PLLMUL15Ì65536Ö0 -RCC_CFGR_PLLMUL16Ì65536Ö0 -RCC_CFGR_PLLMUL2Ì65536Ö0 -RCC_CFGR_PLLMUL3Ì65536Ö0 -RCC_CFGR_PLLMUL4Ì65536Ö0 -RCC_CFGR_PLLMUL5Ì65536Ö0 -RCC_CFGR_PLLMUL6Ì65536Ö0 -RCC_CFGR_PLLMUL7Ì65536Ö0 -RCC_CFGR_PLLMUL8Ì65536Ö0 -RCC_CFGR_PLLMUL9Ì65536Ö0 -RCC_CFGR_PLLMUL_0Ì65536Ö0 -RCC_CFGR_PLLMUL_1Ì65536Ö0 -RCC_CFGR_PLLMUL_2Ì65536Ö0 -RCC_CFGR_PLLMUL_3Ì65536Ö0 -RCC_CFGR_PLLNODIVÌ65536Ö0 -RCC_CFGR_PLLSRCÌ65536Ö0 -RCC_CFGR_PLLSRC_HSE_PREDIVÌ65536Ö0 -RCC_CFGR_PLLSRC_HSI48_PREDIVÌ65536Ö0 -RCC_CFGR_PLLSRC_HSI_DIV2Ì65536Ö0 -RCC_CFGR_PLLSRC_HSI_PREDIVÌ65536Ö0 -RCC_CFGR_PLLXTPREÌ65536Ö0 -RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV1Ì65536Ö0 -RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV2Ì65536Ö0 -RCC_CFGR_PPREÌ65536Ö0 -RCC_CFGR_PPRE_0Ì65536Ö0 -RCC_CFGR_PPRE_1Ì65536Ö0 -RCC_CFGR_PPRE_2Ì65536Ö0 -RCC_CFGR_PPRE_DIV1Ì65536Ö0 -RCC_CFGR_PPRE_DIV16Ì65536Ö0 -RCC_CFGR_PPRE_DIV2Ì65536Ö0 -RCC_CFGR_PPRE_DIV4Ì65536Ö0 -RCC_CFGR_PPRE_DIV8Ì65536Ö0 -RCC_CFGR_SWÌ65536Ö0 -RCC_CFGR_SWSÌ65536Ö0 -RCC_CFGR_SWS_0Ì65536Ö0 -RCC_CFGR_SWS_1Ì65536Ö0 -RCC_CFGR_SWS_HSEÌ65536Ö0 -RCC_CFGR_SWS_HSIÌ65536Ö0 -RCC_CFGR_SWS_HSI48Ì65536Ö0 -RCC_CFGR_SWS_PLLÌ65536Ö0 -RCC_CFGR_SW_0Ì65536Ö0 -RCC_CFGR_SW_1Ì65536Ö0 -RCC_CFGR_SW_HSEÌ65536Ö0 -RCC_CFGR_SW_HSIÌ65536Ö0 -RCC_CFGR_SW_HSI48Ì65536Ö0 -RCC_CFGR_SW_PLLÌ65536Ö0 -RCC_CFGR_USBPREÌ65536Ö0 -RCC_CIR_CSSCÌ65536Ö0 -RCC_CIR_CSSFÌ65536Ö0 -RCC_CIR_HSERDYCÌ65536Ö0 -RCC_CIR_HSERDYFÌ65536Ö0 -RCC_CIR_HSERDYIEÌ65536Ö0 -RCC_CIR_HSI14RDYCÌ65536Ö0 -RCC_CIR_HSI14RDYFÌ65536Ö0 -RCC_CIR_HSI14RDYIEÌ65536Ö0 -RCC_CIR_HSI48RDYCÌ65536Ö0 -RCC_CIR_HSI48RDYFÌ65536Ö0 -RCC_CIR_HSI48RDYIEÌ65536Ö0 -RCC_CIR_HSIRDYCÌ65536Ö0 -RCC_CIR_HSIRDYFÌ65536Ö0 -RCC_CIR_HSIRDYIEÌ65536Ö0 -RCC_CIR_LSERDYCÌ65536Ö0 -RCC_CIR_LSERDYFÌ65536Ö0 -RCC_CIR_LSERDYIEÌ65536Ö0 -RCC_CIR_LSIRDYCÌ65536Ö0 -RCC_CIR_LSIRDYFÌ65536Ö0 -RCC_CIR_LSIRDYIEÌ65536Ö0 -RCC_CIR_PLLRDYCÌ65536Ö0 -RCC_CIR_PLLRDYFÌ65536Ö0 -RCC_CIR_PLLRDYIEÌ65536Ö0 -RCC_CR2_HSI14CALÌ65536Ö0 -RCC_CR2_HSI14DISÌ65536Ö0 -RCC_CR2_HSI14ONÌ65536Ö0 -RCC_CR2_HSI14RDYÌ65536Ö0 -RCC_CR2_HSI14TRIMÌ65536Ö0 -RCC_CR2_HSI48CALÌ65536Ö0 -RCC_CR2_HSI48ONÌ65536Ö0 -RCC_CR2_HSI48RDYÌ65536Ö0 -RCC_CR_CSSONÌ65536Ö0 -RCC_CR_HSEBYPÌ65536Ö0 -RCC_CR_HSEONÌ65536Ö0 -RCC_CR_HSERDYÌ65536Ö0 -RCC_CR_HSICALÌ65536Ö0 -RCC_CR_HSICAL_0Ì65536Ö0 -RCC_CR_HSICAL_1Ì65536Ö0 -RCC_CR_HSICAL_2Ì65536Ö0 -RCC_CR_HSICAL_3Ì65536Ö0 -RCC_CR_HSICAL_4Ì65536Ö0 -RCC_CR_HSICAL_5Ì65536Ö0 -RCC_CR_HSICAL_6Ì65536Ö0 -RCC_CR_HSICAL_7Ì65536Ö0 -RCC_CR_HSIONÌ65536Ö0 -RCC_CR_HSIRDYÌ65536Ö0 -RCC_CR_HSITRIMÌ65536Ö0 -RCC_CR_HSITRIM_0Ì65536Ö0 -RCC_CR_HSITRIM_1Ì65536Ö0 -RCC_CR_HSITRIM_2Ì65536Ö0 -RCC_CR_HSITRIM_3Ì65536Ö0 -RCC_CR_HSITRIM_4Ì65536Ö0 -RCC_CR_PLLONÌ65536Ö0 -RCC_CR_PLLRDYÌ65536Ö0 -RCC_CSR_IWDGRSTFÌ65536Ö0 -RCC_CSR_LPWRRSTFÌ65536Ö0 -RCC_CSR_LSIONÌ65536Ö0 -RCC_CSR_LSIRDYÌ65536Ö0 -RCC_CSR_OBLÌ65536Ö0 -RCC_CSR_OBLRSTFÌ65536Ö0 -RCC_CSR_PINRSTFÌ65536Ö0 -RCC_CSR_PORRSTFÌ65536Ö0 -RCC_CSR_RMVFÌ65536Ö0 -RCC_CSR_SFTRSTFÌ65536Ö0 -RCC_CSR_V18PWRRSTFÌ65536Ö0 -RCC_CSR_WWDGRSTFÌ65536Ö0 -RCC_IRQHandlerÌ65536Ö0 -RCC_IRQnÌ65536Ö0 -READ_BITÌ131072Í(REG,BIT)Ö0 -READ_REGÌ131072Í(REG)Ö0 -RTCÌ65536Ö0 -RTC_ALRMAR_DTÌ65536Ö0 -RTC_ALRMAR_DT_0Ì65536Ö0 -RTC_ALRMAR_DT_1Ì65536Ö0 -RTC_ALRMAR_DUÌ65536Ö0 -RTC_ALRMAR_DU_0Ì65536Ö0 -RTC_ALRMAR_DU_1Ì65536Ö0 -RTC_ALRMAR_DU_2Ì65536Ö0 -RTC_ALRMAR_DU_3Ì65536Ö0 -RTC_ALRMAR_HTÌ65536Ö0 -RTC_ALRMAR_HT_0Ì65536Ö0 -RTC_ALRMAR_HT_1Ì65536Ö0 -RTC_ALRMAR_HUÌ65536Ö0 -RTC_ALRMAR_HU_0Ì65536Ö0 -RTC_ALRMAR_HU_1Ì65536Ö0 -RTC_ALRMAR_HU_2Ì65536Ö0 -RTC_ALRMAR_HU_3Ì65536Ö0 -RTC_ALRMAR_MNTÌ65536Ö0 -RTC_ALRMAR_MNT_0Ì65536Ö0 -RTC_ALRMAR_MNT_1Ì65536Ö0 -RTC_ALRMAR_MNT_2Ì65536Ö0 -RTC_ALRMAR_MNUÌ65536Ö0 -RTC_ALRMAR_MNU_0Ì65536Ö0 -RTC_ALRMAR_MNU_1Ì65536Ö0 -RTC_ALRMAR_MNU_2Ì65536Ö0 -RTC_ALRMAR_MNU_3Ì65536Ö0 -RTC_ALRMAR_MSK1Ì65536Ö0 -RTC_ALRMAR_MSK2Ì65536Ö0 -RTC_ALRMAR_MSK3Ì65536Ö0 -RTC_ALRMAR_MSK4Ì65536Ö0 -RTC_ALRMAR_PMÌ65536Ö0 -RTC_ALRMAR_STÌ65536Ö0 -RTC_ALRMAR_ST_0Ì65536Ö0 -RTC_ALRMAR_ST_1Ì65536Ö0 -RTC_ALRMAR_ST_2Ì65536Ö0 -RTC_ALRMAR_SUÌ65536Ö0 -RTC_ALRMAR_SU_0Ì65536Ö0 -RTC_ALRMAR_SU_1Ì65536Ö0 -RTC_ALRMAR_SU_2Ì65536Ö0 -RTC_ALRMAR_SU_3Ì65536Ö0 -RTC_ALRMAR_WDSELÌ65536Ö0 -RTC_ALRMASSR_MASKSSÌ65536Ö0 -RTC_ALRMASSR_MASKSS_0Ì65536Ö0 -RTC_ALRMASSR_MASKSS_1Ì65536Ö0 -RTC_ALRMASSR_MASKSS_2Ì65536Ö0 -RTC_ALRMASSR_MASKSS_3Ì65536Ö0 -RTC_ALRMASSR_SSÌ65536Ö0 -RTC_BASEÌ65536Ö0 -RTC_BKP0RÌ65536Ö0 -RTC_BKP1RÌ65536Ö0 -RTC_BKP2RÌ65536Ö0 -RTC_BKP3RÌ65536Ö0 -RTC_BKP4RÌ65536Ö0 -RTC_BKP_NUMBERÌ65536Ö0 -RTC_CALR_CALMÌ65536Ö0 -RTC_CALR_CALM_0Ì65536Ö0 -RTC_CALR_CALM_1Ì65536Ö0 -RTC_CALR_CALM_2Ì65536Ö0 -RTC_CALR_CALM_3Ì65536Ö0 -RTC_CALR_CALM_4Ì65536Ö0 -RTC_CALR_CALM_5Ì65536Ö0 -RTC_CALR_CALM_6Ì65536Ö0 -RTC_CALR_CALM_7Ì65536Ö0 -RTC_CALR_CALM_8Ì65536Ö0 -RTC_CALR_CALPÌ65536Ö0 -RTC_CALR_CALW16Ì65536Ö0 -RTC_CALR_CALW8Ì65536Ö0 -RTC_CR_ADD1HÌ65536Ö0 -RTC_CR_ALRAEÌ65536Ö0 -RTC_CR_ALRAIEÌ65536Ö0 -RTC_CR_BCKÌ65536Ö0 -RTC_CR_BYPSHADÌ65536Ö0 -RTC_CR_COEÌ65536Ö0 -RTC_CR_COSELÌ65536Ö0 -RTC_CR_FMTÌ65536Ö0 -RTC_CR_OSELÌ65536Ö0 -RTC_CR_OSEL_0Ì65536Ö0 -RTC_CR_OSEL_1Ì65536Ö0 -RTC_CR_POLÌ65536Ö0 -RTC_CR_REFCKONÌ65536Ö0 -RTC_CR_SUB1HÌ65536Ö0 -RTC_CR_TSEÌ65536Ö0 -RTC_CR_TSEDGEÌ65536Ö0 -RTC_CR_TSIEÌ65536Ö0 -RTC_DR_DTÌ65536Ö0 -RTC_DR_DT_0Ì65536Ö0 -RTC_DR_DT_1Ì65536Ö0 -RTC_DR_DUÌ65536Ö0 -RTC_DR_DU_0Ì65536Ö0 -RTC_DR_DU_1Ì65536Ö0 -RTC_DR_DU_2Ì65536Ö0 -RTC_DR_DU_3Ì65536Ö0 -RTC_DR_MTÌ65536Ö0 -RTC_DR_MUÌ65536Ö0 -RTC_DR_MU_0Ì65536Ö0 -RTC_DR_MU_1Ì65536Ö0 -RTC_DR_MU_2Ì65536Ö0 -RTC_DR_MU_3Ì65536Ö0 -RTC_DR_WDUÌ65536Ö0 -RTC_DR_WDU_0Ì65536Ö0 -RTC_DR_WDU_1Ì65536Ö0 -RTC_DR_WDU_2Ì65536Ö0 -RTC_DR_YTÌ65536Ö0 -RTC_DR_YT_0Ì65536Ö0 -RTC_DR_YT_1Ì65536Ö0 -RTC_DR_YT_2Ì65536Ö0 -RTC_DR_YT_3Ì65536Ö0 -RTC_DR_YUÌ65536Ö0 -RTC_DR_YU_0Ì65536Ö0 -RTC_DR_YU_1Ì65536Ö0 -RTC_DR_YU_2Ì65536Ö0 -RTC_DR_YU_3Ì65536Ö0 -RTC_ISR_ALRAFÌ65536Ö0 -RTC_ISR_ALRAWFÌ65536Ö0 -RTC_ISR_INITÌ65536Ö0 -RTC_ISR_INITFÌ65536Ö0 -RTC_ISR_INITSÌ65536Ö0 -RTC_ISR_RECALPFÌ65536Ö0 -RTC_ISR_RSFÌ65536Ö0 -RTC_ISR_SHPFÌ65536Ö0 -RTC_ISR_TAMP1FÌ65536Ö0 -RTC_ISR_TAMP2FÌ65536Ö0 -RTC_ISR_TSFÌ65536Ö0 -RTC_ISR_TSOVFÌ65536Ö0 -RTC_PRER_PREDIV_AÌ65536Ö0 -RTC_PRER_PREDIV_SÌ65536Ö0 -RTC_SHIFTR_ADD1SÌ65536Ö0 -RTC_SHIFTR_SUBFSÌ65536Ö0 -RTC_SSR_SSÌ65536Ö0 -RTC_TAFCR_ALARMOUTTYPEÌ65536Ö0 -RTC_TAFCR_TAMP1EÌ65536Ö0 -RTC_TAFCR_TAMP1TRGÌ65536Ö0 -RTC_TAFCR_TAMP2EÌ65536Ö0 -RTC_TAFCR_TAMP2TRGÌ65536Ö0 -RTC_TAFCR_TAMPFLTÌ65536Ö0 -RTC_TAFCR_TAMPFLT_0Ì65536Ö0 -RTC_TAFCR_TAMPFLT_1Ì65536Ö0 -RTC_TAFCR_TAMPFREQÌ65536Ö0 -RTC_TAFCR_TAMPFREQ_0Ì65536Ö0 -RTC_TAFCR_TAMPFREQ_1Ì65536Ö0 -RTC_TAFCR_TAMPFREQ_2Ì65536Ö0 -RTC_TAFCR_TAMPIEÌ65536Ö0 -RTC_TAFCR_TAMPPRCHÌ65536Ö0 -RTC_TAFCR_TAMPPRCH_0Ì65536Ö0 -RTC_TAFCR_TAMPPRCH_1Ì65536Ö0 -RTC_TAFCR_TAMPPUDISÌ65536Ö0 -RTC_TAFCR_TAMPTSÌ65536Ö0 -RTC_TR_HTÌ65536Ö0 -RTC_TR_HT_0Ì65536Ö0 -RTC_TR_HT_1Ì65536Ö0 -RTC_TR_HUÌ65536Ö0 -RTC_TR_HU_0Ì65536Ö0 -RTC_TR_HU_1Ì65536Ö0 -RTC_TR_HU_2Ì65536Ö0 -RTC_TR_HU_3Ì65536Ö0 -RTC_TR_MNTÌ65536Ö0 -RTC_TR_MNT_0Ì65536Ö0 -RTC_TR_MNT_1Ì65536Ö0 -RTC_TR_MNT_2Ì65536Ö0 -RTC_TR_MNUÌ65536Ö0 -RTC_TR_MNU_0Ì65536Ö0 -RTC_TR_MNU_1Ì65536Ö0 -RTC_TR_MNU_2Ì65536Ö0 -RTC_TR_MNU_3Ì65536Ö0 -RTC_TR_PMÌ65536Ö0 -RTC_TR_STÌ65536Ö0 -RTC_TR_ST_0Ì65536Ö0 -RTC_TR_ST_1Ì65536Ö0 -RTC_TR_ST_2Ì65536Ö0 -RTC_TR_SUÌ65536Ö0 -RTC_TR_SU_0Ì65536Ö0 -RTC_TR_SU_1Ì65536Ö0 -RTC_TR_SU_2Ì65536Ö0 -RTC_TR_SU_3Ì65536Ö0 -RTC_TSDR_DTÌ65536Ö0 -RTC_TSDR_DT_0Ì65536Ö0 -RTC_TSDR_DT_1Ì65536Ö0 -RTC_TSDR_DUÌ65536Ö0 -RTC_TSDR_DU_0Ì65536Ö0 -RTC_TSDR_DU_1Ì65536Ö0 -RTC_TSDR_DU_2Ì65536Ö0 -RTC_TSDR_DU_3Ì65536Ö0 -RTC_TSDR_MTÌ65536Ö0 -RTC_TSDR_MUÌ65536Ö0 -RTC_TSDR_MU_0Ì65536Ö0 -RTC_TSDR_MU_1Ì65536Ö0 -RTC_TSDR_MU_2Ì65536Ö0 -RTC_TSDR_MU_3Ì65536Ö0 -RTC_TSDR_WDUÌ65536Ö0 -RTC_TSDR_WDU_0Ì65536Ö0 -RTC_TSDR_WDU_1Ì65536Ö0 -RTC_TSDR_WDU_2Ì65536Ö0 -RTC_TSSSR_SSÌ65536Ö0 -RTC_TSTR_HTÌ65536Ö0 -RTC_TSTR_HT_0Ì65536Ö0 -RTC_TSTR_HT_1Ì65536Ö0 -RTC_TSTR_HUÌ65536Ö0 -RTC_TSTR_HU_0Ì65536Ö0 -RTC_TSTR_HU_1Ì65536Ö0 -RTC_TSTR_HU_2Ì65536Ö0 -RTC_TSTR_HU_3Ì65536Ö0 -RTC_TSTR_MNTÌ65536Ö0 -RTC_TSTR_MNT_0Ì65536Ö0 -RTC_TSTR_MNT_1Ì65536Ö0 -RTC_TSTR_MNT_2Ì65536Ö0 -RTC_TSTR_MNUÌ65536Ö0 -RTC_TSTR_MNU_0Ì65536Ö0 -RTC_TSTR_MNU_1Ì65536Ö0 -RTC_TSTR_MNU_2Ì65536Ö0 -RTC_TSTR_MNU_3Ì65536Ö0 -RTC_TSTR_PMÌ65536Ö0 -RTC_TSTR_STÌ65536Ö0 -RTC_TSTR_ST_0Ì65536Ö0 -RTC_TSTR_ST_1Ì65536Ö0 -RTC_TSTR_ST_2Ì65536Ö0 -RTC_TSTR_SUÌ65536Ö0 -RTC_TSTR_SU_0Ì65536Ö0 -RTC_TSTR_SU_1Ì65536Ö0 -RTC_TSTR_SU_2Ì65536Ö0 -RTC_TSTR_SU_3Ì65536Ö0 -RTC_WPR_KEYÌ65536Ö0 -SCBÌ65536Ö0 -SCB_AIRCR_ENDIANESS_MskÌ65536Ö0 -SCB_AIRCR_ENDIANESS_PosÌ65536Ö0 -SCB_AIRCR_SYSRESETREQ_MskÌ65536Ö0 -SCB_AIRCR_SYSRESETREQ_PosÌ65536Ö0 -SCB_AIRCR_VECTCLRACTIVE_MskÌ65536Ö0 -SCB_AIRCR_VECTCLRACTIVE_PosÌ65536Ö0 -SCB_AIRCR_VECTKEYSTAT_MskÌ65536Ö0 -SCB_AIRCR_VECTKEYSTAT_PosÌ65536Ö0 -SCB_AIRCR_VECTKEY_MskÌ65536Ö0 -SCB_AIRCR_VECTKEY_PosÌ65536Ö0 -SCB_BASEÌ65536Ö0 -SCB_CCR_STKALIGN_MskÌ65536Ö0 -SCB_CCR_STKALIGN_PosÌ65536Ö0 -SCB_CCR_UNALIGN_TRP_MskÌ65536Ö0 -SCB_CCR_UNALIGN_TRP_PosÌ65536Ö0 -SCB_CPUID_ARCHITECTURE_MskÌ65536Ö0 -SCB_CPUID_ARCHITECTURE_PosÌ65536Ö0 -SCB_CPUID_IMPLEMENTER_MskÌ65536Ö0 -SCB_CPUID_IMPLEMENTER_PosÌ65536Ö0 -SCB_CPUID_PARTNO_MskÌ65536Ö0 -SCB_CPUID_PARTNO_PosÌ65536Ö0 -SCB_CPUID_REVISION_MskÌ65536Ö0 -SCB_CPUID_REVISION_PosÌ65536Ö0 -SCB_CPUID_VARIANT_MskÌ65536Ö0 -SCB_CPUID_VARIANT_PosÌ65536Ö0 -SCB_ICSR_ISRPENDING_MskÌ65536Ö0 -SCB_ICSR_ISRPENDING_PosÌ65536Ö0 -SCB_ICSR_ISRPREEMPT_MskÌ65536Ö0 -SCB_ICSR_ISRPREEMPT_PosÌ65536Ö0 -SCB_ICSR_NMIPENDSET_MskÌ65536Ö0 -SCB_ICSR_NMIPENDSET_PosÌ65536Ö0 -SCB_ICSR_PENDSTCLR_MskÌ65536Ö0 -SCB_ICSR_PENDSTCLR_PosÌ65536Ö0 -SCB_ICSR_PENDSTSET_MskÌ65536Ö0 -SCB_ICSR_PENDSTSET_PosÌ65536Ö0 -SCB_ICSR_PENDSVCLR_MskÌ65536Ö0 -SCB_ICSR_PENDSVCLR_PosÌ65536Ö0 -SCB_ICSR_PENDSVSET_MskÌ65536Ö0 -SCB_ICSR_PENDSVSET_PosÌ65536Ö0 -SCB_ICSR_VECTACTIVE_MskÌ65536Ö0 -SCB_ICSR_VECTACTIVE_PosÌ65536Ö0 -SCB_ICSR_VECTPENDING_MskÌ65536Ö0 -SCB_ICSR_VECTPENDING_PosÌ65536Ö0 -SCB_SCR_SEVONPEND_MskÌ65536Ö0 -SCB_SCR_SEVONPEND_PosÌ65536Ö0 -SCB_SCR_SLEEPDEEP_MskÌ65536Ö0 -SCB_SCR_SLEEPDEEP_PosÌ65536Ö0 -SCB_SCR_SLEEPONEXIT_MskÌ65536Ö0 -SCB_SCR_SLEEPONEXIT_PosÌ65536Ö0 -SCB_SHCSR_SVCALLPENDED_MskÌ65536Ö0 -SCB_SHCSR_SVCALLPENDED_PosÌ65536Ö0 -SCS_BASEÌ65536Ö0 -SET_BITÌ131072Í(REG,BIT)Ö0 -SIG_ATOMIC_MAXÌ65536Ö0 -SIG_ATOMIC_MINÌ65536Ö0 -SIZE_MAXÌ65536Ö0 -SPI1Ì65536Ö0 -SPI1_BASEÌ65536Ö0 -SPI2Ì65536Ö0 -SPI2_BASEÌ65536Ö0 -SPI_CR1_BIDIMODEÌ65536Ö0 -SPI_CR1_BIDIOEÌ65536Ö0 -SPI_CR1_BRÌ65536Ö0 -SPI_CR1_BR_0Ì65536Ö0 -SPI_CR1_BR_1Ì65536Ö0 -SPI_CR1_BR_2Ì65536Ö0 -SPI_CR1_CPHAÌ65536Ö0 -SPI_CR1_CPOLÌ65536Ö0 -SPI_CR1_CRCENÌ65536Ö0 -SPI_CR1_CRCLÌ65536Ö0 -SPI_CR1_CRCNEXTÌ65536Ö0 -SPI_CR1_LSBFIRSTÌ65536Ö0 -SPI_CR1_MSTRÌ65536Ö0 -SPI_CR1_RXONLYÌ65536Ö0 -SPI_CR1_SPEÌ65536Ö0 -SPI_CR1_SSIÌ65536Ö0 -SPI_CR1_SSMÌ65536Ö0 -SPI_CR2_DSÌ65536Ö0 -SPI_CR2_DS_0Ì65536Ö0 -SPI_CR2_DS_1Ì65536Ö0 -SPI_CR2_DS_2Ì65536Ö0 -SPI_CR2_DS_3Ì65536Ö0 -SPI_CR2_ERRIEÌ65536Ö0 -SPI_CR2_FRFÌ65536Ö0 -SPI_CR2_FRXTHÌ65536Ö0 -SPI_CR2_LDMARXÌ65536Ö0 -SPI_CR2_LDMATXÌ65536Ö0 -SPI_CR2_NSSPÌ65536Ö0 -SPI_CR2_RXDMAENÌ65536Ö0 -SPI_CR2_RXNEIEÌ65536Ö0 -SPI_CR2_SSOEÌ65536Ö0 -SPI_CR2_TXDMAENÌ65536Ö0 -SPI_CR2_TXEIEÌ65536Ö0 -SPI_CRCPR_CRCPOLYÌ65536Ö0 -SPI_DR_DRÌ65536Ö0 -SPI_I2SCFGR_CHLENÌ65536Ö0 -SPI_I2SCFGR_CKPOLÌ65536Ö0 -SPI_I2SCFGR_DATLENÌ65536Ö0 -SPI_I2SCFGR_DATLEN_0Ì65536Ö0 -SPI_I2SCFGR_DATLEN_1Ì65536Ö0 -SPI_I2SCFGR_I2SCFGÌ65536Ö0 -SPI_I2SCFGR_I2SCFG_0Ì65536Ö0 -SPI_I2SCFGR_I2SCFG_1Ì65536Ö0 -SPI_I2SCFGR_I2SEÌ65536Ö0 -SPI_I2SCFGR_I2SMODÌ65536Ö0 -SPI_I2SCFGR_I2SSTDÌ65536Ö0 -SPI_I2SCFGR_I2SSTD_0Ì65536Ö0 -SPI_I2SCFGR_I2SSTD_1Ì65536Ö0 -SPI_I2SCFGR_PCMSYNCÌ65536Ö0 -SPI_I2SPR_I2SDIVÌ65536Ö0 -SPI_I2SPR_MCKOEÌ65536Ö0 -SPI_I2SPR_ODDÌ65536Ö0 -SPI_RXCRCR_RXCRCÌ65536Ö0 -SPI_SR_BSYÌ65536Ö0 -SPI_SR_CHSIDEÌ65536Ö0 -SPI_SR_CRCERRÌ65536Ö0 -SPI_SR_FREÌ65536Ö0 -SPI_SR_FRLVLÌ65536Ö0 -SPI_SR_FRLVL_0Ì65536Ö0 -SPI_SR_FRLVL_1Ì65536Ö0 -SPI_SR_FTLVLÌ65536Ö0 -SPI_SR_FTLVL_0Ì65536Ö0 -SPI_SR_FTLVL_1Ì65536Ö0 -SPI_SR_MODFÌ65536Ö0 -SPI_SR_OVRÌ65536Ö0 -SPI_SR_RXNEÌ65536Ö0 -SPI_SR_TXEÌ65536Ö0 -SPI_SR_UDRÌ65536Ö0 -SPI_TXCRCR_TXCRCÌ65536Ö0 -SRAM_BASEÌ65536Ö0 -STM32F042x6Ì65536Ö0 -SYSCFGÌ65536Ö0 -SYSCFG_BASEÌ65536Ö0 -SYSCFG_CFGR1_ADC_DMA_RMPÌ65536Ö0 -SYSCFG_CFGR1_DMA_RMPÌ65536Ö0 -SYSCFG_CFGR1_I2C_FMP_I2C1Ì65536Ö0 -SYSCFG_CFGR1_I2C_FMP_I2C2Ì65536Ö0 -SYSCFG_CFGR1_I2C_FMP_PA10Ì65536Ö0 -SYSCFG_CFGR1_I2C_FMP_PA9Ì65536Ö0 -SYSCFG_CFGR1_I2C_FMP_PB6Ì65536Ö0 -SYSCFG_CFGR1_I2C_FMP_PB7Ì65536Ö0 -SYSCFG_CFGR1_I2C_FMP_PB8Ì65536Ö0 -SYSCFG_CFGR1_I2C_FMP_PB9Ì65536Ö0 -SYSCFG_CFGR1_MEM_MODEÌ65536Ö0 -SYSCFG_CFGR1_MEM_MODE_0Ì65536Ö0 -SYSCFG_CFGR1_MEM_MODE_1Ì65536Ö0 -SYSCFG_CFGR1_PA11_PA12_RMPÌ65536Ö0 -SYSCFG_CFGR1_TIM16_DMA_RMPÌ65536Ö0 -SYSCFG_CFGR1_TIM17_DMA_RMPÌ65536Ö0 -SYSCFG_CFGR1_USART1RX_DMA_RMPÌ65536Ö0 -SYSCFG_CFGR1_USART1TX_DMA_RMPÌ65536Ö0 -SYSCFG_CFGR2_LOCKUP_LOCKÌ65536Ö0 -SYSCFG_CFGR2_PVD_LOCKÌ65536Ö0 -SYSCFG_CFGR2_SRAM_PARITY_LOCKÌ65536Ö0 -SYSCFG_CFGR2_SRAM_PEÌ65536Ö0 -SYSCFG_CFGR2_SRAM_PEFÌ65536Ö0 -SYSCFG_EXTICR1_EXTI0Ì65536Ö0 -SYSCFG_EXTICR1_EXTI0_PAÌ65536Ö0 -SYSCFG_EXTICR1_EXTI0_PBÌ65536Ö0 -SYSCFG_EXTICR1_EXTI0_PCÌ65536Ö0 -SYSCFG_EXTICR1_EXTI0_PDÌ65536Ö0 -SYSCFG_EXTICR1_EXTI0_PEÌ65536Ö0 -SYSCFG_EXTICR1_EXTI0_PFÌ65536Ö0 -SYSCFG_EXTICR1_EXTI1Ì65536Ö0 -SYSCFG_EXTICR1_EXTI1_PAÌ65536Ö0 -SYSCFG_EXTICR1_EXTI1_PBÌ65536Ö0 -SYSCFG_EXTICR1_EXTI1_PCÌ65536Ö0 -SYSCFG_EXTICR1_EXTI1_PDÌ65536Ö0 -SYSCFG_EXTICR1_EXTI1_PEÌ65536Ö0 -SYSCFG_EXTICR1_EXTI1_PFÌ65536Ö0 -SYSCFG_EXTICR1_EXTI2Ì65536Ö0 -SYSCFG_EXTICR1_EXTI2_PAÌ65536Ö0 -SYSCFG_EXTICR1_EXTI2_PBÌ65536Ö0 -SYSCFG_EXTICR1_EXTI2_PCÌ65536Ö0 -SYSCFG_EXTICR1_EXTI2_PDÌ65536Ö0 -SYSCFG_EXTICR1_EXTI2_PEÌ65536Ö0 -SYSCFG_EXTICR1_EXTI2_PFÌ65536Ö0 -SYSCFG_EXTICR1_EXTI3Ì65536Ö0 -SYSCFG_EXTICR1_EXTI3_PAÌ65536Ö0 -SYSCFG_EXTICR1_EXTI3_PBÌ65536Ö0 -SYSCFG_EXTICR1_EXTI3_PCÌ65536Ö0 -SYSCFG_EXTICR1_EXTI3_PDÌ65536Ö0 -SYSCFG_EXTICR1_EXTI3_PEÌ65536Ö0 -SYSCFG_EXTICR1_EXTI3_PFÌ65536Ö0 -SYSCFG_EXTICR2_EXTI4Ì65536Ö0 -SYSCFG_EXTICR2_EXTI4_PAÌ65536Ö0 -SYSCFG_EXTICR2_EXTI4_PBÌ65536Ö0 -SYSCFG_EXTICR2_EXTI4_PCÌ65536Ö0 -SYSCFG_EXTICR2_EXTI4_PDÌ65536Ö0 -SYSCFG_EXTICR2_EXTI4_PEÌ65536Ö0 -SYSCFG_EXTICR2_EXTI4_PFÌ65536Ö0 -SYSCFG_EXTICR2_EXTI5Ì65536Ö0 -SYSCFG_EXTICR2_EXTI5_PAÌ65536Ö0 -SYSCFG_EXTICR2_EXTI5_PBÌ65536Ö0 -SYSCFG_EXTICR2_EXTI5_PCÌ65536Ö0 -SYSCFG_EXTICR2_EXTI5_PDÌ65536Ö0 -SYSCFG_EXTICR2_EXTI5_PEÌ65536Ö0 -SYSCFG_EXTICR2_EXTI5_PFÌ65536Ö0 -SYSCFG_EXTICR2_EXTI6Ì65536Ö0 -SYSCFG_EXTICR2_EXTI6_PAÌ65536Ö0 -SYSCFG_EXTICR2_EXTI6_PBÌ65536Ö0 -SYSCFG_EXTICR2_EXTI6_PCÌ65536Ö0 -SYSCFG_EXTICR2_EXTI6_PDÌ65536Ö0 -SYSCFG_EXTICR2_EXTI6_PEÌ65536Ö0 -SYSCFG_EXTICR2_EXTI6_PFÌ65536Ö0 -SYSCFG_EXTICR2_EXTI7Ì65536Ö0 -SYSCFG_EXTICR2_EXTI7_PAÌ65536Ö0 -SYSCFG_EXTICR2_EXTI7_PBÌ65536Ö0 -SYSCFG_EXTICR2_EXTI7_PCÌ65536Ö0 -SYSCFG_EXTICR2_EXTI7_PDÌ65536Ö0 -SYSCFG_EXTICR2_EXTI7_PEÌ65536Ö0 -SYSCFG_EXTICR2_EXTI7_PFÌ65536Ö0 -SYSCFG_EXTICR3_EXTI10Ì65536Ö0 -SYSCFG_EXTICR3_EXTI10_PAÌ65536Ö0 -SYSCFG_EXTICR3_EXTI10_PBÌ65536Ö0 -SYSCFG_EXTICR3_EXTI10_PCÌ65536Ö0 -SYSCFG_EXTICR3_EXTI10_PDÌ65536Ö0 -SYSCFG_EXTICR3_EXTI10_PEÌ65536Ö0 -SYSCFG_EXTICR3_EXTI10_PFÌ65536Ö0 -SYSCFG_EXTICR3_EXTI11Ì65536Ö0 -SYSCFG_EXTICR3_EXTI11_PAÌ65536Ö0 -SYSCFG_EXTICR3_EXTI11_PBÌ65536Ö0 -SYSCFG_EXTICR3_EXTI11_PCÌ65536Ö0 -SYSCFG_EXTICR3_EXTI11_PDÌ65536Ö0 -SYSCFG_EXTICR3_EXTI11_PEÌ65536Ö0 -SYSCFG_EXTICR3_EXTI8Ì65536Ö0 -SYSCFG_EXTICR3_EXTI8_PAÌ65536Ö0 -SYSCFG_EXTICR3_EXTI8_PBÌ65536Ö0 -SYSCFG_EXTICR3_EXTI8_PCÌ65536Ö0 -SYSCFG_EXTICR3_EXTI8_PDÌ65536Ö0 -SYSCFG_EXTICR3_EXTI8_PEÌ65536Ö0 -SYSCFG_EXTICR3_EXTI9Ì65536Ö0 -SYSCFG_EXTICR3_EXTI9_PAÌ65536Ö0 -SYSCFG_EXTICR3_EXTI9_PBÌ65536Ö0 -SYSCFG_EXTICR3_EXTI9_PCÌ65536Ö0 -SYSCFG_EXTICR3_EXTI9_PDÌ65536Ö0 -SYSCFG_EXTICR3_EXTI9_PEÌ65536Ö0 -SYSCFG_EXTICR3_EXTI9_PFÌ65536Ö0 -SYSCFG_EXTICR4_EXTI12Ì65536Ö0 -SYSCFG_EXTICR4_EXTI12_PAÌ65536Ö0 -SYSCFG_EXTICR4_EXTI12_PBÌ65536Ö0 -SYSCFG_EXTICR4_EXTI12_PCÌ65536Ö0 -SYSCFG_EXTICR4_EXTI12_PDÌ65536Ö0 -SYSCFG_EXTICR4_EXTI12_PEÌ65536Ö0 -SYSCFG_EXTICR4_EXTI13Ì65536Ö0 -SYSCFG_EXTICR4_EXTI13_PAÌ65536Ö0 -SYSCFG_EXTICR4_EXTI13_PBÌ65536Ö0 -SYSCFG_EXTICR4_EXTI13_PCÌ65536Ö0 -SYSCFG_EXTICR4_EXTI13_PDÌ65536Ö0 -SYSCFG_EXTICR4_EXTI13_PEÌ65536Ö0 -SYSCFG_EXTICR4_EXTI14Ì65536Ö0 -SYSCFG_EXTICR4_EXTI14_PAÌ65536Ö0 -SYSCFG_EXTICR4_EXTI14_PBÌ65536Ö0 -SYSCFG_EXTICR4_EXTI14_PCÌ65536Ö0 -SYSCFG_EXTICR4_EXTI14_PDÌ65536Ö0 -SYSCFG_EXTICR4_EXTI14_PEÌ65536Ö0 -SYSCFG_EXTICR4_EXTI15Ì65536Ö0 -SYSCFG_EXTICR4_EXTI15_PAÌ65536Ö0 -SYSCFG_EXTICR4_EXTI15_PBÌ65536Ö0 -SYSCFG_EXTICR4_EXTI15_PCÌ65536Ö0 -SYSCFG_EXTICR4_EXTI15_PDÌ65536Ö0 -SYSCFG_EXTICR4_EXTI15_PEÌ65536Ö0 -StartHSEÌ16Í()Ö0Ïinline void -StartHSI48Ì16Í()Ö0Ïinline void -SysTickÌ65536Ö0 -SysTick_BASEÌ65536Ö0 -SysTick_CALIB_NOREF_MskÌ65536Ö0 -SysTick_CALIB_NOREF_PosÌ65536Ö0 -SysTick_CALIB_SKEW_MskÌ65536Ö0 -SysTick_CALIB_SKEW_PosÌ65536Ö0 -SysTick_CALIB_TENMS_MskÌ65536Ö0 -SysTick_CALIB_TENMS_PosÌ65536Ö0 -SysTick_CTRL_CLKSOURCE_MskÌ65536Ö0 -SysTick_CTRL_CLKSOURCE_PosÌ65536Ö0 -SysTick_CTRL_COUNTFLAG_MskÌ65536Ö0 -SysTick_CTRL_COUNTFLAG_PosÌ65536Ö0 -SysTick_CTRL_ENABLE_MskÌ65536Ö0 -SysTick_CTRL_ENABLE_PosÌ65536Ö0 -SysTick_CTRL_TICKINT_MskÌ65536Ö0 -SysTick_CTRL_TICKINT_PosÌ65536Ö0 -SysTick_LOAD_RELOAD_MskÌ65536Ö0 -SysTick_LOAD_RELOAD_PosÌ65536Ö0 -SysTick_VAL_CURRENT_MskÌ65536Ö0 -SysTick_VAL_CURRENT_PosÌ65536Ö0 -TEMP110_CAL_ADDRÌ65536Ö0 -TEMP30_CAL_ADDRÌ65536Ö0 -TIM1Ì65536Ö0 -TIM14Ì65536Ö0 -TIM14_BASEÌ65536Ö0 -TIM14_OR_TI1_RMPÌ65536Ö0 -TIM14_OR_TI1_RMP_0Ì65536Ö0 -TIM14_OR_TI1_RMP_1Ì65536Ö0 -TIM16Ì65536Ö0 -TIM16_BASEÌ65536Ö0 -TIM17Ì65536Ö0 -TIM17_BASEÌ65536Ö0 -TIM1_BASEÌ65536Ö0 -TIM2Ì65536Ö0 -TIM2_BASEÌ65536Ö0 -TIM3Ì65536Ö0 -TIM3_BASEÌ65536Ö0 -TIM_ARR_ARRÌ65536Ö0 -TIM_BDTR_AOEÌ65536Ö0 -TIM_BDTR_BKEÌ65536Ö0 -TIM_BDTR_BKPÌ65536Ö0 -TIM_BDTR_DTGÌ65536Ö0 -TIM_BDTR_DTG_0Ì65536Ö0 -TIM_BDTR_DTG_1Ì65536Ö0 -TIM_BDTR_DTG_2Ì65536Ö0 -TIM_BDTR_DTG_3Ì65536Ö0 -TIM_BDTR_DTG_4Ì65536Ö0 -TIM_BDTR_DTG_5Ì65536Ö0 -TIM_BDTR_DTG_6Ì65536Ö0 -TIM_BDTR_DTG_7Ì65536Ö0 -TIM_BDTR_LOCKÌ65536Ö0 -TIM_BDTR_LOCK_0Ì65536Ö0 -TIM_BDTR_LOCK_1Ì65536Ö0 -TIM_BDTR_MOEÌ65536Ö0 -TIM_BDTR_OSSIÌ65536Ö0 -TIM_BDTR_OSSRÌ65536Ö0 -TIM_CCER_CC1EÌ65536Ö0 -TIM_CCER_CC1NEÌ65536Ö0 -TIM_CCER_CC1NPÌ65536Ö0 -TIM_CCER_CC1PÌ65536Ö0 -TIM_CCER_CC2EÌ65536Ö0 -TIM_CCER_CC2NEÌ65536Ö0 -TIM_CCER_CC2NPÌ65536Ö0 -TIM_CCER_CC2PÌ65536Ö0 -TIM_CCER_CC3EÌ65536Ö0 -TIM_CCER_CC3NEÌ65536Ö0 -TIM_CCER_CC3NPÌ65536Ö0 -TIM_CCER_CC3PÌ65536Ö0 -TIM_CCER_CC4EÌ65536Ö0 -TIM_CCER_CC4NPÌ65536Ö0 -TIM_CCER_CC4PÌ65536Ö0 -TIM_CCMR1_CC1SÌ65536Ö0 -TIM_CCMR1_CC1S_0Ì65536Ö0 -TIM_CCMR1_CC1S_1Ì65536Ö0 -TIM_CCMR1_CC2SÌ65536Ö0 -TIM_CCMR1_CC2S_0Ì65536Ö0 -TIM_CCMR1_CC2S_1Ì65536Ö0 -TIM_CCMR1_IC1FÌ65536Ö0 -TIM_CCMR1_IC1F_0Ì65536Ö0 -TIM_CCMR1_IC1F_1Ì65536Ö0 -TIM_CCMR1_IC1F_2Ì65536Ö0 -TIM_CCMR1_IC1F_3Ì65536Ö0 -TIM_CCMR1_IC1PSCÌ65536Ö0 -TIM_CCMR1_IC1PSC_0Ì65536Ö0 -TIM_CCMR1_IC1PSC_1Ì65536Ö0 -TIM_CCMR1_IC2FÌ65536Ö0 -TIM_CCMR1_IC2F_0Ì65536Ö0 -TIM_CCMR1_IC2F_1Ì65536Ö0 -TIM_CCMR1_IC2F_2Ì65536Ö0 -TIM_CCMR1_IC2F_3Ì65536Ö0 -TIM_CCMR1_IC2PSCÌ65536Ö0 -TIM_CCMR1_IC2PSC_0Ì65536Ö0 -TIM_CCMR1_IC2PSC_1Ì65536Ö0 -TIM_CCMR1_OC1CEÌ65536Ö0 -TIM_CCMR1_OC1FEÌ65536Ö0 -TIM_CCMR1_OC1MÌ65536Ö0 -TIM_CCMR1_OC1M_0Ì65536Ö0 -TIM_CCMR1_OC1M_1Ì65536Ö0 -TIM_CCMR1_OC1M_2Ì65536Ö0 -TIM_CCMR1_OC1PEÌ65536Ö0 -TIM_CCMR1_OC2CEÌ65536Ö0 -TIM_CCMR1_OC2FEÌ65536Ö0 -TIM_CCMR1_OC2MÌ65536Ö0 -TIM_CCMR1_OC2M_0Ì65536Ö0 -TIM_CCMR1_OC2M_1Ì65536Ö0 -TIM_CCMR1_OC2M_2Ì65536Ö0 -TIM_CCMR1_OC2PEÌ65536Ö0 -TIM_CCMR2_CC3SÌ65536Ö0 -TIM_CCMR2_CC3S_0Ì65536Ö0 -TIM_CCMR2_CC3S_1Ì65536Ö0 -TIM_CCMR2_CC4SÌ65536Ö0 -TIM_CCMR2_CC4S_0Ì65536Ö0 -TIM_CCMR2_CC4S_1Ì65536Ö0 -TIM_CCMR2_IC3FÌ65536Ö0 -TIM_CCMR2_IC3F_0Ì65536Ö0 -TIM_CCMR2_IC3F_1Ì65536Ö0 -TIM_CCMR2_IC3F_2Ì65536Ö0 -TIM_CCMR2_IC3F_3Ì65536Ö0 -TIM_CCMR2_IC3PSCÌ65536Ö0 -TIM_CCMR2_IC3PSC_0Ì65536Ö0 -TIM_CCMR2_IC3PSC_1Ì65536Ö0 -TIM_CCMR2_IC4FÌ65536Ö0 -TIM_CCMR2_IC4F_0Ì65536Ö0 -TIM_CCMR2_IC4F_1Ì65536Ö0 -TIM_CCMR2_IC4F_2Ì65536Ö0 -TIM_CCMR2_IC4F_3Ì65536Ö0 -TIM_CCMR2_IC4PSCÌ65536Ö0 -TIM_CCMR2_IC4PSC_0Ì65536Ö0 -TIM_CCMR2_IC4PSC_1Ì65536Ö0 -TIM_CCMR2_OC3CEÌ65536Ö0 -TIM_CCMR2_OC3FEÌ65536Ö0 -TIM_CCMR2_OC3MÌ65536Ö0 -TIM_CCMR2_OC3M_0Ì65536Ö0 -TIM_CCMR2_OC3M_1Ì65536Ö0 -TIM_CCMR2_OC3M_2Ì65536Ö0 -TIM_CCMR2_OC3PEÌ65536Ö0 -TIM_CCMR2_OC4CEÌ65536Ö0 -TIM_CCMR2_OC4FEÌ65536Ö0 -TIM_CCMR2_OC4MÌ65536Ö0 -TIM_CCMR2_OC4M_0Ì65536Ö0 -TIM_CCMR2_OC4M_1Ì65536Ö0 -TIM_CCMR2_OC4M_2Ì65536Ö0 -TIM_CCMR2_OC4PEÌ65536Ö0 -TIM_CCR1_CCR1Ì65536Ö0 -TIM_CCR2_CCR2Ì65536Ö0 -TIM_CCR3_CCR3Ì65536Ö0 -TIM_CCR4_CCR4Ì65536Ö0 -TIM_CNT_CNTÌ65536Ö0 -TIM_CR1_ARPEÌ65536Ö0 -TIM_CR1_CENÌ65536Ö0 -TIM_CR1_CKDÌ65536Ö0 -TIM_CR1_CKD_0Ì65536Ö0 -TIM_CR1_CKD_1Ì65536Ö0 -TIM_CR1_CMSÌ65536Ö0 -TIM_CR1_CMS_0Ì65536Ö0 -TIM_CR1_CMS_1Ì65536Ö0 -TIM_CR1_DIRÌ65536Ö0 -TIM_CR1_OPMÌ65536Ö0 -TIM_CR1_UDISÌ65536Ö0 -TIM_CR1_URSÌ65536Ö0 -TIM_CR2_CCDSÌ65536Ö0 -TIM_CR2_CCPCÌ65536Ö0 -TIM_CR2_CCUSÌ65536Ö0 -TIM_CR2_MMSÌ65536Ö0 -TIM_CR2_MMS_0Ì65536Ö0 -TIM_CR2_MMS_1Ì65536Ö0 -TIM_CR2_MMS_2Ì65536Ö0 -TIM_CR2_OIS1Ì65536Ö0 -TIM_CR2_OIS1NÌ65536Ö0 -TIM_CR2_OIS2Ì65536Ö0 -TIM_CR2_OIS2NÌ65536Ö0 -TIM_CR2_OIS3Ì65536Ö0 -TIM_CR2_OIS3NÌ65536Ö0 -TIM_CR2_OIS4Ì65536Ö0 -TIM_CR2_TI1SÌ65536Ö0 -TIM_DCR_DBAÌ65536Ö0 -TIM_DCR_DBA_0Ì65536Ö0 -TIM_DCR_DBA_1Ì65536Ö0 -TIM_DCR_DBA_2Ì65536Ö0 -TIM_DCR_DBA_3Ì65536Ö0 -TIM_DCR_DBA_4Ì65536Ö0 -TIM_DCR_DBLÌ65536Ö0 -TIM_DCR_DBL_0Ì65536Ö0 -TIM_DCR_DBL_1Ì65536Ö0 -TIM_DCR_DBL_2Ì65536Ö0 -TIM_DCR_DBL_3Ì65536Ö0 -TIM_DCR_DBL_4Ì65536Ö0 -TIM_DIER_BIEÌ65536Ö0 -TIM_DIER_CC1DEÌ65536Ö0 -TIM_DIER_CC1IEÌ65536Ö0 -TIM_DIER_CC2DEÌ65536Ö0 -TIM_DIER_CC2IEÌ65536Ö0 -TIM_DIER_CC3DEÌ65536Ö0 -TIM_DIER_CC3IEÌ65536Ö0 -TIM_DIER_CC4DEÌ65536Ö0 -TIM_DIER_CC4IEÌ65536Ö0 -TIM_DIER_COMDEÌ65536Ö0 -TIM_DIER_COMIEÌ65536Ö0 -TIM_DIER_TDEÌ65536Ö0 -TIM_DIER_TIEÌ65536Ö0 -TIM_DIER_UDEÌ65536Ö0 -TIM_DIER_UIEÌ65536Ö0 -TIM_DMAR_DMABÌ65536Ö0 -TIM_EGR_BGÌ65536Ö0 -TIM_EGR_CC1GÌ65536Ö0 -TIM_EGR_CC2GÌ65536Ö0 -TIM_EGR_CC3GÌ65536Ö0 -TIM_EGR_CC4GÌ65536Ö0 -TIM_EGR_COMGÌ65536Ö0 -TIM_EGR_TGÌ65536Ö0 -TIM_EGR_UGÌ65536Ö0 -TIM_PSC_PSCÌ65536Ö0 -TIM_RCR_REPÌ65536Ö0 -TIM_SMCR_ECEÌ65536Ö0 -TIM_SMCR_ETFÌ65536Ö0 -TIM_SMCR_ETF_0Ì65536Ö0 -TIM_SMCR_ETF_1Ì65536Ö0 -TIM_SMCR_ETF_2Ì65536Ö0 -TIM_SMCR_ETF_3Ì65536Ö0 -TIM_SMCR_ETPÌ65536Ö0 -TIM_SMCR_ETPSÌ65536Ö0 -TIM_SMCR_ETPS_0Ì65536Ö0 -TIM_SMCR_ETPS_1Ì65536Ö0 -TIM_SMCR_MSMÌ65536Ö0 -TIM_SMCR_OCCSÌ65536Ö0 -TIM_SMCR_SMSÌ65536Ö0 -TIM_SMCR_SMS_0Ì65536Ö0 -TIM_SMCR_SMS_1Ì65536Ö0 -TIM_SMCR_SMS_2Ì65536Ö0 -TIM_SMCR_TSÌ65536Ö0 -TIM_SMCR_TS_0Ì65536Ö0 -TIM_SMCR_TS_1Ì65536Ö0 -TIM_SMCR_TS_2Ì65536Ö0 -TIM_SR_BIFÌ65536Ö0 -TIM_SR_CC1IFÌ65536Ö0 -TIM_SR_CC1OFÌ65536Ö0 -TIM_SR_CC2IFÌ65536Ö0 -TIM_SR_CC2OFÌ65536Ö0 -TIM_SR_CC3IFÌ65536Ö0 -TIM_SR_CC3OFÌ65536Ö0 -TIM_SR_CC4IFÌ65536Ö0 -TIM_SR_CC4OFÌ65536Ö0 -TIM_SR_COMIFÌ65536Ö0 -TIM_SR_TIFÌ65536Ö0 -TIM_SR_UIFÌ65536Ö0 -TRUE_INLINEÌ65536Ö0 -TSCÌ65536Ö0 -TSC_BASEÌ65536Ö0 -TSC_CR_AMÌ65536Ö0 -TSC_CR_CTPHÌ65536Ö0 -TSC_CR_CTPH_0Ì65536Ö0 -TSC_CR_CTPH_1Ì65536Ö0 -TSC_CR_CTPH_2Ì65536Ö0 -TSC_CR_CTPH_3Ì65536Ö0 -TSC_CR_CTPLÌ65536Ö0 -TSC_CR_CTPL_0Ì65536Ö0 -TSC_CR_CTPL_1Ì65536Ö0 -TSC_CR_CTPL_2Ì65536Ö0 -TSC_CR_CTPL_3Ì65536Ö0 -TSC_CR_IODEFÌ65536Ö0 -TSC_CR_MCVÌ65536Ö0 -TSC_CR_MCV_0Ì65536Ö0 -TSC_CR_MCV_1Ì65536Ö0 -TSC_CR_MCV_2Ì65536Ö0 -TSC_CR_PGPSCÌ65536Ö0 -TSC_CR_PGPSC_0Ì65536Ö0 -TSC_CR_PGPSC_1Ì65536Ö0 -TSC_CR_PGPSC_2Ì65536Ö0 -TSC_CR_SSDÌ65536Ö0 -TSC_CR_SSD_0Ì65536Ö0 -TSC_CR_SSD_1Ì65536Ö0 -TSC_CR_SSD_2Ì65536Ö0 -TSC_CR_SSD_3Ì65536Ö0 -TSC_CR_SSD_4Ì65536Ö0 -TSC_CR_SSD_5Ì65536Ö0 -TSC_CR_SSD_6Ì65536Ö0 -TSC_CR_SSEÌ65536Ö0 -TSC_CR_SSPSCÌ65536Ö0 -TSC_CR_STARTÌ65536Ö0 -TSC_CR_SYNCPOLÌ65536Ö0 -TSC_CR_TSCEÌ65536Ö0 -TSC_ICR_EOAICÌ65536Ö0 -TSC_ICR_MCEICÌ65536Ö0 -TSC_IER_EOAIEÌ65536Ö0 -TSC_IER_MCEIEÌ65536Ö0 -TSC_IOASCR_G1_IO1Ì65536Ö0 -TSC_IOASCR_G1_IO2Ì65536Ö0 -TSC_IOASCR_G1_IO3Ì65536Ö0 -TSC_IOASCR_G1_IO4Ì65536Ö0 -TSC_IOASCR_G2_IO1Ì65536Ö0 -TSC_IOASCR_G2_IO2Ì65536Ö0 -TSC_IOASCR_G2_IO3Ì65536Ö0 -TSC_IOASCR_G2_IO4Ì65536Ö0 -TSC_IOASCR_G3_IO1Ì65536Ö0 -TSC_IOASCR_G3_IO2Ì65536Ö0 -TSC_IOASCR_G3_IO3Ì65536Ö0 -TSC_IOASCR_G3_IO4Ì65536Ö0 -TSC_IOASCR_G4_IO1Ì65536Ö0 -TSC_IOASCR_G4_IO2Ì65536Ö0 -TSC_IOASCR_G4_IO3Ì65536Ö0 -TSC_IOASCR_G4_IO4Ì65536Ö0 -TSC_IOASCR_G5_IO1Ì65536Ö0 -TSC_IOASCR_G5_IO2Ì65536Ö0 -TSC_IOASCR_G5_IO3Ì65536Ö0 -TSC_IOASCR_G5_IO4Ì65536Ö0 -TSC_IOASCR_G6_IO1Ì65536Ö0 -TSC_IOASCR_G6_IO2Ì65536Ö0 -TSC_IOASCR_G6_IO3Ì65536Ö0 -TSC_IOASCR_G6_IO4Ì65536Ö0 -TSC_IOASCR_G7_IO1Ì65536Ö0 -TSC_IOASCR_G7_IO2Ì65536Ö0 -TSC_IOASCR_G7_IO3Ì65536Ö0 -TSC_IOASCR_G7_IO4Ì65536Ö0 -TSC_IOASCR_G8_IO1Ì65536Ö0 -TSC_IOASCR_G8_IO2Ì65536Ö0 -TSC_IOASCR_G8_IO3Ì65536Ö0 -TSC_IOASCR_G8_IO4Ì65536Ö0 -TSC_IOCCR_G1_IO1Ì65536Ö0 -TSC_IOCCR_G1_IO2Ì65536Ö0 -TSC_IOCCR_G1_IO3Ì65536Ö0 -TSC_IOCCR_G1_IO4Ì65536Ö0 -TSC_IOCCR_G2_IO1Ì65536Ö0 -TSC_IOCCR_G2_IO2Ì65536Ö0 -TSC_IOCCR_G2_IO3Ì65536Ö0 -TSC_IOCCR_G2_IO4Ì65536Ö0 -TSC_IOCCR_G3_IO1Ì65536Ö0 -TSC_IOCCR_G3_IO2Ì65536Ö0 -TSC_IOCCR_G3_IO3Ì65536Ö0 -TSC_IOCCR_G3_IO4Ì65536Ö0 -TSC_IOCCR_G4_IO1Ì65536Ö0 -TSC_IOCCR_G4_IO2Ì65536Ö0 -TSC_IOCCR_G4_IO3Ì65536Ö0 -TSC_IOCCR_G4_IO4Ì65536Ö0 -TSC_IOCCR_G5_IO1Ì65536Ö0 -TSC_IOCCR_G5_IO2Ì65536Ö0 -TSC_IOCCR_G5_IO3Ì65536Ö0 -TSC_IOCCR_G5_IO4Ì65536Ö0 -TSC_IOCCR_G6_IO1Ì65536Ö0 -TSC_IOCCR_G6_IO2Ì65536Ö0 -TSC_IOCCR_G6_IO3Ì65536Ö0 -TSC_IOCCR_G6_IO4Ì65536Ö0 -TSC_IOCCR_G7_IO1Ì65536Ö0 -TSC_IOCCR_G7_IO2Ì65536Ö0 -TSC_IOCCR_G7_IO3Ì65536Ö0 -TSC_IOCCR_G7_IO4Ì65536Ö0 -TSC_IOCCR_G8_IO1Ì65536Ö0 -TSC_IOCCR_G8_IO2Ì65536Ö0 -TSC_IOCCR_G8_IO3Ì65536Ö0 -TSC_IOCCR_G8_IO4Ì65536Ö0 -TSC_IOGCSR_G1EÌ65536Ö0 -TSC_IOGCSR_G1SÌ65536Ö0 -TSC_IOGCSR_G2EÌ65536Ö0 -TSC_IOGCSR_G2SÌ65536Ö0 -TSC_IOGCSR_G3EÌ65536Ö0 -TSC_IOGCSR_G3SÌ65536Ö0 -TSC_IOGCSR_G4EÌ65536Ö0 -TSC_IOGCSR_G4SÌ65536Ö0 -TSC_IOGCSR_G5EÌ65536Ö0 -TSC_IOGCSR_G5SÌ65536Ö0 -TSC_IOGCSR_G6EÌ65536Ö0 -TSC_IOGCSR_G6SÌ65536Ö0 -TSC_IOGCSR_G7EÌ65536Ö0 -TSC_IOGCSR_G7SÌ65536Ö0 -TSC_IOGCSR_G8EÌ65536Ö0 -TSC_IOGCSR_G8SÌ65536Ö0 -TSC_IOGXCR_CNTÌ65536Ö0 -TSC_IOHCR_G1_IO1Ì65536Ö0 -TSC_IOHCR_G1_IO2Ì65536Ö0 -TSC_IOHCR_G1_IO3Ì65536Ö0 -TSC_IOHCR_G1_IO4Ì65536Ö0 -TSC_IOHCR_G2_IO1Ì65536Ö0 -TSC_IOHCR_G2_IO2Ì65536Ö0 -TSC_IOHCR_G2_IO3Ì65536Ö0 -TSC_IOHCR_G2_IO4Ì65536Ö0 -TSC_IOHCR_G3_IO1Ì65536Ö0 -TSC_IOHCR_G3_IO2Ì65536Ö0 -TSC_IOHCR_G3_IO3Ì65536Ö0 -TSC_IOHCR_G3_IO4Ì65536Ö0 -TSC_IOHCR_G4_IO1Ì65536Ö0 -TSC_IOHCR_G4_IO2Ì65536Ö0 -TSC_IOHCR_G4_IO3Ì65536Ö0 -TSC_IOHCR_G4_IO4Ì65536Ö0 -TSC_IOHCR_G5_IO1Ì65536Ö0 -TSC_IOHCR_G5_IO2Ì65536Ö0 -TSC_IOHCR_G5_IO3Ì65536Ö0 -TSC_IOHCR_G5_IO4Ì65536Ö0 -TSC_IOHCR_G6_IO1Ì65536Ö0 -TSC_IOHCR_G6_IO2Ì65536Ö0 -TSC_IOHCR_G6_IO3Ì65536Ö0 -TSC_IOHCR_G6_IO4Ì65536Ö0 -TSC_IOHCR_G7_IO1Ì65536Ö0 -TSC_IOHCR_G7_IO2Ì65536Ö0 -TSC_IOHCR_G7_IO3Ì65536Ö0 -TSC_IOHCR_G7_IO4Ì65536Ö0 -TSC_IOHCR_G8_IO1Ì65536Ö0 -TSC_IOHCR_G8_IO2Ì65536Ö0 -TSC_IOHCR_G8_IO3Ì65536Ö0 -TSC_IOHCR_G8_IO4Ì65536Ö0 -TSC_IOSCR_G1_IO1Ì65536Ö0 -TSC_IOSCR_G1_IO2Ì65536Ö0 -TSC_IOSCR_G1_IO3Ì65536Ö0 -TSC_IOSCR_G1_IO4Ì65536Ö0 -TSC_IOSCR_G2_IO1Ì65536Ö0 -TSC_IOSCR_G2_IO2Ì65536Ö0 -TSC_IOSCR_G2_IO3Ì65536Ö0 -TSC_IOSCR_G2_IO4Ì65536Ö0 -TSC_IOSCR_G3_IO1Ì65536Ö0 -TSC_IOSCR_G3_IO2Ì65536Ö0 -TSC_IOSCR_G3_IO3Ì65536Ö0 -TSC_IOSCR_G3_IO4Ì65536Ö0 -TSC_IOSCR_G4_IO1Ì65536Ö0 -TSC_IOSCR_G4_IO2Ì65536Ö0 -TSC_IOSCR_G4_IO3Ì65536Ö0 -TSC_IOSCR_G4_IO4Ì65536Ö0 -TSC_IOSCR_G5_IO1Ì65536Ö0 -TSC_IOSCR_G5_IO2Ì65536Ö0 -TSC_IOSCR_G5_IO3Ì65536Ö0 -TSC_IOSCR_G5_IO4Ì65536Ö0 -TSC_IOSCR_G6_IO1Ì65536Ö0 -TSC_IOSCR_G6_IO2Ì65536Ö0 -TSC_IOSCR_G6_IO3Ì65536Ö0 -TSC_IOSCR_G6_IO4Ì65536Ö0 -TSC_IOSCR_G7_IO1Ì65536Ö0 -TSC_IOSCR_G7_IO2Ì65536Ö0 -TSC_IOSCR_G7_IO3Ì65536Ö0 -TSC_IOSCR_G7_IO4Ì65536Ö0 -TSC_IOSCR_G8_IO1Ì65536Ö0 -TSC_IOSCR_G8_IO2Ì65536Ö0 -TSC_IOSCR_G8_IO3Ì65536Ö0 -TSC_IOSCR_G8_IO4Ì65536Ö0 -TSC_ISR_EOAFÌ65536Ö0 -TSC_ISR_MCEFÌ65536Ö0 -UINT16_CÌ131072Í(c)Ö0 -UINT16_MAXÌ65536Ö0 -UINT32_CÌ131072Í(c)Ö0 -UINT32_MAXÌ65536Ö0 -UINT64_CÌ131072Í(c)Ö0 -UINT64_MAXÌ65536Ö0 -UINT8_CÌ131072Í(c)Ö0 -UINT8_MAXÌ65536Ö0 -UINTMAX_CÌ131072Í(c)Ö0 -UINTMAX_MAXÌ65536Ö0 -UINTPTR_MAXÌ65536Ö0 -UINT_FAST16_MAXÌ65536Ö0 -UINT_FAST32_MAXÌ65536Ö0 -UINT_FAST64_MAXÌ65536Ö0 -UINT_FAST8_MAXÌ65536Ö0 -UINT_LEAST16_MAXÌ65536Ö0 -UINT_LEAST32_MAXÌ65536Ö0 -UINT_LEAST64_MAXÌ65536Ö0 -UINT_LEAST8_MAXÌ65536Ö0 -USART1Ì65536Ö0 -USART1_BASEÌ65536Ö0 -USART2Ì65536Ö0 -USART2_BASEÌ65536Ö0 -USART_BRR_DIV_FRACTIONÌ65536Ö0 -USART_BRR_DIV_MANTISSAÌ65536Ö0 -USART_CR1_CMIEÌ65536Ö0 -USART_CR1_DEATÌ65536Ö0 -USART_CR1_DEAT_0Ì65536Ö0 -USART_CR1_DEAT_1Ì65536Ö0 -USART_CR1_DEAT_2Ì65536Ö0 -USART_CR1_DEAT_3Ì65536Ö0 -USART_CR1_DEAT_4Ì65536Ö0 -USART_CR1_DEDTÌ65536Ö0 -USART_CR1_DEDT_0Ì65536Ö0 -USART_CR1_DEDT_1Ì65536Ö0 -USART_CR1_DEDT_2Ì65536Ö0 -USART_CR1_DEDT_3Ì65536Ö0 -USART_CR1_DEDT_4Ì65536Ö0 -USART_CR1_EOBIEÌ65536Ö0 -USART_CR1_IDLEIEÌ65536Ö0 -USART_CR1_MÌ65536Ö0 -USART_CR1_M0Ì65536Ö0 -USART_CR1_M1Ì65536Ö0 -USART_CR1_MMEÌ65536Ö0 -USART_CR1_OVER8Ì65536Ö0 -USART_CR1_PCEÌ65536Ö0 -USART_CR1_PEIEÌ65536Ö0 -USART_CR1_PSÌ65536Ö0 -USART_CR1_REÌ65536Ö0 -USART_CR1_RTOIEÌ65536Ö0 -USART_CR1_RXNEIEÌ65536Ö0 -USART_CR1_TCIEÌ65536Ö0 -USART_CR1_TEÌ65536Ö0 -USART_CR1_TXEIEÌ65536Ö0 -USART_CR1_UEÌ65536Ö0 -USART_CR1_UESMÌ65536Ö0 -USART_CR1_WAKEÌ65536Ö0 -USART_CR2_ABRENÌ65536Ö0 -USART_CR2_ABRMODEÌ65536Ö0 -USART_CR2_ABRMODE_0Ì65536Ö0 -USART_CR2_ABRMODE_1Ì65536Ö0 -USART_CR2_ADDÌ65536Ö0 -USART_CR2_ADDM7Ì65536Ö0 -USART_CR2_CLKENÌ65536Ö0 -USART_CR2_CPHAÌ65536Ö0 -USART_CR2_CPOLÌ65536Ö0 -USART_CR2_DATAINVÌ65536Ö0 -USART_CR2_LBCLÌ65536Ö0 -USART_CR2_LBDIEÌ65536Ö0 -USART_CR2_LBDLÌ65536Ö0 -USART_CR2_LINENÌ65536Ö0 -USART_CR2_MSBFIRSTÌ65536Ö0 -USART_CR2_RTOENÌ65536Ö0 -USART_CR2_RXINVÌ65536Ö0 -USART_CR2_STOPÌ65536Ö0 -USART_CR2_STOP_0Ì65536Ö0 -USART_CR2_STOP_1Ì65536Ö0 -USART_CR2_SWAPÌ65536Ö0 -USART_CR2_TXINVÌ65536Ö0 -USART_CR3_CTSEÌ65536Ö0 -USART_CR3_CTSIEÌ65536Ö0 -USART_CR3_DDREÌ65536Ö0 -USART_CR3_DEMÌ65536Ö0 -USART_CR3_DEPÌ65536Ö0 -USART_CR3_DMARÌ65536Ö0 -USART_CR3_DMATÌ65536Ö0 -USART_CR3_EIEÌ65536Ö0 -USART_CR3_HDSELÌ65536Ö0 -USART_CR3_IRENÌ65536Ö0 -USART_CR3_IRLPÌ65536Ö0 -USART_CR3_NACKÌ65536Ö0 -USART_CR3_ONEBITÌ65536Ö0 -USART_CR3_OVRDISÌ65536Ö0 -USART_CR3_RTSEÌ65536Ö0 -USART_CR3_SCARCNTÌ65536Ö0 -USART_CR3_SCARCNT_0Ì65536Ö0 -USART_CR3_SCARCNT_1Ì65536Ö0 -USART_CR3_SCARCNT_2Ì65536Ö0 -USART_CR3_SCENÌ65536Ö0 -USART_CR3_WUFIEÌ65536Ö0 -USART_CR3_WUSÌ65536Ö0 -USART_CR3_WUS_0Ì65536Ö0 -USART_CR3_WUS_1Ì65536Ö0 -USART_GTPR_GTÌ65536Ö0 -USART_GTPR_PSCÌ65536Ö0 -USART_ICR_CMCFÌ65536Ö0 -USART_ICR_CTSCFÌ65536Ö0 -USART_ICR_EOBCFÌ65536Ö0 -USART_ICR_FECFÌ65536Ö0 -USART_ICR_IDLECFÌ65536Ö0 -USART_ICR_LBDCFÌ65536Ö0 -USART_ICR_NCFÌ65536Ö0 -USART_ICR_ORECFÌ65536Ö0 -USART_ICR_PECFÌ65536Ö0 -USART_ICR_RTOCFÌ65536Ö0 -USART_ICR_TCCFÌ65536Ö0 -USART_ICR_WUCFÌ65536Ö0 -USART_ISR_ABREÌ65536Ö0 -USART_ISR_ABRFÌ65536Ö0 -USART_ISR_BUSYÌ65536Ö0 -USART_ISR_CMFÌ65536Ö0 -USART_ISR_CTSÌ65536Ö0 -USART_ISR_CTSIFÌ65536Ö0 -USART_ISR_EOBFÌ65536Ö0 -USART_ISR_FEÌ65536Ö0 -USART_ISR_IDLEÌ65536Ö0 -USART_ISR_LBDFÌ65536Ö0 -USART_ISR_NEÌ65536Ö0 -USART_ISR_OREÌ65536Ö0 -USART_ISR_PEÌ65536Ö0 -USART_ISR_REACKÌ65536Ö0 -USART_ISR_RTOFÌ65536Ö0 -USART_ISR_RWUÌ65536Ö0 -USART_ISR_RXNEÌ65536Ö0 -USART_ISR_SBKFÌ65536Ö0 -USART_ISR_TCÌ65536Ö0 -USART_ISR_TEACKÌ65536Ö0 -USART_ISR_TXEÌ65536Ö0 -USART_ISR_WUFÌ65536Ö0 -USART_RDR_RDRÌ65536Ö0 -USART_RQR_ABRRQÌ65536Ö0 -USART_RQR_MMRQÌ65536Ö0 -USART_RQR_RXFRQÌ65536Ö0 -USART_RQR_SBKRQÌ65536Ö0 -USART_RQR_TXFRQÌ65536Ö0 -USART_RTOR_BLENÌ65536Ö0 -USART_RTOR_RTOÌ65536Ö0 -USART_TDR_TDRÌ65536Ö0 -USBÌ65536Ö0 -USB_BASEÌ65536Ö0 -USB_BCDRÌ65536Ö0 -USB_BCDR_BCDENÌ65536Ö0 -USB_BCDR_DCDENÌ65536Ö0 -USB_BCDR_DCDETÌ65536Ö0 -USB_BCDR_DPPUÌ65536Ö0 -USB_BCDR_PDENÌ65536Ö0 -USB_BCDR_PDETÌ65536Ö0 -USB_BCDR_PS2DETÌ65536Ö0 -USB_BCDR_SDENÌ65536Ö0 -USB_BCDR_SDETÌ65536Ö0 -USB_BTABLEÌ65536Ö0 -USB_CLR_CTRÌ65536Ö0 -USB_CLR_ERRÌ65536Ö0 -USB_CLR_ESOFÌ65536Ö0 -USB_CLR_L1REQÌ65536Ö0 -USB_CLR_PMAOVRÌ65536Ö0 -USB_CLR_RESETÌ65536Ö0 -USB_CLR_SOFÌ65536Ö0 -USB_CLR_SUSPÌ65536Ö0 -USB_CLR_WKUPÌ65536Ö0 -USB_CNTRÌ65536Ö0 -USB_CNTR_CTRMÌ65536Ö0 -USB_CNTR_ERRMÌ65536Ö0 -USB_CNTR_ESOFMÌ65536Ö0 -USB_CNTR_FRESÌ65536Ö0 -USB_CNTR_FSUSPÌ65536Ö0 -USB_CNTR_L1REQMÌ65536Ö0 -USB_CNTR_L1RESUMEÌ65536Ö0 -USB_CNTR_LPMODEÌ65536Ö0 -USB_CNTR_PDWNÌ65536Ö0 -USB_CNTR_PMAOVRMÌ65536Ö0 -USB_CNTR_RESETMÌ65536Ö0 -USB_CNTR_RESUMEÌ65536Ö0 -USB_CNTR_SOFMÌ65536Ö0 -USB_CNTR_SUSPMÌ65536Ö0 -USB_CNTR_WKUPMÌ65536Ö0 -USB_DADDRÌ65536Ö0 -USB_DADDR_ADDÌ65536Ö0 -USB_DADDR_EFÌ65536Ö0 -USB_EP0RÌ65536Ö0 -USB_EP1RÌ65536Ö0 -USB_EP2RÌ65536Ö0 -USB_EP3RÌ65536Ö0 -USB_EP4RÌ65536Ö0 -USB_EP5RÌ65536Ö0 -USB_EP6RÌ65536Ö0 -USB_EP7RÌ65536Ö0 -USB_EPADDR_FIELDÌ65536Ö0 -USB_EPKIND_MASKÌ65536Ö0 -USB_EPREG_MASKÌ65536Ö0 -USB_EPRX_DTOG1Ì65536Ö0 -USB_EPRX_DTOG2Ì65536Ö0 -USB_EPRX_DTOGMASKÌ65536Ö0 -USB_EPRX_STATÌ65536Ö0 -USB_EPTX_DTOG1Ì65536Ö0 -USB_EPTX_DTOG2Ì65536Ö0 -USB_EPTX_DTOGMASKÌ65536Ö0 -USB_EPTX_STATÌ65536Ö0 -USB_EP_BULKÌ65536Ö0 -USB_EP_CONTROLÌ65536Ö0 -USB_EP_CTR_RXÌ65536Ö0 -USB_EP_CTR_TXÌ65536Ö0 -USB_EP_DTOG_RXÌ65536Ö0 -USB_EP_DTOG_TXÌ65536Ö0 -USB_EP_INTERRUPTÌ65536Ö0 -USB_EP_ISOCHRONOUSÌ65536Ö0 -USB_EP_KINDÌ65536Ö0 -USB_EP_RX_DISÌ65536Ö0 -USB_EP_RX_NAKÌ65536Ö0 -USB_EP_RX_STALLÌ65536Ö0 -USB_EP_RX_VALIDÌ65536Ö0 -USB_EP_SETUPÌ65536Ö0 -USB_EP_TX_DISÌ65536Ö0 -USB_EP_TX_NAKÌ65536Ö0 -USB_EP_TX_STALLÌ65536Ö0 -USB_EP_TX_VALIDÌ65536Ö0 -USB_EP_TYPE_MASKÌ65536Ö0 -USB_EP_T_FIELDÌ65536Ö0 -USB_EP_T_MASKÌ65536Ö0 -USB_FNRÌ65536Ö0 -USB_FNR_FNÌ65536Ö0 -USB_FNR_LCKÌ65536Ö0 -USB_FNR_LSOFÌ65536Ö0 -USB_FNR_RXDMÌ65536Ö0 -USB_FNR_RXDPÌ65536Ö0 -USB_ISTRÌ65536Ö0 -USB_ISTR_CTRÌ65536Ö0 -USB_ISTR_DIRÌ65536Ö0 -USB_ISTR_EP_IDÌ65536Ö0 -USB_ISTR_ERRÌ65536Ö0 -USB_ISTR_ESOFÌ65536Ö0 -USB_ISTR_L1REQÌ65536Ö0 -USB_ISTR_PMAOVRÌ65536Ö0 -USB_ISTR_RESETÌ65536Ö0 -USB_ISTR_SOFÌ65536Ö0 -USB_ISTR_SUSPÌ65536Ö0 -USB_ISTR_WKUPÌ65536Ö0 -USB_LPMCSRÌ65536Ö0 -USB_LPMCSR_BESLÌ65536Ö0 -USB_LPMCSR_LMPENÌ65536Ö0 -USB_LPMCSR_LPMACKÌ65536Ö0 -USB_LPMCSR_REMWAKEÌ65536Ö0 -USB_PMAADDRÌ65536Ö0 -VDDIO2_IRQHandlerÌ65536Ö0 -VDDIO2_IRQnÌ65536Ö0 -VREFINT_CAL_ADDRÌ65536Ö0 -WCHAR_MAXÌ65536Ö0 -WCHAR_MINÌ65536Ö0 -WEAKÌ65536Ö0 -WINT_MAXÌ65536Ö0 -WINT_MINÌ65536Ö0 -WRITE_REGÌ131072Í(REG,VAL)Ö0 -WWDGÌ65536Ö0 -WWDG_BASEÌ65536Ö0 -WWDG_CFR_EWIÌ65536Ö0 -WWDG_CFR_WÌ65536Ö0 -WWDG_CFR_W0Ì65536Ö0 -WWDG_CFR_W1Ì65536Ö0 -WWDG_CFR_W2Ì65536Ö0 -WWDG_CFR_W3Ì65536Ö0 -WWDG_CFR_W4Ì65536Ö0 -WWDG_CFR_W5Ì65536Ö0 -WWDG_CFR_W6Ì65536Ö0 -WWDG_CFR_WDGTBÌ65536Ö0 -WWDG_CFR_WDGTB0Ì65536Ö0 -WWDG_CFR_WDGTB1Ì65536Ö0 -WWDG_CR_TÌ65536Ö0 -WWDG_CR_T0Ì65536Ö0 -WWDG_CR_T1Ì65536Ö0 -WWDG_CR_T2Ì65536Ö0 -WWDG_CR_T3Ì65536Ö0 -WWDG_CR_T4Ì65536Ö0 -WWDG_CR_T5Ì65536Ö0 -WWDG_CR_T6Ì65536Ö0 -WWDG_CR_WDGAÌ65536Ö0 -WWDG_SR_EWIFÌ65536Ö0 -_ATFILE_SOURCEÌ65536Ö0 -_BITS_WCHAR_HÌ65536Ö0 -_BIT_SHIFTÌ131072Í(IRQn)Ö0 -_DEFAULT_SOURCEÌ65536Ö0 -_FEATURES_HÌ65536Ö0 -_FORTIFY_SOURCEÌ65536Ö0 -_GCC_WRAP_STDINT_HÌ65536Ö0 -_GNU_SOURCEÌ65536Ö0 -_IP_IDXÌ131072Í(IRQn)Ö0 -_ISOC11_SOURCEÌ65536Ö0 -_ISOC95_SOURCEÌ65536Ö0 -_ISOC99_SOURCEÌ65536Ö0 -_LARGEFILE64_SOURCEÌ65536Ö0 -_LARGEFILE_SOURCEÌ65536Ö0 -_LP64Ì65536Ö0 -_POSIX_C_SOURCEÌ65536Ö0 -_POSIX_SOURCEÌ65536Ö0 -_SHP_IDXÌ131072Í(IRQn)Ö0 -_STDC_PREDEF_HÌ65536Ö0 -_STDINT_HÌ65536Ö0 -_SYS_CDEFS_HÌ65536Ö0 -_XOPEN_SOURCEÌ65536Ö0 -_XOPEN_SOURCE_EXTENDEDÌ65536Ö0 -__ASMÌ65536Ö0 -__ASMNAMEÌ131072Í(cname)Ö0 -__ASMNAME2Ì131072Í(prefix,cname)Ö0 -__ATOMIC_ACQUIREÌ65536Ö0 -__ATOMIC_ACQ_RELÌ65536Ö0 -__ATOMIC_CONSUMEÌ65536Ö0 -__ATOMIC_HLE_ACQUIREÌ65536Ö0 -__ATOMIC_HLE_RELEASEÌ65536Ö0 -__ATOMIC_RELAXEDÌ65536Ö0 -__ATOMIC_RELEASEÌ65536Ö0 -__ATOMIC_SEQ_CSTÌ65536Ö0 -__BEGIN_DECLSÌ65536Ö0 -__BEGIN_NAMESPACE_C99Ì65536Ö0 -__BEGIN_NAMESPACE_STDÌ65536Ö0 -__BIGGEST_ALIGNMENT__Ì65536Ö0 -__BKPTÌ131072Í(value)Ö0 -__BYTE_ORDER__Ì65536Ö0 -__CHAR16_TYPE__Ì65536Ö0 -__CHAR32_TYPE__Ì65536Ö0 -__CHAR_BIT__Ì65536Ö0 -__CM0_CMSIS_VERSIONÌ65536Ö0 -__CM0_CMSIS_VERSION_MAINÌ65536Ö0 -__CM0_CMSIS_VERSION_SUBÌ65536Ö0 -__CM0_REVÌ65536Ö0 -__CMSIS_GCC_OUT_REGÌ131072Í(r)Ö0 -__CMSIS_GCC_USE_REGÌ131072Í(r)Ö0 -__CONCATÌ131072Í(x,y)Ö0 -__CORE_CM0_H_DEPENDANTÌ65536Ö0 -__CORE_CM0_H_GENERICÌ65536Ö0 -__CORE_CMFUNC_HÌ65536Ö0 -__CORE_CMINSTR_HÌ65536Ö0 -__CORE_CMSIMD_HÌ65536Ö0 -__CORTEX_MÌ65536Ö0 -__DBL_DECIMAL_DIG__Ì65536Ö0 -__DBL_DENORM_MIN__Ì65536Ö0 -__DBL_DIG__Ì65536Ö0 -__DBL_EPSILON__Ì65536Ö0 -__DBL_HAS_DENORM__Ì65536Ö0 -__DBL_HAS_INFINITY__Ì65536Ö0 -__DBL_HAS_QUIET_NAN__Ì65536Ö0 -__DBL_MANT_DIG__Ì65536Ö0 -__DBL_MAX_10_EXP__Ì65536Ö0 -__DBL_MAX_EXP__Ì65536Ö0 -__DBL_MAX__Ì65536Ö0 -__DBL_MIN_10_EXP__Ì65536Ö0 -__DBL_MIN_EXP__Ì65536Ö0 -__DBL_MIN__Ì65536Ö0 -__DEC128_EPSILON__Ì65536Ö0 -__DEC128_MANT_DIG__Ì65536Ö0 -__DEC128_MAX_EXP__Ì65536Ö0 -__DEC128_MAX__Ì65536Ö0 -__DEC128_MIN_EXP__Ì65536Ö0 -__DEC128_MIN__Ì65536Ö0 -__DEC128_SUBNORMAL_MIN__Ì65536Ö0 -__DEC32_EPSILON__Ì65536Ö0 -__DEC32_MANT_DIG__Ì65536Ö0 -__DEC32_MAX_EXP__Ì65536Ö0 -__DEC32_MAX__Ì65536Ö0 -__DEC32_MIN_EXP__Ì65536Ö0 -__DEC32_MIN__Ì65536Ö0 -__DEC32_SUBNORMAL_MIN__Ì65536Ö0 -__DEC64_EPSILON__Ì65536Ö0 -__DEC64_MANT_DIG__Ì65536Ö0 -__DEC64_MAX_EXP__Ì65536Ö0 -__DEC64_MAX__Ì65536Ö0 -__DEC64_MIN_EXP__Ì65536Ö0 -__DEC64_MIN__Ì65536Ö0 -__DEC64_SUBNORMAL_MIN__Ì65536Ö0 -__DECIMAL_BID_FORMAT__Ì65536Ö0 -__DECIMAL_DIG__Ì65536Ö0 -__DEC_EVAL_METHOD__Ì65536Ö0 -__DEPRECATEDÌ65536Ö0 -__ELF__Ì65536Ö0 -__END_DECLSÌ65536Ö0 -__END_NAMESPACE_C99Ì65536Ö0 -__END_NAMESPACE_STDÌ65536Ö0 -__EXCEPTIONSÌ65536Ö0 -__FINITE_MATH_ONLY__Ì65536Ö0 -__FLOAT_WORD_ORDER__Ì65536Ö0 -__FLT_DECIMAL_DIG__Ì65536Ö0 -__FLT_DENORM_MIN__Ì65536Ö0 -__FLT_DIG__Ì65536Ö0 -__FLT_EPSILON__Ì65536Ö0 -__FLT_EVAL_METHOD__Ì65536Ö0 -__FLT_HAS_DENORM__Ì65536Ö0 -__FLT_HAS_INFINITY__Ì65536Ö0 -__FLT_HAS_QUIET_NAN__Ì65536Ö0 -__FLT_MANT_DIG__Ì65536Ö0 -__FLT_MAX_10_EXP__Ì65536Ö0 -__FLT_MAX_EXP__Ì65536Ö0 -__FLT_MAX__Ì65536Ö0 -__FLT_MIN_10_EXP__Ì65536Ö0 -__FLT_MIN_EXP__Ì65536Ö0 -__FLT_MIN__Ì65536Ö0 -__FLT_RADIX__Ì65536Ö0 -__FPU_USEDÌ65536Ö0 -__FXSR__Ì65536Ö0 -__GCC_ATOMIC_BOOL_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_CHAR16_T_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_CHAR32_T_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_CHAR_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_INT_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_LLONG_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_LONG_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_POINTER_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_SHORT_LOCK_FREEÌ65536Ö0 -__GCC_ATOMIC_TEST_AND_SET_TRUEVALÌ65536Ö0 -__GCC_ATOMIC_WCHAR_T_LOCK_FREEÌ65536Ö0 -__GCC_HAVE_DWARF2_CFI_ASMÌ65536Ö0 -__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1Ì65536Ö0 -__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2Ì65536Ö0 -__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4Ì65536Ö0 -__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8Ì65536Ö0 -__GCC_IEC_559Ì65536Ö0 -__GCC_IEC_559_COMPLEXÌ65536Ö0 -__GLIBC_MINOR__Ì65536Ö0 -__GLIBC_PREREQÌ131072Í(maj,min)Ö0 -__GLIBC__Ì65536Ö0 -__GNUC_GNU_INLINE__Ì65536Ö0 -__GNUC_MINOR__Ì65536Ö0 -__GNUC_PATCHLEVEL__Ì65536Ö0 -__GNUC_PREREQÌ131072Í(maj,min)Ö0 -__GNUC__Ì65536Ö0 -__GNUG__Ì65536Ö0 -__GNU_LIBRARY__Ì65536Ö0 -__GXX_ABI_VERSIONÌ65536Ö0 -__GXX_RTTIÌ65536Ö0 -__GXX_WEAK__Ì65536Ö0 -__IÌ65536Ö0 -__INLINEÌ65536Ö0 -__INT16_CÌ131072Í(c)Ö0 -__INT16_MAX__Ì65536Ö0 -__INT16_TYPE__Ì65536Ö0 -__INT32_CÌ131072Í(c)Ö0 -__INT32_MAX__Ì65536Ö0 -__INT32_TYPE__Ì65536Ö0 -__INT64_CÌ131072Í(c)Ö0 -__INT64_MAX__Ì65536Ö0 -__INT64_TYPE__Ì65536Ö0 -__INT8_CÌ131072Í(c)Ö0 -__INT8_MAX__Ì65536Ö0 -__INT8_TYPE__Ì65536Ö0 -__INTMAX_CÌ131072Í(c)Ö0 -__INTMAX_MAX__Ì65536Ö0 -__INTMAX_TYPE__Ì65536Ö0 -__INTPTR_MAX__Ì65536Ö0 -__INTPTR_TYPE__Ì65536Ö0 -__INT_FAST16_MAX__Ì65536Ö0 -__INT_FAST16_TYPE__Ì65536Ö0 -__INT_FAST32_MAX__Ì65536Ö0 -__INT_FAST32_TYPE__Ì65536Ö0 -__INT_FAST64_MAX__Ì65536Ö0 -__INT_FAST64_TYPE__Ì65536Ö0 -__INT_FAST8_MAX__Ì65536Ö0 -__INT_FAST8_TYPE__Ì65536Ö0 -__INT_LEAST16_MAX__Ì65536Ö0 -__INT_LEAST16_TYPE__Ì65536Ö0 -__INT_LEAST32_MAX__Ì65536Ö0 -__INT_LEAST32_TYPE__Ì65536Ö0 -__INT_LEAST64_MAX__Ì65536Ö0 -__INT_LEAST64_TYPE__Ì65536Ö0 -__INT_LEAST8_MAX__Ì65536Ö0 -__INT_LEAST8_TYPE__Ì65536Ö0 -__INT_MAX__Ì65536Ö0 -__IOÌ65536Ö0 -__KERNEL_STRICT_NAMESÌ65536Ö0 -__LDBL_DENORM_MIN__Ì65536Ö0 -__LDBL_DIG__Ì65536Ö0 -__LDBL_EPSILON__Ì65536Ö0 -__LDBL_HAS_DENORM__Ì65536Ö0 -__LDBL_HAS_INFINITY__Ì65536Ö0 -__LDBL_HAS_QUIET_NAN__Ì65536Ö0 -__LDBL_MANT_DIG__Ì65536Ö0 -__LDBL_MAX_10_EXP__Ì65536Ö0 -__LDBL_MAX_EXP__Ì65536Ö0 -__LDBL_MAX__Ì65536Ö0 -__LDBL_MIN_10_EXP__Ì65536Ö0 -__LDBL_MIN_EXP__Ì65536Ö0 -__LDBL_MIN__Ì65536Ö0 -__LDBL_REDIRÌ131072Í(name,proto)Ö0 -__LDBL_REDIR1Ì131072Í(name,proto,alias)Ö0 -__LDBL_REDIR1_NTHÌ131072Í(name,proto,alias)Ö0 -__LDBL_REDIR_DECLÌ131072Í(name)Ö0 -__LDBL_REDIR_NTHÌ131072Í(name,proto)Ö0 -__LEAFÌ65536Ö0 -__LEAF_ATTRÌ65536Ö0 -__LONG_LONG_MAX__Ì65536Ö0 -__LONG_MAX__Ì65536Ö0 -__LP64__Ì65536Ö0 -__MMX__Ì65536Ö0 -__MPU_PRESENTÌ65536Ö0 -__NO_INLINE__Ì65536Ö0 -__NTHÌ131072Í(fct)Ö0 -__NVIC_PRIO_BITSÌ65536Ö0 -__OÌ65536Ö0 -__ORDER_BIG_ENDIAN__Ì65536Ö0 -__ORDER_LITTLE_ENDIAN__Ì65536Ö0 -__ORDER_PDP_ENDIAN__Ì65536Ö0 -__PÌ65536Ö0 -__PÌ131072Í(args)Ö0 -__PKHBTÌ131072Í(ARG1,ARG2,ARG3)Ö0 -__PKHTBÌ131072Í(ARG1,ARG2,ARG3)Ö0 -__PMTÌ65536Ö0 -__PMTÌ131072Í(args)Ö0 -__PRAGMA_REDEFINE_EXTNAMEÌ65536Ö0 -__PTRDIFF_MAX__Ì65536Ö0 -__PTRDIFF_TYPE__Ì65536Ö0 -__REDIRECTÌ131072Í(name,proto,alias)Ö0 -__REDIRECT_LDBLÌ131072Í(name,proto,alias)Ö0 -__REDIRECT_NTHÌ131072Í(name,proto,alias)Ö0 -__REDIRECT_NTHNLÌ131072Í(name,proto,alias)Ö0 -__REDIRECT_NTH_LDBLÌ131072Í(name,proto,alias)Ö0 -__REGISTER_PREFIX__Ì65536Ö0 -__SCHAR_MAX__Ì65536Ö0 -__SHRT_MAX__Ì65536Ö0 -__SIG_ATOMIC_MAX__Ì65536Ö0 -__SIG_ATOMIC_MIN__Ì65536Ö0 -__SIG_ATOMIC_TYPE__Ì65536Ö0 -__SIZEOF_DOUBLE__Ì65536Ö0 -__SIZEOF_FLOAT__Ì65536Ö0 -__SIZEOF_INT128__Ì65536Ö0 -__SIZEOF_INT__Ì65536Ö0 -__SIZEOF_LONG_DOUBLE__Ì65536Ö0 -__SIZEOF_LONG_LONG__Ì65536Ö0 -__SIZEOF_LONG__Ì65536Ö0 -__SIZEOF_POINTER__Ì65536Ö0 -__SIZEOF_PTRDIFF_T__Ì65536Ö0 -__SIZEOF_SHORT__Ì65536Ö0 -__SIZEOF_SIZE_T__Ì65536Ö0 -__SIZEOF_WCHAR_T__Ì65536Ö0 -__SIZEOF_WINT_T__Ì65536Ö0 -__SIZE_MAX__Ì65536Ö0 -__SIZE_TYPE__Ì65536Ö0 -__SSAT16Ì131072Í(ARG1,ARG2)Ö0 -__SSE2_MATH__Ì65536Ö0 -__SSE2__Ì65536Ö0 -__SSE_MATH__Ì65536Ö0 -__SSE__Ì65536Ö0 -__SSP_STRONG__Ì65536Ö0 -__STATIC_INLINEÌ65536Ö0 -__STDC_HOSTED__Ì65536Ö0 -__STDC_IEC_559_COMPLEX__Ì65536Ö0 -__STDC_IEC_559__Ì65536Ö0 -__STDC_ISO_10646__Ì65536Ö0 -__STDC_NO_THREADS__Ì65536Ö0 -__STDC__Ì65536Ö0 -__STM32F042x6_HÌ65536Ö0 -__STM32F0_H__Ì65536Ö0 -__STM32F0xx_CMSIS_DEVICE_VERSIONÌ65536Ö0 -__STM32F0xx_CMSIS_DEVICE_VERSION_MAINÌ65536Ö0 -__STM32F0xx_CMSIS_DEVICE_VERSION_RCÌ65536Ö0 -__STM32F0xx_CMSIS_DEVICE_VERSION_SUB1Ì65536Ö0 -__STM32F0xx_CMSIS_DEVICE_VERSION_SUB2Ì65536Ö0 -__STM32F0xx_HÌ65536Ö0 -__STRINGÌ131072Í(x)Ö0 -__SYSCALL_WORDSIZEÌ65536Ö0 -__THROWÌ65536Ö0 -__THROWNLÌ65536Ö0 -__UINT16_CÌ131072Í(c)Ö0 -__UINT16_MAX__Ì65536Ö0 -__UINT16_TYPE__Ì65536Ö0 -__UINT32_CÌ131072Í(c)Ö0 -__UINT32_MAX__Ì65536Ö0 -__UINT32_TYPE__Ì65536Ö0 -__UINT64_CÌ131072Í(c)Ö0 -__UINT64_MAX__Ì65536Ö0 -__UINT64_TYPE__Ì65536Ö0 -__UINT8_CÌ131072Í(c)Ö0 -__UINT8_MAX__Ì65536Ö0 -__UINT8_TYPE__Ì65536Ö0 -__UINTMAX_CÌ131072Í(c)Ö0 -__UINTMAX_MAX__Ì65536Ö0 -__UINTMAX_TYPE__Ì65536Ö0 -__UINTPTR_MAX__Ì65536Ö0 -__UINTPTR_TYPE__Ì65536Ö0 -__UINT_FAST16_MAX__Ì65536Ö0 -__UINT_FAST16_TYPE__Ì65536Ö0 -__UINT_FAST32_MAX__Ì65536Ö0 -__UINT_FAST32_TYPE__Ì65536Ö0 -__UINT_FAST64_MAX__Ì65536Ö0 -__UINT_FAST64_TYPE__Ì65536Ö0 -__UINT_FAST8_MAX__Ì65536Ö0 -__UINT_FAST8_TYPE__Ì65536Ö0 -__UINT_LEAST16_MAX__Ì65536Ö0 -__UINT_LEAST16_TYPE__Ì65536Ö0 -__UINT_LEAST32_MAX__Ì65536Ö0 -__UINT_LEAST32_TYPE__Ì65536Ö0 -__UINT_LEAST64_MAX__Ì65536Ö0 -__UINT_LEAST64_TYPE__Ì65536Ö0 -__UINT_LEAST8_MAX__Ì65536Ö0 -__UINT_LEAST8_TYPE__Ì65536Ö0 -__USAT16Ì131072Í(ARG1,ARG2)Ö0 -__USER_LABEL_PREFIX__Ì65536Ö0 -__USE_ATFILEÌ65536Ö0 -__USE_FILE_OFFSET64Ì65536Ö0 -__USE_FORTIFY_LEVELÌ65536Ö0 -__USE_GNUÌ65536Ö0 -__USE_ISOC11Ì65536Ö0 -__USE_ISOC95Ì65536Ö0 -__USE_ISOC99Ì65536Ö0 -__USE_ISOCXX11Ì65536Ö0 -__USE_LARGEFILEÌ65536Ö0 -__USE_LARGEFILE64Ì65536Ö0 -__USE_MISCÌ65536Ö0 -__USE_POSIXÌ65536Ö0 -__USE_POSIX199309Ì65536Ö0 -__USE_POSIX199506Ì65536Ö0 -__USE_POSIX2Ì65536Ö0 -__USE_REENTRANTÌ65536Ö0 -__USE_UNIX98Ì65536Ö0 -__USE_XOPENÌ65536Ö0 -__USE_XOPEN2KÌ65536Ö0 -__USE_XOPEN2K8Ì65536Ö0 -__USE_XOPEN2K8XSIÌ65536Ö0 -__USE_XOPEN2KXSIÌ65536Ö0 -__USE_XOPEN_EXTENDEDÌ65536Ö0 -__USING_NAMESPACE_C99Ì131072Í(name)Ö0 -__USING_NAMESPACE_STDÌ131072Í(name)Ö0 -__VERSION__Ì65536Ö0 -__Vendor_SysTickConfigÌ65536Ö0 -__WCHAR_MAXÌ65536Ö0 -__WCHAR_MAX__Ì65536Ö0 -__WCHAR_MINÌ65536Ö0 -__WCHAR_MIN__Ì65536Ö0 -__WCHAR_TYPE__Ì65536Ö0 -__WINT_MAX__Ì65536Ö0 -__WINT_MIN__Ì65536Ö0 -__WINT_TYPE__Ì65536Ö0 -__WORDSIZEÌ65536Ö0 -__WORDSIZE_TIME64_COMPAT32Ì65536Ö0 -__always_inlineÌ65536Ö0 -__amd64Ì65536Ö0 -__amd64__Ì65536Ö0 -__attribute_alloc_size__Ì131072Í(params)Ö0 -__attribute_artificial__Ì65536Ö0 -__attribute_const__Ì65536Ö0 -__attribute_deprecated__Ì65536Ö0 -__attribute_format_arg__Ì131072Í(x)Ö0 -__attribute_format_strfmon__Ì131072Í(a,b)Ö0 -__attribute_malloc__Ì65536Ö0 -__attribute_noinline__Ì65536Ö0 -__attribute_pure__Ì65536Ö0 -__attribute_used__Ì65536Ö0 -__attribute_warn_unused_result__Ì65536Ö0 -__bosÌ131072Í(ptr)Ö0 -__bos0Ì131072Í(ptr)Ö0 -__code_model_small__Ì65536Ö0 -__cplusplusÌ65536Ö0 -__cpp_binary_literalsÌ65536Ö0 -__errordeclÌ131072Í(name,msg)Ö0 -__extern_always_inlineÌ65536Ö0 -__extern_inlineÌ65536Ö0 -__fini_array_endÌ32768Ö0Ïfuncp_t -__fini_array_startÌ32768Ö0Ïfuncp_t -__flexarrÌ65536Ö0 -__fortify_functionÌ65536Ö0 -__glibc_likelyÌ131072Í(cond)Ö0 -__glibc_unlikelyÌ131072Í(cond)Ö0 -__gnu_linux__Ì65536Ö0 -__has_includeÌ131072Í(STR)Ö0 -__has_include_nextÌ131072Í(STR)Ö0 -__init_array_endÌ32768Ö0Ïfuncp_t -__init_array_startÌ32768Ö0Ïfuncp_t -__int8_t_definedÌ65536Ö0 -__intptr_t_definedÌ65536Ö0 -__k8Ì65536Ö0 -__k8__Ì65536Ö0 -__linuxÌ65536Ö0 -__linux__Ì65536Ö0 -__long_double_tÌ65536Ö0 -__nonnullÌ131072Í(params)Ö0 -__preinit_array_endÌ32768Ö0Ïfuncp_t -__preinit_array_startÌ32768Ö0Ïfuncp_t -__ptr_tÌ65536Ö0 -__restrict_arrÌ65536Ö0 -__stub___compat_bdflushÌ65536Ö0 -__stub_chflagsÌ65536Ö0 -__stub_fattachÌ65536Ö0 -__stub_fchflagsÌ65536Ö0 -__stub_fdetachÌ65536Ö0 -__stub_getmsgÌ65536Ö0 -__stub_gttyÌ65536Ö0 -__stub_lchmodÌ65536Ö0 -__stub_putmsgÌ65536Ö0 -__stub_revokeÌ65536Ö0 -__stub_setloginÌ65536Ö0 -__stub_sigreturnÌ65536Ö0 -__stub_sstkÌ65536Ö0 -__stub_sttyÌ65536Ö0 -__uint32_t_definedÌ65536Ö0 -__unixÌ65536Ö0 -__unix__Ì65536Ö0 -__va_arg_packÌ131072Í()Ö0 -__va_arg_pack_lenÌ131072Í()Ö0 -__warnattrÌ131072Í(msg)Ö0 -__warndeclÌ131072Í(name,msg)Ö0 -__wurÌ65536Ö0 -__x86_64Ì65536Ö0 -__x86_64__Ì65536Ö0 -_dataÌ32768Ö0Ï_data_loadaddr -_data_loadaddrÌ32768Ö0 -_ebssÌ32768Ö0Ï_data_loadaddr -_edataÌ32768Ö0Ï_data_loadaddr -_stackÌ32768Ö0Ï_data_loadaddr -adc_comp_isrÌ65536Ö0 -anon_struct_0Ì2048Ö0 -blocking_handlerÌ16Í(void)Ö0Ïvoid -blocking_handlerÌ1024Í(void)Ö0Ïvoid -bus_faultÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -cec_can_isrÌ65536Ö0 -debug_monitorÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -dma1_channel1_isrÌ65536Ö0 -dma1_channel2_3_isrÌ65536Ö0 -dma1_channel4_5_isrÌ65536Ö0 -exti0_1_isrÌ65536Ö0 -exti2_3_isrÌ65536Ö0 -exti4_15_isrÌ65536Ö0 -flash_isrÌ65536Ö0 -funcp_tÌ4096Ö0Ïtypedef void -hard_faultÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -hard_fault_handlerÌ65536Ö0 -i2c1_isrÌ65536Ö0 -i2c2_isrÌ65536Ö0 -initial_sp_valueÌ64Îanon_struct_0Ö0Ïunsigned int * -irqÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -linuxÌ65536Ö0 -mainÌ1024Í(void)Ö0Ïvoid -memory_manage_faultÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -nmiÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -nmi_handlerÌ65536Ö0 -null_handlerÌ16Í(void)Ö0Ïvoid -null_handlerÌ1024Í(void)Ö0Ïvoid -pend_svÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -pend_sv_handlerÌ65536Ö0 -pin_clearÌ131072Í(gpioport,gpios)Ö0 -pin_readÌ131072Í(gpioport,gpios)Ö0 -pin_setÌ131072Í(gpioport,gpios)Ö0 -pin_toggleÌ131072Í(gpioport,gpios)Ö0 -pin_writeÌ131072Í(gpioport,gpios)Ö0 -pvd_isrÌ65536Ö0 -rcc_isrÌ65536Ö0 -reserved_x001cÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -reserved_x0034Ì64Îanon_struct_0Ö0Ïvector_table_entry_t -resetÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -reset_handlerÌ16Í(void)Ö0Ïvoid -rtc_isrÌ65536Ö0 -spi1_isrÌ65536Ö0 -spi2_isrÌ65536Ö0 -sv_callÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -sv_call_handlerÌ65536Ö0 -sys_tick_handlerÌ65536Ö0 -sysresetÌ16Í(void)Ö0Ïinline void -systickÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -tim14_isrÌ65536Ö0 -tim15_isrÌ65536Ö0 -tim16_isrÌ65536Ö0 -tim17_isrÌ65536Ö0 -tim1_brk_up_trg_com_isrÌ65536Ö0 -tim1_cc_isrÌ65536Ö0 -tim2_isrÌ65536Ö0 -tim3_isrÌ65536Ö0 -tim6_dac_isrÌ65536Ö0 -tim7_isrÌ65536Ö0 -tsc_isrÌ65536Ö0 -unixÌ65536Ö0 -usage_faultÌ64Îanon_struct_0Ö0Ïvector_table_entry_t -usart1_isrÌ65536Ö0 -usart2_isrÌ65536Ö0 -usart3_4_isrÌ65536Ö0 -usb_isrÌ65536Ö0 -vector_tableÌ16384Ö0Ïvector_table_t -vector_table_entry_tÌ4096Ö0Ïtypedef void -vector_table_tÌ4096Ö0Ïanon_struct_0 -wwdg_isrÌ65536Ö0 diff --git a/F0-nolib/pl2303/pl2303.bin b/F0-nolib/pl2303/pl2303.bin index cdb513146d3546a8193a1f10458c135478b1763b..a0ff3acd52214cc8b3fc9126e7a2303ea025f020 100755 GIT binary patch delta 870 zcma*lK}Zx)7zgn0&8Yi!+jVnubKTjt*&R`ITa%>GoghAVk@~Z@%}v@4fHMgIPX4 zSa*;-B;Rlm?}n>zzeMVzd_upU{MdcqS24d}Kkfgq=HES>IHY9HLC>bm0)M=exF{0M zATGfI#DLtykGajeg%_ElYB!bU4c(pA7TOFLpNnz~Z;KR`+I*^{%aK^Z8sG-AcakPIS%_z+-e~7Ekz!Lq&uxv>Q%!Y}1s1)pJ*@tc-_ybzzO2rjU>f^icJ;?;POWuu<1y^nfEUQ;Aq%|qP$z{fDNC!%EOX9^e*DtBqKM>t{FAxm@(NcT iIfy@idvFb&Kut06v-|M;r7mE86Fv6s|7do*JA|J$anT3> delta 810 zcma*iT}V?=902hDxp(fKt$nzux$Vw*x0^!S?Ar&0;L<|GYXlh~(o-6YFj!DvAF%ln zBYaq#Bp>$B!yaZ})UF1Dgar}|guGM_k`KMaAh3L>wv2ZBk9vqA>%x!!=Q)R)Iq-6S zGk8Gia|7)~2hnYpn1n_FKfgx4Zv8QAEc}b>KX!J$!-UCKni09 z&7k9G1#Puzx0=onyQQvIX#b_SWe~P_wrMs|MpI`jtlatzNC<03_qNVdM!&d0;nb zKe@u5(jp17>z0n>-mgy88Un@#K_-$>wbX4V6d6Jggjo)2QU@7k6|8xzw!aZsPQ0#^ z2Ild)kN6YQ6sRr$tu1j=0>u0f7S~9y>|6Da!(##WRIUKwnhw$CHR$g0D^XZix)ur( zV$mB0UV7m2<_bo2y8gHT(GPlUxir8=t=CAFy|5l7^O|c{A0eYmwe^q~yJ|a0E^1|4 zgmCsc`)uzfUs#9ZF1gH>9G%G{?LY_7X*7W*k*y8r9L9$zgJw_~-9vLYlhB>rK;tNd z&LR_RH?3lS81qGpC6vcJj%V`d2G(ix1ks_EI79?p7;O+xW}QGwd(^HoLDaw2gD$0la6j?EnA( diff --git a/F0-nolib/pl2303/usb.c b/F0-nolib/pl2303/usb.c index f7fe8eb..13a06e1 100644 --- a/F0-nolib/pl2303/usb.c +++ b/F0-nolib/pl2303/usb.c @@ -32,6 +32,7 @@ static uint8_t incoming_data[IDATASZ]; static uint8_t ovfl = 0; static uint16_t idatalen = 0; static int8_t usbON = 0; // ==1 when USB fully configured +static volatile uint8_t tx_succesfull = 0; // interrupt IN handler (never used?) static uint16_t EP1_Handler(ep_t ep){ @@ -80,6 +81,7 @@ static uint16_t EP23_Handler(ep_t ep){ ep.status = SET_STALL_TX(ep.status); }else if (ep.tx_flag){ ep.status = KEEP_STAT_TX(ep.status); + tx_succesfull = 1; } ep.status = SET_VALID_RX(ep.status); return ep.status; @@ -128,7 +130,10 @@ void USB_send(char *buf){ while(*p++) ++l; while(l){ uint16_t s = (l > USB_TXBUFSZ) ? USB_TXBUFSZ : l; + tx_succesfull = 0; EP_Write(3, (uint8_t*)&buf[ctr], s); + uint32_t ctra = 1000000; + while(--ctra && tx_succesfull == 0); l -= s; ctr += s; } diff --git a/F0_F1-LQFP48_testboard/elements.lib b/F0_F1-LQFP48_testboard/elements.lib new file mode 100644 index 0000000..9ada38f --- /dev/null +++ b/F0_F1-LQFP48_testboard/elements.lib @@ -0,0 +1,190 @@ +EESchema-LIBRARY Version 2.3 +#encoding utf-8 +# +# 74HC4051 +# +DEF 74HC4051 U 0 10 Y Y 1 F N +F0 "U" 0 0 50 H V C CNN +F1 "74HC4051" 0 -150 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V C CNN +$FPLIST + SO16 + TSSOP16 + SSOP16 + DHVQFN16 +$ENDFPLIST +DRAW +S -400 450 400 -450 0 1 0 N +X Y4 1 700 -50 300 L 50 50 1 1 B +X Y6 2 700 -250 300 L 50 50 1 1 B +X Z 3 0 -750 300 U 50 50 1 1 B +X Y7 4 700 -350 300 L 50 50 1 1 B +X Y5 5 700 -150 300 L 50 50 1 1 B +X ~E 6 -700 -350 300 R 50 50 1 1 I I +X VEE 7 -700 0 300 R 50 50 1 1 W +X GND 8 -700 -200 300 R 50 50 1 1 W +X S2 9 -700 150 300 R 50 50 1 1 I +X S1 10 -700 250 300 R 50 50 1 1 I +X S0 11 -700 350 300 R 50 50 1 1 I +X Y3 12 700 50 300 L 50 50 1 1 B +X Y0 13 700 350 300 L 50 50 1 1 B +X Y1 14 700 250 300 L 50 50 1 1 B +X Y2 15 700 150 300 L 50 50 1 1 B +X VCC 16 -700 -100 300 R 50 50 1 1 W +ENDDRAW +ENDDEF +# +# D_Schottky_x2_ACom_AKK +# +DEF D_Schottky_x2_ACom_AKK D 0 30 Y N 1 F N +F0 "D" 50 -100 50 H V C CNN +F1 "D_Schottky_x2_ACom_AKK" 0 100 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V C CNN +DRAW +P 2 0 1 0 -140 0 150 0 N +P 2 0 1 0 0 0 0 -100 N +P 3 0 1 8 -150 50 -150 -50 -150 -50 N +P 3 0 1 8 150 50 150 -50 150 -50 N +P 4 0 1 8 -150 50 -170 50 -170 40 -170 40 N +P 4 0 1 8 150 -50 170 -50 170 -40 170 -40 N +P 4 0 1 8 150 50 130 50 130 40 130 40 N +P 5 0 1 8 -130 -40 -130 -50 -150 -50 -150 -50 -150 -50 N +P 6 0 1 8 -50 -50 -150 0 -50 50 -50 -50 -50 -50 -50 -50 N +P 6 0 1 8 50 50 150 0 50 -50 50 50 50 50 50 50 N +X A 1 0 -200 100 U 50 50 0 1 P +X K 2 -300 0 150 R 50 50 0 1 P +X K 3 300 0 150 L 50 50 0 1 P +ENDDRAW +ENDDEF +# +# LM1117-ADJ +# +DEF LM1117-ADJ U 0 30 Y Y 1 F N +F0 "U" 100 -250 50 H V C CNN +F1 "LM1117-ADJ" 0 250 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V C CNN +ALIAS LM1117-1.8 LM1117-2.5 LM1117-3.3 LM1117-5.0 +$FPLIST + SOT-223* + TO-263* + TO-252* +$ENDFPLIST +DRAW +S -200 -200 200 200 0 1 10 f +X GND/ADJ 1 0 -300 100 U 50 50 1 1 W +X VO 2 300 0 100 L 50 50 1 1 w +X VI 3 -300 0 100 R 50 50 1 1 W +ENDDRAW +ENDDEF +# +# PESD1CAN +# +DEF PESD1CAN D 0 30 Y N 1 F N +F0 "D" 0 -350 50 H V C CNN +F1 "PESD1CAN" 50 150 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V C CNN +$FPLIST + SOT23 +$ENDFPLIST +DRAW +S -200 100 300 -300 0 1 0 N +P 2 0 1 0 -140 -200 150 -200 N +P 2 0 1 0 -140 0 150 0 N +P 3 0 1 8 -150 -150 -150 -250 -150 -250 N +P 3 0 1 8 -150 50 -150 -50 -150 -50 N +P 3 0 1 8 150 -150 150 -250 150 -250 N +P 3 0 1 8 150 50 150 -50 150 -50 N +P 4 0 1 8 -150 -150 -170 -150 -170 -160 -170 -160 N +P 4 0 1 8 -150 50 -170 50 -170 40 -170 40 N +P 4 0 1 8 150 -250 170 -250 170 -240 170 -240 N +P 4 0 1 8 150 -150 130 -150 130 -160 130 -160 N +P 4 0 1 8 150 -50 170 -50 170 -40 170 -40 N +P 4 0 1 0 150 0 250 0 250 -200 150 -200 N +P 4 0 1 8 150 50 130 50 130 40 130 40 N +P 5 0 1 8 -130 -240 -130 -250 -150 -250 -150 -250 -150 -250 N +P 5 0 1 8 -130 -40 -130 -50 -150 -50 -150 -50 -150 -50 N +P 6 0 1 8 -50 -250 -150 -200 -50 -150 -50 -250 -50 -250 -50 -250 N +P 6 0 1 8 -50 -50 -150 0 -50 50 -50 -50 -50 -50 -50 -50 N +P 6 0 1 8 50 -150 150 -200 50 -250 50 -150 50 -150 50 -150 N +P 6 0 1 8 50 50 150 0 50 -50 50 50 50 50 50 50 N +X K 1 -300 0 150 R 50 50 0 1 P +X K 2 -300 -200 150 R 50 50 0 1 P +X O 3 400 -100 150 L 50 50 0 1 P +ENDDRAW +ENDDEF +# +# TPS2051 +# +DEF TPS2051 U 0 40 Y Y 1 F N +F0 "U" 0 -300 60 H V C CNN +F1 "TPS2051" 0 300 60 H V C CNN +F2 "" 0 0 60 H I C CNN +F3 "" 0 0 60 H I C CNN +DRAW +S -250 250 250 -250 0 1 0 N +X GND 1 -450 150 200 R 50 50 1 1 W +X IN 2 -450 50 200 R 50 50 1 1 W +X IN 3 -450 -50 200 R 50 50 1 1 P +X EN 4 -450 -150 200 R 50 50 1 1 I +X ~OC 5 450 -150 200 L 50 50 1 1 O +X OUT 6 450 -50 200 L 50 50 1 1 P +X OUT 7 450 50 200 L 50 50 1 1 P +X OUT 8 450 150 200 L 50 50 1 1 w +ENDDRAW +ENDDEF +# +# USB6B1 +# +DEF USB6B1 D 0 30 Y N 1 F N +F0 "D" 0 -450 50 H V C CNN +F1 "USB6B1" 0 400 50 H V C CNN +F2 "" 200 -100 50 V V C CNN +F3 "" 200 -100 50 V V C CNN +$FPLIST + SO8 +$ENDFPLIST +DRAW +C -150 -300 7 0 1 0 N +C -150 100 7 0 1 0 N +C -150 300 7 0 1 0 N +C 0 -300 7 0 1 0 N +C 0 -100 7 0 1 0 N +C 0 300 7 0 1 0 N +C 200 -300 7 0 1 0 N +C 200 300 7 0 1 0 N +S -300 -100 300 -100 0 1 0 N +S -300 300 300 300 0 1 0 N +S -200 -150 -100 -150 0 1 0 N +S -200 250 -100 250 0 1 0 N +S -150 300 -150 -300 0 1 0 N +S -50 -150 50 -150 0 1 0 N +S -50 250 50 250 0 1 0 N +S 0 300 0 -300 0 1 0 N +S 200 300 200 -300 0 1 0 N +S 300 -300 -300 -300 0 1 0 N +S 300 100 -300 100 0 1 0 N +P 3 0 1 8 150 50 250 50 250 50 N +P 4 0 1 8 150 50 150 30 160 30 160 30 N +P 4 0 1 8 250 50 250 70 240 70 240 70 N +P 5 0 1 0 -250 350 300 350 300 -350 -250 -350 -250 350 N +P 6 0 1 8 -200 -250 -150 -150 -100 -250 -200 -250 -200 -250 -200 -250 N +P 6 0 1 8 -200 150 -150 250 -100 150 -200 150 -200 150 -200 150 N +P 6 0 1 8 -50 -250 0 -150 50 -250 -50 -250 -50 -250 -50 -250 N +P 6 0 1 8 -50 150 0 250 50 150 -50 150 -50 150 -50 150 N +P 6 0 1 8 150 -50 200 50 250 -50 150 -50 150 -50 150 -50 N +X VCC 1 -500 300 200 R 50 50 1 1 P +X I/O1 2 -500 100 200 R 50 50 1 1 P +X I/O2 3 -500 -100 200 R 50 50 1 1 P +X GND 4 -500 -300 200 R 50 50 1 1 P +X GND 5 500 -300 200 L 50 50 1 1 P +X I/O2 6 500 -100 200 L 50 50 1 1 P +X I/O1 7 500 100 200 L 50 50 1 1 P +X VCC 8 500 300 200 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +#End Library diff --git a/F0_F1-LQFP48_testboard/fp-info-cache b/F0_F1-LQFP48_testboard/fp-info-cache new file mode 100644 index 0000000..adf71b1 --- /dev/null +++ b/F0_F1-LQFP48_testboard/fp-info-cache @@ -0,0 +1,1632 @@ +355028001279000 +Package_DIP +DIP-4_W7.62mm +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +4 +4 +Package_DIP +DIP-4_W7.62mm_LongPads +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +4 +4 +Package_DIP +DIP-4_W7.62mm_SMDSocket_SmallPads +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +4 +4 +Package_DIP +DIP-4_W7.62mm_Socket +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +4 +4 +Package_DIP +DIP-4_W7.62mm_Socket_LongPads +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +4 +4 +Package_DIP +DIP-4_W8.89mm_SMDSocket_LongPads +4-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +4 +4 +Package_DIP +DIP-4_W10.16mm +4-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +4 +4 +Package_DIP +DIP-4_W10.16mm_LongPads +4-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +4 +4 +Package_DIP +DIP-5-6_W7.62mm +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +5 +5 +Package_DIP +DIP-5-6_W7.62mm_LongPads +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +5 +5 +Package_DIP +DIP-5-6_W7.62mm_SMDSocket_SmallPads +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +5 +5 +Package_DIP +DIP-5-6_W7.62mm_Socket +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +5 +5 +Package_DIP +DIP-5-6_W7.62mm_Socket_LongPads +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +5 +5 +Package_DIP +DIP-5-6_W8.89mm_SMDSocket_LongPads +5-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +5 +5 +Package_DIP +DIP-5-6_W10.16mm +5-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +5 +5 +Package_DIP +DIP-5-6_W10.16mm_LongPads +5-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +5 +5 +Package_DIP +DIP-6_W7.62mm +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +6 +6 +Package_DIP +DIP-6_W7.62mm_LongPads +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +6 +6 +Package_DIP +DIP-6_W7.62mm_SMDSocket_SmallPads +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +6 +6 +Package_DIP +DIP-6_W7.62mm_Socket +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +6 +6 +Package_DIP +DIP-6_W7.62mm_Socket_LongPads +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +6 +6 +Package_DIP +DIP-6_W8.89mm_SMDSocket_LongPads +6-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +6 +6 +Package_DIP +DIP-6_W10.16mm +6-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +6 +6 +Package_DIP +DIP-6_W10.16mm_LongPads +6-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +6 +6 +Package_DIP +DIP-8-N6_W7.62mm +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), missing pin 6 +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +7 +7 +Package_DIP +DIP-8-N7_W7.62mm +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), missing pin 7 +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +7 +7 +Package_DIP +DIP-8_W7.62mm +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +8 +8 +Package_DIP +DIP-8_W7.62mm_LongPads +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +8 +8 +Package_DIP +DIP-8_W7.62mm_SMDSocket_SmallPads +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +8 +8 +Package_DIP +DIP-8_W7.62mm_Socket +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +8 +8 +Package_DIP +DIP-8_W7.62mm_Socket_LongPads +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +8 +8 +Package_DIP +DIP-8_W8.89mm_SMDSocket_LongPads +8-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +8 +8 +Package_DIP +DIP-8_W10.16mm +8-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +8 +8 +Package_DIP +DIP-8_W10.16mm_LongPads +8-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +8 +8 +Package_DIP +DIP-10_W7.62mm +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +10 +10 +Package_DIP +DIP-10_W7.62mm_LongPads +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +10 +10 +Package_DIP +DIP-10_W7.62mm_SMDSocket_SmallPads +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +10 +10 +Package_DIP +DIP-10_W7.62mm_Socket +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +10 +10 +Package_DIP +DIP-10_W7.62mm_Socket_LongPads +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +10 +10 +Package_DIP +DIP-10_W8.89mm_SMDSocket_LongPads +10-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +10 +10 +Package_DIP +DIP-10_W10.16mm +10-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +10 +10 +Package_DIP +DIP-10_W10.16mm_LongPads +10-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +10 +10 +Package_DIP +DIP-12_W7.62mm +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +12 +12 +Package_DIP +DIP-12_W7.62mm_LongPads +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +12 +12 +Package_DIP +DIP-12_W7.62mm_SMDSocket_SmallPads +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +12 +12 +Package_DIP +DIP-12_W7.62mm_Socket +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +12 +12 +Package_DIP +DIP-12_W7.62mm_Socket_LongPads +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +12 +12 +Package_DIP +DIP-12_W8.89mm_SMDSocket_LongPads +12-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +12 +12 +Package_DIP +DIP-12_W10.16mm +12-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +12 +12 +Package_DIP +DIP-12_W10.16mm_LongPads +12-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +12 +12 +Package_DIP +DIP-14_W7.62mm +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +14 +14 +Package_DIP +DIP-14_W7.62mm_LongPads +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +14 +14 +Package_DIP +DIP-14_W7.62mm_SMDSocket_SmallPads +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +14 +14 +Package_DIP +DIP-14_W7.62mm_Socket +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +14 +14 +Package_DIP +DIP-14_W7.62mm_Socket_LongPads +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +14 +14 +Package_DIP +DIP-14_W8.89mm_SMDSocket_LongPads +14-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +14 +14 +Package_DIP +DIP-14_W10.16mm +14-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +14 +14 +Package_DIP +DIP-14_W10.16mm_LongPads +14-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +14 +14 +Package_DIP +DIP-16_W7.62mm +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +16 +16 +Package_DIP +DIP-16_W7.62mm_LongPads +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +16 +16 +Package_DIP +DIP-16_W7.62mm_SMDSocket_SmallPads +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +16 +16 +Package_DIP +DIP-16_W7.62mm_Socket +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +16 +16 +Package_DIP +DIP-16_W7.62mm_Socket_LongPads +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +16 +16 +Package_DIP +DIP-16_W8.89mm_SMDSocket_LongPads +16-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +16 +16 +Package_DIP +DIP-16_W10.16mm +16-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +16 +16 +Package_DIP +DIP-16_W10.16mm_LongPads +16-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +16 +16 +Package_DIP +DIP-18_W7.62mm +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +18 +18 +Package_DIP +DIP-18_W7.62mm_LongPads +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +18 +18 +Package_DIP +DIP-18_W7.62mm_SMDSocket_SmallPads +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +18 +18 +Package_DIP +DIP-18_W7.62mm_Socket +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +18 +18 +Package_DIP +DIP-18_W7.62mm_Socket_LongPads +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +18 +18 +Package_DIP +DIP-18_W8.89mm_SMDSocket_LongPads +18-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +18 +18 +Package_DIP +DIP-20_W7.62mm +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +20 +20 +Package_DIP +DIP-20_W7.62mm_LongPads +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +20 +20 +Package_DIP +DIP-20_W7.62mm_SMDSocket_SmallPads +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +20 +20 +Package_DIP +DIP-20_W7.62mm_Socket +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +20 +20 +Package_DIP +DIP-20_W7.62mm_Socket_LongPads +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +20 +20 +Package_DIP +DIP-20_W8.89mm_SMDSocket_LongPads +20-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +20 +20 +Package_DIP +DIP-22_W7.62mm +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +22 +22 +Package_DIP +DIP-22_W7.62mm_LongPads +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +22 +22 +Package_DIP +DIP-22_W7.62mm_SMDSocket_SmallPads +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +22 +22 +Package_DIP +DIP-22_W7.62mm_Socket +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +22 +22 +Package_DIP +DIP-22_W7.62mm_Socket_LongPads +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +22 +22 +Package_DIP +DIP-22_W8.89mm_SMDSocket_LongPads +22-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +22 +22 +Package_DIP +DIP-22_W10.16mm +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +22 +22 +Package_DIP +DIP-22_W10.16mm_LongPads +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +22 +22 +Package_DIP +DIP-22_W10.16mm_SMDSocket_SmallPads +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil SMDSocket SmallPads +0 +22 +22 +Package_DIP +DIP-22_W10.16mm_Socket +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), Socket +THT DIP DIL PDIP 2.54mm 10.16mm 400mil Socket +0 +22 +22 +Package_DIP +DIP-22_W10.16mm_Socket_LongPads +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil Socket LongPads +0 +22 +22 +Package_DIP +DIP-22_W11.43mm_SMDSocket_LongPads +22-lead though-hole mounted DIP package, row spacing 11.43 mm (450 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 11.43mm 450mil SMDSocket LongPads +0 +22 +22 +Package_DIP +DIP-24_W7.62mm +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +24 +24 +Package_DIP +DIP-24_W7.62mm_LongPads +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +24 +24 +Package_DIP +DIP-24_W7.62mm_SMDSocket_SmallPads +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +24 +24 +Package_DIP +DIP-24_W7.62mm_Socket +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +24 +24 +Package_DIP +DIP-24_W7.62mm_Socket_LongPads +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +24 +24 +Package_DIP +DIP-24_W8.89mm_SMDSocket_LongPads +24-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +24 +24 +Package_DIP +DIP-24_W10.16mm +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +24 +24 +Package_DIP +DIP-24_W10.16mm_LongPads +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +24 +24 +Package_DIP +DIP-24_W10.16mm_SMDSocket_SmallPads +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil SMDSocket SmallPads +0 +24 +24 +Package_DIP +DIP-24_W10.16mm_Socket +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), Socket +THT DIP DIL PDIP 2.54mm 10.16mm 400mil Socket +0 +24 +24 +Package_DIP +DIP-24_W10.16mm_Socket_LongPads +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil Socket LongPads +0 +24 +24 +Package_DIP +DIP-24_W11.43mm_SMDSocket_LongPads +24-lead though-hole mounted DIP package, row spacing 11.43 mm (450 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 11.43mm 450mil SMDSocket LongPads +0 +24 +24 +Package_DIP +DIP-24_W15.24mm +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +24 +24 +Package_DIP +DIP-24_W15.24mm_LongPads +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +24 +24 +Package_DIP +DIP-24_W15.24mm_SMDSocket_SmallPads +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +24 +24 +Package_DIP +DIP-24_W15.24mm_Socket +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +24 +24 +Package_DIP +DIP-24_W15.24mm_Socket_LongPads +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +24 +24 +Package_DIP +DIP-24_W16.51mm_SMDSocket_LongPads +24-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +24 +24 +Package_DIP +DIP-28_W7.62mm +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +28 +28 +Package_DIP +DIP-28_W7.62mm_LongPads +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +28 +28 +Package_DIP +DIP-28_W7.62mm_SMDSocket_SmallPads +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +28 +28 +Package_DIP +DIP-28_W7.62mm_Socket +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +28 +28 +Package_DIP +DIP-28_W7.62mm_Socket_LongPads +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +28 +28 +Package_DIP +DIP-28_W8.89mm_SMDSocket_LongPads +28-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +28 +28 +Package_DIP +DIP-28_W15.24mm +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +28 +28 +Package_DIP +DIP-28_W15.24mm_LongPads +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +28 +28 +Package_DIP +DIP-28_W15.24mm_SMDSocket_SmallPads +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +28 +28 +Package_DIP +DIP-28_W15.24mm_Socket +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +28 +28 +Package_DIP +DIP-28_W15.24mm_Socket_LongPads +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +28 +28 +Package_DIP +DIP-28_W16.51mm_SMDSocket_LongPads +28-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +28 +28 +Package_DIP +DIP-32_W7.62mm +32-lead dip package, row spacing 7.62 mm (300 mils) +DIL DIP PDIP 2.54mm 7.62mm 300mil +0 +32 +32 +Package_DIP +DIP-32_W15.24mm +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +32 +32 +Package_DIP +DIP-32_W15.24mm_LongPads +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +32 +32 +Package_DIP +DIP-32_W15.24mm_SMDSocket_SmallPads +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +32 +32 +Package_DIP +DIP-32_W15.24mm_Socket +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +32 +32 +Package_DIP +DIP-32_W15.24mm_Socket_LongPads +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +32 +32 +Package_DIP +DIP-32_W16.51mm_SMDSocket_LongPads +32-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +32 +32 +Package_DIP +DIP-40_W15.24mm +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +40 +40 +Package_DIP +DIP-40_W15.24mm_LongPads +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +40 +40 +Package_DIP +DIP-40_W15.24mm_SMDSocket_SmallPads +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +40 +40 +Package_DIP +DIP-40_W15.24mm_Socket +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +40 +40 +Package_DIP +DIP-40_W15.24mm_Socket_LongPads +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +40 +40 +Package_DIP +DIP-40_W16.51mm_SMDSocket_LongPads +40-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +40 +40 +Package_DIP +DIP-40_W25.4mm +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils) +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil +0 +40 +40 +Package_DIP +DIP-40_W25.4mm_LongPads +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), LongPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil LongPads +0 +40 +40 +Package_DIP +DIP-40_W25.4mm_SMDSocket_SmallPads +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil SMDSocket SmallPads +0 +40 +40 +Package_DIP +DIP-40_W25.4mm_Socket +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), Socket +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil Socket +0 +40 +40 +Package_DIP +DIP-40_W25.4mm_Socket_LongPads +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil Socket LongPads +0 +40 +40 +Package_DIP +DIP-40_W26.67mm_SMDSocket_LongPads +40-lead though-hole mounted DIP package, row spacing 26.67 mm (1050 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 26.669999999999998mm 1050mil SMDSocket LongPads +0 +40 +40 +Package_DIP +DIP-42_W15.24mm +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +42 +42 +Package_DIP +DIP-42_W15.24mm_LongPads +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +42 +42 +Package_DIP +DIP-42_W15.24mm_SMDSocket_SmallPads +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +42 +42 +Package_DIP +DIP-42_W15.24mm_Socket +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +42 +42 +Package_DIP +DIP-42_W15.24mm_Socket_LongPads +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +42 +42 +Package_DIP +DIP-42_W16.51mm_SMDSocket_LongPads +42-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +42 +42 +Package_DIP +DIP-48_W15.24mm +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +48 +48 +Package_DIP +DIP-48_W15.24mm_LongPads +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +48 +48 +Package_DIP +DIP-48_W15.24mm_SMDSocket_SmallPads +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +48 +48 +Package_DIP +DIP-48_W15.24mm_Socket +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +48 +48 +Package_DIP +DIP-48_W15.24mm_Socket_LongPads +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +48 +48 +Package_DIP +DIP-48_W16.51mm_SMDSocket_LongPads +48-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +48 +48 +Package_DIP +DIP-64_W15.24mm +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +64 +64 +Package_DIP +DIP-64_W15.24mm_LongPads +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +64 +64 +Package_DIP +DIP-64_W15.24mm_SMDSocket_SmallPads +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +64 +64 +Package_DIP +DIP-64_W15.24mm_Socket +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +64 +64 +Package_DIP +DIP-64_W15.24mm_Socket_LongPads +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +64 +64 +Package_DIP +DIP-64_W16.51mm_SMDSocket_LongPads +64-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +64 +64 +Package_DIP +DIP-64_W22.86mm +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils) +THT DIP DIL PDIP 2.54mm 22.86mm 900mil +0 +64 +64 +Package_DIP +DIP-64_W22.86mm_LongPads +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils), LongPads +THT DIP DIL PDIP 2.54mm 22.86mm 900mil LongPads +0 +64 +64 +Package_DIP +DIP-64_W22.86mm_SMDSocket_SmallPads +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 22.86mm 900mil SMDSocket SmallPads +0 +64 +64 +Package_DIP +DIP-64_W22.86mm_Socket +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils), Socket +THT DIP DIL PDIP 2.54mm 22.86mm 900mil Socket +0 +64 +64 +Package_DIP +DIP-64_W22.86mm_Socket_LongPads +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 22.86mm 900mil Socket LongPads +0 +64 +64 +Package_DIP +DIP-64_W24.13mm_SMDSocket_LongPads +64-lead though-hole mounted DIP package, row spacing 24.13 mm (950 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 24.13mm 950mil SMDSocket LongPads +0 +64 +64 +Package_DIP +DIP-64_W25.4mm +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils) +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil +0 +64 +64 +Package_DIP +DIP-64_W25.4mm_LongPads +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), LongPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil LongPads +0 +64 +64 +Package_DIP +DIP-64_W25.4mm_SMDSocket_SmallPads +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil SMDSocket SmallPads +0 +64 +64 +Package_DIP +DIP-64_W25.4mm_Socket +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), Socket +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil Socket +0 +64 +64 +Package_DIP +DIP-64_W25.4mm_Socket_LongPads +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil Socket LongPads +0 +64 +64 +Package_DIP +DIP-64_W26.67mm_SMDSocket_LongPads +64-lead though-hole mounted DIP package, row spacing 26.67 mm (1050 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 26.669999999999998mm 1050mil SMDSocket LongPads +0 +64 +64 +Package_DIP +Fairchild_LSOP-8 +8-Lead, 300\" Wide, Surface Mount Package (https://www.fairchildsemi.com/package-drawings/ML/MLSOP08A.pdf) +LSOP 2.54mm 300mil +0 +8 +8 +Package_DIP +PowerIntegrations_eDIP-12B +Power Integrations eDIP-12B, see https://www.power.com/sites/default/files/product-docs/linkswitch-pl_family_datasheet.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +11 +11 +Package_DIP +PowerIntegrations_PDIP-8B +Power Integrations variant of 8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads, see https://www.power.com/sites/default/files/product-docs/lnk520.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +7 +7 +Package_DIP +PowerIntegrations_PDIP-8C +Power Integrations variant of 8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads, see https://ac-dc.power.com/sites/default/files/product-docs/tinyswitch-iii_family_datasheet.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +7 +7 +Package_DIP +PowerIntegrations_SDIP-10C +PowerIntegrations variant of 10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads, see https://www.power.com/sites/default/files/product-docs/tophx_family_datasheet.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +9 +9 +Package_DIP +PowerIntegrations_SMD-8 +PowerIntegrations variant of 8-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils), see https://www.power.com/sites/default/files/product-docs/lnk520.pdf +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +8 +8 +Package_DIP +PowerIntegrations_SMD-8B +PowerIntegrations variant of 8-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils), see https://www.power.com/sites/default/files/product-docs/lnk520.pdf +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +7 +7 +Package_DIP +PowerIntegrations_SMD-8C +PowerIntegrations variant of 8-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils), see https://ac-dc.power.com/sites/default/files/product-docs/tinyswitch-iii_family_datasheet.pdf +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +7 +7 +Package_DIP +SMDIP-4_W7.62mm +4-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +4 +4 +Package_DIP +SMDIP-4_W9.53mm +4-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +4 +4 +Package_DIP +SMDIP-4_W9.53mm_Clearance8mm +4-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +4 +4 +Package_DIP +SMDIP-4_W11.48mm +4-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +4 +4 +Package_DIP +SMDIP-6_W7.62mm +6-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +6 +6 +Package_DIP +SMDIP-6_W9.53mm +6-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +6 +6 +Package_DIP +SMDIP-6_W9.53mm_Clearance8mm +6-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +6 +6 +Package_DIP +SMDIP-6_W11.48mm +6-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +6 +6 +Package_DIP +SMDIP-8_W7.62mm +8-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +8 +8 +Package_DIP +SMDIP-8_W9.53mm +8-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +8 +8 +Package_DIP +SMDIP-8_W9.53mm_Clearance8mm +8-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +8 +8 +Package_DIP +SMDIP-8_W11.48mm +8-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +8 +8 +Package_DIP +SMDIP-10_W7.62mm +10-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +10 +10 +Package_DIP +SMDIP-10_W9.53mm +10-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +10 +10 +Package_DIP +SMDIP-10_W9.53mm_Clearance8mm +10-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +10 +10 +Package_DIP +SMDIP-10_W11.48mm +10-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +10 +10 +Package_DIP +SMDIP-12_W7.62mm +12-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +12 +12 +Package_DIP +SMDIP-12_W9.53mm +12-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +12 +12 +Package_DIP +SMDIP-12_W9.53mm_Clearance8mm +12-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +12 +12 +Package_DIP +SMDIP-12_W11.48mm +12-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +12 +12 +Package_DIP +SMDIP-14_W7.62mm +14-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +14 +14 +Package_DIP +SMDIP-14_W9.53mm +14-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +14 +14 +Package_DIP +SMDIP-14_W9.53mm_Clearance8mm +14-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +14 +14 +Package_DIP +SMDIP-14_W11.48mm +14-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +14 +14 +Package_DIP +SMDIP-16_W7.62mm +16-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +16 +16 +Package_DIP +SMDIP-16_W9.53mm +16-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +16 +16 +Package_DIP +SMDIP-16_W9.53mm_Clearance8mm +16-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +16 +16 +Package_DIP +SMDIP-16_W11.48mm +16-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +16 +16 +Package_DIP +SMDIP-18_W7.62mm +18-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +18 +18 +Package_DIP +SMDIP-18_W9.53mm +18-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +18 +18 +Package_DIP +SMDIP-18_W9.53mm_Clearance8mm +18-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +18 +18 +Package_DIP +SMDIP-18_W11.48mm +18-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +18 +18 +Package_DIP +SMDIP-20_W7.62mm +20-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +20 +20 +Package_DIP +SMDIP-20_W9.53mm +20-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +20 +20 +Package_DIP +SMDIP-20_W9.53mm_Clearance8mm +20-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +20 +20 +Package_DIP +SMDIP-20_W11.48mm +20-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +20 +20 +Package_DIP +SMDIP-22_W7.62mm +22-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +22 +22 +Package_DIP +SMDIP-22_W9.53mm +22-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +22 +22 +Package_DIP +SMDIP-22_W9.53mm_Clearance8mm +22-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +22 +22 +Package_DIP +SMDIP-22_W11.48mm +22-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +22 +22 +Package_DIP +SMDIP-24_W7.62mm +24-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +24 +24 +Package_DIP +SMDIP-24_W9.53mm +24-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +24 +24 +Package_DIP +SMDIP-24_W11.48mm +24-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +24 +24 +Package_DIP +SMDIP-24_W15.24mm +24-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +24 +24 +Package_DIP +SMDIP-28_W15.24mm +28-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +28 +28 +Package_DIP +SMDIP-32_W7.62mm +32-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +32 +32 +Package_DIP +SMDIP-32_W9.53mm +32-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +32 +32 +Package_DIP +SMDIP-32_W11.48mm +32-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +32 +32 +Package_DIP +SMDIP-32_W15.24mm +32-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +32 +32 +Package_DIP +SMDIP-40_W15.24mm +40-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +40 +40 +Package_DIP +SMDIP-40_W25.24mm +40-lead surface-mounted (SMD) DIP package, row spacing 25.24 mm (993 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 25.24mm 993mil +0 +40 +40 +Package_DIP +SMDIP-42_W15.24mm +42-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +42 +42 +Package_DIP +SMDIP-48_W15.24mm +48-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +48 +48 +Package_DIP +SMDIP-64_W15.24mm +64-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +64 +64 +Package_DIP +Toshiba_11-7A9 +Toshiba 11-7A9 package, like 6-lead dip package with missing pin 5, row spacing 7.62 mm (300 mils), https://toshiba.semicon-storage.com/info/docget.jsp?did=1421&prodName=TLP3021(S) +Toshiba 11-7A9 DIL DIP PDIP 2.54mm 7.62mm 300mil +0 +5 +5 +Package_DIP +Vishay_HVM-DIP-3_W7.62mm +3-lead though-hole mounted high-volatge DIP package (based on standard DIP-4), row spacing 7.62 mm (300 mils), see https://www.vishay.com/docs/91361/hexdip.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Vishay HVMDIP HEXDIP +0 +4 +3 diff --git a/F0_F1-LQFP48_testboard/fp-lib-table b/F0_F1-LQFP48_testboard/fp-lib-table new file mode 100644 index 0000000..9132ea0 --- /dev/null +++ b/F0_F1-LQFP48_testboard/fp-lib-table @@ -0,0 +1,6 @@ +(fp_lib_table + (lib (name my_footprints)(type KiCad)(uri "$(KIPRJMOD)/my_footprints.pretty")(options "")(descr "")) + (lib (name LED_THT)(type KiCad)(uri ${KISYSMOD}/LED_THT.pretty)(options "")(descr "")) + (lib (name Crystal)(type KiCad)(uri ${KISYSMOD}/Crystal.pretty)(options "")(descr "")) + (lib (name Potentiometer_THT)(type KiCad)(uri ${KISYSMOD}/Potentiometer_THT.pretty)(options "")(descr "")) +) diff --git a/F0_F1-LQFP48_testboard/my_footprints.pretty/Hole_3mm.kicad_mod b/F0_F1-LQFP48_testboard/my_footprints.pretty/Hole_3mm.kicad_mod new file mode 100644 index 0000000..4776c5d --- /dev/null +++ b/F0_F1-LQFP48_testboard/my_footprints.pretty/Hole_3mm.kicad_mod @@ -0,0 +1,9 @@ +(module Hole_3mm (layer F.Cu) (tedit 5913F6E4) + (fp_text reference REF** (at 0 3.81) (layer F.SilkS) hide + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Hole_3mm (at 0 -7.62) (layer F.Fab) hide + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole circle (at 0 0) (size 5 5) (drill 3) (layers *.Cu *.Mask)) +) diff --git a/F0_F1-LQFP48_testboard/my_footprints.pretty/Potentiometer.kicad_mod b/F0_F1-LQFP48_testboard/my_footprints.pretty/Potentiometer.kicad_mod new file mode 100644 index 0000000..597a6ad --- /dev/null +++ b/F0_F1-LQFP48_testboard/my_footprints.pretty/Potentiometer.kicad_mod @@ -0,0 +1,51 @@ +(module Potentiometer (layer F.Cu) (tedit 5CDABBAE) + (descr http://www.ttelectronics.com/sites/default/files/download-files/Datasheet_PanelPot_P09xSeries.pdf) + (tags "potentiometer vertical TT P0915N single") + (fp_text reference REF** (at 2.5 -13.5) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Potentiometer (at 2.5 2) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -3.1 -9.75) (end -3.1 -12.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.1 -0.75) (end 6.15 -0.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -12.6) (end 8.1 -12.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.97 -0.88) (end 6.15 -0.88) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.97 -12.47) (end -2.97 -9.75) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.97 -12.47) (end -2.97 -12.47) (layer F.SilkS) (width 0.12)) + (fp_circle (center 2.5 -7.5) (end 5.5 -7.5) (layer F.Fab) (width 0.12)) + (fp_line (start -2.85 -12.35) (end 7.85 -12.35) (layer F.Fab) (width 0.1)) + (fp_line (start -2.85 -1) (end -2.85 -12.35) (layer F.Fab) (width 0.1)) + (fp_line (start 7.85 -1) (end -2.85 -1) (layer F.Fab) (width 0.1)) + (fp_line (start 7.85 -12.35) (end 7.85 -1) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.5 -7.5) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1.15 -0.88) (end -2.97 -0.88) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.15 1.15) (end 6.15 -0.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.15 -0.75) (end -3.1 -0.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.15 1.15) (end -1.15 -0.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 6.15 1.15) (end -1.15 1.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -9.75) (end -4.5 -9.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.5 -5.25) (end -4.5 -9.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -0.75) (end -3.1 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -5.25) (end -4.5 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.1 -0.75) (end 8.1 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.1 -9.75) (end 8.1 -12.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.5 -9.75) (end 8.1 -9.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.5 -5.25) (end 8.1 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.5 -5.25) (end 9.5 -9.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.97 -5.25) (end -2.97 -0.88) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.97 -5.25) (end 7.97 -0.88) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.97 -12.47) (end 7.97 -9.75) (layer F.SilkS) (width 0.12)) + (pad "" thru_hole oval (at -2.66 -7) (size 4.5 4.5) (drill 2.2) (layers *.Cu *.Mask)) + (pad 3 thru_hole circle (at 5 0) (size 2 2) (drill 0.9) (layers *.Cu *.Mask)) + (pad 2 thru_hole circle (at 2.54 0) (size 2 2) (drill 0.9) (layers *.Cu *.Mask)) + (pad 1 thru_hole rect (at 0 0) (size 2 3) (drill 0.9) (layers *.Cu *.Mask)) + (pad "" thru_hole oval (at 7.74 -7) (size 4.5 4.5) (drill 2.2) (layers *.Cu *.Mask)) + (model ${KISYS3DMOD}/Potentiometer_THT.3dshapes/Potentiometer_TT_P0915N.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) +) diff --git a/F0_F1-LQFP48_testboard/my_footprints.pretty/SMD_conn_4x2.5mm.kicad_mod b/F0_F1-LQFP48_testboard/my_footprints.pretty/SMD_conn_4x2.5mm.kicad_mod new file mode 100644 index 0000000..3c4cbd2 --- /dev/null +++ b/F0_F1-LQFP48_testboard/my_footprints.pretty/SMD_conn_4x2.5mm.kicad_mod @@ -0,0 +1,12 @@ +(module SMD_conn_4x2.5mm (layer F.Cu) (tedit 58B86145) + (fp_text reference REF** (at 0 3.81) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value SMD_conn_4x2.5mm (at 0 -3.81) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 smd rect (at -3.81 0) (size 1.5 5) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at -1.27 0) (size 1.5 5) (layers F.Cu F.Paste F.Mask)) + (pad 3 smd rect (at 1.27 0) (size 1.5 5) (layers F.Cu F.Paste F.Mask)) + (pad 4 smd rect (at 3.81 0) (size 1.5 5) (layers F.Cu F.Paste F.Mask)) +) diff --git a/F0_F1-LQFP48_testboard/my_footprints.pretty/TH_via.kicad_mod b/F0_F1-LQFP48_testboard/my_footprints.pretty/TH_via.kicad_mod new file mode 100644 index 0000000..e458a27 --- /dev/null +++ b/F0_F1-LQFP48_testboard/my_footprints.pretty/TH_via.kicad_mod @@ -0,0 +1,10 @@ +(module TH_via (layer F.Cu) (tedit 5A5E619A) + (fp_text reference REF** (at 0 0.5) (layer F.SilkS) hide + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value TH_via (at 0 -0.5) (layer F.Fab) hide + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole circle (at 0 0) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) + (zone_connect 1)) +) diff --git a/F0_F1-LQFP48_testboard/stm32-rescue.lib b/F0_F1-LQFP48_testboard/stm32-rescue.lib new file mode 100644 index 0000000..5482c15 --- /dev/null +++ b/F0_F1-LQFP48_testboard/stm32-rescue.lib @@ -0,0 +1,695 @@ +EESchema-LIBRARY Version 2.4 +#encoding utf-8 +# +# +3.3V +# +DEF +3.3V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "+3.3V" 0 140 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 2 0 1 0 -30 50 0 100 N +P 2 0 1 0 0 0 0 100 N +P 2 0 1 0 0 100 30 50 N +X +3V3 1 0 0 0 U 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# +5V +# +DEF +5V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "+5V" 0 140 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 2 0 1 0 -30 50 0 100 N +P 2 0 1 0 0 0 0 100 N +P 2 0 1 0 0 100 30 50 N +X +5V 1 0 0 0 U 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# C +# +DEF C C 0 10 N Y 1 F N +F0 "C" 25 100 50 H V L CNN +F1 "C" 25 -100 50 H V L CNN +F2 "" 38 -150 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + C_* +$ENDFPLIST +DRAW +P 2 0 1 20 -80 -30 80 -30 N +P 2 0 1 20 -80 30 80 30 N +X ~ 1 0 150 110 D 50 50 1 1 P +X ~ 2 0 -150 110 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# CONN_01X01 +# +DEF CONN_01X01 J 0 40 Y N 1 F N +F0 "J" 0 100 50 H V C CNN +F1 "CONN_01X01" 100 0 50 V V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Pin_Header_Straight_1X* + Pin_Header_Angled_1X* + Socket_Strip_Straight_1X* + Socket_Strip_Angled_1X* +$ENDFPLIST +DRAW +S -50 5 10 -5 0 1 0 N +S -50 50 50 -50 0 1 0 N +X P1 1 -200 0 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# CONN_01X03 +# +DEF CONN_01X03 J 0 40 Y N 1 F N +F0 "J" 0 200 50 H V C CNN +F1 "CONN_01X03" 100 0 50 V V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Pin_Header_Straight_1X* + Pin_Header_Angled_1X* + Socket_Strip_Straight_1X* + Socket_Strip_Angled_1X* +$ENDFPLIST +DRAW +S -50 -95 10 -105 0 1 0 N +S -50 5 10 -5 0 1 0 N +S -50 105 10 95 0 1 0 N +S -50 150 50 -150 0 1 0 N +X P1 1 -200 100 150 R 50 50 1 1 P +X P2 2 -200 0 150 R 50 50 1 1 P +X P3 3 -200 -100 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# CONN_02X03 +# +DEF CONN_02X03 J 0 1 Y N 1 F N +F0 "J" 0 200 50 H V C CNN +F1 "CONN_02X03" 0 -200 50 H V C CNN +F2 "" 0 -1200 50 H I C CNN +F3 "" 0 -1200 50 H I C CNN +$FPLIST + Pin_Header_Straight_2X* + Pin_Header_Angled_2X* + Socket_Strip_Straight_2X* + Socket_Strip_Angled_2X* + IDC_Header_Straight_* +$ENDFPLIST +DRAW +S -100 -95 -50 -105 0 1 0 N +S -100 5 -50 -5 0 1 0 N +S -100 105 -50 95 0 1 0 N +S -100 150 100 -150 0 1 0 N +S 50 -95 100 -105 0 1 0 N +S 50 5 100 -5 0 1 0 N +S 50 105 100 95 0 1 0 N +X P1 1 -250 100 150 R 50 50 1 1 P +X P2 2 250 100 150 L 50 50 1 1 P +X P3 3 -250 0 150 R 50 50 1 1 P +X P4 4 250 0 150 L 50 50 1 1 P +X P5 5 -250 -100 150 R 50 50 1 1 P +X P6 6 250 -100 150 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# CP +# +DEF CP C 0 10 N Y 1 F N +F0 "C" 25 100 50 H V L CNN +F1 "CP" 25 -100 50 H V L CNN +F2 "" 38 -150 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + CP_* +$ENDFPLIST +DRAW +S -90 20 -90 40 0 1 0 N +S -90 20 90 20 0 1 0 N +S 90 -20 -90 -40 0 1 0 F +S 90 40 -90 40 0 1 0 N +S 90 40 90 20 0 1 0 N +P 2 0 1 0 -70 90 -30 90 N +P 2 0 1 0 -50 110 -50 70 N +X ~ 1 0 150 110 D 50 50 1 1 P +X ~ 2 0 -150 110 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Conn_01x01 +# +DEF Conn_01x01 J 0 40 Y N 1 F N +F0 "J" 0 100 50 H V C CNN +F1 "Conn_01x01" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_??x*mm* + Connector*:*1x??x*mm* + Pin?Header?Straight?1X* + Pin?Header?Angled?1X* + Socket?Strip?Straight?1X* + Socket?Strip?Angled?1X* +$ENDFPLIST +DRAW +S -50 5 0 -5 1 1 6 N +S -50 50 50 -50 1 1 10 f +X Pin_1 1 -200 0 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Conn_01x02 +# +DEF Conn_01x02 J 0 40 Y N 1 F N +F0 "J" 0 100 50 H V C CNN +F1 "Conn_01x02" 0 -200 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_??x*mm* + Connector*:*1x??x*mm* + Pin?Header?Straight?1X* + Pin?Header?Angled?1X* + Socket?Strip?Straight?1X* + Socket?Strip?Angled?1X* +$ENDFPLIST +DRAW +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 50 50 -150 1 1 10 f +X Pin_1 1 -200 0 150 R 50 50 1 1 P +X Pin_2 2 -200 -100 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Conn_01x07 +# +DEF Conn_01x07 J 0 40 Y N 1 F N +F0 "J" 0 400 50 H V C CNN +F1 "Conn_01x07" 0 -400 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_??x*mm* + Connector*:*1x??x*mm* + Pin?Header?Straight?1X* + Pin?Header?Angled?1X* + Socket?Strip?Straight?1X* + Socket?Strip?Angled?1X* +$ENDFPLIST +DRAW +S -50 -295 0 -305 1 1 6 N +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 205 0 195 1 1 6 N +S -50 305 0 295 1 1 6 N +S -50 350 50 -350 1 1 10 f +X Pin_1 1 -200 300 150 R 50 50 1 1 P +X Pin_2 2 -200 200 150 R 50 50 1 1 P +X Pin_3 3 -200 100 150 R 50 50 1 1 P +X Pin_4 4 -200 0 150 R 50 50 1 1 P +X Pin_5 5 -200 -100 150 R 50 50 1 1 P +X Pin_6 6 -200 -200 150 R 50 50 1 1 P +X Pin_7 7 -200 -300 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# DB9_Female +# +DEF DB9_Female J 0 40 Y N 1 F N +F0 "J" 0 550 50 H V C CNN +F1 "DB9_Female" 0 -575 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + DB*F* +$ENDFPLIST +DRAW +C -70 -400 30 0 1 0 N +C -70 -200 30 0 1 0 N +C -70 0 30 0 1 0 N +C -70 200 30 0 1 0 N +C -70 400 30 0 1 0 N +C 50 -300 30 0 1 0 N +C 50 -100 30 0 1 0 N +C 50 100 30 0 1 0 N +C 50 300 30 0 1 0 N +P 2 0 1 0 -150 -400 -100 -400 N +P 2 0 1 0 -150 -300 20 -300 N +P 2 0 1 0 -150 -200 -100 -200 N +P 2 0 1 0 -150 -100 20 -100 N +P 2 0 1 0 -150 0 -100 0 N +P 2 0 1 0 -150 100 20 100 N +P 2 0 1 0 -150 200 -100 200 N +P 2 0 1 0 -150 300 20 300 N +P 2 0 1 0 -150 400 -100 400 N +P 5 0 1 10 -150 525 -150 -525 150 -375 150 375 -150 525 f +X 1 1 -300 400 150 R 50 50 1 1 P +X 2 2 -300 200 150 R 50 50 1 1 P +X 3 3 -300 0 150 R 50 50 1 1 P +X 4 4 -300 -200 150 R 50 50 1 1 P +X 5 5 -300 -400 150 R 50 50 1 1 P +X 6 6 -300 300 150 R 50 50 1 1 P +X 7 7 -300 100 150 R 50 50 1 1 P +X 8 8 -300 -100 150 R 50 50 1 1 P +X 9 9 -300 -300 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# DB9_Male +# +DEF DB9_Male J 0 40 Y N 1 F N +F0 "J" 0 550 50 H V C CNN +F1 "DB9_Male" 0 -575 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + DB*M* +$ENDFPLIST +DRAW +C -70 -400 30 0 1 0 F +C -70 -200 30 0 1 0 F +C -70 0 30 0 1 0 F +C -70 200 30 0 1 0 F +C -70 400 30 0 1 0 F +C 50 -300 30 0 1 0 F +C 50 -100 30 0 1 0 F +C 50 100 30 0 1 0 F +C 50 300 30 0 1 0 F +P 2 0 1 0 -150 -400 -100 -400 N +P 2 0 1 0 -150 -300 20 -300 N +P 2 0 1 0 -150 -200 -100 -200 N +P 2 0 1 0 -150 -100 20 -100 N +P 2 0 1 0 -150 0 -100 0 N +P 2 0 1 0 -150 100 20 100 N +P 2 0 1 0 -150 200 -100 200 N +P 2 0 1 0 -150 300 20 300 N +P 2 0 1 0 -150 400 -100 400 N +P 5 0 1 10 -150 -525 -150 525 150 375 150 -375 -150 -525 f +X 1 1 -300 -400 150 R 50 50 1 1 P +X 2 2 -300 -200 150 R 50 50 1 1 P +X 3 3 -300 0 150 R 50 50 1 1 P +X 4 4 -300 200 150 R 50 50 1 1 P +X 5 5 -300 400 150 R 50 50 1 1 P +X 6 6 -300 -300 150 R 50 50 1 1 P +X 7 7 -300 -100 150 R 50 50 1 1 P +X 8 8 -300 100 150 R 50 50 1 1 P +X 9 9 -300 300 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# D_Schottky +# +DEF D_Schottky D 0 40 N N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "D_Schottky" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + TO-???* + *SingleDiode + *_Diode_* + *SingleDiode* + D_* +$ENDFPLIST +DRAW +P 2 0 1 0 50 0 -50 0 N +P 4 0 1 8 50 50 50 -50 -50 0 50 50 N +P 6 0 1 8 -75 25 -75 50 -50 50 -50 -50 -25 -50 -25 -25 N +X K 1 -150 0 100 R 50 50 1 1 P +X A 2 150 0 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# D_Zener +# +DEF D_Zener D 0 40 N N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "D_Zener" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + TO-???* + *SingleDiode + *_Diode_* + *SingleDiode* + D_* +$ENDFPLIST +DRAW +P 2 0 1 0 50 0 -50 0 N +P 3 0 1 8 -50 -50 -50 50 -30 50 N +P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N +X K 1 -150 0 100 R 50 50 1 1 P +X A 2 150 0 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# GND +# +DEF GND #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -250 50 H I C CNN +F1 "GND" 0 -150 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N +X GND 1 0 0 0 D 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# Jumper_NO_Small +# +DEF Jumper_NO_Small JP 0 30 N N 1 F N +F0 "JP" 0 80 50 H V C CNN +F1 "Jumper_NO_Small" 10 -60 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +C -40 0 20 0 1 0 N +C 40 0 20 0 1 0 N +X 1 1 -100 0 40 R 50 50 0 1 P +X 2 2 100 0 40 L 50 50 0 1 P +ENDDRAW +ENDDEF +# +# LED-RESCUE-stm32 +# +DEF LED-RESCUE-stm32 D 0 40 Y N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "LED-RESCUE-stm32" 0 -100 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V C CNN +$FPLIST + LED* +$ENDFPLIST +DRAW +P 2 0 1 8 -50 -50 -50 50 N +P 2 0 1 0 -50 0 50 0 N +P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N +P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N +P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N +X K 1 -150 0 100 R 50 50 1 1 P +X A 2 150 0 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# LM1117-3.3-RESCUE-stm32 +# +DEF LM1117-3.3-RESCUE-stm32 U 0 30 Y Y 1 F N +F0 "U" 100 -250 50 H V C CNN +F1 "LM1117-3.3-RESCUE-stm32" 0 250 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + SOT-223* + TO-263* + TO-252* +$ENDFPLIST +DRAW +S -200 -200 200 200 0 1 10 f +X GND/ADJ 1 0 -300 100 U 50 50 1 1 W +X VO 2 300 50 100 L 50 50 1 1 P +X VI 3 -300 0 100 R 50 50 1 1 W +X VO 4 300 -50 100 L 50 50 1 1 w +ENDDRAW +ENDDEF +# +# MAX471-RESCUE-stm32 +# +DEF MAX471-RESCUE-stm32 U 0 40 Y Y 1 F N +F0 "U" -300 350 50 H V L CNN +F1 "MAX471-RESCUE-stm32" -300 -350 50 H V L CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +S -300 300 300 -300 0 1 10 f +X SHDN 1 -400 -100 100 R 50 50 1 1 I +X RS+ 2 -400 200 100 R 50 50 1 1 W +X RS+ 3 -400 100 100 R 50 50 1 1 P +X GND 4 -400 -200 100 R 50 50 1 1 W +X SIGN 5 400 -100 100 L 50 50 1 1 C +X RS- 6 400 200 100 L 50 50 1 1 w +X RS- 7 400 100 100 L 50 50 1 1 P +X OUT 8 400 -200 100 L 50 50 1 1 O +ENDDRAW +ENDDEF +# +# MCP2551-I_SN +# +DEF MCP2551-I_SN U 0 40 Y Y 1 F N +F0 "U" -400 350 50 H V L CNN +F1 "MCP2551-I_SN" 100 350 50 H V L CNN +F2 "Housings_SOIC:SOIC-8_3.9x4.9mm_Pitch1.27mm" 0 -500 50 H I C CIN +F3 "" 0 0 50 H I C CNN +$FPLIST + SOIC*Pitch1.27mm* +$ENDFPLIST +DRAW +S -400 300 400 -300 0 1 10 f +X TXD 1 -500 200 100 R 50 50 1 1 I +X VSS 2 0 -400 100 U 50 50 1 1 W +X VDD 3 0 400 100 D 50 50 1 1 W +X RXD 4 -500 100 100 R 50 50 1 1 O +X Vref 5 -500 -100 100 R 50 50 1 1 w +X CANL 6 500 -100 100 L 50 50 1 1 B +X CANH 7 500 100 100 L 50 50 1 1 B +X Rs 8 -500 -200 100 R 50 50 1 1 I +ENDDRAW +ENDDEF +# +# PWR_FLAG +# +DEF PWR_FLAG #FLG 0 0 N N 1 F P +F0 "#FLG" 0 75 50 H I C CNN +F1 "PWR_FLAG" 0 150 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N +X pwr 1 0 0 0 U 50 50 0 0 w +ENDDRAW +ENDDEF +# +# Q_NMOS_GSD +# +DEF Q_NMOS_GSD Q 0 0 Y N 1 F N +F0 "Q" 200 50 50 H V L CNN +F1 "Q_NMOS_GSD" 200 -50 50 H V L CNN +F2 "" 200 100 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +C 65 0 111 0 1 10 N +C 100 -70 11 0 1 0 F +C 100 70 11 0 1 0 F +P 2 0 1 0 2 0 10 0 N +P 2 0 1 0 30 -70 100 -70 N +P 2 0 1 10 30 -50 30 -90 N +P 2 0 1 0 30 0 100 0 N +P 2 0 1 10 30 20 30 -20 N +P 2 0 1 0 30 70 100 70 N +P 2 0 1 10 30 90 30 50 N +P 2 0 1 0 100 -70 100 -100 N +P 2 0 1 0 100 -70 100 0 N +P 2 0 1 0 100 100 100 70 N +P 3 0 1 10 10 75 10 -75 10 -75 N +P 4 0 1 0 40 0 80 15 80 -15 40 0 F +P 4 0 1 0 100 -70 130 -70 130 70 100 70 N +P 4 0 1 0 110 20 115 15 145 15 150 10 N +P 4 0 1 0 130 15 115 -10 145 -10 130 15 N +X G 1 -200 0 200 R 50 50 1 1 I +X S 2 100 -200 100 U 50 50 1 1 P +X D 3 100 200 100 D 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Q_PMOS_GSD +# +DEF Q_PMOS_GSD Q 0 0 Y N 1 F N +F0 "Q" 200 50 50 H V L CNN +F1 "Q_PMOS_GSD" 200 -50 50 H V L CNN +F2 "" 200 100 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +C 65 0 111 0 1 10 N +C 100 -70 11 0 1 0 F +C 100 70 11 0 1 0 F +P 2 0 1 0 2 0 10 0 N +P 2 0 1 0 30 -70 100 -70 N +P 2 0 1 10 30 -50 30 -90 N +P 2 0 1 0 30 0 100 0 N +P 2 0 1 10 30 20 30 -20 N +P 2 0 1 0 30 70 100 70 N +P 2 0 1 10 30 90 30 50 N +P 2 0 1 0 100 -70 100 -100 N +P 2 0 1 0 100 -70 100 0 N +P 2 0 1 0 100 100 100 70 N +P 3 0 1 10 10 75 10 -75 10 -75 N +P 4 0 1 0 90 0 50 -15 50 15 90 0 F +P 4 0 1 0 100 -70 130 -70 130 70 100 70 N +P 4 0 1 0 110 -20 115 -15 145 -15 150 -10 N +P 4 0 1 0 130 -15 115 10 145 10 130 -15 N +X G 1 -200 0 200 R 50 50 1 1 I +X S 2 100 -200 100 U 50 50 1 1 P +X D 3 100 200 100 D 50 50 1 1 P +ENDDRAW +ENDDEF +# +# R +# +DEF R R 0 0 N Y 1 F N +F0 "R" 80 0 50 V V C CNN +F1 "R" 0 0 50 V V C CNN +F2 "" -70 0 50 V I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + R_* + R_* +$ENDFPLIST +DRAW +S -40 -100 40 100 0 1 10 N +X ~ 1 0 150 50 D 50 50 1 1 P +X ~ 2 0 -150 50 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# SP0502BAHT +# +DEF SP0502BAHT D 0 40 Y N 1 F N +F0 "D" 225 100 50 H V L CNN +F1 "SP0502BAHT" 225 25 50 H V L CNN +F2 "TO_SOT_Packages_SMD:SOT-23" 225 -50 50 H I L CNN +F3 "" 125 125 50 H I C CNN +$FPLIST + SOT?23* +$ENDFPLIST +DRAW +S -175 100 175 -100 0 1 10 f +P 2 0 1 0 -100 100 -100 50 N +P 2 0 1 0 0 -50 0 -100 N +P 2 0 1 0 100 100 100 50 N +P 4 0 1 0 -150 75 -125 50 -75 50 -50 25 N +P 4 0 1 0 -100 0 -100 -50 100 -50 100 0 N +P 4 0 1 0 -100 50 -75 0 -125 0 -100 50 F +P 4 0 1 0 50 75 75 50 125 50 150 25 N +P 4 0 1 0 100 50 75 0 125 0 100 50 F +X A 3 0 -200 100 U 50 50 0 0 I +X K 1 -100 200 100 D 50 50 1 1 I +X K 2 100 200 100 D 50 50 1 1 I +ENDDRAW +ENDDEF +# +# STM32F042C6Tx +# +DEF STM32F042C6Tx U 0 40 Y Y 1 L N +F0 "U" -3000 1725 50 H V L BNN +F1 "STM32F042C6Tx" 3000 1725 50 H V R BNN +F2 "LQFP48" 3000 1675 50 H V R TNN +F3 "" 0 0 50 H V C CNN +DRAW +S -3000 -1700 3000 1700 0 1 10 f +X VBAT 1 -3100 1100 100 R 50 50 1 1 W +X ADC_IN0/RTC_TAMP2/SYS_WKUP1/TIM2_CH1/TIM2_ETR/TSC_G1_IO1/USART2_CTS/PA0 10 3100 100 100 L 50 50 1 1 B +X ADC_IN1/TIM2_CH2/TSC_G1_IO2/USART2_DE/USART2_RTS/PA1 11 3100 0 100 L 50 50 1 1 B +X ADC_IN2/SYS_WKUP4/TIM2_CH3/TSC_G1_IO3/USART2_TX/PA2 12 3100 -100 100 L 50 50 1 1 B +X ADC_IN3/TIM2_CH4/TSC_G1_IO4/USART2_RX/PA3 13 3100 -200 100 L 50 50 1 1 B +X ADC_IN4/I2S1_WS/SPI1_NSS/TIM14_CH1/TSC_G2_IO1/USART2_CK/USB_OE/PA4 14 3100 -300 100 L 50 50 1 1 B +X ADC_IN5/CEC/I2S1_CK/SPI1_SCK/TIM2_CH1/TIM2_ETR/TSC_G2_IO2/PA5 15 3100 -400 100 L 50 50 1 1 B +X ADC_IN6/I2S1_MCK/SPI1_MISO/TIM16_CH1/TIM1_BKIN/TIM3_CH1/TSC_G2_IO3/PA6 16 3100 -500 100 L 50 50 1 1 B +X ADC_IN7/I2S1_SD/SPI1_MOSI/TIM14_CH1/TIM17_CH1/TIM1_CH1N/TIM3_CH2/TSC_G2_IO4/PA7 17 3100 -600 100 L 50 50 1 1 B +X PB0/ADC_IN8/TIM1_CH2N/TIM3_CH3/TSC_G3_IO2 18 -3100 100 100 R 50 50 1 1 B +X PB1/ADC_IN9/TIM14_CH1/TIM1_CH3N/TIM3_CH4/TSC_G3_IO3 19 -3100 0 100 R 50 50 1 1 B +X PC13/RTC_OUT_ALARM/RTC_OUT_CALIB/RTC_TAMP1/RTC_TS/SYS_WKUP2 2 -3100 500 100 R 50 50 1 1 B +X PB2/TSC_G3_IO4 20 -3100 -100 100 R 50 50 1 1 B +X PB10/CEC/I2C1_SCL/SPI2_SCK/TIM2_CH3/TSC_SYNC 21 -3100 -900 100 R 50 50 1 1 B +X PB11/I2C1_SDA/TIM2_CH4 22 -3100 -1000 100 R 50 50 1 1 B +X VSS 23 -200 -1800 100 U 50 50 1 1 W +X VDD 24 -200 1800 100 D 50 50 1 1 W +X PB12/SPI2_NSS/TIM1_BKIN 25 -3100 -1100 100 R 50 50 1 1 B +X PB13/I2C1_SCL/SPI2_SCK/TIM1_CH1N 26 -3100 -1200 100 R 50 50 1 1 B +X PB14/I2C1_SDA/SPI2_MISO/TIM1_CH2N 27 -3100 -1300 100 R 50 50 1 1 B +X PB15/RTC_REFIN/SPI2_MOSI/SYS_WKUP7/TIM1_CH3N 28 -3100 -1400 100 R 50 50 1 1 B +X CRS_SYNC/RCC_MCO/TIM1_CH1/USART1_CK/PA8 29 3100 -700 100 L 50 50 1 1 B +X PC14/RCC_OSC32_IN 3 -3100 400 100 R 50 50 1 1 B +X I2C1_SCL/TIM1_CH2/TSC_G4_IO1/USART1_TX/PA9 30 3100 -800 100 L 50 50 1 1 B +X I2C1_SDA/TIM17_BKIN/TIM1_CH3/TSC_G4_IO2/USART1_RX/PA10 31 3100 -900 100 L 50 50 1 1 B +X CAN_RX/I2C1_SCL/TIM1_CH4/TSC_G4_IO3/USART1_CTS/USB_DM/PA11 32 3100 -1000 100 L 50 50 1 1 B +X CAN_TX/I2C1_SDA/TIM1_ETR/TSC_G4_IO4/USART1_DE/USART1_RTS/USB_DP/PA12 33 3100 -1100 100 L 50 50 1 1 B +X IR_OUT/SYS_SWDIO/USB_OE/PA13 34 3100 -1200 100 L 50 50 1 1 B +X VSS 35 -100 -1800 100 U 50 50 1 1 W +X VDDIO2 36 100 1800 100 D 50 50 1 1 W +X SYS_SWCLK/USART2_TX/PA14 37 3100 -1300 100 L 50 50 1 1 B +X I2S1_WS/SPI1_NSS/TIM2_CH1/TIM2_ETR/USART2_RX/USB_OE/PA15 38 3100 -1400 100 L 50 50 1 1 B +X PB3/I2S1_CK/SPI1_SCK/TIM2_CH2/TSC_G5_IO1 39 -3100 -200 100 R 50 50 1 1 B +X PC15/RCC_OSC32_OUT 4 -3100 300 100 R 50 50 1 1 B +X PB4/I2S1_MCK/SPI1_MISO/TIM17_BKIN/TIM3_CH1/TSC_G5_IO2 40 -3100 -300 100 R 50 50 1 1 B +X PB5/I2C1_SMBA/I2S1_SD/SPI1_MOSI/SYS_WKUP6/TIM16_BKIN/TIM3_CH2 41 -3100 -400 100 R 50 50 1 1 B +X PB6/I2C1_SCL/TIM16_CH1N/TSC_G5_IO3/USART1_TX 42 -3100 -500 100 R 50 50 1 1 B +X PB7/I2C1_SDA/TIM17_CH1N/TSC_G5_IO4/USART1_RX 43 -3100 -600 100 R 50 50 1 1 B +X PF11 44 -3100 700 100 R 50 50 1 1 B +X PB8/CAN_RX/CEC/I2C1_SCL/TIM16_CH1/TSC_SYNC 45 -3100 -700 100 R 50 50 1 1 B +X PB9/CAN_TX/I2C1_SDA/IR_OUT/SPI2_NSS/TIM17_CH1 46 -3100 -800 100 R 50 50 1 1 B +X VSS 47 0 -1800 100 U 50 50 1 1 W +X VDD 48 -100 1800 100 D 50 50 1 1 W +X PF0/CRS_SYNC/I2C1_SDA/RCC_OSC_IN 5 -3100 900 100 R 50 50 1 1 I +X PF1/I2C1_SCL/RCC_OSC_OUT 6 -3100 800 100 R 50 50 1 1 I +X NRST 7 -3100 1300 100 R 50 50 1 1 I +X VSSA 8 100 -1800 100 U 50 50 1 1 W +X VDDA 9 0 1800 100 D 50 50 1 1 W +ENDDRAW +ENDDEF +# +# SW_Push +# +DEF SW_Push SW 0 40 N N 1 F N +F0 "SW" 50 100 50 H V L CNN +F1 "SW_Push" 0 -60 50 H V C CNN +F2 "" 0 200 50 H I C CNN +F3 "" 0 200 50 H I C CNN +DRAW +C -80 0 20 0 1 0 N +C 80 0 20 0 1 0 N +P 2 0 1 0 0 50 0 120 N +P 2 0 1 0 100 50 -100 50 N +X 1 1 -200 0 100 R 50 50 0 1 P +X 2 2 200 0 100 L 50 50 0 1 P +ENDDRAW +ENDDEF +# +# USB_A-RESCUE-stm32 +# +DEF USB_A-RESCUE-stm32 P 0 40 Y Y 1 F N +F0 "P" 200 -200 50 H V C CNN +F1 "USB_A-RESCUE-stm32" -50 200 50 H V C CNN +F2 "" -50 -100 50 V V C CNN +F3 "" -50 -100 50 V V C CNN +$FPLIST + USB* +$ENDFPLIST +DRAW +S -250 -150 150 150 0 1 0 N +S -205 -150 -195 -120 0 1 0 N +S -105 -150 -95 -120 0 1 0 N +S -5 -150 5 -120 0 1 0 N +S 95 -150 105 -120 0 1 0 N +X VBUS 1 -200 -300 150 U 50 50 1 1 W +X D- 2 -100 -300 150 U 50 50 1 1 P +X D+ 3 0 -300 150 U 50 50 1 1 P +X GND 4 100 -300 150 U 50 50 1 1 W +X shield 5 300 100 150 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +#End Library diff --git a/F0_F1-LQFP48_testboard/stm32.bom b/F0_F1-LQFP48_testboard/stm32.bom new file mode 100644 index 0000000..6015de6 --- /dev/null +++ b/F0_F1-LQFP48_testboard/stm32.bom @@ -0,0 +1,73 @@ +"Source:","/home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/F0_F1_testboard/kicad/stm32.sch" +"Date:","þÔ 16 ÍÁÑ 2019 13:55:26" +"Tool:","Eeschema (6.0.0-rc1-dev-1613-ga55d9819b)" +"Generator:","/usr/local/share/kicad/plugins/bom_csv_grouped_by_value.py" +"Component Count:","35" + +"Individual Components:" + +"Item","Qty","Reference(s)","Value","LibPart","Footprint","Datasheet" +"","","C1","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","C2","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","C3","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","C4","47u","stm32-rescue:CP","Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolder","" +"","","C5","12","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","C6","12","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","C7","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","C8","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","C9","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","C10","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","D1","LED","stm32-rescue:LED-RESCUE-stm32","LED_THT:LED_D3.0mm","" +"","","D2","IP4220CZ6","Power_Protection:SP0505BAHT","TO_SOT_Packages_SMD:SOT-23-6_Handsoldering","http://www.littelfuse.com/~/media/files/littelfuse/technical%20resources/documents/data%20sheets/sp05xxba.pdf" +"","","D3","LED","stm32-rescue:LED-RESCUE-stm32","LED_THT:LED_D5.0mm","" +"","","D4","LED","stm32-rescue:LED-RESCUE-stm32","LED_THT:LED_D5.0mm","" +"","","P1","USART1","stm32-rescue:CONN_01X03","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","" +"","","P2","USB_B","stm32-rescue:USB_A-RESCUE-stm32","Connectors_USB:USB_Micro-B_Wuerth_629105150521","" +"","","Q1","DTA114Y","Transistor_BJT:DTA114Y","TO_SOT_Packages_SMD:SOT-323_SC-70_Handsoldering","" +"","","R1","10k","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","R2","10k","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","R3","100k","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","R4","220","stm32-rescue:R","Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder","" +"","","R5","220","stm32-rescue:R","Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder","" +"","","R6","220","stm32-rescue:R","Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder","" +"","","R7","22","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","R8","22","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","R9","1k5","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"","","RV1","10k","Device:R_POT","my_footprints:Potentiometer","~" +"","","SW1","Reset","stm32-rescue:SW_Push","Button_Switch_THT:SW_PUSH_6mm","" +"","","SW2","Boot","stm32-rescue:SW_Push","Button_Switch_THT:SW_PUSH_6mm","" +"","","SW3","Button0","stm32-rescue:SW_Push","Button_Switch_THT:SW_PUSH_6mm","" +"","","SW4","Button1","stm32-rescue:SW_Push","Button_Switch_THT:SW_PUSH_6mm","" +"","","U1","LM1117-3.3","stm32-rescue:LM1117-3.3-RESCUE-stm32","TO_SOT_Packages_SMD:SOT-223","" +"","","U2","STM32F042C6Tx","stm32-rescue:STM32F042C6Tx","Package_DIP:DIP-48_W15.24mm_Socket_LongPads","" +"","","U3","USBLC6-2SC6","Power_Protection:USBLC6-2SC6","TO_SOT_Packages_SMD:SOT-23-6_Handsoldering","http://www2.st.com/resource/en/datasheet/CD00050750.pdf" +"","","Y1","8MHz","Device:Crystal","Crystal:Crystal_HC49-U_Vertical","~" + + + +"Collated Components:" + +"Item","Qty","Reference(s)","Value","LibPart","Footprint","Datasheet" +"1","7","C1, C2, C3, C7, C8, C9, C10","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"2","1","C4","47u","stm32-rescue:CP","Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolder","" +"3","2","C5, C6","12","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"4","1","D1","LED","stm32-rescue:LED-RESCUE-stm32","LED_THT:LED_D3.0mm","" +"5","1","D2","IP4220CZ6","Power_Protection:SP0505BAHT","TO_SOT_Packages_SMD:SOT-23-6_Handsoldering","http://www.littelfuse.com/~/media/files/littelfuse/technical%20resources/documents/data%20sheets/sp05xxba.pdf" +"6","2","D3, D4","LED","stm32-rescue:LED-RESCUE-stm32","LED_THT:LED_D5.0mm","" +"7","1","P1","USART1","stm32-rescue:CONN_01X03","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","" +"8","1","P2","USB_B","stm32-rescue:USB_A-RESCUE-stm32","Connectors_USB:USB_Micro-B_Wuerth_629105150521","" +"9","1","Q1","DTA114Y","Transistor_BJT:DTA114Y","TO_SOT_Packages_SMD:SOT-323_SC-70_Handsoldering","" +"10","2","R1, R2","10k","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"11","1","R3","100k","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"12","3","R4, R5, R6","220","stm32-rescue:R","Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder","" +"13","2","R7, R8","22","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"14","1","R9","1k5","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder","" +"15","1","RV1","10k","Device:R_POT","my_footprints:Potentiometer","~" +"16","1","SW1","Reset","stm32-rescue:SW_Push","Button_Switch_THT:SW_PUSH_6mm","" +"17","1","SW2","Boot","stm32-rescue:SW_Push","Button_Switch_THT:SW_PUSH_6mm","" +"18","1","SW3","Button0","stm32-rescue:SW_Push","Button_Switch_THT:SW_PUSH_6mm","" +"19","1","SW4","Button1","stm32-rescue:SW_Push","Button_Switch_THT:SW_PUSH_6mm","" +"20","1","U1","LM1117-3.3","stm32-rescue:LM1117-3.3-RESCUE-stm32","TO_SOT_Packages_SMD:SOT-223","" +"21","1","U2","STM32F042C6Tx","stm32-rescue:STM32F042C6Tx","Package_DIP:DIP-48_W15.24mm_Socket_LongPads","" +"22","1","U3","USBLC6-2SC6","Power_Protection:USBLC6-2SC6","TO_SOT_Packages_SMD:SOT-23-6_Handsoldering","http://www2.st.com/resource/en/datasheet/CD00050750.pdf" +"23","1","Y1","8MHz","Device:Crystal","Crystal:Crystal_HC49-U_Vertical","~" diff --git a/F0_F1-LQFP48_testboard/stm32.kicad_pcb b/F0_F1-LQFP48_testboard/stm32.kicad_pcb new file mode 100644 index 0000000..e8062c6 --- /dev/null +++ b/F0_F1-LQFP48_testboard/stm32.kicad_pcb @@ -0,0 +1,2736 @@ +(kicad_pcb (version 20171130) (host pcbnew "(6.0.0-rc1-dev-1613-ga55d9819b)") + + (general + (thickness 1.6) + (drawings 6) + (tracks 304) + (zones 0) + (modules 35) + (nets 27) + ) + + (page A4) + (layers + (0 F.Cu jumper) + (31 B.Cu signal) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + ) + + (setup + (last_trace_width 0.5) + (user_trace_width 0.25) + (user_trace_width 0.5) + (user_trace_width 1) + (user_trace_width 2) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 2) + (via_drill 0.6) + (via_min_size 1) + (via_min_drill 0.6) + (user_via 1.5 0.6) + (user_via 2 0.8) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.1) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x00020_7ffffffe) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer false) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk true) + (subtractmaskfromsilk false) + (outputformat 5) + (mirror false) + (drillshape 2) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + (net 1 /NRST) + (net 2 GND) + (net 3 /BOOT0) + (net 4 +3V3) + (net 5 /OSC_IN) + (net 6 /OSC_OUT) + (net 7 "Net-(D1-Pad1)") + (net 8 /Rx) + (net 9 /Tx) + (net 10 /Button0) + (net 11 /Button1) + (net 12 "Net-(D3-Pad1)") + (net 13 "Net-(D4-Pad1)") + (net 14 +5V) + (net 15 "Net-(P2-Pad2)") + (net 16 "Net-(P2-Pad3)") + (net 17 /USB_PU) + (net 18 "Net-(Q1-Pad3)") + (net 19 "Net-(R3-Pad1)") + (net 20 /LED0) + (net 21 /LED1) + (net 22 "Net-(R7-Pad1)") + (net 23 "Net-(R7-Pad2)") + (net 24 "Net-(R8-Pad2)") + (net 25 "Net-(R8-Pad1)") + (net 26 "Net-(RV1-Pad2)") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 2) + (via_drill 0.6) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net +3V3) + (add_net +5V) + (add_net /BOOT0) + (add_net /Button0) + (add_net /Button1) + (add_net /LED0) + (add_net /LED1) + (add_net /NRST) + (add_net /OSC_IN) + (add_net /OSC_OUT) + (add_net /Rx) + (add_net /Tx) + (add_net /USB_PU) + (add_net GND) + (add_net "Net-(D1-Pad1)") + (add_net "Net-(D3-Pad1)") + (add_net "Net-(D4-Pad1)") + (add_net "Net-(P2-Pad2)") + (add_net "Net-(P2-Pad3)") + (add_net "Net-(Q1-Pad3)") + (add_net "Net-(R3-Pad1)") + (add_net "Net-(R7-Pad1)") + (add_net "Net-(R7-Pad2)") + (add_net "Net-(R8-Pad1)") + (add_net "Net-(R8-Pad2)") + (add_net "Net-(RV1-Pad2)") + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBB575) + (at 87.503 86.628 270) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /590D4832) + (attr smd) + (fp_text reference C1 (at 0 1.43 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 0.1 (at 0 -1.43 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 /NRST)) + (pad 2 smd roundrect (at 0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBB586) + (at 95.504 79.262 90) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /590D4150) + (attr smd) + (fp_text reference C2 (at 0 1.43 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 0.1 (at 0 -1.43 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 3 /BOOT0)) + (pad 2 smd roundrect (at 0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 +3V3)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBCA7E) + (at 87.376 70.88 270) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /5D05A623) + (attr smd) + (fp_text reference C3 (at 0 1.43 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 0.1 (at 0 -1.43 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (pad 2 smd roundrect (at 0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (pad 1 smd roundrect (at -0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 +3V3)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBB5AA) + (at 108.077 85.1535) + (descr "Tantalum Capacitor SMD Kemet-A (3216-18 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator") + (tags "capacitor tantalum") + (path /58C454F6) + (attr smd) + (fp_text reference C4 (at 0 1.75) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 47u (at 0 -1.75) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.6 0.8) (end -1.2 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -1.2 0.8) (end -1.6 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -1.6 0.4) (end -1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 -0.8) (end 1.6 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 0.935) (end -2.485 0.935) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.485 0.935) (end -2.485 -0.935) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.485 -0.935) (end 1.6 -0.935) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.48 -1.05) (end -2.48 1.05) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.48 1.05) (end 2.48 1.05) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.48 1.05) (end 2.48 -1.05) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.48 -1.05) (end -2.48 -1.05) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) + ) + (pad 1 smd roundrect (at -1.4375 0) (size 1.575 1.35) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.185185) + (net 4 +3V3)) + (pad 2 smd roundrect (at 1.4375 0) (size 1.575 1.35) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.185185) + (net 2 GND)) + (model ${KISYS3DMOD}/Capacitor_Tantalum_SMD.3dshapes/CP_EIA-3216-18_Kemet-A.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBB5BB) + (at 89.3445 76.327 90) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /5D1F7471) + (attr smd) + (fp_text reference C5 (at 0 1.43 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 12 (at 0 -1.43 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (pad 2 smd roundrect (at 0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (pad 1 smd roundrect (at -0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 5 /OSC_IN)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBB5CC) + (at 89.3445 86.628 270) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /5D1F64B1) + (attr smd) + (fp_text reference C6 (at 0 1.43 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 12 (at 0 -1.43 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 6 /OSC_OUT)) + (pad 2 smd roundrect (at 0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBCB46) + (at 88.4415 90.297 180) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /5CE67302) + (attr smd) + (fp_text reference C7 (at 0 1.43 180) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 0.1 (at 0 -1.43 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 180) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.875 0 180) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (pad 2 smd roundrect (at 0.875 0 180) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 +3V3)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBB5EE) + (at 87.63 127.113 270) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /5CE67308) + (attr smd) + (fp_text reference C8 (at 0 1.43 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 0.1 (at 0 -1.43 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (pad 2 smd roundrect (at 0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 +3V3)) + (pad 1 smd roundrect (at -0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBDDAE) + (at 97.663 71.247 90) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /5CE6730E) + (attr smd) + (fp_text reference C9 (at 0 1.43 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 0.1 (at 0 -1.43 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (pad 2 smd roundrect (at 0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 +3V3)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBE) (tstamp 5CDBB610) + (at 97.536 101.614 90) + (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /5CE67321) + (attr smd) + (fp_text reference C10 (at 0 1.43 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 0.1 (at 0 -1.43 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (pad 2 smd roundrect (at 0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 +3V3)) + (pad 1 smd roundrect (at -0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module LED_THT:LED_D3.0mm (layer F.Cu) (tedit 587A3A7B) (tstamp 5CDBB623) + (at 68.3895 82.9945 90) + (descr "LED, diameter 3.0mm, 2 pins") + (tags "LED diameter 3.0mm 2 pins") + (path /5909BFFC) + (fp_text reference D1 (at 1.27 -2.96 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value LED (at 1.27 2.96 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_arc (start 1.27 0) (end -0.23 -1.16619) (angle 284.3) (layer F.Fab) (width 0.1)) + (fp_arc (start 1.27 0) (end -0.29 -1.235516) (angle 108.8) (layer F.SilkS) (width 0.12)) + (fp_arc (start 1.27 0) (end -0.29 1.235516) (angle -108.8) (layer F.SilkS) (width 0.12)) + (fp_arc (start 1.27 0) (end 0.229039 -1.08) (angle 87.9) (layer F.SilkS) (width 0.12)) + (fp_arc (start 1.27 0) (end 0.229039 1.08) (angle -87.9) (layer F.SilkS) (width 0.12)) + (fp_circle (center 1.27 0) (end 2.77 0) (layer F.Fab) (width 0.1)) + (fp_line (start -0.23 -1.16619) (end -0.23 1.16619) (layer F.Fab) (width 0.1)) + (fp_line (start -0.29 -1.236) (end -0.29 -1.08) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.29 1.08) (end -0.29 1.236) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.15 -2.25) (end -1.15 2.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.15 2.25) (end 3.7 2.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.7 2.25) (end 3.7 -2.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.7 -2.25) (end -1.15 -2.25) (layer F.CrtYd) (width 0.05)) + (pad 1 thru_hole rect (at 0 0 90) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 7 "Net-(D1-Pad1)")) + (pad 2 thru_hole circle (at 2.54 0 90) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 4 +3V3)) + (model ${KISYS3DMOD}/LED_THT.3dshapes/LED_D3.0mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module TO_SOT_Packages_SMD:SOT-23-6_Handsoldering (layer B.Cu) (tedit 5A02FF57) (tstamp 5CDBB639) + (at 93.853 105.998 90) + (descr "6-pin SOT-23 package, Handsoldering") + (tags "SOT-23-6 Handsoldering") + (path /5CEBDB90) + (attr smd) + (fp_text reference D2 (at 0 2.9 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value IP4220CZ6 (at 0 -2.9 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.075)) (justify mirror)) + ) + (fp_line (start -0.9 -1.61) (end 0.9 -1.61) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.9 1.61) (end -2.05 1.61) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.4 -1.8) (end -2.4 1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.4 -1.8) (end -2.4 -1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.4 1.8) (end 2.4 -1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.4 1.8) (end 2.4 1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.9 0.9) (end -0.25 1.55) (layer B.Fab) (width 0.1)) + (fp_line (start 0.9 1.55) (end -0.25 1.55) (layer B.Fab) (width 0.1)) + (fp_line (start -0.9 0.9) (end -0.9 -1.55) (layer B.Fab) (width 0.1)) + (fp_line (start 0.9 -1.55) (end -0.9 -1.55) (layer B.Fab) (width 0.1)) + (fp_line (start 0.9 1.55) (end 0.9 -1.55) (layer B.Fab) (width 0.1)) + (pad 1 smd rect (at -1.35 0.95 90) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 8 /Rx)) + (pad 2 smd rect (at -1.35 0 90) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 2 GND)) + (pad 3 smd rect (at -1.35 -0.95 90) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 9 /Tx)) + (pad 4 smd rect (at 1.35 -0.95 90) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 11 /Button1)) + (pad 6 smd rect (at 1.35 0.95 90) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 10 /Button0)) + (pad 5 smd rect (at 1.35 0 90) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 4 +3V3)) + (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-23-6.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module LED_THT:LED_D5.0mm (layer F.Cu) (tedit 5995936A) (tstamp 5CDBFC37) + (at 68.3895 102.235 90) + (descr "LED, diameter 5.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LL-504BC2E-009.pdf") + (tags "LED diameter 5.0mm 2 pins") + (path /5D1AD231) + (fp_text reference D3 (at 1.27 -3.96 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value LED (at 1.27 3.96 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_arc (start 1.27 0) (end -1.23 -1.469694) (angle 299.1) (layer F.Fab) (width 0.1)) + (fp_arc (start 1.27 0) (end -1.29 -1.54483) (angle 148.9) (layer F.SilkS) (width 0.12)) + (fp_arc (start 1.27 0) (end -1.29 1.54483) (angle -148.9) (layer F.SilkS) (width 0.12)) + (fp_circle (center 1.27 0) (end 3.77 0) (layer F.Fab) (width 0.1)) + (fp_circle (center 1.27 0) (end 3.77 0) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.23 -1.469694) (end -1.23 1.469694) (layer F.Fab) (width 0.1)) + (fp_line (start -1.29 -1.545) (end -1.29 1.545) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.95 -3.25) (end -1.95 3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.95 3.25) (end 4.5 3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.5 3.25) (end 4.5 -3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.5 -3.25) (end -1.95 -3.25) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 1.25 0 90) (layer F.Fab) + (effects (font (size 0.8 0.8) (thickness 0.2))) + ) + (pad 1 thru_hole rect (at 0 0 90) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 12 "Net-(D3-Pad1)")) + (pad 2 thru_hole circle (at 2.54 0 90) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 4 +3V3)) + (model ${KISYS3DMOD}/LED_THT.3dshapes/LED_D5.0mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module LED_THT:LED_D5.0mm (layer F.Cu) (tedit 5995936A) (tstamp 5CDBB65D) + (at 68.3895 92.71 90) + (descr "LED, diameter 5.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LL-504BC2E-009.pdf") + (tags "LED diameter 5.0mm 2 pins") + (path /5D1AC2F3) + (fp_text reference D4 (at 1.27 -3.96 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value LED (at 1.27 3.96 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text user %R (at 1.25 0 90) (layer F.Fab) + (effects (font (size 0.8 0.8) (thickness 0.2))) + ) + (fp_line (start 4.5 -3.25) (end -1.95 -3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.5 3.25) (end 4.5 -3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.95 3.25) (end 4.5 3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.95 -3.25) (end -1.95 3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.29 -1.545) (end -1.29 1.545) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.23 -1.469694) (end -1.23 1.469694) (layer F.Fab) (width 0.1)) + (fp_circle (center 1.27 0) (end 3.77 0) (layer F.SilkS) (width 0.12)) + (fp_circle (center 1.27 0) (end 3.77 0) (layer F.Fab) (width 0.1)) + (fp_arc (start 1.27 0) (end -1.29 1.54483) (angle -148.9) (layer F.SilkS) (width 0.12)) + (fp_arc (start 1.27 0) (end -1.29 -1.54483) (angle 148.9) (layer F.SilkS) (width 0.12)) + (fp_arc (start 1.27 0) (end -1.23 -1.469694) (angle 299.1) (layer F.Fab) (width 0.1)) + (pad 2 thru_hole circle (at 2.54 0 90) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 4 +3V3)) + (pad 1 thru_hole rect (at 0 0 90) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 13 "Net-(D4-Pad1)")) + (model ${KISYS3DMOD}/LED_THT.3dshapes/LED_D5.0mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical (layer F.Cu) (tedit 59FED5CC) (tstamp 5CDBB674) + (at 117.475 123.317 180) + (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x03 2.54mm single row") + (path /5CEABE88) + (fp_text reference P1 (at 0 -2.33 180) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value USART1 (at 0 7.41 180) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.33 1.27) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 2.54 270) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at 0 0 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 2 thru_hole oval (at 0 2.54 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 9 /Tx)) + (pad 3 thru_hole oval (at 0 5.08 180) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 8 /Rx)) + (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Connectors_USB:USB_Micro-B_Wuerth_629105150521 (layer B.Cu) (tedit 5A142044) (tstamp 5CDBB6A3) + (at 118.491 105.918 270) + (descr "USB Micro-B receptacle, http://www.mouser.com/ds/2/445/629105150521-469306.pdf") + (tags "usb micro receptacle") + (path /5CEABE76) + (attr smd) + (fp_text reference P2 (at 0 3.5 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value USB_B (at 0 -5.6 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -4 2.25) (end -4 -3.15) (layer B.Fab) (width 0.15)) + (fp_line (start -4 -3.15) (end -3.7 -3.15) (layer B.Fab) (width 0.15)) + (fp_line (start -3.7 -3.15) (end -3.7 -4.35) (layer B.Fab) (width 0.15)) + (fp_line (start -3.7 -4.35) (end 3.7 -4.35) (layer B.Fab) (width 0.15)) + (fp_line (start 3.7 -4.35) (end 3.7 -3.15) (layer B.Fab) (width 0.15)) + (fp_line (start 3.7 -3.15) (end 4 -3.15) (layer B.Fab) (width 0.15)) + (fp_line (start 4 -3.15) (end 4 2.25) (layer B.Fab) (width 0.15)) + (fp_line (start 4 2.25) (end -4 2.25) (layer B.Fab) (width 0.15)) + (fp_line (start -2.7 -3.75) (end 2.7 -3.75) (layer B.Fab) (width 0.15)) + (fp_line (start -1.075 2.725) (end -1.3 2.55) (layer B.Fab) (width 0.15)) + (fp_line (start -1.3 2.55) (end -1.525 2.725) (layer B.Fab) (width 0.15)) + (fp_line (start -1.525 2.725) (end -1.525 2.95) (layer B.Fab) (width 0.15)) + (fp_line (start -1.525 2.95) (end -1.075 2.95) (layer B.Fab) (width 0.15)) + (fp_line (start -1.075 2.95) (end -1.075 2.725) (layer B.Fab) (width 0.15)) + (fp_line (start -4.15 0.65) (end -4.15 -0.75) (layer B.SilkS) (width 0.15)) + (fp_line (start -4.15 -3.15) (end -4.15 -3.3) (layer B.SilkS) (width 0.15)) + (fp_line (start -4.15 -3.3) (end -3.85 -3.3) (layer B.SilkS) (width 0.15)) + (fp_line (start -3.85 -3.3) (end -3.85 -3.75) (layer B.SilkS) (width 0.15)) + (fp_line (start 3.85 -3.75) (end 3.85 -3.3) (layer B.SilkS) (width 0.15)) + (fp_line (start 3.85 -3.3) (end 4.15 -3.3) (layer B.SilkS) (width 0.15)) + (fp_line (start 4.15 -3.3) (end 4.15 -3.15) (layer B.SilkS) (width 0.15)) + (fp_line (start 4.15 -0.75) (end 4.15 0.65) (layer B.SilkS) (width 0.15)) + (fp_line (start -1.075 2.825) (end -1.8 2.825) (layer B.SilkS) (width 0.15)) + (fp_line (start -1.8 2.825) (end -1.8 2.4) (layer B.SilkS) (width 0.15)) + (fp_line (start -1.8 2.4) (end -2.8 2.4) (layer B.SilkS) (width 0.15)) + (fp_line (start 1.8 2.4) (end 2.8 2.4) (layer B.SilkS) (width 0.15)) + (fp_line (start -4.94 3.34) (end -4.94 -4.85) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.94 -4.85) (end 4.95 -4.85) (layer B.CrtYd) (width 0.05)) + (fp_line (start 4.95 -4.85) (end 4.95 3.34) (layer B.CrtYd) (width 0.05)) + (fp_line (start 4.95 3.34) (end -4.94 3.34) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 -1.05 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user "PCB Edge" (at 0 -3.75 270) (layer Dwgs.User) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 1 smd rect (at -1.3 1.9 270) (size 0.45 1.3) (layers B.Cu B.Paste B.Mask) + (net 14 +5V)) + (pad 2 smd rect (at -0.65 1.9 270) (size 0.45 1.3) (layers B.Cu B.Paste B.Mask) + (net 15 "Net-(P2-Pad2)")) + (pad 3 smd rect (at 0 1.9 270) (size 0.45 1.3) (layers B.Cu B.Paste B.Mask) + (net 16 "Net-(P2-Pad3)")) + (pad 4 smd rect (at 0.65 1.9 270) (size 0.45 1.3) (layers B.Cu B.Paste B.Mask) + (net 2 GND)) + (pad 5 smd rect (at 1.3 1.9 270) (size 0.45 1.3) (layers B.Cu B.Paste B.Mask) + (net 2 GND)) + (pad 6 thru_hole oval (at -3.725 1.85 270) (size 1.45 2) (drill oval 0.85 1.4) (layers *.Cu *.Mask)) + (pad 6 thru_hole oval (at 3.725 1.85 270) (size 1.45 2) (drill oval 0.85 1.4) (layers *.Cu *.Mask)) + (pad 6 thru_hole oval (at -3.875 -1.95 270) (size 1.15 1.8) (drill oval 0.55 1.2) (layers *.Cu *.Mask)) + (pad 6 thru_hole oval (at 3.875 -1.95 270) (size 1.15 1.8) (drill oval 0.55 1.2) (layers *.Cu *.Mask)) + (pad "" np_thru_hole oval (at -2.5 0.8 270) (size 0.8 0.8) (drill 0.8) (layers *.Cu *.Mask)) + (pad "" np_thru_hole oval (at 2.5 0.8 270) (size 0.8 0.8) (drill 0.8) (layers *.Cu *.Mask)) + (model ${KISYS3DMOD}/Connector_USB.3dshapes/USB_Micro-B_Wuerth_629105150521.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module TO_SOT_Packages_SMD:SOT-323_SC-70_Handsoldering (layer B.Cu) (tedit 5A02FF57) (tstamp 5CDBB6B8) + (at 106.867 104.5695) + (descr "SOT-323, SC-70 Handsoldering") + (tags "SOT-323 SC-70 Handsoldering") + (path /5D5EB488) + (attr smd) + (fp_text reference Q1 (at 0 2) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value DTA114Y (at 0 -2.05) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 -90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.075)) (justify mirror)) + ) + (fp_line (start 0.735 -0.5) (end 0.735 -1.16) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.735 1.17) (end 0.735 0.5) (layer B.SilkS) (width 0.12)) + (fp_line (start 2.4 -1.3) (end -2.4 -1.3) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.4 1.3) (end 2.4 -1.3) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.4 1.3) (end 2.4 1.3) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.4 -1.3) (end -2.4 1.3) (layer B.CrtYd) (width 0.05)) + (fp_line (start 0.735 1.16) (end -2 1.16) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.675 -1.16) (end 0.735 -1.16) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.675 1.1) (end -0.175 1.1) (layer B.Fab) (width 0.1)) + (fp_line (start -0.675 0.6) (end -0.675 -1.1) (layer B.Fab) (width 0.1)) + (fp_line (start 0.675 1.1) (end 0.675 -1.1) (layer B.Fab) (width 0.1)) + (fp_line (start 0.675 -1.1) (end -0.675 -1.1) (layer B.Fab) (width 0.1)) + (fp_line (start -0.175 1.1) (end -0.675 0.6) (layer B.Fab) (width 0.1)) + (pad 1 smd rect (at -1.33 0.65 90) (size 0.45 1.5) (layers B.Cu B.Paste B.Mask) + (net 17 /USB_PU)) + (pad 2 smd rect (at -1.33 -0.65 90) (size 0.45 1.5) (layers B.Cu B.Paste B.Mask) + (net 4 +3V3)) + (pad 3 smd rect (at 1.33 0 90) (size 0.45 1.5) (layers B.Cu B.Paste B.Mask) + (net 18 "Net-(Q1-Pad3)")) + (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-323_SC-70.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBD) (tstamp 5CDBB6C9) + (at 97.79 79.262 90) + (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /590D30C8) + (attr smd) + (fp_text reference R1 (at 0 1.43 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 10k (at 0 -1.43 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 3 /BOOT0)) + (pad 2 smd roundrect (at 0.875 0 90) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBD) (tstamp 5CDBB6DA) + (at 82.296 87.771 270) + (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /590D3334) + (attr smd) + (fp_text reference R2 (at 0 1.43 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 10k (at 0 -1.43 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (pad 2 smd roundrect (at 0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 +3V3)) + (pad 1 smd roundrect (at -0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 /NRST)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBD) (tstamp 5CDBB6EB) + (at 87.884 119.14 270) + (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /5D1076F1) + (attr smd) + (fp_text reference R3 (at 0 1.43 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 100k (at 0 -1.43 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 19 "Net-(R3-Pad1)")) + (pad 2 smd roundrect (at 0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 GND)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder (layer B.Cu) (tedit 5B36C52B) (tstamp 5CDBB6FC) + (at 64.7065 81.9785 270) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /5909C002) + (attr smd) + (fp_text reference R4 (at 0 1.65 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 220 (at 0 -1.65 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.6) (end -1 0.6) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.6) (end 1 0.6) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.6) (end 1 -0.6) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.6) (end -1 -0.6) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.71) (end 0.261252 0.71) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.71) (end 0.261252 -0.71) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -1.025 0 270) (size 1.15 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.217391) + (net 2 GND)) + (pad 2 smd roundrect (at 1.025 0 270) (size 1.15 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.217391) + (net 7 "Net-(D1-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder (layer B.Cu) (tedit 5B36C52B) (tstamp 5CDBB70D) + (at 80.89 102.997) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /5D3F2F98) + (attr smd) + (fp_text reference R5 (at 0 1.65) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 220 (at 0 -1.65) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.6) (end -1 0.6) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.6) (end 1 0.6) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.6) (end 1 -0.6) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.6) (end -1 -0.6) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.71) (end 0.261252 0.71) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.71) (end 0.261252 -0.71) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -1.025 0) (size 1.15 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.217391) + (net 12 "Net-(D3-Pad1)")) + (pad 2 smd roundrect (at 1.025 0) (size 1.15 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.217391) + (net 20 /LED0)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder (layer B.Cu) (tedit 5B36C52B) (tstamp 5CDBB71E) + (at 81.0805 92.837) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /5D3F3639) + (attr smd) + (fp_text reference R6 (at 0 1.65) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 220 (at 0 -1.65) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.261252 -0.71) (end 0.261252 -0.71) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 0.71) (end 0.261252 0.71) (layer B.SilkS) (width 0.12)) + (fp_line (start 1 -0.6) (end -1 -0.6) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.6) (end 1 -0.6) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.6) (end 1 0.6) (layer B.Fab) (width 0.1)) + (fp_line (start -1 -0.6) (end -1 0.6) (layer B.Fab) (width 0.1)) + (pad 2 smd roundrect (at 1.025 0) (size 1.15 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.217391) + (net 21 /LED1)) + (pad 1 smd roundrect (at -1.025 0) (size 1.15 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.217391) + (net 13 "Net-(D4-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBD) (tstamp 5CDBB72F) + (at 103.8085 110.5535 180) + (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /5CEABEA6) + (attr smd) + (fp_text reference R7 (at 0 1.43 180) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 22 (at 0 -1.43 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 180) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.875 0 180) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 22 "Net-(R7-Pad1)")) + (pad 2 smd roundrect (at 0.875 0 180) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 23 "Net-(R7-Pad2)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBD) (tstamp 5CDBB740) + (at 103.872 108.077 180) + (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /5CEABEAC) + (attr smd) + (fp_text reference R8 (at 0 1.43 180) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 22 (at 0 -1.43 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 180) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (pad 2 smd roundrect (at 0.875 0 180) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 24 "Net-(R8-Pad2)")) + (pad 1 smd roundrect (at -0.875 0 180) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 25 "Net-(R8-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder (layer B.Cu) (tedit 5B301BBD) (tstamp 5CDBB751) + (at 111.1885 105.41 270) + (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /5D5EA0B2) + (attr smd) + (fp_text reference R9 (at 0 1.43 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 1k5 (at 0 -1.43 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) + ) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (pad 2 smd roundrect (at 0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 16 "Net-(P2-Pad3)")) + (pad 1 smd roundrect (at -0.875 0 270) (size 1.05 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 18 "Net-(Q1-Pad3)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module my_footprints:Potentiometer (layer F.Cu) (tedit 5CDABBAE) (tstamp 5CDBB777) + (at 70.358 115.7605 90) + (descr http://www.ttelectronics.com/sites/default/files/download-files/Datasheet_PanelPot_P09xSeries.pdf) + (tags "potentiometer vertical TT P0915N single") + (path /5D64D13D) + (fp_text reference RV1 (at 2.5 -13.5 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 10k (at 2.5 2 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -3.1 -9.75) (end -3.1 -12.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.1 -0.75) (end 6.15 -0.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -12.6) (end 8.1 -12.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.97 -0.88) (end 6.15 -0.88) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.97 -12.47) (end -2.97 -9.75) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.97 -12.47) (end -2.97 -12.47) (layer F.SilkS) (width 0.12)) + (fp_circle (center 2.5 -7.5) (end 5.5 -7.5) (layer F.Fab) (width 0.12)) + (fp_line (start -2.85 -12.35) (end 7.85 -12.35) (layer F.Fab) (width 0.1)) + (fp_line (start -2.85 -1) (end -2.85 -12.35) (layer F.Fab) (width 0.1)) + (fp_line (start 7.85 -1) (end -2.85 -1) (layer F.Fab) (width 0.1)) + (fp_line (start 7.85 -12.35) (end 7.85 -1) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.5 -7.5 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1.15 -0.88) (end -2.97 -0.88) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.15 1.15) (end 6.15 -0.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.15 -0.75) (end -3.1 -0.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.15 1.15) (end -1.15 -0.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 6.15 1.15) (end -1.15 1.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -9.75) (end -4.5 -9.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.5 -5.25) (end -4.5 -9.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -0.75) (end -3.1 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -5.25) (end -4.5 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.1 -0.75) (end 8.1 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.1 -9.75) (end 8.1 -12.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.5 -9.75) (end 8.1 -9.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.5 -5.25) (end 8.1 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.5 -5.25) (end 9.5 -9.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.97 -5.25) (end -2.97 -0.88) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.97 -5.25) (end 7.97 -0.88) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.97 -12.47) (end 7.97 -9.75) (layer F.SilkS) (width 0.12)) + (pad "" thru_hole oval (at -2.66 -7 90) (size 4.5 4.5) (drill 2.2) (layers *.Cu *.Mask)) + (pad 3 thru_hole circle (at 5 0 90) (size 2 2) (drill 0.9) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 2 thru_hole circle (at 2.54 0 90) (size 2 2) (drill 0.9) (layers *.Cu *.Mask) + (net 26 "Net-(RV1-Pad2)")) + (pad 1 thru_hole rect (at 0 0 90) (size 2 3) (drill 0.9) (layers *.Cu *.Mask) + (net 4 +3V3)) + (pad "" thru_hole oval (at 7.74 -7 90) (size 4.5 4.5) (drill 2.2) (layers *.Cu *.Mask)) + (model ${KISYS3DMOD}/Potentiometer_THT.3dshapes/Potentiometer_TT_P0915N.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Button_Switch_THT:SW_PUSH_6mm (layer F.Cu) (tedit 5A02FE31) (tstamp 5CDBB796) + (at 70.612 70.1445 270) + (descr https://www.omron.com/ecb/products/pdf/en-b3f.pdf) + (tags "tact sw push 6mm") + (path /590A0134) + (fp_text reference SW1 (at 3.25 -2 270) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Reset (at 3.75 6.7 270) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_circle (center 3.25 2.25) (end 1.25 2.5) (layer F.Fab) (width 0.1)) + (fp_line (start 6.75 3) (end 6.75 1.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.5 -1) (end 1 -1) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.25 1.5) (end -0.25 3) (layer F.SilkS) (width 0.12)) + (fp_line (start 1 5.5) (end 5.5 5.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 8 -1.25) (end 8 5.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 6) (end -1.25 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 5.75) (end -1.5 -1.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.25 -1.5) (end 7.75 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 6) (end -1.25 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 5.75) (end -1.5 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 -1.5) (end -1.25 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 -1.25) (end -1.5 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 -1.5) (end 8 -1.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 -1.5) (end 8 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 6) (end 8 5.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 6) (end 8 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 0.25 -0.75) (end 3.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 0.25 5.25) (end 0.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 6.25 5.25) (end 0.25 5.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.25 -0.75) (end 6.25 5.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.25 -0.75) (end 6.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 3.25 2.25 270) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole circle (at 6.5 0) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 1 /NRST)) + (pad 2 thru_hole circle (at 6.5 4.5) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 1 thru_hole circle (at 0 0) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 1 /NRST)) + (pad 2 thru_hole circle (at 0 4.5) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 2 GND)) + (model ${KISYS3DMOD}/Button_Switch_THT.3dshapes/SW_PUSH_6mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Button_Switch_THT:SW_PUSH_6mm (layer F.Cu) (tedit 5A02FE31) (tstamp 5CDBB7B5) + (at 114.6175 76.581 90) + (descr https://www.omron.com/ecb/products/pdf/en-b3f.pdf) + (tags "tact sw push 6mm") + (path /5909F6B6) + (fp_text reference SW2 (at 3.25 -2 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Boot (at 3.75 6.7 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text user %R (at 3.25 2.25 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 3.25 -0.75) (end 6.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 6.25 -0.75) (end 6.25 5.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.25 5.25) (end 0.25 5.25) (layer F.Fab) (width 0.1)) + (fp_line (start 0.25 5.25) (end 0.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 0.25 -0.75) (end 3.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 7.75 6) (end 8 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 6) (end 8 5.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 -1.5) (end 8 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 -1.5) (end 8 -1.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 -1.25) (end -1.5 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 -1.5) (end -1.25 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 5.75) (end -1.5 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 6) (end -1.25 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.25 -1.5) (end 7.75 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 5.75) (end -1.5 -1.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 6) (end -1.25 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 -1.25) (end 8 5.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1 5.5) (end 5.5 5.5) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.25 1.5) (end -0.25 3) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.5 -1) (end 1 -1) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.75 3) (end 6.75 1.5) (layer F.SilkS) (width 0.12)) + (fp_circle (center 3.25 2.25) (end 1.25 2.5) (layer F.Fab) (width 0.1)) + (pad 2 thru_hole circle (at 0 4.5 180) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 4 +3V3)) + (pad 1 thru_hole circle (at 0 0 180) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 3 /BOOT0)) + (pad 2 thru_hole circle (at 6.5 4.5 180) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 4 +3V3)) + (pad 1 thru_hole circle (at 6.5 0 180) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 3 /BOOT0)) + (model ${KISYS3DMOD}/Button_Switch_THT.3dshapes/SW_PUSH_6mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Button_Switch_THT:SW_PUSH_6mm (layer F.Cu) (tedit 5A02FE31) (tstamp 5CDBB7D4) + (at 114.046 82.2325) + (descr https://www.omron.com/ecb/products/pdf/en-b3f.pdf) + (tags "tact sw push 6mm") + (path /5D2D9A50) + (fp_text reference SW3 (at 3.25 -2) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Button0 (at 3.75 6.7) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text user %R (at 3.25 2.25) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 3.25 -0.75) (end 6.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 6.25 -0.75) (end 6.25 5.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.25 5.25) (end 0.25 5.25) (layer F.Fab) (width 0.1)) + (fp_line (start 0.25 5.25) (end 0.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 0.25 -0.75) (end 3.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 7.75 6) (end 8 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 6) (end 8 5.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 -1.5) (end 8 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 -1.5) (end 8 -1.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 -1.25) (end -1.5 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 -1.5) (end -1.25 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 5.75) (end -1.5 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 6) (end -1.25 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.25 -1.5) (end 7.75 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 5.75) (end -1.5 -1.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 6) (end -1.25 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 -1.25) (end 8 5.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1 5.5) (end 5.5 5.5) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.25 1.5) (end -0.25 3) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.5 -1) (end 1 -1) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.75 3) (end 6.75 1.5) (layer F.SilkS) (width 0.12)) + (fp_circle (center 3.25 2.25) (end 1.25 2.5) (layer F.Fab) (width 0.1)) + (pad 2 thru_hole circle (at 0 4.5 90) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 1 thru_hole circle (at 0 0 90) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 11 /Button1)) + (pad 2 thru_hole circle (at 6.5 4.5 90) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 1 thru_hole circle (at 6.5 0 90) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 11 /Button1)) + (model ${KISYS3DMOD}/Button_Switch_THT.3dshapes/SW_PUSH_6mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Button_Switch_THT:SW_PUSH_6mm (layer F.Cu) (tedit 5A02FE31) (tstamp 5CDC1C8D) + (at 120.546 94.742 180) + (descr https://www.omron.com/ecb/products/pdf/en-b3f.pdf) + (tags "tact sw push 6mm") + (path /5D2E5A00) + (fp_text reference SW4 (at 3.25 -2 180) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Button1 (at 3.75 6.7 180) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_circle (center 3.25 2.25) (end 1.25 2.5) (layer F.Fab) (width 0.1)) + (fp_line (start 6.75 3) (end 6.75 1.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.5 -1) (end 1 -1) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.25 1.5) (end -0.25 3) (layer F.SilkS) (width 0.12)) + (fp_line (start 1 5.5) (end 5.5 5.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 8 -1.25) (end 8 5.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 6) (end -1.25 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 5.75) (end -1.5 -1.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.25 -1.5) (end 7.75 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 6) (end -1.25 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 5.75) (end -1.5 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 -1.5) (end -1.25 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 -1.25) (end -1.5 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 -1.5) (end 8 -1.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 -1.5) (end 8 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8 6) (end 8 5.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.75 6) (end 8 6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 0.25 -0.75) (end 3.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 0.25 5.25) (end 0.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_line (start 6.25 5.25) (end 0.25 5.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.25 -0.75) (end 6.25 5.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.25 -0.75) (end 6.25 -0.75) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 3.25 2.25 180) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole circle (at 6.5 0 270) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 10 /Button0)) + (pad 2 thru_hole circle (at 6.5 4.5 270) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 1 thru_hole circle (at 0 0 270) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 10 /Button0)) + (pad 2 thru_hole circle (at 0 4.5 270) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) + (net 2 GND)) + (model ${KISYS3DMOD}/Button_Switch_THT.3dshapes/SW_PUSH_6mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module TO_SOT_Packages_SMD:SOT-223 (layer B.Cu) (tedit 5A02FF57) (tstamp 5CDBB809) + (at 107.569 90.8685 180) + (descr "module CMS SOT223 4 pins") + (tags "CMS SOT") + (path /58C431FC) + (attr smd) + (fp_text reference U1 (at 0 4.5 180) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value LM1117-3.3 (at 0 -4.5 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) + ) + (fp_line (start -1.85 2.3) (end -0.8 3.35) (layer B.Fab) (width 0.1)) + (fp_line (start 1.91 -3.41) (end 1.91 -2.15) (layer B.SilkS) (width 0.12)) + (fp_line (start 1.91 3.41) (end 1.91 2.15) (layer B.SilkS) (width 0.12)) + (fp_line (start 4.4 3.6) (end -4.4 3.6) (layer B.CrtYd) (width 0.05)) + (fp_line (start 4.4 -3.6) (end 4.4 3.6) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.4 -3.6) (end 4.4 -3.6) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.4 3.6) (end -4.4 -3.6) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 2.3) (end -1.85 -3.35) (layer B.Fab) (width 0.1)) + (fp_line (start -1.85 -3.41) (end 1.91 -3.41) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.8 3.35) (end 1.85 3.35) (layer B.Fab) (width 0.1)) + (fp_line (start -4.1 3.41) (end 1.91 3.41) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -3.35) (end 1.85 -3.35) (layer B.Fab) (width 0.1)) + (fp_line (start 1.85 3.35) (end 1.85 -3.35) (layer B.Fab) (width 0.1)) + (pad 4 smd rect (at 3.15 0 180) (size 2 3.8) (layers B.Cu B.Paste B.Mask) + (net 4 +3V3)) + (pad 2 smd rect (at -3.15 0 180) (size 2 1.5) (layers B.Cu B.Paste B.Mask) + (net 4 +3V3)) + (pad 3 smd rect (at -3.15 -2.3 180) (size 2 1.5) (layers B.Cu B.Paste B.Mask) + (net 14 +5V)) + (pad 1 smd rect (at -3.15 2.3 180) (size 2 1.5) (layers B.Cu B.Paste B.Mask) + (net 2 GND)) + (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-223.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Crystal:Crystal_HC49-U_Vertical (layer F.Cu) (tedit 5A1AD3B8) (tstamp 5CDBF8E8) + (at 89.3445 79.0575 270) + (descr "Crystal THT HC-49/U http://5hertz.com/pdfs/04404_D.pdf") + (tags "THT crystalHC-49/U") + (path /5D1F4994) + (fp_text reference Y1 (at 2.44 -3.525 270) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 8MHz (at 2.44 3.525 270) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text user %R (at 2.44 0 270) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -0.685 -2.325) (end 5.565 -2.325) (layer F.Fab) (width 0.1)) + (fp_line (start -0.685 2.325) (end 5.565 2.325) (layer F.Fab) (width 0.1)) + (fp_line (start -0.56 -2) (end 5.44 -2) (layer F.Fab) (width 0.1)) + (fp_line (start -0.56 2) (end 5.44 2) (layer F.Fab) (width 0.1)) + (fp_line (start -0.685 -2.525) (end 5.565 -2.525) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.685 2.525) (end 5.565 2.525) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.5 -2.8) (end -3.5 2.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.5 2.8) (end 8.4 2.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.4 2.8) (end 8.4 -2.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.4 -2.8) (end -3.5 -2.8) (layer F.CrtYd) (width 0.05)) + (fp_arc (start -0.685 0) (end -0.685 -2.325) (angle -180) (layer F.Fab) (width 0.1)) + (fp_arc (start 5.565 0) (end 5.565 -2.325) (angle 180) (layer F.Fab) (width 0.1)) + (fp_arc (start -0.56 0) (end -0.56 -2) (angle -180) (layer F.Fab) (width 0.1)) + (fp_arc (start 5.44 0) (end 5.44 -2) (angle 180) (layer F.Fab) (width 0.1)) + (fp_arc (start -0.685 0) (end -0.685 -2.525) (angle -180) (layer F.SilkS) (width 0.12)) + (fp_arc (start 5.565 0) (end 5.565 -2.525) (angle 180) (layer F.SilkS) (width 0.12)) + (pad 1 thru_hole circle (at 0 0 270) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) + (net 5 /OSC_IN)) + (pad 2 thru_hole circle (at 4.88 0 270) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) + (net 6 /OSC_OUT)) + (model ${KISYS3DMOD}/Crystal.3dshapes/Crystal_HC49-U_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module TO_SOT_Packages_SMD:SOT-23-6_Handsoldering (layer B.Cu) (tedit 5A02FF57) (tstamp 5CDBBE7E) + (at 109.855 109.347) + (descr "6-pin SOT-23 package, Handsoldering") + (tags "SOT-23-6 Handsoldering") + (path /5CED0250) + (attr smd) + (fp_text reference U3 (at 0 2.9) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value USBLC6-2SC6 (at 0 -2.9) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user %R (at 0 0 -90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.075)) (justify mirror)) + ) + (fp_line (start -0.9 -1.61) (end 0.9 -1.61) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.9 1.61) (end -2.05 1.61) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.4 -1.8) (end -2.4 1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.4 -1.8) (end -2.4 -1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.4 1.8) (end 2.4 -1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.4 1.8) (end 2.4 1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.9 0.9) (end -0.25 1.55) (layer B.Fab) (width 0.1)) + (fp_line (start 0.9 1.55) (end -0.25 1.55) (layer B.Fab) (width 0.1)) + (fp_line (start -0.9 0.9) (end -0.9 -1.55) (layer B.Fab) (width 0.1)) + (fp_line (start 0.9 -1.55) (end -0.9 -1.55) (layer B.Fab) (width 0.1)) + (fp_line (start 0.9 1.55) (end 0.9 -1.55) (layer B.Fab) (width 0.1)) + (pad 1 smd rect (at -1.35 0.95) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 22 "Net-(R7-Pad1)")) + (pad 2 smd rect (at -1.35 0) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 2 GND)) + (pad 3 smd rect (at -1.35 -0.95) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 25 "Net-(R8-Pad1)")) + (pad 4 smd rect (at 1.35 -0.95) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 16 "Net-(P2-Pad3)")) + (pad 6 smd rect (at 1.35 0.95) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 15 "Net-(P2-Pad2)")) + (pad 5 smd rect (at 1.35 0) (size 1.56 0.65) (layers B.Cu B.Paste B.Mask) + (net 14 +5V)) + (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-23-6.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_DIP:DIP-48_W15.24mm_Socket_LongPads (layer F.Cu) (tedit 5A02E8C5) (tstamp 5CDBF80F) + (at 85 70) + (descr "48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads") + (tags "THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads") + (path /5CDF834A) + (fp_text reference U2 (at 7.62 -2.33) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value STM32F042C6Tx (at 7.62 60.75) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_arc (start 7.62 -1.33) (end 6.62 -1.33) (angle -180) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.255 -1.27) (end 14.985 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 14.985 -1.27) (end 14.985 59.69) (layer F.Fab) (width 0.1)) + (fp_line (start 14.985 59.69) (end 0.255 59.69) (layer F.Fab) (width 0.1)) + (fp_line (start 0.255 59.69) (end 0.255 -0.27) (layer F.Fab) (width 0.1)) + (fp_line (start 0.255 -0.27) (end 1.255 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 -1.33) (end -1.27 59.75) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 59.75) (end 16.51 59.75) (layer F.Fab) (width 0.1)) + (fp_line (start 16.51 59.75) (end 16.51 -1.33) (layer F.Fab) (width 0.1)) + (fp_line (start 16.51 -1.33) (end -1.27 -1.33) (layer F.Fab) (width 0.1)) + (fp_line (start 6.62 -1.33) (end 1.56 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.56 -1.33) (end 1.56 59.75) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.56 59.75) (end 13.68 59.75) (layer F.SilkS) (width 0.12)) + (fp_line (start 13.68 59.75) (end 13.68 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start 13.68 -1.33) (end 8.62 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.44 -1.39) (end -1.44 59.81) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.44 59.81) (end 16.68 59.81) (layer F.SilkS) (width 0.12)) + (fp_line (start 16.68 59.81) (end 16.68 -1.39) (layer F.SilkS) (width 0.12)) + (fp_line (start 16.68 -1.39) (end -1.44 -1.39) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.55 -1.6) (end -1.55 60) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.55 60) (end 16.8 60) (layer F.CrtYd) (width 0.05)) + (fp_line (start 16.8 60) (end 16.8 -1.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 16.8 -1.6) (end -1.55 -1.6) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 7.62 29.21) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at 0 0) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 4 +3V3)) + (pad 25 thru_hole oval (at 15.24 58.42) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 2 thru_hole oval (at 0 2.54) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 26 thru_hole oval (at 15.24 55.88) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 3 thru_hole oval (at 0 5.08) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 27 thru_hole oval (at 15.24 53.34) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 4 thru_hole oval (at 0 7.62) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 28 thru_hole oval (at 15.24 50.8) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 5 thru_hole oval (at 0 10.16) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 5 /OSC_IN)) + (pad 29 thru_hole oval (at 15.24 48.26) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 6 thru_hole oval (at 0 12.7) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 6 /OSC_OUT)) + (pad 30 thru_hole oval (at 15.24 45.72) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 9 /Tx)) + (pad 7 thru_hole oval (at 0 15.24) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 1 /NRST)) + (pad 31 thru_hole oval (at 15.24 43.18) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 8 /Rx)) + (pad 8 thru_hole oval (at 0 17.78) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 32 thru_hole oval (at 15.24 40.64) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 23 "Net-(R7-Pad2)")) + (pad 9 thru_hole oval (at 0 20.32) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 4 +3V3)) + (pad 33 thru_hole oval (at 15.24 38.1) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 24 "Net-(R8-Pad2)")) + (pad 10 thru_hole oval (at 0 22.86) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 21 /LED1)) + (pad 34 thru_hole oval (at 15.24 35.56) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 17 /USB_PU)) + (pad 11 thru_hole oval (at 0 25.4) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 35 thru_hole oval (at 15.24 33.02) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 12 thru_hole oval (at 0 27.94) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 36 thru_hole oval (at 15.24 30.48) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 4 +3V3)) + (pad 13 thru_hole oval (at 0 30.48) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 37 thru_hole oval (at 15.24 27.94) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 10 /Button0)) + (pad 14 thru_hole oval (at 0 33.02) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 20 /LED0)) + (pad 38 thru_hole oval (at 15.24 25.4) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 11 /Button1)) + (pad 15 thru_hole oval (at 0 35.56) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 39 thru_hole oval (at 15.24 22.86) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 16 thru_hole oval (at 0 38.1) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 40 thru_hole oval (at 15.24 20.32) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 17 thru_hole oval (at 0 40.64) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 41 thru_hole oval (at 15.24 17.78) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 18 thru_hole oval (at 0 43.18) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 26 "Net-(RV1-Pad2)")) + (pad 42 thru_hole oval (at 15.24 15.24) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 19 thru_hole oval (at 0 45.72) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 43 thru_hole oval (at 15.24 12.7) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 20 thru_hole oval (at 0 48.26) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 19 "Net-(R3-Pad1)")) + (pad 44 thru_hole oval (at 15.24 10.16) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 3 /BOOT0)) + (pad 21 thru_hole oval (at 0 50.8) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 45 thru_hole oval (at 15.24 7.62) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 22 thru_hole oval (at 0 53.34) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 46 thru_hole oval (at 15.24 5.08) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask)) + (pad 23 thru_hole oval (at 0 55.88) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 47 thru_hole oval (at 15.24 2.54) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 2 GND)) + (pad 24 thru_hole oval (at 0 58.42) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 4 +3V3)) + (pad 48 thru_hole oval (at 15.24 0) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 4 +3V3)) + (model ${KISYS3DMOD}/Package_DIP.3dshapes/DIP-48_W15.24mm_Socket.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (dimension 64 (width 0.15) (layer Dwgs.User) + (gr_text "64.000 mm" (at 126.3 99 90) (layer Dwgs.User) + (effects (font (size 1 1) (thickness 0.15))) + ) + (feature1 (pts (xy 122.5 67) (xy 125.586421 67))) + (feature2 (pts (xy 122.5 131) (xy 125.586421 131))) + (crossbar (pts (xy 125 131) (xy 125 67))) + (arrow1a (pts (xy 125 67) (xy 125.586421 68.126504))) + (arrow1b (pts (xy 125 67) (xy 124.413579 68.126504))) + (arrow2a (pts (xy 125 131) (xy 125.586421 129.873496))) + (arrow2b (pts (xy 125 131) (xy 124.413579 129.873496))) + ) + (dimension 66 (width 0.15) (layer Dwgs.User) + (gr_text "66.000 mm" (at 89.5 133.799999) (layer Dwgs.User) + (effects (font (size 1 1) (thickness 0.15))) + ) + (feature1 (pts (xy 122.5 131) (xy 122.5 133.08642))) + (feature2 (pts (xy 56.5 131) (xy 56.5 133.08642))) + (crossbar (pts (xy 56.5 132.499999) (xy 122.5 132.499999))) + (arrow1a (pts (xy 122.5 132.499999) (xy 121.373496 133.08642))) + (arrow1b (pts (xy 122.5 132.499999) (xy 121.373496 131.913578))) + (arrow2a (pts (xy 56.5 132.499999) (xy 57.626504 133.08642))) + (arrow2b (pts (xy 56.5 132.499999) (xy 57.626504 131.913578))) + ) + (gr_line (start 56.5 131) (end 56.5 67) (layer Edge.Cuts) (width 0.1) (tstamp 5CDC1FA1)) + (gr_line (start 122.5 131) (end 56.5 131) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 122.5 67) (end 122.5 131) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 56.5 67) (end 122.5 67) (layer Edge.Cuts) (width 0.1)) + + (segment (start 86.99 85.24) (end 87.503 85.753) (width 0.5) (layer B.Cu) (net 1) (status 20)) + (segment (start 85 85.24) (end 86.99 85.24) (width 0.5) (layer B.Cu) (net 1) (status 10)) + (segment (start 70.612 70.1445) (end 70.612 76.6445) (width 0.5) (layer B.Cu) (net 1) (status 30)) + (segment (start 83.952 85.24) (end 82.296 86.896) (width 0.5) (layer B.Cu) (net 1) (status 30)) + (segment (start 85 85.24) (end 83.952 85.24) (width 0.5) (layer B.Cu) (net 1) (status 30)) + (segment (start 70.612 76.6445) (end 75.311 76.6445) (width 0.5) (layer B.Cu) (net 1) (status 10)) + (segment (start 82.296 83.6295) (end 82.296 86.896) (width 0.5) (layer B.Cu) (net 1) (status 20)) + (segment (start 75.311 76.6445) (end 82.296 83.6295) (width 0.5) (layer B.Cu) (net 1)) + (segment (start 108.505 109.347) (end 98.2345 109.347) (width 0.25) (layer B.Cu) (net 2) (status 10)) + (segment (start 98.2345 109.347) (end 96.9645 108.077) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 96.9645 103.0605) (end 97.536 102.489) (width 0.25) (layer B.Cu) (net 2) (status 20)) + (segment (start 96.9645 106.7435) (end 96.9645 106.045) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 87.272 125.88) (end 87.63 126.238) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 85 125.88) (end 87.272 125.88) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 87.226 87.78) (end 87.503 87.503) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 85 87.78) (end 87.226 87.78) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 87.503 87.503) (end 89.3445 87.503) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 89.3445 90.269) (end 89.3165 90.297) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 89.3445 87.503) (end 89.3445 90.269) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 87.376 73.4835) (end 89.3445 75.452) (width 0.5) (layer B.Cu) (net 2) (status 20)) + (segment (start 87.376 71.755) (end 87.376 73.4835) (width 0.5) (layer B.Cu) (net 2) (status 10)) + (segment (start 98.081 72.54) (end 97.663 72.122) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 100.24 72.54) (end 98.081 72.54) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 97.79 72.249) (end 97.663 72.122) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 97.79 78.387) (end 97.79 72.249) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 87.63 120.269) (end 87.884 120.015) (width 0.5) (layer B.Cu) (net 2) (status 30)) + (segment (start 88.459 120.015) (end 89.7925 118.6815) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 87.884 120.015) (end 88.459 120.015) (width 0.5) (layer B.Cu) (net 2) (status 10)) + (via (at 90.17 94.488) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 2)) + (segment (start 89.7925 94.8655) (end 90.17 94.488) (width 0.5) (layer B.Cu) (net 2)) + (via (at 91.059 90.7415) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 2)) + (segment (start 90.17 94.488) (end 90.17 91.6305) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 90.17 91.6305) (end 91.059 90.7415) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 89.761 90.7415) (end 89.3165 90.297) (width 0.5) (layer B.Cu) (net 2) (status 20)) + (segment (start 91.059 90.7415) (end 89.761 90.7415) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 90.184 75.452) (end 89.3445 75.452) (width 0.5) (layer B.Cu) (net 2) (status 20)) + (segment (start 89.3445 87.503) (end 89.9195 87.503) (width 0.5) (layer B.Cu) (net 2) (status 10)) + (segment (start 91.2495 76.5175) (end 90.184 75.452) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 91.2495 86.173) (end 91.2495 76.5175) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 89.9195 87.503) (end 91.2495 86.173) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 98.067 103.02) (end 97.536 102.489) (width 0.5) (layer B.Cu) (net 2) (status 20)) + (segment (start 100.24 103.02) (end 98.067 103.02) (width 0.5) (layer B.Cu) (net 2) (status 10)) + (segment (start 94.0435 105.9815) (end 96.9645 105.9815) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 93.853 107.348) (end 93.853 106.172) (width 0.25) (layer B.Cu) (net 2) (status 10)) + (segment (start 93.853 106.172) (end 94.0435 105.9815) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 96.9645 106.045) (end 96.9645 105.9815) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 96.9645 105.9815) (end 96.9645 103.0605) (width 0.25) (layer B.Cu) (net 2)) + (via (at 89.5 121.5) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 2)) + (segment (start 89.37 121.37) (end 89.5 121.5) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 87.63 121.37) (end 89.37 121.37) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 87.63 121.37) (end 87.63 120.269) (width 0.5) (layer B.Cu) (net 2) (status 20)) + (segment (start 87.63 126.238) (end 87.63 121.37) (width 0.5) (layer B.Cu) (net 2) (status 10)) + (via (at 93.5 121.5) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 2)) + (segment (start 89.5 121.5) (end 93.5 121.5) (width 0.5) (layer F.Cu) (net 2)) + (via (at 95.5 115.5) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 2)) + (segment (start 93.5 121.5) (end 93.5 117.5) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 93.5 117.5) (end 95.5 115.5) (width 0.5) (layer B.Cu) (net 2)) + (via (at 97 109) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 2)) + (segment (start 95.5 115.5) (end 97 114) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 97 114) (end 97 109) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 97 108) (end 96.9645 107.9645) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 97 109) (end 97 108) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 96.9645 108.077) (end 96.9645 107.9645) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 96.9645 107.9645) (end 96.9645 106.7435) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 89.7925 109.2075) (end 89.7925 106.7925) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 89.7925 106.7925) (end 89.7925 94.8655) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 89.7925 112.2075) (end 89.7925 109.2075) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 89.7925 118.6815) (end 89.7925 112.2075) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 89.7925 106.7925) (end 83.644 106.7925) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 83.644 106.7925) (end 82.2325 108.204) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 82.2325 108.204) (end 82.2325 108.585) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 80.057 110.7605) (end 70.358 110.7605) (width 0.25) (layer B.Cu) (net 2) (status 20)) + (segment (start 81.8515 109.347) (end 81.661 109.1565) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 89.7925 109.2075) (end 89.653 109.347) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 89.653 109.347) (end 81.8515 109.347) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 82.2325 108.585) (end 81.661 109.1565) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 89.7925 112.2075) (end 87.252 112.2075) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 87.252 112.2075) (end 86.995 111.9505) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 86.995 111.9505) (end 81.661 111.9505) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 81.661 109.1565) (end 80.264 110.5535) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 81.661 111.9505) (end 80.264 110.5535) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 80.264 110.5535) (end 80.057 110.7605) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 116.591 106.568) (end 115.4915 106.568) (width 0.25) (layer B.Cu) (net 2) (status 10)) + (segment (start 115.4915 106.568) (end 115.1255 106.934) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 115.1255 106.934) (end 115.1255 107.061) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 115.2825 107.218) (end 116.591 107.218) (width 0.25) (layer B.Cu) (net 2) (status 20)) + (segment (start 115.1255 107.061) (end 115.2825 107.218) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 115.1255 106.934) (end 115.1255 107.569) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 115.1255 107.569) (end 114.8715 107.823) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 114.8715 107.823) (end 114.8715 112.5855) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 114.8715 112.5855) (end 120.142 117.856) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 120.142 117.856) (end 120.142 122.428) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 119.253 123.317) (end 117.475 123.317) (width 0.5) (layer B.Cu) (net 2) (status 20)) + (segment (start 120.142 122.428) (end 119.253 123.317) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 95.504 80.137) (end 97.79 80.137) (width 0.5) (layer B.Cu) (net 3) (status 30)) + (segment (start 100.217 80.137) (end 100.24 80.16) (width 0.5) (layer B.Cu) (net 3) (status 30)) + (segment (start 97.79 80.137) (end 100.217 80.137) (width 0.5) (layer B.Cu) (net 3) (status 30)) + (via (at 103.886 77.1525) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 3)) + (segment (start 100.24 80.16) (end 100.8785 80.16) (width 0.5) (layer B.Cu) (net 3) (status 30)) + (segment (start 100.8785 80.16) (end 103.886 77.1525) (width 0.5) (layer B.Cu) (net 3) (status 10)) + (via (at 110.5535 77.1525) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 3)) + (segment (start 103.886 77.1525) (end 110.5535 77.1525) (width 0.5) (layer F.Cu) (net 3)) + (segment (start 114.046 77.1525) (end 114.6175 76.581) (width 0.5) (layer B.Cu) (net 3) (status 30)) + (segment (start 110.5535 77.1525) (end 114.046 77.1525) (width 0.5) (layer B.Cu) (net 3) (status 20)) + (segment (start 114.6175 76.581) (end 114.6175 70.081) (width 0.5) (layer B.Cu) (net 3) (status 30)) + (segment (start 104.419 90.8685) (end 105.919 90.8685) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 105.919 90.8685) (end 106.553 90.8685) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 106.553 90.8685) (end 110.719 90.8685) (width 0.5) (layer B.Cu) (net 4) (status 20)) + (segment (start 119.1175 70.081) (end 119.1175 76.581) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 119.1175 77.995213) (end 117.856 79.256713) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 119.1175 76.581) (end 119.1175 77.995213) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 107.052213 79.256713) (end 106.6395 78.844) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 117.856 79.256713) (end 107.052213 79.256713) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 106.6395 78.844) (end 106.6395 85.1535) (width 1) (layer B.Cu) (net 4) (status 20)) + (segment (start 104.419 87.374) (end 106.6395 85.1535) (width 1) (layer B.Cu) (net 4) (status 20)) + (segment (start 104.419 90.8685) (end 104.419 87.374) (width 1) (layer B.Cu) (net 4) (status 10)) + (segment (start 99.981 100.739) (end 100.24 100.48) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 97.536 100.739) (end 99.981 100.739) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 100.24 100.48) (end 103.355 100.48) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 104.419 99.416) (end 104.17175 99.66325) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 103.355 100.48) (end 104.17175 99.66325) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 87.198 128.42) (end 87.63 127.988) (width 0.5) (layer B.Cu) (net 4) (status 20)) + (segment (start 85 128.42) (end 87.198 128.42) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 83.97 90.32) (end 82.296 88.646) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 85 90.32) (end 83.97 90.32) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 87.5435 90.32) (end 87.5665 90.297) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 85 90.32) (end 87.5435 90.32) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 87.371 70) (end 87.376 70.005) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 85 70) (end 87.371 70) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 98.035 70) (end 97.663 70.372) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 100.24 70) (end 98.035 70) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 106.6395 78.844) (end 106.6395 71.524) (width 1) (layer B.Cu) (net 4)) + (segment (start 106.6395 71.524) (end 105.1155 70) (width 1) (layer B.Cu) (net 4)) + (segment (start 90.777 127.988) (end 87.63 127.988) (width 0.5) (layer B.Cu) (net 4) (status 20)) + (segment (start 90.8685 128.0795) (end 90.777 127.988) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 105.1155 70) (end 102.8295 70) (width 1) (layer B.Cu) (net 4)) + (segment (start 102.8295 70) (end 100.24 70) (width 1) (layer B.Cu) (net 4) (status 20)) + (segment (start 93.5075 78.387) (end 93.472 78.4225) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 95.504 78.387) (end 93.5075 78.387) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 87.5665 90.872) (end 89.087 92.3925) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 87.5665 90.297) (end 87.5665 90.872) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 68.358 115.7605) (end 65.8815 113.284) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 70.358 115.7605) (end 68.358 115.7605) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 65.8815 113.284) (end 63.0555 113.284) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 63.0555 113.284) (end 60.657999 110.886499) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 60.657999 79.486501) (end 61.2775 78.867) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 66.802 78.867) (end 68.3895 80.4545) (width 0.5) (layer B.Cu) (net 4) (status 20)) + (segment (start 61.2775 78.867) (end 66.802 78.867) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 60.706 90.17) (end 60.657999 90.121999) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 68.3895 90.17) (end 60.706 90.17) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 60.657999 90.121999) (end 60.657999 79.486501) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 60.706 99.695) (end 60.657999 99.743001) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 60.657999 110.886499) (end 60.657999 99.743001) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 68.3895 99.695) (end 60.706 99.695) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 80.772 90.17) (end 82.296 88.646) (width 0.5) (layer B.Cu) (net 4) (status 20)) + (segment (start 68.3895 90.17) (end 80.772 90.17) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 70.358 115.7605) (end 72.358 115.7605) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 72.358 115.7605) (end 73.1185 115) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 82 115) (end 82.5 115.5) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 73.1185 115) (end 82 115) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 83.3 128.42) (end 85 128.42) (width 0.5) (layer B.Cu) (net 4) (status 20)) + (segment (start 82.5 127.62) (end 83.3 128.42) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 82.5 115.5) (end 82.5 127.62) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 94.869 81.788) (end 93.472 81.788) (width 1) (layer B.Cu) (net 4)) + (segment (start 96.266 83.185) (end 94.869 81.788) (width 1) (layer B.Cu) (net 4)) + (segment (start 93.472 81.788) (end 93.472 78.4225) (width 1) (layer B.Cu) (net 4)) + (segment (start 89.087 92.3925) (end 92.0115 92.3925) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 91.313 127.635) (end 90.8685 128.0795) (width 1) (layer B.Cu) (net 4)) + (segment (start 91.313 100.076) (end 91.313 127.635) (width 1) (layer B.Cu) (net 4)) + (segment (start 91.313 100.076) (end 91.313 99.822) (width 1) (layer B.Cu) (net 4)) + (segment (start 96.266 94.869) (end 96.266 83.185) (width 1) (layer B.Cu) (net 4)) + (segment (start 92.202 98.933) (end 92.1385 98.9965) (width 1) (layer B.Cu) (net 4)) + (segment (start 92.202 92.583) (end 92.202 98.933) (width 1) (layer B.Cu) (net 4)) + (segment (start 92.0115 92.3925) (end 92.202 92.583) (width 1) (layer B.Cu) (net 4)) + (segment (start 91.313 99.822) (end 92.1385 98.9965) (width 1) (layer B.Cu) (net 4)) + (segment (start 92.1385 98.9965) (end 96.266 94.869) (width 1) (layer B.Cu) (net 4)) + (segment (start 95.222 100.739) (end 97.536 100.739) (width 0.5) (layer B.Cu) (net 4) (status 20)) + (segment (start 93.853 104.648) (end 93.853 102.108) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (segment (start 93.853 102.108) (end 95.222 100.739) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 93.472 76.073) (end 93.472 75.2475) (width 1) (layer B.Cu) (net 4)) + (segment (start 93.472 78.4225) (end 93.472 76.073) (width 1) (layer B.Cu) (net 4)) + (segment (start 89.761 71.5365) (end 89.761 70.005) (width 1) (layer B.Cu) (net 4)) + (segment (start 93.472 75.2475) (end 89.761 71.5365) (width 1) (layer B.Cu) (net 4)) + (segment (start 87.376 70.005) (end 89.761 70.005) (width 0.5) (layer B.Cu) (net 4) (status 10)) + (via (at 89.761 70.005) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 4)) + (segment (start 89.761 70.005) (end 95.7935 70.005) (width 0.5) (layer F.Cu) (net 4)) + (via (at 95.8215 69.977) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 4)) + (segment (start 95.7935 70.005) (end 95.8215 69.977) (width 0.5) (layer F.Cu) (net 4)) + (segment (start 97.268 69.977) (end 97.663 70.372) (width 0.5) (layer B.Cu) (net 4) (status 30)) + (segment (start 95.8215 69.977) (end 97.268 69.977) (width 0.5) (layer B.Cu) (net 4) (status 20)) + (segment (start 105.537 100.28) (end 105.537 103.9195) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 104.419 99.162) (end 104.419 99.416) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 104.419 99.162) (end 105.537 100.28) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 104.419 90.8685) (end 104.419 99.162) (width 0.5) (layer B.Cu) (net 4)) + (segment (start 88.242 80.16) (end 89.3445 79.0575) (width 0.5) (layer B.Cu) (net 5) (status 20)) + (segment (start 85 80.16) (end 88.242 80.16) (width 0.5) (layer B.Cu) (net 5) (status 10)) + (segment (start 89.3445 77.202) (end 89.3445 79.0575) (width 0.5) (layer B.Cu) (net 5) (status 30)) + (segment (start 89.3445 85.753) (end 89.3445 83.9375) (width 0.5) (layer B.Cu) (net 6) (status 30)) + (segment (start 88.107 82.7) (end 89.3445 83.9375) (width 0.5) (layer B.Cu) (net 6) (status 20)) + (segment (start 85 82.7) (end 88.107 82.7) (width 0.5) (layer B.Cu) (net 6) (status 10)) + (segment (start 68.3805 83.0035) (end 68.3895 82.9945) (width 0.5) (layer B.Cu) (net 7) (status 30)) + (segment (start 64.7065 83.0035) (end 68.3805 83.0035) (width 0.5) (layer B.Cu) (net 7) (status 30)) + (segment (start 112.418 113.18) (end 117.475 118.237) (width 0.5) (layer B.Cu) (net 8) (status 20)) + (segment (start 100.24 113.18) (end 112.418 113.18) (width 0.5) (layer B.Cu) (net 8) (status 10)) + (segment (start 94.803 107.348) (end 94.803 109.2175) (width 0.5) (layer B.Cu) (net 8) (status 10)) + (segment (start 94.803 109.443) (end 94.803 109.2175) (width 0.5) (layer B.Cu) (net 8)) + (segment (start 98.54 113.18) (end 94.803 109.443) (width 0.5) (layer B.Cu) (net 8)) + (segment (start 100.24 113.18) (end 98.54 113.18) (width 0.5) (layer B.Cu) (net 8) (status 10)) + (segment (start 112.418 115.72) (end 117.475 120.777) (width 0.5) (layer B.Cu) (net 9) (status 20)) + (segment (start 100.24 115.72) (end 112.418 115.72) (width 0.5) (layer B.Cu) (net 9) (status 10)) + (segment (start 92.903 108.628) (end 92.903 107.348) (width 0.5) (layer B.Cu) (net 9) (status 20)) + (segment (start 92.903 110.083) (end 92.903 108.628) (width 0.5) (layer B.Cu) (net 9)) + (segment (start 98.54 115.72) (end 92.903 110.083) (width 0.5) (layer B.Cu) (net 9)) + (segment (start 100.24 115.72) (end 98.54 115.72) (width 0.5) (layer B.Cu) (net 9) (status 10)) + (via (at 102.87 97.9805) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 10)) + (segment (start 100.24 97.94) (end 102.8295 97.94) (width 0.5) (layer B.Cu) (net 10) (status 10)) + (segment (start 102.8295 97.94) (end 102.87 97.9805) (width 0.5) (layer B.Cu) (net 10)) + (via (at 114.6175 97.917) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 10)) + (segment (start 102.87 97.9805) (end 114.554 97.9805) (width 0.5) (layer F.Cu) (net 10)) + (segment (start 114.554 97.9805) (end 114.6175 97.917) (width 0.5) (layer F.Cu) (net 10)) + (segment (start 114.6175 94.7825) (end 114.658 94.742) (width 0.5) (layer B.Cu) (net 10) (status 30)) + (segment (start 95.628 104.648) (end 95.758 104.518) (width 0.5) (layer B.Cu) (net 10)) + (segment (start 94.803 104.648) (end 95.628 104.648) (width 0.5) (layer B.Cu) (net 10) (status 10)) + (via (at 95.758 102.616) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 10)) + (segment (start 95.758 104.518) (end 95.758 102.616) (width 0.5) (layer B.Cu) (net 10)) + (via (at 95.758 99.06) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 10)) + (segment (start 95.758 102.616) (end 95.758 99.06) (width 0.5) (layer F.Cu) (net 10)) + (segment (start 99.12 99.06) (end 100.24 97.94) (width 0.5) (layer B.Cu) (net 10) (status 20)) + (segment (start 95.758 99.06) (end 99.12 99.06) (width 0.5) (layer B.Cu) (net 10)) + (segment (start 114.6175 95.3135) (end 114.046 94.742) (width 0.5) (layer B.Cu) (net 10) (status 30)) + (segment (start 114.6175 97.917) (end 114.6175 95.3135) (width 0.5) (layer B.Cu) (net 10) (status 20)) + (segment (start 114.046 94.742) (end 120.546 94.742) (width 0.5) (layer B.Cu) (net 10) (status 30)) + (segment (start 100.24 95.4) (end 98.54 95.4) (width 0.5) (layer B.Cu) (net 11) (status 10)) + (segment (start 97.663 94.523) (end 97.663 84.455) (width 0.5) (layer B.Cu) (net 11)) + (segment (start 97.663 84.455) (end 98.1075 84.0105) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 98.1075 84.0105) (end 98.171 83.947) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 98.171 83.947) (end 102.6795 83.947) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 102.6795 83.947) (end 102.6795 83.439) (width 0.5) (layer B.Cu) (net 11)) + (via (at 103.886 82.2325) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 11)) + (segment (start 102.6795 83.439) (end 103.886 82.2325) (width 0.5) (layer B.Cu) (net 11)) + (via (at 111.5695 82.2325) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 11)) + (segment (start 103.886 82.2325) (end 111.5695 82.2325) (width 0.5) (layer F.Cu) (net 11)) + (segment (start 98.54 95.4) (end 98.4075 95.2675) (width 0.5) (layer B.Cu) (net 11)) + (segment (start 92.903 104.648) (end 92.903 100.01) (width 0.5) (layer B.Cu) (net 11) (status 10)) + (segment (start 92.903 100.01) (end 98.0265 94.8865) (width 0.5) (layer B.Cu) (net 11)) + (segment (start 98.4075 95.2675) (end 98.0265 94.8865) (width 0.5) (layer B.Cu) (net 11)) + (segment (start 98.0265 94.8865) (end 97.663 94.523) (width 0.5) (layer B.Cu) (net 11)) + (segment (start 111.5695 82.2325) (end 114.046 82.2325) (width 0.5) (layer B.Cu) (net 11) (status 20)) + (segment (start 115.460213 82.2325) (end 120.546 82.2325) (width 0.5) (layer B.Cu) (net 11) (status 20)) + (segment (start 114.046 82.2325) (end 115.460213 82.2325) (width 0.5) (layer B.Cu) (net 11) (status 10)) + (segment (start 79.103 102.235) (end 79.865 102.997) (width 0.5) (layer B.Cu) (net 12) (status 20)) + (segment (start 68.3895 102.235) (end 79.103 102.235) (width 0.5) (layer B.Cu) (net 12) (status 10)) + (segment (start 69.7895 92.71) (end 71.3135 91.186) (width 0.5) (layer B.Cu) (net 13)) + (segment (start 68.3895 92.71) (end 69.7895 92.71) (width 0.5) (layer B.Cu) (net 13) (status 10)) + (segment (start 71.3135 91.186) (end 79.375 91.186) (width 0.5) (layer B.Cu) (net 13)) + (segment (start 80.0555 91.8665) (end 80.0555 92.837) (width 0.5) (layer B.Cu) (net 13) (status 20)) + (segment (start 79.375 91.186) (end 80.0555 91.8665) (width 0.5) (layer B.Cu) (net 13)) + (segment (start 115.691 104.618) (end 114.705 103.632) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 116.591 104.618) (end 115.691 104.618) (width 0.25) (layer B.Cu) (net 14) (status 10)) + (segment (start 114.705 103.632) (end 113.8555 103.632) (width 0.5) (layer B.Cu) (net 14)) + (segment (start 110.719 100.4955) (end 110.719 93.1685) (width 0.5) (layer B.Cu) (net 14) (status 20)) + (segment (start 113.8555 103.632) (end 110.719 100.4955) (width 0.5) (layer B.Cu) (net 14)) + (segment (start 108.236 100.4955) (end 110.719 100.4955) (width 0.5) (layer B.Cu) (net 14)) + (segment (start 109.855 107.315) (end 108.0135 105.4735) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 106.90575 101.82575) (end 108.236 100.4955) (width 0.5) (layer B.Cu) (net 14)) + (segment (start 106.8705 101.861) (end 106.90575 101.82575) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 106.8705 104.902) (end 106.8705 101.861) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 111.205 109.347) (end 110.175 109.347) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 108.0135 105.4735) (end 107.442 105.4735) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 109.855 109.027) (end 109.855 107.315) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 107.442 105.4735) (end 106.8705 104.902) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 110.175 109.347) (end 109.855 109.027) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 111.205 110.297) (end 112.6515 110.297) (width 0.25) (layer B.Cu) (net 15) (status 10)) + (via (at 113.411 109.5375) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 15)) + (segment (start 112.6515 110.297) (end 113.411 109.5375) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 113.411 109.5375) (end 113.411 105.2195) (width 0.25) (layer F.Cu) (net 15)) + (via (at 113.411 105.2195) (size 1.5) (drill 0.6) (layers F.Cu B.Cu) (net 15)) + (segment (start 113.4595 105.268) (end 113.411 105.2195) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 116.591 105.268) (end 113.4595 105.268) (width 0.25) (layer B.Cu) (net 15) (status 10)) + (segment (start 112.456 108.397) (end 111.205 108.397) (width 0.25) (layer B.Cu) (net 16) (status 20)) + (segment (start 116.591 105.918) (end 114.935 105.918) (width 0.25) (layer B.Cu) (net 16) (status 10)) + (segment (start 114.935 105.918) (end 112.456 108.397) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 111.205 106.3015) (end 111.1885 106.285) (width 0.5) (layer B.Cu) (net 16) (status 30)) + (segment (start 111.205 108.397) (end 111.205 106.3015) (width 0.5) (layer B.Cu) (net 16) (status 30)) + (segment (start 105.1965 105.56) (end 105.537 105.2195) (width 0.5) (layer B.Cu) (net 17) (status 20)) + (segment (start 100.24 105.56) (end 105.1965 105.56) (width 0.5) (layer B.Cu) (net 17) (status 10)) + (segment (start 111.154 104.5695) (end 111.1885 104.535) (width 0.5) (layer B.Cu) (net 18) (status 30)) + (segment (start 108.197 104.5695) (end 111.154 104.5695) (width 0.5) (layer B.Cu) (net 18) (status 30)) + (segment (start 87.879 118.26) (end 87.884 118.265) (width 0.5) (layer B.Cu) (net 19) (status 30)) + (segment (start 85 118.26) (end 87.879 118.26) (width 0.5) (layer B.Cu) (net 19) (status 30)) + (segment (start 84.977 102.997) (end 85 103.02) (width 0.5) (layer B.Cu) (net 20) (status 30)) + (segment (start 81.915 102.997) (end 84.977 102.997) (width 0.5) (layer B.Cu) (net 20) (status 30)) + (segment (start 84.977 92.837) (end 85 92.86) (width 0.5) (layer B.Cu) (net 21) (status 30)) + (segment (start 82.1055 92.837) (end 84.977 92.837) (width 0.5) (layer B.Cu) (net 21) (status 30)) + (segment (start 108.2485 110.5535) (end 108.505 110.297) (width 0.5) (layer B.Cu) (net 22) (status 30)) + (segment (start 104.6835 110.5535) (end 108.2485 110.5535) (width 0.5) (layer B.Cu) (net 22) (status 30)) + (segment (start 102.847 110.64) (end 102.9335 110.5535) (width 0.5) (layer B.Cu) (net 23) (status 30)) + (segment (start 100.24 110.64) (end 102.847 110.64) (width 0.5) (layer B.Cu) (net 23) (status 30)) + (segment (start 102.974 108.1) (end 102.997 108.077) (width 0.5) (layer B.Cu) (net 24) (status 30)) + (segment (start 100.24 108.1) (end 102.974 108.1) (width 0.5) (layer B.Cu) (net 24) (status 30)) + (segment (start 108.185 108.077) (end 108.505 108.397) (width 0.5) (layer B.Cu) (net 25) (status 30)) + (segment (start 104.747 108.077) (end 108.185 108.077) (width 0.5) (layer B.Cu) (net 25) (status 30)) + (segment (start 84.9595 113.2205) (end 85 113.18) (width 0.5) (layer B.Cu) (net 26) (status 30)) + (segment (start 70.358 113.2205) (end 84.9595 113.2205) (width 0.5) (layer B.Cu) (net 26) (status 30)) + + (zone (net 2) (net_name GND) (layer B.Cu) (tstamp 5CDD1601) (hatch edge 0.508) + (connect_pads (clearance 0.508)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 57 67.5) (xy 122 67.5) (xy 122 130.5) (xy 57 130.5) + ) + ) + (filled_polygon + (pts + (xy 121.815 81.189261) (xy 121.588252 80.962513) (xy 121.320463 80.783582) (xy 121.022912 80.660332) (xy 120.707033 80.5975) + (xy 120.384967 80.5975) (xy 120.069088 80.660332) (xy 119.771537 80.783582) (xy 119.503748 80.962513) (xy 119.276013 81.190248) + (xy 119.170941 81.3475) (xy 115.421059 81.3475) (xy 115.315987 81.190248) (xy 115.088252 80.962513) (xy 114.820463 80.783582) + (xy 114.522912 80.660332) (xy 114.207033 80.5975) (xy 113.884967 80.5975) (xy 113.569088 80.660332) (xy 113.271537 80.783582) + (xy 113.003748 80.962513) (xy 112.776013 81.190248) (xy 112.670941 81.3475) (xy 112.643185 81.3475) (xy 112.452386 81.156701) + (xy 112.225543 81.005129) (xy 111.973489 80.900725) (xy 111.705911 80.8475) (xy 111.433089 80.8475) (xy 111.165511 80.900725) + (xy 110.913457 81.005129) (xy 110.686614 81.156701) (xy 110.493701 81.349614) (xy 110.342129 81.576457) (xy 110.237725 81.828511) + (xy 110.1845 82.096089) (xy 110.1845 82.368911) (xy 110.237725 82.636489) (xy 110.342129 82.888543) (xy 110.493701 83.115386) + (xy 110.686614 83.308299) (xy 110.913457 83.459871) (xy 111.165511 83.564275) (xy 111.433089 83.6175) (xy 111.705911 83.6175) + (xy 111.973489 83.564275) (xy 112.225543 83.459871) (xy 112.452386 83.308299) (xy 112.643185 83.1175) (xy 112.670941 83.1175) + (xy 112.776013 83.274752) (xy 113.003748 83.502487) (xy 113.271537 83.681418) (xy 113.569088 83.804668) (xy 113.884967 83.8675) + (xy 114.207033 83.8675) (xy 114.522912 83.804668) (xy 114.820463 83.681418) (xy 115.088252 83.502487) (xy 115.315987 83.274752) + (xy 115.421059 83.1175) (xy 119.170941 83.1175) (xy 119.276013 83.274752) (xy 119.503748 83.502487) (xy 119.771537 83.681418) + (xy 120.069088 83.804668) (xy 120.384967 83.8675) (xy 120.707033 83.8675) (xy 121.022912 83.804668) (xy 121.320463 83.681418) + (xy 121.588252 83.502487) (xy 121.815 83.275739) (xy 121.815 85.825076) (xy 121.681413 85.776692) (xy 120.725605 86.7325) + (xy 121.681413 87.688308) (xy 121.815 87.639924) (xy 121.815 89.334576) (xy 121.681413 89.286192) (xy 120.725605 90.242) + (xy 121.681413 91.197808) (xy 121.815 91.149424) (xy 121.815 93.698761) (xy 121.588252 93.472013) (xy 121.320463 93.293082) + (xy 121.022912 93.169832) (xy 120.707033 93.107) (xy 120.384967 93.107) (xy 120.069088 93.169832) (xy 119.771537 93.293082) + (xy 119.503748 93.472013) (xy 119.276013 93.699748) (xy 119.170941 93.857) (xy 115.421059 93.857) (xy 115.315987 93.699748) + (xy 115.088252 93.472013) (xy 114.820463 93.293082) (xy 114.522912 93.169832) (xy 114.207033 93.107) (xy 113.884967 93.107) + (xy 113.569088 93.169832) (xy 113.271537 93.293082) (xy 113.003748 93.472013) (xy 112.776013 93.699748) (xy 112.597082 93.967537) + (xy 112.473832 94.265088) (xy 112.411 94.580967) (xy 112.411 94.903033) (xy 112.473832 95.218912) (xy 112.597082 95.516463) + (xy 112.776013 95.784252) (xy 113.003748 96.011987) (xy 113.271537 96.190918) (xy 113.569088 96.314168) (xy 113.732501 96.346673) + (xy 113.7325 96.843315) (xy 113.541701 97.034114) (xy 113.390129 97.260957) (xy 113.285725 97.513011) (xy 113.2325 97.780589) + (xy 113.2325 98.053411) (xy 113.285725 98.320989) (xy 113.390129 98.573043) (xy 113.541701 98.799886) (xy 113.734614 98.992799) + (xy 113.961457 99.144371) (xy 114.213511 99.248775) (xy 114.481089 99.302) (xy 114.753911 99.302) (xy 115.021489 99.248775) + (xy 115.273543 99.144371) (xy 115.500386 98.992799) (xy 115.693299 98.799886) (xy 115.844871 98.573043) (xy 115.949275 98.320989) + (xy 116.0025 98.053411) (xy 116.0025 97.780589) (xy 115.949275 97.513011) (xy 115.844871 97.260957) (xy 115.693299 97.034114) + (xy 115.5025 96.843315) (xy 115.5025 95.627) (xy 119.170941 95.627) (xy 119.276013 95.784252) (xy 119.503748 96.011987) + (xy 119.771537 96.190918) (xy 120.069088 96.314168) (xy 120.384967 96.377) (xy 120.707033 96.377) (xy 121.022912 96.314168) + (xy 121.320463 96.190918) (xy 121.588252 96.011987) (xy 121.815 95.785239) (xy 121.815001 101.438703) (xy 121.776946 101.367508) + (xy 121.625739 101.183261) (xy 121.441492 101.032054) (xy 121.231287 100.919697) (xy 121.003201 100.850508) (xy 120.825437 100.833) + (xy 120.056563 100.833) (xy 119.878799 100.850508) (xy 119.650713 100.919697) (xy 119.440508 101.032054) (xy 119.256261 101.183261) + (xy 119.105054 101.367508) (xy 118.992697 101.577713) (xy 118.923508 101.805799) (xy 118.900146 102.043) (xy 118.923508 102.280201) + (xy 118.992697 102.508287) (xy 119.105054 102.718492) (xy 119.256261 102.902739) (xy 119.440508 103.053946) (xy 119.650713 103.166303) + (xy 119.878799 103.235492) (xy 120.056563 103.253) (xy 120.825437 103.253) (xy 121.003201 103.235492) (xy 121.231287 103.166303) + (xy 121.441492 103.053946) (xy 121.625739 102.902739) (xy 121.776946 102.718492) (xy 121.815001 102.647297) (xy 121.815001 109.188703) + (xy 121.776946 109.117508) (xy 121.625739 108.933261) (xy 121.441492 108.782054) (xy 121.231287 108.669697) (xy 121.003201 108.600508) + (xy 120.825437 108.583) (xy 120.056563 108.583) (xy 119.878799 108.600508) (xy 119.650713 108.669697) (xy 119.440508 108.782054) + (xy 119.256261 108.933261) (xy 119.105054 109.117508) (xy 118.992697 109.327713) (xy 118.923508 109.555799) (xy 118.900146 109.793) + (xy 118.923508 110.030201) (xy 118.992697 110.258287) (xy 119.105054 110.468492) (xy 119.256261 110.652739) (xy 119.440508 110.803946) + (xy 119.650713 110.916303) (xy 119.878799 110.985492) (xy 120.056563 111.003) (xy 120.825437 111.003) (xy 121.003201 110.985492) + (xy 121.231287 110.916303) (xy 121.441492 110.803946) (xy 121.625739 110.652739) (xy 121.776946 110.468492) (xy 121.815001 110.397297) + (xy 121.815001 130.315) (xy 57.185 130.315) (xy 57.185 118.4205) (xy 60.459041 118.4205) (xy 60.514744 118.986059) + (xy 60.679711 119.529884) (xy 60.947604 120.031075) (xy 61.308126 120.470374) (xy 61.747425 120.830896) (xy 62.248616 121.098789) + (xy 62.792441 121.263756) (xy 63.216273 121.3055) (xy 63.499727 121.3055) (xy 63.923559 121.263756) (xy 64.467384 121.098789) + (xy 64.968575 120.830896) (xy 65.407874 120.470374) (xy 65.768396 120.031075) (xy 66.036289 119.529884) (xy 66.201256 118.986059) + (xy 66.256959 118.4205) (xy 66.201256 117.854941) (xy 66.036289 117.311116) (xy 65.768396 116.809925) (xy 65.407874 116.370626) + (xy 64.968575 116.010104) (xy 64.467384 115.742211) (xy 63.923559 115.577244) (xy 63.499727 115.5355) (xy 63.216273 115.5355) + (xy 62.792441 115.577244) (xy 62.248616 115.742211) (xy 61.747425 116.010104) (xy 61.308126 116.370626) (xy 60.947604 116.809925) + (xy 60.679711 117.311116) (xy 60.514744 117.854941) (xy 60.459041 118.4205) (xy 57.185 118.4205) (xy 57.185 79.486501) + (xy 59.768718 79.486501) (xy 59.773 79.52998) (xy 59.772999 90.07853) (xy 59.768718 90.121999) (xy 59.772999 90.165468) + (xy 59.772999 90.165475) (xy 59.781671 90.253523) (xy 59.785804 90.295489) (xy 59.79136 90.313805) (xy 59.83641 90.462311) + (xy 59.918588 90.616057) (xy 60.029182 90.750816) (xy 60.055546 90.772453) (xy 60.077183 90.798817) (xy 60.211941 90.909411) + (xy 60.365687 90.991589) (xy 60.53251 91.042195) (xy 60.662523 91.055) (xy 60.662531 91.055) (xy 60.706 91.059281) + (xy 60.749469 91.055) (xy 67.13471 91.055) (xy 67.197188 91.148505) (xy 67.263627 91.214944) (xy 67.24532 91.220498) + (xy 67.135006 91.279463) (xy 67.038315 91.358815) (xy 66.958963 91.455506) (xy 66.899998 91.56582) (xy 66.863688 91.685518) + (xy 66.851428 91.81) (xy 66.851428 93.61) (xy 66.863688 93.734482) (xy 66.899998 93.85418) (xy 66.958963 93.964494) + (xy 67.038315 94.061185) (xy 67.135006 94.140537) (xy 67.24532 94.199502) (xy 67.365018 94.235812) (xy 67.4895 94.248072) + (xy 69.2895 94.248072) (xy 69.413982 94.235812) (xy 69.53368 94.199502) (xy 69.643994 94.140537) (xy 69.740685 94.061185) + (xy 69.820037 93.964494) (xy 69.879002 93.85418) (xy 69.915312 93.734482) (xy 69.927572 93.61) (xy 69.927572 93.585683) + (xy 69.96299 93.582195) (xy 70.129813 93.531589) (xy 70.283559 93.449411) (xy 70.418317 93.338817) (xy 70.446034 93.305044) + (xy 71.680079 92.071) (xy 78.902793 92.071) (xy 78.859492 92.213745) (xy 78.842428 92.386999) (xy 78.842428 93.287001) + (xy 78.859492 93.460255) (xy 78.910028 93.626851) (xy 78.992095 93.780387) (xy 79.102538 93.914962) (xy 79.237113 94.025405) + (xy 79.390649 94.107472) (xy 79.557245 94.158008) (xy 79.730499 94.175072) (xy 80.380501 94.175072) (xy 80.553755 94.158008) + (xy 80.720351 94.107472) (xy 80.873887 94.025405) (xy 81.008462 93.914962) (xy 81.0805 93.827184) (xy 81.152538 93.914962) + (xy 81.287113 94.025405) (xy 81.440649 94.107472) (xy 81.607245 94.158008) (xy 81.780499 94.175072) (xy 82.430501 94.175072) + (xy 82.603755 94.158008) (xy 82.770351 94.107472) (xy 82.923887 94.025405) (xy 83.058462 93.914962) (xy 83.168905 93.780387) + (xy 83.200114 93.722) (xy 83.451047 93.722) (xy 83.580392 93.879608) (xy 83.798899 94.058932) (xy 83.931858 94.13) + (xy 83.798899 94.201068) (xy 83.580392 94.380392) (xy 83.401068 94.598899) (xy 83.267818 94.848192) (xy 83.185764 95.118691) + (xy 83.158057 95.4) (xy 83.185764 95.681309) (xy 83.267818 95.951808) (xy 83.401068 96.201101) (xy 83.580392 96.419608) + (xy 83.798899 96.598932) (xy 83.931858 96.67) (xy 83.798899 96.741068) (xy 83.580392 96.920392) (xy 83.401068 97.138899) + (xy 83.267818 97.388192) (xy 83.185764 97.658691) (xy 83.158057 97.94) (xy 83.185764 98.221309) (xy 83.267818 98.491808) + (xy 83.401068 98.741101) (xy 83.580392 98.959608) (xy 83.798899 99.138932) (xy 83.931858 99.21) (xy 83.798899 99.281068) + (xy 83.580392 99.460392) (xy 83.401068 99.678899) (xy 83.267818 99.928192) (xy 83.185764 100.198691) (xy 83.158057 100.48) + (xy 83.185764 100.761309) (xy 83.267818 101.031808) (xy 83.401068 101.281101) (xy 83.580392 101.499608) (xy 83.798899 101.678932) + (xy 83.931858 101.75) (xy 83.798899 101.821068) (xy 83.580392 102.000392) (xy 83.488798 102.112) (xy 83.009614 102.112) + (xy 82.978405 102.053613) (xy 82.867962 101.919038) (xy 82.733387 101.808595) (xy 82.579851 101.726528) (xy 82.413255 101.675992) + (xy 82.240001 101.658928) (xy 81.589999 101.658928) (xy 81.416745 101.675992) (xy 81.250149 101.726528) (xy 81.096613 101.808595) + (xy 80.962038 101.919038) (xy 80.89 102.006816) (xy 80.817962 101.919038) (xy 80.683387 101.808595) (xy 80.529851 101.726528) + (xy 80.363255 101.675992) (xy 80.190001 101.658928) (xy 79.778506 101.658928) (xy 79.759534 101.639956) (xy 79.731817 101.606183) + (xy 79.597059 101.495589) (xy 79.443313 101.413411) (xy 79.27649 101.362805) (xy 79.146477 101.35) (xy 79.146469 101.35) + (xy 79.103 101.345719) (xy 79.059531 101.35) (xy 69.927572 101.35) (xy 69.927572 101.335) (xy 69.915312 101.210518) + (xy 69.879002 101.09082) (xy 69.820037 100.980506) (xy 69.740685 100.883815) (xy 69.643994 100.804463) (xy 69.53368 100.745498) + (xy 69.515373 100.739944) (xy 69.581812 100.673505) (xy 69.749799 100.422095) (xy 69.865511 100.142743) (xy 69.9245 99.846184) + (xy 69.9245 99.543816) (xy 69.865511 99.247257) (xy 69.749799 98.967905) (xy 69.581812 98.716495) (xy 69.368005 98.502688) + (xy 69.116595 98.334701) (xy 68.837243 98.218989) (xy 68.540684 98.16) (xy 68.238316 98.16) (xy 67.941757 98.218989) + (xy 67.662405 98.334701) (xy 67.410995 98.502688) (xy 67.197188 98.716495) (xy 67.13471 98.81) (xy 60.749469 98.81) + (xy 60.706 98.805719) (xy 60.662531 98.81) (xy 60.662523 98.81) (xy 60.53251 98.822805) (xy 60.365687 98.873411) + (xy 60.211941 98.955589) (xy 60.077183 99.066183) (xy 60.055544 99.09255) (xy 60.029183 99.114184) (xy 60.00147 99.147952) + (xy 60.001467 99.147955) (xy 59.918589 99.248942) (xy 59.836411 99.402688) (xy 59.785804 99.569511) (xy 59.768718 99.743001) + (xy 59.773 99.78648) (xy 59.772999 110.84303) (xy 59.768718 110.886499) (xy 59.772999 110.929968) (xy 59.772999 110.929975) + (xy 59.778467 110.985492) (xy 59.785804 111.059989) (xy 59.789807 111.073185) (xy 59.83641 111.226811) (xy 59.918588 111.380557) + (xy 60.029182 111.515316) (xy 60.062955 111.543033) (xy 62.39897 113.879049) (xy 62.426683 113.912817) (xy 62.460451 113.94053) + (xy 62.460453 113.940532) (xy 62.526777 113.994963) (xy 62.561441 114.023411) (xy 62.715187 114.105589) (xy 62.88201 114.156195) + (xy 63.012023 114.169) (xy 63.012033 114.169) (xy 63.055499 114.173281) (xy 63.098965 114.169) (xy 65.514922 114.169) + (xy 67.70147 116.355549) (xy 67.729183 116.389317) (xy 67.762951 116.41703) (xy 67.762953 116.417032) (xy 67.814592 116.459411) + (xy 67.863941 116.499911) (xy 68.017687 116.582089) (xy 68.18451 116.632695) (xy 68.219928 116.636183) (xy 68.219928 116.7605) + (xy 68.232188 116.884982) (xy 68.268498 117.00468) (xy 68.327463 117.114994) (xy 68.406815 117.211685) (xy 68.503506 117.291037) + (xy 68.61382 117.350002) (xy 68.733518 117.386312) (xy 68.858 117.398572) (xy 71.858 117.398572) (xy 71.982482 117.386312) + (xy 72.10218 117.350002) (xy 72.212494 117.291037) (xy 72.309185 117.211685) (xy 72.388537 117.114994) (xy 72.447502 117.00468) + (xy 72.483812 116.884982) (xy 72.496072 116.7605) (xy 72.496072 116.636183) (xy 72.53149 116.632695) (xy 72.698313 116.582089) + (xy 72.852059 116.499911) (xy 72.986817 116.389317) (xy 73.014534 116.355544) (xy 73.485079 115.885) (xy 81.615 115.885) + (xy 81.615001 127.576521) (xy 81.610719 127.62) (xy 81.627805 127.79349) (xy 81.678412 127.960313) (xy 81.76059 128.114059) + (xy 81.843468 128.215046) (xy 81.843471 128.215049) (xy 81.871184 128.248817) (xy 81.904951 128.276529) (xy 82.64347 129.015049) + (xy 82.671183 129.048817) (xy 82.704951 129.07653) (xy 82.704953 129.076532) (xy 82.773974 129.133176) (xy 82.805941 129.159411) + (xy 82.959687 129.241589) (xy 83.12651 129.292195) (xy 83.256523 129.305) (xy 83.256531 129.305) (xy 83.3 129.309281) + (xy 83.343469 129.305) (xy 83.469922 129.305) (xy 83.580392 129.439608) (xy 83.798899 129.618932) (xy 84.048192 129.752182) + (xy 84.318691 129.834236) (xy 84.529508 129.855) (xy 85.470492 129.855) (xy 85.681309 129.834236) (xy 85.951808 129.752182) + (xy 86.201101 129.618932) (xy 86.419608 129.439608) (xy 86.530078 129.305) (xy 87.154531 129.305) (xy 87.198 129.309281) + (xy 87.241469 129.305) (xy 87.241477 129.305) (xy 87.37149 129.292195) (xy 87.538313 129.241589) (xy 87.692059 129.159411) + (xy 87.70222 129.151072) (xy 87.8675 129.151072) (xy 88.038316 129.134248) (xy 88.202567 129.084423) (xy 88.353942 129.003512) + (xy 88.486623 128.894623) (xy 88.504369 128.873) (xy 90.051426 128.873) (xy 90.062052 128.885948) (xy 90.234878 129.027783) + (xy 90.432054 129.133176) (xy 90.646002 129.198077) (xy 90.8685 129.219991) (xy 91.090998 129.198077) (xy 91.304946 129.133176) + (xy 91.502122 129.027783) (xy 91.631643 128.921488) (xy 92.076135 128.476996) (xy 92.119449 128.441449) (xy 92.261284 128.268623) + (xy 92.366676 128.071447) (xy 92.431577 127.857499) (xy 92.448 127.690752) (xy 92.453491 127.635) (xy 92.448 127.579249) + (xy 92.448 110.879578) (xy 97.88347 116.315049) (xy 97.911183 116.348817) (xy 97.944951 116.37653) (xy 97.944953 116.376532) + (xy 97.960488 116.389281) (xy 98.045941 116.459411) (xy 98.199687 116.541589) (xy 98.36651 116.592195) (xy 98.496523 116.605) + (xy 98.496531 116.605) (xy 98.54 116.609281) (xy 98.583469 116.605) (xy 98.709922 116.605) (xy 98.820392 116.739608) + (xy 99.038899 116.918932) (xy 99.171858 116.99) (xy 99.038899 117.061068) (xy 98.820392 117.240392) (xy 98.641068 117.458899) + (xy 98.507818 117.708192) (xy 98.425764 117.978691) (xy 98.398057 118.26) (xy 98.425764 118.541309) (xy 98.507818 118.811808) + (xy 98.641068 119.061101) (xy 98.820392 119.279608) (xy 99.038899 119.458932) (xy 99.171858 119.53) (xy 99.038899 119.601068) + (xy 98.820392 119.780392) (xy 98.641068 119.998899) (xy 98.507818 120.248192) (xy 98.425764 120.518691) (xy 98.398057 120.8) + (xy 98.425764 121.081309) (xy 98.507818 121.351808) (xy 98.641068 121.601101) (xy 98.820392 121.819608) (xy 99.038899 121.998932) + (xy 99.171858 122.07) (xy 99.038899 122.141068) (xy 98.820392 122.320392) (xy 98.641068 122.538899) (xy 98.507818 122.788192) + (xy 98.425764 123.058691) (xy 98.398057 123.34) (xy 98.425764 123.621309) (xy 98.507818 123.891808) (xy 98.641068 124.141101) + (xy 98.820392 124.359608) (xy 99.038899 124.538932) (xy 99.171858 124.61) (xy 99.038899 124.681068) (xy 98.820392 124.860392) + (xy 98.641068 125.078899) (xy 98.507818 125.328192) (xy 98.425764 125.598691) (xy 98.398057 125.88) (xy 98.425764 126.161309) + (xy 98.507818 126.431808) (xy 98.641068 126.681101) (xy 98.820392 126.899608) (xy 99.038899 127.078932) (xy 99.171858 127.15) + (xy 99.038899 127.221068) (xy 98.820392 127.400392) (xy 98.641068 127.618899) (xy 98.507818 127.868192) (xy 98.425764 128.138691) + (xy 98.398057 128.42) (xy 98.425764 128.701309) (xy 98.507818 128.971808) (xy 98.641068 129.221101) (xy 98.820392 129.439608) + (xy 99.038899 129.618932) (xy 99.288192 129.752182) (xy 99.558691 129.834236) (xy 99.769508 129.855) (xy 100.710492 129.855) + (xy 100.921309 129.834236) (xy 101.191808 129.752182) (xy 101.441101 129.618932) (xy 101.659608 129.439608) (xy 101.838932 129.221101) + (xy 101.972182 128.971808) (xy 102.054236 128.701309) (xy 102.081943 128.42) (xy 102.054236 128.138691) (xy 101.972182 127.868192) + (xy 101.838932 127.618899) (xy 101.659608 127.400392) (xy 101.441101 127.221068) (xy 101.308142 127.15) (xy 101.441101 127.078932) + (xy 101.659608 126.899608) (xy 101.838932 126.681101) (xy 101.972182 126.431808) (xy 102.054236 126.161309) (xy 102.081943 125.88) + (xy 102.054236 125.598691) (xy 101.972182 125.328192) (xy 101.838932 125.078899) (xy 101.659608 124.860392) (xy 101.441101 124.681068) + (xy 101.308142 124.61) (xy 101.441101 124.538932) (xy 101.659608 124.359608) (xy 101.838932 124.141101) (xy 101.972182 123.891808) + (xy 102.054236 123.621309) (xy 102.056063 123.60275) (xy 115.99 123.60275) (xy 115.99 124.229542) (xy 116.014403 124.352223) + (xy 116.06227 124.467785) (xy 116.131763 124.571789) (xy 116.220211 124.660237) (xy 116.324215 124.72973) (xy 116.439777 124.777597) + (xy 116.562458 124.802) (xy 117.18925 124.802) (xy 117.348 124.64325) (xy 117.348 123.444) (xy 117.602 123.444) + (xy 117.602 124.64325) (xy 117.76075 124.802) (xy 118.387542 124.802) (xy 118.510223 124.777597) (xy 118.625785 124.72973) + (xy 118.729789 124.660237) (xy 118.818237 124.571789) (xy 118.88773 124.467785) (xy 118.935597 124.352223) (xy 118.96 124.229542) + (xy 118.96 123.60275) (xy 118.80125 123.444) (xy 117.602 123.444) (xy 117.348 123.444) (xy 116.14875 123.444) + (xy 115.99 123.60275) (xy 102.056063 123.60275) (xy 102.081943 123.34) (xy 102.054236 123.058691) (xy 101.972182 122.788192) + (xy 101.838932 122.538899) (xy 101.659608 122.320392) (xy 101.441101 122.141068) (xy 101.308142 122.07) (xy 101.441101 121.998932) + (xy 101.659608 121.819608) (xy 101.838932 121.601101) (xy 101.972182 121.351808) (xy 102.054236 121.081309) (xy 102.081943 120.8) + (xy 102.054236 120.518691) (xy 101.972182 120.248192) (xy 101.838932 119.998899) (xy 101.659608 119.780392) (xy 101.441101 119.601068) + (xy 101.308142 119.53) (xy 101.441101 119.458932) (xy 101.659608 119.279608) (xy 101.838932 119.061101) (xy 101.972182 118.811808) + (xy 102.054236 118.541309) (xy 102.081943 118.26) (xy 102.054236 117.978691) (xy 101.972182 117.708192) (xy 101.838932 117.458899) + (xy 101.659608 117.240392) (xy 101.441101 117.061068) (xy 101.308142 116.99) (xy 101.441101 116.918932) (xy 101.659608 116.739608) + (xy 101.770078 116.605) (xy 112.051422 116.605) (xy 116.004388 120.557967) (xy 115.982815 120.777) (xy 116.011487 121.068111) + (xy 116.096401 121.348034) (xy 116.234294 121.606014) (xy 116.419866 121.832134) (xy 116.447553 121.854856) (xy 116.439777 121.856403) + (xy 116.324215 121.90427) (xy 116.220211 121.973763) (xy 116.131763 122.062211) (xy 116.06227 122.166215) (xy 116.014403 122.281777) + (xy 115.99 122.404458) (xy 115.99 123.03125) (xy 116.14875 123.19) (xy 117.348 123.19) (xy 117.348 123.17) + (xy 117.602 123.17) (xy 117.602 123.19) (xy 118.80125 123.19) (xy 118.96 123.03125) (xy 118.96 122.404458) + (xy 118.935597 122.281777) (xy 118.88773 122.166215) (xy 118.818237 122.062211) (xy 118.729789 121.973763) (xy 118.625785 121.90427) + (xy 118.510223 121.856403) (xy 118.502447 121.854856) (xy 118.530134 121.832134) (xy 118.715706 121.606014) (xy 118.853599 121.348034) + (xy 118.938513 121.068111) (xy 118.967185 120.777) (xy 118.938513 120.485889) (xy 118.853599 120.205966) (xy 118.715706 119.947986) + (xy 118.530134 119.721866) (xy 118.304014 119.536294) (xy 118.249209 119.507) (xy 118.304014 119.477706) (xy 118.530134 119.292134) + (xy 118.715706 119.066014) (xy 118.853599 118.808034) (xy 118.938513 118.528111) (xy 118.967185 118.237) (xy 118.938513 117.945889) + (xy 118.853599 117.665966) (xy 118.715706 117.407986) (xy 118.530134 117.181866) (xy 118.304014 116.996294) (xy 118.046034 116.858401) + (xy 117.766111 116.773487) (xy 117.54795 116.752) (xy 117.40205 116.752) (xy 117.255967 116.766388) (xy 113.074534 112.584956) + (xy 113.046817 112.551183) (xy 112.912059 112.440589) (xy 112.758313 112.358411) (xy 112.59149 112.307805) (xy 112.461477 112.295) + (xy 112.461469 112.295) (xy 112.418 112.290719) (xy 112.374531 112.295) (xy 101.770078 112.295) (xy 101.659608 112.160392) + (xy 101.441101 111.981068) (xy 101.308142 111.91) (xy 101.441101 111.838932) (xy 101.659608 111.659608) (xy 101.770078 111.525) + (xy 102.170761 111.525) (xy 102.310933 111.599923) (xy 102.475184 111.649748) (xy 102.646 111.666572) (xy 103.221 111.666572) + (xy 103.391816 111.649748) (xy 103.556067 111.599923) (xy 103.707442 111.519012) (xy 103.8085 111.436075) (xy 103.909558 111.519012) + (xy 104.060933 111.599923) (xy 104.225184 111.649748) (xy 104.396 111.666572) (xy 104.971 111.666572) (xy 105.141816 111.649748) + (xy 105.306067 111.599923) (xy 105.457442 111.519012) (xy 105.555546 111.4385) (xy 108.205031 111.4385) (xy 108.2485 111.442781) + (xy 108.291969 111.4385) (xy 108.291977 111.4385) (xy 108.42199 111.425695) (xy 108.588813 111.375089) (xy 108.742559 111.292911) + (xy 108.782573 111.260072) (xy 109.285 111.260072) (xy 109.409482 111.247812) (xy 109.52918 111.211502) (xy 109.639494 111.152537) + (xy 109.736185 111.073185) (xy 109.815537 110.976494) (xy 109.855 110.902665) (xy 109.894463 110.976494) (xy 109.973815 111.073185) + (xy 110.070506 111.152537) (xy 110.18082 111.211502) (xy 110.300518 111.247812) (xy 110.425 111.260072) (xy 111.985 111.260072) + (xy 112.109482 111.247812) (xy 112.22918 111.211502) (xy 112.339494 111.152537) (xy 112.436185 111.073185) (xy 112.449468 111.057) + (xy 112.614178 111.057) (xy 112.6515 111.060676) (xy 112.688822 111.057) (xy 112.688833 111.057) (xy 112.800486 111.046003) + (xy 112.943747 111.002546) (xy 113.075776 110.931974) (xy 113.123855 110.892517) (xy 113.274589 110.9225) (xy 113.547411 110.9225) + (xy 113.814989 110.869275) (xy 114.067043 110.764871) (xy 114.293886 110.613299) (xy 114.486799 110.420386) (xy 114.638371 110.193543) + (xy 114.742775 109.941489) (xy 114.796 109.673911) (xy 114.796 109.401089) (xy 114.742775 109.133511) (xy 114.638371 108.881457) + (xy 114.486799 108.654614) (xy 114.293886 108.461701) (xy 114.067043 108.310129) (xy 113.814989 108.205725) (xy 113.737492 108.19031) + (xy 115.249803 106.678) (xy 115.306 106.678) (xy 115.306 106.695002) (xy 115.377116 106.695002) (xy 115.330403 106.807777) + (xy 115.328647 106.816603) (xy 115.306 106.83925) (xy 115.306 106.855542) (xy 115.313451 106.893) (xy 115.306 106.930458) + (xy 115.306 106.94675) (xy 115.328647 106.969397) (xy 115.330403 106.978223) (xy 115.37827 107.093785) (xy 115.447763 107.197789) + (xy 115.536211 107.286237) (xy 115.602456 107.3305) (xy 115.46475 107.3305) (xy 115.306 107.48925) (xy 115.306 107.505542) + (xy 115.330403 107.628223) (xy 115.37827 107.743785) (xy 115.447763 107.847789) (xy 115.536211 107.936237) (xy 115.640215 108.00573) + (xy 115.755777 108.053597) (xy 115.878458 108.078) (xy 116.30525 108.078) (xy 116.464 107.91925) (xy 116.464 107.3305) + (xy 116.40275 107.3305) (xy 116.464 107.26925) (xy 116.464 107.071) (xy 116.718 107.071) (xy 116.718 107.26925) + (xy 116.77925 107.3305) (xy 116.718 107.3305) (xy 116.718 107.91925) (xy 116.76102 107.96227) (xy 116.730159 108.020007) + (xy 116.670976 108.215105) (xy 116.664289 108.283) (xy 116.299191 108.283) (xy 116.099393 108.302678) (xy 115.843032 108.380445) + (xy 115.606769 108.50673) (xy 115.399682 108.676682) (xy 115.22973 108.883769) (xy 115.103445 109.120032) (xy 115.025678 109.376393) + (xy 114.99942 109.643) (xy 115.025678 109.909607) (xy 115.103445 110.165968) (xy 115.22973 110.402231) (xy 115.399682 110.609318) + (xy 115.606769 110.77927) (xy 115.843032 110.905555) (xy 116.099393 110.983322) (xy 116.299191 111.003) (xy 116.982809 111.003) + (xy 117.182607 110.983322) (xy 117.438968 110.905555) (xy 117.675231 110.77927) (xy 117.882318 110.609318) (xy 118.05227 110.402231) + (xy 118.178555 110.165968) (xy 118.256322 109.909607) (xy 118.28258 109.643) (xy 118.256322 109.376393) (xy 118.233615 109.301539) + (xy 118.268797 109.282734) (xy 118.426396 109.153396) (xy 118.555734 108.995797) (xy 118.651841 108.815993) (xy 118.711024 108.620895) + (xy 118.731007 108.418) (xy 118.711024 108.215105) (xy 118.651841 108.020007) (xy 118.555734 107.840203) (xy 118.426396 107.682604) + (xy 118.268797 107.553266) (xy 118.088993 107.457159) (xy 117.893895 107.397976) (xy 117.772799 107.386049) (xy 117.71725 107.3305) + (xy 117.579544 107.3305) (xy 117.645789 107.286237) (xy 117.734237 107.197789) (xy 117.80373 107.093785) (xy 117.851597 106.978223) + (xy 117.853353 106.969397) (xy 117.876 106.94675) (xy 117.876 106.930458) (xy 117.868549 106.893) (xy 117.876 106.855542) + (xy 117.876 106.83925) (xy 117.853353 106.816603) (xy 117.851597 106.807777) (xy 117.80373 106.692215) (xy 117.734237 106.588211) + (xy 117.713833 106.567807) (xy 117.771537 106.497494) (xy 117.830502 106.38718) (xy 117.850067 106.322683) (xy 117.876 106.29675) + (xy 117.876 106.280458) (xy 117.869 106.245267) (xy 117.879072 106.143) (xy 117.879072 105.693) (xy 117.869223 105.593) + (xy 117.879072 105.493) (xy 117.879072 105.043) (xy 117.869223 104.943) (xy 117.879072 104.843) (xy 117.879072 104.439484) + (xy 117.893895 104.438024) (xy 118.088993 104.378841) (xy 118.268797 104.282734) (xy 118.426396 104.153396) (xy 118.555734 103.995797) + (xy 118.651841 103.815993) (xy 118.711024 103.620895) (xy 118.731007 103.418) (xy 118.711024 103.215105) (xy 118.651841 103.020007) + (xy 118.555734 102.840203) (xy 118.426396 102.682604) (xy 118.268797 102.553266) (xy 118.233615 102.534461) (xy 118.256322 102.459607) + (xy 118.28258 102.193) (xy 118.256322 101.926393) (xy 118.178555 101.670032) (xy 118.05227 101.433769) (xy 117.882318 101.226682) + (xy 117.675231 101.05673) (xy 117.438968 100.930445) (xy 117.182607 100.852678) (xy 116.982809 100.833) (xy 116.299191 100.833) + (xy 116.099393 100.852678) (xy 115.843032 100.930445) (xy 115.606769 101.05673) (xy 115.399682 101.226682) (xy 115.22973 101.433769) + (xy 115.103445 101.670032) (xy 115.025678 101.926393) (xy 114.99942 102.193) (xy 115.025678 102.459607) (xy 115.103445 102.715968) + (xy 115.197367 102.891685) (xy 115.045313 102.810411) (xy 114.87849 102.759805) (xy 114.748477 102.747) (xy 114.222079 102.747) + (xy 111.604 100.128922) (xy 111.604 94.556572) (xy 111.719 94.556572) (xy 111.843482 94.544312) (xy 111.96318 94.508002) + (xy 112.073494 94.449037) (xy 112.170185 94.369685) (xy 112.249537 94.272994) (xy 112.308502 94.16268) (xy 112.344812 94.042982) + (xy 112.357072 93.9185) (xy 112.357072 92.4185) (xy 112.344812 92.294018) (xy 112.308502 92.17432) (xy 112.249537 92.064006) + (xy 112.212191 92.0185) (xy 112.249537 91.972994) (xy 112.308502 91.86268) (xy 112.344812 91.742982) (xy 112.357072 91.6185) + (xy 112.357072 91.377413) (xy 113.090192 91.377413) (xy 113.185956 91.641814) (xy 113.475571 91.782704) (xy 113.787108 91.864384) + (xy 114.108595 91.883718) (xy 114.427675 91.839961) (xy 114.732088 91.734795) (xy 114.906044 91.641814) (xy 115.001808 91.377413) + (xy 119.590192 91.377413) (xy 119.685956 91.641814) (xy 119.975571 91.782704) (xy 120.287108 91.864384) (xy 120.608595 91.883718) + (xy 120.927675 91.839961) (xy 121.232088 91.734795) (xy 121.406044 91.641814) (xy 121.501808 91.377413) (xy 120.546 90.421605) + (xy 119.590192 91.377413) (xy 115.001808 91.377413) (xy 114.046 90.421605) (xy 113.090192 91.377413) (xy 112.357072 91.377413) + (xy 112.357072 90.304595) (xy 112.404282 90.304595) (xy 112.448039 90.623675) (xy 112.553205 90.928088) (xy 112.646186 91.102044) + (xy 112.910587 91.197808) (xy 113.866395 90.242) (xy 114.225605 90.242) (xy 115.181413 91.197808) (xy 115.445814 91.102044) + (xy 115.586704 90.812429) (xy 115.668384 90.500892) (xy 115.680189 90.304595) (xy 118.904282 90.304595) (xy 118.948039 90.623675) + (xy 119.053205 90.928088) (xy 119.146186 91.102044) (xy 119.410587 91.197808) (xy 120.366395 90.242) (xy 119.410587 89.286192) + (xy 119.146186 89.381956) (xy 119.005296 89.671571) (xy 118.923616 89.983108) (xy 118.904282 90.304595) (xy 115.680189 90.304595) + (xy 115.687718 90.179405) (xy 115.643961 89.860325) (xy 115.538795 89.555912) (xy 115.445814 89.381956) (xy 115.181413 89.286192) + (xy 114.225605 90.242) (xy 113.866395 90.242) (xy 112.910587 89.286192) (xy 112.646186 89.381956) (xy 112.505296 89.671571) + (xy 112.423616 89.983108) (xy 112.404282 90.304595) (xy 112.357072 90.304595) (xy 112.357072 90.1185) (xy 112.344812 89.994018) + (xy 112.308502 89.87432) (xy 112.249537 89.764006) (xy 112.21398 89.72068) (xy 112.28173 89.619285) (xy 112.329597 89.503723) + (xy 112.354 89.381042) (xy 112.354 89.106587) (xy 113.090192 89.106587) (xy 114.046 90.062395) (xy 115.001808 89.106587) + (xy 119.590192 89.106587) (xy 120.546 90.062395) (xy 121.501808 89.106587) (xy 121.406044 88.842186) (xy 121.116429 88.701296) + (xy 120.804892 88.619616) (xy 120.483405 88.600282) (xy 120.164325 88.644039) (xy 119.859912 88.749205) (xy 119.685956 88.842186) + (xy 119.590192 89.106587) (xy 115.001808 89.106587) (xy 114.906044 88.842186) (xy 114.616429 88.701296) (xy 114.304892 88.619616) + (xy 113.983405 88.600282) (xy 113.664325 88.644039) (xy 113.359912 88.749205) (xy 113.185956 88.842186) (xy 113.090192 89.106587) + (xy 112.354 89.106587) (xy 112.354 88.85425) (xy 112.19525 88.6955) (xy 110.846 88.6955) (xy 110.846 88.7155) + (xy 110.592 88.7155) (xy 110.592 88.6955) (xy 109.24275 88.6955) (xy 109.084 88.85425) (xy 109.084 89.381042) + (xy 109.108403 89.503723) (xy 109.15627 89.619285) (xy 109.22402 89.72068) (xy 109.188463 89.764006) (xy 109.129498 89.87432) + (xy 109.096379 89.9835) (xy 106.057072 89.9835) (xy 106.057072 88.9685) (xy 106.044812 88.844018) (xy 106.008502 88.72432) + (xy 105.949537 88.614006) (xy 105.870185 88.517315) (xy 105.773494 88.437963) (xy 105.66318 88.378998) (xy 105.554 88.345879) + (xy 105.554 87.844131) (xy 105.642173 87.755958) (xy 109.084 87.755958) (xy 109.084 88.28275) (xy 109.24275 88.4415) + (xy 110.592 88.4415) (xy 110.592 87.34225) (xy 110.846 87.34225) (xy 110.846 88.4415) (xy 112.19525 88.4415) + (xy 112.354 88.28275) (xy 112.354 87.867913) (xy 113.090192 87.867913) (xy 113.185956 88.132314) (xy 113.475571 88.273204) + (xy 113.787108 88.354884) (xy 114.108595 88.374218) (xy 114.427675 88.330461) (xy 114.732088 88.225295) (xy 114.906044 88.132314) + (xy 115.001808 87.867913) (xy 119.590192 87.867913) (xy 119.685956 88.132314) (xy 119.975571 88.273204) (xy 120.287108 88.354884) + (xy 120.608595 88.374218) (xy 120.927675 88.330461) (xy 121.232088 88.225295) (xy 121.406044 88.132314) (xy 121.501808 87.867913) + (xy 120.546 86.912105) (xy 119.590192 87.867913) (xy 115.001808 87.867913) (xy 114.046 86.912105) (xy 113.090192 87.867913) + (xy 112.354 87.867913) (xy 112.354 87.755958) (xy 112.329597 87.633277) (xy 112.28173 87.517715) (xy 112.212237 87.413711) + (xy 112.123789 87.325263) (xy 112.019785 87.25577) (xy 111.904223 87.207903) (xy 111.781542 87.1835) (xy 111.00475 87.1835) + (xy 110.846 87.34225) (xy 110.592 87.34225) (xy 110.43325 87.1835) (xy 109.656458 87.1835) (xy 109.533777 87.207903) + (xy 109.418215 87.25577) (xy 109.314211 87.325263) (xy 109.225763 87.413711) (xy 109.15627 87.517715) (xy 109.108403 87.633277) + (xy 109.084 87.755958) (xy 105.642173 87.755958) (xy 106.603036 86.795095) (xy 112.404282 86.795095) (xy 112.448039 87.114175) + (xy 112.553205 87.418588) (xy 112.646186 87.592544) (xy 112.910587 87.688308) (xy 113.866395 86.7325) (xy 114.225605 86.7325) + (xy 115.181413 87.688308) (xy 115.445814 87.592544) (xy 115.586704 87.302929) (xy 115.668384 86.991392) (xy 115.680189 86.795095) + (xy 118.904282 86.795095) (xy 118.948039 87.114175) (xy 119.053205 87.418588) (xy 119.146186 87.592544) (xy 119.410587 87.688308) + (xy 120.366395 86.7325) (xy 119.410587 85.776692) (xy 119.146186 85.872456) (xy 119.005296 86.162071) (xy 118.923616 86.473608) + (xy 118.904282 86.795095) (xy 115.680189 86.795095) (xy 115.687718 86.669905) (xy 115.643961 86.350825) (xy 115.538795 86.046412) + (xy 115.445814 85.872456) (xy 115.181413 85.776692) (xy 114.225605 86.7325) (xy 113.866395 86.7325) (xy 112.910587 85.776692) + (xy 112.646186 85.872456) (xy 112.505296 86.162071) (xy 112.423616 86.473608) (xy 112.404282 86.795095) (xy 106.603036 86.795095) + (xy 106.93156 86.466572) (xy 107.177001 86.466572) (xy 107.350255 86.449508) (xy 107.516851 86.398972) (xy 107.670387 86.316905) + (xy 107.804962 86.206462) (xy 107.915405 86.071887) (xy 107.997472 85.918351) (xy 108.048008 85.751755) (xy 108.065072 85.578501) + (xy 108.065072 85.43925) (xy 108.092 85.43925) (xy 108.092 85.891042) (xy 108.116403 86.013723) (xy 108.16427 86.129285) + (xy 108.233763 86.233289) (xy 108.322211 86.321737) (xy 108.426215 86.39123) (xy 108.541777 86.439097) (xy 108.664458 86.4635) + (xy 109.22875 86.4635) (xy 109.3875 86.30475) (xy 109.3875 85.2805) (xy 109.6415 85.2805) (xy 109.6415 86.30475) + (xy 109.80025 86.4635) (xy 110.364542 86.4635) (xy 110.487223 86.439097) (xy 110.602785 86.39123) (xy 110.706789 86.321737) + (xy 110.795237 86.233289) (xy 110.86473 86.129285) (xy 110.912597 86.013723) (xy 110.937 85.891042) (xy 110.937 85.597087) + (xy 113.090192 85.597087) (xy 114.046 86.552895) (xy 115.001808 85.597087) (xy 119.590192 85.597087) (xy 120.546 86.552895) + (xy 121.501808 85.597087) (xy 121.406044 85.332686) (xy 121.116429 85.191796) (xy 120.804892 85.110116) (xy 120.483405 85.090782) + (xy 120.164325 85.134539) (xy 119.859912 85.239705) (xy 119.685956 85.332686) (xy 119.590192 85.597087) (xy 115.001808 85.597087) + (xy 114.906044 85.332686) (xy 114.616429 85.191796) (xy 114.304892 85.110116) (xy 113.983405 85.090782) (xy 113.664325 85.134539) + (xy 113.359912 85.239705) (xy 113.185956 85.332686) (xy 113.090192 85.597087) (xy 110.937 85.597087) (xy 110.937 85.43925) + (xy 110.77825 85.2805) (xy 109.6415 85.2805) (xy 109.3875 85.2805) (xy 108.25075 85.2805) (xy 108.092 85.43925) + (xy 108.065072 85.43925) (xy 108.065072 84.728499) (xy 108.048008 84.555245) (xy 108.005757 84.415958) (xy 108.092 84.415958) + (xy 108.092 84.86775) (xy 108.25075 85.0265) (xy 109.3875 85.0265) (xy 109.3875 84.00225) (xy 109.6415 84.00225) + (xy 109.6415 85.0265) (xy 110.77825 85.0265) (xy 110.937 84.86775) (xy 110.937 84.415958) (xy 110.912597 84.293277) + (xy 110.86473 84.177715) (xy 110.795237 84.073711) (xy 110.706789 83.985263) (xy 110.602785 83.91577) (xy 110.487223 83.867903) + (xy 110.364542 83.8435) (xy 109.80025 83.8435) (xy 109.6415 84.00225) (xy 109.3875 84.00225) (xy 109.22875 83.8435) + (xy 108.664458 83.8435) (xy 108.541777 83.867903) (xy 108.426215 83.91577) (xy 108.322211 83.985263) (xy 108.233763 84.073711) + (xy 108.16427 84.177715) (xy 108.116403 84.293277) (xy 108.092 84.415958) (xy 108.005757 84.415958) (xy 107.997472 84.388649) + (xy 107.915405 84.235113) (xy 107.804962 84.100538) (xy 107.7745 84.075538) (xy 107.7745 80.141713) (xy 117.812531 80.141713) + (xy 117.856 80.145994) (xy 117.899469 80.141713) (xy 117.899477 80.141713) (xy 118.02949 80.128908) (xy 118.196313 80.078302) + (xy 118.350059 79.996124) (xy 118.484817 79.88553) (xy 118.512534 79.851757) (xy 119.712549 78.651743) (xy 119.746317 78.62403) + (xy 119.798464 78.56049) (xy 119.85691 78.489273) (xy 119.856911 78.489272) (xy 119.939089 78.335526) (xy 119.989695 78.168703) + (xy 120.0025 78.03869) (xy 120.0025 78.03868) (xy 120.006781 77.995214) (xy 120.002898 77.955793) (xy 120.159752 77.850987) + (xy 120.387487 77.623252) (xy 120.566418 77.355463) (xy 120.689668 77.057912) (xy 120.7525 76.742033) (xy 120.7525 76.419967) + (xy 120.689668 76.104088) (xy 120.566418 75.806537) (xy 120.387487 75.538748) (xy 120.159752 75.311013) (xy 120.0025 75.205941) + (xy 120.0025 71.456059) (xy 120.159752 71.350987) (xy 120.387487 71.123252) (xy 120.566418 70.855463) (xy 120.689668 70.557912) + (xy 120.7525 70.242033) (xy 120.7525 69.919967) (xy 120.689668 69.604088) (xy 120.566418 69.306537) (xy 120.387487 69.038748) + (xy 120.159752 68.811013) (xy 119.891963 68.632082) (xy 119.594412 68.508832) (xy 119.278533 68.446) (xy 118.956467 68.446) + (xy 118.640588 68.508832) (xy 118.343037 68.632082) (xy 118.075248 68.811013) (xy 117.847513 69.038748) (xy 117.668582 69.306537) + (xy 117.545332 69.604088) (xy 117.4825 69.919967) (xy 117.4825 70.242033) (xy 117.545332 70.557912) (xy 117.668582 70.855463) + (xy 117.847513 71.123252) (xy 118.075248 71.350987) (xy 118.2325 71.45606) (xy 118.232501 75.20594) (xy 118.075248 75.311013) + (xy 117.847513 75.538748) (xy 117.668582 75.806537) (xy 117.545332 76.104088) (xy 117.4825 76.419967) (xy 117.4825 76.742033) + (xy 117.545332 77.057912) (xy 117.668582 77.355463) (xy 117.847513 77.623252) (xy 118.042698 77.818437) (xy 117.489422 78.371713) + (xy 111.221752 78.371713) (xy 111.436386 78.228299) (xy 111.627185 78.0375) (xy 113.861342 78.0375) (xy 114.140588 78.153168) + (xy 114.456467 78.216) (xy 114.778533 78.216) (xy 115.094412 78.153168) (xy 115.391963 78.029918) (xy 115.659752 77.850987) + (xy 115.887487 77.623252) (xy 116.066418 77.355463) (xy 116.189668 77.057912) (xy 116.2525 76.742033) (xy 116.2525 76.419967) + (xy 116.189668 76.104088) (xy 116.066418 75.806537) (xy 115.887487 75.538748) (xy 115.659752 75.311013) (xy 115.5025 75.205941) + (xy 115.5025 71.456059) (xy 115.659752 71.350987) (xy 115.887487 71.123252) (xy 116.066418 70.855463) (xy 116.189668 70.557912) + (xy 116.2525 70.242033) (xy 116.2525 69.919967) (xy 116.189668 69.604088) (xy 116.066418 69.306537) (xy 115.887487 69.038748) + (xy 115.659752 68.811013) (xy 115.391963 68.632082) (xy 115.094412 68.508832) (xy 114.778533 68.446) (xy 114.456467 68.446) + (xy 114.140588 68.508832) (xy 113.843037 68.632082) (xy 113.575248 68.811013) (xy 113.347513 69.038748) (xy 113.168582 69.306537) + (xy 113.045332 69.604088) (xy 112.9825 69.919967) (xy 112.9825 70.242033) (xy 113.045332 70.557912) (xy 113.168582 70.855463) + (xy 113.347513 71.123252) (xy 113.575248 71.350987) (xy 113.732501 71.45606) (xy 113.7325 75.20594) (xy 113.575248 75.311013) + (xy 113.347513 75.538748) (xy 113.168582 75.806537) (xy 113.045332 76.104088) (xy 113.012827 76.2675) (xy 111.627185 76.2675) + (xy 111.436386 76.076701) (xy 111.209543 75.925129) (xy 110.957489 75.820725) (xy 110.689911 75.7675) (xy 110.417089 75.7675) + (xy 110.149511 75.820725) (xy 109.897457 75.925129) (xy 109.670614 76.076701) (xy 109.477701 76.269614) (xy 109.326129 76.496457) + (xy 109.221725 76.748511) (xy 109.1685 77.016089) (xy 109.1685 77.288911) (xy 109.221725 77.556489) (xy 109.326129 77.808543) + (xy 109.477701 78.035386) (xy 109.670614 78.228299) (xy 109.885248 78.371713) (xy 107.7745 78.371713) (xy 107.7745 71.579741) + (xy 107.77999 71.523999) (xy 107.7745 71.468257) (xy 107.7745 71.468248) (xy 107.758077 71.301501) (xy 107.693176 71.087553) + (xy 107.587784 70.890377) (xy 107.445949 70.717551) (xy 107.40264 70.682009) (xy 105.957496 69.236865) (xy 105.921949 69.193551) + (xy 105.749123 69.051716) (xy 105.551947 68.946324) (xy 105.337999 68.881423) (xy 105.171252 68.865) (xy 105.171251 68.865) + (xy 105.1155 68.859509) (xy 105.059749 68.865) (xy 101.519002 68.865) (xy 101.441101 68.801068) (xy 101.191808 68.667818) + (xy 100.921309 68.585764) (xy 100.710492 68.565) (xy 99.769508 68.565) (xy 99.558691 68.585764) (xy 99.288192 68.667818) + (xy 99.038899 68.801068) (xy 98.820392 68.980392) (xy 98.709922 69.115) (xy 98.078465 69.115) (xy 98.034999 69.110719) + (xy 97.991533 69.115) (xy 97.991523 69.115) (xy 97.86151 69.127805) (xy 97.694687 69.178411) (xy 97.673015 69.189995) + (xy 97.608313 69.155411) (xy 97.44149 69.104805) (xy 97.311477 69.092) (xy 97.311469 69.092) (xy 97.268 69.087719) + (xy 97.224531 69.092) (xy 96.895185 69.092) (xy 96.704386 68.901201) (xy 96.477543 68.749629) (xy 96.225489 68.645225) + (xy 95.957911 68.592) (xy 95.685089 68.592) (xy 95.417511 68.645225) (xy 95.165457 68.749629) (xy 94.938614 68.901201) + (xy 94.745701 69.094114) (xy 94.594129 69.320957) (xy 94.489725 69.573011) (xy 94.4365 69.840589) (xy 94.4365 70.113411) + (xy 94.489725 70.380989) (xy 94.594129 70.633043) (xy 94.745701 70.859886) (xy 94.938614 71.052799) (xy 95.165457 71.204371) + (xy 95.417511 71.308775) (xy 95.685089 71.362) (xy 95.957911 71.362) (xy 96.225489 71.308775) (xy 96.477543 71.204371) + (xy 96.662619 71.080707) (xy 96.697488 71.145942) (xy 96.717116 71.169858) (xy 96.694763 71.192211) (xy 96.62527 71.296215) + (xy 96.577403 71.411777) (xy 96.553 71.534458) (xy 96.553 71.83625) (xy 96.71175 71.995) (xy 97.536 71.995) + (xy 97.536 71.975) (xy 97.79 71.975) (xy 97.79 71.995) (xy 97.81 71.995) (xy 97.81 72.249) + (xy 97.79 72.249) (xy 97.79 73.12325) (xy 97.94875 73.282) (xy 98.200542 73.282) (xy 98.323223 73.257597) + (xy 98.438785 73.20973) (xy 98.53856 73.143063) (xy 98.576285 73.231646) (xy 98.7355 73.464895) (xy 98.937161 73.662601) + (xy 99.166741 73.812735) (xy 99.038899 73.881068) (xy 98.820392 74.060392) (xy 98.641068 74.278899) (xy 98.507818 74.528192) + (xy 98.425764 74.798691) (xy 98.398057 75.08) (xy 98.425764 75.361309) (xy 98.507818 75.631808) (xy 98.641068 75.881101) + (xy 98.820392 76.099608) (xy 99.038899 76.278932) (xy 99.171858 76.35) (xy 99.038899 76.421068) (xy 98.820392 76.600392) + (xy 98.641068 76.818899) (xy 98.507818 77.068192) (xy 98.452017 77.252146) (xy 98.450223 77.251403) (xy 98.327542 77.227) + (xy 98.07575 77.227) (xy 97.917 77.38575) (xy 97.917 78.26) (xy 97.937 78.26) (xy 97.937 78.514) + (xy 97.917 78.514) (xy 97.917 78.534) (xy 97.663 78.534) (xy 97.663 78.514) (xy 96.83875 78.514) + (xy 96.68 78.67275) (xy 96.68 78.974542) (xy 96.704403 79.097223) (xy 96.75227 79.212785) (xy 96.778473 79.252) + (xy 96.394782 79.252) (xy 96.469512 79.160942) (xy 96.550423 79.009567) (xy 96.600248 78.845316) (xy 96.617072 78.6745) + (xy 96.617072 78.0995) (xy 96.600248 77.928684) (xy 96.561048 77.799458) (xy 96.68 77.799458) (xy 96.68 78.10125) + (xy 96.83875 78.26) (xy 97.663 78.26) (xy 97.663 77.38575) (xy 97.50425 77.227) (xy 97.252458 77.227) + (xy 97.129777 77.251403) (xy 97.014215 77.29927) (xy 96.910211 77.368763) (xy 96.821763 77.457211) (xy 96.75227 77.561215) + (xy 96.704403 77.676777) (xy 96.68 77.799458) (xy 96.561048 77.799458) (xy 96.550423 77.764433) (xy 96.469512 77.613058) + (xy 96.360623 77.480377) (xy 96.227942 77.371488) (xy 96.076567 77.290577) (xy 95.912316 77.240752) (xy 95.7415 77.223928) + (xy 95.2665 77.223928) (xy 95.095684 77.240752) (xy 94.931433 77.290577) (xy 94.780058 77.371488) (xy 94.647377 77.480377) + (xy 94.629631 77.502) (xy 94.607 77.502) (xy 94.607 75.303252) (xy 94.612491 75.2475) (xy 94.590577 75.025001) + (xy 94.525676 74.811053) (xy 94.420284 74.613877) (xy 94.313989 74.484356) (xy 94.313987 74.484354) (xy 94.278449 74.441051) + (xy 94.235146 74.405513) (xy 92.237382 72.40775) (xy 96.553 72.40775) (xy 96.553 72.709542) (xy 96.577403 72.832223) + (xy 96.62527 72.947785) (xy 96.694763 73.051789) (xy 96.783211 73.140237) (xy 96.887215 73.20973) (xy 97.002777 73.257597) + (xy 97.125458 73.282) (xy 97.37725 73.282) (xy 97.536 73.12325) (xy 97.536 72.249) (xy 96.71175 72.249) + (xy 96.553 72.40775) (xy 92.237382 72.40775) (xy 90.896 71.066369) (xy 90.896 70.799286) (xy 90.988371 70.661043) + (xy 91.092775 70.408989) (xy 91.146 70.141411) (xy 91.146 69.868589) (xy 91.092775 69.601011) (xy 90.988371 69.348957) + (xy 90.836799 69.122114) (xy 90.643886 68.929201) (xy 90.417043 68.777629) (xy 90.164989 68.673225) (xy 89.897411 68.62) + (xy 89.624589 68.62) (xy 89.357011 68.673225) (xy 89.104957 68.777629) (xy 88.878114 68.929201) (xy 88.687315 69.12) + (xy 88.250369 69.12) (xy 88.232623 69.098377) (xy 88.099942 68.989488) (xy 87.948567 68.908577) (xy 87.784316 68.858752) + (xy 87.6135 68.841928) (xy 87.1385 68.841928) (xy 86.967684 68.858752) (xy 86.803433 68.908577) (xy 86.772957 68.924867) + (xy 86.730537 68.845506) (xy 86.651185 68.748815) (xy 86.554494 68.669463) (xy 86.44418 68.610498) (xy 86.324482 68.574188) + (xy 86.2 68.561928) (xy 83.8 68.561928) (xy 83.675518 68.574188) (xy 83.55582 68.610498) (xy 83.445506 68.669463) + (xy 83.348815 68.748815) (xy 83.269463 68.845506) (xy 83.210498 68.95582) (xy 83.174188 69.075518) (xy 83.161928 69.2) + (xy 83.161928 70.8) (xy 83.174188 70.924482) (xy 83.210498 71.04418) (xy 83.269463 71.154494) (xy 83.348815 71.251185) + (xy 83.445506 71.330537) (xy 83.55582 71.389502) (xy 83.675518 71.425812) (xy 83.693482 71.427581) (xy 83.580392 71.520392) + (xy 83.401068 71.738899) (xy 83.267818 71.988192) (xy 83.185764 72.258691) (xy 83.158057 72.54) (xy 83.185764 72.821309) + (xy 83.267818 73.091808) (xy 83.401068 73.341101) (xy 83.580392 73.559608) (xy 83.798899 73.738932) (xy 83.931858 73.81) + (xy 83.798899 73.881068) (xy 83.580392 74.060392) (xy 83.401068 74.278899) (xy 83.267818 74.528192) (xy 83.185764 74.798691) + (xy 83.158057 75.08) (xy 83.185764 75.361309) (xy 83.267818 75.631808) (xy 83.401068 75.881101) (xy 83.580392 76.099608) + (xy 83.798899 76.278932) (xy 83.931858 76.35) (xy 83.798899 76.421068) (xy 83.580392 76.600392) (xy 83.401068 76.818899) + (xy 83.267818 77.068192) (xy 83.185764 77.338691) (xy 83.158057 77.62) (xy 83.185764 77.901309) (xy 83.267818 78.171808) + (xy 83.401068 78.421101) (xy 83.580392 78.639608) (xy 83.798899 78.818932) (xy 83.931858 78.89) (xy 83.798899 78.961068) + (xy 83.580392 79.140392) (xy 83.401068 79.358899) (xy 83.267818 79.608192) (xy 83.185764 79.878691) (xy 83.158057 80.16) + (xy 83.185764 80.441309) (xy 83.267818 80.711808) (xy 83.401068 80.961101) (xy 83.580392 81.179608) (xy 83.798899 81.358932) + (xy 83.931858 81.43) (xy 83.798899 81.501068) (xy 83.580392 81.680392) (xy 83.401068 81.898899) (xy 83.267818 82.148192) + (xy 83.185764 82.418691) (xy 83.158057 82.7) (xy 83.185764 82.981309) (xy 83.267818 83.251808) (xy 83.401068 83.501101) + (xy 83.580392 83.719608) (xy 83.798899 83.898932) (xy 83.931858 83.97) (xy 83.798899 84.041068) (xy 83.580392 84.220392) + (xy 83.401068 84.438899) (xy 83.285719 84.654703) (xy 83.181 84.759421) (xy 83.181 83.672969) (xy 83.185281 83.6295) + (xy 83.181 83.586031) (xy 83.181 83.586023) (xy 83.168195 83.45601) (xy 83.117589 83.289187) (xy 83.035411 83.135441) + (xy 82.952532 83.034453) (xy 82.95253 83.034451) (xy 82.924817 83.000683) (xy 82.891051 82.972972) (xy 75.967534 76.049456) + (xy 75.939817 76.015683) (xy 75.805059 75.905089) (xy 75.651313 75.822911) (xy 75.48449 75.772305) (xy 75.354477 75.7595) + (xy 75.354469 75.7595) (xy 75.311 75.755219) (xy 75.267531 75.7595) (xy 71.987059 75.7595) (xy 71.881987 75.602248) + (xy 71.654252 75.374513) (xy 71.497 75.269441) (xy 71.497 71.519559) (xy 71.654252 71.414487) (xy 71.881987 71.186752) + (xy 72.060918 70.918963) (xy 72.184168 70.621412) (xy 72.247 70.305533) (xy 72.247 69.983467) (xy 72.184168 69.667588) + (xy 72.060918 69.370037) (xy 71.881987 69.102248) (xy 71.654252 68.874513) (xy 71.386463 68.695582) (xy 71.088912 68.572332) + (xy 70.773033 68.5095) (xy 70.450967 68.5095) (xy 70.135088 68.572332) (xy 69.837537 68.695582) (xy 69.569748 68.874513) + (xy 69.342013 69.102248) (xy 69.163082 69.370037) (xy 69.039832 69.667588) (xy 68.977 69.983467) (xy 68.977 70.305533) + (xy 69.039832 70.621412) (xy 69.163082 70.918963) (xy 69.342013 71.186752) (xy 69.569748 71.414487) (xy 69.727 71.51956) + (xy 69.727001 75.26944) (xy 69.569748 75.374513) (xy 69.342013 75.602248) (xy 69.163082 75.870037) (xy 69.039832 76.167588) + (xy 68.977 76.483467) (xy 68.977 76.805533) (xy 69.039832 77.121412) (xy 69.163082 77.418963) (xy 69.342013 77.686752) + (xy 69.569748 77.914487) (xy 69.837537 78.093418) (xy 70.135088 78.216668) (xy 70.450967 78.2795) (xy 70.773033 78.2795) + (xy 71.088912 78.216668) (xy 71.386463 78.093418) (xy 71.654252 77.914487) (xy 71.881987 77.686752) (xy 71.987059 77.5295) + (xy 74.944422 77.5295) (xy 81.411 83.996079) (xy 81.411001 86.023953) (xy 81.330488 86.122058) (xy 81.249577 86.273433) + (xy 81.199752 86.437684) (xy 81.182928 86.6085) (xy 81.182928 87.1835) (xy 81.199752 87.354316) (xy 81.249577 87.518567) + (xy 81.330488 87.669942) (xy 81.413425 87.771) (xy 81.330488 87.872058) (xy 81.249577 88.023433) (xy 81.199752 88.187684) + (xy 81.182928 88.3585) (xy 81.182928 88.507493) (xy 80.405422 89.285) (xy 69.64429 89.285) (xy 69.581812 89.191495) + (xy 69.368005 88.977688) (xy 69.116595 88.809701) (xy 68.837243 88.693989) (xy 68.540684 88.635) (xy 68.238316 88.635) + (xy 67.941757 88.693989) (xy 67.662405 88.809701) (xy 67.410995 88.977688) (xy 67.197188 89.191495) (xy 67.13471 89.285) + (xy 61.542999 89.285) (xy 61.542999 79.853079) (xy 61.644079 79.752) (xy 63.901226 79.752) (xy 63.821277 79.767903) + (xy 63.705715 79.81577) (xy 63.601711 79.885263) (xy 63.513263 79.973711) (xy 63.44377 80.077715) (xy 63.395903 80.193277) + (xy 63.3715 80.315958) (xy 63.3715 80.66775) (xy 63.53025 80.8265) (xy 64.5795 80.8265) (xy 64.5795 80.8065) + (xy 64.8335 80.8065) (xy 64.8335 80.8265) (xy 65.88275 80.8265) (xy 66.0415 80.66775) (xy 66.0415 80.315958) + (xy 66.017097 80.193277) (xy 65.96923 80.077715) (xy 65.899737 79.973711) (xy 65.811289 79.885263) (xy 65.707285 79.81577) + (xy 65.591723 79.767903) (xy 65.511774 79.752) (xy 66.435422 79.752) (xy 66.87644 80.193018) (xy 66.8545 80.303316) + (xy 66.8545 80.605684) (xy 66.913489 80.902243) (xy 67.029201 81.181595) (xy 67.197188 81.433005) (xy 67.263627 81.499444) + (xy 67.24532 81.504998) (xy 67.135006 81.563963) (xy 67.038315 81.643315) (xy 66.958963 81.740006) (xy 66.899998 81.85032) + (xy 66.863688 81.970018) (xy 66.851428 82.0945) (xy 66.851428 82.1185) (xy 65.840237 82.1185) (xy 65.784462 82.050538) + (xy 65.777157 82.044543) (xy 65.811289 82.021737) (xy 65.899737 81.933289) (xy 65.96923 81.829285) (xy 66.017097 81.713723) + (xy 66.0415 81.591042) (xy 66.0415 81.23925) (xy 65.88275 81.0805) (xy 64.8335 81.0805) (xy 64.8335 81.1005) + (xy 64.5795 81.1005) (xy 64.5795 81.0805) (xy 63.53025 81.0805) (xy 63.3715 81.23925) (xy 63.3715 81.591042) + (xy 63.395903 81.713723) (xy 63.44377 81.829285) (xy 63.513263 81.933289) (xy 63.601711 82.021737) (xy 63.635843 82.044543) + (xy 63.628538 82.050538) (xy 63.518095 82.185113) (xy 63.436028 82.338649) (xy 63.385492 82.505245) (xy 63.368428 82.678499) + (xy 63.368428 83.328501) (xy 63.385492 83.501755) (xy 63.436028 83.668351) (xy 63.518095 83.821887) (xy 63.628538 83.956462) + (xy 63.763113 84.066905) (xy 63.916649 84.148972) (xy 64.083245 84.199508) (xy 64.256499 84.216572) (xy 65.156501 84.216572) + (xy 65.329755 84.199508) (xy 65.496351 84.148972) (xy 65.649887 84.066905) (xy 65.784462 83.956462) (xy 65.840237 83.8885) + (xy 66.851428 83.8885) (xy 66.851428 83.8945) (xy 66.863688 84.018982) (xy 66.899998 84.13868) (xy 66.958963 84.248994) + (xy 67.038315 84.345685) (xy 67.135006 84.425037) (xy 67.24532 84.484002) (xy 67.365018 84.520312) (xy 67.4895 84.532572) + (xy 69.2895 84.532572) (xy 69.413982 84.520312) (xy 69.53368 84.484002) (xy 69.643994 84.425037) (xy 69.740685 84.345685) + (xy 69.820037 84.248994) (xy 69.879002 84.13868) (xy 69.915312 84.018982) (xy 69.927572 83.8945) (xy 69.927572 82.0945) + (xy 69.915312 81.970018) (xy 69.879002 81.85032) (xy 69.820037 81.740006) (xy 69.740685 81.643315) (xy 69.643994 81.563963) + (xy 69.53368 81.504998) (xy 69.515373 81.499444) (xy 69.581812 81.433005) (xy 69.749799 81.181595) (xy 69.865511 80.902243) + (xy 69.9245 80.605684) (xy 69.9245 80.303316) (xy 69.865511 80.006757) (xy 69.749799 79.727405) (xy 69.581812 79.475995) + (xy 69.368005 79.262188) (xy 69.116595 79.094201) (xy 68.837243 78.978489) (xy 68.540684 78.9195) (xy 68.238316 78.9195) + (xy 68.128018 78.94144) (xy 67.458534 78.271956) (xy 67.430817 78.238183) (xy 67.296059 78.127589) (xy 67.142313 78.045411) + (xy 66.988542 77.998764) (xy 67.067808 77.779913) (xy 66.112 76.824105) (xy 65.156192 77.779913) (xy 65.229386 77.982) + (xy 61.320969 77.982) (xy 61.2775 77.977719) (xy 61.234031 77.982) (xy 61.234023 77.982) (xy 61.10401 77.994805) + (xy 60.937187 78.045411) (xy 60.783441 78.127589) (xy 60.682453 78.210468) (xy 60.682451 78.21047) (xy 60.648683 78.238183) + (xy 60.62097 78.271951) (xy 60.06295 78.829972) (xy 60.029183 78.857684) (xy 60.00147 78.891452) (xy 60.001467 78.891455) + (xy 59.918589 78.992442) (xy 59.836411 79.146188) (xy 59.785804 79.313011) (xy 59.768718 79.486501) (xy 57.185 79.486501) + (xy 57.185 76.707095) (xy 64.470282 76.707095) (xy 64.514039 77.026175) (xy 64.619205 77.330588) (xy 64.712186 77.504544) + (xy 64.976587 77.600308) (xy 65.932395 76.6445) (xy 66.291605 76.6445) (xy 67.247413 77.600308) (xy 67.511814 77.504544) + (xy 67.652704 77.214929) (xy 67.734384 76.903392) (xy 67.753718 76.581905) (xy 67.709961 76.262825) (xy 67.604795 75.958412) + (xy 67.511814 75.784456) (xy 67.247413 75.688692) (xy 66.291605 76.6445) (xy 65.932395 76.6445) (xy 64.976587 75.688692) + (xy 64.712186 75.784456) (xy 64.571296 76.074071) (xy 64.489616 76.385608) (xy 64.470282 76.707095) (xy 57.185 76.707095) + (xy 57.185 75.509087) (xy 65.156192 75.509087) (xy 66.112 76.464895) (xy 67.067808 75.509087) (xy 66.972044 75.244686) + (xy 66.682429 75.103796) (xy 66.370892 75.022116) (xy 66.049405 75.002782) (xy 65.730325 75.046539) (xy 65.425912 75.151705) + (xy 65.251956 75.244686) (xy 65.156192 75.509087) (xy 57.185 75.509087) (xy 57.185 71.279913) (xy 65.156192 71.279913) + (xy 65.251956 71.544314) (xy 65.541571 71.685204) (xy 65.853108 71.766884) (xy 66.174595 71.786218) (xy 66.493675 71.742461) + (xy 66.798088 71.637295) (xy 66.972044 71.544314) (xy 67.067808 71.279913) (xy 66.112 70.324105) (xy 65.156192 71.279913) + (xy 57.185 71.279913) (xy 57.185 70.207095) (xy 64.470282 70.207095) (xy 64.514039 70.526175) (xy 64.619205 70.830588) + (xy 64.712186 71.004544) (xy 64.976587 71.100308) (xy 65.932395 70.1445) (xy 66.291605 70.1445) (xy 67.247413 71.100308) + (xy 67.511814 71.004544) (xy 67.652704 70.714929) (xy 67.734384 70.403392) (xy 67.753718 70.081905) (xy 67.709961 69.762825) + (xy 67.604795 69.458412) (xy 67.511814 69.284456) (xy 67.247413 69.188692) (xy 66.291605 70.1445) (xy 65.932395 70.1445) + (xy 64.976587 69.188692) (xy 64.712186 69.284456) (xy 64.571296 69.574071) (xy 64.489616 69.885608) (xy 64.470282 70.207095) + (xy 57.185 70.207095) (xy 57.185 69.009087) (xy 65.156192 69.009087) (xy 66.112 69.964895) (xy 67.067808 69.009087) + (xy 66.972044 68.744686) (xy 66.682429 68.603796) (xy 66.370892 68.522116) (xy 66.049405 68.502782) (xy 65.730325 68.546539) + (xy 65.425912 68.651705) (xy 65.251956 68.744686) (xy 65.156192 69.009087) (xy 57.185 69.009087) (xy 57.185 67.685) + (xy 121.815 67.685) + ) + ) + (filled_polygon + (pts + (xy 86.755477 91.23208) (xy 86.794425 91.304947) (xy 86.82709 91.366059) (xy 86.909968 91.467046) (xy 86.909971 91.467049) + (xy 86.937684 91.500817) (xy 86.971451 91.528529) (xy 88.43047 92.987549) (xy 88.458183 93.021317) (xy 88.491951 93.04903) + (xy 88.491953 93.049032) (xy 88.493514 93.050313) (xy 88.592941 93.131911) (xy 88.746687 93.214089) (xy 88.91351 93.264695) + (xy 89.043523 93.2775) (xy 89.043531 93.2775) (xy 89.087 93.281781) (xy 89.130469 93.2775) (xy 91.067 93.2775) + (xy 91.067001 98.462867) (xy 90.54986 98.980009) (xy 90.506552 99.015551) (xy 90.364716 99.188377) (xy 90.259324 99.385553) + (xy 90.194423 99.599501) (xy 90.178979 99.756313) (xy 90.172509 99.822) (xy 90.178 99.877751) (xy 90.178 100.020249) + (xy 90.178001 127.103) (xy 88.641527 127.103) (xy 88.66773 127.063785) (xy 88.715597 126.948223) (xy 88.74 126.825542) + (xy 88.74 126.52375) (xy 88.58125 126.365) (xy 87.757 126.365) (xy 87.757 126.385) (xy 87.503 126.385) + (xy 87.503 126.365) (xy 87.483 126.365) (xy 87.483 126.111) (xy 87.503 126.111) (xy 87.503 125.23675) + (xy 87.757 125.23675) (xy 87.757 126.111) (xy 88.58125 126.111) (xy 88.74 125.95225) (xy 88.74 125.650458) + (xy 88.715597 125.527777) (xy 88.66773 125.412215) (xy 88.598237 125.308211) (xy 88.509789 125.219763) (xy 88.405785 125.15027) + (xy 88.290223 125.102403) (xy 88.167542 125.078) (xy 87.91575 125.078) (xy 87.757 125.23675) (xy 87.503 125.23675) + (xy 87.34425 125.078) (xy 87.092458 125.078) (xy 86.969777 125.102403) (xy 86.854215 125.15027) (xy 86.750211 125.219763) + (xy 86.69893 125.271044) (xy 86.663715 125.188354) (xy 86.5045 124.955105) (xy 86.302839 124.757399) (xy 86.073259 124.607265) + (xy 86.201101 124.538932) (xy 86.419608 124.359608) (xy 86.598932 124.141101) (xy 86.732182 123.891808) (xy 86.814236 123.621309) + (xy 86.841943 123.34) (xy 86.814236 123.058691) (xy 86.732182 122.788192) (xy 86.598932 122.538899) (xy 86.419608 122.320392) + (xy 86.201101 122.141068) (xy 86.068142 122.07) (xy 86.201101 121.998932) (xy 86.419608 121.819608) (xy 86.598932 121.601101) + (xy 86.732182 121.351808) (xy 86.814236 121.081309) (xy 86.839529 120.82451) (xy 86.84627 120.840785) (xy 86.915763 120.944789) + (xy 87.004211 121.033237) (xy 87.108215 121.10273) (xy 87.223777 121.150597) (xy 87.346458 121.175) (xy 87.59825 121.175) + (xy 87.757 121.01625) (xy 87.757 120.142) (xy 88.011 120.142) (xy 88.011 121.01625) (xy 88.16975 121.175) + (xy 88.421542 121.175) (xy 88.544223 121.150597) (xy 88.659785 121.10273) (xy 88.763789 121.033237) (xy 88.852237 120.944789) + (xy 88.92173 120.840785) (xy 88.969597 120.725223) (xy 88.994 120.602542) (xy 88.994 120.30075) (xy 88.83525 120.142) + (xy 88.011 120.142) (xy 87.757 120.142) (xy 86.93275 120.142) (xy 86.774 120.30075) (xy 86.774 120.386049) + (xy 86.732182 120.248192) (xy 86.598932 119.998899) (xy 86.419608 119.780392) (xy 86.201101 119.601068) (xy 86.068142 119.53) + (xy 86.201101 119.458932) (xy 86.419608 119.279608) (xy 86.530078 119.145) (xy 86.875813 119.145) (xy 86.84627 119.189215) + (xy 86.798403 119.304777) (xy 86.774 119.427458) (xy 86.774 119.72925) (xy 86.93275 119.888) (xy 87.757 119.888) + (xy 87.757 119.868) (xy 88.011 119.868) (xy 88.011 119.888) (xy 88.83525 119.888) (xy 88.994 119.72925) + (xy 88.994 119.427458) (xy 88.969597 119.304777) (xy 88.92173 119.189215) (xy 88.852237 119.085211) (xy 88.829884 119.062858) + (xy 88.849512 119.038942) (xy 88.930423 118.887567) (xy 88.980248 118.723316) (xy 88.997072 118.5525) (xy 88.997072 117.9775) + (xy 88.980248 117.806684) (xy 88.930423 117.642433) (xy 88.849512 117.491058) (xy 88.740623 117.358377) (xy 88.607942 117.249488) + (xy 88.456567 117.168577) (xy 88.292316 117.118752) (xy 88.1215 117.101928) (xy 87.6465 117.101928) (xy 87.475684 117.118752) + (xy 87.311433 117.168577) (xy 87.160058 117.249488) (xy 87.027377 117.358377) (xy 87.013735 117.375) (xy 86.530078 117.375) + (xy 86.419608 117.240392) (xy 86.201101 117.061068) (xy 86.068142 116.99) (xy 86.201101 116.918932) (xy 86.419608 116.739608) + (xy 86.598932 116.521101) (xy 86.732182 116.271808) (xy 86.814236 116.001309) (xy 86.841943 115.72) (xy 86.814236 115.438691) + (xy 86.732182 115.168192) (xy 86.598932 114.918899) (xy 86.419608 114.700392) (xy 86.201101 114.521068) (xy 86.068142 114.45) + (xy 86.201101 114.378932) (xy 86.419608 114.199608) (xy 86.598932 113.981101) (xy 86.732182 113.731808) (xy 86.814236 113.461309) + (xy 86.841943 113.18) (xy 86.814236 112.898691) (xy 86.732182 112.628192) (xy 86.598932 112.378899) (xy 86.419608 112.160392) + (xy 86.201101 111.981068) (xy 86.068142 111.91) (xy 86.201101 111.838932) (xy 86.419608 111.659608) (xy 86.598932 111.441101) + (xy 86.732182 111.191808) (xy 86.814236 110.921309) (xy 86.841943 110.64) (xy 86.814236 110.358691) (xy 86.732182 110.088192) + (xy 86.598932 109.838899) (xy 86.419608 109.620392) (xy 86.201101 109.441068) (xy 86.068142 109.37) (xy 86.201101 109.298932) + (xy 86.419608 109.119608) (xy 86.598932 108.901101) (xy 86.732182 108.651808) (xy 86.814236 108.381309) (xy 86.841943 108.1) + (xy 86.814236 107.818691) (xy 86.732182 107.548192) (xy 86.598932 107.298899) (xy 86.419608 107.080392) (xy 86.201101 106.901068) + (xy 86.068142 106.83) (xy 86.201101 106.758932) (xy 86.419608 106.579608) (xy 86.598932 106.361101) (xy 86.732182 106.111808) + (xy 86.814236 105.841309) (xy 86.841943 105.56) (xy 86.814236 105.278691) (xy 86.732182 105.008192) (xy 86.598932 104.758899) + (xy 86.419608 104.540392) (xy 86.201101 104.361068) (xy 86.068142 104.29) (xy 86.201101 104.218932) (xy 86.419608 104.039608) + (xy 86.598932 103.821101) (xy 86.732182 103.571808) (xy 86.814236 103.301309) (xy 86.841943 103.02) (xy 86.814236 102.738691) + (xy 86.732182 102.468192) (xy 86.598932 102.218899) (xy 86.419608 102.000392) (xy 86.201101 101.821068) (xy 86.068142 101.75) + (xy 86.201101 101.678932) (xy 86.419608 101.499608) (xy 86.598932 101.281101) (xy 86.732182 101.031808) (xy 86.814236 100.761309) + (xy 86.841943 100.48) (xy 86.814236 100.198691) (xy 86.732182 99.928192) (xy 86.598932 99.678899) (xy 86.419608 99.460392) + (xy 86.201101 99.281068) (xy 86.068142 99.21) (xy 86.201101 99.138932) (xy 86.419608 98.959608) (xy 86.598932 98.741101) + (xy 86.732182 98.491808) (xy 86.814236 98.221309) (xy 86.841943 97.94) (xy 86.814236 97.658691) (xy 86.732182 97.388192) + (xy 86.598932 97.138899) (xy 86.419608 96.920392) (xy 86.201101 96.741068) (xy 86.068142 96.67) (xy 86.201101 96.598932) + (xy 86.419608 96.419608) (xy 86.598932 96.201101) (xy 86.732182 95.951808) (xy 86.814236 95.681309) (xy 86.841943 95.4) + (xy 86.814236 95.118691) (xy 86.732182 94.848192) (xy 86.598932 94.598899) (xy 86.419608 94.380392) (xy 86.201101 94.201068) + (xy 86.068142 94.13) (xy 86.201101 94.058932) (xy 86.419608 93.879608) (xy 86.598932 93.661101) (xy 86.732182 93.411808) + (xy 86.814236 93.141309) (xy 86.841943 92.86) (xy 86.814236 92.578691) (xy 86.732182 92.308192) (xy 86.598932 92.058899) + (xy 86.419608 91.840392) (xy 86.201101 91.661068) (xy 86.068142 91.59) (xy 86.201101 91.518932) (xy 86.419608 91.339608) + (xy 86.530078 91.205) (xy 86.72248 91.205) + ) + ) + (filled_polygon + (pts + (xy 85.127 125.753) (xy 85.147 125.753) (xy 85.147 126.007) (xy 85.127 126.007) (xy 85.127 126.027) + (xy 84.873 126.027) (xy 84.873 126.007) (xy 84.853 126.007) (xy 84.853 125.753) (xy 84.873 125.753) + (xy 84.873 125.733) (xy 85.127 125.733) + ) + ) + (filled_polygon + (pts + (xy 67.197188 100.673505) (xy 67.263627 100.739944) (xy 67.24532 100.745498) (xy 67.135006 100.804463) (xy 67.038315 100.883815) + (xy 66.958963 100.980506) (xy 66.899998 101.09082) (xy 66.863688 101.210518) (xy 66.851428 101.335) (xy 66.851428 103.135) + (xy 66.863688 103.259482) (xy 66.899998 103.37918) (xy 66.958963 103.489494) (xy 67.038315 103.586185) (xy 67.135006 103.665537) + (xy 67.24532 103.724502) (xy 67.365018 103.760812) (xy 67.4895 103.773072) (xy 69.2895 103.773072) (xy 69.413982 103.760812) + (xy 69.53368 103.724502) (xy 69.643994 103.665537) (xy 69.740685 103.586185) (xy 69.820037 103.489494) (xy 69.879002 103.37918) + (xy 69.915312 103.259482) (xy 69.927572 103.135) (xy 69.927572 103.12) (xy 78.651928 103.12) (xy 78.651928 103.447001) + (xy 78.668992 103.620255) (xy 78.719528 103.786851) (xy 78.801595 103.940387) (xy 78.912038 104.074962) (xy 79.046613 104.185405) + (xy 79.200149 104.267472) (xy 79.366745 104.318008) (xy 79.539999 104.335072) (xy 80.190001 104.335072) (xy 80.363255 104.318008) + (xy 80.529851 104.267472) (xy 80.683387 104.185405) (xy 80.817962 104.074962) (xy 80.89 103.987184) (xy 80.962038 104.074962) + (xy 81.096613 104.185405) (xy 81.250149 104.267472) (xy 81.416745 104.318008) (xy 81.589999 104.335072) (xy 82.240001 104.335072) + (xy 82.413255 104.318008) (xy 82.579851 104.267472) (xy 82.733387 104.185405) (xy 82.867962 104.074962) (xy 82.978405 103.940387) + (xy 83.009614 103.882) (xy 83.451047 103.882) (xy 83.580392 104.039608) (xy 83.798899 104.218932) (xy 83.931858 104.29) + (xy 83.798899 104.361068) (xy 83.580392 104.540392) (xy 83.401068 104.758899) (xy 83.267818 105.008192) (xy 83.185764 105.278691) + (xy 83.158057 105.56) (xy 83.185764 105.841309) (xy 83.267818 106.111808) (xy 83.401068 106.361101) (xy 83.580392 106.579608) + (xy 83.798899 106.758932) (xy 83.931858 106.83) (xy 83.798899 106.901068) (xy 83.580392 107.080392) (xy 83.401068 107.298899) + (xy 83.267818 107.548192) (xy 83.185764 107.818691) (xy 83.158057 108.1) (xy 83.185764 108.381309) (xy 83.267818 108.651808) + (xy 83.401068 108.901101) (xy 83.580392 109.119608) (xy 83.798899 109.298932) (xy 83.931858 109.37) (xy 83.798899 109.441068) + (xy 83.580392 109.620392) (xy 83.401068 109.838899) (xy 83.267818 110.088192) (xy 83.185764 110.358691) (xy 83.158057 110.64) + (xy 83.185764 110.921309) (xy 83.267818 111.191808) (xy 83.401068 111.441101) (xy 83.580392 111.659608) (xy 83.798899 111.838932) + (xy 83.931858 111.91) (xy 83.798899 111.981068) (xy 83.580392 112.160392) (xy 83.436685 112.3355) (xy 71.733059 112.3355) + (xy 71.627987 112.178248) (xy 71.400252 111.950513) (xy 71.304285 111.88639) (xy 70.358 110.940105) (xy 69.411715 111.88639) + (xy 69.315748 111.950513) (xy 69.088013 112.178248) (xy 68.909082 112.446037) (xy 68.785832 112.743588) (xy 68.723 113.059467) + (xy 68.723 113.381533) (xy 68.785832 113.697412) (xy 68.909082 113.994963) (xy 68.994251 114.122428) (xy 68.858 114.122428) + (xy 68.733518 114.134688) (xy 68.61382 114.170998) (xy 68.503506 114.229963) (xy 68.406815 114.309315) (xy 68.327463 114.406006) + (xy 68.302251 114.453173) (xy 66.538034 112.688956) (xy 66.510317 112.655183) (xy 66.375559 112.544589) (xy 66.221813 112.462411) + (xy 66.05499 112.411805) (xy 65.924977 112.399) (xy 65.924969 112.399) (xy 65.8815 112.394719) (xy 65.838031 112.399) + (xy 63.422079 112.399) (xy 61.542999 110.519921) (xy 61.542999 110.263129) (xy 61.747425 110.430896) (xy 62.248616 110.698789) + (xy 62.792441 110.863756) (xy 63.216273 110.9055) (xy 63.499727 110.9055) (xy 63.923559 110.863756) (xy 64.0576 110.823095) + (xy 68.716282 110.823095) (xy 68.760039 111.142175) (xy 68.865205 111.446588) (xy 68.958186 111.620544) (xy 69.222587 111.716308) + (xy 70.178395 110.7605) (xy 70.537605 110.7605) (xy 71.493413 111.716308) (xy 71.757814 111.620544) (xy 71.898704 111.330929) + (xy 71.980384 111.019392) (xy 71.999718 110.697905) (xy 71.955961 110.378825) (xy 71.850795 110.074412) (xy 71.757814 109.900456) + (xy 71.493413 109.804692) (xy 70.537605 110.7605) (xy 70.178395 110.7605) (xy 69.222587 109.804692) (xy 68.958186 109.900456) + (xy 68.817296 110.190071) (xy 68.735616 110.501608) (xy 68.716282 110.823095) (xy 64.0576 110.823095) (xy 64.467384 110.698789) + (xy 64.968575 110.430896) (xy 65.407874 110.070374) (xy 65.768396 109.631075) (xy 65.771596 109.625087) (xy 69.402192 109.625087) + (xy 70.358 110.580895) (xy 71.313808 109.625087) (xy 71.218044 109.360686) (xy 70.928429 109.219796) (xy 70.616892 109.138116) + (xy 70.295405 109.118782) (xy 69.976325 109.162539) (xy 69.671912 109.267705) (xy 69.497956 109.360686) (xy 69.402192 109.625087) + (xy 65.771596 109.625087) (xy 66.036289 109.129884) (xy 66.201256 108.586059) (xy 66.256959 108.0205) (xy 66.201256 107.454941) + (xy 66.036289 106.911116) (xy 65.768396 106.409925) (xy 65.407874 105.970626) (xy 64.968575 105.610104) (xy 64.467384 105.342211) + (xy 63.923559 105.177244) (xy 63.499727 105.1355) (xy 63.216273 105.1355) (xy 62.792441 105.177244) (xy 62.248616 105.342211) + (xy 61.747425 105.610104) (xy 61.542999 105.777871) (xy 61.542999 100.58) (xy 67.13471 100.58) + ) + ) + (filled_polygon + (pts + (xy 97.663 102.362) (xy 97.683 102.362) (xy 97.683 102.616) (xy 97.663 102.616) (xy 97.663 103.49025) + (xy 97.82175 103.649) (xy 98.073542 103.649) (xy 98.196223 103.624597) (xy 98.311785 103.57673) (xy 98.415789 103.507237) + (xy 98.467298 103.455728) (xy 98.576285 103.711646) (xy 98.7355 103.944895) (xy 98.937161 104.142601) (xy 99.166741 104.292735) + (xy 99.038899 104.361068) (xy 98.820392 104.540392) (xy 98.641068 104.758899) (xy 98.507818 105.008192) (xy 98.425764 105.278691) + (xy 98.398057 105.56) (xy 98.425764 105.841309) (xy 98.507818 106.111808) (xy 98.641068 106.361101) (xy 98.820392 106.579608) + (xy 99.038899 106.758932) (xy 99.171858 106.83) (xy 99.038899 106.901068) (xy 98.820392 107.080392) (xy 98.641068 107.298899) + (xy 98.507818 107.548192) (xy 98.425764 107.818691) (xy 98.398057 108.1) (xy 98.425764 108.381309) (xy 98.507818 108.651808) + (xy 98.641068 108.901101) (xy 98.820392 109.119608) (xy 99.038899 109.298932) (xy 99.171858 109.37) (xy 99.038899 109.441068) + (xy 98.820392 109.620392) (xy 98.641068 109.838899) (xy 98.507818 110.088192) (xy 98.425764 110.358691) (xy 98.398057 110.64) + (xy 98.425764 110.921309) (xy 98.507818 111.191808) (xy 98.641068 111.441101) (xy 98.820392 111.659608) (xy 99.038899 111.838932) + (xy 99.171858 111.91) (xy 99.038899 111.981068) (xy 98.820392 112.160392) (xy 98.798566 112.186987) (xy 95.688 109.076422) + (xy 95.688 108.427373) (xy 95.717502 108.37218) (xy 95.753812 108.252482) (xy 95.766072 108.128) (xy 95.766072 106.568) + (xy 95.753812 106.443518) (xy 95.717502 106.32382) (xy 95.658537 106.213506) (xy 95.579185 106.116815) (xy 95.482494 106.037463) + (xy 95.408665 105.998) (xy 95.482494 105.958537) (xy 95.579185 105.879185) (xy 95.658537 105.782494) (xy 95.717502 105.67218) + (xy 95.753812 105.552482) (xy 95.756556 105.524621) (xy 95.80149 105.520195) (xy 95.968313 105.469589) (xy 96.122059 105.387411) + (xy 96.256817 105.276817) (xy 96.284534 105.243044) (xy 96.353045 105.174533) (xy 96.386817 105.146817) (xy 96.497411 105.012059) + (xy 96.579589 104.858313) (xy 96.630195 104.69149) (xy 96.643 104.561477) (xy 96.643 104.561469) (xy 96.647281 104.518) + (xy 96.643 104.474531) (xy 96.643 103.689685) (xy 96.757661 103.575024) (xy 96.760215 103.57673) (xy 96.875777 103.624597) + (xy 96.998458 103.649) (xy 97.25025 103.649) (xy 97.409 103.49025) (xy 97.409 102.616) (xy 97.389 102.616) + (xy 97.389 102.362) (xy 97.409 102.362) (xy 97.409 102.342) (xy 97.663 102.342) + ) + ) + (filled_polygon + (pts + (xy 93.980002 106.091748) (xy 93.980002 106.066072) (xy 94.005678 106.066072) + ) + ) + (filled_polygon + (pts + (xy 93.725998 106.091748) (xy 93.700322 106.066072) (xy 93.725998 106.066072) + ) + ) + (filled_polygon + (pts + (xy 104.652 100.646579) (xy 104.652001 103.071878) (xy 104.54282 103.104998) (xy 104.432506 103.163963) (xy 104.335815 103.243315) + (xy 104.256463 103.340006) (xy 104.197498 103.45032) (xy 104.161188 103.570018) (xy 104.148928 103.6945) (xy 104.148928 104.1445) + (xy 104.161188 104.268982) (xy 104.197498 104.38868) (xy 104.256463 104.498994) (xy 104.314326 104.5695) (xy 104.256463 104.640006) + (xy 104.237758 104.675) (xy 101.770078 104.675) (xy 101.659608 104.540392) (xy 101.441101 104.361068) (xy 101.313259 104.292735) + (xy 101.542839 104.142601) (xy 101.7445 103.944895) (xy 101.903715 103.711646) (xy 102.014367 103.451818) (xy 102.031904 103.369039) + (xy 101.909915 103.147) (xy 100.367 103.147) (xy 100.367 103.167) (xy 100.113 103.167) (xy 100.113 103.147) + (xy 100.093 103.147) (xy 100.093 102.893) (xy 100.113 102.893) (xy 100.113 102.873) (xy 100.367 102.873) + (xy 100.367 102.893) (xy 101.909915 102.893) (xy 102.031904 102.670961) (xy 102.014367 102.588182) (xy 101.903715 102.328354) + (xy 101.7445 102.095105) (xy 101.542839 101.897399) (xy 101.313259 101.747265) (xy 101.441101 101.678932) (xy 101.659608 101.499608) + (xy 101.770078 101.365) (xy 103.311531 101.365) (xy 103.355 101.369281) (xy 103.398469 101.365) (xy 103.398477 101.365) + (xy 103.52849 101.352195) (xy 103.695313 101.301589) (xy 103.849059 101.219411) (xy 103.983817 101.108817) (xy 104.011534 101.075044) + (xy 104.546 100.540579) + ) + ) + (filled_polygon + (pts + (xy 105.504501 71.994133) (xy 105.5045 78.788248) (xy 105.5045 78.788249) (xy 105.504501 84.075538) (xy 105.474038 84.100538) + (xy 105.363595 84.235113) (xy 105.281528 84.388649) (xy 105.230992 84.555245) (xy 105.213928 84.728499) (xy 105.213928 84.97394) + (xy 103.65586 86.532009) (xy 103.612552 86.567551) (xy 103.470717 86.740377) (xy 103.460019 86.760392) (xy 103.365324 86.937554) + (xy 103.300423 87.151502) (xy 103.278509 87.374) (xy 103.284001 87.429761) (xy 103.284001 88.345878) (xy 103.17482 88.378998) + (xy 103.064506 88.437963) (xy 102.967815 88.517315) (xy 102.888463 88.614006) (xy 102.829498 88.72432) (xy 102.793188 88.844018) + (xy 102.780928 88.9685) (xy 102.780928 92.7685) (xy 102.793188 92.892982) (xy 102.829498 93.01268) (xy 102.888463 93.122994) + (xy 102.967815 93.219685) (xy 103.064506 93.299037) (xy 103.17482 93.358002) (xy 103.294518 93.394312) (xy 103.419 93.406572) + (xy 103.534 93.406572) (xy 103.534001 96.758446) (xy 103.526043 96.753129) (xy 103.273989 96.648725) (xy 103.006411 96.5955) + (xy 102.733589 96.5955) (xy 102.466011 96.648725) (xy 102.213957 96.753129) (xy 101.987114 96.904701) (xy 101.836815 97.055) + (xy 101.770078 97.055) (xy 101.659608 96.920392) (xy 101.441101 96.741068) (xy 101.308142 96.67) (xy 101.441101 96.598932) + (xy 101.659608 96.419608) (xy 101.838932 96.201101) (xy 101.972182 95.951808) (xy 102.054236 95.681309) (xy 102.081943 95.4) + (xy 102.054236 95.118691) (xy 101.972182 94.848192) (xy 101.838932 94.598899) (xy 101.659608 94.380392) (xy 101.441101 94.201068) + (xy 101.308142 94.13) (xy 101.441101 94.058932) (xy 101.659608 93.879608) (xy 101.838932 93.661101) (xy 101.972182 93.411808) + (xy 102.054236 93.141309) (xy 102.081943 92.86) (xy 102.054236 92.578691) (xy 101.972182 92.308192) (xy 101.838932 92.058899) + (xy 101.659608 91.840392) (xy 101.441101 91.661068) (xy 101.308142 91.59) (xy 101.441101 91.518932) (xy 101.659608 91.339608) + (xy 101.838932 91.121101) (xy 101.972182 90.871808) (xy 102.054236 90.601309) (xy 102.081943 90.32) (xy 102.054236 90.038691) + (xy 101.972182 89.768192) (xy 101.838932 89.518899) (xy 101.659608 89.300392) (xy 101.441101 89.121068) (xy 101.308142 89.05) + (xy 101.441101 88.978932) (xy 101.659608 88.799608) (xy 101.838932 88.581101) (xy 101.972182 88.331808) (xy 102.054236 88.061309) + (xy 102.081943 87.78) (xy 102.054236 87.498691) (xy 101.972182 87.228192) (xy 101.838932 86.978899) (xy 101.659608 86.760392) + (xy 101.441101 86.581068) (xy 101.308142 86.51) (xy 101.441101 86.438932) (xy 101.659608 86.259608) (xy 101.838932 86.041101) + (xy 101.972182 85.791808) (xy 102.054236 85.521309) (xy 102.081943 85.24) (xy 102.054236 84.958691) (xy 101.977887 84.707) + (xy 102.223961 84.707) (xy 102.339187 84.768589) (xy 102.50601 84.819195) (xy 102.6795 84.836282) (xy 102.852989 84.819195) + (xy 103.019812 84.768589) (xy 103.173558 84.686411) (xy 103.308317 84.575817) (xy 103.418911 84.441059) (xy 103.501089 84.287313) + (xy 103.551695 84.12049) (xy 103.5645 83.990477) (xy 103.5645 83.805578) (xy 103.752578 83.6175) (xy 104.022411 83.6175) + (xy 104.289989 83.564275) (xy 104.542043 83.459871) (xy 104.768886 83.308299) (xy 104.961799 83.115386) (xy 105.113371 82.888543) + (xy 105.217775 82.636489) (xy 105.271 82.368911) (xy 105.271 82.096089) (xy 105.217775 81.828511) (xy 105.113371 81.576457) + (xy 104.961799 81.349614) (xy 104.768886 81.156701) (xy 104.542043 81.005129) (xy 104.289989 80.900725) (xy 104.022411 80.8475) + (xy 103.749589 80.8475) (xy 103.482011 80.900725) (xy 103.229957 81.005129) (xy 103.003114 81.156701) (xy 102.810201 81.349614) + (xy 102.658629 81.576457) (xy 102.554225 81.828511) (xy 102.501 82.096089) (xy 102.501 82.365922) (xy 102.084451 82.782471) + (xy 102.072885 82.791963) (xy 102.081943 82.7) (xy 102.054236 82.418691) (xy 101.972182 82.148192) (xy 101.838932 81.898899) + (xy 101.659608 81.680392) (xy 101.441101 81.501068) (xy 101.308142 81.43) (xy 101.441101 81.358932) (xy 101.659608 81.179608) + (xy 101.838932 80.961101) (xy 101.972182 80.711808) (xy 102.054236 80.441309) (xy 102.076684 80.213394) (xy 103.752579 78.5375) + (xy 104.022411 78.5375) (xy 104.289989 78.484275) (xy 104.542043 78.379871) (xy 104.768886 78.228299) (xy 104.961799 78.035386) + (xy 105.113371 77.808543) (xy 105.217775 77.556489) (xy 105.271 77.288911) (xy 105.271 77.016089) (xy 105.217775 76.748511) + (xy 105.113371 76.496457) (xy 104.961799 76.269614) (xy 104.768886 76.076701) (xy 104.542043 75.925129) (xy 104.289989 75.820725) + (xy 104.022411 75.7675) (xy 103.749589 75.7675) (xy 103.482011 75.820725) (xy 103.229957 75.925129) (xy 103.003114 76.076701) + (xy 102.810201 76.269614) (xy 102.658629 76.496457) (xy 102.554225 76.748511) (xy 102.501 77.016089) (xy 102.501 77.285921) + (xy 102.072659 77.714263) (xy 102.081943 77.62) (xy 102.054236 77.338691) (xy 101.972182 77.068192) (xy 101.838932 76.818899) + (xy 101.659608 76.600392) (xy 101.441101 76.421068) (xy 101.308142 76.35) (xy 101.441101 76.278932) (xy 101.659608 76.099608) + (xy 101.838932 75.881101) (xy 101.972182 75.631808) (xy 102.054236 75.361309) (xy 102.081943 75.08) (xy 102.054236 74.798691) + (xy 101.972182 74.528192) (xy 101.838932 74.278899) (xy 101.659608 74.060392) (xy 101.441101 73.881068) (xy 101.313259 73.812735) + (xy 101.542839 73.662601) (xy 101.7445 73.464895) (xy 101.903715 73.231646) (xy 102.014367 72.971818) (xy 102.031904 72.889039) + (xy 101.909915 72.667) (xy 100.367 72.667) (xy 100.367 72.687) (xy 100.113 72.687) (xy 100.113 72.667) + (xy 100.093 72.667) (xy 100.093 72.413) (xy 100.113 72.413) (xy 100.113 72.393) (xy 100.367 72.393) + (xy 100.367 72.413) (xy 101.909915 72.413) (xy 102.031904 72.190961) (xy 102.014367 72.108182) (xy 101.903715 71.848354) + (xy 101.7445 71.615105) (xy 101.542839 71.417399) (xy 101.313259 71.267265) (xy 101.441101 71.198932) (xy 101.519002 71.135) + (xy 104.645369 71.135) + ) + ) + (filled_polygon + (pts + (xy 88.626 71.480749) (xy 88.620509 71.5365) (xy 88.626 71.592251) (xy 88.642423 71.758998) (xy 88.707324 71.972946) + (xy 88.812716 72.170123) (xy 88.954551 72.342949) (xy 88.997865 72.378496) (xy 92.337 75.717633) (xy 92.337 76.128751) + (xy 92.337001 76.128761) (xy 92.337 78.478251) (xy 92.337001 78.478261) (xy 92.337 81.732248) (xy 92.331509 81.788) + (xy 92.353423 82.010499) (xy 92.418324 82.224447) (xy 92.439513 82.264089) (xy 92.523716 82.421623) (xy 92.665551 82.594449) + (xy 92.838377 82.736284) (xy 93.035553 82.841676) (xy 93.249501 82.906577) (xy 93.472 82.928491) (xy 93.527751 82.923) + (xy 94.398869 82.923) (xy 95.131001 83.655133) (xy 95.131 94.398868) (xy 93.337 96.192869) (xy 93.337 92.638752) + (xy 93.342491 92.583) (xy 93.320577 92.360502) (xy 93.285331 92.244312) (xy 93.255676 92.146553) (xy 93.150284 91.949377) + (xy 93.008449 91.776551) (xy 92.965139 91.741007) (xy 92.774643 91.550512) (xy 92.645122 91.444217) (xy 92.447946 91.338824) + (xy 92.233998 91.273923) (xy 92.0115 91.252009) (xy 91.789002 91.273923) (xy 91.575054 91.338824) (xy 91.377878 91.444217) + (xy 91.300768 91.5075) (xy 89.453579 91.5075) (xy 89.353079 91.407) (xy 89.443502 91.407) (xy 89.443502 91.248252) + (xy 89.60225 91.407) (xy 89.904042 91.407) (xy 90.026723 91.382597) (xy 90.142285 91.33473) (xy 90.246289 91.265237) + (xy 90.334737 91.176789) (xy 90.40423 91.072785) (xy 90.452097 90.957223) (xy 90.4765 90.834542) (xy 90.4765 90.58275) + (xy 90.31775 90.424) (xy 89.4435 90.424) (xy 89.4435 90.444) (xy 89.1895 90.444) (xy 89.1895 90.424) + (xy 89.1695 90.424) (xy 89.1695 90.17) (xy 89.1895 90.17) (xy 89.1895 89.34575) (xy 89.4435 89.34575) + (xy 89.4435 90.17) (xy 90.31775 90.17) (xy 90.4765 90.01125) (xy 90.4765 89.759458) (xy 90.452097 89.636777) + (xy 90.40423 89.521215) (xy 90.334737 89.417211) (xy 90.246289 89.328763) (xy 90.142285 89.25927) (xy 90.026723 89.211403) + (xy 89.904042 89.187) (xy 89.60225 89.187) (xy 89.4435 89.34575) (xy 89.1895 89.34575) (xy 89.03075 89.187) + (xy 88.728958 89.187) (xy 88.606277 89.211403) (xy 88.490715 89.25927) (xy 88.386711 89.328763) (xy 88.364358 89.351116) + (xy 88.340442 89.331488) (xy 88.189067 89.250577) (xy 88.024816 89.200752) (xy 87.854 89.183928) (xy 87.279 89.183928) + (xy 87.108184 89.200752) (xy 86.943933 89.250577) (xy 86.792558 89.331488) (xy 86.666429 89.435) (xy 86.530078 89.435) + (xy 86.419608 89.300392) (xy 86.201101 89.121068) (xy 86.073259 89.052735) (xy 86.302839 88.902601) (xy 86.5045 88.704895) + (xy 86.62778 88.52429) (xy 86.727215 88.59073) (xy 86.842777 88.638597) (xy 86.965458 88.663) (xy 87.21725 88.663) + (xy 87.376 88.50425) (xy 87.376 87.63) (xy 87.63 87.63) (xy 87.63 88.50425) (xy 87.78875 88.663) + (xy 88.040542 88.663) (xy 88.163223 88.638597) (xy 88.278785 88.59073) (xy 88.382789 88.521237) (xy 88.42375 88.480276) + (xy 88.464711 88.521237) (xy 88.568715 88.59073) (xy 88.684277 88.638597) (xy 88.806958 88.663) (xy 89.05875 88.663) + (xy 89.2175 88.50425) (xy 89.2175 87.63) (xy 89.4715 87.63) (xy 89.4715 88.50425) (xy 89.63025 88.663) + (xy 89.882042 88.663) (xy 90.004723 88.638597) (xy 90.120285 88.59073) (xy 90.224289 88.521237) (xy 90.312737 88.432789) + (xy 90.38223 88.328785) (xy 90.430097 88.213223) (xy 90.4545 88.090542) (xy 90.4545 87.78875) (xy 90.29575 87.63) + (xy 89.4715 87.63) (xy 89.2175 87.63) (xy 87.63 87.63) (xy 87.376 87.63) (xy 87.356 87.63) + (xy 87.356 87.376) (xy 87.376 87.376) (xy 87.376 87.356) (xy 87.63 87.356) (xy 87.63 87.376) + (xy 89.2175 87.376) (xy 89.2175 87.356) (xy 89.4715 87.356) (xy 89.4715 87.376) (xy 90.29575 87.376) + (xy 90.4545 87.21725) (xy 90.4545 86.915458) (xy 90.430097 86.792777) (xy 90.38223 86.677215) (xy 90.312737 86.573211) + (xy 90.290384 86.550858) (xy 90.310012 86.526942) (xy 90.390923 86.375567) (xy 90.440748 86.211316) (xy 90.457572 86.0405) + (xy 90.457572 85.4655) (xy 90.440748 85.294684) (xy 90.390923 85.130433) (xy 90.310012 84.979058) (xy 90.288202 84.952483) + (xy 90.420299 84.820386) (xy 90.571871 84.593543) (xy 90.676275 84.341489) (xy 90.7295 84.073911) (xy 90.7295 83.801089) + (xy 90.676275 83.533511) (xy 90.571871 83.281457) (xy 90.420299 83.054614) (xy 90.227386 82.861701) (xy 90.000543 82.710129) + (xy 89.748489 82.605725) (xy 89.480911 82.5525) (xy 89.211078 82.5525) (xy 88.763534 82.104956) (xy 88.735817 82.071183) + (xy 88.601059 81.960589) (xy 88.447313 81.878411) (xy 88.28049 81.827805) (xy 88.150477 81.815) (xy 88.150469 81.815) + (xy 88.107 81.810719) (xy 88.063531 81.815) (xy 86.530078 81.815) (xy 86.419608 81.680392) (xy 86.201101 81.501068) + (xy 86.068142 81.43) (xy 86.201101 81.358932) (xy 86.419608 81.179608) (xy 86.530078 81.045) (xy 88.198531 81.045) + (xy 88.242 81.049281) (xy 88.285469 81.045) (xy 88.285477 81.045) (xy 88.41549 81.032195) (xy 88.582313 80.981589) + (xy 88.736059 80.899411) (xy 88.870817 80.788817) (xy 88.898534 80.755044) (xy 89.211078 80.4425) (xy 89.480911 80.4425) + (xy 89.748489 80.389275) (xy 90.000543 80.284871) (xy 90.227386 80.133299) (xy 90.420299 79.940386) (xy 90.571871 79.713543) + (xy 90.676275 79.461489) (xy 90.7295 79.193911) (xy 90.7295 78.921089) (xy 90.676275 78.653511) (xy 90.571871 78.401457) + (xy 90.420299 78.174614) (xy 90.270172 78.024487) (xy 90.310012 77.975942) (xy 90.390923 77.824567) (xy 90.440748 77.660316) + (xy 90.457572 77.4895) (xy 90.457572 76.9145) (xy 90.440748 76.743684) (xy 90.390923 76.579433) (xy 90.310012 76.428058) + (xy 90.290384 76.404142) (xy 90.312737 76.381789) (xy 90.38223 76.277785) (xy 90.430097 76.162223) (xy 90.4545 76.039542) + (xy 90.4545 75.73775) (xy 90.29575 75.579) (xy 89.4715 75.579) (xy 89.4715 75.599) (xy 89.2175 75.599) + (xy 89.2175 75.579) (xy 88.39325 75.579) (xy 88.2345 75.73775) (xy 88.2345 76.039542) (xy 88.258903 76.162223) + (xy 88.30677 76.277785) (xy 88.376263 76.381789) (xy 88.398616 76.404142) (xy 88.378988 76.428058) (xy 88.298077 76.579433) + (xy 88.248252 76.743684) (xy 88.231428 76.9145) (xy 88.231428 77.4895) (xy 88.248252 77.660316) (xy 88.298077 77.824567) + (xy 88.378988 77.975942) (xy 88.418828 78.024487) (xy 88.268701 78.174614) (xy 88.117129 78.401457) (xy 88.012725 78.653511) + (xy 87.9595 78.921089) (xy 87.9595 79.190922) (xy 87.875422 79.275) (xy 86.530078 79.275) (xy 86.419608 79.140392) + (xy 86.201101 78.961068) (xy 86.068142 78.89) (xy 86.201101 78.818932) (xy 86.419608 78.639608) (xy 86.598932 78.421101) + (xy 86.732182 78.171808) (xy 86.814236 77.901309) (xy 86.841943 77.62) (xy 86.814236 77.338691) (xy 86.732182 77.068192) + (xy 86.598932 76.818899) (xy 86.419608 76.600392) (xy 86.201101 76.421068) (xy 86.068142 76.35) (xy 86.201101 76.278932) + (xy 86.419608 76.099608) (xy 86.598932 75.881101) (xy 86.732182 75.631808) (xy 86.814236 75.361309) (xy 86.841943 75.08) + (xy 86.820714 74.864458) (xy 88.2345 74.864458) (xy 88.2345 75.16625) (xy 88.39325 75.325) (xy 89.2175 75.325) + (xy 89.2175 74.45075) (xy 89.4715 74.45075) (xy 89.4715 75.325) (xy 90.29575 75.325) (xy 90.4545 75.16625) + (xy 90.4545 74.864458) (xy 90.430097 74.741777) (xy 90.38223 74.626215) (xy 90.312737 74.522211) (xy 90.224289 74.433763) + (xy 90.120285 74.36427) (xy 90.004723 74.316403) (xy 89.882042 74.292) (xy 89.63025 74.292) (xy 89.4715 74.45075) + (xy 89.2175 74.45075) (xy 89.05875 74.292) (xy 88.806958 74.292) (xy 88.684277 74.316403) (xy 88.568715 74.36427) + (xy 88.464711 74.433763) (xy 88.376263 74.522211) (xy 88.30677 74.626215) (xy 88.258903 74.741777) (xy 88.2345 74.864458) + (xy 86.820714 74.864458) (xy 86.814236 74.798691) (xy 86.732182 74.528192) (xy 86.598932 74.278899) (xy 86.419608 74.060392) + (xy 86.201101 73.881068) (xy 86.068142 73.81) (xy 86.201101 73.738932) (xy 86.419608 73.559608) (xy 86.598932 73.341101) + (xy 86.732182 73.091808) (xy 86.788811 72.905125) (xy 86.838458 72.915) (xy 87.09025 72.915) (xy 87.249 72.75625) + (xy 87.249 71.882) (xy 87.503 71.882) (xy 87.503 72.75625) (xy 87.66175 72.915) (xy 87.913542 72.915) + (xy 88.036223 72.890597) (xy 88.151785 72.84273) (xy 88.255789 72.773237) (xy 88.344237 72.684789) (xy 88.41373 72.580785) + (xy 88.461597 72.465223) (xy 88.486 72.342542) (xy 88.486 72.04075) (xy 88.32725 71.882) (xy 87.503 71.882) + (xy 87.249 71.882) (xy 87.229 71.882) (xy 87.229 71.628) (xy 87.249 71.628) (xy 87.249 71.608) + (xy 87.503 71.608) (xy 87.503 71.628) (xy 88.32725 71.628) (xy 88.486 71.46925) (xy 88.486 71.167458) + (xy 88.461597 71.044777) (xy 88.41373 70.929215) (xy 88.387527 70.89) (xy 88.626 70.89) + ) + ) + (filled_polygon + (pts + (xy 85.127 87.653) (xy 85.147 87.653) (xy 85.147 87.907) (xy 85.127 87.907) (xy 85.127 87.927) + (xy 84.873 87.927) (xy 84.873 87.907) (xy 84.853 87.907) (xy 84.853 87.653) (xy 84.873 87.653) + (xy 84.873 87.633) (xy 85.127 87.633) + ) + ) + ) +) diff --git a/F0_F1-LQFP48_testboard/stm32.net b/F0_F1-LQFP48_testboard/stm32.net new file mode 100644 index 0000000..f5026a8 --- /dev/null +++ b/F0_F1-LQFP48_testboard/stm32.net @@ -0,0 +1,627 @@ +(export (version D) + (design + (source /home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/F0_F1_testboard/kicad/stm32.sch) + (date "Пт 17 Ð¼Ð°Ñ 2019 09:59:43") + (tool "Eeschema (6.0.0-rc1-dev-1613-ga55d9819b)") + (sheet (number 1) (name /) (tstamps /) + (title_block + (title) + (company) + (rev) + (date) + (source stm32.sch) + (comment (number 1) (value "")) + (comment (number 2) (value "")) + (comment (number 3) (value "")) + (comment (number 4) (value ""))))) + (components + (comp (ref U1) + (value LM1117-3.3) + (footprint TO_SOT_Packages_SMD:SOT-223) + (libsource (lib stm32-rescue) (part LM1117-3.3-RESCUE-stm32) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 58C431FC)) + (comp (ref C4) + (value 47u) + (footprint Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolder) + (libsource (lib stm32-rescue) (part CP) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 58C454F6)) + (comp (ref D1) + (value LED) + (footprint LED_THT:LED_D3.0mm) + (libsource (lib stm32-rescue) (part LED-RESCUE-stm32) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5909BFFC)) + (comp (ref R4) + (value 220) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5909C002)) + (comp (ref R1) + (value 10k) + (footprint Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 590D30C8)) + (comp (ref R2) + (value 10k) + (footprint Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 590D3334)) + (comp (ref C2) + (value 0.1) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 590D4150)) + (comp (ref C1) + (value 0.1) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 590D4832)) + (comp (ref SW2) + (value Boot) + (footprint Button_Switch_THT:SW_PUSH_6mm) + (libsource (lib stm32-rescue) (part SW_Push) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5909F6B6)) + (comp (ref SW1) + (value Reset) + (footprint Button_Switch_THT:SW_PUSH_6mm) + (libsource (lib stm32-rescue) (part SW_Push) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 590A0134)) + (comp (ref U2) + (value STM32F042C6Tx) + (footprint Package_DIP:DIP-48_W15.24mm_Socket_LongPads) + (libsource (lib stm32-rescue) (part STM32F042C6Tx) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CDF834A)) + (comp (ref C7) + (value 0.1) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CE67302)) + (comp (ref C8) + (value 0.1) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CE67308)) + (comp (ref C9) + (value 0.1) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CE6730E)) + (comp (ref C10) + (value 0.1) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CE67321)) + (comp (ref P2) + (value USB_B) + (footprint Connectors_USB:USB_Micro-B_Wuerth_629105150521) + (libsource (lib stm32-rescue) (part USB_A-RESCUE-stm32) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CEABE76)) + (comp (ref P1) + (value USART1) + (footprint Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical) + (libsource (lib stm32-rescue) (part CONN_01X03) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CEABE88)) + (comp (ref R7) + (value 22) + (footprint Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CEABEA6)) + (comp (ref R8) + (value 22) + (footprint Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CEABEAC)) + (comp (ref D2) + (value IP4220CZ6) + (footprint TO_SOT_Packages_SMD:SOT-23-6_Handsoldering) + (datasheet http://www.littelfuse.com/~/media/files/littelfuse/technical%20resources/documents/data%20sheets/sp05xxba.pdf) + (libsource (lib Power_Protection) (part SP0505BAHT) (description "TVS Diode Array, 5.5V Standoff, 5 Channels, SOT-23-6 package")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CEBDB90)) + (comp (ref U3) + (value USBLC6-2SC6) + (footprint TO_SOT_Packages_SMD:SOT-23-6_Handsoldering) + (datasheet http://www2.st.com/resource/en/datasheet/CD00050750.pdf) + (libsource (lib Power_Protection) (part USBLC6-2SC6) (description "Bidirectional ESD Protection Diode, SOT-23-6")) + (sheetpath (names /) (tstamps /)) + (tstamp 5CED0250)) + (comp (ref C3) + (value 0.1) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D05A623)) + (comp (ref R3) + (value 100k) + (footprint Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D1076F1)) + (comp (ref D4) + (value LED) + (footprint LED_THT:LED_D5.0mm) + (libsource (lib stm32-rescue) (part LED-RESCUE-stm32) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D1AC2F3)) + (comp (ref D3) + (value LED) + (footprint LED_THT:LED_D5.0mm) + (libsource (lib stm32-rescue) (part LED-RESCUE-stm32) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D1AD231)) + (comp (ref Y1) + (value 8MHz) + (footprint Crystal:Crystal_HC49-U_Vertical) + (datasheet ~) + (libsource (lib Device) (part Crystal) (description "Two pin crystal")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D1F4994)) + (comp (ref C6) + (value 12) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D1F64B1)) + (comp (ref C5) + (value 12) + (footprint Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part C) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D1F7471)) + (comp (ref SW3) + (value Button0) + (footprint Button_Switch_THT:SW_PUSH_6mm) + (libsource (lib stm32-rescue) (part SW_Push) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D2D9A50)) + (comp (ref SW4) + (value Button1) + (footprint Button_Switch_THT:SW_PUSH_6mm) + (libsource (lib stm32-rescue) (part SW_Push) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D2E5A00)) + (comp (ref R5) + (value 220) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D3F2F98)) + (comp (ref R6) + (value 220) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D3F3639)) + (comp (ref R9) + (value 1k5) + (footprint Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder) + (libsource (lib stm32-rescue) (part R) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D5EA0B2)) + (comp (ref Q1) + (value DTA114Y) + (footprint TO_SOT_Packages_SMD:SOT-323_SC-70_Handsoldering) + (libsource (lib Transistor_BJT) (part DTA114Y) (description "Digital PNP Transistor, 10k/47k, SOT-23")) + (sheetpath (names /) (tstamps /)) + (tstamp 5D5EB488)) + (comp (ref RV1) + (value 10k) + (footprint my_footprints:Potentiometer) + (datasheet ~) + (libsource (lib Device) (part R_POT) (description Potentiometer)) + (sheetpath (names /) (tstamps /)) + (tstamp 5D64D13D))) + (libparts + (libpart (lib Device) (part Crystal) + (description "Two pin crystal") + (docs ~) + (footprints + (fp Crystal*)) + (fields + (field (name Reference) Y) + (field (name Value) Crystal)) + (pins + (pin (num 1) (name 1) (type passive)) + (pin (num 2) (name 2) (type passive)))) + (libpart (lib Device) (part R_POT) + (description Potentiometer) + (docs ~) + (footprints + (fp Potentiometer*)) + (fields + (field (name Reference) RV) + (field (name Value) R_POT)) + (pins + (pin (num 1) (name 1) (type passive)) + (pin (num 2) (name 2) (type passive)) + (pin (num 3) (name 3) (type passive)))) + (libpart (lib Power_Protection) (part SP0505BAHT) + (description "TVS Diode Array, 5.5V Standoff, 5 Channels, SOT-23-6 package") + (docs http://www.littelfuse.com/~/media/files/littelfuse/technical%20resources/documents/data%20sheets/sp05xxba.pdf) + (footprints + (fp SOT?23*)) + (fields + (field (name Reference) D) + (field (name Value) SP0505BAHT) + (field (name Footprint) Package_TO_SOT_SMD:SOT-23-6)) + (pins + (pin (num 1) (name K) (type passive)) + (pin (num 2) (name A) (type passive)) + (pin (num 3) (name K) (type passive)) + (pin (num 4) (name K) (type passive)) + (pin (num 5) (name K) (type passive)) + (pin (num 6) (name K) (type passive)))) + (libpart (lib Power_Protection) (part USBLC6-2SC6) + (description "Bidirectional ESD Protection Diode, SOT-23-6") + (docs http://www2.st.com/resource/en/datasheet/CD00050750.pdf) + (footprints + (fp SOT?23*)) + (fields + (field (name Reference) U) + (field (name Value) USBLC6-2SC6) + (field (name Footprint) Package_TO_SOT_SMD:SOT-23-6)) + (pins + (pin (num 1) (name IO1) (type passive)) + (pin (num 2) (name GND) (type passive)) + (pin (num 3) (name IO2) (type passive)) + (pin (num 4) (name IO2) (type passive)) + (pin (num 5) (name VBUS) (type passive)) + (pin (num 6) (name IO1) (type passive)))) + (libpart (lib Transistor_BJT) (part DTA114Y) + (description "Digital PNP Transistor, 10k/47k, SOT-23") + (footprints + (fp SOT?23*) + (fp SC?59*)) + (fields + (field (name Reference) Q) + (field (name Value) DTA114Y)) + (pins + (pin (num 1) (name B) (type input)) + (pin (num 2) (name E) (type passive)) + (pin (num 3) (name C) (type passive)))) + (libpart (lib stm32-rescue) (part C) + (footprints + (fp C_*)) + (fields + (field (name Reference) C) + (field (name Value) C)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib stm32-rescue) (part CONN_01X03) + (footprints + (fp Pin_Header_Straight_1X*) + (fp Pin_Header_Angled_1X*) + (fp Socket_Strip_Straight_1X*) + (fp Socket_Strip_Angled_1X*)) + (fields + (field (name Reference) J) + (field (name Value) CONN_01X03)) + (pins + (pin (num 1) (name P1) (type passive)) + (pin (num 2) (name P2) (type passive)) + (pin (num 3) (name P3) (type passive)))) + (libpart (lib stm32-rescue) (part CP) + (footprints + (fp CP_*)) + (fields + (field (name Reference) C) + (field (name Value) CP)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib stm32-rescue) (part LED-RESCUE-stm32) + (footprints + (fp LED*)) + (fields + (field (name Reference) D) + (field (name Value) LED-RESCUE-stm32)) + (pins + (pin (num 1) (name K) (type passive)) + (pin (num 2) (name A) (type passive)))) + (libpart (lib stm32-rescue) (part LM1117-3.3-RESCUE-stm32) + (footprints + (fp SOT-223*) + (fp TO-263*) + (fp TO-252*)) + (fields + (field (name Reference) U) + (field (name Value) LM1117-3.3-RESCUE-stm32)) + (pins + (pin (num 1) (name GND/ADJ) (type power_in)) + (pin (num 2) (name VO) (type passive)) + (pin (num 3) (name VI) (type power_in)) + (pin (num 4) (name VO) (type power_out)))) + (libpart (lib stm32-rescue) (part R) + (footprints + (fp R_*) + (fp R_*)) + (fields + (field (name Reference) R) + (field (name Value) R)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib stm32-rescue) (part STM32F042C6Tx) + (fields + (field (name Reference) U) + (field (name Value) STM32F042C6Tx) + (field (name Footprint) LQFP48)) + (pins + (pin (num 1) (name VBAT) (type power_in)) + (pin (num 2) (name PC13/RTC_OUT_ALARM/RTC_OUT_CALIB/RTC_TAMP1/RTC_TS/SYS_WKUP2) (type BiDi)) + (pin (num 3) (name PC14/RCC_OSC32_IN) (type BiDi)) + (pin (num 4) (name PC15/RCC_OSC32_OUT) (type BiDi)) + (pin (num 5) (name PF0/CRS_SYNC/I2C1_SDA/RCC_OSC_IN) (type input)) + (pin (num 6) (name PF1/I2C1_SCL/RCC_OSC_OUT) (type input)) + (pin (num 7) (name NRST) (type input)) + (pin (num 8) (name VSSA) (type power_in)) + (pin (num 9) (name VDDA) (type power_in)) + (pin (num 10) (name ADC_IN0/RTC_TAMP2/SYS_WKUP1/TIM2_CH1/TIM2_ETR/TSC_G1_IO1/USART2_CTS/PA0) (type BiDi)) + (pin (num 11) (name ADC_IN1/TIM2_CH2/TSC_G1_IO2/USART2_DE/USART2_RTS/PA1) (type BiDi)) + (pin (num 12) (name ADC_IN2/SYS_WKUP4/TIM2_CH3/TSC_G1_IO3/USART2_TX/PA2) (type BiDi)) + (pin (num 13) (name ADC_IN3/TIM2_CH4/TSC_G1_IO4/USART2_RX/PA3) (type BiDi)) + (pin (num 14) (name ADC_IN4/I2S1_WS/SPI1_NSS/TIM14_CH1/TSC_G2_IO1/USART2_CK/USB_OE/PA4) (type BiDi)) + (pin (num 15) (name ADC_IN5/CEC/I2S1_CK/SPI1_SCK/TIM2_CH1/TIM2_ETR/TSC_G2_IO2/PA5) (type BiDi)) + (pin (num 16) (name ADC_IN6/I2S1_MCK/SPI1_MISO/TIM16_CH1/TIM1_BKIN/TIM3_CH1/TSC_G2_IO3/PA6) (type BiDi)) + (pin (num 17) (name ADC_IN7/I2S1_SD/SPI1_MOSI/TIM14_CH1/TIM17_CH1/TIM1_CH1N/TIM3_CH2/TSC_G2_IO4/PA7) (type BiDi)) + (pin (num 18) (name PB0/ADC_IN8/TIM1_CH2N/TIM3_CH3/TSC_G3_IO2) (type BiDi)) + (pin (num 19) (name PB1/ADC_IN9/TIM14_CH1/TIM1_CH3N/TIM3_CH4/TSC_G3_IO3) (type BiDi)) + (pin (num 20) (name PB2/TSC_G3_IO4) (type BiDi)) + (pin (num 21) (name PB10/CEC/I2C1_SCL/SPI2_SCK/TIM2_CH3/TSC_SYNC) (type BiDi)) + (pin (num 22) (name PB11/I2C1_SDA/TIM2_CH4) (type BiDi)) + (pin (num 23) (name VSS) (type power_in)) + (pin (num 24) (name VDD) (type power_in)) + (pin (num 25) (name PB12/SPI2_NSS/TIM1_BKIN) (type BiDi)) + (pin (num 26) (name PB13/I2C1_SCL/SPI2_SCK/TIM1_CH1N) (type BiDi)) + (pin (num 27) (name PB14/I2C1_SDA/SPI2_MISO/TIM1_CH2N) (type BiDi)) + (pin (num 28) (name PB15/RTC_REFIN/SPI2_MOSI/SYS_WKUP7/TIM1_CH3N) (type BiDi)) + (pin (num 29) (name CRS_SYNC/RCC_MCO/TIM1_CH1/USART1_CK/PA8) (type BiDi)) + (pin (num 30) (name I2C1_SCL/TIM1_CH2/TSC_G4_IO1/USART1_TX/PA9) (type BiDi)) + (pin (num 31) (name I2C1_SDA/TIM17_BKIN/TIM1_CH3/TSC_G4_IO2/USART1_RX/PA10) (type BiDi)) + (pin (num 32) (name CAN_RX/I2C1_SCL/TIM1_CH4/TSC_G4_IO3/USART1_CTS/USB_DM/PA11) (type BiDi)) + (pin (num 33) (name CAN_TX/I2C1_SDA/TIM1_ETR/TSC_G4_IO4/USART1_DE/USART1_RTS/USB_DP/PA12) (type BiDi)) + (pin (num 34) (name IR_OUT/SYS_SWDIO/USB_OE/PA13) (type BiDi)) + (pin (num 35) (name VSS) (type power_in)) + (pin (num 36) (name VDDIO2) (type power_in)) + (pin (num 37) (name SYS_SWCLK/USART2_TX/PA14) (type BiDi)) + (pin (num 38) (name I2S1_WS/SPI1_NSS/TIM2_CH1/TIM2_ETR/USART2_RX/USB_OE/PA15) (type BiDi)) + (pin (num 39) (name PB3/I2S1_CK/SPI1_SCK/TIM2_CH2/TSC_G5_IO1) (type BiDi)) + (pin (num 40) (name PB4/I2S1_MCK/SPI1_MISO/TIM17_BKIN/TIM3_CH1/TSC_G5_IO2) (type BiDi)) + (pin (num 41) (name PB5/I2C1_SMBA/I2S1_SD/SPI1_MOSI/SYS_WKUP6/TIM16_BKIN/TIM3_CH2) (type BiDi)) + (pin (num 42) (name PB6/I2C1_SCL/TIM16_CH1N/TSC_G5_IO3/USART1_TX) (type BiDi)) + (pin (num 43) (name PB7/I2C1_SDA/TIM17_CH1N/TSC_G5_IO4/USART1_RX) (type BiDi)) + (pin (num 44) (name PF11) (type BiDi)) + (pin (num 45) (name PB8/CAN_RX/CEC/I2C1_SCL/TIM16_CH1/TSC_SYNC) (type BiDi)) + (pin (num 46) (name PB9/CAN_TX/I2C1_SDA/IR_OUT/SPI2_NSS/TIM17_CH1) (type BiDi)) + (pin (num 47) (name VSS) (type power_in)) + (pin (num 48) (name VDD) (type power_in)))) + (libpart (lib stm32-rescue) (part SW_Push) + (fields + (field (name Reference) SW) + (field (name Value) SW_Push)) + (pins + (pin (num 1) (name 1) (type passive)) + (pin (num 2) (name 2) (type passive)))) + (libpart (lib stm32-rescue) (part USB_A-RESCUE-stm32) + (footprints + (fp USB*)) + (fields + (field (name Reference) P) + (field (name Value) USB_A-RESCUE-stm32)) + (pins + (pin (num 1) (name VBUS) (type power_in)) + (pin (num 2) (name D-) (type passive)) + (pin (num 3) (name D+) (type passive)) + (pin (num 4) (name GND) (type power_in)) + (pin (num 5) (name shield) (type passive))))) + (libraries + (library (logical Device) + (uri /usr/share/kicad/kicad-symbols//Device.lib)) + (library (logical Power_Protection) + (uri /usr/share/kicad/kicad-symbols//Power_Protection.lib)) + (library (logical Transistor_BJT) + (uri /usr/share/kicad/kicad-symbols//Transistor_BJT.lib)) + (library (logical stm32-rescue) + (uri /home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/F0_F1_testboard/kicad/stm32-rescue.lib))) + (nets + (net (code 1) (name GND) + (node (ref P1) (pin 1)) + (node (ref R4) (pin 1)) + (node (ref C4) (pin 2)) + (node (ref U2) (pin 35)) + (node (ref D2) (pin 2)) + (node (ref U1) (pin 1)) + (node (ref U2) (pin 47)) + (node (ref P2) (pin 4)) + (node (ref R1) (pin 2)) + (node (ref P2) (pin 5)) + (node (ref U2) (pin 23)) + (node (ref SW4) (pin 2)) + (node (ref SW3) (pin 2)) + (node (ref C9) (pin 1)) + (node (ref C3) (pin 2)) + (node (ref R3) (pin 2)) + (node (ref RV1) (pin 3)) + (node (ref SW1) (pin 2)) + (node (ref C7) (pin 1)) + (node (ref C1) (pin 2)) + (node (ref U3) (pin 2)) + (node (ref C8) (pin 1)) + (node (ref U2) (pin 8)) + (node (ref C6) (pin 2)) + (node (ref C10) (pin 1)) + (node (ref C5) (pin 2))) + (net (code 2) (name "Net-(R3-Pad1)") + (node (ref U2) (pin 20)) + (node (ref R3) (pin 1))) + (net (code 3) (name +3V3) + (node (ref U2) (pin 24)) + (node (ref SW2) (pin 2)) + (node (ref C7) (pin 2)) + (node (ref C2) (pin 2)) + (node (ref U2) (pin 36)) + (node (ref C10) (pin 2)) + (node (ref C9) (pin 2)) + (node (ref C8) (pin 2)) + (node (ref U2) (pin 1)) + (node (ref R2) (pin 2)) + (node (ref D1) (pin 2)) + (node (ref C4) (pin 1)) + (node (ref U1) (pin 4)) + (node (ref U1) (pin 2)) + (node (ref U2) (pin 48)) + (node (ref RV1) (pin 1)) + (node (ref U2) (pin 9)) + (node (ref Q1) (pin 2)) + (node (ref D2) (pin 5)) + (node (ref C3) (pin 1)) + (node (ref D4) (pin 2)) + (node (ref D3) (pin 2))) + (net (code 4) (name +5V) + (node (ref U1) (pin 3)) + (node (ref U3) (pin 5)) + (node (ref P2) (pin 1))) + (net (code 5) (name /OSC_IN) + (node (ref C5) (pin 1)) + (node (ref U2) (pin 5)) + (node (ref Y1) (pin 1))) + (net (code 6) (name /OSC_OUT) + (node (ref U2) (pin 6)) + (node (ref Y1) (pin 2)) + (node (ref C6) (pin 1))) + (net (code 7) (name "Net-(D3-Pad1)") + (node (ref D3) (pin 1)) + (node (ref R5) (pin 1))) + (net (code 8) (name "Net-(D4-Pad1)") + (node (ref R6) (pin 1)) + (node (ref D4) (pin 1))) + (net (code 9) (name "Net-(R7-Pad1)") + (node (ref R7) (pin 1)) + (node (ref U3) (pin 1))) + (net (code 10) (name "Net-(R7-Pad2)") + (node (ref R7) (pin 2)) + (node (ref U2) (pin 32))) + (net (code 11) (name /Tx) + (node (ref D2) (pin 3)) + (node (ref P1) (pin 2)) + (node (ref U2) (pin 30))) + (net (code 12) (name /Rx) + (node (ref P1) (pin 3)) + (node (ref U2) (pin 31)) + (node (ref D2) (pin 1))) + (net (code 13) (name "Net-(R8-Pad2)") + (node (ref R8) (pin 2)) + (node (ref U2) (pin 33))) + (net (code 14) (name "Net-(R8-Pad1)") + (node (ref U3) (pin 3)) + (node (ref R8) (pin 1))) + (net (code 15) (name "Net-(P2-Pad3)") + (node (ref U3) (pin 4)) + (node (ref P2) (pin 3)) + (node (ref R9) (pin 2))) + (net (code 16) (name "Net-(P2-Pad2)") + (node (ref P2) (pin 2)) + (node (ref U3) (pin 6))) + (net (code 17) (name "Net-(U2-Pad22)") + (node (ref U2) (pin 22))) + (net (code 18) (name "Net-(Q1-Pad3)") + (node (ref Q1) (pin 3)) + (node (ref R9) (pin 1))) + (net (code 19) (name "Net-(U2-Pad19)") + (node (ref U2) (pin 19))) + (net (code 20) (name "Net-(U2-Pad39)") + (node (ref U2) (pin 39))) + (net (code 21) (name "Net-(U2-Pad40)") + (node (ref U2) (pin 40))) + (net (code 22) (name "Net-(U2-Pad41)") + (node (ref U2) (pin 41))) + (net (code 23) (name "Net-(U2-Pad42)") + (node (ref U2) (pin 42))) + (net (code 24) (name "Net-(U2-Pad43)") + (node (ref U2) (pin 43))) + (net (code 25) (name "Net-(U2-Pad45)") + (node (ref U2) (pin 45))) + (net (code 26) (name "Net-(U2-Pad46)") + (node (ref U2) (pin 46))) + (net (code 27) (name "Net-(U2-Pad21)") + (node (ref U2) (pin 21))) + (net (code 28) (name "Net-(U2-Pad25)") + (node (ref U2) (pin 25))) + (net (code 29) (name "Net-(U2-Pad26)") + (node (ref U2) (pin 26))) + (net (code 30) (name "Net-(U2-Pad27)") + (node (ref U2) (pin 27))) + (net (code 31) (name "Net-(U2-Pad28)") + (node (ref U2) (pin 28))) + (net (code 32) (name "Net-(U2-Pad17)") + (node (ref U2) (pin 17))) + (net (code 33) (name "Net-(U2-Pad16)") + (node (ref U2) (pin 16))) + (net (code 34) (name "Net-(U2-Pad15)") + (node (ref U2) (pin 15))) + (net (code 35) (name "Net-(U2-Pad13)") + (node (ref U2) (pin 13))) + (net (code 36) (name "Net-(U2-Pad12)") + (node (ref U2) (pin 12))) + (net (code 37) (name "Net-(U2-Pad11)") + (node (ref U2) (pin 11))) + (net (code 38) (name /Button0) + (node (ref U2) (pin 37)) + (node (ref SW4) (pin 1)) + (node (ref D2) (pin 6))) + (net (code 39) (name "Net-(U2-Pad29)") + (node (ref U2) (pin 29))) + (net (code 40) (name "Net-(RV1-Pad2)") + (node (ref U2) (pin 18)) + (node (ref RV1) (pin 2))) + (net (code 41) (name /Button1) + (node (ref D2) (pin 4)) + (node (ref U2) (pin 38)) + (node (ref SW3) (pin 1))) + (net (code 42) (name "Net-(U2-Pad4)") + (node (ref U2) (pin 4))) + (net (code 43) (name "Net-(U2-Pad3)") + (node (ref U2) (pin 3))) + (net (code 44) (name "Net-(U2-Pad2)") + (node (ref U2) (pin 2))) + (net (code 45) (name /LED0) + (node (ref U2) (pin 14)) + (node (ref R5) (pin 2))) + (net (code 46) (name /LED1) + (node (ref R6) (pin 2)) + (node (ref U2) (pin 10))) + (net (code 47) (name "Net-(D1-Pad1)") + (node (ref D1) (pin 1)) + (node (ref R4) (pin 2))) + (net (code 48) (name /USB_PU) + (node (ref Q1) (pin 1)) + (node (ref U2) (pin 34))) + (net (code 49) (name /NRST) + (node (ref U2) (pin 7)) + (node (ref C1) (pin 1)) + (node (ref SW1) (pin 1)) + (node (ref R2) (pin 1))) + (net (code 50) (name /BOOT0) + (node (ref U2) (pin 44)) + (node (ref SW2) (pin 1)) + (node (ref C2) (pin 1)) + (node (ref R1) (pin 1))))) \ No newline at end of file diff --git a/F0_F1-LQFP48_testboard/stm32.pro b/F0_F1-LQFP48_testboard/stm32.pro new file mode 100644 index 0000000..4be03ea --- /dev/null +++ b/F0_F1-LQFP48_testboard/stm32.pro @@ -0,0 +1,68 @@ +update=Ср 15 Ð¼Ð°Ñ 2019 13:44:34 +version=1 +last_client=kicad +[cvpcb] +version=1 +NetIExt=net +[general] +version=1 +[eeschema] +version=1 +LibDir= +[pcbnew] +version=1 +PageLayoutDescrFile= +LastNetListRead=stm32.net +CopperLayerCount=2 +BoardThickness=1.6 +AllowMicroVias=0 +AllowBlindVias=0 +RequireCourtyardDefinitions=0 +ProhibitOverlappingCourtyards=1 +MinTrackWidth=0.2 +MinViaDiameter=1 +MinViaDrill=0.6 +MinMicroViaDiameter=0.2 +MinMicroViaDrill=0.09999999999999999 +MinHoleToHole=1 +TrackWidth1=0.25 +TrackWidth2=0.25 +TrackWidth3=0.5 +TrackWidth4=1 +TrackWidth5=2 +ViaDiameter1=2 +ViaDrill1=0.6 +ViaDiameter2=1.5 +ViaDrill2=0.6 +ViaDiameter3=2 +ViaDrill3=0.8 +dPairWidth1=0.2 +dPairGap1=0.25 +dPairViaGap1=0.25 +SilkLineWidth=0.15 +SilkTextSizeV=1 +SilkTextSizeH=1 +SilkTextSizeThickness=0.15 +SilkTextItalic=0 +SilkTextUpright=1 +CopperLineWidth=0.2 +CopperTextSizeV=1.5 +CopperTextSizeH=1.5 +CopperTextThickness=0.3 +CopperTextItalic=0 +CopperTextUpright=1 +EdgeCutLineWidth=0.09999999999999999 +CourtyardLineWidth=0.12 +OthersLineWidth=0.15 +OthersTextSizeV=1 +OthersTextSizeH=1 +OthersTextSizeThickness=0.15 +OthersTextItalic=0 +OthersTextUpright=1 +SolderMaskClearance=0 +SolderMaskMinWidth=0 +SolderPasteClearance=0 +SolderPasteRatio=-0 +[pcbnew/Layer.F.Cu] +Name=F.Cu +Type=3 diff --git a/F0_F1-LQFP48_testboard/stm32.sch b/F0_F1-LQFP48_testboard/stm32.sch new file mode 100644 index 0000000..eba2810 --- /dev/null +++ b/F0_F1-LQFP48_testboard/stm32.sch @@ -0,0 +1,1036 @@ +EESchema Schematic File Version 4 +EELAYER 29 0 +EELAYER END +$Descr A4 11693 8268 +encoding utf-8 +Sheet 1 1 +Title "" +Date "" +Rev "" +Comp "" +Comment1 "" +Comment2 "" +Comment3 "" +Comment4 "" +$EndDescr +$Comp +L stm32-rescue:LM1117-3.3-RESCUE-stm32 U1 +U 1 1 58C431FC +P 3075 1225 +F 0 "U1" H 3175 975 50 0000 C CNN +F 1 "LM1117-3.3" H 3075 1475 50 0000 C CNN +F 2 "TO_SOT_Packages_SMD:SOT-223" H 3075 1225 50 0001 C CNN +F 3 "" H 3075 1225 50 0000 C CNN + 1 3075 1225 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:+5V #PWR010 +U 1 1 58C45269 +P 2525 1225 +F 0 "#PWR010" H 2525 1075 50 0001 C CNN +F 1 "+5V" H 2525 1365 50 0000 C CNN +F 2 "" H 2525 1225 50 0000 C CNN +F 3 "" H 2525 1225 50 0000 C CNN + 1 2525 1225 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:GND #PWR011 +U 1 1 58C453C7 +P 3075 1575 +F 0 "#PWR011" H 3075 1325 50 0001 C CNN +F 1 "GND" H 3075 1425 50 0000 C CNN +F 2 "" H 3075 1575 50 0000 C CNN +F 3 "" H 3075 1575 50 0000 C CNN + 1 3075 1575 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:CP C4 +U 1 1 58C454F6 +P 3475 1375 +F 0 "C4" H 3500 1475 50 0000 L CNN +F 1 "47u" H 3500 1275 50 0000 L CNN +F 2 "Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolder" H 3513 1225 50 0001 C CNN +F 3 "" H 3475 1375 50 0000 C CNN + 1 3475 1375 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:+3.3V #PWR012 +U 1 1 58C455CB +P 3675 1225 +F 0 "#PWR012" H 3675 1075 50 0001 C CNN +F 1 "+3.3V" H 3675 1365 50 0000 C CNN +F 2 "" H 3675 1225 50 0000 C CNN +F 3 "" H 3675 1225 50 0000 C CNN + 1 3675 1225 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:LED-RESCUE-stm32 D1 +U 1 1 5909BFFC +P 3825 1375 +F 0 "D1" H 3825 1475 50 0000 C CNN +F 1 "LED" H 3825 1275 50 0000 C CNN +F 2 "LED_THT:LED_D3.0mm" H 3825 1375 50 0001 C CNN +F 3 "" H 3825 1375 50 0000 C CNN + 1 3825 1375 + 0 -1 -1 0 +$EndComp +$Comp +L stm32-rescue:R R4 +U 1 1 5909C002 +P 3575 1675 +F 0 "R4" V 3655 1675 50 0000 C CNN +F 1 "220" V 3575 1675 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 3505 1675 50 0001 C CNN +F 3 "" H 3575 1675 50 0000 C CNN + 1 3575 1675 + 0 -1 -1 0 +$EndComp +Text Notes 2400 875 0 60 ~ 0 +3.3V MCU power source +Text Notes 1025 900 0 60 ~ 0 +Bootloader init +Text Label 1325 1950 2 60 ~ 0 +NRST +Text Label 1325 1050 0 60 ~ 0 +BOOT0 +$Comp +L stm32-rescue:R R1 +U 1 1 590D30C8 +P 1325 1350 +F 0 "R1" V 1250 1350 50 0000 C CNN +F 1 "10k" V 1325 1350 50 0000 C CNN +F 2 "Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder" V 1255 1350 50 0001 C CNN +F 3 "" H 1325 1350 50 0000 C CNN + 1 1325 1350 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:R R2 +U 1 1 590D3334 +P 1325 2200 +F 0 "R2" V 1250 2200 50 0000 C CNN +F 1 "10k" V 1325 2200 50 0000 C CNN +F 2 "Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder" V 1255 2200 50 0001 C CNN +F 3 "" H 1325 2200 50 0000 C CNN + 1 1325 2200 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:C C2 +U 1 1 590D4150 +P 1925 1350 +F 0 "C2" H 1950 1450 50 0000 L CNN +F 1 "0.1" H 1950 1250 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 1963 1200 50 0001 C CNN +F 3 "" H 1925 1350 50 0000 C CNN + 1 1925 1350 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:C C1 +U 1 1 590D4832 +P 1875 2200 +F 0 "C1" H 1900 2300 50 0000 L CNN +F 1 "0.1" H 1900 2100 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 1913 2050 50 0001 C CNN +F 3 "" H 1875 2200 50 0000 C CNN + 1 1875 2200 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:SW_Push SW2 +U 1 1 5909F6B6 +P 1625 1350 +F 0 "SW2" V 1775 1175 50 0000 L CNN +F 1 "Boot" H 1625 1290 50 0000 C CNN +F 2 "Button_Switch_THT:SW_PUSH_6mm" H 1625 1550 50 0001 C CNN +F 3 "" H 1625 1550 50 0000 C CNN + 1 1625 1350 + 0 1 1 0 +$EndComp +$Comp +L stm32-rescue:SW_Push SW1 +U 1 1 590A0134 +P 1575 2200 +F 0 "SW1" V 1725 2025 50 0000 L CNN +F 1 "Reset" H 1575 2140 50 0000 C CNN +F 2 "Button_Switch_THT:SW_PUSH_6mm" H 1575 2400 50 0001 C CNN +F 3 "" H 1575 2400 50 0000 C CNN + 1 1575 2200 + 0 1 1 0 +$EndComp +$Comp +L stm32-rescue:GND #PWR01 +U 1 1 590A03AF +P 1325 1550 +F 0 "#PWR01" H 1325 1300 50 0001 C CNN +F 1 "GND" H 1325 1400 50 0000 C CNN +F 2 "" H 1325 1550 50 0000 C CNN +F 3 "" H 1325 1550 50 0000 C CNN + 1 1325 1550 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:+3.3V #PWR04 +U 1 1 590A1E6C +P 1775 1600 +F 0 "#PWR04" H 1775 1450 50 0001 C CNN +F 1 "+3.3V" H 1775 1740 50 0000 C CNN +F 2 "" H 1775 1600 50 0000 C CNN +F 3 "" H 1775 1600 50 0000 C CNN + 1 1775 1600 + -1 0 0 1 +$EndComp +$Comp +L stm32-rescue:+3.3V #PWR02 +U 1 1 590A465B +P 1325 2450 +F 0 "#PWR02" H 1325 2300 50 0001 C CNN +F 1 "+3.3V" H 1325 2590 50 0000 C CNN +F 2 "" H 1325 2450 50 0000 C CNN +F 3 "" H 1325 2450 50 0000 C CNN + 1 1325 2450 + -1 0 0 1 +$EndComp +$Comp +L stm32-rescue:GND #PWR03 +U 1 1 590A509B +P 1725 2450 +F 0 "#PWR03" H 1725 2200 50 0001 C CNN +F 1 "GND" H 1725 2300 50 0000 C CNN +F 2 "" H 1725 2450 50 0000 C CNN +F 3 "" H 1725 2450 50 0000 C CNN + 1 1725 2450 + 1 0 0 -1 +$EndComp +Wire Wire Line + 3075 1575 3075 1525 +Wire Wire Line + 3075 1525 3425 1525 +Wire Wire Line + 3375 1225 3475 1225 +Connection ~ 3475 1225 +Wire Wire Line + 3725 1675 3825 1675 +Wire Wire Line + 3825 1675 3825 1525 +Wire Wire Line + 3425 1675 3425 1525 +Connection ~ 3425 1525 +Connection ~ 3675 1225 +Wire Notes Line + 2375 1800 2375 750 +Wire Wire Line + 1325 1550 1325 1500 +Wire Wire Line + 1325 1050 1325 1150 +Wire Wire Line + 1925 1150 1925 1200 +Wire Wire Line + 1325 1150 1625 1150 +Connection ~ 1625 1150 +Connection ~ 1325 1150 +Wire Wire Line + 1625 1550 1775 1550 +Wire Wire Line + 1925 1550 1925 1500 +Wire Wire Line + 1775 1600 1775 1550 +Connection ~ 1775 1550 +Wire Wire Line + 1325 1950 1325 2000 +Wire Wire Line + 1325 2450 1325 2350 +Wire Wire Line + 1325 2000 1575 2000 +Connection ~ 1325 2000 +Wire Wire Line + 1875 2000 1875 2050 +Connection ~ 1575 2000 +Wire Wire Line + 1575 2400 1725 2400 +Wire Wire Line + 1875 2400 1875 2350 +Wire Wire Line + 1725 2450 1725 2400 +Connection ~ 1725 2400 +Wire Notes Line + 925 750 925 2700 +Wire Notes Line + 925 2700 2275 2700 +Wire Notes Line + 2275 2700 2275 750 +Wire Notes Line + 2275 750 925 750 +Wire Wire Line + 3375 1175 3375 1225 +Connection ~ 3375 1225 +Connection ~ 3075 1525 +Wire Wire Line + 3475 1225 3675 1225 +Wire Wire Line + 3425 1525 3475 1525 +Wire Wire Line + 3675 1225 3825 1225 +Wire Wire Line + 1625 1150 1925 1150 +Wire Wire Line + 1325 1150 1325 1200 +Wire Wire Line + 1775 1550 1925 1550 +Wire Wire Line + 1325 2000 1325 2050 +Wire Wire Line + 1575 2000 1875 2000 +Wire Wire Line + 1725 2400 1875 2400 +Wire Wire Line + 2525 1225 2775 1225 +Wire Wire Line + 3375 1225 3375 1275 +$Comp +L stm32-rescue:STM32F042C6Tx U2 +U 1 1 5CDF834A +P 5700 4050 +F 0 "U2" H 2700 5775 50 0000 L BNN +F 1 "STM32F042C6Tx" H 8700 5775 50 0000 R BNN +F 2 "Package_DIP:DIP-48_W15.24mm_Socket_LongPads" H 8700 5725 50 0001 R TNN +F 3 "" H 5700 4050 50 0000 C CNN + 1 5700 4050 + 1 0 0 -1 +$EndComp +Wire Wire Line + 5700 2250 5800 2250 +Connection ~ 5700 2250 +Wire Wire Line + 5500 2250 5600 2250 +Connection ~ 5600 2250 +$Comp +L stm32-rescue:C C7 +U 1 1 5CE67302 +P 5400 6150 +F 0 "C7" H 5425 6250 50 0000 L CNN +F 1 "0.1" H 5425 6050 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 5438 6000 50 0001 C CNN +F 3 "" H 5400 6150 50 0000 C CNN + 1 5400 6150 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:C C8 +U 1 1 5CE67308 +P 5700 6150 +F 0 "C8" H 5725 6250 50 0000 L CNN +F 1 "0.1" H 5725 6050 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 5738 6000 50 0001 C CNN +F 3 "" H 5700 6150 50 0000 C CNN + 1 5700 6150 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:C C9 +U 1 1 5CE6730E +P 6000 6150 +F 0 "C9" H 6025 6250 50 0000 L CNN +F 1 "0.1" H 6025 6050 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 6038 6000 50 0001 C CNN +F 3 "" H 6000 6150 50 0000 C CNN + 1 6000 6150 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:+3.3V #PWR019 +U 1 1 5CE67314 +P 6700 6300 +F 0 "#PWR019" H 6700 6150 50 0001 C CNN +F 1 "+3.3V" H 6700 6440 50 0000 C CNN +F 2 "" H 6700 6300 50 0000 C CNN +F 3 "" H 6700 6300 50 0000 C CNN + 1 6700 6300 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:GND #PWR015 +U 1 1 5CE6731A +P 5050 6000 +F 0 "#PWR015" H 5050 5750 50 0001 C CNN +F 1 "GND" H 5050 5850 50 0000 C CNN +F 2 "" H 5050 6000 50 0000 C CNN +F 3 "" H 5050 6000 50 0000 C CNN + 1 5050 6000 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:C C10 +U 1 1 5CE67321 +P 6300 6150 +F 0 "C10" H 6325 6250 50 0000 L CNN +F 1 "0.1" H 6325 6050 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 6338 6000 50 0001 C CNN +F 3 "" H 6300 6150 50 0000 C CNN + 1 6300 6150 + 1 0 0 -1 +$EndComp +Wire Wire Line + 5700 6000 5700 5850 +Wire Wire Line + 5050 6000 5400 6000 +Connection ~ 5700 6000 +Wire Wire Line + 5400 6300 5700 6300 +Connection ~ 5700 6300 +Connection ~ 5400 6000 +Connection ~ 6000 6300 +Connection ~ 6000 6000 +Wire Wire Line + 6300 6300 6000 6300 +Connection ~ 6300 6300 +Wire Wire Line + 5700 6000 6000 6000 +Wire Wire Line + 5700 6300 6000 6300 +Wire Wire Line + 5400 6000 5700 6000 +Wire Wire Line + 6000 6000 6300 6000 +Wire Wire Line + 6300 6300 6700 6300 +Wire Wire Line + 5500 5850 5600 5850 +Wire Wire Line + 5600 5850 5700 5850 +Connection ~ 5600 5850 +Connection ~ 5700 5850 +Wire Wire Line + 5700 5850 5800 5850 +$Comp +L stm32-rescue:USB_A-RESCUE-stm32 P2 +U 1 1 5CEABE76 +P 10800 5175 +F 0 "P2" V 11000 5125 50 0000 C CNN +F 1 "USB_B" V 10500 5175 50 0000 C CNN +F 2 "Connectors_USB:USB_Micro-B_Wuerth_629105150521" V 10750 5075 50 0001 C CNN +F 3 "" V 10750 5075 50 0000 C CNN + 1 10800 5175 + 0 1 1 0 +$EndComp +$Comp +L stm32-rescue:GND #PWR022 +U 1 1 5CEABE82 +P 9275 5125 +F 0 "#PWR022" H 9275 4875 50 0001 C CNN +F 1 "GND" H 9275 4975 50 0000 C CNN +F 2 "" H 9275 5125 50 0000 C CNN +F 3 "" H 9275 5125 50 0000 C CNN + 1 9275 5125 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:CONN_01X03 P1 +U 1 1 5CEABE88 +P 7350 1225 +F 0 "P1" H 7350 1425 50 0000 C CNN +F 1 "USART1" V 7450 1225 50 0000 C CNN +F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 7350 1225 50 0001 C CNN +F 3 "" H 7350 1225 50 0000 C CNN + 1 7350 1225 + 1 0 0 1 +$EndComp +$Comp +L stm32-rescue:GND #PWR020 +U 1 1 5CEABE8E +P 7150 1375 +F 0 "#PWR020" H 7150 1125 50 0001 C CNN +F 1 "GND" H 7150 1225 50 0000 C CNN +F 2 "" H 7150 1375 50 0000 C CNN +F 3 "" H 7150 1375 50 0000 C CNN + 1 7150 1375 + -1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:PWR_FLAG #FLG01 +U 1 1 5CEABE94 +P 10500 4825 +F 0 "#FLG01" H 10500 4920 50 0001 C CNN +F 1 "PWR_FLAG" H 10500 5005 50 0001 C CNN +F 2 "" H 10500 4825 50 0000 C CNN +F 3 "" H 10500 4825 50 0000 C CNN + 1 10500 4825 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:GND #PWR026 +U 1 1 5CEABE9A +P 10900 5525 +F 0 "#PWR026" H 10900 5275 50 0001 C CNN +F 1 "GND" H 10900 5375 50 0000 C CNN +F 2 "" H 10900 5525 50 0000 C CNN +F 3 "" H 10900 5525 50 0000 C CNN + 1 10900 5525 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:PWR_FLAG #FLG02 +U 1 1 5CEABEA0 +P 10650 5525 +F 0 "#FLG02" H 10650 5620 50 0001 C CNN +F 1 "PWR_FLAG" H 10650 5705 50 0001 C CNN +F 2 "" H 10650 5525 50 0000 C CNN +F 3 "" H 10650 5525 50 0000 C CNN + 1 10650 5525 + -1 0 0 1 +$EndComp +$Comp +L stm32-rescue:R R7 +U 1 1 5CEABEA6 +P 9300 4600 +F 0 "R7" V 9380 4600 50 0000 C CNN +F 1 "22" V 9300 4600 50 0000 C CNN +F 2 "Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder" V 9230 4600 50 0001 C CNN +F 3 "" H 9300 4600 50 0001 C CNN + 1 9300 4600 + 0 1 1 0 +$EndComp +$Comp +L stm32-rescue:R R8 +U 1 1 5CEABEAC +P 9300 5600 +F 0 "R8" V 9380 5600 50 0000 C CNN +F 1 "22" V 9300 5600 50 0000 C CNN +F 2 "Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder" V 9230 5600 50 0001 C CNN +F 3 "" H 9300 5600 50 0001 C CNN + 1 9300 5600 + 0 1 1 0 +$EndComp +Wire Wire Line + 8800 5050 9150 5050 +Wire Wire Line + 9150 5150 8800 5150 +Wire Wire Line + 10500 4975 10500 4850 +Wire Wire Line + 7150 1325 7150 1375 +Wire Wire Line + 10900 5525 10900 5475 +$Comp +L Power_Protection:SP0505BAHT D2 +U 1 1 5CEBDB90 +P 5975 1325 +F 0 "D2" H 6050 1175 50 0000 L CNN +F 1 "IP4220CZ6" H 5475 1175 50 0000 L CNN +F 2 "TO_SOT_Packages_SMD:SOT-23-6_Handsoldering" H 6275 1275 50 0001 L CNN +F 3 "http://www.littelfuse.com/~/media/files/littelfuse/technical%20resources/documents/data%20sheets/sp05xxba.pdf" H 6100 1450 50 0001 C CNN + 1 5975 1325 + 1 0 0 -1 +$EndComp +Wire Wire Line + 9150 4600 9150 5050 +Wire Wire Line + 9450 4600 9675 4600 +Wire Wire Line + 9150 5150 9150 5600 +Wire Wire Line + 9450 5600 9675 5600 +Wire Wire Line + 9275 5125 9275 5100 +Wire Wire Line + 10900 5525 10650 5525 +Wire Wire Line + 10500 5525 10500 5275 +Connection ~ 10900 5525 +Connection ~ 10650 5525 +Wire Wire Line + 10650 5525 10500 5525 +Wire Wire Line + 10500 4850 10575 4850 +Connection ~ 10500 4850 +Wire Wire Line + 10500 4850 10500 4825 +$Comp +L stm32-rescue:+5V #PWR025 +U 1 1 5CFE3C1B +P 10575 4850 +F 0 "#PWR025" H 10575 4700 50 0001 C CNN +F 1 "+5V" H 10575 4990 50 0000 C CNN +F 2 "" H 10575 4850 50 0000 C CNN +F 3 "" H 10575 4850 50 0000 C CNN + 1 10575 4850 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:+5V #PWR023 +U 1 1 5CFEBAB2 +P 10275 5100 +F 0 "#PWR023" H 10275 4950 50 0001 C CNN +F 1 "+5V" H 10275 5240 50 0000 C CNN +F 2 "" H 10275 5100 50 0000 C CNN +F 3 "" H 10275 5100 50 0000 C CNN + 1 10275 5100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 9875 4600 10400 4600 +Wire Wire Line + 10400 4600 10400 5075 +Wire Wire Line + 10400 5075 10500 5075 +Wire Wire Line + 9875 5600 10400 5600 +Wire Wire Line + 10400 5600 10400 5175 +Wire Wire Line + 10400 5175 10500 5175 +$Comp +L Power_Protection:USBLC6-2SC6 U3 +U 1 1 5CED0250 +P 9775 5100 +F 0 "U3" V 10500 5050 50 0000 L CNN +F 1 "USBLC6-2SC6" V 10375 4825 50 0000 L CNN +F 2 "TO_SOT_Packages_SMD:SOT-23-6_Handsoldering" H 9025 5500 50 0001 C CNN +F 3 "http://www2.st.com/resource/en/datasheet/CD00050750.pdf" H 9975 5450 50 0001 C CNN + 1 9775 5100 + 0 1 1 0 +$EndComp +$Comp +L stm32-rescue:+3.3V #PWR016 +U 1 1 5D0430DC +P 5600 2250 +F 0 "#PWR016" H 5600 2100 50 0001 C CNN +F 1 "+3.3V" H 5600 2390 50 0000 C CNN +F 2 "" H 5600 2250 50 0000 C CNN +F 3 "" H 5600 2250 50 0000 C CNN + 1 5600 2250 + 1 0 0 -1 +$EndComp +Wire Wire Line + 5600 2250 5700 2250 +$Comp +L stm32-rescue:+3.3V #PWR09 +U 1 1 5D058C02 +P 2500 2950 +F 0 "#PWR09" H 2500 2800 50 0001 C CNN +F 1 "+3.3V" H 2500 3090 50 0000 C CNN +F 2 "" H 2500 2950 50 0000 C CNN +F 3 "" H 2500 2950 50 0000 C CNN + 1 2500 2950 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:C C3 +U 1 1 5D05A623 +P 2275 2950 +F 0 "C3" H 2300 3050 50 0000 L CNN +F 1 "0.1" H 2300 2850 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 2313 2800 50 0001 C CNN +F 3 "" H 2275 2950 50 0000 C CNN + 1 2275 2950 + 0 1 1 0 +$EndComp +Wire Wire Line + 2500 2950 2600 2950 +Wire Wire Line + 2425 2950 2500 2950 +Connection ~ 2500 2950 +$Comp +L stm32-rescue:GND #PWR07 +U 1 1 5D07CCE1 +P 2125 3050 +F 0 "#PWR07" H 2125 2800 50 0001 C CNN +F 1 "GND" H 2125 2900 50 0000 C CNN +F 2 "" H 2125 3050 50 0000 C CNN +F 3 "" H 2125 3050 50 0000 C CNN + 1 2125 3050 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2125 3050 2125 2950 +Text Label 2600 3350 2 60 ~ 0 +BOOT0 +Text Label 2600 2750 2 60 ~ 0 +NRST +$Comp +L stm32-rescue:R R3 +U 1 1 5D1076F1 +P 2350 4150 +F 0 "R3" V 2430 4150 50 0000 C CNN +F 1 "100k" V 2350 4150 50 0000 C CNN +F 2 "Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder" V 2280 4150 50 0001 C CNN +F 3 "" H 2350 4150 50 0000 C CNN + 1 2350 4150 + 0 1 1 0 +$EndComp +Wire Wire Line + 2500 4150 2600 4150 +$Comp +L stm32-rescue:GND #PWR08 +U 1 1 5D1293D9 +P 2150 4150 +F 0 "#PWR08" H 2150 3900 50 0001 C CNN +F 1 "GND" H 2150 4000 50 0000 C CNN +F 2 "" H 2150 4150 50 0000 C CNN +F 3 "" H 2150 4150 50 0000 C CNN + 1 2150 4150 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2150 4150 2200 4150 +Wire Notes Line + 2375 750 4025 750 +Wire Notes Line + 4025 750 4025 1800 +Wire Notes Line + 4025 1800 2375 1800 +$Comp +L stm32-rescue:LED-RESCUE-stm32 D4 +U 1 1 5D1AC2F3 +P 8025 1425 +F 0 "D4" H 8025 1525 50 0000 C CNN +F 1 "LED" H 8025 1325 50 0000 C CNN +F 2 "LED_THT:LED_D5.0mm" H 8025 1425 50 0001 C CNN +F 3 "" H 8025 1425 50 0000 C CNN + 1 8025 1425 + -1 0 0 1 +$EndComp +$Comp +L stm32-rescue:LED-RESCUE-stm32 D3 +U 1 1 5D1AD231 +P 8025 1125 +F 0 "D3" H 8025 1225 50 0000 C CNN +F 1 "LED" H 8025 1025 50 0000 C CNN +F 2 "LED_THT:LED_D5.0mm" H 8025 1125 50 0001 C CNN +F 3 "" H 8025 1125 50 0000 C CNN + 1 8025 1125 + -1 0 0 1 +$EndComp +Text Label 2600 3150 2 50 ~ 0 +OSC_IN +Text Label 2600 3250 2 50 ~ 0 +OSC_OUT +Text Label 4500 1225 2 50 ~ 0 +OSC_IN +Text Label 4950 1225 0 50 ~ 0 +OSC_OUT +$Comp +L Device:Crystal Y1 +U 1 1 5D1F4994 +P 4725 1225 +F 0 "Y1" H 4725 1493 50 0000 C CNN +F 1 "8MHz" H 4725 1402 50 0000 C CNN +F 2 "Crystal:Crystal_HC49-U_Vertical" H 4725 1225 50 0001 C CNN +F 3 "~" H 4725 1225 50 0001 C CNN + 1 4725 1225 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:C C6 +U 1 1 5D1F64B1 +P 4950 1375 +F 0 "C6" H 4975 1475 50 0000 L CNN +F 1 "12" H 4975 1275 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 4988 1225 50 0001 C CNN +F 3 "" H 4950 1375 50 0000 C CNN + 1 4950 1375 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:C C5 +U 1 1 5D1F7471 +P 4500 1375 +F 0 "C5" H 4525 1475 50 0000 L CNN +F 1 "12" H 4525 1275 50 0000 L CNN +F 2 "Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder" H 4538 1225 50 0001 C CNN +F 3 "" H 4500 1375 50 0000 C CNN + 1 4500 1375 + -1 0 0 -1 +$EndComp +Wire Wire Line + 4500 1225 4575 1225 +Wire Wire Line + 4950 1225 4875 1225 +$Comp +L stm32-rescue:GND #PWR013 +U 1 1 5D21553E +P 4500 1525 +F 0 "#PWR013" H 4500 1275 50 0001 C CNN +F 1 "GND" H 4500 1375 50 0000 C CNN +F 2 "" H 4500 1525 50 0000 C CNN +F 3 "" H 4500 1525 50 0000 C CNN + 1 4500 1525 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:GND #PWR014 +U 1 1 5D215991 +P 4950 1525 +F 0 "#PWR014" H 4950 1275 50 0001 C CNN +F 1 "GND" H 4950 1375 50 0000 C CNN +F 2 "" H 4950 1525 50 0000 C CNN +F 3 "" H 4950 1525 50 0000 C CNN + 1 4950 1525 + 1 0 0 -1 +$EndComp +Text Notes 4250 900 0 50 ~ 0 +Crystal for STM32F103 +Wire Notes Line + 4100 750 4100 1800 +Wire Notes Line + 4100 1800 5325 1800 +Wire Notes Line + 5325 1800 5325 750 +Wire Notes Line + 5325 750 4100 750 +Text Label 8800 4850 0 50 ~ 0 +Tx +Text Label 8800 4950 0 50 ~ 0 +Rx +Text Label 7150 1125 2 50 ~ 0 +Rx +Text Label 7150 1225 2 50 ~ 0 +Tx +$Comp +L stm32-rescue:GND #PWR017 +U 1 1 5D29EFB9 +P 5975 1525 +F 0 "#PWR017" H 5975 1275 50 0001 C CNN +F 1 "GND" H 5975 1375 50 0000 C CNN +F 2 "" H 5975 1525 50 0000 C CNN +F 3 "" H 5975 1525 50 0000 C CNN + 1 5975 1525 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:+3.3V #PWR018 +U 1 1 5D2A4F1D +P 6075 975 +F 0 "#PWR018" H 6075 825 50 0001 C CNN +F 1 "+3.3V" H 6075 1115 50 0000 C CNN +F 2 "" H 6075 975 50 0000 C CNN +F 3 "" H 6075 975 50 0000 C CNN + 1 6075 975 + 1 0 0 -1 +$EndComp +Text Label 5775 1125 1 50 ~ 0 +Rx +Text Label 5875 1125 1 50 ~ 0 +Tx +$Comp +L stm32-rescue:SW_Push SW3 +U 1 1 5D2D9A50 +P 6425 1325 +F 0 "SW3" H 6475 1425 50 0000 L CNN +F 1 "Button0" H 6425 1265 50 0000 C CNN +F 2 "Button_Switch_THT:SW_PUSH_6mm" H 6425 1525 50 0001 C CNN +F 3 "" H 6425 1525 50 0000 C CNN + 1 6425 1325 + 0 1 1 0 +$EndComp +$Comp +L stm32-rescue:SW_Push SW4 +U 1 1 5D2E5A00 +P 6700 1325 +F 0 "SW4" H 6750 1425 50 0000 L CNN +F 1 "Button1" H 6700 1265 50 0000 C CNN +F 2 "Button_Switch_THT:SW_PUSH_6mm" H 6700 1525 50 0001 C CNN +F 3 "" H 6700 1525 50 0000 C CNN + 1 6700 1325 + 0 1 1 0 +$EndComp +Wire Wire Line + 6700 1525 6425 1525 +Wire Wire Line + 6425 1525 5975 1525 +Connection ~ 6425 1525 +Connection ~ 5975 1525 +Wire Wire Line + 6425 1125 6325 1125 +Wire Wire Line + 6700 1125 6700 1075 +Text Label 6700 1075 0 50 ~ 0 +Button0 +Text Label 6325 1050 0 50 ~ 0 +Button1 +Wire Wire Line + 6325 1050 6325 1125 +Text Label 8800 5350 0 50 ~ 0 +Button0 +Text Label 8800 5450 0 50 ~ 0 +Button1 +Wire Wire Line + 6075 1125 6075 975 +Wire Notes Line + 5400 750 5400 1800 +Wire Notes Line + 5400 1800 7550 1800 +Wire Notes Line + 7550 1800 7550 750 +Wire Notes Line + 7550 750 5400 750 +$Comp +L stm32-rescue:+3.3V #PWR021 +U 1 1 5D3D2861 +P 7775 1100 +F 0 "#PWR021" H 7775 950 50 0001 C CNN +F 1 "+3.3V" H 7775 1240 50 0000 C CNN +F 2 "" H 7775 1100 50 0000 C CNN +F 3 "" H 7775 1100 50 0000 C CNN + 1 7775 1100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 7775 1100 7775 1125 +Wire Wire Line + 7775 1425 7875 1425 +Wire Wire Line + 7875 1125 7775 1125 +Connection ~ 7775 1125 +Wire Wire Line + 7775 1125 7775 1425 +$Comp +L stm32-rescue:R R5 +U 1 1 5D3F2F98 +P 8325 1125 +F 0 "R5" V 8405 1125 50 0000 C CNN +F 1 "220" V 8325 1125 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 8255 1125 50 0001 C CNN +F 3 "" H 8325 1125 50 0000 C CNN + 1 8325 1125 + 0 -1 -1 0 +$EndComp +$Comp +L stm32-rescue:R R6 +U 1 1 5D3F3639 +P 8325 1425 +F 0 "R6" V 8405 1425 50 0000 C CNN +F 1 "220" V 8325 1425 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 8255 1425 50 0001 C CNN +F 3 "" H 8325 1425 50 0000 C CNN + 1 8325 1425 + 0 -1 -1 0 +$EndComp +Text Label 8475 1125 0 50 ~ 0 +LED0 +Text Label 8475 1425 0 50 ~ 0 +LED1 +Wire Notes Line + 7650 750 8750 750 +Wire Notes Line + 8750 750 8750 1550 +Wire Notes Line + 8750 1550 7650 1550 +Wire Notes Line + 7650 1550 7650 750 +NoConn ~ 2600 3550 +NoConn ~ 2600 3650 +NoConn ~ 2600 3750 +Text Label 8800 3950 0 50 ~ 0 +LED1 +Text Label 8800 4350 0 50 ~ 0 +LED0 +NoConn ~ 8800 4050 +NoConn ~ 8800 4150 +NoConn ~ 8800 4250 +NoConn ~ 8800 4450 +NoConn ~ 8800 4550 +NoConn ~ 8800 4650 +NoConn ~ 2600 5450 +NoConn ~ 2600 5350 +NoConn ~ 2600 5250 +NoConn ~ 2600 5150 +NoConn ~ 2600 5050 +NoConn ~ 2600 4950 +NoConn ~ 2600 4850 +NoConn ~ 2600 4750 +NoConn ~ 2600 4650 +NoConn ~ 2600 4550 +NoConn ~ 2600 4450 +NoConn ~ 2600 4350 +NoConn ~ 2600 4250 +NoConn ~ 2600 4050 +$Comp +L stm32-rescue:R R9 +U 1 1 5D5EA0B2 +P 10400 5750 +F 0 "R9" V 10480 5750 50 0000 C CNN +F 1 "1k5" V 10400 5750 50 0000 C CNN +F 2 "Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder" V 10330 5750 50 0001 C CNN +F 3 "" H 10400 5750 50 0001 C CNN + 1 10400 5750 + -1 0 0 1 +$EndComp +$Comp +L Transistor_BJT:DTA114Y Q1 +U 1 1 5D5EB488 +P 10300 6100 +F 0 "Q1" H 10488 6146 50 0000 L CNN +F 1 "DTA114Y" H 10488 6055 50 0000 L CNN +F 2 "TO_SOT_Packages_SMD:SOT-323_SC-70_Handsoldering" H 10300 6100 50 0001 L CNN +F 3 "" H 10300 6100 50 0001 L CNN + 1 10300 6100 + 1 0 0 -1 +$EndComp +Connection ~ 10400 5600 +Text Label 10050 6100 2 50 ~ 0 +USB_PU +Text Label 8800 5250 0 50 ~ 0 +USB_PU +$Comp +L Device:R_POT RV1 +U 1 1 5D64D13D +P 1900 3950 +F 0 "RV1" H 1830 3996 50 0000 R CNN +F 1 "10k" H 1830 3905 50 0000 R CNN +F 2 "my_footprints:Potentiometer" H 1900 3950 50 0001 C CNN +F 3 "~" H 1900 3950 50 0001 C CNN + 1 1900 3950 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2050 3950 2600 3950 +$Comp +L stm32-rescue:+3.3V #PWR05 +U 1 1 5D660ADB +P 1900 3800 +F 0 "#PWR05" H 1900 3650 50 0001 C CNN +F 1 "+3.3V" H 1900 3940 50 0000 C CNN +F 2 "" H 1900 3800 50 0000 C CNN +F 3 "" H 1900 3800 50 0000 C CNN + 1 1900 3800 + 1 0 0 -1 +$EndComp +$Comp +L stm32-rescue:GND #PWR06 +U 1 1 5D662CB0 +P 1900 4100 +F 0 "#PWR06" H 1900 3850 50 0001 C CNN +F 1 "GND" H 1900 3950 50 0000 C CNN +F 2 "" H 1900 4100 50 0000 C CNN +F 3 "" H 1900 4100 50 0000 C CNN + 1 1900 4100 + 1 0 0 -1 +$EndComp +NoConn ~ 8800 4750 +Wire Wire Line + 6175 1125 6175 1075 +Wire Wire Line + 6175 1075 6700 1075 +Wire Wire Line + 6325 1050 5975 1050 +Wire Wire Line + 5975 1050 5975 1125 +$Comp +L stm32-rescue:+3.3V #PWR? +U 1 1 5D77910C +P 10400 6300 +F 0 "#PWR?" H 10400 6150 50 0001 C CNN +F 1 "+3.3V" H 10400 6440 50 0000 C CNN +F 2 "" H 10400 6300 50 0000 C CNN +F 3 "" H 10400 6300 50 0000 C CNN + 1 10400 6300 + -1 0 0 1 +$EndComp +$EndSCHEMATC diff --git a/F0_F1-LQFP48_testboard/sym-lib-table b/F0_F1-LQFP48_testboard/sym-lib-table new file mode 100644 index 0000000..366fae1 --- /dev/null +++ b/F0_F1-LQFP48_testboard/sym-lib-table @@ -0,0 +1,8 @@ +(sym_lib_table + (lib (name stm32-rescue)(type Legacy)(uri ${KIPRJMOD}/stm32-rescue.lib)(options "")(descr "")) + (lib (name stm32)(type Legacy)(uri /home/eddy/kicad/Kicad-Libraries/library/stm32.lib)(options "")(descr "")) + (lib (name vreg)(type Legacy)(uri /home/eddy/kicad/Kicad-Libraries/library/vreg.lib)(options "")(descr "")) + (lib (name elements)(type Legacy)(uri ${KIPRJMOD}/elements.lib)(options "")(descr "")) + (lib (name switches)(type Legacy)(uri /home/eddy/kicad/Kicad-Libraries/library/switches.lib)(options "")(descr "")) + (lib (name acs712)(type Legacy)(uri ${KIPRJMOD}/acs712.lib)(options "")(descr "")) +) diff --git a/F1-nolib/F1_testbrd/Makefile b/F1-nolib/F1_testbrd/Makefile new file mode 100644 index 0000000..fc49793 --- /dev/null +++ b/F1-nolib/F1_testbrd/Makefile @@ -0,0 +1,139 @@ +BINARY = pl2303 +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 115200 +# MCU FAMILY +FAMILY ?= F1 +# MCU code +MCU ?= F103xB +# density (stm32f10x.h, lines 70-84) +DENSITY ?= MD +# change this linking script depending on particular MCU model, +LDSCRIPT ?= stm32f103xB.ld +# debug +DEFS = -DEBUG + +INDEPENDENT_HEADERS= + +FP_FLAGS ?= -msoft-float +ASM_FLAGS ?= -mthumb -mcpu=cortex-m3 +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +#PREFIX ?= arm-none-eabi +# gcc from arm web site +PREFIX ?= /opt/bin/arm-none-eabi +TOOLCHLIB ?= /opt/arm-none-eabi/lib +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +# don't replace ld with gcc: the binary size would be much greater!! +LD := $(PREFIX)-ld +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +SIZE := $(PREFIX)-size +OBJCOPY := $(PREFIX)-objcopy +OBJDUMP := $(PREFIX)-objdump +GDB := $(PREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR = mk +#SRC := $(wildcard *.c) +SRC = adc.c hardware.c main.c usart.c +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +# dependencies: we need them to recompile files if their headers-dependencies changed +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -D__thumb2__=1 -MD +CFLAGS += -Wall -Werror -Wextra -Wshadow +CFLAGS += -fno-common -ffunction-sections -fdata-sections + +############################################################################### +# Linker flags +LDFLAGS += -nostartfiles --static +LDFLAGS += -L$(LIB_DIR) -L$(TOOLCHLIB) +LDFLAGS += -T$(LDSCRIPT) + +############################################################################### +# Used libraries +LDLIBS += -lc $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) -DSTM32F10X_$(DENSITY) + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: bin list size + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +size: $(ELF) + $(SIZE) $(ELF) + +clean: + @echo " CLEAN" + $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) + @rmdir $(OBJDIR) 2>/dev/null || true + + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +.PHONY: clean flash boot diff --git a/F1-nolib/F1_testbrd/Readme.md b/F1-nolib/F1_testbrd/Readme.md new file mode 100644 index 0000000..f349a26 --- /dev/null +++ b/F1-nolib/F1_testbrd/Readme.md @@ -0,0 +1 @@ +Simple test for STM32F103, blinking PA0/PA1, two user buttons (PA14 and PA15) and USB (PL2303 emulator) <> USART1 echo. diff --git a/F1-nolib/F1_testbrd/adc.c b/F1-nolib/F1_testbrd/adc.c new file mode 100644 index 0000000..188067d --- /dev/null +++ b/F1-nolib/F1_testbrd/adc.c @@ -0,0 +1,72 @@ +/* + * This file is part of the Chiller project. + * Copyright 2018 Edward V. Emelianov . + * + * This program 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. + * + * This program 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 this program. If not, see . + */ + +#include "adc.h" + +/** + * @brief ADC_array - array for ADC channels with median filtering: + * 0 - Rvar + * 1 - internal Tsens + * 2 - Vref + */ +uint16_t ADC_array[NUMBER_OF_ADC_CHANNELS*9]; + +/** + * @brief getADCval - calculate median value for `nch` channel + * @param nch - number of channel + * @return + */ +uint16_t getADCval(int nch){ + int i, addr = nch; + register uint16_t temp; +#define PIX_SORT(a,b) { if ((a)>(b)) PIX_SWAP((a),(b)); } +#define PIX_SWAP(a,b) { temp=(a);(a)=(b);(b)=temp; } + uint16_t p[9]; + for(i = 0; i < 9; ++i, addr += NUMBER_OF_ADC_CHANNELS) // first we should prepare array for optmed + p[i] = ADC_array[addr]; + PIX_SORT(p[1], p[2]) ; PIX_SORT(p[4], p[5]) ; PIX_SORT(p[7], p[8]) ; + PIX_SORT(p[0], p[1]) ; PIX_SORT(p[3], p[4]) ; PIX_SORT(p[6], p[7]) ; + PIX_SORT(p[1], p[2]) ; PIX_SORT(p[4], p[5]) ; PIX_SORT(p[7], p[8]) ; + PIX_SORT(p[0], p[3]) ; PIX_SORT(p[5], p[8]) ; PIX_SORT(p[4], p[7]) ; + PIX_SORT(p[3], p[6]) ; PIX_SORT(p[1], p[4]) ; PIX_SORT(p[2], p[5]) ; + PIX_SORT(p[4], p[7]) ; PIX_SORT(p[4], p[2]) ; PIX_SORT(p[6], p[4]) ; + PIX_SORT(p[4], p[2]) ; + return p[4]; +#undef PIX_SORT +#undef PIX_SWAP +} + +// return MCU temperature (degrees of celsius * 10) +int32_t getMCUtemp(){ + // Temp = (V25 - Vsense)/Avg_Slope + 25 + // V_25 = 1.45V, Slope = 4.3e-3 + int32_t Vsense = getVdd() * getADCval(1); + Vsense /= 4096; + int32_t temperature = 145 - Vsense; + temperature *= 233; + temperature /= 10; // convert from *100 to *10 + temperature += 250; + return(temperature); +} + +// return Vdd * 100 (V) +uint32_t getVdd(){ + uint32_t vdd = ((uint32_t) *VREFINT_CAL_ADDR) * (uint32_t)300; // 3.0V + vdd /= getADCval(2); + return vdd; +} diff --git a/F1-nolib/F1_testbrd/adc.h b/F1-nolib/F1_testbrd/adc.h new file mode 100644 index 0000000..82cba76 --- /dev/null +++ b/F1-nolib/F1_testbrd/adc.h @@ -0,0 +1,29 @@ +/* + * This file is part of the Chiller project. + * Copyright 2018 Edward V. Emelianov . + * + * This program 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. + * + * This program 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 this program. If not, see . + */ +#ifndef ADC_H +#define ADC_H +#include "stm32f1.h" + +#define NUMBER_OF_ADC_CHANNELS (3) + +extern uint16_t ADC_array[]; +int32_t getMCUtemp(); +uint32_t getVdd(); +uint16_t getADCval(int nch); + +#endif // ADC_H diff --git a/F1-nolib/F1_testbrd/hardware.c b/F1-nolib/F1_testbrd/hardware.c new file mode 100644 index 0000000..bb7179c --- /dev/null +++ b/F1-nolib/F1_testbrd/hardware.c @@ -0,0 +1,76 @@ +/* + * geany_encoding=koi8-r + * hardware.c - hardware-dependent macros & functions + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#include "adc.h" +#include "hardware.h" +#include "usart.h" + +static inline void gpio_setup(){ + // Enable clocks to the GPIO subsystems (PB for ADC), turn on AFIO clocking to disable SWD/JTAG + RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN; + // turn off SWJ/JTAG + AFIO->MAPR = AFIO_MAPR_SWJ_CFG_DISABLE; + // turn off USB pullup + GPIOA->ODR = (1<<13)|(1<<14)|(1<<15); // turn off usb pullup & turn on pullups for buttons + // Set leds (PA0/PA4) as opendrain output + GPIOA->CRL = CRL(0, CNF_ODOUTPUT|MODE_SLOW) | CRL(4, CNF_ODOUTPUT|MODE_SLOW); + // Set buttons (PA14/15) as inputs with weak pullups, USB pullup (PA13) - opendrain output + GPIOA->CRH = CRH(13, CNF_ODOUTPUT|MODE_SLOW) | CRH(14, CNF_PUDINPUT|MODE_INPUT) + | CRH(15, CNF_PUDINPUT|MODE_INPUT); +} + +static inline void adc_setup(){ + GPIOB->CRL |= CRL(0, CNF_ANALOG|MODE_INPUT); + uint16_t ctr = 0; // 0xfff0 - more than 1.3ms + // Enable clocking + RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; + RCC->CFGR &= ~(RCC_CFGR_ADCPRE); + RCC->CFGR |= RCC_CFGR_ADCPRE_1; + // sampling time - 239.5 cycles for channels 8, 16 and 17 + ADC1->SMPR2 = ADC_SMPR2_SMP8; + ADC1->SMPR1 = ADC_SMPR1_SMP16 | ADC_SMPR1_SMP17; + // wake up ADC + ADC1->CR2 |= ADC_CR2_ADON; + // we have three conversions in group -> ADC1->SQR1[L] = 2, order: 8->16->17 + ADC1->SQR3 = 8 | (16<<5)| (17<<10); + ADC1->SQR1 = ADC_SQR1_L_1; + // calibration + ADC1->CR2 |= ADC_CR2_CAL; + while((ADC1->CR2 & ADC_CR2_CAL) && ++ctr < 0xfff0); + // DMA configuration + RCC->AHBENR |= RCC_AHBENR_DMA1EN; + DMA1_Channel1->CPAR = (uint32_t) (&(ADC1->DR)); + DMA1_Channel1->CMAR = (uint32_t)(ADC_array); + DMA1_Channel1->CNDTR = NUMBER_OF_ADC_CHANNELS * 9; + DMA1_Channel1->CCR |= DMA_CCR_MINC | DMA_CCR_MSIZE_0 | DMA_CCR_PSIZE_0 | DMA_CCR_CIRC; + DMA1_Channel1->CCR |= DMA_CCR_EN; + // continuous mode & DMA; enable vref & Tsens; start + ADC1->CR2 |= ADC_CR2_CONT | ADC_CR2_DMA | ADC_CR2_TSVREFE | ADC_CR2_SWSTART; + // turn ON ADC + ADC1->CR2 |= ADC_CR2_ADON; +} + +void hw_setup(){ + gpio_setup(); + adc_setup(); +} diff --git a/F1-nolib/F1_testbrd/hardware.h b/F1-nolib/F1_testbrd/hardware.h new file mode 100644 index 0000000..627649e --- /dev/null +++ b/F1-nolib/F1_testbrd/hardware.h @@ -0,0 +1,51 @@ +/* + * geany_encoding=koi8-r + * hardware.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ +#pragma once +#ifndef __HARDWARE_H__ +#define __HARDWARE_H__ + +#include "stm32f1.h" + +// LEDS: 0 - PA0, 1 - PA4 +// LED0 - blinking each second +#define LED0_port GPIOA +#define LED0_pin (1<<0) +// LED1 - PWM +#define LED1_port GPIOA +#define LED1_pin (1<<4) + +// Buttons' state: PA14 (1)/PA15 (0) +#define GET_BTN0() ((GPIOA->IDR & (1<<15)) ? 0 : 1) +#define GET_BTN1() ((GPIOA->IDR & (1<<14)) ? 0 : 1) + +// USB pullup (not used in STM32F0x2!) - PA13 +#define USBPU_port GPIOA +#define USBPU_pin (1<<13) + +#define LED_blink(x) pin_toggle(x ## _port, x ## _pin) +#define LED_on(x) pin_clear(x ## _port, x ## _pin) +#define LED_off(x) pin_set(x ## _port, x ## _pin) + +void hw_setup(); + +#endif // __HARDWARE_H__ diff --git a/F1-nolib/F1_testbrd/main.c b/F1-nolib/F1_testbrd/main.c new file mode 100644 index 0000000..de02b28 --- /dev/null +++ b/F1-nolib/F1_testbrd/main.c @@ -0,0 +1,228 @@ +/* + * main.c + * + * Copyright 2017 Edward V. Emelianoff + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include "adc.h" +#include "hardware.h" +#include "usart.h" +#include "usb.h" +#include "usb_lib.h" +#include // memcpy + +volatile uint32_t Tms = 0; + +#define USB_send(x) do{}while(0) + + +/* Called when systick fires */ +void sys_tick_handler(void){ + ++Tms; +} + +void iwdg_setup(){ + uint32_t tmout = 16000000; + /* Enable the peripheral clock RTC */ + /* (1) Enable the LSI (40kHz) */ + /* (2) Wait while it is not ready */ + RCC->CSR |= RCC_CSR_LSION; /* (1) */ + while((RCC->CSR & RCC_CSR_LSIRDY) != RCC_CSR_LSIRDY){if(--tmout == 0) break;} /* (2) */ + /* Configure IWDG */ + /* (1) Activate IWDG (not needed if done in option bytes) */ + /* (2) Enable write access to IWDG registers */ + /* (3) Set prescaler by 64 (1.6ms for each tick) */ + /* (4) Set reload value to have a rollover each 2s */ + /* (5) Check if flags are reset */ + /* (6) Refresh counter */ + IWDG->KR = IWDG_START; /* (1) */ + IWDG->KR = IWDG_WRITE_ACCESS; /* (2) */ + IWDG->PR = IWDG_PR_PR_1; /* (3) */ + IWDG->RLR = 1250; /* (4) */ + tmout = 16000000; + while(IWDG->SR){if(--tmout == 0) break;} /* (5) */ + IWDG->KR = IWDG_REFRESH; /* (6) */ +} + +char *parse_cmd(char *buf){ + static char btns[] = "BTN0=0, BTN1=0\n"; + if(buf[1] != '\n') return buf; + switch(*buf){ + case '0': + pin_set(GPIOA, 1<<4); + break; + case '1': + pin_clear(GPIOA, 1<<4); + break; + case 'a': + printu(getADCval(0)); newline(); + printu(getADCval(1)); newline(); + printu(getADCval(2)); newline(); + break; + case 'b': + btns[5] = GET_BTN0() + '0'; + btns[13] = GET_BTN1() + '0'; + return btns; + break; + case 'c': + printu((uint32_t) *VREFINT_CAL_ADDR); + newline(); + break; + case 'p': + pin_toggle(USBPU_port, USBPU_pin); + SEND("USB pullup is "); + if(pin_read(USBPU_port, USBPU_pin)) SEND("off"); + else SEND("on"); + newline(); + break; + case 'A': + return u2str(getADCval(0)); + break; + case 'L': + USB_send("Very long test string for USB (it's length is more than 64 bytes).\n" + "This is another part of the string! Can you see all of this?\n"); + return "Long test sent\n"; + break; + case 'R': + USB_send("Soft reset\n"); + SEND("Soft reset\n"); + NVIC_SystemReset(); + break; + case 'S': + USB_send("Test string for USB\n"); + return "Short test sent\n"; + break; + case 'T': + return u2str(getMCUtemp()); + break; + case 'V': + return u2str(getVdd()); + break; + case 'W': + USB_send("Wait for reboot\n"); + SEND("Wait for reboot\n"); + while(1){nop();}; + break; + default: // help + return + "0/1 - turn on/off LED1" + "'b' - get buttons's state\n" + "'p' - toggle USB pullup\n" + "'A' - get ADC8 value\n" + "'L' - send long string over USB\n" + "'R' - software reset\n" + "'S' - send short string over USB\n" + "'T' - MCU temperature\n" + "'V' - Vdd\n" + "'W' - test watchdog\n" + ; + break; + } + return NULL; +} + +/* +// usb getline +char *get_USB(){ + static char tmpbuf[129], *curptr = tmpbuf; + static int rest = 128; + int x = USB_receive(curptr, rest); + curptr[x] = 0; + if(!x) return NULL; + SEND("got: "); + SEND(curptr); + newline(); + if(curptr[x-1] == '\n'){ + curptr = tmpbuf; + rest = 128; + return tmpbuf; + } + curptr += x; rest -= x; + if(rest <= 0){ // buffer overflow + curptr = tmpbuf; + rest = 128; + } + return NULL; +}*/ + +int main(void){ + uint32_t lastT = 0, lastB = 0, LEDperiod = 499; + sysreset(); + StartHSE(); + hw_setup(); + usart_setup(); + SysTick_Config(72000); + + SEND("Hello! I'm ready.\n"); + + if(RCC->CSR & RCC_CSR_IWDGRSTF){ // watchdog reset occured + SEND("WDGRESET=1\n"); + } + if(RCC->CSR & RCC_CSR_SFTRSTF){ // software reset occured + SEND("SOFTRESET=1\n"); + } + RCC->CSR |= RCC_CSR_RMVF; // remove reset flags + + //USB_setup(); + iwdg_setup(); + + while (1){ + IWDG->KR = IWDG_REFRESH; // refresh watchdog + if(lastT > Tms || Tms - lastT > LEDperiod){ + LED_blink(LED0); + lastT = Tms; + transmit_tbuf(); // non-blocking transmission of data from UART buffer every 0.5s + } + //usb_proc(); + int r = 0; + char *txt, *ans; + /*if((txt = get_USB())){ + ans = parse_cmd(txt); + SEND("Received data over USB:\n"); + SEND(txt); + newline(); + if(ans) USB_send(ans); + }*/ + if(usartrx()){ // usart1 received data, store in in buffer + r = usart_getline(&txt); + if(r){ + txt[r] = 0; + ans = parse_cmd(txt); + if(ans){ + usart_send(ans); + transmit_tbuf(); + } + } + } + // check buttons - each 50ms (increase / decrease LED blinking period by 10) + if(Tms - lastB > 49){ + lastB = Tms; + uint8_t btn0 = GET_BTN0(), btn1 = GET_BTN1(); + // both: set to default + if(btn0 && btn1){ + LEDperiod = 499; + }else if(btn0){ + if(LEDperiod < 1989) LEDperiod += 10; + }else if(btn1){ + if(LEDperiod > 29) LEDperiod -= 10; + } + } + } + return 0; +} + diff --git a/F1-nolib/F1_testbrd/pl2303.bin b/F1-nolib/F1_testbrd/pl2303.bin new file mode 100755 index 0000000000000000000000000000000000000000..76b111860c6bf7c64496da3fafdde2fde59bd3ad GIT binary patch literal 3460 zcmbVOeNY_b8Gm;7fV<;sk0T>rCd(ZuL`-rCaTH@F%O1Df-2#VvBo?)^M*>+=gcFX4 zjvawGQ(~+|Xq_0;#+v%wDPEv8mg_Or>YN+Rfgf%N=!1lRpEAB{A##<#|OJ?8ox-=z0kSL>VnzKwm- z@a^~YZR%YcBahxu{=;Ed%qEf-Noto$GnB1|v#R8Fbuy^N+k&c|KF*OdMn01_^FcL< z4XP==F|^#y=kw`kNrRx8UiC6sZsOy38ZA2U3DkD-DZB|aIKyDe1ApW+4re8p$$XR_TR$8Yq=-OV0Fbb91) zi${4lp>#>#ay)-3vZv9ou}m8Z1Mm9_^;H8m^k3Mvv~i# zSFH^XK6X_`As6$WSMYR$ zw>s${ZP_URljWs@9;G{N`??Hx!jG;6=V=yX-EX&{pGMKh^15y1t!N}8dU;)Ws{peW zu0ZI&b6T9V2J%M4LFI~u6EA8vpjNg*qE?R@jT#%PZx*thC#4}NO#x3*XotmSF)Q7g zWVKnj`|TZcFkQ‰{_&W}Zyu+s9S&=;N`r@Cn2eTh`U4QBfvMa{A{2YQ0tl??h) zBqvfq66k5<4ANalfPL4nSgy(cg0K!&;z+kyB8tqSuM9%vxNdgaMyd{*1y&})*C zVPZEq;XXW&urlpfs=Kp%`J98yW0yW*6Ws=3gJ=?KMHAmIUiN!mf}2(*-OI09Y-5y= zrDctszXD(b*4||-BqpN~D etb2g*D4P;IGBouHz3xou=>M^%Prf^RfBa_I9C$II@P1z+%PNMXM3U(;xbqr+VZlJX#-&{NNKLZE?gidq zO6e{_%&4>tJ^Dd@Slun1KdX6XXYVNd_yS7oM>x@uY(^b=+jFO(aB}j-t$)67CBJcx z;P_zb{G7ximQ^U2oxoEhVJNE>PH3l0;eVvppy2!j$j_-DyVVco%xAT||8kC9dbi_Q z?v)wiEicU_Bc7j7AD>G?{upuy#qa`ARl_GRBuj@Oyf>2o72nnt#HWU%B*b+Fl7?3e z^9IDQaMs|aM+~lX$>7$Bi6Sl0V~9Sh&Se&HqQ~%k5BiTGX?a8>vykr6aGN_})Nngt za>^s5WU8oBE$r)WKz?AQcR58!6&7wndboPD*Wso7V2qn$Yp)e7k8gI? zltVv(Yq2Vy<0z0YOX`2Jt?bg%WuHZ&I53sG8DY z;x~#%)y*~OJ*h%}&*j-*?5mDnnFb5Pbmtj_1Xot~$z!DbWY06b&RGA}&mPZHcN@MJ zf5-FJIQBGC$m$!2-!?6eWRz#PEYeWlovHisJtMOe!bB0%b)3uLNtH0DlYd3*S7D7mojZ3Rrg+qT-*=Q$a`ys zn{_Ci2{zzR?uku@Um9FtO`&;6-lJ1m@eDZJNP+ z=R*5!Hd{1udaa-f3~=;~eLWpGtD4 zA(APir@2d$2Epha3=X zroGX7@WE|Hfc>Rq)s7lR?VcS*sPXW%R~1ZP+rER@%J@6mTbZ`j?QKm>Ou3_UM}9*- zS`Rh)nTAfkzpb?+zk})Ud;N{Ze4n=BZ##6TrID$t;TT_MOG~HEm|t=wqNLP*8*{|l z(uvOHnz5s?^&r#I)_Mq2v^OJbJJQ&$#TxUgW9w~A{s+A6jkw{CM!zw?=4w!f)Yk6* zdQ`3EP+_lQ{Ehed8r!|Nd#trjv+g^1(3rnpll+Yxe&zwM|A2I`?T``5wfZp|ZpV*( zh^4;9fW7$Y?=a0B3;=cm+FAi>aD(fcgZ + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include "stm32f1.h" +#include "usart.h" + +extern volatile uint32_t Tms; +static volatile int idatalen[2] = {0,0}; // received data line length (including '\n') +static volatile int odatalen[2] = {0,0}; + +volatile int linerdy = 0, // received data ready + dlen = 0, // length of data (including '\n') in current buffer + bufovr = 0, // input buffer overfull + txrdy = 1 // transmission done +; + + +int rbufno = 0, tbufno = 0; // current rbuf/tbuf numbers +static char rbuf[2][UARTBUFSZI], tbuf[2][UARTBUFSZO]; // receive & transmit buffers +static char *recvdata = NULL; + +/** + * return length of received data (without trailing zero) + */ +int usart_getline(char **line){ + if(bufovr){ + bufovr = 0; + linerdy = 0; + return 0; + } + *line = recvdata; + linerdy = 0; + return dlen; +} + +// transmit current tbuf and swap buffers +void transmit_tbuf(){ + uint32_t tmout = 16000000; + while(!txrdy){if(--tmout == 0) return;}; // wait for previos buffer transmission + register int l = odatalen[tbufno]; + if(!l) return; + txrdy = 0; + odatalen[tbufno] = 0; + DMA1_Channel4->CCR &= ~DMA_CCR_EN; + DMA1_Channel4->CMAR = (uint32_t) tbuf[tbufno]; // mem + DMA1_Channel4->CNDTR = l; + DMA1_Channel4->CCR |= DMA_CCR_EN; + tbufno = !tbufno; +} + +void usart_putchar(const char ch){ + if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + tbuf[tbufno][odatalen[tbufno]++] = ch; +} + +void usart_send(const char *str){ + uint32_t x = 512; + while(*str && --x){ + if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + tbuf[tbufno][odatalen[tbufno]++] = *str++; + } +} + +void newline(){ + usart_putchar('\n'); + transmit_tbuf(); +} + + +/* + * USART speed: baudrate = Fck/(USARTDIV) + * USARTDIV stored in USART->BRR + * + * for 72MHz USARTDIV=72000/f(kboud); so for 115200 USARTDIV=72000/115.2=625 -> BRR=0x271 + * 9600: BRR = 7500 (0x1D4C) + */ + +void usart_setup(){ + uint32_t tmout = 16000000; + // PA9 - Tx, PA10 - Rx + RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_USART1EN; + RCC->AHBENR |= RCC_AHBENR_DMA1EN; + GPIOA->CRH |= CRH(9, CNF_AFPP|MODE_NORMAL) | CRH(10, CNF_FLINPUT|MODE_INPUT); + + // USART1 Tx DMA - Channel4 (Rx - channel 5) + DMA1_Channel4->CPAR = (uint32_t) &USART1->DR; // periph + DMA1_Channel4->CCR |= DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE; // 8bit, mem++, mem->per, transcompl irq + // Tx CNDTR set @ each transmission due to data size + NVIC_SetPriority(DMA1_Channel4_IRQn, 3); + NVIC_EnableIRQ(DMA1_Channel4_IRQn); + NVIC_SetPriority(USART1_IRQn, 0); + // setup usart1 + USART1->BRR = 72000000 / 115200; + USART1->CR1 = USART_CR1_TE | USART_CR1_RE | USART_CR1_UE; // 1start,8data,nstop; enable Rx,Tx,USART + while(!(USART1->SR & USART_SR_TC)){if(--tmout == 0) break;} // polling idle frame Transmission + USART1->SR = 0; // clear flags + USART1->CR1 |= USART_CR1_RXNEIE; // allow Rx IRQ + USART1->CR3 = USART_CR3_DMAT; // enable DMA Tx + NVIC_EnableIRQ(USART1_IRQn); +} + + +void usart1_isr(){ + #ifdef CHECK_TMOUT + static uint32_t tmout = 0; + #endif + if(USART1->SR & USART_SR_RXNE){ // RX not emty - receive next char + #ifdef CHECK_TMOUT + if(tmout && Tms >= tmout){ // set overflow flag + bufovr = 1; + idatalen[rbufno] = 0; + } + tmout = Tms + TIMEOUT_MS; + if(!tmout) tmout = 1; // prevent 0 + #endif + uint8_t rb = USART1->DR; + if(idatalen[rbufno] < UARTBUFSZI){ // put next char into buf + rbuf[rbufno][idatalen[rbufno]++] = rb; + if(rb == '\n'){ // got newline - line ready + linerdy = 1; + dlen = idatalen[rbufno]; + recvdata = rbuf[rbufno]; + // prepare other buffer + rbufno = !rbufno; + idatalen[rbufno] = 0; + #ifdef CHECK_TMOUT + // clear timeout at line end + tmout = 0; + #endif + } + }else{ // buffer overrun + bufovr = 1; + idatalen[rbufno] = 0; + #ifdef CHECK_TMOUT + tmout = 0; + #endif + } + } +} + +// return string buffer with val +char *u2str(uint32_t val){ + static char bufa[11]; + char bufb[10]; + int l = 0, bpos = 0; + if(!val){ + bufa[0] = '0'; + l = 1; + }else{ + while(val){ + bufb[l++] = val % 10 + '0'; + val /= 10; + } + int i; + bpos += l; + for(i = 0; i < l; ++i){ + bufa[--bpos] = bufb[i]; + } + } + bufa[l + bpos] = 0; + return bufa; +} +// print 32bit unsigned int +void printu(uint32_t val){ + usart_send(u2str(val)); +} + +// print 32bit unsigned int as hex +void printuhex(uint32_t val){ + usart_send("0x"); + uint8_t *ptr = (uint8_t*)&val + 3; + int i, j; + for(i = 0; i < 4; ++i, --ptr){ + for(j = 1; j > -1; --j){ + register uint8_t half = (*ptr >> (4*j)) & 0x0f; + if(half < 10) usart_putchar(half + '0'); + else usart_putchar(half - 10 + 'a'); + } + } +} + +// dump memory buffer +void hexdump(uint8_t *arr, uint16_t len){ + for(uint16_t l = 0; l < len; ++l, ++arr){ + for(int16_t j = 1; j > -1; --j){ + register uint8_t half = (*arr >> (4*j)) & 0x0f; + if(half < 10) usart_putchar(half + '0'); + else usart_putchar(half - 10 + 'a'); + } + if(l % 16 == 15) usart_putchar('\n'); + else if(l & 1) usart_putchar(' '); + } +} + +void dma1_channel4_isr(){ + if(DMA1->ISR & DMA_ISR_TCIF4){ // Tx + DMA1->IFCR = DMA_IFCR_CTCIF4; // clear TC flag + txrdy = 1; + } +} diff --git a/F1-nolib/F1_testbrd/usart.h b/F1-nolib/F1_testbrd/usart.h new file mode 100644 index 0000000..70fd3c2 --- /dev/null +++ b/F1-nolib/F1_testbrd/usart.h @@ -0,0 +1,61 @@ +/* + * usart.h + * + * Copyright 2017 Edward V. Emelianoff + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#pragma once +#ifndef __USART_H__ +#define __USART_H__ + +// input and output buffers size +#define UARTBUFSZI (32) +#define UARTBUFSZO (512) +// timeout between data bytes +#ifndef TIMEOUT_MS +#define TIMEOUT_MS (1500) +#endif + +// macro for static strings +#define SEND(str) usart_send(str) + +#define STR_HELPER(s) #s +#define STR(s) STR_HELPER(s) + +#ifdef EBUG +#define MSG(str) do{SEND(__FILE__ " (L" STR(__LINE__) "): " str);}while(0) +#else +#define MSG(str) +#endif + +#define usartrx() (linerdy) +#define usartovr() (bufovr) + +extern volatile int linerdy, bufovr, txrdy; + +void transmit_tbuf(); +void usart_setup(); +int usart_getline(char **line); +void usart_send(const char *str); +void newline(); +void usart_putchar(const char ch); +char *u2str(uint32_t val); +void printu(uint32_t val); +void printuhex(uint32_t val); +void hexdump(uint8_t *arr, uint16_t len); + +#endif // __USART_H__ diff --git a/F1-nolib/F1_testbrd/usb.c b/F1-nolib/F1_testbrd/usb.c new file mode 100644 index 0000000..771c92d --- /dev/null +++ b/F1-nolib/F1_testbrd/usb.c @@ -0,0 +1,158 @@ +/* + * geany_encoding=koi8-r + * usb.c - base functions for different USB types + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#include "usb.h" +#include "usb_lib.h" +#include "usart.h" +#include // memcpy, memmove + +// incoming buffer size +#define IDATASZ (256) +static uint8_t incoming_data[IDATASZ]; +static uint8_t ovfl = 0; +static uint16_t idatalen = 0; +static volatile uint8_t tx_succesfull = 0; +static int8_t usbON = 0; // ==1 when USB fully configured + +// interrupt IN handler (never used?) +static uint16_t EP1_Handler(ep_t ep){ + if (ep.rx_flag){ + ep.status = SET_VALID_TX(ep.status); + ep.status = KEEP_STAT_RX(ep.status); + }else if (ep.tx_flag){ + ep.status = SET_VALID_RX(ep.status); + ep.status = SET_STALL_TX(ep.status); + } + return ep.status; +} + +// data IN/OUT handler +static uint16_t EP23_Handler(ep_t ep){ + if(ep.rx_flag){ + int rd = ep.rx_cnt, rest = IDATASZ - idatalen; + if(rd){ + if(rd <= rest){ + idatalen += EP_Read(2, &incoming_data[idatalen]); + ovfl = 0; + }else{ + ep.status = SET_NAK_RX(ep.status); + ovfl = 1; + return ep.status; + } + } + // end of transaction: clear DTOGs + ep.status = CLEAR_DTOG_RX(ep.status); + ep.status = CLEAR_DTOG_TX(ep.status); + ep.status = SET_STALL_TX(ep.status); + }else if (ep.tx_flag){ + ep.status = KEEP_STAT_TX(ep.status); + tx_succesfull = 1; + } + ep.status = SET_VALID_RX(ep.status); + return ep.status; +} + +void USB_setup(){ + RCC->APB1ENR |= RCC_APB1ENR_CRSEN | RCC_APB1ENR_USBEN; // enable CRS (hsi48 sync) & USB + RCC->CFGR3 &= ~RCC_CFGR3_USBSW; // reset USB + RCC->CR2 |= RCC_CR2_HSI48ON; // turn ON HSI48 + uint32_t tmout = 16000000; + while(!(RCC->CR2 & RCC_CR2_HSI48RDY)){if(--tmout == 0) break;} + FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY; + CRS->CFGR &= ~CRS_CFGR_SYNCSRC; + CRS->CFGR |= CRS_CFGR_SYNCSRC_1; // USB SOF selected as sync source + CRS->CR |= CRS_CR_AUTOTRIMEN; // enable auto trim + CRS->CR |= CRS_CR_CEN; // enable freq counter & block CRS->CFGR as read-only + RCC->CFGR |= RCC_CFGR_SW; + // allow RESET and CTRM interrupts + USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM; + // clear flags + USB->ISTR = 0; + // and activate pullup + USB->BCDR |= USB_BCDR_DPPU; + NVIC_EnableIRQ(USB_IRQn); +} + +void usb_proc(){ + if(USB_GetState() == USB_CONFIGURE_STATE){ // USB configured - activate other endpoints + if(!usbON){ // endpoints not activated + // make new BULK endpoint + // Buffer have 1024 bytes, but last 256 we use for CAN bus (30.2 of RM: USB main features) + EP_Init(1, EP_TYPE_INTERRUPT, 10, 0, EP1_Handler); // IN1 - transmit + EP_Init(2, EP_TYPE_BULK, 0, USB_RXBUFSZ, EP23_Handler); // OUT2 - receive data + EP_Init(3, EP_TYPE_BULK, USB_TXBUFSZ, 0, EP23_Handler); // IN3 - transmit data + usbON = 1; + } + }else{ + usbON = 0; + } +} + +void USB_send(char *buf){ + uint16_t l = 0, ctr = 0; + char *p = buf; + while(*p++) ++l; + while(l){ + uint16_t s = (l > USB_TXBUFSZ) ? USB_TXBUFSZ : l; + tx_succesfull = 0; + EP_Write(3, (uint8_t*)&buf[ctr], s); + uint32_t ctra = 1000000; + while(--ctra && tx_succesfull == 0); + l -= s; + ctr += s; + } +} + +/** + * @brief USB_receive + * @param buf (i) - buffer for received data + * @param bufsize - its size + * @return amount of received bytes + */ +int USB_receive(char *buf, int bufsize){ + if(!bufsize || !idatalen) return 0; + USB->CNTR = 0; + int sz = (idatalen > bufsize) ? bufsize : idatalen, rest = idatalen - sz; + memcpy(buf, incoming_data, sz); + if(rest > 0){ + memmove(incoming_data, &incoming_data[sz], rest); + idatalen = rest; + }else idatalen = 0; + if(ovfl){ + EP23_Handler(endpoints[2]); + uint16_t epstatus = USB->EPnR[2]; + epstatus = CLEAR_DTOG_RX(epstatus); + epstatus = SET_VALID_RX(epstatus); + USB->EPnR[2] = epstatus; + } + USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM; + return sz; +} + +/** + * @brief USB_configured + * @return 1 if USB is in configured state + */ +int USB_configured(){ + return usbON; +} diff --git a/F1-nolib/F1_testbrd/usb.h b/F1-nolib/F1_testbrd/usb.h new file mode 100644 index 0000000..0d5831a --- /dev/null +++ b/F1-nolib/F1_testbrd/usb.h @@ -0,0 +1,37 @@ +/* + * geany_encoding=koi8-r + * usb.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ +#pragma once +#ifndef __USB_H__ +#define __USB_H__ + +#include "hardware.h" + +#define BUFFSIZE (64) + +void USB_setup(); +void usb_proc(); +void USB_send(char *buf); +int USB_receive(char *buf, int bufsize); +int USB_configured(); + +#endif // __USB_H__ diff --git a/F1-nolib/F1_testbrd/usb_defs.h b/F1-nolib/F1_testbrd/usb_defs.h new file mode 100644 index 0000000..d5cc1ce --- /dev/null +++ b/F1-nolib/F1_testbrd/usb_defs.h @@ -0,0 +1,106 @@ +/* + * geany_encoding=koi8-r + * usb_defs.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#pragma once +#ifndef __USB_DEFS_H__ +#define __USB_DEFS_H__ + +#include + +/** + * Buffers size definition + **/ +// !!! when working with CAN bus change USB_BTABLE_SIZE to 768 !!! +#define USB_BTABLE_SIZE 1024 +// first 64 bytes of USB_BTABLE are registers! +#define USB_EP0_BASEADDR 64 +// for USB FS EP0 buffers are from 8 to 64 bytes long (64 for PL2303) +#define USB_EP0_BUFSZ 64 +// USB transmit buffer size (64 for PL2303) +#define USB_TXBUFSZ 64 +// USB receive buffer size (64 for PL2303) +#define USB_RXBUFSZ 64 + +#define USB_BTABLE_BASE 0x40006000 +#undef USB_BTABLE +#define USB_BTABLE ((USB_BtableDef *)(USB_BTABLE_BASE)) +#define USB_ISTR_EPID 0x0000000F +#define USB_FNR_LSOF_0 0x00000800 +#define USB_FNR_lSOF_1 0x00001000 +#define USB_LPMCSR_BESL_0 0x00000010 +#define USB_LPMCSR_BESL_1 0x00000020 +#define USB_LPMCSR_BESL_2 0x00000040 +#define USB_LPMCSR_BESL_3 0x00000080 +#define USB_EPnR_CTR_RX 0x00008000 +#define USB_EPnR_DTOG_RX 0x00004000 +#define USB_EPnR_STAT_RX 0x00003000 +#define USB_EPnR_STAT_RX_0 0x00001000 +#define USB_EPnR_STAT_RX_1 0x00002000 +#define USB_EPnR_SETUP 0x00000800 +#define USB_EPnR_EP_TYPE 0x00000600 +#define USB_EPnR_EP_TYPE_0 0x00000200 +#define USB_EPnR_EP_TYPE_1 0x00000400 +#define USB_EPnR_EP_KIND 0x00000100 +#define USB_EPnR_CTR_TX 0x00000080 +#define USB_EPnR_DTOG_TX 0x00000040 +#define USB_EPnR_STAT_TX 0x00000030 +#define USB_EPnR_STAT_TX_0 0x00000010 +#define USB_EPnR_STAT_TX_1 0x00000020 +#define USB_EPnR_EA 0x0000000F +#define USB_COUNTn_RX_BLSIZE 0x00008000 +#define USB_COUNTn_NUM_BLOCK 0x00007C00 +#define USB_COUNTn_RX 0x0000003F + +#define USB_TypeDef USB_TypeDef_custom + +typedef struct{ + __IO uint32_t EPnR[8]; + __IO uint32_t RESERVED1; + __IO uint32_t RESERVED2; + __IO uint32_t RESERVED3; + __IO uint32_t RESERVED4; + __IO uint32_t RESERVED5; + __IO uint32_t RESERVED6; + __IO uint32_t RESERVED7; + __IO uint32_t RESERVED8; + __IO uint32_t CNTR; + __IO uint32_t ISTR; + __IO uint32_t FNR; + __IO uint32_t DADDR; + __IO uint32_t BTABLE; + __IO uint32_t LPMCSR; + __IO uint32_t BCDR; +} USB_TypeDef; + +typedef struct{ + __IO uint16_t USB_ADDR_TX; + __IO uint16_t USB_COUNT_TX; + __IO uint16_t USB_ADDR_RX; + __IO uint16_t USB_COUNT_RX; +} USB_EPDATA_TypeDef; + +typedef struct{ + __IO USB_EPDATA_TypeDef EP[8]; +} USB_BtableDef; + +#endif // __USB_DEFS_H__ diff --git a/F1-nolib/F1_testbrd/usb_lib.c b/F1-nolib/F1_testbrd/usb_lib.c new file mode 100644 index 0000000..c359cb5 --- /dev/null +++ b/F1-nolib/F1_testbrd/usb_lib.c @@ -0,0 +1,484 @@ +/* + * geany_encoding=koi8-r + * usb_lib.c + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#include +#include "usb_lib.h" +#include // memcpy +#include "usart.h" + +ep_t endpoints[ENDPOINTS_NUM]; + +static usb_dev_t USB_Dev; +static usb_LineCoding lineCoding = {115200, 0, 0, 8}; +static config_pack_t setup_packet; +static uint8_t ep0databuf[EP0DATABUF_SIZE]; +static uint8_t ep0dbuflen = 0; + +usb_LineCoding getLineCoding(){return lineCoding;} + +// definition of parts common for USB_DeviceDescriptor & USB_DeviceQualifierDescriptor +#define bcdUSB_L 0x10 +#define bcdUSB_H 0x01 +#define bDeviceClass 0 +#define bDeviceSubClass 0 +#define bDeviceProtocol 0 +#define bNumConfigurations 1 + +static const uint8_t USB_DeviceDescriptor[] = { + 18, // bLength + 0x01, // bDescriptorType - Device descriptor + bcdUSB_L, // bcdUSB_L - 1.10 + bcdUSB_H, // bcdUSB_H + bDeviceClass, // bDeviceClass - USB_COMM + bDeviceSubClass, // bDeviceSubClass + bDeviceProtocol, // bDeviceProtocol + USB_EP0_BUFSZ, // bMaxPacketSize + 0x7b, // idVendor_L PL2303: VID=0x067b, PID=0x2303 + 0x06, // idVendor_H + 0x03, // idProduct_L + 0x23, // idProduct_H + 0x00, // bcdDevice_Ver_L + 0x03, // bcdDevice_Ver_H + 0x01, // iManufacturer + 0x02, // iProduct + 0x00, // iSerialNumber + bNumConfigurations // bNumConfigurations +}; + +static const uint8_t USB_DeviceQualifierDescriptor[] = { + 10, //bLength + 0x06, // bDescriptorType - Device qualifier + bcdUSB_L, // bcdUSB_L + bcdUSB_H, // bcdUSB_H + bDeviceClass, // bDeviceClass + bDeviceSubClass, // bDeviceSubClass + bDeviceProtocol, // bDeviceProtocol + USB_EP0_BUFSZ, // bMaxPacketSize0 + bNumConfigurations, // bNumConfigurations + 0x00 // Reserved +}; + +static const uint8_t USB_ConfigDescriptor[] = { + /*Configuration Descriptor*/ + 0x09, /* bLength: Configuration Descriptor size */ + 0x02, /* bDescriptorType: Configuration */ + 39, /* wTotalLength:no of returned bytes */ + 0x00, + 0x01, /* bNumInterfaces: 1 interface */ + 0x01, /* bConfigurationValue: Configuration value */ + 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ + 0xa0, /* bmAttributes - Bus powered, Remote wakeup */ + 0x32, /* MaxPower 100 mA */ + + /*---------------------------------------------------------------------------*/ + + /*Interface Descriptor */ + 0x09, /* bLength: Interface Descriptor size */ + 0x04, /* bDescriptorType: Interface */ + 0x00, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x03, /* bNumEndpoints: 3 endpoints used */ + 0xff, /* bInterfaceClass */ + 0x00, /* bInterfaceSubClass */ + 0x00, /* bInterfaceProtocol */ + 0x00, /* iInterface: */ +/////////////////////////////////////////////////// + /*Endpoint 1 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + 0x05, /* bDescriptorType: Endpoint */ + 0x81, /* bEndpointAddress IN1 */ + 0x03, /* bmAttributes: Interrupt */ + 0x0a, /* wMaxPacketSize LO: */ + 0x00, /* wMaxPacketSize HI: */ + 0x01, /* bInterval: */ + + /*Endpoint OUT2 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + 0x05, /* bDescriptorType: Endpoint */ + 0x02, /* bEndpointAddress: OUT2 */ + 0x02, /* bmAttributes: Bulk */ + (USB_RXBUFSZ & 0xff), /* wMaxPacketSize: 64 */ + (USB_RXBUFSZ >> 8), + 0x00, /* bInterval: ignore for Bulk transfer */ + + /*Endpoint IN3 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + 0x05, /* bDescriptorType: Endpoint */ + 0x83, /* bEndpointAddress IN3 */ + 0x02, /* bmAttributes: Bulk */ + (USB_TXBUFSZ & 0xff), /* wMaxPacketSize: 64 */ + (USB_TXBUFSZ >> 8), + 0x00, /* bInterval: ignore for Bulk transfer */ +}; + +_USB_LANG_ID_(USB_StringLangDescriptor, LANG_US); +// these descriptors are not used in PL2303 emulator! +_USB_STRING_(USB_StringSerialDescriptor, u"0"); +_USB_STRING_(USB_StringManufacturingDescriptor, u"Prolific Technology Inc."); +_USB_STRING_(USB_StringProdDescriptor, u"USB-Serial Controller"); + +/* + * default handlers + */ +// SET_LINE_CODING +void WEAK linecoding_handler(usb_LineCoding __attribute__((unused)) *lc){ +} + +// SET_CONTROL_LINE_STATE +void WEAK clstate_handler(uint16_t __attribute__((unused)) val){ +} + +// SEND_BREAK +void WEAK break_handler(){ +} + +// handler of vendor requests +void WEAK vendor_handler(config_pack_t *packet){ + if(packet->bmRequestType & 0x80){ // read + uint8_t c; + switch(packet->wValue){ + case 0x8484: + c = 2; + break; + case 0x0080: + c = 1; + break; + case 0x8686: + c = 0xaa; + break; + default: + c = 0; + } + EP_WriteIRQ(0, &c, 1); + }else{ // write ZLP + EP_WriteIRQ(0, (uint8_t *)0, 0); + } +} + +static void wr0(const uint8_t *buf, uint16_t size){ + if(setup_packet.wLength < size) size = setup_packet.wLength; + EP_WriteIRQ(0, buf, size); +} + +static inline void get_descriptor(){ + switch(setup_packet.wValue){ + case DEVICE_DESCRIPTOR: + wr0(USB_DeviceDescriptor, sizeof(USB_DeviceDescriptor)); + break; + case CONFIGURATION_DESCRIPTOR: + wr0(USB_ConfigDescriptor, sizeof(USB_ConfigDescriptor)); + break; + case STRING_LANG_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringLangDescriptor, STRING_LANG_DESCRIPTOR_SIZE_BYTE); + break; + case STRING_MAN_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringManufacturingDescriptor, USB_StringManufacturingDescriptor.bLength); + break; + case STRING_PROD_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringProdDescriptor, USB_StringProdDescriptor.bLength); + break; + case STRING_SN_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringSerialDescriptor, USB_StringSerialDescriptor.bLength); + break; + case DEVICE_QUALIFIER_DESCRIPTOR: + wr0(USB_DeviceQualifierDescriptor, USB_DeviceQualifierDescriptor[0]); + break; + default: + break; + } +} + +static uint8_t configuration = 0; // reply for GET_CONFIGURATION (==1 if configured) +static inline void std_d2h_req(){ + uint16_t status = 0; // bus powered + switch(setup_packet.bRequest){ + case GET_DESCRIPTOR: + get_descriptor(); + break; + case GET_STATUS: + EP_WriteIRQ(0, (uint8_t *)&status, 2); // send status: Bus Powered + break; + case GET_CONFIGURATION: + EP_WriteIRQ(0, &configuration, 1); + break; + default: + break; + } +} + +static inline void std_h2d_req(){ + switch(setup_packet.bRequest){ + case SET_ADDRESS: + // new address will be assigned later - after acknowlegement or request to host + USB_Dev.USB_Addr = setup_packet.wValue; + break; + case SET_CONFIGURATION: + // Now device configured + USB_Dev.USB_Status = USB_CONFIGURE_STATE; + configuration = setup_packet.wValue; + break; + default: + break; + } +} + +/* +bmRequestType: 76543210 +7 direction: 0 - host->device, 1 - device->host +65 type: 0 - standard, 1 - class, 2 - vendor +4..0 getter: 0 - device, 1 - interface, 2 - endpoint, 3 - other +*/ +/** + * Endpoint0 (control) handler + * @param ep - endpoint state + * @return data written to EP0R + */ +static uint16_t EP0_Handler(ep_t ep){ + uint16_t epstatus = ep.status; // EP0R on input -> return this value after modifications + uint8_t reqtype = setup_packet.bmRequestType & 0x7f; + uint8_t dev2host = (setup_packet.bmRequestType & 0x80) ? 1 : 0; + if ((ep.rx_flag) && (ep.setup_flag)){ + switch(reqtype){ + case STANDARD_DEVICE_REQUEST_TYPE: // standard device request + if(dev2host){ + std_d2h_req(); + }else{ + std_h2d_req(); + // send ZLP + EP_WriteIRQ(0, (uint8_t *)0, 0); + } + epstatus = SET_NAK_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + break; + case STANDARD_ENDPOINT_REQUEST_TYPE: // standard endpoint request + if(setup_packet.bRequest == CLEAR_FEATURE){ + // send ZLP + EP_WriteIRQ(0, (uint8_t *)0, 0); + epstatus = SET_NAK_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + } + break; + case VENDOR_REQUEST_TYPE: + vendor_handler(&setup_packet); + epstatus = SET_NAK_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + break; + case CONTROL_REQUEST_TYPE: + switch(setup_packet.bRequest){ + case GET_LINE_CODING: + EP_WriteIRQ(0, (uint8_t*)&lineCoding, sizeof(lineCoding)); + break; + case SET_LINE_CODING: // omit this for next stage, when data will come + break; + case SET_CONTROL_LINE_STATE: + clstate_handler(setup_packet.wValue); + break; + case SEND_BREAK: + break_handler(); + break; + default: + break; + } + if(!dev2host) EP_WriteIRQ(0, (uint8_t *)0, 0); // write acknowledgement + epstatus = SET_VALID_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + break; + default: + EP_WriteIRQ(0, (uint8_t *)0, 0); + epstatus = SET_NAK_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + } + }else if (ep.rx_flag){ // got data over EP0 or host acknowlegement + if(ep.rx_cnt){ + EP_WriteIRQ(0, (uint8_t *)0, 0); + if(setup_packet.bRequest == SET_LINE_CODING){ + linecoding_handler((usb_LineCoding*)ep0databuf); + } + } + // Close transaction + epstatus = CLEAR_DTOG_RX(epstatus); + epstatus = CLEAR_DTOG_TX(epstatus); + // wait for new data from host + epstatus = SET_VALID_RX(epstatus); + epstatus = SET_STALL_TX(epstatus); + } else if (ep.tx_flag){ // package transmitted + // now we can change address after enumeration + if ((USB->DADDR & USB_DADDR_ADD) != USB_Dev.USB_Addr){ + USB->DADDR = USB_DADDR_EF | USB_Dev.USB_Addr; + // change state to ADRESSED + USB_Dev.USB_Status = USB_ADRESSED_STATE; + } + // end of transaction + epstatus = CLEAR_DTOG_RX(epstatus); + epstatus = CLEAR_DTOG_TX(epstatus); + epstatus = SET_VALID_RX(epstatus); + epstatus = SET_VALID_TX(epstatus); + } + return epstatus; +} + +static uint16_t lastaddr = USB_EP0_BASEADDR; +/** + * Endpoint initialisation + * !!! when working with CAN bus change USB_BTABLE_SIZE to 768 !!! + * @param number - EP num (0...7) + * @param type - EP type (EP_TYPE_BULK, EP_TYPE_CONTROL, EP_TYPE_ISO, EP_TYPE_INTERRUPT) + * @param txsz - transmission buffer size @ USB/CAN buffer + * @param rxsz - reception buffer size @ USB/CAN buffer + * @param uint16_t (*func)(ep_t *ep) - EP handler function + * @return 0 if all OK + */ +int EP_Init(uint8_t number, uint8_t type, uint16_t txsz, uint16_t rxsz, uint16_t (*func)(ep_t ep)){ + if(number >= ENDPOINTS_NUM) return 4; // out of configured amount + if(txsz > USB_BTABLE_SIZE || rxsz > USB_BTABLE_SIZE) return 1; // buffer too large + if(lastaddr + txsz + rxsz >= USB_BTABLE_SIZE) return 2; // out of btable + USB->EPnR[number] = (type << 9) | (number & USB_EPnR_EA); + USB->EPnR[number] ^= USB_EPnR_STAT_RX | USB_EPnR_STAT_TX_1; + if(rxsz & 1 || rxsz > 992) return 3; // wrong rx buffer size + uint16_t countrx = 0; + if(rxsz < 64) countrx = rxsz / 2; + else{ + if(rxsz & 0x1f) return 3; // should be multiple of 32 + countrx = 31 + rxsz / 32; + } + USB_BTABLE->EP[number].USB_ADDR_TX = lastaddr; + endpoints[number].tx_buf = (uint16_t *)(USB_BTABLE_BASE + lastaddr); + lastaddr += txsz; + USB_BTABLE->EP[number].USB_COUNT_TX = 0; + USB_BTABLE->EP[number].USB_ADDR_RX = lastaddr; + endpoints[number].rx_buf = (uint8_t *)(USB_BTABLE_BASE + lastaddr); + lastaddr += rxsz; + // buffer size: Table127 of RM + USB_BTABLE->EP[number].USB_COUNT_RX = countrx << 10; + endpoints[number].func = func; + return 0; +} + +// standard IRQ handler +void usb_isr(){ + if (USB->ISTR & USB_ISTR_RESET){ + // Reinit registers + USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM; + USB->ISTR = 0; + // Endpoint 0 - CONTROL + // ON USB LS size of EP0 may be 8 bytes, but on FS it should be 64 bytes! + lastaddr = USB_EP0_BASEADDR; // roll back to beginning of buffer + EP_Init(0, EP_TYPE_CONTROL, USB_EP0_BUFSZ, USB_EP0_BUFSZ, EP0_Handler); + // clear address, leave only enable bit + USB->DADDR = USB_DADDR_EF; + // state is default - wait for enumeration + USB_Dev.USB_Status = USB_DEFAULT_STATE; + } + if(USB->ISTR & USB_ISTR_CTR){ + // EP number + uint8_t n = USB->ISTR & USB_ISTR_EPID; + // copy status register + uint16_t epstatus = USB->EPnR[n]; + // Calculate flags + endpoints[n].rx_flag = (epstatus & USB_EPnR_CTR_RX) ? 1 : 0; + endpoints[n].setup_flag = (epstatus & USB_EPnR_SETUP) ? 1 : 0; + endpoints[n].tx_flag = (epstatus & USB_EPnR_CTR_TX) ? 1 : 0; + // copy received bytes amount + endpoints[n].rx_cnt = USB_BTABLE->EP[n].USB_COUNT_RX & 0x3FF; // low 10 bits is counter + // check direction + if(USB->ISTR & USB_ISTR_DIR){ // OUT interrupt - receive data, CTR_RX==1 (if CTR_TX == 1 - two pending transactions: receive following by transmit) + if(n == 0){ // control endpoint + if(epstatus & USB_EPnR_SETUP){ // setup packet -> copy data to conf_pack + memcpy(&setup_packet, endpoints[0].rx_buf, sizeof(setup_packet)); + ep0dbuflen = 0; + // interrupt handler will be called later + }else if(epstatus & USB_EPnR_CTR_RX){ // data packet -> push received data to ep0databuf + ep0dbuflen = endpoints[0].rx_cnt; + memcpy(ep0databuf, endpoints[0].rx_buf, ep0dbuflen); + } + } + }else{ // IN interrupt - transmit data, only CTR_TX == 1 + // enumeration end could be here (if EP0) + } + // prepare status field for EP handler + endpoints[n].status = epstatus; + // call EP handler (even if it will change EPnR, it should return new status) + epstatus = endpoints[n].func(endpoints[n]); + // keep DTOG state + epstatus = KEEP_DTOG_TX(epstatus); + epstatus = KEEP_DTOG_RX(epstatus); + // clear all RX/TX flags + epstatus = CLEAR_CTR_RX(epstatus); + epstatus = CLEAR_CTR_TX(epstatus); + // refresh EPnR + USB->EPnR[n] = epstatus; + } +} + +/** + * Write data to EP buffer (called from IRQ handler) + * @param number - EP number + * @param *buf - array with data + * @param size - its size + */ +void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size){ + uint8_t i; + if(size > USB_TXBUFSZ) size = USB_TXBUFSZ; + uint16_t N2 = (size + 1) >> 1; + // the buffer is 16-bit, so we should copy data as it would be uint16_t + uint16_t *buf16 = (uint16_t *)buf; + for (i = 0; i < N2; i++){ + endpoints[number].tx_buf[i] = buf16[i]; + } + USB_BTABLE->EP[number].USB_COUNT_TX = size; +} + +/** + * Write data to EP buffer (called outside IRQ handler) + * @param number - EP number + * @param *buf - array with data + * @param size - its size + */ +void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size){ + uint16_t status = USB->EPnR[number]; + EP_WriteIRQ(number, buf, size); + status = SET_NAK_RX(status); + status = SET_VALID_TX(status); + status = KEEP_DTOG_TX(status); + status = KEEP_DTOG_RX(status); + USB->EPnR[number] = status; +} + +/* + * Copy data from EP buffer into user buffer area + * @param *buf - user array for data + * @return amount of data read + */ +int EP_Read(uint8_t number, uint8_t *buf){ + int n = endpoints[number].rx_cnt; + if(n){ + for(int i = 0; i < n; ++i) + buf[i] = endpoints[number].rx_buf[i]; + } + return n; +} + +// USB status +uint8_t USB_GetState(){ + return USB_Dev.USB_Status; +} diff --git a/F1-nolib/F1_testbrd/usb_lib.h b/F1-nolib/F1_testbrd/usb_lib.h new file mode 100644 index 0000000..0651e5f --- /dev/null +++ b/F1-nolib/F1_testbrd/usb_lib.h @@ -0,0 +1,202 @@ +/* + * geany_encoding=koi8-r + * usb_lib.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#pragma once +#ifndef __USB_LIB_H__ +#define __USB_LIB_H__ + +#include +#include "usb_defs.h" + +#define EP0DATABUF_SIZE (64) + +// Max EP amount (EP0 + other used) +#define ENDPOINTS_NUM 4 +// bmRequestType & 0x7f +#define STANDARD_DEVICE_REQUEST_TYPE 0 +#define STANDARD_ENDPOINT_REQUEST_TYPE 2 +#define VENDOR_REQUEST_TYPE 0x40 +#define CONTROL_REQUEST_TYPE 0x21 +// bRequest, standard; for bmRequestType == 0x80 +#define GET_STATUS 0x00 +#define GET_DESCRIPTOR 0x06 +#define GET_CONFIGURATION 0x08 +// for bmRequestType == 0 +#define CLEAR_FEATURE 0x01 +#define SET_FEATURE 0x03 // unused +#define SET_ADDRESS 0x05 +#define SET_DESCRIPTOR 0x07 // unused +#define SET_CONFIGURATION 0x09 +// for bmRequestType == 0x81, 1 or 0xB2 +#define GET_INTERFACE 0x0A // unused +#define SET_INTERFACE 0x0B // unused +#define SYNC_FRAME 0x0C // unused +#define VENDOR_REQUEST 0x01 // unused + +// Class-Specific Control Requests +#define SEND_ENCAPSULATED_COMMAND 0x00 // unused +#define GET_ENCAPSULATED_RESPONSE 0x01 // unused +#define SET_COMM_FEATURE 0x02 // unused +#define GET_COMM_FEATURE 0x03 // unused +#define CLEAR_COMM_FEATURE 0x04 // unused +#define SET_LINE_CODING 0x20 +#define GET_LINE_CODING 0x21 +#define SET_CONTROL_LINE_STATE 0x22 +#define SEND_BREAK 0x23 + +// control line states +#define CONTROL_DTR 0x01 +#define CONTROL_RTS 0x02 + +// wValue +#define DEVICE_DESCRIPTOR 0x100 +#define CONFIGURATION_DESCRIPTOR 0x200 +#define STRING_LANG_DESCRIPTOR 0x300 +#define STRING_MAN_DESCRIPTOR 0x301 +#define STRING_PROD_DESCRIPTOR 0x302 +#define STRING_SN_DESCRIPTOR 0x303 +#define DEVICE_QUALIFIER_DESCRIPTOR 0x600 + +// EPnR bits manipulation +#define CLEAR_DTOG_RX(R) (R & USB_EPnR_DTOG_RX) ? R : (R & (~USB_EPnR_DTOG_RX)) +#define SET_DTOG_RX(R) (R & USB_EPnR_DTOG_RX) ? (R & (~USB_EPnR_DTOG_RX)) : R +#define TOGGLE_DTOG_RX(R) (R | USB_EPnR_DTOG_RX) +#define KEEP_DTOG_RX(R) (R & (~USB_EPnR_DTOG_RX)) +#define CLEAR_DTOG_TX(R) (R & USB_EPnR_DTOG_TX) ? R : (R & (~USB_EPnR_DTOG_TX)) +#define SET_DTOG_TX(R) (R & USB_EPnR_DTOG_TX) ? (R & (~USB_EPnR_DTOG_TX)) : R +#define TOGGLE_DTOG_TX(R) (R | USB_EPnR_DTOG_TX) +#define KEEP_DTOG_TX(R) (R & (~USB_EPnR_DTOG_TX)) +#define SET_VALID_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX) | (R & (~USB_EPnR_STAT_RX)) +#define SET_NAK_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX_1) | (R & (~USB_EPnR_STAT_RX)) +#define SET_STALL_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX_0) | (R & (~USB_EPnR_STAT_RX)) +#define KEEP_STAT_RX(R) (R & (~USB_EPnR_STAT_RX)) +#define SET_VALID_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX) | (R & (~USB_EPnR_STAT_TX)) +#define SET_NAK_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX_1) | (R & (~USB_EPnR_STAT_TX)) +#define SET_STALL_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX_0) | (R & (~USB_EPnR_STAT_TX)) +#define KEEP_STAT_TX(R) (R & (~USB_EPnR_STAT_TX)) +#define CLEAR_CTR_RX(R) (R & (~USB_EPnR_CTR_RX)) +#define CLEAR_CTR_TX(R) (R & (~USB_EPnR_CTR_TX)) +#define CLEAR_CTR_RX_TX(R) (R & (~(USB_EPnR_CTR_TX | USB_EPnR_CTR_RX))) + +// USB state: uninitialized, addressed, ready for use +#define USB_DEFAULT_STATE 0 +#define USB_ADRESSED_STATE 1 +#define USB_CONFIGURE_STATE 2 + +// EP types +#define EP_TYPE_BULK 0x00 +#define EP_TYPE_CONTROL 0x01 +#define EP_TYPE_ISO 0x02 +#define EP_TYPE_INTERRUPT 0x03 + +#define LANG_US (uint16_t)0x0409 + +#define _USB_STRING_(name, str) \ +static const struct name \ +{ \ + uint8_t bLength; \ + uint8_t bDescriptorType; \ + uint16_t bString[(sizeof(str) - 2) / 2]; \ + \ +} \ +name = {sizeof(name), 0x03, str} + +#define _USB_LANG_ID_(name, lng_id) \ + \ +static const struct name \ +{ \ + uint8_t bLength; \ + uint8_t bDescriptorType; \ + uint16_t bString; \ + \ +} \ +name = {0x04, 0x03, lng_id} +#define STRING_LANG_DESCRIPTOR_SIZE_BYTE (4) + +// EP0 configuration packet +typedef struct { + uint8_t bmRequestType; + uint8_t bRequest; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} config_pack_t; + +// endpoints state +typedef struct __ep_t{ + uint16_t *tx_buf; // transmission buffer address + uint8_t *rx_buf; // reception buffer address + uint16_t (*func)(); // endpoint action function + uint16_t status; // status flags + unsigned rx_cnt : 10; // received data counter + unsigned tx_flag : 1; // transmission flag + unsigned rx_flag : 1; // reception flag + unsigned setup_flag : 1; // this is setup packet (only for EP0) +} ep_t; + +// USB status & its address +typedef struct { + uint8_t USB_Status; + uint16_t USB_Addr; +}usb_dev_t; + +typedef struct { + uint32_t dwDTERate; + uint8_t bCharFormat; + #define USB_CDC_1_STOP_BITS 0 + #define USB_CDC_1_5_STOP_BITS 1 + #define USB_CDC_2_STOP_BITS 2 + uint8_t bParityType; + #define USB_CDC_NO_PARITY 0 + #define USB_CDC_ODD_PARITY 1 + #define USB_CDC_EVEN_PARITY 2 + #define USB_CDC_MARK_PARITY 3 + #define USB_CDC_SPACE_PARITY 4 + uint8_t bDataBits; +} __attribute__ ((packed)) usb_LineCoding; + +typedef struct { + uint8_t bmRequestType; + uint8_t bNotificationType; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} __attribute__ ((packed)) usb_cdc_notification; + +extern ep_t endpoints[]; + +void USB_Init(); +uint8_t USB_GetState(); +int EP_Init(uint8_t number, uint8_t type, uint16_t txsz, uint16_t rxsz, uint16_t (*func)(ep_t ep)); +void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size); +void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size); +int EP_Read(uint8_t number, uint8_t *buf); +usb_LineCoding getLineCoding(); + + +void WEAK linecoding_handler(usb_LineCoding *lc); +void WEAK clstate_handler(uint16_t val); +void WEAK break_handler(); +void WEAK vendor_handler(config_pack_t *packet); + +#endif // __USB_LIB_H__ diff --git a/F1-nolib/inc/Fx/stm32f1.h b/F1-nolib/inc/Fx/stm32f1.h index 4b0d682..864ec67 100644 --- a/F1-nolib/inc/Fx/stm32f1.h +++ b/F1-nolib/inc/Fx/stm32f1.h @@ -179,6 +179,16 @@ IDR - input, ODR - output (or pullups management), #define CRH(pin, cnfmode) ((cnfmode) << ((pin-8)*4)) +/************************* ADC *************************/ +/* inner termometer calibration values + * Temp = (V25 - Vsense)/Avg_Slope + 25 + */ +#define VREFINT_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7BA)) + +/************************* IWDG *************************/ +#define IWDG_REFRESH (uint32_t)(0x0000AAAA) +#define IWDG_WRITE_ACCESS (uint32_t)(0x00005555) +#define IWDG_START (uint32_t)(0x0000CCCC) #if 0 @@ -190,7 +200,6 @@ IDR - input, ODR - output (or pullups management), #define TEMP110_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7C2)) #define TEMP30_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7B8)) // VDDA_Actual = 3.3V * VREFINT_CAL / average vref value -#define VREFINT_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7BA)) #define VDD_CALIB ((uint16_t) (330)) #define VDD_APPLI ((uint16_t) (300)) @@ -200,11 +209,6 @@ IDR - input, ODR - output (or pullups management), // set address/character match value #define USART_CR2_ADD_VAL(x) ((x) << USART_CR2_ADD_SHIFT) -/************************* IWDG *************************/ -#define IWDG_REFRESH (uint32_t)(0x0000AAAA) -#define IWDG_WRITE_ACCESS (uint32_t)(0x00005555) -#define IWDG_START (uint32_t)(0x0000CCCC) - //#define do{}while(0)