OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4588|回复: 3

在中断实验中,遇到如下函数定义,没能看明白,麻烦解释一下。谢谢

[复制链接]

8

主题

9

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2020-8-20
在线时间
7 小时
发表于 2020-8-26 18:10:10 | 显示全部楼层 |阅读模式
1金钱
/* 中断服务函数形式 */
typedef void (*system_irq_handler_t) (unsigned int giccIar, void *param);

/* 中断服务函数结构体*/
typedef struct _sys_irq_handle
{
    system_irq_handler_t irqHandler; /* 中断服务函数 */
    void *userParam;                 /* 中断服务函数参数 */
} sys_irq_handle_t;

最佳答案

查看完整内容[请看2#楼]

结构体定义:函数指针(用来指向中断服务子程序)对应的参数(用来存放传递给中断的参数,一般为空但是也可以给中断传递参数进去) 定义了一个中断向量表(结构体数组):static sys_irq_handle_t irqTable[NUMBER_OF_INT_VECTORS]; 要用中断时先用中断号和中断服务子程序去注册,也就是对结构体数组赋值(对应中断号为结构体数组下标) 中断发生后再start.s中会调用system_irqhandler同时将中断号放在R0寄存器中传递给system_irqha ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2020-8-26 18:10:11 | 显示全部楼层
结构体定义:函数指针(用来指向中断服务子程序)对应的参数(用来存放传递给中断的参数,一般为空但是也可以给中断传递参数进去)
定义了一个中断向量表(结构体数组):static sys_irq_handle_t irqTable[NUMBER_OF_INT_VECTORS];
要用中断时先用中断号中断服务子程序去注册,也就是对结构体数组赋值(对应中断号为结构体数组下标)
中断发生后再start.s中会调用system_irqhandler同时将中断号放在R0寄存器中传递给system_irqhandler做参数
在system_irqhandler中以中断号为下标执行结构体数组元素的irqHandler即前面注册的中断服务子程序
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2020-8-27 02:17:43 | 显示全部楼层
你这里就是定义了一个结构体而已,和中断无关,得和具体地址联系起来,才有可能是中断服务函数
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-8-27 09:58:36 | 显示全部楼层
这有啥看不懂的  结构体中内置了一个函数指针  和 对应的参数, 你想说哪里看不懂
森罗万象
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 17:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表