打印

百为STM32开发板教程之七——SysTick定时器

[复制链接]
1787|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xi_liang|  楼主 | 2013-7-20 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
百为STM32开发板教程之七——SysTick定时器

实验目的:用SysTick定时器进行定时

关于SysTick定时器,相关资料可以查阅 百为stm32开发板光盘\用户手册\The Insider's Guide to Stm32.pdf ——2.4.3 系统定时器
或参考百为stm32开发板光盘\stm32电子书\Cortex-M3 技术参考手册.pdf——8.2.2 NVIC 寄存器描述——系统时钟节拍(SysTick)控制与状态寄存器

STM32的Cortex核心内部包含有一个24 位的递减计数器,含有自动装载和计数结束中断功能。


SysTick定时器有三个寄存器。分别是SysTick控制和状态寄存器,SysTick重装载值寄存器和SysTick当前值寄存器。
当前的计数值和重载值需要用计数周期来进行初始化。在控制和状态寄存器中包含了一个ENABLE位来开启定时器运行和一个TICKINT的位来启用它的中断。


SysTick控制和状态寄存器,地址为0xE000E010

其中SysTick定时器的时钟源是可选择的,通过设置SysTick控制和状态寄存器的CLKSOURCE位,
可以设置SysTick的时钟源为系统时钟(CLKSOURCE =1),或为系统时钟的八分之一(CLKSOURCE =0)

SysTick
重装载值寄存器,地址为0xE000E014

SysTick重装载值寄存器位[23:0] RELOAD表示当计数器到达0时需要重装载到“当前值寄存器”的值。


SysTick当前值寄存器,地址0xE000E018


了解了SysTick寄存器之后,下面就可以使用SysTick了,使用SysTick主要有三个步骤:
1、设置重装载值
2、打开SysTick计数使能
3、打开SysTick中断使能

2.0固件库相关代码:
/* 设置重装载值 */
SysTick_SetReload(9000);
/* 使能SysTick计数 */
SysTick_CounterCmd(SysTick_Counter_Enable);
/* 使能SysTick中断 */
SysTick_ITConfig(ENABLE);

3.5固件库相关代码:
  if (SysTick_Config(SystemCoreClock / 1000))  //这里相关于上面2.0固件库的3个步骤了
  {
    /* Capture error */
    while (1);
  }


这时每1ms就会产生SysTick中断一次,在SysTick的中断服务程序SysTickHandler()里调用我们的延时计数程序即可
如:
/* stm32f10x_it.c */
void SysTickHandler(void)
{
  TimingDelay_Decrement();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* main.c */
void Delay(__IO uint32_t nTime)
{
  TimingDelay = nTime;
  while(TimingDelay != 0);
}


void TimingDelay_Decrement(void)
{
  if (TimingDelay != 0x00)
  {
    TimingDelay--;
  }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

然后我们就可以通过调用Delay()进行毫秒级延时了。
沙发
hawksabre| | 2013-7-20 18:44 | 只看该作者
谢谢了   楼主  很不错   谢谢你的共享   有时间  好好学一学   不错

使用特权

评论回复
板凳
xi_liang|  楼主 | 2014-5-15 23:32 | 只看该作者
hawksabre 发表于 2013-7-20 18:44
谢谢了   楼主  很不错   谢谢你的共享   有时间  好好学一学   不错

也谢谢你顶贴了:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://baiweijishu.taobao.com/ 百为STM32开发板 兼容官方STM3210E-EVAL开发板 WM-G-MR-09 WIFI开发板

41

主题

285

帖子

10

粉丝