![7223d9b8fbd4cf7ff31d714c64a935a8.png](https://i-blog.csdnimg.cn/blog_migrate/ec5ce247f26d52b07b90ab800ff673c0.jpeg)
只要我们能善用时间,就永远不愁时间不够用。---德国诗人 歌德
(要副本见第0章)
时间是一个神秘的东西,无处不在却总在失去。stm32上的时钟树十分强大,吊打只有几个时钟的51单片机,我主要讲讲系统时钟system和定时器TIM。
![eb698ac9b284991e4d97966cc98e9c87.png](https://i-blog.csdnimg.cn/blog_migrate/e5b4b54562de40d74b79054baeb48c85.jpeg)
一目了然的时钟树。
1.系统时钟,内容在delay.c里,感兴趣的可打开看看里面的函数。
在你想延时的地方加上
delay_ms(???);延时XXX毫秒
delay_us(???);延时XXX微秒
当然,里面的数值不能超过2的16次方即65536-1。
2.定时器
stm32系列是单线程运算的,使用系统定时器会占用宝贵的时间,使用tim定时器就成了主流。打开副本并配置time.c文件
TM32F103系列有11个定时器:
2个高级定时器(TIM1,TIM8)
4个通用定时器(TIM2,TIM3,TIM4,TIM5)
2个基本定时器(TIM6,TIM7)
2个看门狗定时器(IWDG,WWDG)
1个系统定时器。
计时间是每个定时器的基本功能,这里演示的是tim4
TIM4_Init(计数次数ps,预分频pr);//把初始化加入main函数中
两者都不能超过2的16次方。系统时钟我默认的是72MHZ.计时时间等于
((pr-1)/72000)*ps,单位是ms
定时时间一到,就会发生中断,处理器就会停下现在的是,去处理中断内容,中断函数名字不能随便起,而是(申请中断器件名字)+_IRQHandler。时间一到干什么,可以自己编,中断函数可以放在任何地方(包含在头文件即可),无需声明,中断函数最后记得加上
TIM_ClearITPendingBit(TIMx,TIM_IT_Update);
清楚中断标记。
这里举个例子
![b24591e45f959bfab63af4e17c3fb633.png](https://i-blog.csdnimg.cn/blog_migrate/6acef5e68b5fdbf5b5f2bc1aa051ee3c.jpeg)
谢谢观看!!!