C语言
您现在所在的位置:首页>企业动态>C语言

STM32系统时钟定时器

编辑:学到牛牛IT培训    发布日期: 2023-07-28 10:47:02  


时钟系统是 CPU 的脉搏,就像人的心跳一样,所以时钟系统的重要性就不言而喻了。STM32F4有5个最重要的时钟源,分别为HSI(高速内部时钟)、HSE(高速外部时钟)、LSI(低速内部时钟)、LSE(低速外部时钟)、PLL(锁相环倍频输出)。在这 5 个中 HSI,HSE 以及 PLL 是高速时钟,LSI 和 LSE 是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过外接晶振的方式获取时钟源,其中 HSE 和LSE 是外部时钟源,其他的是内部时钟源。

SysTick,系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK。在STM32F407芯片一般我们设置系统时钟SYSCLK等于168MHz。当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,以此循环往复。


SysTick有4个寄存器,分别为CTRL控制级状态寄存器,LOAD重装载数值寄存器,VAL当前数值寄存器,CALIB校准数值寄存器。


1.png


SysTick属于内核的外设,有关寄存器定义和库函数都在内核相关的库文件core_cm4.h中。

使用SysTick_Config(uint32_t ticks) 中,ticks来设置重装载寄存器的值,当值被递减到0时,产生中断。该函数主要配置了SysTick中的LOAD、VAL、CTRL三个寄存器,同时也配置了系统定时器的中断优先级。

以下代码是通过系统时钟定时器中断方式,完成一个较为精准的延时函数。

void SysTick_Init( void )

{

while( SysTick_Config( SystemCoreClock / 1000000 ) )

;

}


volatile unsigned int Num;


void SysTick_Handler(void)

{

Num--;

}


void delay_us( int val )

{

Num = val;

while( Num )

;

}


void delay_ms( int val )

{

delay_us( 1000 * val );

}


免费试学
课程好不好,不如实地听一听

推荐阅读

  • 计算机专业的就业难度怎么样?

    国产午夜鲁丝片AV无码蜜臀,福利免费观看午夜体检区,人妻少妇精品无码专区APP,伊人久久大香线蕉成人综合网,国产妓女在线观看视频,亚洲成a人片在线观看尤物,亚洲精品国产一二三无码AV,亚汌国产一区二区三区

  • 嵌入式软件开发学习路线

    国产午夜鲁丝片AV无码蜜臀,福利免费观看午夜体检区,人妻少妇精品无码专区APP,伊人久久大香线蕉成人综合网,国产妓女在线观看视频,亚洲成a人片在线观看尤物,亚洲精品国产一二三无码AV,亚汌国产一区二区三区

  • 为什么自学编程那么难?

    国产午夜鲁丝片AV无码蜜臀,福利免费观看午夜体检区,人妻少妇精品无码专区APP,伊人久久大香线蕉成人综合网,国产妓女在线观看视频,亚洲成a人片在线观看尤物,亚洲精品国产一二三无码AV,亚汌国产一区二区三区

  • IT培训机构出来的到底好不好就业呢?

    国产午夜鲁丝片AV无码蜜臀,福利免费观看午夜体检区,人妻少妇精品无码专区APP,伊人久久大香线蕉成人综合网,国产妓女在线观看视频,亚洲成a人片在线观看尤物,亚洲精品国产一二三无码AV,亚汌国产一区二区三区

封闭学习

2

1

028-61775817

蜀ICP备2021001672号

在线咨询 免费试听VIP课程