中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        如何使用AVR-GCC API

        作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏

        4.cbi
        用法:void cbi(uint8_t port, uint8_t bit);
        說 明:清零port的bit位。bit的值為0~7。如果port為實際I/O寄存器,則此函數(shù)生成一條cbi指令;否則,函數(shù)生成相應(yīng)的優(yōu)化代碼。
        5.inp
        用 法:uint8_t inp(uint8_t port);
        說明:從端口port讀入8比特的數(shù)值。如果port為常數(shù),則函數(shù)生成一條in指 令;若為變量,則函數(shù)用直接尋址指令。
        6.__inw
        用法:uint16_t __inw(uint8_t port);
        說明: 從I/O寄存器讀入16位的數(shù)值。此函數(shù)用于讀取16位寄存器(ADC,ICR1,OCR1,TCNT1)的值,因為讀取這些寄存器需要合適的步驟。由于 此函數(shù)只產(chǎn)生兩條匯編指令,因此要在中斷禁止時使用,否則有可能由于中斷插入到指令之間造成讀取錯誤。
        7.__inw_atomic
        用 法:uint16_t __inw_atomic(uint8_t port);
        說明:以原子語句方式讀取16位I/O寄存器的數(shù)值。此函數(shù)首先 禁止中斷,讀取數(shù)據(jù)之后再恢復(fù)中斷狀態(tài),因此可以安全地應(yīng)用在各種系統(tǒng)狀態(tài)。
        8.loop_until_bit_is_clear
        用 法:oidoid loop_until_bit_is_clear (uint8_t port, uint8_t bit);
        說明:此函數(shù)簡 單地調(diào)用sbic指令來測試端口port的bit位是否清零。port必須為有效端口。
        9.loop_until_bit_is_set
        用 法:oidoid loop_until_bit_is_set (uint8_t port, uint8_t bit);
        說明:此函數(shù)簡單地 調(diào)用sbis指令來測試端口port的bit位是否置位。port必須為有效端口。
        10.outp
        用法:void outp(uint8_t val, uint8_t port);
        說明:將val寫入端口port。如果port為常數(shù),則函數(shù)生成一條out 指令;若為變量,則函數(shù)用直接尋址指令。
        11.__outw
        用法:void __outw(uint16_t val, uint8_t port);
        說明:將16位的val寫入端口port。此函數(shù)適合于操作16位寄存器,如ADC,ICR1,OCR1,TCNT1。由于此函數(shù) 只產(chǎn)生兩條匯編指令,因此要在中斷禁止時使用,否則有可能由于中斷插入到指令之間造成讀取錯誤。
        12.__outw_atomic
        用 法:void __outw_atomic(uint16_t val, uint8_t port);
        說明:將16位的val寫入端口 port。此函數(shù)適合于操作16位寄存器,如ADC,ICR1,OCR1,TCNT1。此函數(shù)首先禁止中斷,讀取數(shù)據(jù)之后再恢復(fù)中斷狀態(tài),因此可以安全地 應(yīng)用在各種系統(tǒng)狀態(tài)。
        13.sbi
        用法:void sbi(uint8_t port, uint8_t bit);
        說明:置位 port的bit位。bit的值為0~7。如果port為實際I/O寄存器,則此函數(shù)生成一條 sbi指令;否則,函數(shù)生成相應(yīng)的優(yōu)化代碼。
        五. 看門狗API
        以下函數(shù)操作看門狗。宏定義參見wdt.h。
        用戶可以通過起動代碼初始化看門狗。WDTCR的缺省值為0。如果你希望將其設(shè) 置為其他值,則需要在鏈接命令里加入相應(yīng)的命令。使用的符號為__init_wdtcr__。如下為將WDTCR設(shè)置為0x1f的例子:
        avr-ld -defsym __init_wdtcr__=0x1f
        1.wdt_disable
        用法:void wdt_disable(void);
        說明:關(guān)閉看門狗。
        2.wdt_enable
        用法:void wdt_disable(unit8_t timeout);
        說明:使能看門狗??撮T狗溢出時間為timeout。
        timeout 周期
        016K CLK
        132K CLK
        264K CLK
        3128K CLK
        4256K CLK
        5512K CLK
        61024K CLK
        72048K CLK

        3.wdt_reset
        用 法:void wdt_reset(void);
        說明:產(chǎn)生喂狗指令wdr。

        三.應(yīng)用程序啟動過程(Start Up)
        標(biāo) 準(zhǔn)庫文件包含一個啟動模塊(Start Up Module),用于為真正執(zhí)行用戶程序做環(huán)境設(shè)置。
        啟動模塊完成的任務(wù)如下:
        1.提 供缺省向量表
        2.提供缺省中斷程序入口
        3.初始化全局變量
        4.初始化看門狗
        5.初 始化寄存器MCUCR
        6.初始化數(shù)據(jù)段
        7.將數(shù)據(jù)段.bss的內(nèi)容清零
        8.跳轉(zhuǎn)到 main()。(不用調(diào)用方式,因為main()不用返回)
        啟動模塊包含缺省中斷向量表,其內(nèi)容為預(yù)先定義好的函數(shù)名稱。這些函數(shù)名稱可以由程序 員重載。中斷向量表的第一個內(nèi)容為復(fù)位向量,執(zhí)行結(jié)果是將程序跳轉(zhuǎn)到_init_。在啟動模塊里,_init_表示的地址與_real_init_指向的 地址相同。如果要加入客戶代碼,則需要在程序里定義一個_init_函數(shù)。在此函數(shù)的末尾跳轉(zhuǎn)到_real_init_。具體實現(xiàn)如下:
        void _real_init_(void);
        void _init_(void) __attribute__((naked));
        void _init_(void)
        {
        // 用戶代碼

        // 最后的代碼必須為:
        asm ("rjmp _real_init_");
        }

        在_real_init_部 分,系統(tǒng)將設(shè)置看門狗和MCUCR寄存器。啟動模塊并沒有真正取用相應(yīng)寄存器的設(shè)置數(shù)值(以符號 _init_wdctr_,_init_mcucr_,_init_emcucr_表示),而是通過地址來取得其值。因而用戶可以通過鏈接器的 --defsym選項來設(shè)置這些符號的地址。如果用戶沒有定義,則啟動模塊將使用缺省值。
        接下來系統(tǒng)將從程序存儲器里把具有初值的全局變量加載到 數(shù)據(jù)存儲器SRAM。然后是將數(shù)據(jù)段.bbs清零。此數(shù)據(jù)段包含所有沒有的初值的非AUTO變量。
        最后,系統(tǒng)跳轉(zhuǎn)到main()函數(shù),用戶代碼開 始執(zhí)行。系統(tǒng)對此特殊函數(shù)加入一些特殊的處理。進入此函數(shù)后,堆棧指向SRAM的末尾。

        上一頁 1 2 下一頁

        關(guān)鍵詞: AVR-GCCAP

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉