STM32学习之路(四)——Sys Tick定时器

发布者:电子设计艺术家最新更新时间:2016-10-07 来源: eefocus关键字:STM32  Sys  Tick  定时器 手机看文章 扫描二维码
随时随地手机看文章
SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号:15)。在以前,操作系统还有所有使用了时基的系统,都必须一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
  Cortex-M3处理器内部包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作就得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟(CM3处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同。因此,需要检视芯片的器件手册来决定选择什么作为时钟源。
SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间,SysTick的处理方式都是相同的。
有4个寄存器控制SysTick定时器,如下表所示。
STM32 <wbr>V3.5固件库下SysTick的使用 SysTick定时器除了能服务于操作系统之外,还能用于其它目的:如作为一个闹铃,用于测量时间等。要注意的是,当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作。
在3.5固件库中,SysTick定义在core_cm3.h中:
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);           
                                                              
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;     
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); 
  SysTick->VAL   = 0;                                         
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                   
  return (0);                                                 
}
    在3.5库中,要使用SysTick变得非常简单,只要在初始化时调用SysTick_Config()函数写入重装节拍数即可。如,设置SysTick定时器产生一个中断:
void Delay(u32 nTime)
  TimingDelay = nTime;
  while(TimingDelay);                                                                        //等待Sys Tick产生中断
}
 
int main(void)
{
GPIO_conf();
while(1)
{
while(SysTick_Config(3600000)!=0);                               //72MHz 频率,重装寄存器装二十分之一
LED_on(); 
        Delay(10); //延时0.5s                                                          //中断10次
        LED_off();       
        Delay(10); //延时0.5s
}
}
其中, TimingDelay 为全局变量,在SysTick中断服务程序里做自减操作:
void SysTick_Handler()
{
TimingDelay--;
}
 
程序编译结果显示为  1Hz  闪烁灯。
关键字:STM32  Sys  Tick  定时器 引用地址:STM32学习之路(四)——Sys Tick定时器

上一篇:STM32学习之路(五)——RTC系统时钟
下一篇:STM32学习之路(三)——GPIO+USART联调

推荐阅读最新更新时间:2024-03-16 15:13

ST新STM32软件开发工具套件让电机控制设计更快、更容易
中国,2018年3月21日——通过使最新的STM32 PMSM FOC软件开发套件(SDK)支持STM32Cube开发生态系统(订货代码: X-CUBE-MCSDK ),意法半导体进一步简化在 STM32* 微控制器 上开发先进的高能效电机驱动器的难度。此举为空调、家电、无人机、楼宇自动化、机床、医疗设备、电动车等产品设备工程师研发先进电机驱动带来更多机会,而且无需专门的研发经验。 基于意法半导体上一代永磁同步电机(PMSM)矢量控制(FOC)SDK,5.0 新版固件库结合STM32Cube硬件抽象层(HAL)和底层(LL)架构,简化电机驱动电路的开发、定制和调试过程。此外,免费使用源代码让开发人员能够按照市场需求灵活地
[嵌入式]
ST新<font color='red'>STM32</font>软件开发工具套件让电机控制设计更快、更容易
基于555定时器的D类耳机驱动器可作为理想的实用放大器
  广受欢迎的555定时器可用作乐器或其他应用的PWM/D类放大器。其可在4.5V~16V的电源电压范围内工作,并可输出200mA的驱动电流。音频信号被传送至555定时器的CV( 控制电压)引脚。   本设计实例为耳机和音频线路提供两个简单、便宜的驱动器,分别如图1、图2所示。这两个驱动器针对电吉他和小提琴设计,但也可适用于更多其他应用。对于这样的简单应用而言,噪声和总谐波失真(THD)并不是重点考虑因素,因此并未对这两个数值进行测量。      图1:含运算放大器和NE555定时器的耳机和音频线路驱动器。也可以使用CMOS版本(如LMC555),但输出电流较低。其优点为工作频率较高。   下述为一些设计考
[电源管理]
基于555<font color='red'>定时器</font>的D类耳机驱动器可作为理想的实用放大器
STM32的USART窗口通讯程序
一、准备工作 硬件原理图: 所用器件:核心版、下载线ST–Link、usb转TTL线 所用编程软件:MDK5.33 二、操作目的 设置波特率为115200,1位停止位,无校验位。 STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。 当上位机给stm32发送“Stop,stm32”后,stm32停止发送。 三、实验操作 1.实验所需代码 #include led.h #include delay.h #include key.h #include sys.h #include usart.h #include stdl
[单片机]
<font color='red'>STM32</font>的USART窗口通讯程序
STM32 Timer1 TIM1 中断
/*定时器1ms中断,死等定时器延时*/ /*File Timer.c */ #include stm32f10x.h unsigned int TimeDelay = 0; void TIM1_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM1); /*复位TIM1定时器*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); /*开时钟*/ TIM_Tim
[单片机]
51单片机(十五)—— 定时器模块介绍
STC89C516单片机内部有3个16位可编程的定时器/计数器,即定时器T0、T1和T2。它们既有定时又有计数功能。通过设置相关的特殊功能寄存器可以选择启动定时功能或计数功能。需要注意的是,这个定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部控制线连接并相互作用。CPU一旦开启定时功能后,定时器便在晶振的作用下自动开始计时,当定时器的计数器计满后,会产生中断,即通知CPU处理。 定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,用来确定T0和T1的工作方式和功能;TCON是控制寄存器,控制T0和T1的启动和停止以及设置溢出标志。T
[单片机]
STM32单片机学习(5) 定时器中断实验
/* * * 软件功能: 定时器中断实验 * */ #include stm32f10x.h #include delay.h void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); void TIM3_Configuration(u16 arr,u16 psc); /* 函数: int main(void) 功能: main主函数 参数: 无 返回: 无 / int main(void) { RCC_Configuration(); GPIO_Configuration(); NVIC_Co
[单片机]
STM32之CAN---错误管理分析
1 几个重要概念 根据ISO11898有如下几个重要的与CAN相关的定义: Fault confinement(错误界定) CAN nodes shall be able to distinguish short disturbances from permanent failures. Defective transmitting nodes shall be switched off. Switched off means a node is logically disconnected from the bus, so that it can neither send nor receive any
[单片机]
<font color='red'>STM32</font>之CAN---错误管理分析
基于STM32处理器的硬件电路连接图和软件程序设计
本文介绍了一款单片网络接口芯片W5100,该芯片内部集成了TCP/IP硬件协议栈,支持多种网络协议。给出了基于STM32处理器的硬件电路连接图和软件程序设计。目前,该系统已成功应用在多个建筑能耗监测项目中,运行结果表明该系统通信稳定可靠,能够满足项目对远程数据传输的需求。 数据采集与传输系统一直是工业控制、环境参数监测、建筑能耗信息监测等多个领域共同关注的问题,尤其是针对远程数据传输问题。受传输距离的限制,传统的现场总线通信方式只适合于近距离的数据传输;而基于GPRS技术的数据传输系统虽然可以不受距离的限制,但其按照流量进行收费,对于大量数据连续传输而言资费不低,在实际的项目中应用也不是很广泛。目前,基于以太网的数据传输系
[单片机]
基于<font color='red'>STM32</font>处理器的硬件电路连接图和软件程序设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
设计资源 培训 开发板 精华推荐

502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

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

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


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

502 Bad Gateway


openresty