打印
[STM32F4]

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

[复制链接]
434|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一代掌门|  楼主 | 2016-9-10 21:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   基本定时器TIM6和TIM7包括一个由可编程分频器驱动的16位自动重载计数器。它可以用作普通的定时器,也可以用来驱动DAC。这两个定时器是完全独立的,不共享任何资源。更多时候是与DAC平配合使用。




作为定时器的配置步骤:
1.      设置中断优先级分组(如果之前没有设置),这个最好一个程序里只在开头设置一次。
2.     使能相关时钟。
3.     设置分频。
4.     清空计数器的值。
5.     设置自动重装寄存器的值。
6.     是否允许中断。
7.     如果允许中断,设置中断优先级,使能中断。
8.     使能计数器。



程序:

[plain] view plain copy


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



发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

191

帖子

4

粉丝