本帖最后由 正点原子运营 于 2024-4-2 15:43 编辑
1)实验平台:正点原子 M144Z-M3 STM32F103最小系统板
2) 章节摘自【正点原子】M144Z-M3最小系统板使用指南——STM32F103版
6)正点原子STM32技术交流QQ群:725095144
本章介绍STM32F103通用定时器的使用,通用定时器相较于基本定时器,拥有输入捕获和输出比较等功能,这些功能可以用来测量脉冲宽度、频率和占空比,并且可以产生并输出波形等。通过本章的学习,读者将学习到通用定时器的基本使用。 本章分为如下几个小节: 17.1 硬件设计 17.2 程序设计 17.3 下载验证
17.1 硬件设计 17.1.1 例程功能 1. LED1以1Hz的频率闪烁 2. LED0闪烁,提示程序正在运行
17.1.2 硬件资源 1. LED LED0 - PB5 LED1 - PE5 2. TIM3
17.1.3 原理图 本章实验使用的TIM3为STM32F103的片上资源,因此没有对应的连接原理图。
17.2 程序设计 17.2.1 HAL库的TIM驱动 本章实验仅是使用通用TIM3代替上一章中基本TIM6,实现通用定时器的一些基本功能,具体的原理和使用的HAL库函数都是一样的,因此请参考第16.2.1小节中对HAL库中TIM驱动的相关介绍。
17.2.2 通用定时器驱动 本章实验仅是使用通用TIM3代替上一章中基本TIM6,实现通用定时器的一些基本功能,具体的驱动代码都是一样的,因此请参考第16.2.2小节中基本定时器驱动的相关介绍。
17.2.3实验应用代码 本章实验的应用代码,如下所示: - int main(void)
- {
- HAL_Init(); /* 初始化HAL库 */
- sys_stm32_clock_init(RCC_PLL_MUL9); /* 配置时钟,72MHz */
- delay_init(72); /* 初始化延时 */
- usart_init(115200); /* 初始化串口 */
- led_init(); /* 初始化LED */
- gtim_timx_int_init(5000 - 1, 7200 - 1); /* 初始化通用定时器,溢出频率为2Hz */
-
- while (1)
- {
- LED0_TOGGLE();
- delay_ms(200);
- }
- }
复制代码与上一章实验一样,TIM3的计数频率为10KHz,溢出频率为2Hz,因此LED1的闪烁频率也为1Hz。
17.3 下载验证 在完成编译和烧录操作后,可以看到板子上的LED0和LED1都在闪烁,但闪烁的频率不同,LED0每间隔200毫秒改变一次状态,LED1在TIM3的中断回调函数中被改变状态,其闪烁的频率约为1Hz。 |