基本定時器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);
}
}