rtc终端进入之后不能出来
PREINT = Fpclk/32768 -1;
PREFRAC = Fpclk - (Fpclk/32768)*32768;
ILR = 0x03;
CCR = 0x11;
CIIR = 0x02; // 设置秒值的增量产生一次中断
// 清除RTC增量和报警中断标志
VICIntSelect = 0x00;
VICVectCntl0 = 0x20|13;
VICVectAddr0 = (uint32)RTC_Count;
VICIntEnable = (1<<13);
void RTC_Count(void)
{
OffMinute++;
if(OffMinute==1) //can change to wahtever number you want
{
Power_Off();
OffMinute=0;
}
}
上面是RTC的代码,自己调试后发现RTC不能跳出终端,很崩溃啊~调试发现每次到最后就跳到startup.s里面的代码去了,然后又调回终端。这是怎么回事呢?
跳到这里了:
;The emported labels
;给外部使用的标号在这声明
EXPORT bottom_of_heap
EXPORT bottom_of_Stacks
EXPORT top_of_heap
EXPORT StackUsr
EXPORT Reset
EXPORT __user_initial_stackheap
CODE32
AREA vectors,CODE,READONLY
ENTRY
;interrupt vectors
;中断向量表
Reset
LDR PC, ResetAddr
LDR PC, UndefinedAddr
LDR PC, SWI_Addr
LDR PC, PrefetchAddr
LDR PC, DataAbortAddr
DCD 0xb9205f80
LDR PC, [PC, #-0xff0]
LDR PC, FIQ_Addr
[解决办法]
RTC很难调试,因为你调试的时候中断又发生,又会进入中断处理程序.
比较好的方法是,一点点增加中断处理程序,一开始进去就返回,然后看看是不是正常.然后慢慢往里加指令.如果最初的都不行,那说明你中断初始化或者rtc初始化就有问题.