• stm32f407的基本定时器timer6,timer7


    今天要想使用定时器6一上来还是有点懵,不知道是不是这个基本定时器会不一样,测试了一下,基本定时器只是没有输入捕获等功能,基本的定时功能还是有的.用习惯了timer2,3,4,5,他的中断的写法都是TIMx_IRQn,但是timer6的是TIM6_DAC_IRQn.这样基本定时器的障碍也就全部解除了.

    初始化代码如下:

    void TIM6_Int_Init(u16 arr,u16 psc)
    {
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE); ///使能TIM5时钟

    TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值
    TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频
    TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
    TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;

    TIM_TimeBaseInit(TIM6,&TIM_TimeBaseInitStructure);//初始化TIM6
    //不打开定时器初始化的时候
    TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE); //允许定时器6更新中断
    TIM_Cmd(TIM6,ENABLE); //使能定时器5

    NVIC_InitStructure.NVIC_IRQChannel=TIM6_DAC_IRQn ; //定时器6中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; //抢占优先级1
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //子优先级3
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    }

    //定时器6中断服务函数
    void TIM6_DAC_IRQHandler(void)
    {
    if(TIM_GetITStatus(TIM6,TIM_IT_Update)==SET) //溢出中断
    {
    delay_6msdone = 1;

    //停止定时器计数
    TIM_ClearITPendingBit(TIM6,TIM_IT_Update); //清除中断标志位
    //TIM_Cmd(TIM6,DISABLE); //使能定时器6
    //TIM_ITConfig(TIM6,TIM_IT_Update,DISABLE); //允许定时器6更新中断
    }

    }

    有以上就可以使用了.

  • 相关阅读:
    灰哥的二叉树
    BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]
    POJ1155TELE[树形背包]
    HDU4003Find Metal Mineral[树形DP 分组背包]
    POJ1837 Balance[分组背包]
    HDU2639Bone Collector II[01背包第k优值]
    POJ3666Making the Grade[DP 离散化 LIS相关]
    HDU2955 Robberies[01背包]
    HDU2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活[多重背包]
    POJ1014Dividing[多重背包可行性]
  • 原文地址:https://www.cnblogs.com/constanto/p/8480784.html
Copyright © 2020-2023  润新知