完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是通过stm32里边的定时器来实现定时一段时间,比如说倒计时多长时间,很多人会考虑用delay函数,但delay的话程序无法执行其他语句,会一直处在delay()函数内,这样便会影响其他语句执行。
话不多说上代码: #include “timer.h” #include “stm32f10x.h” #include “delay.h” void TIM6_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct3; NVIC_InitTypeDef NVIC_InitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE); TIM_TimeBaseInitStruct3.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInitStruct3.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInitStruct3.TIM_Period=arr; TIM_TimeBaseInitStruct3.TIM_Prescaler=psc; TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE); NVIC_InitStruct.NVIC_IRQChannel=TIM6_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2; NVIC_InitStruct.NVIC_IRQChannelSubPriority=1; NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStruct); TIM_TimeBaseInit(TIM6,&TIM_TimeBaseInitStruct3); TIM_Cmd(TIM6,ENABLE); } 以上这是初始化定时器6的相关代码,不要忘记在.h文件内声明一下。如下所示: #ifndef __TIMER_H #define __TIMER_H #include “sys.h” void TIM6_Int_Init(u16 arr,u16 psc); #endif 然后再主函数内,进行定时器6的初始化过程,将相关参数带入,假如我们要设定10秒钟定时,那么我们将定时器6初始化的两个参数arr和psc分别设定为4999和7199,设定这两个值得含义是定时500毫秒中断一次,我们要想定时10秒需要执行20次这个500毫秒的中断。所以我们索性设定一个变量为value,然后将value变为自己的2倍,拿10秒为例,就是value=20;拿20秒为例,value=40;相关代码如下所示: #include “timer.h” 。..。.. u8 velue ; int main() { velue=10; velue+=velue; TIM6_Int_Init(4999,7199); } 那么在定时器中断函数内执行的代码如下所示: void TIM6_IRQHandler(void) { static u8 record8 =0; if(TIM_GetITStatus(TIM6,TIM_IT_Update)!=RESET) { record8++; if(record8》velue) {record8=0; GPIO_SetBits(GPIOB,GPIO_Pin_8); delay_ms(1000); GPIO_ResetBits(GPIOB,GPIO_Pin_8); TIM_Cmd(TIM6,DISABLE); } TIM_ClearITPendingBit(TIM6,TIM_IT_Update); } } 这个PB8是设定的蜂鸣器接口,就是实现的功能就是设定倒计时10秒中,蜂鸣器响1秒,这样就实现了定时器定时功能,并且不会影响程序执行其他的。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1916 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1680 浏览 1 评论
1172 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
771 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1732 浏览 2 评论
1974浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
808浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
257浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
625浏览 3评论
634浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-25 02:20 , Processed in 0.827943 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号