您的位置:首页 > 其它

STM32F407之基本定时器TIM6&TIM7

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

作为定时器的配置步骤:

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

2. 使能相关时钟。

3. 设置分频。

4. 清空计数器的值。

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

6. 是否允许中断。

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

8. 使能计数器。

程序:

[plain] view
plaincopy





/************************************

标题:定时器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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: