历史上的今天
今天是:2024年08月22日(星期四)
2019年08月22日 | C语言函数指针数组在ARM中断中的应用
2019-08-22 来源:eefocus
一、函数指针的声明与初始化
...
int max_fun(int a, int b);
/*函数指针的声明,声明了两个形参都为int类型,返回值为int类型的函数指针*/
int (*fp)(int, int);
/*指针初始化*/
fp = max_fun; //fp = &max_fun 也正确
/*函数指针初始化后的调用*/
fp(a,b); //(*fp)(a,b);也正确
...
二、函数指针的typedef
typedef void (*irq_func)(int);
//定义一个数组,存放中断函数指针,其参数类型为irq_func
irq_func irq_array[32];
三、函数指针数组的使用
/* 注册中断函数,将中断函数以指针形式存放在数组中 */
void register_irq(int irq, irq_func fp)
{
irq_array[irq] = fp;
INTMSK &= ~(1 << irq); //关闭中断屏蔽
}
/* 此处将fp函数传入数组,由于函数名在表达式会蜕变为指针,
* 所以调用register_irq()时第二个参数只需要传入函数名
*/
register_irq(0, key_eint_irq);
数组元素的使用:irq_array[bit](bit); 将irq_array[bit]替换为一个函数名更容易理解。
史海拾趣
|
early_printk_console is enabled at 0x84020000 Ramdisk addr 0x00000003, Compiled-in FDT at 0xc0236078 Linux version 2.6.32 (z@GODSON) (gcc version 4.1.2) #0 Fri Apr 2 20:01:33 CST 2010 setup_cpuinfo: initialising setup_cpuinfo: ...… 查看全部问答> |
|
1、我正在做一个项目 在对单片机编程时使用了T0(用于显示),T1(用于顺序控制),T2(用于产生波特率),串口中断(通信接收和发送)。 2、AD采集需要采集三个字节,共需要5400微妙、采集时关了总中断(不关中断则采不到数据) 3、问题 ...… 查看全部问答> |
|
谁有在wince6.0上写的像小游戏,或者文本等可以下载到模拟器上作测试用的小程序,我不需要原代码,只要编译后的.exe文件即可。先谢谢了!… 查看全部问答> |
|
我在Platform Builder 5.0导入一个飞凌OK2440III光盘里附带的BSP并打开相应的.pbxml文件。我想向WinCE添加一些组件,比如Word Viewer等等,但是PB5的Catalog中,整个Core OS都是浅色显示的,就是不可用,无法向定制的操作系统中添加组件。 请问各 ...… 查看全部问答> |
|
EMULATOR模拟器部署失败,配置数据损坏,OS:WINDOWS 2003。怎么才能启动? Microsoft Visual Studio 2005 版本 8.0.50727.762 (SP.050727-7600) Microsoft .NET Framework 版本 2.0.50727 SP1 vs2005 SP1服务包~ 配置: Debug CHSEMU_SDK (ARMV4I) ------ 1>这个产品的配置数据已损坏。请与技术支持人员联 ...… 查看全部问答> |
|
/*独立键盘检测装置,按下key1加1,按下key2减一,按下key3清零,按下key4以定时器自减1,再按key4数值停止自动减1,保持显示原数*/#include <reg52.h>#define uint unsigned int#define uchar unsigned char sbit key1=P0^0;sbit key2=P0^1;sb ...… 查看全部问答> |




