当前位置:首页 > 单片机 > 单片机
[导读] 在设计软件的时候,有的对时序要求比较严格,但是简单的延时函数又不能准确延时---STM32中有一个系统滴答时钟是不错的配置-------第一部分是---向滴答时钟寄存器写初值,也就是要根据系统频率来递减---

在设计软件的时候,有的对时序要求比较严格,但是简单的延时函数又不能准确延时---STM32中有一个系统滴答时钟是不错的配置---

----第一部分是---向滴答时钟寄存器写初值,也就是要根据系统频率来递减----然后为0 则产生中断

void SysTick_Init(uint32_t a) //a-us
{
/* SystemFrequency / 1000 1ms中断一次
* SystemFrequency / 100000 10us中断一次
* SystemFrequency / 1000000 1us中断一次
*/


// if (SysTick_Config(SystemCoreClock / 1000000*a)//写初值----ST3.0.0库版本
if (SysTick_Config(SystemCoreClock / 1000000)*a) //写初值----ST3.5.0库版本
{
while (1); //写初值成功---则进入while死循环-等待滴答时钟的中断到来
}
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk; //如果向滴答时钟写初值失败---则关闭系统滴答时钟
}
----第二部分是---延时函数----
void Delay_us(__IO u32 nTime)
{
TimingDelay = nTime;//多少个基础节拍
SysTick_Init(1); //1us
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //使能系统滴答时钟---开始计时

while(TimingDelay!= 0); //定时节拍结束
}

void Delay_ms(__IO u32 nTime)
{
TimingDelay = nTime;//多少个基础节拍
SysTick_Init(1000); //1ms
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //使能系统滴答时钟---开始计时

while(TimingDelay!= 0); //定时节拍结束
}

---第三部分是---滴答时钟的中断函数---

voidTimingDelay_Decrement(void) //节拍递减---在中断中使用
{
if (TimingDelay != 0x00)
TimingDelay--;
}

void SysTick_Handler(void) //---中断---
{
TimingDelay_Decrement();//进一次中断递减一次
}

---第四部分---主函数---

int main(void)
{
SysTick_Init(); //初始化
Delay_us(10000); // 10000 * 10us = 100ms

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘要:在当前众多的里程计时型体育比赛项目中,更多还是采用古老传统的人工掐表式计时,这样不仅人力成本高、工作效率低、且精确度较差。随着RFID技术的产生、发展、成熟和在各种各业的广泛应用,高效、智能、精准、节约型的智能处理...

关键字: RFID 智能化 自动识别 精准

城市供水管网漏损控制与实践

关键字: 水管 精准

越来越多的应用需要从处于高温环境中的传感器收集数据。

关键字: MEMS 陀螺仪 精准

极低功耗、精准的远程检测绝对是可行的。本文的示例显示,将低功耗、高精度放大器与可编程片上系统无线Mesh节点相结合是相当简单的。

关键字: 电源其他电源电路 精准 远程监测

LED在生活中处处可见,有显示屏的,也有照明的,但是有很多人不知道LED灯需要LED驱动器来驱动,LED主要的技术挑战在于,如何真正实现LED的长寿命?如何提高电源的使用效率与EMC抗干扰能力?以及如何获得大功率与可靠性...

关键字: 恒流控制 电源技术解析 精准 高效

GPS(Global Positioning System,全球定位系统)是世界上最完善的卫星导航系统。它不仅有覆盖全球的实时、连续的高精度的三维定位能力,同时也有精准的授时功能。利用高度稳

关键字: GPS 嵌入式开发 时钟 精准

上图是LPC1114系统滴答定时器(SysTick)的结构图。系统滴答定时器位于Cortex-M0内核中,也就是说,不论是LPC1114,还是其他的Cortex-M0内核单片机,都有这个系统定时器。其存在的主要目的是为嵌...

关键字: systick 滴答定时器 cortex-m0系统

在"嵌入式学习006_Systick使用(一)"中,详细介绍了Systick中寄存器的使用方法,用到了很多函数,实际上到了3.5版本的标准固件库中,移除了相关驱动函数,用户必须调用CMSIS.h中定义...

关键字: STM32 systick

1 硬件电路配置这里还是借用前面LED电路我就不贴图片。2 时钟说明SysTick和HCK的时钟频率是一样的库函数代码如下/***@briefInitializeandstarttheSysTickcounterandi...

关键字: STM32 systick 定时器

前言今天讲解“STM32F103 SysTick系统滴答”,“SysTick系统滴答”是属于Cortex-M3内核的一部分,主要是为运行的操作系统提供滴答时钟,如常见的操作系统:uCOS、RTOS等。不管M3芯片属于哪一...

关键字: stm32f1 systick 系统滴答
关闭