新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR-GCC如何調(diào)用存儲于Flash中的指向函數(shù)的指針

        AVR-GCC如何調(diào)用存儲于Flash中的指向函數(shù)的指針

        作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏
        //---------------------------------------------------------------
        // 功能:演示AVR-GCC如何調(diào)用存儲于Flash中的指向函數(shù)指針 (搖擺燈)
        //---------------------------------------------------------------
        #include <avr/io.h>
        #include
        #include
        void ledrun(void);
        typedef struct
        {
        void (*pFun)(void);
        }Function;
        const Function function PROGMEM={ledrun};
        void ledrun(void)
        {
        static unsigned char light_on=0x01;
        static unsigned char light_ddr=0;
        PORTD=light_on;

        if (light_ddr==0)
        {
        if (light_on==0x80)light_ddr=1;
        else light_on<<=1;
        }

        else
        {
        if (light_on==0x01)light_ddr=0;
        else light_on>>=1;
        }

        _delay_ms(50);
        }

        int main(void)
        {
        PORTD=0;
        DDRD=~0;

        //void (*pFun)(void) =ledrun;

        while (1)
        {
        //pgm_read_word(&function.pFun);
        (*((void(*)(void))pgm_read_word(&function.pFun)))(); //別的沒什么說,關(guān)鍵就在這里了
        }

        return 0;
        }


        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 宁乡县| 郧西县| 绥芬河市| 临猗县| 德兴市| 木兰县| 宁夏| 双柏县| 淮安市| 石泉县| 文成县| 南宁市| 瑞丽市| 临城县| 樟树市| 电白县| 若尔盖县| 兴义市| 水城县| 布拖县| 恩施市| 安徽省| 沁水县| 承德县| 霍城县| 东源县| 涟水县| 成安县| 若尔盖县| 安溪县| 天津市| 四川省| 肥东县| 文山县| 临颍县| 会宁县| 霍邱县| 古丈县| 泽普县| 女性| 乌兰浩特市|