STM32CubeMX 软件中如何设置定时器,实现基本定时器中断以1Hz的频率翻转LED?
1、新建STM32CubeMx工程,选择STM32F103R6单片2、然后对TIM1或者TIM2进行设置,本次我们使用TIM2做中断实验,选择内部时钟作为定时器时钟
c221808d8f85408284d2539ff86ad8f6~noop.image?_iz=58558&from=article.jpg
内部时钟

3、STM32时钟配置保持默认不变,因为我们用proteus仿真来验证本次实验;4、然后对TIM2进行定时中断时间的设置 ,如下图所示: b7c1b1514ee04c4e8107dfa126a68681~noop.image?_iz=58558&from=article.jpg
TIM2设置

如果我们想要定时器200ms产生一次中断,单片机的选择内部8M晶振,我们将定时器的分频系数Psc设置为7999; 那么根据公式
f06997a6627a451eb64c99363b29342d~noop.image?_iz=58558&from=article.jpg
定时器参数设置

我们根据Arr的计算公式
fe0d4729cc6141e99b3325418921def9~noop.image?_iz=58558&from=article.jpg
可以得出:Arr=199;
那么,我们可以TIM2进行参数设置,分频系数Psc=7999就是将HCLK(输入给定时器的时钟频率8MHz)进行分频, 得到CLK=1KHz;
定时周期Arr=199; 也就是说定时周期是200个周期,已知1个周期的时间是1ms(1/CLK),那么总的定时周期就是200ms;
7d3533f70c6348c1b91be694b942406e~noop.image?_iz=58558&from=article.jpg
TIM2设置

综上,定时器经过上述设置,即可实现每隔200ms就进行一次中断;
7d3533f70c6348c1b91be694b942406e~noop.image?_iz=58558&from=article.jpg
TIM2参数设置

5、然后对中断进行优先级和使能定时器2进行设置,如下图所示:
375bbbae444b4ff6a782d489e9c6362c~noop.image?_iz=58558&from=article.jpg
中断进行优先级和使能定时器2

6、生成代码
6b6e16a2bdc6468b902f47ae64954795~noop.image?_iz=58558&from=article.jpg
对项目进行设置

759f866f8af04a9797c0034c64950274~noop.image?_iz=58558&from=article.jpg
生成代码

那么以上,就是STM32CubeMX 软件中STM32实现基本定时器中断的设置与操作了;
7、在keil软件中修改代码:①在如图所示位置添加如下图所示代码
8dbe4f3e2f034061816dde2a9fad50d1~noop.image?_iz=58558&from=article.jpg
打开TIM2基本定时

②在如图所示位置编写定时器中断服务函数
c45e84cb00f94e25a5dd258cc779f71c~noop.image?_iz=58558&from=article.jpg
定时器中断服务函数

完成上述代码之后,就可以


来源:风口上的胖子