我的7s256定时器0为什么不中断?汗~

[复制链接]
2375|5
 楼主| soulmate 发表于 2008-1-28 11:21 | 显示全部楼层 |阅读模式
烧到片子里面可以~仿真时如果在定时器中断里面设置一个断点,完了如果按下一下iar软件复位的按钮以后就再以不能中断了~怎么回事?<br /><br />void&nbsp;AT91F_TC_Open&nbsp;(&nbsp;AT91PS_TC&nbsp;TC_pt,&nbsp;unsigned&nbsp;int&nbsp;Mode,&nbsp;unsigned&nbsp;int&nbsp;TimerId)&nbsp;<br />//*&nbsp;Begin&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;dummy;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;First,&nbsp;enable&nbsp;the&nbsp;clock&nbsp;of&nbsp;the&nbsp;TIMER&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PMC_EnablePeriphClock&nbsp;(&nbsp;AT91C_BASE_PMC,1&lt&lt&nbsp;TimerId);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Disable&nbsp;the&nbsp;clock&nbsp;and&nbsp;the&nbsp;interrupts&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TC_pt-&gtTC_CCR&nbsp;=&nbsp;AT91C_TC_CLKDIS&nbsp;;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TC_pt-&gtTC_IDR&nbsp;=&nbsp;0xFFFFFFFF&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Clear&nbsp;status&nbsp;bit&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dummy&nbsp;=&nbsp;TC_pt-&gtTC_SR;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Suppress&nbsp;warning&nbsp;variable&nbsp;&quot;dummy&quot;&nbsp;was&nbsp;set&nbsp;but&nbsp;never&nbsp;used&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dummy&nbsp;=&nbsp;dummy;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Set&nbsp;the&nbsp;Mode&nbsp;of&nbsp;the&nbsp;Timer&nbsp;Counter&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TC_pt-&gtTC_CMR&nbsp;=&nbsp;Mode&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Enable&nbsp;the&nbsp;clock&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TC_pt-&gtTC_CCR&nbsp;=&nbsp;AT91C_TC_CLKEN&nbsp;;&nbsp;<br />//*&nbsp;End&nbsp;<br />}&nbsp;<br /><br />//*-------------------------&nbsp;Interrupt&nbsp;Function&nbsp;-------------------------------&nbsp;<br /><br />//*----------------------------------------------------------------------------&nbsp;<br />//*&nbsp;Function&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;timer0_c_irq_handler&nbsp;<br />//*&nbsp;Object&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;C&nbsp;handler&nbsp;interrupt&nbsp;function&nbsp;called&nbsp;by&nbsp;the&nbsp;interrupts&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;assembling&nbsp;routine&nbsp;<br />//*&nbsp;Output&nbsp;Parameters&nbsp;&nbsp;&nbsp;:&nbsp;increment&nbsp;count_timer0_interrupt&nbsp;<br />//*----------------------------------------------------------------------------&nbsp;<br />__ramfunc&nbsp;void&nbsp;timer0_c_irq_handler(void)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91PS_TC&nbsp;TC_pt&nbsp;=&nbsp;AT91C_BASE_TC0;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;dummy;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Acknowledge&nbsp;interrupt&nbsp;status&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dummy&nbsp;=&nbsp;TC_pt-&gtTC_SR;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Suppress&nbsp;warning&nbsp;variable&nbsp;&quot;dummy&quot;&nbsp;was&nbsp;set&nbsp;but&nbsp;never&nbsp;used&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dummy&nbsp;=&nbsp;dummy;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;count_timer0_interrupt++;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PIO_SetOutput(AT91C_BASE_PIOA,PORTTmp[1]);&nbsp;&nbsp;//恢复最后一次IO口状态&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,~PORTTmp[1]);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;R_Status^=BIT0;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(R_Status&BIT0)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,BIT7);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PIO_SetOutput(AT91C_BASE_PIOA,BIT7);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PIO_SetOutput(AT91C_BASE_PIOA,LE1);&nbsp;&nbsp;//打开片选&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,LE1);&nbsp;&nbsp;//关闭片选&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PORTTmp[1]=(AT91C_BASE_PIOA-&gtPIO_ODSR&0x000000ff);&nbsp;&nbsp;//保存最后一次锁存后输出口状态&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;<br /><br /><br />//*--------------------------&nbsp;External&nbsp;Function&nbsp;-------------------------------&nbsp;<br /><br />//*----------------------------------------------------------------------------&nbsp;<br />//*&nbsp;Function&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;timer_init&nbsp;<br />//*&nbsp;Object&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;Init&nbsp;timer&nbsp;counter&nbsp;<br />//*&nbsp;Input&nbsp;Parameters&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;none&nbsp;<br />//*&nbsp;Output&nbsp;Parameters&nbsp;&nbsp;&nbsp;:&nbsp;TRUE&nbsp;<br />//*----------------------------------------------------------------------------&nbsp;<br />void&nbsp;timer_init&nbsp;(&nbsp;void&nbsp;)&nbsp;<br />//*&nbsp;Begin&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//init&nbsp;the&nbsp;timer&nbsp;interrupt&nbsp;counter&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;count_timer0_interrupt=0;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Open&nbsp;timer0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_TC_Open(AT91C_BASE_TC0,TC_CLKS_MCK1024|AT91C_TC_WAVESEL_UP_AUTO|AT91C_TC_WAVE,AT91C_ID_TC0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_TC0-&gtTC_RC=46928;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Open&nbsp;Timer&nbsp;0&nbsp;interrupt&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_AIC_ConfigureIt&nbsp;(&nbsp;AT91C_BASE_AIC,&nbsp;AT91C_ID_TC0,&nbsp;TIMER0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,&nbsp;timer0_c_irq_handler);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_TC0-&gtTC_IER&nbsp;=&nbsp;AT91C_TC_CPCS;&nbsp;&nbsp;//&nbsp;&nbsp;IRQ&nbsp;enable&nbsp;CPC&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_AIC_EnableIt&nbsp;(AT91C_BASE_AIC,&nbsp;AT91C_ID_TC0);&nbsp;<br />&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;//*&nbsp;Start&nbsp;timer0&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_TC0-&gtTC_CCR&nbsp;=&nbsp;AT91C_TC_SWTRG&nbsp;;&nbsp;<br /><br /><br />//*&nbsp;End&nbsp;<br />}&nbsp;<br /><br />主频大约48m,中断1s一次~&nbsp;<br />
 楼主| soulmate 发表于 2008-1-28 11:22 | 显示全部楼层
阿南 发表于 2008-1-28 11:29 | 显示全部楼层

呵呵,可以这样一步步测试

1.先确定定时器已经启动,<br />2.定时溢出标志和中断标志位是否置位<br />3.定时中断挂起标志是否置位<br />4.是否能进入IRQ中断入口<br />5.进入IRQ入口后能否走到中断服务程序<br /><br />上述的都要查看寄存器值
 楼主| soulmate 发表于 2008-1-28 11:32 | 显示全部楼层
 楼主| soulmate 发表于 2008-1-28 11:38 | 显示全部楼层
 楼主| soulmate 发表于 2008-1-28 11:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

145

帖子

1

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