首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

systick学习

systick学习

stm32的systick通过少数的程序设置,当使用systick_config()函数之后,其载入值就是你的参数,并且自动打开中断,并将中断设为最低的优先级,将其时钟设为HCLK即系统时钟72mhz,并重置计数寄存器开始计数。也可以将时钟设置为HCKL的八分频,通过使用SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8) 紧跟在systick_config()之后,而改变优先级则使用NVIC_SetPriority(SysTick_IRQn,...) 函数,而时基单元的设置使用如下公式,Reload Value = SysTick Counter Clock (Hz) x  Desired Time base (s)  Reload Value 就是传递进去的参数。但参数不能超过0xFFFFFF。
systick的时钟,systick的时钟包括内部时钟和外部时钟,对于stm32 其内部时钟FCLK就是AHB的时钟,72MHz,外部时钟就是8分频后的时钟,9MHz。因此使用systick_config()函数时其默认时钟为72MHz。
使用systick延时的时候也可以不开启中断,而直接对其寄存器进行读写,



SysTick->LOAD=9*time;
SysTick->VAL=0x00;
SysTick->CTRL=0x01;
do
{
  temp=SysTick->CTRL;
}while((temp&0x01)&&(!temp&0x0100));
SysTick->CTRL=0x00;
SysTick->VAL=0x00;
继承事业,薪火相传
返回列表