关于STM32的SysTick定时器的时钟选择问题

今天想自己用寄存器编程写一个用systick定时器的延时函数,写完后做实验发现我要延时1s,但是却延时了8s。这个问题让我纠结了半天。实际上也不是什么大问题,就是Systick的时钟选择错误罢了

如图所示,供Systick使用有两个时钟源,一个是经过8分频的时钟,一个是位经分频的时钟。


    从《CM3权威指南》中可以看到,Systick的时钟源选择是通过控制systick控制与状态寄存器的CLKSOURCE位来确定的。 置0则是选择8分频的时钟,置1则是未分频的时钟。

void Systick_init()
{
	SysTick->CTRL |= (1<<2);//STCLK
	//SysTick->CTRL &= ~(1<<2);//FCLK
	SysTick->CTRL |= 1<<1;
	SysTick->LOAD = SysTick_Freq/1000000 -1;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值