stm32f407之基本定时器TIM6&TIM7(操作寄存器)

基本定时器TIM6&TIM7



      基本定时器TIM6和TIM7包括一个由可编程分频器驱动的16位自动重载计数器。它可以用作普通的定时器,也可以用来驱动DAC。这两个定时器是完全独立的,不共享任何资源。更多时候是与DAC平配合使用。

 

 

 

 

作为定时器的配置步骤:

1.      设置中断优先级分组(如果之前没有设置),这个最好一个程序里只在开头设置一次。

2.     使能相关时钟。

3.     设置分频。

4.     清空计数器的值。

5.     设置自动重装寄存器的值。

6.     是否允许中断。

7.     如果允许中断,设置中断优先级,使能中断。

8.     使能计数器。

 

 

 

程序:

/************************************
    标题:定时器TIM7的定时练习
    软件平台:IAR for ARM6.21
    硬件平台:stm32f4-discovery
    主频:168M
    
    author:小船
    data:2012-02-06
*************************************/

#include <stm32f4xx.h> 
#include "MyDebugger.h"

void main ()
{   

  SCB->AIRCR = 0x05FA0000 | 0x400;  //中断优先级分组 抢占:响应=3:1
  
  RCC->APB1ENR |= (1<<5); //打开TIM7时钟
  TIM7->PSC = 8399; //对时钟84M进行8400分频,使得计数频率为10k
  TIM7->ARR = 10000;  //定时一秒
  TIM7->CNT = 0;  //清空计数器
  TIM7->CR1 |= (1<<7); //自动重装载预装载使能
  TIM7->DIER |= 1; //使能中断
  NVIC->IP[55] = 0x80;
  NVIC->ISER[1] |= (1<<(55-32));
  TIM7->CR1 |= 1; //开始计时
  MyDebugger_Init();
  while(1)
  {
  };
}

void TIM7_IRQHandler(void)
{
  if(TIM7->SR)
  {
    MyDebugger_LEDs(blue, turn);
    TIM7->SR &= ~(0x0001); 
  }
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章