以下是我学习基于uVision中的STM32F103C8编程的一点感悟和指导,分享出来,希望对大家有所帮助。如果有错误的地方可以留言指出来,我一定耐心听取。相信大家只要付出努力,就一定学有所成!
目录
1.系统时钟
2.led灯开关模拟
言归正传了呦
1.系统时钟
1.1 首先介绍一下STM32的系统时钟吧。名为SYSTICK,是一个24位降序、零约束、写清除的计数器递减计数器。Systick设定初值并使能后,每经过一个时钟周期,计数器减一,计数到0时,Systick计数器自动重载初值并继续计数,同时内部的COUNTFLAG标志会置位,触发中断(如果中断使能)。而外部晶振为8Mhz,9倍频,系统时钟为72Mhz,若Systick的频率为9Mhz(HCLK/8),在这个条件下
- 把Systick校验值设置成9,将Systick时钟设置为八分频,就能产生1us的时间基值,即产生1us中断。
- 把Systick校验值设置成9000,将Systick时钟设置为八分频,就能产生1ms的时间基值,即产生1ms中断。
- 把Systick校验值设置成9000000,将Systick时钟设置为八分频,就能产生1s的时间基值,即产生1s中断。
¥¥¥¥¥¥重要提示,由于系统时钟只有24位可以显示数字,所以SysTick校验值最大为2^24-1,差不多17600000,所以我们不能设置超过这个值,否则计时器会失效。比如说以s为单位,只能传1,不能传2以上,但是可以多次执行delay_s()这个函数哦。
1.2 接下来讲解具体实现过程。首先是建立一个头文件和一个源文件,来练习之前的知识哦。
1.2.1 在头文件中,我以clock.h命名

本文介绍了如何在uVision环境中使用STM32F103C8进行系统时钟配置,通过SYSTICK定时器实现不同时间间隔的中断,并提供了系统时钟的详细解释和代码实现。同时,讨论了LED灯开关模拟,强调了防止抖动的关键点,帮助读者理解和应用。
最低0.47元/天 解锁文章
2098

被折叠的 条评论
为什么被折叠?



