AVR-GCC如何调用存储于Flash中的指向函数的指针
时间: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;
}
// 功能:演示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)
{
}
else
{
}
_delay_ms(50);
}
int main(void)
{
PORTD=0;
DDRD=~0;
//void (*pFun)(void) =ledrun;
while (1)
{
}
return 0;
}
AVR-GCCFlash指向函数指 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)