亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? example.html

?? yavrtos,一款用于廣泛用于AVR單片機的RTOS,文件里是這款OS的源碼
?? HTML
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>YAVRTOS: </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.4 --><div class="tabs">  <ul>    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>    <li><a href="modules.html"><span>Modules</span></a></li>    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>    <li><a href="files.html"><span>Files</span></a></li>    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>  </ul></div>In this example, we will flash two LEDs connected to port A at different rates.<p><div class="fragment"><pre class="fragment"><span class="preprocessor">#include "<a class="code" href="task_8h.html">task.h</a>"</span><span class="preprocessor">#include &lt;stdint.h&gt;</span><span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span><span class="preprocessor">#include &lt;avr/io.h&gt;</span><span class="preprocessor">#include &lt;avr/sleep.h&gt;</span><span class="comment">// A semaphore that we will increment at every tick</span><span class="keyword">static</span> <a class="code" href="structsemaphore__t.html" title="Structure describing a semaphore.">semaphore_t</a> tick;<span class="comment">// We will also create a mutex for port A, as both tasks will be using it potentially "simultaneously"</span><span class="keyword">static</span> <a class="code" href="structmutex__t.html" title="A structure describing a mutex.">mutex_t</a> porta_mutex;<span class="comment">// This is our first task - blinking port A bit 0 once every 200 ticks</span><span class="keywordtype">void</span> blink1(<span class="keywordtype">void</span> *p) {        <span class="keywordflow">while</span> (1) {                <span class="comment">// Obtain a lock on the port A mutex</span>                <a class="code" href="group__mutex.html#gdff77e0b451c30c07d2990e669f937c5" title="Lock on a mutex.">lock_on</a>(&amp;porta_mutex);                <span class="comment">// OK - port A is now all ours, so blink the LED</span>                PORTA ^= 0x01;                <span class="comment">// Release our hold on the port A mutex</span>                <a class="code" href="group__mutex.html#g327f419711064b7407f6f47011221cc4" title="Unlock a mutex.">lock_off</a>(&amp;porta_mutex);                <span class="comment">// Now, suspend this task for another 200 ticks</span>                <a class="code" href="group__semaphore.html#g291edcd883e2d0bc17f85419e21069ff" title="Wait for a semaphore to increment its value by a certain amount.">wait_for_increment_of</a>(&amp;tick, 200);        }}<span class="comment">// This is our second task - blinking port A bit 1 once every 280 ticks</span><span class="keywordtype">void</span> blink2(<span class="keywordtype">void</span> *p) {        <span class="keywordflow">while</span> (1) {                <span class="comment">// Obtain a lock on the port A mutex</span>                <a class="code" href="group__mutex.html#gdff77e0b451c30c07d2990e669f937c5" title="Lock on a mutex.">lock_on</a>(&amp;porta_mutex);                <span class="comment">// OK - port A is now all ours, so blink the LED</span>                PORTA ^= 0x02;                <span class="comment">// Release our hold on the port A mutex</span>                <a class="code" href="group__mutex.html#g327f419711064b7407f6f47011221cc4" title="Unlock a mutex.">lock_off</a>(&amp;porta_mutex);                <span class="comment">// Now, suspend this task for another 280 ticks</span>                <a class="code" href="group__semaphore.html#g291edcd883e2d0bc17f85419e21069ff" title="Wait for a semaphore to increment its value by a certain amount.">wait_for_increment_of</a>(&amp;tick, 280);        }}<span class="comment">// This is our idle task - the task that runs when all others are suspended.</span><span class="comment">// We sleep the CPU - the CPU will automatically awake when the tick interrupt occurs</span><span class="keywordtype">void</span> idle_task(<span class="keywordtype">void</span> *p) {        sleep_enable();        sei();        sleep_cpu();        <span class="comment">// This task cannot be stopped, so it is automatically re-started whenever it tries to exit</span>}<span class="comment">// This is a function that runs every tick interrupt - we use it to increment the tick semaphore value by one</span>uint8_t tick_interrupt() {        <a class="code" href="group__semaphore.html#g3cd218588dccb32b5b9072c7a75fb008" title="Increment the value of a semaphore by the given amount.">increment_semaphore_by</a>(&amp;tick,1);        <span class="comment">// We want a task switch to ALWAYS occur - it is part of the definition of the tick interrupt!</span>        <span class="keywordflow">return</span> 1;}<span class="comment">// Setup the TIMER1_COMPA interrupt - it will be our tick interrupt</span><a class="code" href="group__isr.html#g3d04938242a5060aac8a64b72c055eb0" title="The macro for ISRs.">TASK_ISR</a>(TIMER1_COMPA_vect, tick_interrupt())<span class="comment">// Our entry point</span>int main(<span class="keywordtype">void</span>) {        <span class="comment">// Interrupts should remain disabled - they will be enabled as soon as the first task starts executing</span>        cli();        <span class="comment">// Set up port A for output</span>        DDRA = 0xFF;        <span class="comment">// Our idle task sleeps the CPU - set the sleep mode to IDLE, as we need the sleep to be</span>        <span class="comment">// interruptable by the tick interrupt</span>        set_sleep_mode(SLEEP_MODE_IDLE);        <span class="comment">// Create our two tasks</span>        <a class="code" href="group__task.html#g9b849c9a0e0b29417cf47da99226dcc3" title="Create a task, ready to be run.">create_task</a>(blink1, 0, 0, 55, 100, 0);        <a class="code" href="group__task.html#g9b849c9a0e0b29417cf47da99226dcc3" title="Create a task, ready to be run.">create_task</a>(blink2, 0, 0, 55, 100, 0);        <span class="comment">// Set up our TIMER1_COMPA interrupt to tick every 80,000 clock cycles</span>        TCCR1B = 0x0A;        OCR1A = 9999;        TIFR = _BV(OCF1A);        TIMSK |= _BV(OCIE1A);        <span class="comment">// Start the RTOS - note that this function will never return</span>        <a class="code" href="group__task.html#g1398c4d9f97349ea3fa7d91349298521" title="Start the whole process running.">task_switcher_start</a>(idle_task, 0, 55, 55);        <span class="keywordflow">return</span> 0;}</pre></div> <hr><p align="center"><font size="-1">YAVRTOS and YAVRTOS documentation Copyright &copy; 2007-2008 Chris O'Byrne. Email - chris &lt;at&gt; obyrne &lt;dot&gt; com</font></p></body></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合色免费| 成人高清免费观看| 国产乱码一区二区三区| 91在线视频观看| 精品免费一区二区三区| 亚洲天堂网中文字| 国产一区 二区 三区一级| 欧美日韩精品免费观看视频 | 欧美一二三区在线| 一区二区三区资源| 成人手机电影网| 精品国产亚洲在线| 免费视频最近日韩| 在线不卡中文字幕播放| 一区二区三区中文在线观看| 成人手机电影网| 亚洲国产成人私人影院tom| 免费日韩伦理电影| 91精品国产欧美一区二区成人| 综合久久国产九一剧情麻豆| 国产馆精品极品| 久久精品日产第一区二区三区高清版| 免费高清在线一区| 51精品久久久久久久蜜臀| 亚洲成人综合网站| 欧美日本一区二区在线观看| 亚洲午夜精品17c| 91福利小视频| 亚洲国产精品久久久久婷婷884| 97se亚洲国产综合自在线不卡| 国产精品久久久久9999吃药| av在线不卡网| 日韩毛片精品高清免费| www.一区二区| 一区二区在线电影| 91视频com| 亚洲成av人片| 欧美一区二区三区在线| 蜜桃av噜噜一区| 日韩精品一区二区三区老鸭窝 | 香蕉成人啪国产精品视频综合网| 欧洲精品视频在线观看| 亚洲图片欧美视频| 日韩视频免费观看高清在线视频| 蜜桃精品视频在线观看| 久久精品一区二区三区不卡| 成人综合在线观看| 亚洲黄网站在线观看| 欧美日韩一区二区在线视频| 日韩av一区二区三区| 精品国产一区二区国模嫣然| 国产精品18久久久久久久久| 中文字幕日本乱码精品影院| 日韩欧美久久久| 久久超碰97人人做人人爱| 久久久精品综合| 北条麻妃一区二区三区| 午夜成人免费视频| 久久久精品黄色| 欧美在线制服丝袜| 韩国毛片一区二区三区| 亚洲天堂av老司机| 欧美丰满美乳xxx高潮www| 国产一区91精品张津瑜| 亚洲精品一二三四区| 欧美一区二区网站| av资源站一区| 麻豆精品久久精品色综合| 国产欧美久久久精品影院| 色天使色偷偷av一区二区| 开心九九激情九九欧美日韩精美视频电影 | 精品一区二区影视| 中文字幕一区二区三区精华液| 欧美精品一二三| 成人动漫中文字幕| 免费不卡在线视频| 亚洲人一二三区| 精品国产欧美一区二区| 欧美亚日韩国产aⅴ精品中极品| 另类调教123区 | 91精品国产综合久久蜜臀| 国产二区国产一区在线观看| 五月激情六月综合| 亚洲三级电影网站| 久久久精品日韩欧美| 制服.丝袜.亚洲.中文.综合| www.欧美.com| 狠狠狠色丁香婷婷综合激情| 天天亚洲美女在线视频| 亚洲免费在线电影| 欧美极品aⅴ影院| 精品剧情在线观看| 欧美日韩不卡一区| 成人做爰69片免费看网站| 精品一二线国产| 丝袜诱惑制服诱惑色一区在线观看 | 色美美综合视频| 国产在线不卡一区| 日本aⅴ亚洲精品中文乱码| 亚洲免费资源在线播放| 国产精品理论片在线观看| 久久久精品人体av艺术| 日韩精品中文字幕在线一区| 欧美精品乱码久久久久久| 欧洲一区二区三区免费视频| 97se狠狠狠综合亚洲狠狠| 国产夫妻精品视频| 国产.欧美.日韩| 国产精品白丝jk黑袜喷水| 精品一区二区三区香蕉蜜桃| 日韩中文字幕不卡| 婷婷久久综合九色综合绿巨人| 亚洲一区二区三区四区不卡| 一区二区国产盗摄色噜噜| 亚洲一区二区三区中文字幕| 亚洲毛片av在线| 亚洲精品国产成人久久av盗摄| 亚洲丝袜另类动漫二区| 国产精品国产三级国产aⅴ无密码| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美精品一区二区久久久| 欧美大尺度电影在线| 欧美tk丨vk视频| 久久久精品影视| 亚洲色图.com| 丝袜a∨在线一区二区三区不卡| 日韩制服丝袜av| 久久国产精品第一页| 国产成人无遮挡在线视频| 成人激情免费视频| 91免费版在线| 国产亚洲一本大道中文在线| 久久久久国产精品厨房| 中文字幕中文字幕一区| 亚洲午夜免费福利视频| 日韩国产精品91| 国产麻豆成人精品| 色就色 综合激情| 欧美精品在欧美一区二区少妇| 这里只有精品电影| 久久久久久电影| 亚洲欧美日韩国产另类专区| 日韩av成人高清| 成人一区二区三区视频在线观看| 99re6这里只有精品视频在线观看| 欧美图区在线视频| 欧美mv日韩mv国产网站| 国产精品久久国产精麻豆99网站| 亚洲欧洲美洲综合色网| 日韩中文字幕一区二区三区| 国产剧情一区二区| 欧美性大战久久久| 久久久久久久免费视频了| 亚洲日本一区二区三区| 美腿丝袜一区二区三区| www.色综合.com| 日韩久久精品一区| 亚洲精品视频一区| 国内精品免费**视频| 精品视频在线看| 中文字幕日韩欧美一区二区三区| 视频在线观看91| a4yy欧美一区二区三区| 日韩一区国产二区欧美三区| 国产精品视频一区二区三区不卡| 日韩精品欧美精品| 91色在线porny| 国产偷v国产偷v亚洲高清 | 日韩理论片网站| 久久精品二区亚洲w码| 91久久国产综合久久| 国产视频不卡一区| 人人狠狠综合久久亚洲| 色吧成人激情小说| 中文字幕一区二区日韩精品绯色| 日本不卡一区二区三区| 91国偷自产一区二区三区成为亚洲经典 | 成人午夜激情片| 日韩视频中午一区| 日日摸夜夜添夜夜添亚洲女人| 成人99免费视频| 国产欧美一区二区三区鸳鸯浴| 日韩国产高清影视| 欧美精品tushy高清| 一区二区三区免费在线观看| 成人免费福利片| 国产精品无遮挡| 成人免费视频视频在线观看免费 | 日韩午夜精品电影| 亚洲成人一区在线| 欧美优质美女网站| 亚洲自拍另类综合| 在线看国产一区二区| 亚洲欧美日韩一区二区三区在线观看 | 国产日韩三级在线| 国产精品99久久久久久似苏梦涵| 日韩一级片网址| 狠狠网亚洲精品| 久久久精品欧美丰满| 国产精品亚洲午夜一区二区三区 |