<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622b2e9fff7f9c46a6899d12/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2e9fff7f9c46a6899d12/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"><span class="fc1 sc0">1</span></div><div class="t m0 x2 h3 y2 ff1 fs1 fc0 sc0 ls1 ws1">A<span class="_ _0"></span>T91 Librar<span class="_ _1"></span>y V2.0</div><div class="t m0 x3 h4 y3 ff1 fs2 fc0 sc0 ls2 ws0">Scope</div><div class="t m0 x3 h2 y4 ff2 fs0 fc0 sc0 ls3 ws2">This d<span class="_ _1"></span>ocument d<span class="_ _1"></span>escribes<span class="_ _1"></span> the con<span class="_ _1"></span>tents of th<span class="_ _1"></span>e AT91 <span class="_ _1"></span>Librar<span class="_ _1"></span>y V2.0, e<span class="_ _1"></span>xplains<span class="_ _1"></span> its us<span class="_ _1"></span>es and</div><div class="t m0 x3 h2 y5 ff2 fs0 fc0 sc0 ls4 ws3">define<span class="_ _1"></span>s the nami<span class="_ _1"></span>ng and co<span class="_ _1"></span>ding ru<span class="_ _1"></span>les used <span class="_ _1"></span>in the <span class="_ _1"></span>source <span class="_ _1"></span>files. It a<span class="_ _1"></span>pplies <span class="_ _1"></span>to version<span class="_ _1"></span> 2.0.</div><div class="t m0 x3 h2 y6 ff2 fs0 fc0 sc0 ls5 ws4">The sect<span class="_ _1"></span>ion “G<span class="_ _1"></span>etting<span class="_ _1"></span> Started<span class="_ _1"></span> with the<span class="_ _1"></span> AT91 Li<span class="_ _1"></span>brary” on pa<span class="_ _1"></span>ge 4 provi<span class="_ _1"></span>des ins<span class="_ _1"></span>tallati<span class="_ _1"></span>on</div><div class="t m0 x3 h2 y7 ff2 fs0 fc0 sc0 ls6 ws5">instruc<span class="_ _1"></span>tions to<span class="_ _1"></span> get up and <span class="_ _1"></span>running q<span class="_ _1"></span>uickly. </div><div class="t m0 x3 h4 y8 ff1 fs2 fc0 sc0 ls7 ws6">What is the A<span class="_ _0"></span>T91 Librar<span class="_ _1"></span>y?</div><div class="t m0 x3 h2 y9 ff2 fs0 fc0 sc0 ls8 ws7">The AT91 Library is a set of C and assembly source code m<span class="_ _1"></span>odules and project files</div><div class="t m0 x3 h2 ya ff2 fs0 fc0 sc0 ls9 ws7">that enable AT91 dev<span class="_ _1"></span>elopers to quickly <span class="_ _1"></span>and easily define the <span class="_ _1"></span>architecture and <span class="_ _1"></span>the</div><div class="t m0 x3 h2 yb ff2 fs0 fc0 sc0 lsa ws8">periphe<span class="_ _1"></span>rals of t<span class="_ _1"></span>heir intend<span class="_ _1"></span>ed appl<span class="_ _1"></span>ication,<span class="_ _1"></span> using an<span class="_ _1"></span>y of the<span class="_ _1"></span> supported t<span class="_ _1"></span>oolkits<span class="_ _1"></span>. </div><div class="t m0 x3 h2 yc ff2 fs0 fc0 sc0 lsb ws9">This A<span class="_ _1"></span>T91 Lib<span class="_ _1"></span>rary soft<span class="_ _1"></span>ware pac<span class="_ _1"></span>kage sup<span class="_ _1"></span>ports al<span class="_ _1"></span>l the AT<span class="_ _1"></span>91 AR<span class="_ _1"></span>M Thumb <span class="_ _1"></span>microcont<span class="_ _1"></span>rol-</div><div class="t m0 x3 h2 yd ff2 fs0 fc0 sc0 ls6 ws5">lers an<span class="_ _1"></span>d the assoc<span class="_ _1"></span>iated eva<span class="_ _1"></span>luation b<span class="_ _1"></span>oards.</div><div class="t m0 x3 h2 ye ff2 fs0 fc0 sc0 lsc wsa">The AT91 <span class="_ _1"></span>Librar<span class="_ _1"></span>y V2.0 co<span class="_ _1"></span>ntains: </div><div class="t m0 x3 h2 yf ff2 fs0 fc0 sc0 lsd wsb">•<span class="_ _2"> </span>Header fi<span class="_ _1"></span>les in C <span class="_ _1"></span>that define <span class="_ _1"></span>the A<span class="_ _3"></span>T91 per<span class="_ _1"></span>ipheral<span class="_ _1"></span>s and par<span class="_ _4"></span>ts </div><div class="t m0 x3 h2 y10 ff2 fs0 fc0 sc0 lse wsc">•<span class="_ _2"> </span>Assembly Incl<span class="_ _1"></span>ude files<span class="_ _1"></span> that defi<span class="_ _1"></span>ne the A<span class="_ _3"></span>T91 p<span class="_ _1"></span>eri<span class="_ _1"></span>pheral and p<span class="_ _1"></span>ar<span class="_ _1"></span>t ass<span class="_ _1"></span>embly langua<span class="_ _1"></span>ge</div><div class="t m0 x3 h2 y11 ff2 fs0 fc0 sc0 ls6 wsc">•<span class="_ _2"> </span>Example<span class="_ _1"></span>s of how to acc<span class="_ _1"></span>ess the<span class="_ _1"></span> A<span class="_ _0"></span>T9<span class="_ _1"></span>1 per<span class="_ _1"></span>ipherals <span class="_ _1"></span>with or wi<span class="_ _1"></span>thout inter<span class="_ _1"></span>rup<span class="_ _1"></span>t handling</div><div class="t m0 x3 h2 y12 ff2 fs0 fc0 sc0 lsd wsb">•<span class="_ _2"> </span>C star<span class="_ _1"></span>t-<span class="_ _1"></span>up files th<span class="_ _1"></span>at explain how to boot a<span class="_ _1"></span>n A<span class="_ _3"></span>T91 par<span class="_ _4"></span>t, and <span class="_ _1"></span>how to branch on <span class="_ _1"></span>the </div><div class="t m0 x4 h2 y13 ff2 fs0 fc0 sc0 lsd wsb">main C func<span class="_ _1"></span>tion</div><div class="t m0 x3 h2 y14 ff2 fs0 fc0 sc0 lsf wsd">•<span class="_ _2"> </span>Project<span class="_ _1"></span> e<span class="_ _5"></span>xamples<span class="_ _1"></span> that show dif<span class="_ _1"></span>f<span class="_ _5"></span>erent as<span class="_ _1"></span>pects o<span class="_ _1"></span>f the de<span class="_ _1"></span>bug f<span class="_ _5"></span>eatures, such a<span class="_ _1"></span>s semi-</div><div class="t m0 x4 h2 y15 ff2 fs0 fc0 sc0 lsd ws0">hosting</div><div class="t m0 x3 h2 y16 ff2 fs0 fc0 sc0 lsd wsb">•<span class="_ _2"> </span>T<span class="_ _3"></span>arget tool<span class="_ _1"></span>s with whic<span class="_ _1"></span>h to e<span class="_ _5"></span>valuate the A<span class="_ _3"></span>T9<span class="_ _1"></span>1 par<span class="_ _1"></span>ts</div><div class="t m0 x3 h2 y17 ff2 fs0 fc0 sc0 ls10 wse">The AT91 Lib<span class="_ _1"></span>rary V2.0<span class="_ _1"></span> also provides<span class="_ _1"></span> one softwar<span class="_ _1"></span>e library for ea<span class="_ _1"></span>ch of the <span class="_ _1"></span>supported</div><div class="t m0 x3 h2 y18 ff2 fs0 fc0 sc0 lsf wsf">parts a<span class="_ _1"></span>nd one co<span class="_ _1"></span>mmon sof<span class="_ _1"></span>tware <span class="_ _1"></span>library <span class="_ _1"></span>for the c<span class="_ _1"></span>omple<span class="_ _1"></span>te set of <span class="_ _1"></span>drivers<span class="_ _1"></span>. All pr<span class="_ _1"></span>ojects an<span class="_ _1"></span>d</div><div class="t m0 x3 h2 y19 ff2 fs0 fc0 sc0 ls3 ws2">tools us<span class="_ _1"></span>e these libr<span class="_ _1"></span>aries by<span class="_ _1"></span> mounting <span class="_ _1"></span>a part li<span class="_ _1"></span>brary <span class="_ _1"></span>and, if re<span class="_ _1"></span>quired, the d<span class="_ _1"></span>river li<span class="_ _1"></span>brary.</div><div class="t m0 x3 h4 y1a ff1 fs2 fc0 sc0 ls11 ws10">Definition of T<span class="_ _6"></span>erms</div><div class="t m0 x3 h2 y1b ff2 fs0 fc0 sc0 ls0 ws0">•<span class="_ _7"> </span><span class="ff1 ls12">Device</span><span class="ls13 ws11"> is us<span class="_ _1"></span>ed to indic<span class="_ _1"></span>ate device<span class="_ _1"></span>s used<span class="_ _1"></span> by the opera<span class="_ _1"></span>ting sys<span class="_ _1"></span>tems, suc<span class="_ _1"></span>h as Flash</span></div><div class="t m0 x4 h2 y1c ff2 fs0 fc0 sc0 ls14 ws0">memory<span class="_ _1"></span>.</div><div class="t m0 x3 h2 y1d ff2 fs0 fc0 sc0 ls0 ws0">•<span class="_ _7"> </span><span class="ff1 ls15 ws12">Part (<span class="_ _1"></span>or pa<span class="_ _1"></span>rts)</span><span class="ls6 ws13"> is<span class="_ _1"></span> used fo<span class="_ _1"></span>r any d<span class="_ _1"></span>evice of <span class="_ _1"></span>the AT91<span class="_ _1"></span> ARM <span class="_ _1"></span>Thumb f<span class="_ _1"></span>amily</span></div><div class="t m0 x4 h2 y1e ff2 fs0 fc0 sc0 ls16 ws14">(AT91M40800, AT91M6<span class="_ _5"></span>3200, etc.). It is used instead of “<span class="_ _5"></span>device” to prevent any</div><div class="t m0 x4 h2 y1f ff2 fs0 fc0 sc0 ls3 ws2">confusi<span class="_ _1"></span>on with the <span class="_ _1"></span>devices<span class="_ _1"></span> used by<span class="_ _1"></span> the oper<span class="_ _1"></span>ating sy<span class="_ _1"></span>stems.</div><div class="t m0 x3 h2 y20 ff2 fs0 fc0 sc0 ls0 ws0">•<span class="_ _7"> </span><span class="ff1 ls17">Periph<span class="_ _1"></span></span><span class="ls18 ws15"> is used to<span class="_ _1"></span> mean pe<span class="_ _1"></span>ripherals.</span></div><div class="t m0 x3 h2 y21 ff2 fs0 fc0 sc0 ls0 ws0">•<span class="_ _7"> </span><span class="ff1 ls19 ws16">Target (o<span class="_ _5"></span>r tar<span class="_ _5"></span>gets)<span class="ff2 lsa ws17"> refers to any eval<span class="_ _1"></span>uation boar<span class="_ _1"></span>d or any custom<span class="_ _1"></span>er-spec<span class="_ _1"></span>ific boar<span class="_ _1"></span>d</span></span></div><div class="t m0 x4 h2 y22 ff2 fs0 fc0 sc0 lsb ws18">fittin<span class="_ _1"></span>g an AT9<span class="_ _1"></span>1 ARM Thu<span class="_ _1"></span>mb micr<span class="_ _1"></span>ocontro<span class="_ _1"></span>ller.</div><div class="t m0 x5 h5 y23 ff1 fs3 fc0 sc0 ls1a ws0">AT<span class="_ _8"></span>9<span class="_ _8"></span>1</div><div class="t m0 x5 h5 y24 ff1 fs3 fc0 sc0 ls1b ws0">ARM</div><div class="t m0 x6 h6 y25 ff1 fs4 fc0 sc0 ls0 ws0">®</div><div class="t m0 x7 h5 y26 ff1 fs3 fc0 sc0 ls1c ws19"> Thumb</div><div class="t m0 x8 h6 y25 ff1 fs4 fc0 sc0 ls0 ws0">®</div><div class="t m0 x9 h5 y26 ff1 fs3 fc0 sc0 ls0 ws0"> </div><div class="t m0 x5 h5 y27 ff1 fs3 fc0 sc0 ls1d ws0">Micr<span class="_ _5"></span>ocontr<span class="_ _5"></span>o<span class="_ _5"></span>ller<span class="_ _5"></span>s</div><div class="t m0 x5 h5 y28 ff1 fs3 fc0 sc0 ls1e ws0">Application</div><div class="t m0 x5 h5 y29 ff1 fs3 fc0 sc0 ls1d ws0">Note</div><div class="t m0 xa h7 y2a ff2 fs5 fc0 sc0 ls1f ws1a">Rev<span class="_ _5"></span>. 1385<span class="_ _5"></span>A–11<span class="_ _5"></span>/00</div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2e9fff7f9c46a6899d12/bg2.jpg"><div class="t m1 xb h5 y2b ff1 fs3 fc0 sc0 ls20 ws1b">AT91 ARM Thumb</div><div class="t m1 xc h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">2</div><div class="t m1 x3 h4 y2c ff1 fs2 fc0 sc0 ls21 ws0">Wa<span class="_ _4"></span>r<span class="_ _4"></span>n<span class="_ _4"></span>i<span class="_ _4"></span>n<span class="_ _4"></span>g<span class="_ _4"></span>s</div><div class="t m1 x3 h8 y2d ff1 fs6 fc0 sc0 ls22 ws1c">Bac<span class="_ _5"></span>k<span class="_ _5"></span>war<span class="_ _5"></span>d Compatibili<span class="_ _5"></span>ty </div><div class="t m1 x3 h2 y2e ff2 fs0 fc0 sc0 lsf wse">The AT91 Lib<span class="_ _1"></span>rary V2<span class="_ _1"></span>.0 is not comp<span class="_ _1"></span>atible with th<span class="_ _1"></span>e previou<span class="_ _1"></span>s version,<span class="_ _1"></span> which was pr<span class="_ _1"></span>ovided as an<span class="_ _1"></span> example for<span class="_ _1"></span> developing an<span class="_ _1"></span>d</div><div class="t m1 x3 h2 y2f ff2 fs0 fc0 sc0 ls4 ws3">running<span class="_ _1"></span> code for<span class="_ _1"></span> the AT9<span class="_ _1"></span>1M40400<span class="_ _1"></span> only.</div><div class="t m1 x3 h8 y30 ff1 fs6 fc0 sc0 ls23 ws0">W<span class="_ _6"></span>a<span class="_ _1"></span>rranty </div><div class="t m1 x3 h2 y31 ff2 fs0 fc0 sc0 ls4 ws3">All del<span class="_ _1"></span>ivered <span class="_ _1"></span>source<span class="_ _1"></span>s are fr<span class="_ _1"></span>ee of charge<span class="_ _1"></span> and c<span class="_ _1"></span>an be copi<span class="_ _1"></span>ed or mo<span class="_ _1"></span>dified wit<span class="_ _1"></span>hout aut<span class="_ _1"></span>horizat<span class="_ _1"></span>ion.</div><div class="t m1 x3 h2 y32 ff2 fs0 fc0 sc0 ls24 ws1d">The softwa<span class="_ _1"></span>re is de<span class="_ _1"></span>livered <span class="_ _1"></span>“as is<span class="_ _1"></span>”, without wa<span class="_ _1"></span>rranty or <span class="_ _1"></span>conditi<span class="_ _1"></span>on of any <span class="_ _1"></span>kind, e<span class="_ _1"></span>ither exp<span class="_ _1"></span>ress, impli<span class="_ _1"></span>ed or sta<span class="_ _1"></span>tutory.<span class="_ _1"></span> This</div><div class="t m1 x3 h2 y33 ff2 fs0 fc0 sc0 lsf wsf">include<span class="_ _1"></span>s, with<span class="_ _1"></span>out limita<span class="_ _1"></span>tion, any w<span class="_ _1"></span>arranty<span class="_ _1"></span> or conditi<span class="_ _1"></span>on with res<span class="_ _1"></span>pect to me<span class="_ _1"></span>rchantab<span class="_ _1"></span>ility or fi<span class="_ _1"></span>tness for<span class="_ _1"></span> any par<span class="_ _1"></span>ticular pur<span class="_ _1"></span>pose, <span class="_ _1"></span><span class="ls25 ws0">or</span></div><div class="t m1 x3 h2 y34 ff2 fs0 fc0 sc0 lsa ws8">against <span class="_ _1"></span>the infri<span class="_ _1"></span>ngemen<span class="_ _1"></span>ts of intel<span class="_ _1"></span>lectual pr<span class="_ _1"></span>operty r<span class="_ _1"></span>ights o<span class="_ _1"></span>f others.</div><div class="t m1 x3 h4 y35 ff1 fs2 fc0 sc0 ls26 ws1e">A<span class="_ _0"></span>T91 Library Rules</div><div class="t m1 x3 h2 y36 ff2 fs0 fc0 sc0 ls4 ws3">These rul<span class="_ _1"></span>es are <span class="_ _1"></span>used to im<span class="_ _1"></span>prove rea<span class="_ _1"></span>dabil<span class="_ _1"></span>ity and to<span class="_ _1"></span> obtain in<span class="_ _1"></span>format<span class="_ _1"></span>ion on the <span class="_ _1"></span>library t<span class="_ _1"></span>ools.</div><div class="t m1 x3 h8 y37 ff1 fs6 fc0 sc0 ls27 ws1f">File Naming and Extensions</div><div class="t m1 x3 h2 y38 ff2 fs0 fc0 sc0 ls6 ws20">File names<span class="_ _1"></span> are wr<span class="_ _1"></span>itten in l<span class="_ _1"></span>owercase to <span class="_ _1"></span>ensure m<span class="_ _1"></span>aximum com<span class="_ _1"></span>patibili<span class="_ _1"></span>ty with al<span class="_ _1"></span>l operating<span class="_ _1"></span> systems<span class="_ _1"></span> that th<span class="_ _1"></span>e develo<span class="_ _1"></span>pment to<span class="_ _1"></span>ols</div><div class="t m1 x3 h2 y39 ff2 fs0 fc0 sc0 ls28 ws21">may run<span class="_ _1"></span> on.</div><div class="t m1 x3 h2 y3a ff1 fs0 fc0 sc0 ls18 ws15">T<span class="_ _6"></span>able 1. <span class="ff2 ls25 ws22">Fil<span class="_ _1"></span>e Names an<span class="_ _1"></span>d Extensio<span class="_ _1"></span>ns</span></div><div class="t m1 xd h9 y3b ff1 fs7 fc0 sc0 ls29 ws23">File T<span class="_ _6"></span>ype<span class="_ _9"> </span>File Format<span class="_ _a"> </span>Comments</div><div class="t m1 xd h9 y3c ff2 fs7 fc0 sc0 ls2a ws24">Head<span class="_ _1"></span>er fi<span class="_ _1"></span>les<span class="_ _b"> </span><span class="ff3 ls0 ws0"><periph_name>.h</span></div><div class="t m1 xe ha y3d ff3 fs7 fc0 sc0 ls0 ws0"><driver_name>.h</div><div class="t m1 xf h9 y3e ff2 fs7 fc0 sc0 ls2b ws25">F<span class="_ _5"></span>or exam<span class="_ _1"></span>ple, th<span class="_ _1"></span>e USART he<span class="_ _1"></span>ader<span class="_ _1"></span> file<span class="_ _1"></span> is <span class="ff3 ls0 ws0">usart.h</span><span class="ls2c ws26"> and the </span></div><div class="t m1 xf h9 y3d ff2 fs7 fc0 sc0 ls2d ws27">wa<span class="_ _5"></span>it drive<span class="_ _5"></span>r interf<span class="_ _6"></span>ace header file <span class="_ _5"></span>is <span class="ff3 ls0 ws0">wait.h<span class="ff2">.</span></span></div><div class="t m1 xd h9 y3f ff2 fs7 fc0 sc0 ls2e ws28">Assemb<span class="_ _5"></span>l<span class="_ _5"></span>y Include<span class="_ _5"></span> files<span class="_ _c"> </span><span class="ff3 ls0 ws0"><periph_name></span><span class="ls2f ws29">.inc<span class="_ _d"> </span>F<span class="_ _5"></span>or e<span class="_ _5"></span>xamp<span class="_ _5"></span>le, the<span class="_ _5"></span> assemb<span class="_ _5"></span>l<span class="_ _5"></span>y includ<span class="_ _5"></span>e file f<span class="_ _5"></span>or<span class="_ _5"></span> the USAR<span class="_ _5"></span>T is </span></div><div class="t m1 xf h9 y40 ff3 fs7 fc0 sc0 ls0 ws0">usart.inc<span class="ff2">.</span></div><div class="t m1 xd h9 y41 ff2 fs7 fc0 sc0 ls30 ws2a">C Lib<span class="_ _1"></span>rar<span class="_ _1"></span>y fil<span class="_ _1"></span>es<span class="_ _e"> </span><span class="ff3 ls0 ws0">lib_<periph_name>.c<span class="_ _f"> </span></span><span class="ls2e ws28">Contai<span class="_ _5"></span>ns the li<span class="_ _5"></span>brary functi<span class="_ _5"></span>ons</span></div><div class="t m1 xd h9 y42 ff2 fs7 fc0 sc0 ls2f ws29">Prototypi<span class="_ _5"></span>ng Head<span class="_ _5"></span>er files<span class="_ _10"> </span>F<span class="_ _5"></span>or C f<span class="_ _5"></span>ile <span class="ff3 ls0 ws0"><c_file>.c<span class="ff2 ls31">, </span></span></div><div class="t m1 xe h9 y43 ff2 fs7 fc0 sc0 ls32 ws2b">protot<span class="_ _5"></span>yping he<span class="_ _5"></span>ader fil<span class="_ _5"></span>e is </div><div class="t m1 xe ha y44 ff3 fs7 fc0 sc0 ls0 ws0"><c_file>.h</div><div class="t m1 xf h9 y45 ff2 fs7 fc0 sc0 ls33 ws2c">Each C<span class="_ _5"></span> file has <span class="_ _5"></span>a C head<span class="_ _5"></span>er file tha<span class="_ _5"></span>t prototy<span class="_ _5"></span>pes the <span class="_ _5"></span>functions<span class="_ _5"></span> </div><div class="t m1 xf h9 y43 ff2 fs7 fc0 sc0 ls34 ws2d">of the C<span class="_ _5"></span> file.<span class="_ _5"></span> This h<span class="_ _5"></span>eader file<span class="_ _5"></span> also<span class="_ _5"></span> define<span class="_ _5"></span>s the des<span class="_ _5"></span>criptor of </div><div class="t m1 xf h9 y44 ff2 fs7 fc0 sc0 ls35 ws2e">the dr<span class="_ _1"></span>ivers.</div><div class="t m1 xd h9 y46 ff2 fs7 fc0 sc0 ls36 ws2f">Assemb<span class="_ _5"></span>ly Source fi<span class="_ _5"></span>les<span class="_ _11"> </span><span class="ff3 ls0 ws0">.s</span><span class="ls32 ws2b"> e<span class="_ _5"></span>xten<span class="_ _5"></span>sion<span class="_ _12"> </span>Assemb<span class="_ _5"></span>ly s<span class="_ _5"></span>ource <span class="_ _5"></span>files are <span class="_ _5"></span>named<span class="_ _5"></span> diff<span class="_ _5"></span>erentl<span class="_ _5"></span>y from C<span class="_ _5"></span> files in<span class="_ _5"></span> </span></div><div class="t m1 xf h9 y47 ff2 fs7 fc0 sc0 ls32 ws2b">order <span class="_ _5"></span>to pre<span class="_ _5"></span>v<span class="_ _5"></span>ent<span class="_ _5"></span> the creati<span class="_ _5"></span>on of an o<span class="_ _5"></span>bject <span class="_ _5"></span>file name<span class="_ _5"></span> with </div><div class="t m1 xf h9 y48 ff2 fs7 fc0 sc0 ls37 ws0">ex<span class="_ _1"></span>t<span class="_ _1"></span>e<span class="_ _1"></span>n<span class="_ _1"></span>s<span class="_ _1"></span>i<span class="_ _1"></span>o<span class="_ _1"></span>n<span class="_ _1"></span> <span class="_ _1"></span><span class="ff3 ls0">.o</span><span class="ls38 ws30">, wh<span class="_ _5"></span>ich nega<span class="_ _5"></span>tes both s<span class="_ _5"></span>ets of fil<span class="_ _5"></span>es<span class="_ _5"></span>.</span></div><div class="t m1 xf h9 y49 ff2 fs7 fc0 sc0 ls2f ws29">Assemb<span class="_ _5"></span>ly c<span class="_ _5"></span>oding is<span class="_ _5"></span> require<span class="_ _5"></span>d f<span class="_ _5"></span>or interrupt <span class="_ _5"></span>handling<span class="_ _5"></span> (at least </div><div class="t m1 xf h9 y4a ff2 fs7 fc0 sc0 ls39 ws31">inte<span class="_ _1"></span>rr<span class="_ _1"></span>upt ha<span class="_ _1"></span>ndl<span class="_ _1"></span>er ent<span class="_ _1"></span>r<span class="_ _1"></span>y an<span class="_ _1"></span>d exit).<span class="_ _1"></span> </div><div class="t m1 xd h9 y4b ff2 fs7 fc0 sc0 ls3a ws32">Assemb<span class="_ _5"></span>l<span class="_ _5"></span>y Macro f<span class="_ _5"></span>iles<span class="_ _13"> </span><span class="ff3 ls0 ws0">.mac</span><span class="ls3b ws33"> extension<span class="_ _14"> </span>The as<span class="_ _1"></span>sembly<span class="_ _1"></span> macro f<span class="_ _1"></span>ile<span class="_ _1"></span> names<span class="_ _1"></span> have the extensio<span class="_ _1"></span>n<span class="ff4 ls0 ws0"> <span class="ff3">.mac<span class="ff2"> </span></span></span></span></div><div class="t m1 xf h9 y4c ff2 fs7 fc0 sc0 ls22 ws34">(and not <span class="ff3 ls0 ws0">.s</span><span class="ls34 ws2d"> as<span class="_ _5"></span> gener<span class="_ _5"></span>ally us<span class="_ _5"></span>ed in the<span class="_ _5"></span> ARM e<span class="_ _5"></span>x<span class="_ _5"></span>amples).</span></div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2e9fff7f9c46a6899d12/bg3.jpg"><div class="t m1 x10 h5 y4d ff1 fs3 fc0 sc0 ls3c ws35">AT91 ARM Thumb</div><div class="t m1 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">3</div><div class="t m1 x3 h4 y2c ff1 fs2 fc0 sc0 ls3d ws36">Coding Rules</div><div class="t m1 x3 h8 y2d ff1 fs6 fc0 sc0 ls3e ws0">Constants</div><div class="t m1 x3 h2 y2e ff2 fs0 fc0 sc0 lsf wsd">All ass<span class="_ _1"></span>embly o<span class="_ _1"></span>r C constan<span class="_ _1"></span>ts ar<span class="_ _1"></span>e defined i<span class="_ _1"></span>n upperc<span class="_ _1"></span>ase.</div><div class="t m1 x3 h2 y4e ff2 fs0 fc0 sc0 lsa wsd">The co<span class="_ _1"></span>nstant nam<span class="_ _1"></span>es have<span class="_ _1"></span> the form<span class="_ _1"></span>at <span class="ff3 ls3f ws0"><periph_short>_<field><span class="ff2 ls40">. </span><periph_short></span><span class="lsd wsb"> is <span class="_ _1"></span>the name us<span class="_ _1"></span>ed in th<span class="_ _1"></span>e datashe<span class="_ _1"></span>et</span></div><div class="t m1 x3 h2 y4f ff2 fs0 fc0 sc0 lsd wsb">(US for<span class="_ _1"></span> the USART, AI<span class="_ _1"></span>C for the AI<span class="_ _1"></span>C, etc.). <span class="ff3 ls3f ws0"><field></span> r<span class="_ _1"></span>efers to the n<span class="_ _1"></span>ame of th<span class="_ _1"></span>e register fie<span class="_ _1"></span>lds as d<span class="_ _1"></span>escribed in th<span class="_ _1"></span>e datashee<span class="_ _1"></span>t.</div><div class="t m1 x3 h8 y50 ff1 fs6 fc0 sc0 ls41 ws37">P<span class="_ _5"></span>eripheral Structure Definitions</div><div class="t m1 x3 h2 y51 ff2 fs0 fc0 sc0 ls42 ws38">Each AT91 <span class="_ _1"></span>peripheral is d<span class="_ _1"></span>escribed by a C <span class="_ _1"></span>structure. This<span class="_ _1"></span> structure <span class="_ _1"></span>is composed <span class="_ _1"></span>of registers and a<span class="_ _1"></span> correspond<span class="_ _1"></span>ing list of</div><div class="t m1 x3 h2 y52 ff2 fs0 fc0 sc0 ls12 ws0">offsets.</div><div class="t m1 x3 h2 y53 ff2 fs0 fc0 sc0 lsf ws39">This stru<span class="_ _1"></span>cture ena<span class="_ _1"></span>bles a modul<span class="_ _1"></span>ar arch<span class="_ _1"></span>itecture t<span class="_ _1"></span>hat can be use<span class="_ _1"></span>d with any perip<span class="_ _1"></span>heral. T<span class="_ _1"></span>he periphe<span class="_ _1"></span>ral base<span class="_ _1"></span> address iden<span class="_ _1"></span>tifies</div><div class="t m1 x3 h2 y54 ff2 fs0 fc0 sc0 ls4 ws3">the peri<span class="_ _1"></span>pheral.</div><div class="t m1 x3 h8 y55 ff1 fs6 fc0 sc0 ls1e ws3a">File Inc<span class="_ _5"></span>lusions</div><div class="t m1 x3 h2 y56 ff2 fs0 fc0 sc0 ls42 ws38">All AT91 Library header files are protected against multiple i<span class="_ _1"></span>nclusion – each file can be defined only once. Each Libr<span class="_ _1"></span>ary</div><div class="t m1 x3 h2 y57 ff2 fs0 fc0 sc0 ls6 ws5">header fi<span class="_ _1"></span>le can i<span class="_ _1"></span>nclude a<span class="_ _1"></span>nother he<span class="_ _1"></span>ader file.</div><div class="t m1 x3 h8 y58 ff1 fs6 fc0 sc0 ls43 ws3b">Function name</div><div class="t m1 x3 h2 y59 ff2 fs0 fc0 sc0 lsa ws8">All func<span class="_ _1"></span>tions of <span class="_ _1"></span>the AT91<span class="_ _1"></span> Library h<span class="_ _1"></span>ave one o<span class="_ _1"></span>f the fol<span class="_ _1"></span>lowing na<span class="_ _1"></span>mes:</div><div class="t m1 x3 h2 y5a ff2 fs0 fc0 sc0 ls18 ws0">•<span class="_ _7"> </span>at91_<mod<span class="_ _1"></span>ule>_ope<span class="_ _1"></span>n</div><div class="t m1 x3 h2 y5b ff2 fs0 fc0 sc0 ls18 ws0">•<span class="_ _7"> </span>at91_<mod<span class="_ _1"></span>ule>_c<span class="_ _1"></span>lose</div><div class="t m1 x3 h2 y5c ff2 fs0 fc0 sc0 ls18 ws0">•<span class="_ _7"> </span>at91_<mod<span class="_ _1"></span>ule>_get<span class="_ _1"></span>_status</div><div class="t m1 x3 h2 y5d ff2 fs0 fc0 sc0 ls6 ws0">•<span class="_ _7"> </span>at91_<mod<span class="_ _1"></span>ule>_tr<span class="_ _1"></span>ig_cmd</div><div class="t m1 x3 h2 y5e ff2 fs0 fc0 sc0 ls18 ws0">•<span class="_ _7"> </span>at91_<mod<span class="_ _1"></span>ule>_read</div><div class="t m1 x3 h2 y5f ff2 fs0 fc0 sc0 ls44 ws0">•<span class="_ _7"> </span>at91_<mod<span class="_ _1"></span>ule>_write</div><div class="t m1 x3 h2 y60 ff2 fs0 fc0 sc0 ls18 ws0">•<span class="_ _7"> </span>at91_<mod<span class="_ _1"></span>ule>_s<span class="_ _1"></span>et_mode</div><div class="t m1 x3 h2 y61 ff2 fs0 fc0 sc0 ls45 ws1d">Each of<span class="_ _5"></span> thes<span class="_ _5"></span>e name<span class="_ _5"></span>s corr<span class="_ _5"></span>espond<span class="_ _5"></span>s to <span class="_ _5"></span>a logica<span class="_ _5"></span>l ope<span class="_ _5"></span>ration <span class="_ _5"></span>to b<span class="_ _5"></span>e per<span class="_ _5"></span>formed o<span class="_ _5"></span>n th<span class="_ _5"></span>e per<span class="_ _5"></span>ipher<span class="_ _5"></span>al or <span class="_ _5"></span>on the<span class="_ _5"></span> driver<span class="_ _5"></span>. For<span class="_ _5"></span> exampl<span class="_ _5"></span>e,</div><div class="t m1 x3 h2 y62 ff2 fs0 fc0 sc0 ls25 ws3c">the func<span class="_ _1"></span>tion<span class="ff4 ls0 ws0"> </span><span class="ws22">at91_us<span class="_ _1"></span>art_open<span class="_ _1"></span> enables the c<span class="_ _1"></span>lock on the periphe<span class="_ _1"></span>ral, vali<span class="_ _1"></span>dates the I/O lin<span class="_ _1"></span>es and progra<span class="_ _1"></span>ms the main co<span class="_ _1"></span>nfigura-</span></div><div class="t m1 x3 h2 y63 ff2 fs0 fc0 sc0 ls6 ws5">tion reg<span class="_ _1"></span>ister of<span class="_ _1"></span> the perip<span class="_ _1"></span>heral.</div><div class="t m1 x3 h8 y64 ff1 fs6 fc0 sc0 ls46 ws0">Comments </div><div class="t m1 x3 h2 y65 ff2 fs0 fc0 sc0 lsc wsa">All C and<span class="_ _1"></span> assembl<span class="_ _1"></span>y cons<span class="_ _1"></span>tants a<span class="_ _1"></span>re comm<span class="_ _1"></span>ented. </div><div class="t m1 x3 h2 y66 ff2 fs0 fc0 sc0 ls6 ws5">The com<span class="_ _1"></span>ments are p<span class="_ _1"></span>laced bef<span class="_ _1"></span>ore the c<span class="_ _1"></span>ode lines<span class="_ _1"></span> and use<span class="_ _1"></span> the sa<span class="_ _1"></span>me indenta<span class="_ _1"></span>tion.</div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>