|
第一次用合泰BS系列的芯片,发现中断服务函数进不了(用的是CTM0),弄了个测试程序进行排查,发现CTMA0E与CTMA0F无法置1。而CT0ON、CT0PAU、EMI等标志位测试都是符合预想值的。出现这种问题该怎么搞,想不到切入点,只能请求各路大神了,具体测试代码如下:
//定时器初始化设置如下:
void Timer_Init()
{
_ctm0c0 = 0x00;
_ctm0c1 = 0xc1;
_ctm0al = 0xF4;
_ctm0ah = 0x01;
_ctma0f = 0;
_ctma0e = 1;
_ct0on = 1;
_ct0pau = 0;
_emi = 1;
}
//在主函数中判断_ctma0e并不等于一1,_ctma0f也是一直不会置位,中断函数没有进入
volatile bit test0;
volatile bit test1;
void main()
{
_wdtc = 0b01010111;
_pbc = 0;
_pb = 0xfe;
Timer_Init();
while(1)
{
_clrwdt();
test0 = _ctma0e;
test1 = _ctma0f;
if(test0 == 1)
_pb1 = 0; //实测没有清零
if(test1 == 1)
_pb2 = 0; //实测没有清零
}
}
void __attribute((interrupt(0x14))) CTM0_ISR(void)
{
_pb3 = 0;
//_ctma0f =0;
}
|
上一篇:合泰单片机快速入门教程与应用指南下一篇:BS8116A-3
|