云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Systick 定时器

Systick 定时器

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 9:24:45

#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) 定义CLKSOURCE在SysTick_CTRL寄存器中的位置 #define SysTick_CTRL_CLKSOURCE_Pos 2

#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos)

定义TICKINT在SysTick_CTRL寄存器中的位置 SysTick 倒数到 0 时会导致挂

起Systick处理器

#define SysTick_CTRL_TICKINT_Pos 1

#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) 定义ENABLE在SysTick_CTRL寄存器中的位置 使能Systick定时器 #define SysTick_CTRL_ENABLE_Pos 0

#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /* SysTick Reload Register Definitions SysTick_LOAD =0xFFFFFF */ #define SysTick_LOAD_RELOAD_Pos 0

#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /* SysTick Current Register Definitions SysTick_VAL=0xFFFFFF */ #define SysTick_VAL_CURRENT_Pos 0

#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) Initialize and start the SysTick counter and its interrupt. 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 */

/* set Priority for Cortex-M0 System Interrupts */

NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);

SysTick->VAL = 0; /* Load the SysTick Counter Value */ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | /*选择内核时钟*/ SysTick_CTRL_TICKINT_Msk | /* Enable SysTick IRQ*/ SysTick_CTRL_ENABLE_Msk; /*Enable SysTick Timer */ return (0); /* Function successful */ }

通过设置SysTick_CTRL寄存器中的TICKINT位为1,SysTick 倒数到 0 时会导致挂起Systick处理器。

本例中HSE晶振为25MHZ void rcc_configuration(void) {

RCC_DeInit(); /*reset rcc regsiter to default*/

RCC_HSEConfig(RCC_HSE_ON); /* turn on hse*/

while(RCC_GetFlagStatus(RCC_FLAG_HSERDY)==RESET); /*wait until hse ready*/

RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE,2); /*config PREDIV1 division */

/*config pllclk :fpllclk=12.5x4=50mhz */

RCC_PLLConfig(RCC_PLLSource_PREDIV1,RCC_PLLMul_4);

RCC_HCLKConfig(RCC_SYSCLK_Div1); /*config hclk:fhclk=fsysclk */ RCC_PCLK2Config(RCC_HCLK_Div1);

/*config pclk2:fpclk2=fhclk=fsysclk */

RCC_PCLK1Config(RCC_HCLK_Div2); /*config pclk1:fpclk1=fhclk/2=25mhz */ FLASH_SetLatency(FLASH_Latency_2); /* FLASH Prefetch Buffer Enable*/

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); RCC_PLLCmd(ENABLE); /* enanle plllclk*//*最后使能pllclk*/

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);/*wait untill pllclk ready */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /*fpllclk=12.5x4=50mhz */ while(RCC_GetSYSCLKSource() !=0x08); /*wait untill pllclk used as sysclk*/ RCC_ClockSecuritySystemCmd(ENABLE); /* enable sysclk security*/ RCC_MCOConfig(RCC_MCO_SYSCLK); /* mco output sysclk */ }

以上为我自己写的配置时钟程序,有不对之处欢迎批评指正! 利用systick定时器做的ms级延时程序

在 STM32 的应用中,使用 Cortex-M3 内核的 SysTick 作为定时时钟,设定 每一毫秒产生一次中断,在中断处理函数里对 N 减一,在 Delay(N) 函数中循环检 测 N 是否为 0,不为 0 则进行循环等待;若为 0 则关闭 SysTick 时钟,退出函数。 void delay_ms(vu32 ntime) {

TimingDelay=ntime;

/* FLASH Two Latency cycles*/

/*systick定时器时钟源为hclk=50MHZ*/

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); /* Initialize and start the SysTick counter and its interrupt*/ SysTick_Config(50000); /* systick定时器1ms中断一次*/ while(TimingDelay !=0); /*延时多少ms由TimingDelay的值决定*/ }

/*Systick中断处理函数*/ void SysTick_Handler(void) {

TimingDelay--; }

搜索更多关于: Systick 定时器 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) 定义CLKSOURCE在SysTick_CTRL寄存器中的位置 #define SysTick_CTRL_CLKSOURCE_Pos 2 #define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos)定义TICKINT在SysTick_CTRL寄存器中的位置 SysTick 倒数到 0 时会导致挂 起Systick处理器 #define SysTick_CTRL_TICKINT_Pos 1 #define SysTick_CTRL_TICKI

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com