×
单片机 > 单片机程序设计 > 详情

AVR-GCC如何调用存储于Flash中的指向函数的指针

发布时间:2020-09-02 发布时间:
|
//---------------------------------------------------------------
// 功能:演示AVR-GCC如何调用存储于Flash中的指向函数的指针 (摇摆灯)
//---------------------------------------------------------------
#include
#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;


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
TQ210天嵌开发板S5PV210 LED闪烁程序C语言代码记录