SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号:15)。在以前,操作系统还有所有使用了时基的系统,都必须一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
Cortex-M3处理器内部包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作就得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟(CM3处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同。因此,需要检视芯片的器件手册来决定选择什么作为时钟源。
SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间,SysTick的处理方式都是相同的。
有4个寄存器控制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定时器
推荐阅读最新更新时间: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)架构,简化电机驱动电路的开发、定制和调试过程。此外,免费使用源代码让开发人员能够按照市场需求灵活地
[嵌入式]
基于555定时器的D类耳机驱动器可作为理想的实用放大器
广受欢迎的555定时器可用作乐器或其他应用的PWM/D类放大器。其可在4.5V~16V的电源电压范围内工作,并可输出200mA的驱动电流。音频信号被传送至555定时器的CV( 控制电压)引脚。
本设计实例为耳机和音频线路提供两个简单、便宜的驱动器,分别如图1、图2所示。这两个驱动器针对电吉他和小提琴设计,但也可适用于更多其他应用。对于这样的简单应用而言,噪声和总谐波失真(THD)并不是重点考虑因素,因此并未对这两个数值进行测量。
图1:含运算放大器和NE555定时器的耳机和音频线路驱动器。也可以使用CMOS版本(如LMC555),但输出电流较低。其优点为工作频率较高。
下述为一些设计考
[电源管理]
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
[单片机]
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
[单片机]
基于STM32处理器的硬件电路连接图和软件程序设计
本文介绍了一款单片网络接口芯片W5100,该芯片内部集成了TCP/IP硬件协议栈,支持多种网络协议。给出了基于STM32处理器的硬件电路连接图和软件程序设计。目前,该系统已成功应用在多个建筑能耗监测项目中,运行结果表明该系统通信稳定可靠,能够满足项目对远程数据传输的需求。 数据采集与传输系统一直是工业控制、环境参数监测、建筑能耗信息监测等多个领域共同关注的问题,尤其是针对远程数据传输问题。受传输距离的限制,传统的现场总线通信方式只适合于近距离的数据传输;而基于GPRS技术的数据传输系统虽然可以不受距离的限制,但其按照流量进行收费,对于大量数据连续传输而言资费不低,在实际的项目中应用也不是很广泛。目前,基于以太网的数据传输系
[单片机]