STM32 SysTick定时器应用【worldsing笔记】

发布者:烟雨江湖最新更新时间:2019-12-11 来源: eefocus关键字:STM32  SysTick  定时器 手机看文章 扫描二维码
随时随地手机看文章

SysTick是CM内核独立的定时器,时钟可以用内核内部的,也可以用芯片厂家(ST)的时钟,参考《Cortex-M3权威指南》的第13章:

image 
另外也可以考《STM32F10xxx Cortex-M3 programming manual.pdf》第4章CM3系统外设,从手册来看,ST应该只提供了内核外部时钟,而外部时钟又分成两种:HCLK/8 和 HCLK, 
image 
ST官方提供了库直接可以操作SYSTICK,但不同的版本使用起来有些区别: 
在V2.0的版本中对SysTick的操作是使用的stm32f10x_systick.c和stm32f10x_systick.h 
void SysTick_CLKSourceConfig(u32 SysTick_CLKSource); 
void SysTick_SetReload(u32 Reload); 
void SysTick_CounterCmd(u32 SysTick_Counter); 
void SysTick_ITConfig(FunctionalState NewState); 
u32 SysTick_GetCounter(void); 
FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG); 
image 
但是在V3.0中取消了stm32f10x_systick.c和stm32f10x_systick.h文件直接在core_cm3.h文件定义成内联函数 
/* ##################################    SysTick function  ############################################ */ 
#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) 
/** 
* @brief  Initialize and start the SysTick counter and its interrupt. 

* @param   ticks   number of ticks between two interrupts 
* @return  1 = failed, 0 = successful 

* Initialise the system tick timer and its interrupt and start the 
* system tick timer / counter in free running mode to generate 
* periodical interrupts. 
*/ 
static __INLINE uint32_t SysTick_Config(uint32_t ticks) 

  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */ 
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */ 
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */ 
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */ 
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 
                   SysTick_CTRL_TICKINT_Msk   | 
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */ 
  return (0);                                                  /* Function successful */ 

#endif 
而且是默认使用的AHB总线的时钟HCLK 
 
宗合上述如果使用V3版本SysTick的话可以做以下操作,在不知道AHB总线的时钟的频下也可以直接算出加载值: 
void SysTickInit(u16 Frequency) 

RCC_ClocksTypeDef  RccClocks; 
RCC_GetClocksFreq(&RccClocks); 
SysTick_Config(RccClocks.HCLK_Frequency / Frequency); 

//systick.c文件 
#include "stm32f10x_rcc.h" 
#include "systick.h" 
u8 SysTickTimes[SYS_TICK_TIME_SIZE]; 
void SysTickInit(u16 Frequency) 

u8 i; 
RCC_ClocksTypeDef  RccClocks; 
for(i = 0; i < SYS_TICK_TIME_SIZE; i++) 
SysTickTimes = 0; 
RCC_GetClocksFreq(&RccClocks); 
SysTick_Config(RccClocks.HCLK_Frequency / Frequency); 

void SysTick_Handler(void) 

u8 i; 
for(i = 0; i < SYS_TICK_TIME_SIZE; i++) 
if(SysTickTimes) 
SysTickTimes--; 

/** 
  ****************************************************************************** 
  * @file    systick.h 
  * @author  onsunsl 
  * @version V0.1 
  * @date    11-March-2013 
  * @brief   define the zx240160m1a option cmd 
  ****************************************************************************** 
  */ 
#ifndef __SYSTICK__H 
#define __SYSTICK__H 
void SysTickInit(u16 Frequency); 
#define SYS_TICK_TIME_SIZE    10 
#endif 
/******************* (C) COPYRIGHT 2013 LCJCTEC *****END OF FILE***************/


关键字:STM32  SysTick  定时器 引用地址:STM32 SysTick定时器应用【worldsing笔记】

上一篇:uCos 没有延时Tick滴答定时器测试
下一篇:74LS164 for stm32 源码

推荐阅读最新更新时间:2024-10-31 07:13

STM32在IAR指定文件(函数)首地址
  有时候,我们会遇到一些情况,要把某些数组定义在某个固定的区域,或者指定某个函数的首地址。   例如,有两个文件,main.c和sendpc.c,要把sendpc.c放在0x08001200位置,把main.c放在0x08000800位置。   以IAR540为例,在stm32f10x_flash.icf文件里,加入以下两句:   place at address mem:0x08000800 { section .text object sendpc.o };   place at address mem:0x08001200 { section .text object main.o };   编译后可在map文件中查看
[单片机]
<font color='red'>STM32</font>在IAR指定文件(函数)首地址
基于STM32单片机的DLP驱动电路研究
DLP投影技术是应用美国德州仪器公司开发的数字微镜元件--DMD(Digital Micromirror Device)作为主要关键处理元件以实现数字光学处理过程的技术。DLP显示的色彩清晰度高、艳丽、细腻、逼真,且为全数字显示即可靠性极高,能在各类产品(如大屏幕数字电视、公司/家庭/专业会议投影机和数码相机(DLP Cinema))中提供最佳图像效果。目前,大部分的家用或商用DLP投影机都采用了单片结构,使得其便于移动携带,因而得到越来越广泛的应用。在目前应用发展的基础上,又对其结构的精简性、携带的方便性提出了更高的要求。传统的DLP投影仪是通过DVI接口接收外部信号,并且经过信号转换传送给DLP控制器来控制DLP的显示,占用的
[单片机]
基于<font color='red'>STM32</font>单片机的DLP驱动电路研究
51单片机定时器的应用
interrupt中断的关键字,n是中断号提供中断程序的入口地址。 0-INT0 1-T0 2-INT1 3-T1 4-串行中断 5-T2 直接访问寄存器和端口 定义 sfr P0 0x80 sfr P1 0x81 sfr ADCON; 0xDE sbit EA 0x9F 操作 ADCON = 0x08 ; P1 = 0xFF ; io_status = P0 ; EA = 1 ; 在使用了interrupt 1 关键字之后,会自动生成中断向量 在 IS
[单片机]
Systick滴答定时器-延时函数
1、参考资料 《STM32F1开发指南-库函数版本》-5.1小节 delay文件夹介绍 《Cortex-M3权威指南-中文》-第8章最后一个小节:Systick定时器 2、Systick定时器 Systick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器。 Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。 比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟。 Systick定时器就是系统滴答定时器,一个2
[单片机]
<font color='red'>Systick</font>滴答<font color='red'>定时器</font>-延时函数
STM32学习笔记:ADC理解
ADC 简介 12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部 源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续 采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。 ADC 主要特性 可配置 12 位、10 位、8 位或 6 位分辨率 ● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断 ● 单次和连续转换模式 ● 用于自动将通道 0 转换为通道“n”的扫描模式 ● 数据对齐以保持内置数据一致性 ● 可独立设置各通道采样时间 ● 外部触发器选项,可为规则转换和注入转换配置极性
[单片机]
<font color='red'>STM32</font>学习笔记:ADC理解
轻松搞懂STM32F4SysTick定时器
定时器在单片机中是一个非常重要东西,其中在Cortex系列的芯片中,内核给我们提供了一个定时器,就是滴答定时器SysTick。其功能就是计时。 SysTick定时器的作用 1:用于延时 2:用于产生中断 3:用于单片机系统(这里不做解释) SysTick内部结构 根据这个图,总结下各个的作用 HCLK:系统时钟,不会的话可以看我之前的视频 /8 : 一个8分频的分频器,也可以不分 VAL:倒计时寄存器:只用了低0-23位,高位保留(VAL就是Value意思) LOAD:自动重装载寄存器(load就是本地的意思,本地的寄存器)(英语水平不够,我也不知道他咋就翻译成了自动
[单片机]
轻松搞懂STM32F4<font color='red'>SysTick</font><font color='red'>定时器</font>
stm32中断初识与实践(下)
这一部分我们将使用按键作为触发源,在产生中断时,实现控制LED灯的亮灭状态切换。 在具体应用前,我们还需先认识认识EXTI。 EXTI 全称为External interrupt/event controller,即外部中断/事件控制器。其管理了20个中断/事件线,每条线都有对应的一个边沿检测器,用于输入信号上升沿和下降沿的检测。如图6-1为stm32参考手册里的EXTI框图。 图6-1 图中有两条走向的线路,蓝色线路用于产生中断,绿色线路产生事件。我们从右往左看图。 查阅按键原理图可知,按键按下时,电平状态由低变高,会在输入线呈现出一个上升沿信号,这个信号到达边沿检测电路后,会被上升沿触发选择寄存器(EXTI_RTS
[单片机]
<font color='red'>stm32</font>中断初识与实践(下)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved