当前位置:首页 > 单片机 > 单片机
[导读]背景研究STM32F10xxx定时器的时候,无意间看到了System tick Timer,于是比较深入的了解下,在此做个记录。正文System tick Timer是Cotex-M内核的24位计数的系统定时器。它的自动重载值可被随时配置更改,并且如果配

背景

研究STM32F10xxx定时器的时候,无意间看到了System tick Timer,于是比较深入的了解下,在此做个记录。

正文

System tick Timer是Cotex-M内核的24位计数的系统定时器。它的自动重载值可被随时配置更改,并且如果配置了系统定时器,那么它的中断也即被跟着使能。需要强调的是,在STM3210xxx的用户手册里,基本上找不到关于系统定时器的信息,所以想要深入了解配置该定时器,得去看内核相关文档,不过好在有了库函数,可以暂时不去深究内核文档,即可利用ST提供的库函数来进行配置。本文即记录了利用ST的库函数将该定时器的时钟配置为“AHB Clock”8分频并实现微妙(us)延时的方法。

首先是配置系统定时器的时钟源,库函数如下:

/***@briefConfigurestheSysTickclocksource.*@paramSysTick_CLKSource:specifiestheSysTickclocksource.*Thisparametercanbeoneofthefollowingvalues:*@argSysTick_CLKSource_HCLK_Div8:AHBclockdividedby8selectedasSysTickclocksource.*@argSysTick_CLKSource_HCLK:AHBclockselectedasSysTickclocksource.*@retvalNone*/voidSysTick_CLKSourceConfig(uint32_tSysTick_CLKSource){/*Checktheparameters*/assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));if(SysTick_CLKSource==SysTick_CLKSource_HCLK){SysTick->CTRL|=SysTick_CLKSource_HCLK;}else{SysTick->CTRL&=SysTick_CLKSource_HCLK_Div8;}}

从以上的说明可以看出,系统定时器可被选择为AHB时钟或者AHB 8分频。本例则配置为 AHB 8分频:

/***SysTick时钟源由HCLK/8提供,当系统频率为72MHz时,最小计数周期为1/9MHz,计满9次为1us,*tick_us以9为单位,在此为基础实现us延时。*/SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);tick_us=sysclk/8;//sysyclk=72tick_ms=(u16)tick_us*1000;

接着实现Delay_us(uint us)函数

voidDelay_us(uintus){uinttemp;SysTick->LOAD=us*tick_us;//滴答9次就是1usSysTick->VAL=0x00;//赋初值为"0"SysTick->CTRL=0x01;//开启定时器do{temp=SysTick->CTRL;}while((temp&0x01)&&(!(temp&(1<<16))));SysTick->CTRL=0x00;//停止计数器SysTick->VAL=0x00;//清空计数器}

以上函数则实现了us定时。
当然也可以使用它的中断函数:

/***@briefThisfunctionhandlesSysTickHandler.*@paramNone*@retvalNone*/voidSysTick_Handler(void){//要做什么,自行发挥。}
参考链接

此文章参考借鉴了"ARM KEIL"官方文档:"System Tick Timer" 。

至此,记录完毕


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘 要: 在FPGA平台上应用System Generator工具实现了高精度频率估计Rife算法。不同于传统的基于HDL代码和IP核的设计方法,采用System Generator工具可以使复

关键字: FPGA system 算法

  一、概述 随着VLSI的集成度越来越高,设计也越趋复杂。一个系统的设计往往不仅需要硬件设计人员的参与,也需要有软件设计人员的参与。软件设计人员与硬件设计人员之间的

关键字: FPGA system 嵌入式开发 方法

使用的是STM32F407的板子,程序参考的是STM32F4xx固件库的DAC_SignalsGeneration文件夹下的程序。官方例程分别使用了DAC的禁止生成波(DAC_WaveGeneration_None)的E...

关键字: dac dma STM32 timer 输出正弦波

在开发Android system中,我们经常要复制文件到bin、etc、lib等下面,这里把比较好的方法记录下,以便后面使用。首先在Android product下面创建自己的copyfiles目录

关键字: Android firmware system

  An interrupt is an internal or external event that requires quick attention from the controller. The PIC32MZ...

关键字: interrupt pic32mz timer tutorial

  Core Timer is a very popular feature of PIC32 since it isa piece of the MIPS M4K core itself and is common t...

关键字: core pic32mz timer tutorial

#include void SystemInit (void){ LPC_SC->SCS = 0x00000021; //主振荡器使能 if (0x00000021 & (...

关键字: system 文件

郁闷,刚才写了N百字的东西,就在我系统崩溃的一瞬间,没有。。。。伤心欲死。。。。,但从哪儿完蛋的就从哪不让它完蛋的信念告诉我,一定接着写。。。在学校的时候裸跑了2410的PWM来控制直流电动机,之后来

关键字: c timer

----------------------------------------------------------timer 0---------------------------------------------...

关键字: pic16f877a timer
关闭
关闭