博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM32—SysTick系统定时器
阅读量:3949 次
发布时间:2019-05-24

本文共 1509 字,大约阅读时间需要 5 分钟。

SysTick是STM32中的系统定时器,利用SysTick可以实现精确的延时。

SysTick—系统定时器
属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。

延时模式:

SysTick的延时可以有俩种模式:
1.单纯递减延时
2.利用void SysTick_Handler(void) 中断函数延时

俩种方法都涉及到一个函数,那就是SysTick 配置库函数

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { // 不可能的重装载值,超出范围 if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)  { 	return (1UL); } // 设置重装载寄存器 SysTick->LOAD = (uint32_t)(ticks - 1UL); // 设置中断优先级NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL);// 设置当前数值寄存器SysTick->VAL = 0UL; // 设置系统定时器的时钟源为 AHBCLK=72M// 使能系统定时器中断// 使能定时器 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk |SysTick_CTRL_ENABLE_Msk; return (0UL); }

其主要任务是装填计时器初始值、设置时钟源、设置中断源优先级。初始值不能超过2^24,时钟源一般为72M。

在这里插入图片描述

1.单纯递减延时

毫秒级延时

void SysTick_Delay_ms(uint32_t ms){	uint32_t  i;	SysTick_Config(72000);  /* 设置初始值为72000 */	for(i=0;i
CTRL) & (1<<16))) ; /* 检测一次计时完成 */ } SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; /* 操作寄存器 */}

2.利用void SysTick_Handler(void) 中断函数延时

毫秒级延时

volatile uint32_t isr_ms;void SysTick_Delay_ms_INT(uint32_t ms){		isr_ms = ms;	SysTick_Config(72000);	  while(isr_ms);  /* 在中断里递减 */		/* 失能systick */	SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;}

stm32f10x_it.c中的代码如下:

extern volatile uint32_t isr_ms;   /* 这个变量在bsp_systick.c里面定义 */void SysTick_Handler(void){	isr_ms--;}

转载地址:http://vawzi.baihongyu.com/

你可能感兴趣的文章
Android开发——BroadcastReceiver知识总结
查看>>
算法相关——KMP算法最通俗易懂的解释
查看>>
Android开发——监控造成UI卡顿的原因
查看>>
设计模式——设计模式三大分类以及六大原则
查看>>
Java技术——同步锁的各种知识总结
查看>>
Android开发——适配终结者AutoLayout
查看>>
Android开发——ListView局部刷新的实现
查看>>
Java技术——Java中的参数传值方式
查看>>
Android开发——本地验证码的简易实现
查看>>
Java技术——CopyOnWriteArrayList源码解析
查看>>
Java技术——ReentrantLock的Condition的作用以及使用
查看>>
数据结构——搜索树树、B-树、B+树
查看>>
Android开发——带你彻底理解 Window 和 WindowManager
查看>>
设计模式——责任链模式详解
查看>>
设计模式——适配器模式详解
查看>>
设计模式——装饰模式详解
查看>>
Android开发——关于RxJava的知识总结
查看>>
Android开发——View的生命周期总结
查看>>
Android开发——Protocol Buffer的使用(比XML、Json快很多)
查看>>
Android开发——Android系统启动以及App启动过程
查看>>