定时器中断实验2 y2 [. ?- n* q, T2 S6 f5 h$ ^ 一、实验说明 平台:STM32F103RCT6 本实验为定时器中断实验,使用STM32cube max 配置TIM3定时中断。- b# }& I2 U. Z: r+ } 注:实验中使用了串口,所以可以沿用上一个串口中断实验的配置。 二、实验操作 1、STM32系统基础配置。 详见上一个实验的步骤1 – 4。 2、配置好串口1。7 y2 S$ ^+ ]: R1 D* f/ l! p8 O 详见上一个实验。 ' W0 H+ T( v: L Z5 m* P 3、配置定时器 % z3 f4 _$ A0 ^9 X9 _, g* `4 Z 如上图选择定时器3,出现如下界面:- v1 c3 x% p9 |! \ 然后配置具体参数: 上一步选择后就会出现这个界面,配置好分频值,计数装载值,注意,第三个箭头那里要使能(ENABLE)自动重新装置值。' B% a, ^3 O: J$ _7 v8 q 3 P6 p8 P& H! N* ?7 A( A% \: @ 时间的计算2 @) X$ n* T2 |! z* J . F/ l# l$ [5 Z* u 这里 Tout = (5000*7200)/72MHZ = 0.5秒,所以0.5秒进一次中断。 r# J M- m- h8 B& K0 S+ S- W 4、定时器中断配置 2 L- X' Q, B* t& ^1 a' y p- U( e 6 |7 Y# ]3 ?/ _; H 5、然后生成代码 6、工程中添加代码 首先要明确我们使用的是定时器的定时中断,也就是更新中断,所以要找对回调函数。; y" J$ {" N# A" L6 P/ h & l/ T- s9 L+ R: f F" [ void TIM3_IRQHandler(void) 在stm32f1xx_it.c中 HAL_TIM_IRQHandler(&htim3);5 Y( ~& |& R: i- ^ HAL_TIM_PeriodElapsedCallback(htim); ( X9 s% S# J1 p __weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) - _" u; C, ]- x9 U 这就是这几个函数的跳转顺序,最后一个就是更新中断的回调函数,把它 复制到TIM.c中,如下图 ( ^ x3 x- g2 N5 Y$ z9 }# [1 m: D 7、开启中断 HAL_TIM_Base_Start_IT(&TIM3_Handler);: E ?0 s/ m5 [1 m0 l2 r1 U 8、测试,在中断中写句输出测试一下(实际开发,不会这样干的。)+ g" t; {: ^) E, w1 [( s: s 因为要输出检查下串口。1 }% N) y6 k4 J: g3 m 下载程序,测试:( p/ r ~% ?5 ^6 Y( v: Z 结果如下,0.5秒输出一次。 3 T1 f* c4 A3 B- X 1 [* h; {( M9 _+ \5 }* Q |
定时器剩余通道是否可以做PWM输出呢?
基于STM32双定时器+ADC+DMA实战经验分享
基于STM32的定时器触发ADC时可能遇到的情形
【NUCLEO-U545RE-Q评测】5. 基本计时器
基于STM32的定时器不按设定超时产生中断
基于stm32用两个16位定时器级联成32位定时器经验分享
基于STM32利用TIMER事件和栈帧体验中断响应经验分享
基于STM32的Timer 结合 DMA 2D 通道实现不同波形输出
基于STM32软件定时器+中断方式模拟PWM经验分享
基于STM32高精度定时器中single-shot计数模式不工作