你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

对于STM32的SYSTICK的个人见解

[复制链接]
和平清风 发布时间:2014-4-16 12:15
       学习了cm3系统的系统滴答定时器,开始学习STM32时,看到系统滴答定时器,就跑到STM32的数据手册上狂找,结果,毛也没找到,最后才发现,原来这个SYSTICK是M3内核的,ARM公司就带过来的,提供的一个作为操作系统的时间基准,也就是说M3有,M4也有....
           这是复制了CM3的权威指南里面的一个队SYSTICK的介绍“ SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律 ”
          
           SYSTICK包含了4个寄存器,
      
           1、SysTick控制及状态寄存器(地址:0xE000_E010)
                 
          2、SysTick重装载数值寄存器(地址:0xE000_E014)
                 
          3、SysTick当前数值寄存器(地址:0xE000_E018)
                 
          4、SysTick校准数值寄存器(地址:0xE000_E01C)
                

          也即是说,我们只要操作这四个寄存器,即可控制SYSTICK,在不使用系统的时候,用SYSTICK作精确延时最为合适

         在这里我们只使用前三个寄存器,
         首先需要配置的自然就是时钟源,SYSTICK的时钟源可以来自HCLK,或则是HCLK/8
          接着是设置从装载的值到ysTick重装载数值寄存器,这里系统会自动的把重装载中的值放到当前数值寄存器中
         第三步便是启动定时器倒数了,启动定时器倒数之后,SysTick当前数值寄存器中的数便会随着脉冲开始一个一个的减少
         最后就是等待并且判断倒数为0,此时,状态寄存器中的COUNTFLAG位就会置位

        具体编程
       SysTick->CTRL&=0XFFFFFFFB;          //SysTick选择外部时钟8分频
       SysTick->LOAD=(u32)x;                         //重载时间值
       SysTick->VAL=0x00;                                     //清空计数器  
        SysTick->CTRL=0X01;                                                 //启动倒数计数器
               while(!(temp&(1CTRL=0X00;                                                 //关闭计数器

      在STM32 的新版库中,是没有库函数写SYSTICK的,这也说明了意法半导体公司在提示大家的一点
      慎用systick,因为这是系统滴答定时器,是专门给系统使用的       
收藏 评论0 发布时间:2014-4-16 12:15

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版