完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 yanglong0322 于 2012-3-31 20:22 编辑
第一次接触arm,看了半个月的视频,身边有一块44b0的开发板,就拿来试试,4个按键:ExINT4(GPG4)、ExINT5(GPG5)、ExINT6(GPG6);3个led灯:GPC1、GPC2、GPC3,我就是想按下任意一个按键,跳到中断程序去执行。 一下是程序: #include"44b0x.h" #define LED1 1 #define LED2 2 #define LED3 3 #define LED_ALL 4 #define FALSE 0 #define TRUE 1 //申明函数 void IoConfig (void); void IRQ_init(void); void __irq IRQ_Eint4567(void); void LedCol(int LED,int Col); void delay(int n); //主函数 int Main(void) { IoConfig(); IRQ_init(); LedCol(LED_ALL, 1); //开所有LED,测试进入主程序 delay(100); LedCol(LED_ALL, 0);//关LED,等待中断 while(1); return 0; } //延时 void delay(int n) { int i,j; for(i=0;i } //中断初始化 void IRQ_init(void) { //设置IO 口PORT G rPCONG |= 0xff00; rINTMOD =0; //all IPQ中断 rINTCON = 5; //使能IRQ,IRQ向量模式 rEXtiNT &= 0x0000ffff; //先清除EXTINT4,5,6,7的相应设置bit位 rEXTINT =0; // 低电平触发 pISR_EINT4567=(unsigned int)IRQ_Eint4567; //设置入口地址 rINTMSK = ~(1<<21 | 1<<26); //打开中断屏蔽4567,全局中断 } //中断程序 void __irq IRQ_Eint4567(void) { unsigned int dwVal; dwVal= rEXTINTPND; LedCol(LED_ALL, 1);// 进不来啊? //后边就不用看了,灯不亮......... //灯没坏,直接点灯没问题 rI_ISPC |= (1<<21);//清中断 } //LED控制 void LedCol(int LED,int Col) //LED 控制 { switch (LED) { case LED_ALL: if (TRUE == Col) { rPDATC |= 0x0E;//全亮 } else { rPDATC &= ~0x0E;//全灭 } break; default: break; } } /**************************************************************************** 函数名称: IoConfig 功 能: 初始化IO口 参 数: 无 返回 值: 无 ****************************************************************************/ void IoConfig (void) { rPDATC = 0x0000; //输出低电平 rPCONC = 0x5f555555;//GPC1、2、3输出(LED) rPUPC = 0x3000; //上拉电阻 rPDATG = 0xff; //输出高电平 rPCONG = 0xff00; //设置4567为中断模式 rPUPG = 0x00; // 上拉电阻 rSPUCR= 0x4;// 不太清楚这个设置的影响 rSYSCFG = 0x0e; //使用8K字节的指令缓存,write buffer disable rNCACHBE0 = 0xc0002000; //定义非Cache区,从0x2000000到0xbffffff,中断时进入ROM,若不允许CACHE不正常 rEXTINT = 0x0; //所有的外部硬件中断为低电平触发 } "44b0x.h"中定义了 #define _ISR_STARTADDRESS 0xc7fff00 //SDRAM为8 MB bank6:0x0c000000~0x0c800000 启动程序为44binit.s其中包含头文件 GET option.s GET memcfg.s option.s中定义_ISR_STARTADDRESS EQU 0xc7fff00 ADS1.2编译时RO=0x0C000000; 基本信息都在上边了,求助啊,各位大神...... |
|
相关推荐
1个回答
|
|
把void __irq IRQ_Eint4567(void) 改成void IRQ_Eint4567_ISR(void)
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
331 浏览 1 评论
飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
441 浏览 0 评论
飞凌嵌入式-ELFBOARD 4.3吋电容触摸液晶模块简介第三期 :机械机构说明
633 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-i2c与从设备通讯编程示例之开发板测试
1313 浏览 0 评论
ubuntu ping 开发板存在严重的丢包情况,请问该怎么解决?
2423 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 03:28 , Processed in 0.502035 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号