新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR-GCC如何調用存儲于Flash中的指向函數的指針

        AVR-GCC如何調用存儲于Flash中的指向函數的指針

        作者: 時間:2016-11-23 來源:網絡 收藏
        //---------------------------------------------------------------
        // 功能:演示AVR-GCC如何調用存儲于Flash中的指向函數指針 (搖擺燈)
        //---------------------------------------------------------------
        #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)))(); //別的沒什么說,關鍵就在這里了
        }

        return 0;
        }


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 开阳县| 仙桃市| 东乡| 定结县| 临夏市| 高要市| 沽源县| 株洲市| 琼结县| 新绛县| 屏山县| 清镇市| 同德县| 临泽县| 波密县| 峨眉山市| 南木林县| 威信县| 凌云县| 平邑县| 东宁县| 邯郸市| 康定县| 咸宁市| 左云县| 渝北区| 白山市| 潮州市| 河间市| 双峰县| 红桥区| 建瓯市| 阳东县| 商南县| 竹溪县| 延津县| 罗平县| 巧家县| 安西县| 玉门市| 察隅县|