当前位置:网站首页 > 编程语言 > 正文

桌面时钟代码(桌面时钟代码怎么设置)



欢迎关注【玩转单片机与嵌入式】公号,回复关键字获取更多免费视频和资料 回复【加群】,【单片机】、【STM32】、【硬件知识】、【硬件设计】、【经典电路】、【论文】、【毕业设计】、【3D封装库】、【PCB】、【电容】、【TVS】、【阻抗匹配】、【资料】、【终端电阻】、【Keil】、【485】、【CAN】、【振荡器】、[USBCAN]、【PCB】、【智能手环】、【智能家居】、【智能小车】、【555】、【I2C】、【华为】、【中兴】,等……

问题

在进行开发时,程序中常常需要延时一段时间,很多人都会使用Delay(N), N为需要延时的时间(通常为毫秒级)。通常实现Delay(N)函数的方法为:

对于STM32系列微处理器来说,执行一条指令只有几十个ns,进行for循环时,要实现N毫秒的x值非常大,而且由于系统频率的宽广,很难计算出延时N毫秒的精确值。

针对STM32微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用Delay(N)。

解决方法

Cortex-M3的内核中包含一个SysTick时钟。SysTick为一个24位递减计数器, SysTick设定初值并使能后,每经过1个系统时钟周期,计数值就减1。计数到0时,SysTick计数器自动重装初值并继续计数,同时内部的COUNTFLAG标志会置位,触发中断(如果中断使能)。

在STM32的应用中,使用Cortex-M3内核的SysTick作为定时时钟,设定每一毫秒产生一次中断,在中断处理函数里对N减一,在Delay(N)函数中循环检测N是否为0,不为0则进行循环等待;若为0则关闭SysTick时钟,退出函数。

这样的好处就是:延迟时间将不随系统时钟频率改变。

源代码

初始化相关模块 :

说明:外部晶振为8MHz,系统时钟为72MHz, SysTick的频率9MHz,SysTick产生1ms的中断

中断处理 :

注意:全局变量TimingDelay必须定义为volatile。

延时代码:

            TimingDelay = nTime; // 读取延时时间 

    while(TimingDelay != 0); // 判断延时是否结束    

    SysTick_CounterCmd(SysTick_Counter_Disable); // 关闭SysTick计数器

    SysTick_CounterCmd(SysTick_Counter_Clear); // 清除SysTick计数器

}

应用代码

关注本公号,在后台回复【STM32】可以获取更多关于STM32单片机的相关视频和教程资料。

到此这篇桌面时钟代码(桌面时钟代码怎么设置)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 打印控件已安装好怎么还是打印不了文件(打印控件安装成功还提示未安装)2025-04-07 08:45:10
  • Edge修复和重启都无法打开网页(edge修复和重启都无法打开网页怎么回事)2025-04-07 08:45:10
  • 动态库存表的制作方法(动态库的制作和使用)2025-04-07 08:45:10
  • autoh一直开可以吗(autohold一直开着费油吗)2025-04-07 08:45:10
  • list 转成字符串 用逗号隔开(list转为字符串中间逗号隔开)2025-04-07 08:45:10
  • 苹果电脑装双系统好用吗(苹果电脑安装双系统会不会对电脑不好)2025-04-07 08:45:10
  • mhaal00(mhaal00什么型号)2025-04-07 08:45:10
  • udp的广播和组播(udp广播和单播)2025-04-07 08:45:10
  • nvim(Nvim 最低系统)2025-04-07 08:45:10
  • 怎样删除虚拟盘(怎么彻底删除虚拟系统)2025-04-07 08:45:10
  • 全屏图片