新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2022-7-4
- 在线时间
- 5 小时
|
按代码说明,是配置500mS中断,在中断中取反LED1,但测量LED1波形,只有497mS左右周期,存在较大误差,这是什么原因?
int main(void)
{
u32 hclkfre=0;
Cache_Enable(); //打开L1-Cache
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(160,5,2,4); //设置时钟,400Mhz
delay_init(400); //延时初始化
uart_init(115200); //串口初始化
LED_Init(); //初始化LED
TIM3_Init(5000-1,20000-1); //定时器3初始化,定时器时钟为200M,分频系数为20000-1,
//所以定时器3的频率为200M/20000=10K,自动重装载为5000-1,那么定时器周期就是500ms
while(1)
{
LED0_Toggle; //LED0翻转
delay_ms(200); //延时200ms
}
}
//定时器3中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==(&TIM3_Handler))
{
LED1_Toggle; //LED0反转
}
}
|
|