#define install_vector(isr,address) (*(void**)(address)=(isr))的意思
定义一个宏
#define install_vector(isr,address) (*(void**)(address)=(isr))
定义2个函数
void fun_isr()
{
该函数直接向某个内存地址写入数字
}
long fun_address()
{
内嵌汇编代码:跳到某个内存位置
}
用法:
install_vector(fun_isr,fun_address()+14);
这个install_vector宏啥意思?
ps:看别人的嵌入式代码,里面写的,个人分析了一会,感觉像是从某个内存地址address上 运行某个函数isr 但又感觉不对:函数能从指定的内存位置开始运行吗?
请教各位高手,这个宏的意思
[解决办法]
(*(void**)(address)=(isr))
相当于 void **address;
*address=isr;
[解决办法]
install_vector(fun_isr,fun_address()+14);//here second argument is a address
#define install_vector(isr,address) (*(void**)(address)=(isr))//这里是个赋值,把isr这个地址给address这个地址指向的内容
for example:
isr = 0xAAAAAAAA;
-------------------------------
[解决办法]
-------------------------
[解决办法]
address---->
[解决办法]
0xAAAAAAAA
[解决办法]
[解决办法]
-------------------------
[解决办法]
-------------------------------
address is a pointer,
(*(void**)(address)=(isr)) means address这个指针指向的内容赋一个地址