在controlSUITE的 28069的例子里
F2806x_DefaultIsr.c 这个是所有的 中断服务函数的 集合,
InitPieVectTable(); 初始化里 给 PieVectTable都赋值了,
现在以time0 为例, 我的问题是 为什么我的 程序不会跳转到 TINT0_ISR() 这样函数, 一定要自己写一个 服务函数fun(), 然后PieVectTable.TINT0 = &fun();
才会跳转到fun()里, 这不是很奇怪吗? 你们controlSUITE 的例子里也是像fun() 一样 自己又写了一个函数做服务程序的, 为什么不能用F2806x_DefaultIsr.c 的如何函数呢?
gaoyang9992006:
&为取地址符号,将fun入口地址传递给TINT0,那个向量地址存储列表。
TINT0_ISR肯定是没有地址写入到中断向量表
HG:
timer0的中断在PieVectTable定义的就是TINT0,而且初始化的时候会有类似 PINT *Dest = &PieVectTable.TINT0;的声明,你重写了函数,改过VectTable和初始化没呢?
guoz:
回复 gaoyang9992006:
肯定是取地址的了
guoz:
回复 HG:
InitPieVectTable 里会给 PieVectTable.TINT0 = (PINT) TINT0_ISR;
我在 后来 PieVectTable.TINT0 = &cpu_timer0_isr; 覆盖了,
问题是cpu_timer0_isr 这个中断会进去, 去掉 PieVectTable.TINT0 = &cpu_timer0_isr 这个,用原始的InitPieVectTable() 初始化, TINT0_ISR这个中断不会进去啊,
你们ti\ccs613\controlSUITE\device_support\f2806x\v151 里面的例子都是覆写那个 中断isr 为什么不用原始F2806x_DefaultIsr.c 里 的入口.