实验现象:LED灯0.5s闪烁
/****************************************************************************************
*函 数 名:bsp_Inittimer1
*函数功能:初始化定时器1
*形 参:无
*返 回 值:无
*****************************************************************************************/
void bsp_Inittimer1(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrecture;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);/*使能定时器1的时钟*/
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_TIM10_IRQn;/*定时器1的中断通道使能*/
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/*定时器1的中断通道使能*/
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/*抢占优先级*/
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;/*响应优先级*/
NVIC_Init(&NVIC_InitStructure);/*配置中断分组,并使能中断*/
TIM_TimeBaseInitStrecture.TIM_Period = 10000;/*重装载寄存器*/
TIM_TimeBaseInitStrecture.TIM_Prescaler = 4200;/*预分配*/
TIM_TimeBaseInitStrecture.TIM_ClockDivision = TIM_CKD_DIV1;/*时钟分频*/
TIM_TimeBaseInitStrecture.TIM_CounterMode = TIM_CounterMode_Up;/*向上计数*/
TIM_TimeBaseInitStrecture.TIM_RepetitionCounter = 0;/*重复计数寄存器*/
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStrecture);/*初始化*/
TIM_ClearFlag(TIM1,TIM_FLAG_Update);/*清更新标志位*/
TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);/*使能中断*/
TIM_Cmd(TIM1,ENABLE);/*使能计数*/
}
/****************************************************************************************
*函 数 名:TIM1_UP_TIM10_IRQHandler
*函数功能:定时器1的中断服务函数
*形 参:无
*返 回 值:无
*****************************************************************************************/
void TIM1_UP_TIM10_IRQHandler(void)
{
static unsigned char num;
num++;
if(num % 2 == 0)
GPIO_ResetBits(GPIOC,GPIO_Pin_2);/*点灯*/
else
GPIO_SetBits(GPIOC,GPIO_Pin_2);/*灭灯*/
TIM_ClearFlag(TIM1,TIM_FLAG_Update);/*清中断标志*/
}
/*
*********************************************************************************************************
* 函 数 名: main
* 功能说明: c程序入口
* 形 参:无
* 返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
int main(void)
{
/*
ST固件库中的启动文件已经执行了 SystemInit() 函数,该函数在 system_stm32f4xx.c 文件,主要功能是
配置CPU系统的时钟,内部Flash访问时序,配置FSMC用于外部SRAM
*/
bsp_Init();//这里面对定时器1初始化
/* 进入主程序循环体 */
while (1)
{
}
}
关键字:STM32F407 定时器 TIM1 中断
引用地址:
STM32F407定时器TIM1中断
推荐阅读最新更新时间:2024-03-16 15:36
8051单片机(STC89C52)定时器实现10ms精准定时
8051内部集成了2个16bits的计数器, 可以根据需要将其作为定时器使用. 这时, 定时器的计数频率为系统CLK/12. 如果CPU的晶振频率为12MHz, 那么定时器信号源的频率固定为12MHz/12 = 1MHz. 如果定时器的定时周期设定为50ms, 则需要50000个脉冲. 由于单片机定时器为加1计数器, 所以, 计数器初始值应设为65536 - 50000 = 15536 = 3CB0H. 另外, 还需要设置定时器工作模式寄存器TMOD, 如果使用定时器0, 16bits定时器方式, 则TMOD = 0x01. 定时器初始值计算解析: 若系统晶振频率为12MHz, 那么定时器信号源的频率固定为1MHz, 即每
[单片机]
【话说定时器系列】之三:STM32定时器的信号触发与主从模式
本文介绍的 定时器的信号触发与主从模式 ,主要指通用定时器或高级定时器,不涉及基本定时器,因为基本定时器相对比较简单,对外无过多联络。 那对于STM32定时器而言,有哪些触发信号呢?这些信号来自何处?或流向哪里呢? 触发信号分两大类:触发输入信号【TRGI】,简单地讲就是从外部引入到本定时器的信号;另一类就是触发输出信号,即TRGO信号,它是定时器输出给其它定时器或外设的触发信号。 在STM32参考手册里文字描述部分,找不到一句完整的关于触发输入信号的描述文字,它主要把触发输入信号的概念融入进时钟源部分,倒是在从模式控制寄存器TIMX_SMCR的TS字段对定时器的触发输入信号有个系统的归纳。从数目上有讲一般可以多达8个
[单片机]
STM32-嵌入式学习笔记02-中断应用概述
STM32中断非常强大,每个外设都能产生中断 中断的优先级数值越小,说明他的中断优先级越高 配置中断需要了解NVIC寄存器: NVIC是嵌套向量中断控制寄存器,控制中断的相关功能;它与内核紧密结合,是内核里的一个外设。管理着包括内核和片上的所有外设的中断相关功能。 因此配置中断需要参考下面两个头文件:core_cm3.h 和 misc.h 在配置中断的时候我们一般只配置ISER和ICER IP这3个寄存器: 1)ISER使能中断 2)ICER清除中断 3)设置中断的优先级 给出官方手册寄存器的资料 编程要领: 1)使能中断请求(外设中某个中断) 2)配置优先级分组 3)配置
[单片机]
STM32库函数详解----(外部中断/事件控制器 EXTI)
1.void EXTI_DeInit (void) 函数解释:将EXTI外设寄存器重置为默注释。RCC_APB2PeriphResetCmd参数中没有EXTI外设的的宏,该外设重置采取的是直接向寄存器赋默认值的操作。 例子:EXTI_DeInit ( ); 2.void EXTI_Init (EXTI_InitTypeDef*EXTI_InitStruct) 函数解释:根据EXTI_InitStruct结构体中所配置的参数来初始化外设EXTI寄存器。结构体中模式成员设置了被使能线路是事件请求还是中断请求。 例子:EXTI_Init (&EXTI_InitStruct); EXTI_Line: EXTI_
[单片机]
STM32缺陷之一:串口中断标志位缺陷
根据小道消息,M3内核是有缺陷的,但是这种缺陷不会在大会上想广大群众透露的。我用的是M3内核的stm32,我来寻找一些缺陷。 今天找到的是串口中断标志位缺陷。 我是做四轴飞行器的,没有买遥控器,而是用的无线串口,一开始的想法是stm32接收到串口来的数据后,进入串口中断服务函数,再比对发来的数据进行接下来的动作。 一开始的程序是没有问题的,简单点吧,串口接收到数据后,让LED转换状态。 void USART2_IRQHandler(void) { if(USART_GetITStatus(USART2, USART_IT_RXNE) ==SET) { USART_ClearFlag (USART2
[单片机]
第一篇:51单片机的中断和定时
自学51单片机也有两个星期了,今天第一次写关于51的博客,也是因为感觉定时和中断挺重要的,要记录一下了。 定时器/计数器 51的定时器/计数器有2个分别是T1和T0,52系列的单片机有3个定时器/计数器,T0和T1是通用定时器/计数器,定时器/计数器2(简称T2)是集定时、计数和捕获三种功能于一体,功能更强。 首先看一下这个简单点的功能,我在实验中用到的定时器的作用是高精度延时的作用,之前使用的通过while和for循环的延时方法都只是大概的时间,而定时器则可以精确设定时间在1微秒(10^-6)左右(以晶振频率为11.0592MHZ来说),其最大的时间取值为0.071,可见已经可以达到钟表的误差水准了。 定时器/计数器0和1的方
[单片机]
S3C2440的中断的那些事儿(一) 汇编的讲解
1. ARM的中断模式有7种: 1. 用户模式: 用于平时的程序运行 2. 快速中断模式: 用于高速数据传输或者通道处理, 此模式的优先级最高 最容易被触发 32个中断只能有一个快速中断触发 3. 中断模式:用于普通的中断模式 4. 管理模式:操作系统使用的保护模式 5. 数据访问终止模式: 当数据或指令与读取终止时候进入此模式 6. 系统模式: 运行具有特权的操作系统任务
[单片机]
使用MSP430F1121中断须要注意的问题
MSP430F1121(下面简称F1121)是TI公司新近推出的一款廉价的20引脚低功耗16位Flash单片机。它所具备的多种中断功能使其应用灵活,并适用于各种不同的应用领域。 不过,我们在应用开发中发现,厂家提供的技术文件虽然不少,但是对有关中断的说明却不那么详尽,这就给应用开发造成了诸多不便。为此,我们专门用程序进行了一些试验,并从中明确了一些问题。在这里,我们就把这些问题说明一下,供大家参考。 在说明这些问题之前,有必要先来看一下F1121的中断,如表1所列。 表1 F1121中断 500)this.width=500" border=0> F1121的各个中断都有对应的中断向量和中断优先级,通常被分
[单片机]