访问电脑版页面

导航:老古开发网手机版STM32单片机STM32单片机定时器

STM32使用systick实现精确延时

导读:SYSTICK寄存器初始化void SysTick_Configuration(void){if (SysTick_Config(SystemCoreClock / 100)){while (1);}NVIC_SetPriority(SysTick_IRQn, 0x0);}SysTick_Config默认时钟为SysTick_CLKSource_HCLK,所以在这之
关键字:
STM32,systick,精确延时,

SYSTICK寄存器初始化
void SysTick_Configuration(void)
{

if (SysTick_Config(SystemCoreClock / 100))
{

while (1);
}

NVIC_SetPriority(SysTick_IRQn, 0x0);
}
SysTick_Config默认时钟为SysTick_CLKSource_HCLK,所以在这之前使用SysTick_CLKSourceConfig()选择系统时钟不会改变systick的时钟
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);
}

systick中断服务程序
void SysTick_Handler(void)
{
systime ++;
}
延时程序
void delay_ms(unsigned int ms)
{
unsigned int temp;
temp = systime;
while((systime - temp) < ms);
}


void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)在misc.c文件中定义
static __INLINE uint32_t SysTick_Config(uint32_t ticks)在core_cm3.h中定义

来源:互联网   作者:karen  2018/11/21 11:00:02
栏目: [ STM32单片机定时器]

相关阅读

STM32F407定时器TIM1中断

STM32单片机使用定时器中断方式实现毫秒级延时的设计

stm32定时器中断与误区

STM32定时器配置定时时间总结

STM32单片机输出比较模式解析

STM32定时器时间的计算方法

基于STM32定时器的三种中心对齐计数模式

STM32系列芯片定时器的主要功能及应用解析

一个关于STM32定时器的CCR清零话题

STM32F429的定时器的使用方法

STM32定时器基本计数原理解析

STM32之系统时钟基定时器

STM32单片机通用定时器的编程设计

STM32定时器原理与使用

STM32单片机定时器的时钟源设置

STM32单片机通用定时器对lED灯的翻转控制设计

关于STM32F4定时器时钟频率问题

基于STM32定时器实现毫秒延时函数

STM32f103的数电采集电路的TIMER定时器的使用与时序控制的程序

STM32F10x 学习笔记之SysTick 定时器