完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
来源 灵动MM32 一、系统滴答Systick定时器 《Cortex-M3权威指南》中对SysTick的描述,SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。大多数操作系统需要一个硬件定时器来产生滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有提供各种定时功能,都与滴答定时器有关。因此,需要一个定时器产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统的“心跳”的节奏。该定时器的时钟源可以是内部时钟(FCLK),或者是外部时钟(CM3处理器上的STCLK信号)。SysTick定时器能产生中断,异常中断。 二、SysTick工作原理SysTick定时器是一个24位的计数器,当倒计数为0时,将从RELOAD寄存器中取值作为定时器的初始值,同时可以选择在这个时候产生中断(异常号:15)。例如从RELOAD的值为100,那么当倒计数为0时,就会重新复位为100继续倒计数。 三、SysTick寄存器 在 core_cm3.h 有定义 SysTick 寄存器映像 · SysTick->CTRL为控制及状态寄存器 1、Bit0(ENABLE):为使能位,1使能,0关闭。 2、Bit1(TICKINT):中断使能位,1使能,0关闭。 3、Bit2(CLKSOURCE):时钟源设置位,0为外部时钟源(STCLK) (AHB总线时钟的1/8(HCLK/8)),1为内核时钟(FCLK) (AHB总线时钟的频率(HCLK)) 4、Bit16(COUNTFLAG):计数为 0 标志位,若 STK_VAL 计数至0,此标志位会被置 1。 · SysTick->LOAD重装载数值寄存器 · SysTick->VAL当前计数数值寄存器 · SysTick->CALIB校准寄存器 四、SysTick精确延时实验 · 实验内容 这里我们以MM32F103CBT6为例,通过SysTick定时器做一个精确的延迟函数,让LED精确延迟1秒钟闪亮一次。 · 实验代码分析 在main函数中,我们初始化LED,在while(1)大循环中使用delay_ms做延时,让LED每个1s闪烁。 然后我们来看一下delay_init()代码如下, 在delay_init函数中我们主要是调用了SysTick_Config()函数来对systick进行了初始化配置。SysTick_Config()在core_cm3.h中源码如下: · 这个函数首先检查了装载的数是否可行,不行则直接返回1。 · 将输入的参数ticks装入重装寄存器,ticks为两个中断之间的脉冲数,即相隔ticks 个时钟周期会引起一次中断 。 · 设置了SysTick中断。 · 将当前计数值清零。 · SysTick 的时钟设置为 AHB 时钟;配置为计数至0 时引起中断;启动 SysTick。 整个配置成功则返回0,失败返回1。这里我们的参数为SystemCoreClock/1000,在本例中SystemCoreClock 为 定 义了 系 统 时 钟(SYSCLK)频率 的 宏, 即等于 AHB 的 时钟 频 率,SystemCoreClock 宏展开为数值7200 0000。所以这里输入的参数tick=72000,每72000个时钟周期中断一次,一个时钟周期的时间为1/72M,所以T=72000*(1/72000000)= 1ms,即SysTick中断会每1ms中断一次。 下面来看SysTick中断服务子函数和延时函数, |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
2248个成员聚集在这个小组
加入小组灵动微电子MM32全系列MCU产品应用手册,库函数和例程和选型表
11681 浏览 3 评论
【MM32 eMiniBoard试用连载】+基于OLED12864的GUI---U8G2
5922 浏览 1 评论
【MM32 eMiniBoard试用连载】移植RT-Thread至MM32L373PS
10955 浏览 0 评论
【MM32 eMiniBoard测评报告】+ 开箱 + 初探
4571 浏览 1 评论
灵动微课堂(第106讲) | MM32 USB功能学习笔记 —— WinUSB设备
4298 浏览 1 评论
[MM32软件] MM32F002使用内部flash存储数据怎么操作?
965浏览 1评论
793浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 12:54 , Processed in 0.503749 second(s), Total 38, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号