STM32F10x_StdPeriph_Lib_V3.5.0库与系统滴答定时器(Systick)
在V3.5的庫中,關于系統滴答的配置是在core_cm3.h文件中,其代碼如下:
static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */SysTick->VAL = 0; /* Load the SysTick Counter Value */SysTick->CTRL = /*SysTick_CTRL_CLKSOURCE_Msk |*/ SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */return (0); /* Function successful */ }關于systick,ST的STM32F10xxx_Reference_Manual文檔介紹不多,沒有其寄存器的描述說明,只能在Cortex-M3權威指南中找到一些描述。
有四個寄存器,控制寄存器(CTRL)、重裝載值寄存器(RELOAD)、當前值寄存器(VAL)、校準值(CALIB).
控制寄存器幾個bit的含義是:
第0位:ENABLE,Systick 使能位? (0:關閉Systick功能;1:開啟Systick功能)
第1位:TICKINT,Systick 中斷使能位??? (0:關閉Systick中斷;1:開啟Systick中斷)
第2位:CLKSOURCE,Systick時鐘源選擇? (0:使用HCLK/8 作為Systick時鐘;1:使用HCLK作為Systick時鐘)(與具體的芯片實現有關系)
第16位:COUNTFLAG,Systick計數比較標志,如果在上次讀取本寄存器后,SysTick 已經數到了0,則該位為1。如果讀取該位,該位將自動清零
從上面的代碼可以看出,V3.5庫默認是使用HCLK作為Systick時鐘的。如果用Systick來計時一個比較長的值,可以選擇使用HCLK/8作為Systick時鐘。
轉載于:https://www.cnblogs.com/swblog/p/3349459.html
總結
以上是生活随笔為你收集整理的STM32F10x_StdPeriph_Lib_V3.5.0库与系统滴答定时器(Systick)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据存储大小端验证
- 下一篇: CloseableHttpClient加