新聞中心

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

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

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
//---------------------------------------------------------------
// 功能:演示AVR-GCC如何調(diào)用存儲(chǔ)于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)))(); //別的沒(méi)什么說(shuō),關(guān)鍵就在這里了
}

return 0;
}


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉