本帖最后由 pocker5200 于 2022-4-7 03:11 编辑
芯片MS51FB9AE,板子NuTiny V2.1
功能定时器0做一个1ms定时器,使用内部校准的HIRC_166
代码刚开始是正常的,后来调试时发现程序跑得很慢,
用逻辑分析仪看定时器0的IO反转频率只有10.5Hz左右,慢了近100倍,
不知道哪里出了问题。试了一下1.004固件库的Timer0_mode_1_Interrupt例程,定时器IO输出频率也不对,大概慢了1.5倍。
代码都是扒的参考代码,如下
#define HSE_FREQ 16600000UL//外部时钟频率
#define TIMER0_DIV12_VALUE_1ms_HSE_FREQ 65536-HSE_FREQ/12/1000
void Timer0_1ms_init(void)
{
TIMER0_MODE1_ENABLE;//16bit mode
TIMER0_FSYS_DIV12;
TH0 = HIBYTE(TIMER0_DIV12_VALUE_1ms_HSE_FREQ);
TL0 = LOBYTE(TIMER0_DIV12_VALUE_1ms_HSE_FREQ);
ENABLE_TIMER0_INTERRUPT;//使能timer0中断
set_TCON_TR0;//Timer0 run
}
void Timer0_ISR (void) interrupt 1 //
{
//_push_(SFRS);
local_1ms++;
P04 = ~P04;
//_pop_(SFRS);
}
void main (void)
{
MODIFY_HIRC(HIRC_166);
//WDT_init();//看门狗1.638s初始化
Timer0_1ms_init();//1ms定时器初始化
set_EA;//使能全局中断
}
|