最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

STM32F4xx的TIM定时器的应用

来源:动视网 责编:小OO 时间:2025-10-02 07:56:45
文档

STM32F4xx的TIM定时器的应用

STM32F4xx的TIM定时器的应用#include"stm32f4xx.h"/******************************************************************\**文件名:mian.c*************************************************库版本:STM32F4xx_DSP_StdPeriph_Lib_V1.0.1********************工作环境:RealViewMDK-ARM4.
推荐度:
导读STM32F4xx的TIM定时器的应用#include"stm32f4xx.h"/******************************************************************\**文件名:mian.c*************************************************库版本:STM32F4xx_DSP_StdPeriph_Lib_V1.0.1********************工作环境:RealViewMDK-ARM4.
STM32F4xx的TIM定时器的应用

#include "stm32f4xx.h"

/******************************************************************\

** 文 件 名:     mian.c ***********************************************

** 库 版 本: STM32F4xx_DSP_StdPeriph_Lib_V1.0.1 ******************

** 工作环境:     RealView MDK-ARM 4.23 ******************************

** 作    者:     曾有根 **********************************************

** 生成日期:     2012-08-03 *******************************************

** 功    能:    TIM定时器,正常情况下是PE7所在的led灯亮,当计时 **

**                 到后就让PE8所在的led灯闪烁一次 *********************

\\*******************************************************************/

extern void led_init(void);

extern void delay(unsigned int dl);

extern void NVIC_Config(void);

extern void Timer_Config(void);

//extern void RCC_Configuration(void);

int main()

{

        SystemInit();

        led_init();

        NVIC_Config();

        Timer_Config();

        while(1)

        {

            GPIO_SetBits(GPIOE, GPIO_Pin_7 )        //LED1灯闪烁,表示数据发送完成

            delay(2000);

            GPIO_ResetBits(GPIOE, GPIO_Pin_7 );       

            delay(2000);    

        } 

}

相关配置systick_config.c文件如下:

 

#include "stm32f4xx.h"

void led_init(void)

{

    GPIO_InitTypeDef  GPIO_InitStructure;

  

  /* Enable the GPIO_LED Clock */

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);

  /* Configure the GPIO_LED pin */

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8;  //led IO口

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;           //模式:输出

//  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;        //本实验板屏蔽是因为硬件上自带了上拉电阻

//  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //50M翻转

  GPIO_Init(GPIOE, &GPIO_InitStructure);

}

void delay(unsigned int dl)

{

    unsigned int i,y;

for(i = 0; i < 5000; i++)

    {

     for(y = 0; y < dl; y++);

    }

}

void NVIC_Config(void)

{

  NVIC_InitTypeDef NVIC_InitStructure;

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

  

  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;                    

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure);         

}

void Timer_Config(void)

{

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;                        

      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

    /* 基础设置*/

    TIM_TimeBaseStructure.TIM_Period = 25000;                //计数值   

    TIM_TimeBaseStructure.TIM_Prescaler = 33600-1;            //预分频,此值+1为分频的除数

    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;             

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;     //向上计数

    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

    TIM_ClearFlag(TIM2,TIM_FLAG_Update);

    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);

    TIM_Cmd(TIM2, ENABLE);

}

void TIM2_IRQHandler(void)

{

    if(TIM_GetITStatus(TIM2,TIM_IT_Update)!= RESET)

    {

         TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);

           GPIO_SetBits(GPIOE, GPIO_Pin_8 );                   //LED2灯闪烁,表示数据接收成功且发送完成

        delay(2000);

        GPIO_ResetBits(GPIOE, GPIO_Pin_8 ); 

    }

}

说明:本例程已经经本人下载至STM32F4的开发板上成功调试,LED能够正常的翻转!可供广大奋斗在前线的机油们参考,重点讲解一下定时器配置的关键语句:

TIM_TimeBaseStructure.TIM_Period = 25000;        //计数值   ①

TIM_TimeBaseStructure.TIM_Prescaler = 33600-1; //预分频,此值+1为分频的除数! ②

  

①假设频率为168M(具体多少根据芯片而定),则168 000 000 ÷ 33 600 = 5 000 ;此数(5000)表示定时器1s的时间可以计数到5000 ,计数值为2 5000,则计数器要经过5s(2 5000 ÷ 5 000 = 5)的时间才能计数到25000,所以此配置为5s的定时!

文档

STM32F4xx的TIM定时器的应用

STM32F4xx的TIM定时器的应用#include"stm32f4xx.h"/******************************************************************\**文件名:mian.c*************************************************库版本:STM32F4xx_DSP_StdPeriph_Lib_V1.0.1********************工作环境:RealViewMDK-ARM4.
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top