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);
}
}
作为定时器的配置步骤:
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);
}
}
相关文章推荐
- stm32f407之基本定时器TIM6&TIM7(操作寄存器)
- stm32f407之基本定时器TIM6&TIM7(操作寄存器)
- Mysql&nbsp;for&nbsp;MacOSX&nbsp;安装和基本操作
- Objective-C 【NSArray 的基本使用&常见方法&简写形式】
- 【基本算术定理 && 质因数分解】LightOJ - 1341 Aladdin and the Flying Carpet
- 光纤的基本理论&&光纤的色散
- 模拟项目一(1)&对ECSide的基本认识和工作原理的理解
- Python -> 函数式编程的一些基本原则
- ID Tech 5 中"Megatexture"针对地形的D3D9 基本实现原理
- spring-&gt;AOP 1.1基本概念
- Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数
- SRPG游戏开发(二十二)第六章 基本框架 - 七 视图(View&UI)
- C#笔记(1)--->基本语法 [运算符]
- dede5.6升级5.7后 系统基本参…
- MongoDB V3 & V2 版本锁性能对比测试及锁的基本概况
- RxJava && Agera 从源码简要分析基本调用流程(2)
- HDU 5963 朋友/podru 4000 ga (找规律+map&pair基本用法)
- Crazy Tetris 01_基本设置&主菜单场景
- 假设串S1 = "I come from Beijing",S2 = "Chongqing" ,Sub = "America". 利用串的基本操作,如果串的赋值、串的插入、串的删除、串的替换、对上面
- 第二章 变量和基本类型(续3)类类型 & 编写自己头文件