ML51TC0AE,运行了一段自己编的ADC函数后,单片机好像降级成12T运行模式了。延时函数时间增

xtp1230 |浏览1318次
收藏|2019/09/18 15:25

    调试程序中对延时时间变长感到疑惑,遂寻找其问题原因所在,最后发现问题是在运行了一个自己编的ADC函数后出现的。我把该函数定义放在官方BSP文件中的ADC.C中,并在adc.h中也有声明。并非系统时钟变慢,我特意添加了一段函数测试异常过程中CLKO输出仍为24MHz。又特意编了个while(1)函数测试IO口输出方波频率,改变while(1)函数中内容,正常和异常时IO口输出频率之比不尽相同,有异常是IO口方波频率是正常时的5倍的,有比率是5.5倍的,正符合12T单片机和1T单片机(当然也不是所有指令都是1T)同频处理指令速度之比。请问这个是新唐ML51系列单片机的BUG吗?

满意回答

2022/09/05 16:43

可能是SFRS  page切换的问题。主循环中刚刚切换到page1,立马被中断打断了,中断里切换到page0后没有恢复到page1,就导主循环后的执行的语句就不对了。所以在中断有对SFR操作的内容,都需要在中断里备份SFRS的状态才行。

jamesliu

其他回答(0)
1人关注该问题
+1
 加载中...