STM32-嵌入式学习笔记04-systick系统定时器

简介: STM32-嵌入式学习笔记04-systick系统定时器

systick系统定时器


系统定时器存在内核中,是24位的定时器,只能向下递减,嵌套在NVIC中

image.png

counter 在时钟的驱动下 在reload的初值开始向下递减计时到0,产生中断置位标志然后又从reload值开始重新递减计数,循环

定时时间计算

t=reload*(1/clk)clk=72M时,t=72*(1/72m)=1usclk=72M时,t=72000*(1/72m)=1msclk=72M时,t=72000000*(1/72m)=1s1s=1000MS=1000000US=1000000000NS

sysTick属于内核中的外设,他的中断优先级和外设的中断优先级相比,哪个高?


sysTick中断优先级配置的是scb->shprx寄存器


而外设的中断配置的是NVIC->iprx,有优先级分组和抢占优先级和子优先级的说法。


中断优先级在内核外设同样适用。


systick的使能函数:

static__INLINEuint32_tSysTick_Config(uint32_tticks)
{ 
//判断tick的值是否大于2^24,如果大于,不符合规则if (ticks>SysTick_LOAD_RELOAD_Msk)  return (1);  
//初始化reload寄存器的值                                                                    SysTick->LOAD= (ticks&SysTick_LOAD_RELOAD_Msk) -1;      
//配置中断优先级,配置为15,默认为最低优先级  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) -1);  
//初始化counter的值为0SysTick->VAL=0;                                         
//配置systick的时钟为72M//使能中断//使能systickSysTick->CTRL=SysTick_CTRL_CLKSOURCE_Msk|SysTick_CTRL_TICKINT_Msk|SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */return (0);                                                  /* Function successful */}

编写微秒延时函数

voidSysTick_Delay_us(uint32_tus)
{
uint32_ti;
SysTick_Config(72);
for(i=0;i<us;i++)
    {
//当计数器的值时间到了后,CTRL寄存器位16会置1while(!((SysTick->CTRL)&(1<<16)));
    }
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
}

利用中断来进行延时

voidSysTick_Init(void)
{
if(SysTick_Config(SystemCoreClock/100000))
while(1);
}
voidDelay_ms(__IOu32nTime)
{
uint32_tTimingDelay;
TimingDelay=nTime;
while(TimingDelay!=0)
TimingDelay--;
}
目录
相关文章
|
传感器 存储
STM32--TIM定时器(3)
STM32--TIM定时器(3)
STM32--TIM定时器(3)
|
编解码 芯片
STM32--TIM定时器(2)
STM32--TIM定时器(2)
|
2月前
|
传感器
STM32--TIM定时器(1)
STM32--TIM定时器(1)
|
3月前
STM32F103标准外设库——SysTick系统定时器(八)
STM32F103标准外设库——SysTick系统定时器(八)
89 0
STM32F103标准外设库——SysTick系统定时器(八)
|
5月前
|
传感器 数据采集 物联网
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计2
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计
275 0
|
2月前
|
存储 C语言 芯片
C/C++ stm32基础知识超详细讲解(系统性学习day14)
C/C++ stm32基础知识超详细讲解(系统性学习day14)
|
2月前
STM32定时器的使用
STM32定时器的使用
20 1
|
4月前
|
芯片
嵌入式系统中STM32时钟系统详解
嵌入式系统中STM32时钟系统详解
50 0
|
4月前
|
传感器 物联网 开发者
【STM32基础 CubeMX】定时器的使用
【STM32基础 CubeMX】定时器的使用
122 0
|
1月前
【STM32】基于HAL库的360度编码器、摇杆代码编写
【STM32】基于HAL库的360度编码器、摇杆代码编写