AT91SAM7x512定时器中断的问题

[复制链接]
 楼主| ffyyy 发表于 2009-7-11 11:21 | 显示全部楼层 |阅读模式
初学ARM,使用定时器遇到问题了,请大家帮忙看一下,<br /><br />Timer0初始化函数如下:<br /><br />void&nbsp;Timer0Init(FuncPtr&nbsp;timer0IrqHandler)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;U32&nbsp;dummy;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(timer0IrqHandler&nbsp;==&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//开TIMER0时钟<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC,&nbsp;0x1&lt&ltAT91C_ID_TC0);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//禁止记数时钟<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_TC0-&gtTC_CCR&nbsp;=&nbsp;AT91C_TC_CLKDIS;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//禁止中断<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_TC_InterruptDisable(AT91C_BASE_TC0,&nbsp;0xFFFF);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;dummy&nbsp;=&nbsp;AT91C_BASE_TC0-&gtTC_SR;<br />&nbsp;&nbsp;&nbsp;&nbsp;dummy&nbsp;=&nbsp;dummy;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//设置TC模式<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_TC0-&gtTC_CMR&nbsp;=&nbsp;TC_CLKS_MCK1024;//&nbsp;|0x2&lt&lt13;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;enable&nbsp;counter&nbsp;clock<br />//&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_TC0-&gtTC_CCR&nbsp;=&nbsp;AT91C_TC_CLKEN;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;打开定时器0中断<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,&nbsp;&nbsp;//base<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;AT91C_ID_TC0,&nbsp;&nbsp;&nbsp;//ID<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;TIMER0_INTERRUPT_LEVEL,<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;AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,<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;timer0IrqHandler);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//设置记数值,&nbsp;0.1ms一次中断<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_TC0-&gtTC_RC&nbsp;=&nbsp;TIMER_100US_MCK1024_RC;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_TC0-&gtTC_IER&nbsp;=&nbsp;AT91C_TC_CPCS;&nbsp;//&nbsp;IRQ使能CPC<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//允许TC0中断<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_AIC_EnableIt(AT91C_BASE_AIC,&nbsp;AT91C_ID_TC0);<br /><br />}<br /><br />中断处理函数<br />void&nbsp;Timer0IrqHandler(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;clear_SR;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//读取,同时清除状态积存器<br />&nbsp;&nbsp;&nbsp;&nbsp;clear_SR&nbsp;=&nbsp;AT91C_BASE_TC0-&gtTC_SR;<br />&nbsp;&nbsp;&nbsp;&nbsp;//避免编译警告<br />&nbsp;&nbsp;&nbsp;&nbsp;clear_SR&nbsp;=&nbsp;clear_SR;<br />}<br /><br />中断处理函数总是进入不了,请大家帮忙看一下,谢谢了。<br />编译器:Keil&nbsp;3.4<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

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

1

主题

1

帖子

0

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