STM32F4X Systick系统滴答定时器

STM32F4X Systick系统滴答定时器

Systick定时器

在以Crotex-M4为架构的MCU中,都会有一个Systick内核定时器,这个定时器的作用可以给系统一个心跳时钟,通常用在MCU的延时和作为RTOS的心跳时钟等。

Systick使用

Systick时钟源

在Crotex-M4中,Systick的时钟源选择有两种,一个是经过8分频的AHB时钟,一个是使用内核时钟,有关这两个时钟源可以在STM32F4X数据手册中进行查看。


Systick寄存器

Systick的寄存器有4个,具体的寄存器是说明可以在《Crotex-M4权威指南》里面可以查看。

其中最重要寄存器是控制寄存器和重装载寄存器。控制寄存器是设置Systick的时钟源和是否触发异常。重装载寄存器是设置重装载值,也就是计多少个数就触发一次异常。

Systick频率计算

Systick定时器的频率计算跟普通定时器的频率计算是一样的。我们假设Systick的时钟源频率为168MHZ。上面说过Systick的时钟源有两种选择,我们这里选以HCLK为时钟源,也就是时钟源就是168MHZ。如果我们需要得到一个1us的频率,可以按照下面的方法进行配置。

我们需要把控制寄存器的bit2设置成1,把重装载寄存器的值设置为168 ,这样就可以实现1us触发一次异常。

Tout = (1 / 168000000) * 168 = 1us

Systick例程

c 复制代码
#include "stm32f4xx.h"
static int system_tick_cnt = 0;
void system_tick_init(void)
{
	NVIC_InitTypeDef NVIC_InitStructure;
	RCC_ClocksTypeDef RCC_Clocks ;
	
	RCC_GetClocksFreq(&RCC_Clocks); // 得到HCLK时钟频率
	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); // Systick时钟源为HCLK
	SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000000); // 重装载值设置为168
}
/**
  * @brief  This function handles SysTick Handler.
  * @param  None
  * @retval None
  */
void SysTick_Handler(void)
{
	//system_tick_cnt++;	
	system_tick_cnt--;
}

void delay_us(u32 us)
{
	system_tick_cnt = us;
	while(system_tick_cnt != 0);
}

void delay_ms(u32 ms)
{
	while(ms)
	{
		delay_us(1000);
		ms--;
	}

		
}


int main(void)
{
	int i;
	NVIC_PriorityGroupConfig(2);
	system_tick_init(); // 初始化Systick时钟
	bsp_usart_init(115200);
	
  while(1){
		delay_ms(1000); // 每隔1秒打印一次
		printf("hello\r\n");
	}
  
}
相关推荐
西城微科方案开发5 分钟前
体重秤PCBA电路方案组成结构
单片机·嵌入式硬件
深圳市青牛科技实业有限公司11 分钟前
「青牛科技 」GC4931P/4938/4939 12-24V三相有感电机驱动芯片 对标Allegro A4931/瑞盟MS4931
科技·单片机·扫地机器人吸尘·筋膜枪电机·驱动轮电机·服务机器人驱动轮电机·工业机器人减速电机
集和诚JHCTECH20 分钟前
集和诚携手Intel重磅发布BRAV-7820边缘计算新品,为车路云一体化场景提供强大算力支撑
人工智能·嵌入式硬件·边缘计算
阿超爱嵌入式27 分钟前
STM32学习笔记之RCC模块(实操篇)
笔记·stm32·学习
Qingniu011 小时前
「青牛科技」GC5849 12V三相无感正弦波电机驱动芯片
科技·单片机·嵌入式硬件·cpu散热风扇·vga显卡散热风扇·rgb机箱散热风扇·水冷泵及散热风扇
charlie1145141911 小时前
STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出
c语言·stm32·单片机·嵌入式硬件·gpio·数据手册
阿让啊1 小时前
bootloader+APP中,有些APP引脚无法正常使用?
c语言·开发语言·stm32·单片机·嵌入式硬件
可待电子单片机设计定制(论文)2 小时前
【51单片机】基于单片机的智能门禁系统设计
单片机·mongodb·51单片机
蝎蟹居3 小时前
GB/T 4706.1-2024 家用和类似用途电器的安全 第1部分:通用要求 与2005版差异(1)
人工智能·单片机·嵌入式硬件·物联网·安全
Lhj061613 小时前
stm32 can 遥控帧的问题
stm32·单片机·嵌入式硬件