楼主: feiante

STM32F0 #01进程帖(四)——时间基准

[复制链接]
  • TA的每日心情
    开心
    2019-7-11 11:26
  • 签到天数: 1982 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2012-11-2 23:49:27 | 显示全部楼层 |阅读模式
    分享到:
    最近一直比较忙,虽然没有太多的内容,但是进步一点总是好的。
    这次主要是想写下时间基准(SysTick),我们在做控制的时候,经常会需要一个时间基准,通常都是通过一个定时器来产生的,而M0的芯片自己已经有一个用于产生时间基准的东西:Systick,这样就可以不浪费定时器。
    使用Systick,现在固件库做的让我们使用起来更简单了,只需要SysTick_Config(X)函数就可以了,其中X为定时中断的分频因素(呵呵,暂时就这样叫了),用了这句后,Systick的计数器寄存器就被复位,同时使能了Systick中断并开始使能了Systick计数器。
    在手册中,有这样的一句话:SysTick 校准值设置为6000 ,  当SysTick 时钟设置为6  MHz  (fHCLK/8 的最大值) 时,会产生
    1ms 时间基准。所以有如下的初始化产生1ms的定时中断。
    void Systick_Init(void)
    {
      if (SysTick_Config(SystemCoreClock / 1000))//1ms            
      {
        while (1);
      }
    }
    在中断函数stm32f0xx_it.c中,加入下面的函数,进行1ms减1的操作:
    void SysTick_Handler(void)
    {
    TimingDelay_Decrement();
    }
    如果要想比较准确的延时,比如延时N毫秒,新建一个systick.c文件,包含以下函数:
    void Delay_ms(int nTime)
    {
      TimingDelay = nTime;
      while(TimingDelay != 0);
    }

    void TimingDelay_Decrement(void)
    {
      if (TimingDelay != 0x00)
      {
        TimingDelay--;
      }
    }
    这样就完成了延时N毫秒的程序。
    为了验证,我在主程序中加入下面几句:(其中RCC_Configuration();  GPIO_Configuration();在前面的笔记中写过,不详细介绍了。
    int main(void)
    {
    RCC_Configuration();
    GPIO_Configuration();
    Systick_Init();
        while(1)
    {
      LED0_ON();
      Delay_ms(1000);
      LED0_OFF();
      Delay_ms(1000);
    }
    }
    此时可以看到LED4蓝色发光二极管亮1秒,然后熄灭1秒,如此反复闪烁。

    写到这,那么SystemCoreClock 是什么东西呢?
    其实在system_stm32f0xx.c中已经有这样的定义:uint32_t SystemCoreClock    = 48000000;也就是48MHz

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-26 01:52
  • 签到天数: 120 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2012-11-3 05:07:15 | 显示全部楼层
    沙发,看看{:soso_e113:}
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-11-3 23:56:54 | 显示全部楼层
    Kite 发表于 2012-11-3 05:07
    沙发,看看

    沙发都让你给坐了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-26 01:52
  • 签到天数: 120 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2012-11-4 01:00:52 | 显示全部楼层
    ming1006 发表于 2012-11-3 23:56
    沙发都让你给坐了

    必须的{:soso_e113:},好贴得顶啊{:soso_e129:}
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-12-14 11:43
  • 签到天数: 556 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-1-4 20:12:45 | 显示全部楼层
    好帖               
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-18 17:52 , Processed in 0.147246 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.