初探STM32通用定时器

发布者:清新天空最新更新时间:2015-10-29 来源: eefocus关键字:STM32  通用定时器 手机看文章 扫描二维码
随时随地手机看文章
STM32F103ZET6有TIM1和TIM8两个高级定时器,TIM2-TIM5四个通用定时器,TIM6-TIM7两个基本定时器,本文用TIM3介绍STM32的通用定时器。

STM32的定时器功能强大,本文初探通用定时器。

 

下面贴代码:

void TIM3_Int_Init(u16 arr, u16 psc)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
   
   
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    // 时钟使能
   
   
    TIM_TimeBaseStructure.TIM_Period = arr; // 设置在下一个更新事件装入活动的自动重装载寄存器周期的值
    TIM_TimeBaseStructure.TIM_Prescaler = psc;  // 设置用来作为TIMx时钟频率除数的预分频值
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割: TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // TIM向上计数模式
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // 根据指定的参数初始化TIMx的时间基数单位
   
    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);  // 使能指定的TIM3中断, 允许更新中断
   
   
    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;    // 使能TIM3中断通道
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  // 抢占优先级 0级 最高
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // 响应优先级 3级最低
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    // 使能IRQ通道
    NVIC_Init(&NVIC_InitStructure);    // 初始化NVIC寄存器

    TIM_Cmd(TIM3, ENABLE);  // 使能TIMx     
}


void TIM3_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)   // 检查TIM3更新中断是否发生
    {
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);     // 清除TIMx更新中断标志
        LED1 = !LED1;
    }
   
}

 

int main(void)
{
    delay_init();
    NVIC_Configuration();
    LED_Init();
    
    
     // 计数器的时钟频率 CK_CNT = f / (PSC[15:0]+1)   f为APB1时钟频率的2倍即72MHz
     // => 计数周期 T = 1 / CK_CNT = (PSC[15:0]+1) / f
     // => 中断溢出时间 Tout = (ARR[15:0]+1) * T    其中 (ARR[15:0]+1)为自动重装载值,即计数个数
     // CK_CNT = 72MHz / 7200 = 10KHz
     // T = 1 / 10KHz = 0.0001 s = 0.1 ms
     // Tout = 5000 * 0.1 ms = 500 ms
      
    TIM3_Int_Init(4999, 7199);  // 10KHz的计数频率,计数到5000为500ms
   
    while(1)
    {
        LED0 = !LED0;
        delay_ms(200);
    }
}
}

 

定时器的配置看看就知道,主要是看下红色部分的注释,计算中断溢出时间!


关键字:STM32  通用定时器 引用地址:初探STM32通用定时器

上一篇:Stm32编译自己总结的技巧(可能适应于任何keil编译)
下一篇:STM32之如何编译出 .lib 文件

推荐阅读最新更新时间:2024-03-16 14:37

stm32专题二十:扩展SRAM
STM32 控制器芯片内部有一定大小的 SRAM 及 FLASH 作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在 STM32芯片的外部扩展存储器了。注意,STM32F103VET6是不支持外扩SRAM的,因为引脚数量不够,而ZET6可以。 这里以IS62WV51216BLL为例: 芯片引脚图如下(40引脚来驱动): 结构框图如下: 引脚说明(要注意UB和LB,也就是高字节和低字节): 读操作时序要求: 可以看到,当给出地址后,最少要经过tAA的时间,才能去读取数据,以及输出时能后,要经过tODE的时间。只有满足这些时间要求,读到的数据才是正确的。 具体的时间参数: 同样的,写操作时
[单片机]
<font color='red'>stm32</font>专题二十:扩展SRAM
基于STM32单片机的DLP驱动电路研究
DLP投影技术是应用美国德州仪器公司开发的数字微镜元件--DMD(Digital Micromirror Device)作为主要关键处理元件以实现数字光学处理过程的技术。DLP显示的色彩清晰度高、艳丽、细腻、逼真,且为全数字显示即可靠性极高,能在各类产品(如大屏幕数字电视、公司/家庭/专业会议投影机和数码相机(DLP Cinema))中提供最佳图像效果。目前,大部分的家用或商用DLP投影机都采用了单片结构,使得其便于移动携带,因而得到越来越广泛的应用。在目前应用发展的基础上,又对其结构的精简性、携带的方便性提出了更高的要求。传统的DLP投影仪是通过DVI接口接收外部信号,并且经过信号转换传送给DLP控制器来控制DLP的显示,占用的
[单片机]
基于<font color='red'>STM32</font>单片机的DLP驱动电路研究
STM32按键控制流水灯 转换|加速|减慢
单片机源程序如下: #include stdio.h #include stm32f4xx.h #include led.h #include key.h int main(void) { int pwm_cmd; SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); LED_Init(); KEY_Init(); EXTI_Config(); while(1) { }
[单片机]
<font color='red'>STM32</font>按键控制流水灯 转换|加速|减慢
STM32+Keil 中使用printf函数
Keil不支持Host-semi机制,即不支持直接在IDE打印字符串。 那么只能通过程序向硬件串口发数据了,这样调用的时候用自定义的函数即可,也很方便,例如: void send_char_to_usart(unsigned char c){} 但是可否直接使用printf函数呢?毕竟人家都做好了,我们给他定一个打印输出的接口就可以了,答案是肯定的,看ST的官方源码: /** ****************************************************************************** * @file Lib_DEBUG/Lib_DEBUG_Example/main.c *
[单片机]
STM32单片机按键电路设计
以前GPIO上接的电路都是低电平触发的那种,新画了个板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。 图1 按键电路 于是去看一下GPIO的结构图: I/O引脚结构图 由图可以发现其实输出寄存器与输入寄存器之间在I/O引脚处是线与状态,在GPIO设置成上位输入时,其上拉电阻闭合,这时如果输出寄存器设置为0那么在IO口内部就会自己损耗电流,而这些电流的损耗是会增加功耗的。因此当GPIO设置成上拉输入时,相应的输出寄存器也设置为1. 将按键电路与I/O
[单片机]
<font color='red'>STM32</font>单片机按键电路设计
基于STM32的伺服压力机控制系统设计
1 引言 随着制造业朝着生产规模化、产品个性化的方向发展,产品型号变化加快,生产批量相对变小,多种型号共线生产、覆盖件大型化,一体化的趋势日益明显,要求压力机不仅能够高速度、高精度、大负载的运转,而且应具有更大的柔性,能迅速、方便地改变输出运动规律。以上这些不断提高的加工工艺和生产条件的多样化都促进了锻压设备行业的重大变革。在需求的推动下,目前,世界上出现伺服电机直接驱动的伺服压力机,能够满足塑性加工、难成形材料成形、复杂形状零件成形、复合成形以及高精度成形等成形工艺的要求。伺服压力机采用交流伺服电机代替普通交流电机,去除传统曲柄压力机上的飞轮和离合器,使得压力机机械结构得以简化,可靠性增强。所以研制适合不同材料加工要求的压力机数
[单片机]
基于<font color='red'>STM32</font>的伺服压力机控制系统设计
2023 STM32全国巡展,米尔限量发STM32MP135开发板优惠券
2023年9月12日至10月27日,以“STM32,不止于芯”为主题的第十六届STM32全国巡回研讨会将走进11个城市,本届研讨会为全天会议,我们将围绕STM32最新产品开展技术演讲和方案演示。 本次STM32全国研讨会,米尔电子将现场展出STM32相关的最新产品技术和应用演示,为工程师们提供共话交流共同探索开放式平台,届时,米尔电子的技术工程师将与各位嘉宾面对面深入交流。感兴趣的客户和朋友欢迎莅临参观了解! 米尔电子的明星产品将精彩亮相 米尔MYC-YF13X 核心板及开发板 基于STM32MP1系列MPU,STM32MP135高性价比入门级MPU设计平台,完整的安全生态系统让MCU开发者友好地过渡到MPU平
[单片机]
2023 <font color='red'>STM32</font>全国巡展,米尔限量发STM32MP135开发板优惠券
STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在之前的标准库中,STM32的硬件IIC非常复杂,更重要的是它并不稳定,所以都不推荐使用。 但是在我们的HAL库中,对硬件IIC做了全新的优化,使得之前软件IIC几百行代码,在HAL库中,只需要寥寥几行就可以完成 那么这篇文章将带你去感受下它的优异之处 这可能是目前关于STM32CubeMX的硬件iic 讲的最全面和详细的一篇文章之一了 所用工具: 1、芯片: STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 5、II
[单片机]
【<font color='red'>STM32</font>】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved