完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
1;原理;
和外部中断差不多,不同的是外部中断的产生是由外部硬件产生变化的,而定时器中断就是通过定时器的溢出实现中断(可以想象成闹钟); 2;操作步骤; 这里我用的是通用定时器TIM3; 1)TIM3 时钟使能。 这里我们通过 APB1ENR 的第 1 位来设置 TIM3 的时钟,因为 Stm32_Clock_Init 函数里面 把APB1的分频设置为2了,所以我们的TIM3时钟就是APB1时钟的2倍,等于系统时钟(72M)。 2)设置 TIM3_ARR 和 TIM3_PSC 的值。 通过这两个寄存器,我们来设置自动重装的值,以及分频系数。这两个参数加上时钟频率 就决定了定时器的溢出时间。 Tout= ((arr+1)*(psc+1))/Tclk; Tclk:TIM3 的输入时钟频率(单位为 Mhz)。 Tout:TIM3 溢出时间(单位为 us) 3)设置 TIM3_DIER 允许更新中断。 因为我们要使用 TIM3 的更新中断,所以设置 DIER 的 UIE 位为 1,使能更新中断。 4)允许 TIM3 工作。 光配置好定时器还不行,没有开启定时器,照样不能用。我们在配置完后要开启定时器, 通过 TIM3_CR1 的 CEN 位来设置。 5)TIM3 中断分组设置。 在定时器配置完了之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器,以使能 TIM3 中断。 6)编写中断服务函数。 在最后,还是要编写定时器中断服务函数,通过该函数来处理定时器产生的相关中断。在 中断产生后,通过状态寄存器的值来判断此次产生的中断属于什么类型。然后执行相关的操作, 我们这里使用的是更新(溢出)中断,所以在状态寄存器 SR 的最低位。在处理完中断之后应 该向 TIM3_SR 的最低位写 0,来清除该中断标志。 通过以上几个步骤,我们就可以达到我们的目的了,使用通用定时器的更新中断,来控制 DS1 的亮灭; 3;代码timer.c; 在这里插入代码片 #include "timer.h" #include "led.h" #include "sys.h" void TIM3_IRQHandler(void)//中断服务函数 { if(TIM3->SR&0X0001)//判断是否溢出 { LED1=!LED1; } TIM3->SR&=~(1<<0);//清除中断标志位 } void TIM3_Init1(u16 arr,u16 psc) { RCC->APB1ENR |=1<<1;//TIM3时钟使能 TIM3->ARR=arr;//自动重装载值 TIM3->PSC=psc;//预分频系数 TIM3->DIER |=1<<0;//中断使能 TIM3->CR1 |=0X01;//使能定时器3 MY_NVIC_Init(1,3,TIM3_IRQn,2);//中断优先级设置,分组,以及中断服务函数 } time.h 在这里插入代码片 #ifndef _TIMER_H_ #define _TIMER_H_ #include "sys.h" void TIM3_Init1(u16 arr,u16 psc); #endif main.c 在这里插入代码片 #include "stm32f10x.h" #include "delay.h" #include "led.h" #include "timer.h" int main() { Stm32_Clock_Init (9); delay_init(72); LED_Init (); TIM3_Init1(4999,7199);// LED1=0; while(1) { LED0=0;//指示程序正在运行,常亮红灯 delay_ms(200); } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1792 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1626 浏览 1 评论
1094 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
732 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1682 浏览 2 评论
1943浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
740浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
577浏览 3评论
600浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
562浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 11:31 , Processed in 0.638950 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号