网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 操作系统 > 嵌入式 >

systick clock init 滴答时钟

时间:2025-11-21 09:42

人气:

作者:admin

标签:

导读:滴答时钟初始化,定义us级延时 SysTick 属于内核的外设,有关的寄存器定义和库函数都在内核相关的库文件core_cm4.h中。SysTick定时器的计数器是向下递减计数的,随时按照 SysTick-gt;CTRL |...

滴答时钟初始化,定义us级延时
image
image

SysTick 属于内核的外设,有关的寄存器定义和库函数都在内核相关的库文件core_cm4.h中。SysTick定时器的计数器是向下递减计数的,随时按照
SysTick->CTRL |= 0x05;这里所选择时基时钟的计数频率,当向下计数到0,时,SysTick->LOAD计数值会自动重装载到寄存器上,继续计数

SysTick

#define RCC_PLL_SYSCLK  /*system clock*/
#define SYS_CLK			/*Define the us count value */

volatile uint32_t time_tick;

/*systick clock initialization */
void SYSTICK_CLOCK_init (void)
{
    uint32_t Reload_Value = (RCC_PLL_SYSCLK/1000) - 1;

    SysTick->LOAD = Reload_Value;

    SysTick->VAL = 0;

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

    SysTick->CTRL |= 0x05; /*Select the system clock enable systick */

}
/*"Us-level delay" */
void delay_us(uint32_t nus)
{		
	uint32_t ticks;
	uint32_t told,tnow,tcnt=0;
	uint32_t reload=SysTick->LOAD;	
	/*Calculate the counting time period */
	ticks=nus*SYS_CLK; 						
	told=SysTick->VAL;        				
	while(1)
	{
		tnow=SysTick->VAL;	
		if(tnow!=told)
		{	    
			if(tnow<told)tcnt+=told-tnow;	
			else tcnt+=reload-tnow+told;	    
			told=tnow;
			if(tcnt>=ticks)break;			
		}  
	}
}
/*"Ms-level delay" */
void delay_ms(uint16_t nms)
{
	uint32_t i;
	for(i=0;i<nms;i++) delay_us(1000);
}
/*interrupt mode*/
void SysTick_Handler (void)
{
    time_tick++;
}

uint32_t get_time_tick (void)
{
    return time_tick;
}

void delay_ms_IT (uint32_t time)
{
    uint32_t time_old = get_time_tick();
    while (get_time_tick()-time_old < time);
}
/*interrupt mode*/

—————————————————————————————

函数中利用不断查看SysTick->VAL寄存器的计数值,通过计算前后是否达到计数要求,满足要定义的时间要求,理论上可达10ns级延时,但是感觉也没啥用,另外不建议打开systck中断,这个中断通过时基定义1ms进入一次中断,频繁的进入退出中断可能加大总线占用,打开也无所谓,也不差这点,但是如只为了延时则关了好点

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信