网站建设基础教程视频,网站开发倒计时,北京小程序开发平台,高新区网站建设公司点击上方蓝字关注我们 作业 1、使用基本定时7,完成一个定时喂狗的程序 01、上节回顾 STM32 | 独立看门狗+RTC时间(第八天)02、定时器头文件
#ifndef __TIM_H#define __TIM_H#include stm32f4xx.hvoid Tim3_Init(void);void Tim7_Init(void);…点击上方"蓝字"关注我们 作业 1、使用基本定时7,完成一个定时喂狗的程序 01、上节回顾 STM32 | 独立看门狗+RTC时间(第八天)02、定时器头文件
#ifndef __TIM_H#define __TIM_H#include "stm32f4xx.h"void Tim3_Init(void);void Tim7_Init(void);#endif 03、定时器源文件
#include "tim.h"/*********************************定时器说明TIM3 -- APB1(定时器频率:84MHZ)TIM3是16位定时器**********************************/void Tim3_Init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; NVIC_InitTypeDef NVIC_InitStruct; //1、能定时器时钟。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseInitStruct.TIM_Prescaler = (84-1); //84分频,定时器频率84MHZ/84 = 1MHZ(计一个用1us) TIM_TimeBaseInitStruct.TIM_Period = (1000-1); //计1000个数,在1MHZ下,用时1ms TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; //向上计数 TIM_TimeBaseInitStruct.TIM_ClockDivision= TIM_CKD_DIV1; //分频因子 1脉冲计一个数 //2、初始化定时器,配置ARR,PSC。 TIM_TimeBaseInit(TIM3, TIM_TimeBaseInitStruct); NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn; //中断通道,可在stm32f4xx.h文件当中查找 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1; //响应优先级 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //通道使能 //3、启定时器中断,配置NVIC。 NVIC_Init(NVIC_InitStruct); //4、设置 TIM3_DIER 允许更新中断 TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //5、使能定时器。 TIM_Cmd(TIM3, ENABLE);}//编写中断服务函数。每隔1ms进入中断void TIM3_IRQHandler(void){ static unsigned short led_flag = 0; //判断更新标志位是否1 if(TIM_GetITStatus(TIM3, TIM_IT_Update) == SET) { led_flag++; //第隔1ms 值加1 if(led_flag%9 == 0) { //亮灯 GPIO_ResetBits(GPIOF, GPIO_Pin_9); } else { //灭灯 GPIO_SetBits(GPIOF, GPIO_Pin_9); } //清空更新标志位 TIM_ClearITPendingBit(TIM3, TIM_IT_Update); }}/*********************************定时器说明TIM7 -- APB1(定时器频率:84MHZ)TIM7是16位定时器**********************************/void Tim7_Init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; NVIC_InitTypeDef NVIC_InitStruct; //1、使能定时器时钟。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE); TIM_TimeBaseInitStruct.TIM_Prescaler = (8400-1); //8400分频,定时器频率84MHZ/84 = 1MHZ(计一个用1us) TIM_TimeBaseInitStruct.TIM_Period = (10000-1); //计10000个数,在1MHZ下,用时1s TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; //向上计数 TIM_TimeBaseInitStruct.TIM_ClockDivision= TIM_CKD_DIV1; //分频因子 1脉冲计一个数 //2、初始化定时器,配置ARR,PSC。 TIM_TimeBaseInit(TIM7, TIM_TimeBaseInitStruct); NVIC_InitStruct.NVIC_IRQChannel = TIM7_IRQn; //中断通道,可在stm32f4xx.h文件当中查找 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1; //响应优先级 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //通道使能 //3、启定时器中断,配置NVIC。 NVIC_Init(NVIC_InitStruct); //4、设置 TIM7_DIER 允许更新中断 TIM_ITConfig(TIM7, TIM_IT_Update, ENABLE); //5、使能定时器。 TIM_Cmd(TIM7, ENABLE);}//编写中断服务函数。每隔1s进入中断void TIM7_IRQHandler(void){ //判断更新标志位是否1