stm32滴答计时器_STM32的系统滴答定时器(Systick)
1.systick时钟来源
2.SysTick库函数
3.源码
/**
*@}
*/
/** @defgroup SysTick_clock_source
*@{
*/
#define SysTick_CLKSource_HCLK_Div8 ((uint32_t)0xFFFFFFFB)
#define SysTick_CLKSource_HCLK ((uint32_t)0x00000004)
#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SysTick_CLKSource_HCLK) || \
((SOURCE) == SysTick_CLKSource_HCLK_Div8))
/**
*@brief Configures the SysTick clocksource.
*@param SysTick_CLKSource: specifies theSysTick clock source.
* This parameter can be one ofthe following values:
* @argSysTick_CLKSource_HCLK_Div8: AHB clock divided by 8 selected as SysTick clocksource.
* @arg SysTick_CLKSource_HCLK:AHB clock selected as SysTick clock source.
*@retval None
*/
void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
{
/* Check the parameters */
assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
{
SysTick->CTRL |= SysTick_CLKSource_HCLK;
}
else
{
SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
}
}
/*################################## SysTick function ############################################ */
#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0)
/**
*@brief Initialize and start the SysTickcounter and its interrupt.
*
*@param ticks number of ticks between two interrupts
*@return 1 = failed, 0 = successful
*
*Initialise the system tick timer and its interrupt and start the
*system tick timer / counter in free running mode to generate
*periodical interrupts.
*/
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, (1VAL = 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 */
}
#endif
#ifdefSYSCLK_FREQ_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /*!#elif defined SYSCLK_FREQ_24MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_24MHz; /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_36MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz; /*!#elif defined SYSCLK_FREQ_48MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz; /*!#elif defined SYSCLK_FREQ_56MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz; /*!#elif defined SYSCLK_FREQ_72MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!#else /*!< HSI Selected as System Clock source */
uint32_t SystemCoreClock = HSI_VALUE; /*!< System Clock Frequency (Core Clock) */
#endif
///
/* Configure the SysTick */
SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);//8000000/1000=>1ms
/**
*This is the timer interrupt service routine.
*
*/
void SysTick_Handler(void)
{
/* enter interrupt */
rt_interrupt_enter();
rt_tick_increase();
/* leave interrupt */
rt_interrupt_leave();
}
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
stm32滴答计时器_STM32的系统滴答定时器(Systick)相关推荐
- stm32滴答计时器_STM32之系统滴答定时器
一.SysTick(系统滴答定时器)概述 操作系统需要一个滴答定时器周期性产生中断,以产生系统运行的节拍.在中断服务程序里,基于优先级调度的操作系统会根据进程优先级切换任务,基于时间片轮转系统会根据时 ...
- stm32滴答计时器_STM32 的系统滴答定时器( Systick) 彻底研究解读
作者:王健 前言 SysTick 比起那些 TIM 定时器可以说简单多啦~~~~~哥的心情也好了不少, 嘎嘎!! ARM Cortex-M3 内核的处理器内部包含了一个 SysTick 定时器,它是一 ...
- stm32滴答计时器_stm32中的系统滴答定时器使用
系统滴答定时器对于stm32的初学者来说还是非常重要的,因为随着你学习的深入编程过程中肯定会调用延时函数,比如我之前的一些gpio相关的实验中.那么延时函数的编写也是几种方法的,一般开始接触都是让系统 ...
- stm32滴答计时器_STM32——系统滴答定时器
STM32--系统滴答定时器 一.SysTick[内核中] [风格:先描述一下库对寄存器的封装,再举例实现某些功能] SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号: 15 ...
- stm32滴答计时器_stm32笔记:Systick系统滴答定时器
Systick :系统心跳定时器,提供系统节拍 裸机程序中可作为独立的延时定时器 用途: 1.产生操作系统的时钟节拍 2.便于不同处理器之间程序移植 SysTick定时器被捆绑在NVIC中,异常号15 ...
- stm32滴答计时器_STM32嵌入式开发学习笔记(四):使用滴答计时器实现精准计时...
前面我们讲过,因为在STM32上没有系统时间的接口,因此无法调用sleep函数,在本文中,笔者将利用滴答计时器实现精准延时. 查阅技术手册,滴答计时器依赖于一个SysTick_Type类型寄存器,定义 ...
- STM32使用内部时钟HSI作为系统时钟及配置Systick定时器
参考:https://blog.csdn.net/huangyangquan/article/details/78790443 https://www.cnblogs.com/dustinzhu/p/ ...
- STM32的系统嘀嗒定时器(SysTick)实现简单计时功能
SysTick是属于内核里的外设,只要是Cortex M内核的单片机,都拥有这个24位的SysTick定时器. SysTick的counter是一个递减计数器,首先要填入reload自动重装载计数器的 ...
- 定时器开始时延时了十几秒_第六章--系统滴答定时器
第六章--系统滴答定时器 简介:系统滴答定时器是内核(这里指M4)定时器使用的是内核时钟源168MZ或可以选择外部时钟源21MZ 应用场合: 为UCOS系统提供时钟节拍 作为简单的定时器延时使用 // ...
最新文章
- JS数据结构与算法_链表
- 【python练习】支付宝自动偷取能量
- 编程方法学笔记:karel
- AI自动P图:maskrcnn+inpaintting消除并修复指定区域图像
- android开发Proguard混淆与反射
- VueI18n的应用
- js中使用0 “” null undefined {}需要注意
- (29)System Verilog设计SPI接收
- 【初赛】NOIP2018程序模板
- 新的文档类型定义模型带来的问题--javascirpt/CSS
- 可以自我学习的AI五子棋
- 离线强化学习总结!(原理、数据集、算法、复杂性分析、超参数调优等)
- 铁路订票系统的简单设计
- 2022年第一个诺奖揭晓!获奖者的父亲,诺贝尔生理学或医学奖得主
- 数仓指标体系--建设方法
- 蓝牙BLE协议分析【附代码实例】
- 1007 Maximum Subsequence Sum (25 分) java 题解
- oracle数据块格式小结
- 17万用来助学,能做什么?
- ZYNQ学习笔记_GPIO实例:通过EMIO实现按键控制LED
热门文章
- 技术重塑未来工作方式
- 牛!2020年,这项技术将获得1,000,000,000元人民币注资!
- 别吹了!Python程序员正在消失! 资深CTO:你才发现?
- “云原生全家桶“KubeSphere 如何让企业从容迈进云原生时代?
- 边缘计算容器化是否有必要?
- 每年一波FPGA系列新品,这次Achronix专为AI/ML应用打造……
- 文石服务器维护,文石BOOX OS 2.0新系统即将上线,联合京东读书推出BOOX书城
- java jdk myeclipse_java初体验(JDK+myeclipse)
- 计算机编程pdf百度云,计算机编程基础.pdf
- enum 有什么好处_林卡尔|先买地板后装修的三大好处