• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机晶振与计时器的关系是什么

2174cd4ede269298 2020-07-27 浏览量:908
对于12hz的晶振,如果要求一秒间隔,那么计时器工作方式1中,脉冲次数65536次,溢出了也达不到一秒,这时候该怎么办呀
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你进入了一个误区就是期望只用用定时器来定时任意数,其实你可以引入一个变量,定时器可以设置为50ms溢出一次,也就是进一次定时器中断,然后每进一次中断,设置的变量就++,如果需要定时1s的话,当这个数加到20的时候就是1s,然后你再主程序里面判断这个变量,如果这个变量等于20,就执行你期望的1s中执行的操作,并清空这个变量。

    伪代码如下:

    unsigned int TIM_counter = 0u;

    中断代码

    {

        TIM_counter ++;

        定时器值装填;

    }


    int main()

    {

            while(1)

            {

                if(TIM_counter == 20)

                {

                       TIM_counter = 0;

                        1s定时需要的操作

                }

            }

            return 0;

    }

    • 发布于 2020-07-27
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 设置50000这个值,然后中断里计数到20次就是1秒,可以定义一个静态变量
    • 发布于2020-07-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 晶振是提供时钟的时钟源。计时器实际就是时钟计数器,比如12M的晶振提供给系统12MHz时钟,定时计数器计数12000次就是1ms。
    • 发布于2020-07-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 向定时器,串口等外设,其工作频率是需要设置的。

    如定时器设1ms进一次中断的初始化:需设置分频数,然后根据分频及你想要的计时时间设置一个计时的数据。


    定时器每1ms进一次中断,你定义一个静态变量计数,到1000就是1s了。

    建议你认真看一款芯片的datasheet ,看的时间结合试验,上手很快滴

    • 发布于2020-07-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种需要软件辅助定时,比如说定时器每次计时100ms,那主程序里面判定产生10次定时器中断就是1s
    • 发布于2020-07-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 计数器的时基就是晶振输出的时钟的,或是进行倍频分频后的时钟。

    而计数达不到1s时,就要进行多次的计数,进行累计计数

    • 发布于2020-08-06
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

单片机晶振与计时器的关系是什么