stm32f407之基本定時器TIM6&TIM7(操作暫存器)
阿新 • • 發佈:2019-02-07
基本定時器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); } }