zoukankan      html  css  js  c++  java
  • STM32通用定时器实现LED灯闪烁

    刚才看了一下STM32通用定时器的教程,其实和51的定时器使用差不多。只是因为32的时钟更复杂,可操控的寄存器更多,所以写的时候可能更复杂。

    使用通用定时器中断的一般步骤:
    1、使能定时器时钟 

    这个需要看时钟树,使能对应的时钟就好了。这里我使用的是TIM3,所以使能APB1的时钟即可。

    2、设置定时器的分频系数和重装载值

    定时器中断的时间为:Tout = (arr+1)/[Tclk/(psc+1)] 

    其实这个定时器中断时间还是要具体分析,这里是这样,其他地方或许不是这样,具体还是要参考《STM32参考手册》。

    3、使能定时器中断

    4、启动定时器

    5、定时器中断初始化,设置它的中断优先级,分组之类的

    6、编写中断服务函数

    下面是对应的代码

    //初始化定时器
    void TIMER_Init(u16 psc,u16 arr){
        RCC->APB1ENR = 1<<1; //使能定时器时钟
        TIM3->PSC = psc; //设置预分频系数
        TIM3->ARR = arr; //设置重装载值
        TIM3->DIER |= 1<<0; //使能定时器中断
        TIM3->CR1 |= 1<<0; //启动定时器
        MY_NVIC_Init(1,3,TIM3_IRQn,2); //定时器中断初始化
    }
    
    
    //中断服务函数
    void TIM3_IRQHandler(){
        if(TIM3->SR&0x0001)LED0 = ~LED0;    
        TIM3->SR &= ~(1<<0); //清除中断标志
    }
  • 相关阅读:
    cuda(2)---方阵乘法
    cuda(1)-imageBlur
    python(6) 字符串操作
    CUDA 编程之Release模式和Debug模式
    20200909 day4 刷题记录
    20200908 day3 刷题记录
    20200906 day1 模拟(一)
    刷题Day 4-6 树形dp三题
    4.28 刷题Day 3 树形dp一题
    DTQ2019-D1T2 括号树 题解
  • 原文地址:https://www.cnblogs.com/cuglkb/p/6270107.html
Copyright © 2011-2022 走看看