⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time_8c-source.html

📁 MSP acquires data and sends through USB to PC. Check the link for PC capture software and project d
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Sample MSP430-4619LCD Project: time.c Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.5.1 --><div class="tabs">  <ul>    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>    <li id="current"><a href="files.html"><span>Files</span></a></li>  </ul></div><div class="tabs">  <ul>    <li><a href="files.html"><span>File&nbsp;List</span></a></li>    <li><a href="globals.html"><span>Globals</span></a></li>  </ul></div><h1>time.c</h1><a href="time_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span><a name="l00002"></a>00002 <span class="comment"> * File:        time.c</span><a name="l00003"></a>00003 <span class="comment"> * Purpose:     Real time clock function and interrupt handler</span><a name="l00004"></a>00004 <span class="comment"> * Author:      Peter Ivanov, Olimex Ltd.</span><a name="l00005"></a>00005 <span class="comment"> * Modified by:</span><a name="l00006"></a>00006 <span class="comment"> * Created:     2007-05-19 11:29:32</span><a name="l00007"></a>00007 <span class="comment"> * Last modify: 2007-10-03 21:20:56 ivanovp {Time-stamp}</span><a name="l00008"></a>00008 <span class="comment"> * Copyright:   (C) Peter Ivanov, Olimex Ltd., 2007</span><a name="l00009"></a>00009 <span class="comment"> * Licence:     GPL</span><a name="l00010"></a>00010 <span class="comment"> */</span><a name="l00016"></a>00016 <span class="preprocessor">#include &lt;msp430xG461x.h&gt;</span><a name="l00017"></a>00017 <span class="preprocessor">#include &lt;signal.h&gt;</span><a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="time_8h.html">time.h</a>"</span><a name="l00019"></a>00019 <span class="preprocessor">#include "diskio.h"</span><a name="l00020"></a>00020 <a name="l00021"></a><a class="code" href="time_8h.html#b69c774dad0814fa066f807e4aba7fb7">00021</a> <span class="keyword">volatile</span> uint32_t <a class="code" href="time_8c.html#b69c774dad0814fa066f807e4aba7fb7">jiffies</a> = 0; <span class="comment">// counts milliseconds</span><a name="l00022"></a>00022 <a name="l00028"></a><a class="code" href="time_8c.html#83823ddc481026aea712ce81c4621b4c">00028</a> <span class="keywordtype">void</span> <a class="code" href="time_8c.html#83823ddc481026aea712ce81c4621b4c">RTC_init</a> (<span class="keywordtype">void</span>) <a name="l00029"></a>00029 {<a name="l00030"></a>00030     <span class="comment">// Real-Time Clock Control Register -&gt; ACLK, Counter Mode, 32bit overflow, enable interupt</span><a name="l00031"></a>00031     <span class="comment">//RTCCTL = RTCTEV0 + RTCIE;</span><a name="l00032"></a>00032 <a name="l00033"></a>00033     <span class="comment">// Enable Timer Interupt (RTC in counter mode is like Timer)</span><a name="l00034"></a>00034     <span class="comment">//IFG2 = BTIE;</span><a name="l00035"></a>00035 <a name="l00036"></a>00036     <span class="comment">// 32768</span><a name="l00037"></a>00037     <span class="comment">//RTCNT1 = 0x00;</span><a name="l00038"></a>00038     <span class="comment">//RTCNT2 = 0x80;</span><a name="l00039"></a>00039 <a name="l00040"></a>00040     <span class="comment">// Real-Time Clock Control Register -&gt; ACLK, Calendar Mode, enable interupt</span><a name="l00041"></a>00041     RTCCTL = RTCMODE_3 | RTCTEV_0 | RTCIE | RTCHOLD;<a name="l00042"></a>00042 <a name="l00043"></a>00043     RTCYEARH = <a class="code" href="time_8h.html#af0df2b37a0e27c6f424ab4fcc5cd1c2">TIME_DEFAULT_YEAR</a> &gt;&gt; 8;<a name="l00044"></a>00044     RTCYEARL = <a class="code" href="time_8h.html#af0df2b37a0e27c6f424ab4fcc5cd1c2">TIME_DEFAULT_YEAR</a> &amp; 0xFF;<a name="l00045"></a>00045     RTCMON = <a class="code" href="time_8h.html#9e9f22a3f109f53f87eca0f55816fcf2">TIME_DEFAULT_MONTH</a>;<a name="l00046"></a>00046     RTCDAY = <a class="code" href="time_8h.html#2edf652e64763d5cf7349bee485adb0b">TIME_DEFAULT_DAY</a>;<a name="l00047"></a>00047     RTCHOUR = <a class="code" href="time_8h.html#e3c65bf03d206ac79ddece5ac9ca7a8d">TIME_DEFAULT_HOUR</a>;<a name="l00048"></a>00048     RTCMIN = <a class="code" href="time_8h.html#da6d3e004b838cbcf084ba18f7bb0a4b">TIME_DEFAULT_MIN</a>;<a name="l00049"></a>00049     RTCSEC = <a class="code" href="time_8h.html#6156d1462562f13a0bba6f859477369a">TIME_DEFAULT_SEC</a>;<a name="l00050"></a>00050 <a name="l00051"></a>00051     RTCCTL &amp;= ~RTCHOLD;<a name="l00052"></a>00052 }<a name="l00053"></a>00053 <a name="l00054"></a><a class="code" href="time_8c.html#402f85e5a97ace948beb5af9925d5b76">00054</a> <span class="preprocessor">#define DISK_TIMERPROC_CNT 10 </span><a name="l00055"></a>00055 <span class="preprocessor"></span><a name="l00056"></a>00056 <span class="preprocessor"></span><a name="l00061"></a><a class="code" href="time_8c.html#6ab3646c98bca5b53a9718c05f9a4818">00061</a> <a class="code" href="periphery_8c.html#aef39e368becfc8ede2d7e992660ded8">interrupt</a> (WDT_VECTOR) wakeup watchdog_isr (<span class="keywordtype">void</span>)<a name="l00062"></a>00062 {<a name="l00063"></a>00063     <span class="keyword">static</span> uint8_t cnt = <a class="code" href="time_8c.html#402f85e5a97ace948beb5af9925d5b76">DISK_TIMERPROC_CNT</a>;<a name="l00064"></a>00064 <a name="l00065"></a>00065     <a class="code" href="time_8c.html#b69c774dad0814fa066f807e4aba7fb7">jiffies</a>++;<a name="l00066"></a>00066 <a name="l00067"></a>00067     cnt--;<a name="l00068"></a>00068     <span class="keywordflow">if</span> (cnt == 0)<a name="l00069"></a>00069     {<a name="l00070"></a>00070         cnt = <a class="code" href="time_8c.html#402f85e5a97ace948beb5af9925d5b76">DISK_TIMERPROC_CNT</a>;<a name="l00071"></a>00071         <span class="comment">// call every 10 milliseconds @ 8 MHz</span><a name="l00072"></a>00072         <a class="code" href="mmc_8c.html#045f8898a243c16aca4e64e069c49c03">disk_timerproc</a> ();<a name="l00073"></a>00073     }<a name="l00074"></a>00074     <span class="comment">//LPM3_EXIT;</span><a name="l00075"></a>00075 }<a name="l00076"></a>00076 <a name="l00077"></a><a class="code" href="time_8h.html#c4b4fac5a1f7b28dfa224bcf70b86b50">00077</a> <span class="keywordtype">void</span> <a class="code" href="time_8c.html#c4b4fac5a1f7b28dfa224bcf70b86b50">TIME_init</a> ()<a name="l00078"></a>00078 {<a name="l00079"></a>00079     <a class="code" href="time_8c.html#83823ddc481026aea712ce81c4621b4c">RTC_init</a> ();<a name="l00080"></a>00080     <span class="comment">//FLL_CTL0 |= XCAP18PF;       // Set load cap for 32k xtal</span><a name="l00081"></a>00081     <span class="comment">// WDT interrupt in every 0.5 ms @ 1 MHz -&gt; 0.625 us @ 8 MHz</span><a name="l00082"></a>00082     <span class="comment">//WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTIS1;</span><a name="l00083"></a>00083     <span class="comment">// WDT interrupt in every 8 ms @ 1 MHz -&gt; 1 ms @ 8 MHz</span><a name="l00084"></a>00084     WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTIS0;<a name="l00085"></a>00085     IE1 |= WDTIE;<a name="l00086"></a>00086     <span class="comment">// Interrupt enable</span><a name="l00087"></a>00087     _EINT ();<a name="l00088"></a>00088 }<a name="l00089"></a>00089 <a name="l00090"></a><a class="code" href="time_8h.html#df0c0774065e86c0b1482b47098a3ac2">00090</a> <span class="keywordtype">void</span> <a class="code" href="time_8c.html#df0c0774065e86c0b1482b47098a3ac2">TIME_getDate</a> (<a class="code" href="structTIME__date__t.html">TIME_date_t</a> *<span class="keyword">const</span> date)<a name="l00091"></a>00091 {<a name="l00092"></a>00092     <span class="comment">//RTCCTL |= RTCHOLD;</span><a name="l00093"></a>00093     date-&gt;<a class="code" href="structTIME__date__t.html#6ce98b2a6867fd501719b5fddd108c0a">year</a> = RTCYEARH &lt;&lt; 8 | RTCYEARL;<a name="l00094"></a>00094     date-&gt;<a class="code" href="structTIME__date__t.html#9493ac8f4f3ae352052773170ad1cf3a">month</a> = RTCMON;<a name="l00095"></a>00095     date-&gt;<a class="code" href="structTIME__date__t.html#204037d196305563b2a461d403370f76">day</a> = RTCDAY;<a name="l00096"></a>00096     date-&gt;<a class="code" href="structTIME__date__t.html#3d0e06fbc5c43b10e359762a787d685a">hour</a> = RTCHOUR;<a name="l00097"></a>00097     date-&gt;<a class="code" href="structTIME__date__t.html#8d6bf7819ad944b1af6d7a73e54e3a7f">min</a> = RTCMIN;<a name="l00098"></a>00098     date-&gt;<a class="code" href="structTIME__date__t.html#c7f3987d585bd0bbc271a1490958d8dd">sec</a> = RTCSEC;<a name="l00099"></a>00099     <span class="comment">//RTCCTL &amp;= ~RTCHOLD;</span><a name="l00100"></a>00100 }<a name="l00101"></a>00101 <a name="l00102"></a><a class="code" href="time_8h.html#3694d20c5b1a60d7b75cf58c221705bf">00102</a> <span class="keywordtype">void</span> <a class="code" href="time_8c.html#3694d20c5b1a60d7b75cf58c221705bf">TIME_setDate</a> (<span class="keyword">const</span> <a class="code" href="structTIME__date__t.html">TIME_date_t</a> *date)<a name="l00103"></a>00103 {<a name="l00104"></a>00104     RTCCTL |= RTCHOLD;<a name="l00105"></a>00105     RTCYEARH = date-&gt;<a class="code" href="structTIME__date__t.html#6ce98b2a6867fd501719b5fddd108c0a">year</a> &gt;&gt; 8;<a name="l00106"></a>00106     RTCYEARL = date-&gt;<a class="code" href="structTIME__date__t.html#6ce98b2a6867fd501719b5fddd108c0a">year</a> &amp; 0xFF;<a name="l00107"></a>00107     RTCMON = date-&gt;<a class="code" href="structTIME__date__t.html#9493ac8f4f3ae352052773170ad1cf3a">month</a>;<a name="l00108"></a>00108     RTCDAY = date-&gt;<a class="code" href="structTIME__date__t.html#204037d196305563b2a461d403370f76">day</a>;<a name="l00109"></a>00109     RTCHOUR = date-&gt;<a class="code" href="structTIME__date__t.html#3d0e06fbc5c43b10e359762a787d685a">hour</a>;<a name="l00110"></a>00110     RTCMIN = date-&gt;<a class="code" href="structTIME__date__t.html#8d6bf7819ad944b1af6d7a73e54e3a7f">min</a>;<a name="l00111"></a>00111     RTCSEC = date-&gt;<a class="code" href="structTIME__date__t.html#c7f3987d585bd0bbc271a1490958d8dd">sec</a>;<a name="l00112"></a>00112     RTCCTL &amp;= ~RTCHOLD;<a name="l00113"></a>00113 }<a name="l00114"></a>00114 <a name="l00115"></a><a class="code" href="time_8h.html#9af0f4a5c28d65ca84fb763fd91e8731">00115</a> <span class="keywordtype">void</span> <a class="code" href="time_8c.html#9af0f4a5c28d65ca84fb763fd91e8731">mdelay</a> (uint32_t milliseconds)<a name="l00116"></a>00116 {<a name="l00117"></a>00117     uint32_t j = <a class="code" href="time_8c.html#b69c774dad0814fa066f807e4aba7fb7">jiffies</a>;<a name="l00118"></a>00118     <span class="keywordflow">while</span> (<a class="code" href="time_8c.html#b69c774dad0814fa066f807e4aba7fb7">jiffies</a> - j &lt; milliseconds);<a name="l00119"></a>00119 }<a name="l00120"></a>00120 <a name="l00121"></a><a class="code" href="time_8h.html#90a025f7305405a19406dd352b8a5b0d">00121</a> <span class="keywordtype">void</span> <a class="code" href="time_8c.html#90a025f7305405a19406dd352b8a5b0d">delay</a> (uint32_t seconds)<a name="l00122"></a>00122 {<a name="l00123"></a>00123     uint32_t j = <a class="code" href="time_8c.html#b69c774dad0814fa066f807e4aba7fb7">jiffies</a>;<a name="l00124"></a>00124     uint32_t ms = seconds * 1000;<a name="l00125"></a>00125     <span class="keywordflow">while</span> (<a class="code" href="time_8c.html#b69c774dad0814fa066f807e4aba7fb7">jiffies</a> - j &lt; ms);<a name="l00126"></a>00126 }<a name="l00127"></a>00127 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Oct 21 19:25:35 2007 for Sample MSP430-4619LCD Project by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -