12.21

今天主要学习了通用定时器。与滴答定时器基本类似。区别就是一个是在核心内部的NVIC 中,一个是片内外设。

定时器主要有三类,一类是基本时器,一类是通用定时器,一类是高级定时器。一类比一类高级。

基本定时器与通用定时器的区别是:基本定时器没有捕获/比较通道。

高级定时器与通用定时器的区别是:高级定时器有互补输出。

函数实现过程:

一、定时器配置初始化

void TIME3_config(void) 

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;//定义一个定时器的结构体

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//使能时钟,在RCC.c里找

TIM_TimeBaseInitStruct.TIM_Prescaler = 900-1;      //1-65535  //分频赋值

TIM_TimeBaseInitStruct.TIM_Period    = 10000 -1;    //1-65535  //重载值

TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;  // 计数模式向上

TIM_TimeBaseInitStruct.TIM_ClockDivision  = TIM_CKD_DIV1;//时钟源分频,一般固定选DIVI1

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);//初始化定时器

TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);        //定时器使能

}


二、编辑中断函数

void TIM3_IRQHandler(void)  //NVIC 里的中断函数

{

if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)//判断中断标致位

{

中断函数

TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清理中断标志位

}

}

三、中断优先级设置

void NVIC_tim3_config(void)

{

NVIC_InitTypeDef NVIC_InitStruct;

NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn;      //stm32f4xx.h里找的

NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStruct);

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 姓名:周崇杰 学号:16040120059 专业:机械设计制造及其自动化 转载自:http://blog.csd...
    CJbaby阅读 4,712评论 0 0
  • STM32F429三大类定时器:高级控制、通用、基本;计数类型:递增、递减、递增或递减;预分频系数:1-65536...
    王春禹阅读 1,618评论 0 0
  • 有一次做一个东西,为了尽量不占用CPU的处理数据时间,所以就使用DMA接收串口的数据,但是呢问题来了.,,,,,怎...
    杨奉武阅读 8,378评论 0 1
  • 游戏1:从哪儿开始 讲有连续性的童话故事,每天讲到哪儿,都让他记住。第二天开始讲时,可以先问问他:“昨天讲到哪儿了...
    时光翩然阅读 1,118评论 0 0
  • 以前你们在我身边我是最傻的,现在我却扮演着最清醒的 眼泪 眼泪在眼眶里打滚的滋味一点都不好受 似落非落 就像凋零的...
    Phoebe_l1l阅读 910评论 0 0