打印

简单的ARM中断程序怎么写?

[复制链接]
5301|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liulwn|  楼主 | 2008-3-13 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚学ARM,想写个AT91SAM7S64的中断程序,不知如何入手。如C51里可用interrupt m 这个函数定义一个中断服务程序。其它就基本不用管了。arm里有相关的函数定义中断服务程序吗?那位大侠给指点一下。

相关帖子

沙发
dld2| | 2008-3-13 11:10 | 只看该作者

找DEMO程序

使用特权

评论回复
板凳
xhtxzxw| | 2008-3-13 13:16 | 只看该作者

嘿嘿

//样例代码里有个AT91F_AIC_ConfigureIt(...)函数,用于初始化??中断. 
//包括:设置??中断的优先级、??中断的触发方式以及??中断的服务程序入口
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, 
                      AT91C_ID_??,                     //??中断的 ID
                      1,                               //优先级:0~7
                      AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,//中断源类型触发方式(以内部中断源,高电平触发为例)
                      ??_Handler);                  //??中断服务程序

void ??_Handler(void)  //这是??中断的服务程序
{
    ....  //需要干啥就写啥
}

想处理哪个中断,注意??就行了,比如US0的中断,你把"??"换成"US0"即可。AT91C_ID_US0、AT91C_ID_US1、AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL等等在头文件里都有定义了,如果需要处理别的中断,你通过查找AT91C_ID_US0,就可以找到其它中断的ID号动议,因为所有中断的ID定义是放在一起的。需要指定其它的中断源类型或其它的中断触发方式,你可以先查找AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL的定义,在它附近就可以找到其他中断源类型/触发方式的定义,或者参照数据手册自己定义。

使用特权

评论回复
地板
liulwn|  楼主 | 2008-3-13 13:39 | 只看该作者

谢谢了!!!

再次谢谢xhtxzxw的帮助!!xhtxzxw真是这方面的高手呀,建议xhtxzxw开个写armC语言方面的专栏,让我等菜鸟学习一下。个人感觉C语言这东西易学难精,要达到一定深度还得多下苦功呢。

使用特权

评论回复
5
tubie| | 2008-3-14 20:51 | 只看该作者

AT91F_AIC_ConfigureIt(...)函数是通用函数吗?

比如在ADS或者Keil下都有这个函数吗?

使用特权

评论回复
6
armecos| | 2008-3-14 22:55 | 只看该作者

建议参考ecos万能中断模板

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

156

帖子

3

粉丝