查看: 99|回复: 1

FM33LC02无法定时1us

[复制链接]

1

主题

1

帖子

27

积分

初级工程师

Rank: 1

积分
27
发表于 2024-4-30 11:06:12 | 显示全部楼层 |阅读模式
我使用了一个普通IO口作为红外接收,所以只能通过定时器计算时间,但我发现无法做到微妙級的计算,请问我的配置问题在哪里,感谢各位前辈!

现测试条件为我有一个9ms的电平改变,我通过修改  TimerBaseInitStruct.prescaler 和 TimerBaseInitStruct.autoReload,可以得到结果为:9/90/900的计数,但无法得到9000,只能计数得到2500左右的值

配置如下:
void MF_SystemClock_Config(void)
{
        SelRCHFToPLL(FL_RCC_RCHF_FREQUENCY_8MHZ, 64 - 1);
        SystemCoreClockUpdate();
}

void MF_GPTIM0_TimerBase_Init(void)
{
    /*IO CONFIG*/
    FL_GPTIM_InitTypeDef    TimerBaseInitStruct;

    TimerBaseInitStruct.prescaler = 64-1;
    TimerBaseInitStruct.counterMode = FL_GPTIM_COUNTER_DIR_UP;
    TimerBaseInitStruct.autoReload = 1-1;
    TimerBaseInitStruct.autoReloadState = FL_DISABLE;
    TimerBaseInitStruct.clockDivision = FL_GPTIM_CLK_DIVISION_DIV1;

    FL_GPTIM_Init(GPTIM0,&TimerBaseInitStruct );

    FL_GPTIM_EnableIT_Update(GPTIM0 );
}

回复

使用道具 举报

151

主题

845

帖子

4405

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4405
发表于 2024-5-6 11:09:20 | 显示全部楼层
主频 64MHz, 1us 也就是64条指令,考虑到中断压栈出栈。中断处理等等,1us的中断计时,估计是很难完成的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表