• 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更新中断
    }

    }

    有以上就可以使用了.

  • 相关阅读:
    C语言习题(结构)
    java变量
    大咖分享 | 一文解锁首届云创大会干货——上篇(文末附演讲ppt文件免费下载)
    深入解读Service Mesh的数据面Envoy
    appium封装显示等待Wait类和ExpectedCondition接口
    Jmeter压测Thrift服务接口
    浏览器插件及好用的小工具
    Jmeter入门实例
    BugBash活动分享
    如何作缺陷分析
  • 原文地址:https://www.cnblogs.com/constanto/p/8480784.html
Copyright © 2020-2023  润新知