TA的每日心情 | 开心 2020-9-28 22:37 |
---|
签到天数: 456 天 连续签到: 1 天 [LV.9]以坛为家II
|
本帖最后由 ALTIUM2 于 2018-6-13 23:45 编辑
5.滴答滴答SysTick cortex M0,M4,M7虽然型号一直在变,但是滴答滴答的SysTick还是没有变。它在实时应用处理时十分的有用,高效,如果跑RTOS也十分的方便,不像以前的MCU还得自己选个定时器作为OS时钟。 具体可以参照CORTEX-M7中指南手册中关于SycTick的描述:
1.简介
SysTick 是属于Cortex 内核的外设,计数器每计数一次的时间为 1/SYSCLK,例如RT1052的主频为528MHZ(工业528MHZ,商业600MHZ)。所以可以以1/528M为时间分辨率。而SysTick—系统定时器有 4 个寄存器。
2.寄存器描述
寄存器名称 寄存器描述
CTRL SysTick 控制及状态寄存器
LOAD SysTick 重装载数值寄存器
VAL SysTick 当前数值寄存器
CALIB SysTick 校准数值寄存器
3.使用方法
a、配置SysTick 中断
由于SysTick是一个24位的寄存器,用它必须要按照流程,同时需要打开相应的中断设置。
(SysTick 的外设中断比较低,容易被欺负,哈哈)
b、配置System Tick代码
- \brief System Tick Configuration
- \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
- Counter is in free running mode to generate periodic interrupts.
- \param [in] ticks Number of ticks between two interrupts.
- \return 0 Function succeeded.
- \return 1 Function failed.
- \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
- function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
- must contain a vendor-specific implementation of this function.
- */
- __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
- {
- if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
- {
- return (1UL); /* Reload value impossible */
- }
- SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
- NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
- SysTick->VAL = 0UL; /* 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 (0UL); /* Function successful */
- }
复制代码
4.疗效^
就不展示了,也就灯
|
|