使用步骤:
1.设置SysTick定时器的时钟源。 2.设置SysTick定时器的重装初始值 --中断要打开中断使能 3.清零SysTick定时器当前计数器的值 4.打开SysTick定时器
库函数:SysTick.c
初始化函数:
void SysTick_Init(u8 SYSCLK)
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
fac_us = SYSCLK / 8; //SYSCLK的8分频保存1us所需的计数次数
fac_ms = (u16)fac_us*1000; //每个ms需要的systick时钟数
}
void delay_us(u32nus)
{
u32temp;
SysTick->LOAD=nus*fac_us; //时间加载
SysTick->VAL=0x00; //清空计数器
SysTick->CTRL|=0x01; //开始倒数
do {
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达
SysTick->CTRL&=~0x01; //关闭计数器
SysTick->VAL=0X00; //清空计数器
}
void delay_ms(u16nms)
{
u32temp;
SysTick->LOAD=(u32)nms*fac_ms; //时间加载
(SysTick->LOAD为24bit)SysTick->VAL=0x00; //清空计数器
SysTick->CTRL|=0x01; //开始倒数
do{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达
SysTick->CTRL&=~0x01; //关闭计数器
SysTick->VAL=0X00; //清空计数器
}
这个滴答定时器和定时器的功能很相似,它是循环等待读取标志位上的时间用来计数,这个时间可以被其他中断插进来,但是并不影响它继续向下滴答计数,所以比起普通阻塞延时,准确性高了很多。
上一篇:stm32 按键控制实验
下一篇:stm32 中断系统
设计资源 培训 开发板 精华推荐
- HV9910DB6,用于 OSRAM OSTAR 的简单恒流 LED 驱动器演示板
- LTC6990HDCB#TRMPBF 光到频率转换器的典型应用。 fOUT 至 -1.4kHz 每微安光电二极管电流 IPD
- 完全隔离的锂离子电池监控和保护系统
- CN0156
- EVAL-CN0229-SDPZ、4 通道、灵活、可配置、电压和电流输出电路,用于 I/O 卡和 PLC 应用评估板,基于 AD5684R
- 使用 NXP Semiconductors 的 LPC3250 的参考设计
- LTC2862AIS8-1 ±60V 20Mbps 电平转换器/隔离器的典型应用
- LT3091MPFE 恒流恒压实验室电源的典型应用
- STR-FUSB3307MPX-PPS-GEVK:带 PPS 板的 Strata Enabled FUSB3307 单端口 USB-PD
- LTC1265、4 镍镉电池充电器