基本定时器TIM6和TIM7包括一个由可编程分频器驱动的16位自动重载计数器。它可以用作普通的定时器,也可以用来驱动DAC。这两个定时器是完全独立的,不共享任何资源。更多时候是与DAC平配合使用。
作为定时器的配置步骤:
1. 设置中断优先级分组(如果之前没有设置),这个最好一个程序里只在开头设置一次。
2. 使能相关时钟。
3. 设置分频。
4. 清空计数器的值。
5. 设置自动重装寄存器的值。
6. 是否允许中断。
7. 如果允许中断,设置中断优先级,使能中断。
8. 使能计数器。
程序:
/************************************
标题:定时器TIM7的定时练习
软件平台:IAR for ARM6.21
硬件平台:stm32f4-discovery
主频:168M
*************************************/
#include #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(操作寄存器)
推荐阅读最新更新时间:2024-11-04 20:30
STM32F407 ADC时钟设置及采样频率设置
/************************************************* 在system_stm32f4xx.c中有如下定义: /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N / / / #define PLL_M 8 #define PLL_N 336 /* SYSCLK = PLL_VCO / PLL_P // #define PLL_P 2 /* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ /// #define PLL_Q
[单片机]
stm32f407之GPIO(操作寄存器)
stm32f407VG这款单片机上共有PA-PE共5×16共80个复用IO口,每个通用I / O端口有4个32位配置寄存器(GPIOx_MODERGPIOx_OTYPER GPIOx_OSPEEDR GPIOx_PUPDR),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位的置位/复位寄存器(GPIOx_BSRR),32位锁定寄存器(GPIOx_LCKR)和两个32位的备用功能选择寄存器(GPIOx_AFRHGPIOx_AFRL)。 设置步骤: 1. 使能相关时钟 2. 设置相应的IO口为输入或输出 3. 设置输入输出的类型 4. 设置输出的速度(如果设置为输入,此步跳
[单片机]
stm32f407外部中断
一,外部中断的概念 STM32F4 的每个 IO 都可以作为外部中断输入。 STM32F4 的中断控制器支持 22 个外部中断 / 事件请求: EXTI线0~15:对应外部IO口的输入中断。 EXTI线16:连接到PVD输出。 EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接到USB OTG FS唤醒事件。 EXTI线19:连接到以太网唤醒事件。 EXTI线20:连接到USB OTG HS(在FS中配置)唤醒事件。 EXTI线21:连接到RTC入侵和时间戳事件。 EXTI线22:连接到RTC唤醒事件。 每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用
[单片机]
STM8L外部中断为何死循环 寄存器操作
STM8L 系列单片机是 ST公司推出的低功耗单片机,与STM8S系列相比功耗降低了很多,但内部结构也删减了很多,使用时一定要仔细阅读手册。 这是第一次使用STM8,实现功能不是很复杂就没想研究库函数,准备直接控制寄存器操作,没想到本人 因为中断问题纠结了大半天。 在外部中断中这一点很不同, STM8S自动清除外部中断,而STM8L是需要软件清除, 清除标志位的寄存器根据设置而不同,下面有说明。 下面以STM8L外部中断 PB1为例 说明外部中断 寄存器操作 设置外部中断有下面几步: 第一步、设置IO口为中断输入 通过设置 (PB_DDR |= 0X00; PB_CR1 |= 0X02; PB_CR2 |= 0X02;)
[单片机]
STM32F103基本定时器使用
STM32F103单片机中定时器分为3种,高级定时器、通用定时器、基本定时器。 基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。这2个定时器是互相独立的,不共享任何资源。 TIM6和TIM7定时器的主要功能包括: 16位自动重装载累加计数器 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值分频 触发DAC的同步电路 在更新事件(计数器溢出)时产生中断/DMA请求 这个可编程定时器的主要
[单片机]
设计单片机日志系统
环境: 主机:WIN10 开发环境:MDK5.12 MCU:STM32F407 说明: 为单片机设计了一套简单的日志系统,通过日志系统提供的接口可以查看设备状态,并进行一些基本的调试。 日志系统通过串口输出,所以单片机需要准备一个串口供日志系统使用。注意串口发送不能用DMA发送(避免在在中断中打印日志造成的中断竞争),接收可以用DMA接收。 功能: 打开/关闭各个模块的调试输出 输入动作指令,让设备进行一些动作 打印系统运行日志 指令: H:帮助 O:调试输出全开 O1:打开1号模块,打开其他模块指令类似 F:调试输出全关 F1:关闭1号模块 I:输出系统日志 C:清除系统日志 A1:执行1号动作,执行其他动
[单片机]
stm32F407+ov7670的摄像头识别
单片机源程序如下: #include system.h #include SysTick.h #include led.h #include usart.h #include tftlcd.h #include malloc.h #include sdio_sdcard.h #include flash.h #include ff.h #include fatfs_app.h #include key.h #include font_show.h #include exti.h #include time.h #include string.h #include math.h
[单片机]
STM32定时器基本计数原理解析
概述 STM32的TIM定时器分为三类:基本定时器、通用定时器和高级定时器。从分类来看就知道STM32的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了。很多初学者甚至工作了一段时间的人都不知道STM32最基本的计数原理。 虽然STM32定时器功能强大,也分了三类,但他们最基本的计数部分原理都是一样的,也就是我们常常使用的延时(或定时)多少us、ms等。 接下来我会讲述关于STM32最基本的计数原理,详细讲述如何做到(配置)计数1us的延时,并提供实例代码供大家参考学习。 TIM计数原理描述 定时器可以简单的理解为:由计数时钟(系统时钟或外部时钟)一个一个计数,直到计数至我们设定的值,这个时候产生
[单片机]