STM32之Timer定时器

定时器属于常见功能,程序如下:

/*
********************************************************************************************************
函 数 名: TimerApp_Init
功    能: 定时器初始化
参    数: p_s_Base_Add - TIM选择
          u32_frequent - 频率
返    回: 无
********************************************************************************************************
*/
void TimerApp_Init(TIM_TypeDef *p_s_Base_Add, uint32 u32_frequent)
{
  TIM_TimeBaseInitTypeDef  s_TIM_TimeBaseStructure;
  NVIC_InitTypeDef s_NVIC_InitStructure;
  
  RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_TIM2, ENABLE);
  
  /* 100us(1 * 100)中断一次 */
  s_TIM_TimeBaseStructure.TIM_Period = u32_frequent - 1;     /* TimeOut Ms 触发一次 */
  s_TIM_TimeBaseStructure.TIM_Prescaler = 84 - 1;  /* TIMx counter clock at 1 MHz */   

  s_TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    
  s_TIM_TimeBaseStructure.TIM_CounterMode = TIM_COUNTERMODE_UP;  
  TIM_TimeBaseInit(p_s_Base_Add, &s_TIM_TimeBaseStructure);

  TIM_PrescalerConfig(p_s_Base_Add, s_TIM_TimeBaseStructure.TIM_Prescaler, TIM_PSCRELOADMODE_IMMEDIATE); 
  TIM_ClearFlag(p_s_Base_Add, TIM_FLAG_UPDATE);
  TIM_ITConfig(p_s_Base_Add, TIM_IT_UPDATE, ENABLE);
  TIM_Cmd(p_s_Base_Add, ENABLE);
  
    /* Enable the TIM3 gloabal Interrupt */
  s_NVIC_InitStructure.NVIC_IRQChannel = (uint8)TIM2_IRQn;
  s_NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2U;
  s_NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1U;
  s_NVIC_InitStructure.e_NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&s_NVIC_InitStructure);
}
 TimerApp_Init(TIM2, 100);
#ifndef TIMER_H
#define TIMER_H

/* Includes ----------------------------------------------------------------- */
#include "Config.h"
#include "stm32f4xx.h"
#include "stm32f4xx_conf.h"

/* Exported define ------------------------------------------------------- */
#define  function_ms       (200U)      /* 定义调用函数间隔时间 */
#define  function_ms2      (100U)      /* 定义调用函数间隔时间 */

/* Exported functions ----------------------------------------------------------- */
void SysTick_ISR(void);
void Fun_RunPerXms(void);
void Fun_RunPerYms(void);

void TimerApp_Init(TIM_TypeDef *p_s_Base_Add, uint32 u32_frequent);
void SysTick_Delay_us(uint32 nDelay);
void SysTick_Init(void);

uint32 SysTick_GetTime(void);
uint8 SysTick_CompareTime(uint32 TimeValue, uint32 Period);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值