我使用PIT中断,控制M口输出点灯,单步调试的时候发现没有进入中断,我是初学者,刚刚接触freescale,用的XDP512,
希望有人能指点一下,再初学的路上点亮一盏灯,帮我过了这道坎,感激不尽。
我的代码:#include <hidef.h> /* common defines and macros */
#include <mc9s12xdp512.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xdp512"
void SetupPITimer (void)
{
/* time-out period = (PITMTLD0 + 1) * (PITLD0 + 1) / Fbus */
PITCFLMT = 0x81; /* PFLMT0=1 (reload MT0) */
PITFLT = 0x01; /* force reload of PIT channel 0 */
PITMUX = 0x00;
PITCE = 0x01;
PITINTE = 0x01; /* enable PIT channel 0 interrupt */
PITTF = 0x01; /* clear PIT interrupt */
PITMTLD0 = 0x02; /* MT0 load value (divides bus clock) */
PITLD0 = 0X0001; /* T0 load value (5 ms) */
PITCFLMT |= 0x80;
}
/********************************************************/
/*********************** main *********************************/
void main(void)
{
DDRM=0XFF;
PTM=0x00;
SetupPITimer();
EnableInterrupts;
for(;;)
{
}
}
/********************************************************/
/* interrupt handler for PIT 0 */
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 73 ISR_PIT0(void)
{
PITINTE &= 0xfe;
PITTF |= 0x01;
PTM=~PTM;
}
我还是没有明白map中的PIT中断标志的地址问题,希望斑竹进一步指正一下,十分感谢。
工程文件传上来了。。。。
6N5qEVjc.rar (324.65 KB)关于中断号的问题,我是在datasheet中查到的,就是中断向量表中的从零开始,把Reserved得都算在内,Periodic interrupt timer channel 0中断是第 73个
我还有一个疑问,这里的中断向量表中是这么写的Vector base + $7A $3D Periodic interrupt timer channel 0 I bit PITINTE (PINTE0),而中断标志位为PITTF,会不会两个指的不是同一个中断呢。不知道是不是这个原因呢。 有点困惑,实在是初学,真的是没招了,希望高手一定指点一下。万分感谢
我在论坛里说过很多次了,尽量不要用中断号的形式,因为这样容易出错。最好是在PRM文件中用中断地址的形式定义。可以在PRM文件的后面加上这样一句:
VECTOR ADDRESS 0xFF7A ISR_PIT0
[此贴子已经被作者于2009-6-29 14:58:49编辑过]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |