大虾们看看,我不知道我的程序为什么不能够进入中断,能否指

[复制链接]
2512|5
 楼主| 125008301 发表于 2008-11-10 09:01 | 显示全部楼层 |阅读模式
【那些大部分的注释都是我写的,不知道有没有错呢】<br />【问题存在】我的程序不能够进入定时器3中断服务处理程序,恳请大虾们指点指点&nbsp;<br /><br />/****************************************************************************&nbsp;<br />【文&nbsp;&nbsp;件&nbsp;&nbsp;名&nbsp;&nbsp;称】led_test.c&nbsp;<br />【功&nbsp;&nbsp;能&nbsp;&nbsp;描&nbsp;&nbsp;述】三星S3C44B0X板测试程序&nbsp;<br />****************************************************************************/&nbsp;<br /><br />//***************************************************************************&nbsp;<br />#include&nbsp;&quot;inc44b.h&quot;&nbsp;<br />#include&nbsp;&quot;incoption.h&quot;&nbsp;<br />#include&nbsp;&quot;def.h&quot;&nbsp;<br />//***************************************************************************&nbsp;<br />void&nbsp;Led_Display(int&nbsp;LedStatus);&nbsp;<br />void&nbsp;__irq&nbsp;Timer_Tick(void);&nbsp;<br /><br /><br /><br /><br /><br />//***************************************************************************&nbsp;<br /><br />/****************************************************************************&nbsp;<br />【功能说明】I/O端口功能、方向设定&nbsp;<br />****************************************************************************/&nbsp;<br />void&nbsp;Port_Init(void)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PORT&nbsp;C&nbsp;&nbsp;GROUP&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PDATC&nbsp;:&nbsp;port&nbsp;C的数据寄存器&nbsp;&nbsp;&nbsp;PCONC:port&nbsp;C的控制寄存器&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rPDATC&nbsp;=&nbsp;0xffff;//0x0000即所有数据为0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//55:&nbsp;0101&nbsp;&nbsp;0101&nbsp;PC0,PC1,PC2,PC3都为OUTPUT模式&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rPCONC&nbsp;=&nbsp;0xfff5ff55;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;<br />}&nbsp;<br />//***************************************************************************&nbsp;<br /><br />/****************************************************************************&nbsp;<br />【功能说明】三个LED&nbsp;点亮/熄灭状态设置&nbsp;<br />****************************************************************************/&nbsp;<br />void&nbsp;Led_Display(int&nbsp;LedStatus)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((LedStatus&0x01)==0x01)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PC1状态设置&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rPDATC=rPDATC&0xfffD;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LED0熄灭&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rPDATC=rPDATC|0x02;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LED0点亮&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((LedStatus&0x02)==0x02)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PC2状态设置&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rPDATC=rPDATC&0xfffB;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rPDATC=rPDATC|0x04;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((LedStatus&0x04)==0x04)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PC3状态设置&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rPDATC=rPDATC&0xfff7;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rPDATC=rPDATC|0x08;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;<br /><br />/****************************************************************************&nbsp;<br />【功能说明】定时器3初始化&nbsp;<br />****************************************************************************/&nbsp;<br />void&nbsp;Timer_Init(void)&nbsp;<br />{&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*定时器配置寄存器0*/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//死区长度值为0,定时器(0,1)的预分频值为0,定时器(2,3)的预分频值为0xf=15,定时器(4,5)的预分频值为0,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rTCFG0=0x00000f00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*定时器配置寄存器1&nbsp;(MUX:混频,即继续分频)*/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//定时器3的MUX输入为1/4,其他的都为1/2&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rTCFG1=0x00001000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//定时器3计数缓冲寄存器&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rTCNTB3=0xc350;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(1/(60MHz/4/15))*0xc350=50ms&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(1/(60MHz/4/15))*0x4320=20ms&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定时器3比较缓冲寄存器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rTCMPB3=0x0;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;//定时器控制寄存器&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rTCON=0x0020000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//update&nbsp;T3(自己手动更新)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rTCON=0x0090000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定时器3自动重载和启动&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//中断控制寄存器&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTCON=0x1;&nbsp;//允许IRQ中断,不适用向量模式&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//中断模式设置&nbsp;0:IRQ模式&nbsp;1:FIQ模式&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMOD=0x0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//将函数的地址赋给定时器3中断服务的地址&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pISR_TIMER3=(int)Timer_Tick;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//中断屏蔽寄存器&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMSK=BIT_GLOBAL;//首先屏蔽全局中断&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//然后允许全局中断而且允许定时器3中断&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMSK=~(BIT_GLOBAL|BIT_TIMER3);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />}&nbsp;<br /><br /><br /><br />//***************************************************************************&nbsp;<br /><br />/****************************************************************************&nbsp;<br />【功能说明】系统主函数&nbsp;<br />****************************************************************************/&nbsp;<br />void&nbsp;Main(void)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Port_Init();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//IO端口功能、方向设定&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Timer_Init();//定时器初始化&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1);&nbsp;<br />}&nbsp;<br />//***************************************************************************&nbsp;<br /><br />void&nbsp;__irq&nbsp;Timer_Tick(void)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//50ms中断一次&nbsp;<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//I_ISPC&nbsp;:IRQ中断服务清除寄存器&nbsp;<br />//BIT_TIMER3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0x1&lt&lt10)&nbsp;<br />static&nbsp;volatile&nbsp;U32&nbsp;TimerCnt=0;&nbsp;<br />rI_ISPC=BIT_TIMER3;&nbsp;<br />TimerCnt++;&nbsp;<br />if(TimerCnt==10)&nbsp;<br />{&nbsp;<br />&nbsp;Led_Display(1);&nbsp;&nbsp;<br />&nbsp;}&nbsp;<br />if(TimerCnt==20)&nbsp;<br />&nbsp;{&nbsp;<br />&nbsp;Led_Display(2);&nbsp;<br />&nbsp;}&nbsp;<br />if(TimerCnt==30)&nbsp;<br />&nbsp;{&nbsp;<br />&nbsp;Led_Display(4);&nbsp;<br />&nbsp;TimerCnt=0;&nbsp;<br />&nbsp;}&nbsp;<br />}&nbsp;<br />
biehoff 发表于 2008-11-10 09:37 | 显示全部楼层

RE

正在看中断呢···<br />&nbsp;&nbsp;&nbsp;&nbsp;兄弟&nbsp;你知道44BOX的分散加载怎么搞吗?
 楼主| 125008301 发表于 2008-11-10 12:04 | 显示全部楼层

44BOX的分散加载 这个我不懂呢 我还在入门当中

44BOX的分散加载&nbsp;这个我不懂呢&nbsp;我还在入门当中
armecos 发表于 2008-11-11 08:41 | 显示全部楼层

应该是你的中断处理过程中的某个步骤有问题,

参看万能中断模板,只要你完全按照其操作,什么问题也不会出现。<br />注意:清除中断,反复陷如中断。<br />《ecos中断操作》<br /><br /><b>更多内容,详见:</b><br /><b>《培训系列“丛书”》</b><br /><b>www.armecos.com</b><br />-----------------------------------<br /><b>More&nbsp;details,&nbsp;see:</b><br /><b>《&quot;Series&nbsp;Books&quot;&nbsp;of&nbsp;Training》</b><br /><b>www.armecos.com</b>
xiaoyufph 发表于 2008-11-11 09:40 | 显示全部楼层

rINTCON=0X1应该是向量模式不是非向量模式

  
 楼主| 125008301 发表于 2008-11-11 19:13 | 显示全部楼层

rINTCON

那么我将&nbsp;rINTCON=0X1<br />变为&nbsp;rINTCON=0X0&nbsp;就OK吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

69

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部