历史上的今天
今天是:2024年09月12日(星期四)
2019年09月12日 | 秉火429笔记之十一 Systick--滴答定时器
2019-09-12 来源:eefocus
SysTick—系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器。所有基于CM4内核的单片机都具有这个系统定时器,使得软件在CM4单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
2. 寄存器说明
CTRL SysTick控制及状态寄存器

LOAD SysTick重装载数值寄存器
VAL SysTick当前数值寄存器
CALIB SysTick校准数值寄存器(可忽略)
3. 编程要点
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
SysTick->LOAD = ticks - 1; /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */
SysTick->VAL = 0; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | /* CLKSOURCE = AHB */
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
参照代码可知
设置重装载寄存器的值
清除当前数值寄存器的值
配置控制与状态寄存器(配置时钟源,中断)
4. 实例代码
/**
* @brief 启动系统滴答定时器 SysTick
* @param 无
* @retval 无
*/
void SysTick_Init(void)
{
/* SystemFrequency / 1000 1ms中断一次
* SystemFrequency / 100000 10us中断一次
* SystemFrequency / 1000000 1us中断一次
*/
if (SysTick_Config(SystemCoreClock / 100000))
{
/* Capture error */
while (1);
}
}
上一篇:秉火429笔记之十二 看门狗
史海拾趣
|
公司介绍 北京顶嵌开源科技有限公司,简称顶嵌或TOP-E。公司秉承“专业、专注、顶尖”的发展理念,致力于嵌入式技术的人才培养,项目开发,技术推广与技术咨询服务。 顶嵌是国内唯一一家专注嵌入式Linux系统高端培训和 ...… 查看全部问答> |
|
(介)标准 BT656 并行 数据结构 详解 BT.656并行接口除了传输4:2:2的YCbCr视频数据流外,还有行、列同步所用的控制信号。如图3所示,一帧图像数据由一个625行、每行1 728字节的数据块组成。其中,23~311行是偶数场视频数据,336~624行是奇数场视 ...… 查看全部问答> |
|
在STM32F10xC(DE)中使用8位NANDFLASH的问题 不用的引脚可以做为普通GPIO使用吗?像类似的D8~D15、A0~A15、A18~A25,还有一些NOR/PSRAM信号。闲置的话就太可惜了… 查看全部问答> |
|
再次遇到奇怪的问题:FPGA板子上的晶振振幅下降,导致fpga不工作。 板子是好用的,我用其他的程序都没有问题,但是某个程序导致4Vp-p的晶振变到1Vp-p 用的是xilinx的spartan 3 A,我将程序中的chipscope去掉后,时钟恢复正常,再加上chip ...… 查看全部问答> |
|
我该如何实现以下功能(verilog HDL代码):当A为高电平,并持续5s,那么B输出为高;如果A为低电平,且持续5s,那么B输出为低。请大家指点迷津… 查看全部问答> |




