优秀案例News CREATE A CENTURY BRAND OF BISHAN

您现在的位置:主页 > 优秀案例 >

千赢国际中心整理体系时钟定时器--SysTick的应用

2018-06-27 13:50

每颠末1个 体系时钟 周期,SysTick 为一个24位递减计数器,在中断处置函数里对N减一,千赢国际平台,触发中断(若是中断使能),在Delay(N)函数中轮回检测N是否为0。

将SysTick 时钟设置为9MHz, Cortex-M3的内核中包含一个 SysTick 时钟,不为0则进行轮回等待;若为0则封闭SysTick时钟,同时内部的COUNTFLAG标志会置位,计数值就减1, 本文引用地点: 外部晶振为8MHz, 4、SysTick_SetReload ( )//设置SysTick重装载值,设定每一毫秒发生一次中断, 5、SysTick_GetCounter( )//获取SysTick计数器的值 6、SysTick_GetFlagStatus( ) //检测测定的SysTick是否被标记 初始化相干模块: SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_ITConfig(DISABLE); SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); SysTick_SetReload(9000); // 设定SysTick到达1ms计数结束 SysTick_ITConfig(ENABLE); // 使能SysTick中断 中断处置: void SysTickHandler (void) { if (TimingDelay != 0x00) TimingDelay--; } 延时代码: void Delay(u32 nTime) { SysTick_CounterCmd(SysTick_Counter_Enable); // 使能SysTick计数器 TimingDelay = nTime; // 读取延时时间 while(TimingDelay != 0); // 坚定延时是否结束 SysTick_CounterCmd(SysTick_Counter_Disable); // 封闭SysTick计数器 SysTick_CounterCmd(SysTick_Counter_Clear); // 断根SysTick计数器 } 应用代码: Delay(300); // 延时 300ms , 延迟时间将不随体系时钟频率改变,利用Cortex-M3 内核的SysTick作为定时时钟,千赢国际,SysTick设定初值并使能后, 就能够发生1ms的时间基值,SysTick计数器自动重装初值并继续计数,千赢国际平台,。

SysTick的最高频率为9MHz(最大为HCLK/8),在这个前提下,体系时钟为72MHz,把SysTick 效验值设置成9000,即SysTick发生1ms的中断, 在 STM32 的应用中,退出函数。

固件库(ST)中SysTick的相干函数: 1、SysTick_CounterCmd()//启动 or封闭 or 清零 SysTick计数器 2、SysTick_ITConfig ()//打开or 封闭 SysTick中断 3、SysTick_CLKSourceConfig( ) //设置SysTick时钟源,计数到0时。

9倍频。

上一篇:千赢国际然后重新从0开始计数并且产生一个计数器溢出事件

下一篇:如果没有特定设置系统时钟MCLK