0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习STM32F103的定时器功能

CHANBAEK 来源: 三勺工作室 作者:杨可困 2023-10-24 15:49 次阅读

踩坑STM32F103系列-----定时器

三勺最近在学习STM32F103的定时器功能,本文主要解释在配置通用、基本、高级定时器寄存器实现相应功能时遇到的一些问题。

目标一:基本定时器的1ms定时功能

根据技术手册设置:

1/**
 2  * @brief  定时器6 1ms定时
 3  * @param  None
 4  * @retval None
 5  */
 6void Cbsp::time::time_basic(void)
 7{
 8    mod.nvic.MY_NVIC_Init(3,3,TIM6_IRQn,2);
 9    //=====定时器6时钟======//
10    RCC- >APB1ENR |= 1< < 4;
11
12    //=====定时器6初始化=====//
13    //-自动装载-//
14    TIM6- >CR1 |= 1< < 7;
15
16    //-更新中断使能-//
17    TIM6- >DIER |= 1< < 0;
18    //-设置计数周期-//
19    //TIM6- >CNT = 1000; 
20    //-自动重装寄存器-//
21    TIM6- >ARR = 1000-1;
22    //-预分频寄存器-//
23    TIM6- >PSC = 36-1;
24    //-开启计数器使能-//
25    TIM6- >CR1 |= 1< < 0;
26}

在中断服务函数中翻转GPIOC13的电平。

使用逻辑分析仪分析:

现象1 :根据逻辑分析仪的采样结果,发现定时时间并不是1ms,而实2ms。

原因和步骤 :按照计算公式APB1的时钟为36M,定时器6设置36分频,每次累加的时间为1us,ARR寄存器为1000,则定时时间为1ms。出现这种情况唯一的可能就是定时器的时钟频率是72M导致的。

查看数据手册的时钟章节框图可以发现端倪,在APB136M时钟后,由于满足了APB1预分配不为1的条件,定时器时钟进行了倍频。

图片

因此修改定时器的分配系数为72-1,再用逻辑分析仪抓取波形,定时时间正确。

图片

目标二:高级定时器3路互补输出+死区

根据技术手册设置:

1void Cbsp::time::tim_senior_PWM(void)
 2{
 3    RCC- >APB2ENR |= 1< < 2;//*A*//
 4    RCC- >APB2ENR |= 1< < 3;//*B*//
 5
 6    //=====初始化GPIO=====//
 7    GPIOA- >CRH = 0;
 8    GPIOB- >CRH = 0;
 9    GPIOA- >CRH |= 0x0B< < (8-8)*4;
10    GPIOA- >CRH |= 0x0B< < (9-8)*4;
11    GPIOA- >CRH |= 0x0B< < (10-8)*4;
12    GPIOB- >CRH |= 0x0B< < (13-8)*4;
13    GPIOB- >CRH |= 0x0B< < (14-8)*4;
14    GPIOB- >CRH |= 0x0B< < (15-8)*4;
15
16    //=====开启定时器1时钟=====//
17    RCC- >APB2ENR |= 1< < 11;
18    //=====配置定时器 时基单元=====//
19
20    //+预分频寄存器+//
21    TIM1- >PSC = 72-1;
22    //+自动重装载值+//
23    TIM1- >ARR = 100 -1;
24    //+捕获/比较寄存器+//
25    //-设置为PWM1模式-//
26    TIM1- >CCMR1 |= (0x6)< < (4);
27    TIM1- >CCMR1 |= (0x6)< < (12);
28    TIM1- >CCMR2 |= (0x6)< < (4);
29    //-使能预装在寄存器-//
30    TIM1- >CCMR1 |= (1)< < (11);
31    TIM1- >CCMR1 |= (1)< < (3);
32    TIM1- >CCMR2 |= (1)< < (3);
33
34    //-开启自动重装载允许位-//
35    TIM1- >CR1 |= (0x1)< < 7;  
36    //设置向上计数//
37    TIM1- >CR1 &= ~((0x1)< < 4);
38    //设置时钟分频因子
39    //TIM1- >CR1 |= ((0x2)< < 8);
40
41    //+开启通道输出+//
42    TIM1- >CCER |= 1< < 0;//CC1
43    TIM1- >CCER |= 1< < 4;//CC2
44    TIM1- >CCER |= 1< < 8;//CC3
45
46    TIM1- >CCER |= 1< < 2;//CC1N
47    TIM1- >CCER |= 1< < 6;//CC2N
48    TIM1- >CCER |= 1< < 10;//CC3N  
49
50    //-设置各通道占空比-//
51    TIM1- >CCR1 = 50;
52    TIM1- >CCR2 = 10;
53    TIM1- >CCR3 = 10;
54    //产生更新事件
55    TIM1- >EGR |= 1< < 0;
56
57    //-死区时间设置-//
58    TIM1- >BDTR |= ((0x7)< < 5);
59    TIM1- >BDTR |= 1;
60    //-主输出使能-//
61    TIM1- >BDTR |= ((0x1)< < 15);
62    //-开启定时器-//
63    TIM1- >CR1 |= (0x1)< < 0;
64}

现象: 一点波形也没有,都是低电平。

原因和步骤:

第一,代码的第61行MOE位主输出使能,忘记设置。

第二,代码的第58、59行,死区时间设置的比波形还长导致一直输出的是低电平。

修正后波形如下:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117721
  • 中断
    +关注

    关注

    5

    文章

    884

    浏览量

    41023
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112037
  • STM32F103
    +关注

    关注

    33

    文章

    474

    浏览量

    62573
收藏 人收藏

    评论

    相关推荐

    STM32F103定时器学习

    STM32F103定时器怎么学习
    发表于 12-11 17:21

    了解STM32F103定时器

    STM32F103定时器配置##一、什么是定时器定时器,顾名思义,就是用于定时或计数,它其实就是一个加1计数
    发表于 08-13 06:29

    讲解STM32F103定时器定时-中断功能 精选资料分享

    今天讲解STM32F103定时器定时-中断功能,在昨天定时器延时的软件工程上添加TIM3定时
    发表于 08-16 07:23

    STM32f103系列的定时器

    简介STM32f103系列一共有8个16位的定时器;其中TIM6、TIM7是基本定时器,TIM2、3、4、5是通用定时器,TIM1、8是高级定时器
    发表于 08-18 08:05

    STM32F103系统定时器学习笔记

    **STM32F103系统定时器学习笔记首先非常感谢秉火和正点原子两个团队为我们提供学习STMM32的丰富资料及详细教程。为加深记忆,也方便同行新手们一同
    发表于 08-18 08:12

    STM32F103定时器 精选资料分享

    一.STM32F103共有11个定时器2个高级定时器(TIM1、TIM8),4个普通定时器(TIM2~5)、2个基本定时器(TIM6、TIM
    发表于 08-19 08:56

    stm32f103芯片的定时器功能等级

    概述对于stm32f103芯片,其中的定时器总共有8个,功能上可以分为三个等级的定时器: -高级控制定时器(TIM1,TIM8) 。 16位
    发表于 08-19 07:58

    小白求助,求stm32f103高级定时器功能框图笔记

    小白求助,求stm32f103高级定时器功能框图笔记
    发表于 11-23 06:11

    怎样去配置STM32F103通用定时器定时中断

    STM32F103通用TIMx定时器功能包括哪些?怎样去配置STM32F103通用定时器定时
    发表于 11-23 07:20

    STM32F103的各类定时器有哪些相同点与不同点呢

    STM32F103通用定时器有何功能呢?STM32F103的各类定时器有哪些相同点与不同点呢?
    发表于 11-23 08:10

    萌新求助,求STM32F103定时器学习笔记

    萌新求助,求STM32F103定时器学习笔记
    发表于 11-24 06:02

    STM32F103通用定时器功能特点是什么?

    STM32F103通用定时器功能特点是什么?
    发表于 11-24 07:59

    STM32F103的基本定时器有何功能

    STM32定时器可分为哪几类?STM32F103的基本定时器有何功能呢?
    发表于 11-24 06:46

    详解STM32F103的高级定时器

    STM32F103的高级定时器功能主要有哪些呢?STM32F103高级定时器的结构是怎样组成的呢?
    发表于 11-24 07:25

    基于STM32F103系列单片机的11个定时器解析

    STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗
    发表于 10-23 15:54 6584次阅读
    基于<b class='flag-5'>STM32F103</b>系列单片机的11个<b class='flag-5'>定时器</b>解析