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行,死区时间设置的比波形还长导致一直输出的是低电平。

修正后波形如下:

图片

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

    关注

    31

    文章

    5310

    浏览量

    119989
  • 中断
    +关注

    关注

    5

    文章

    895

    浏览量

    41388
  • 定时器
    +关注

    关注

    23

    文章

    3237

    浏览量

    114450
  • STM32F103
    +关注

    关注

    33

    文章

    476

    浏览量

    63471
收藏 人收藏

    评论

    相关推荐

    STM32F103定时器学习

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

    了解STM32F103定时器

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

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

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

    stm32f103芯片的定时器功能等级

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

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

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

    详解STM32F103的高级定时器

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

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

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

    STM32F103定时器触发ADC官方程序免费下载

    本文档的主要内容详细介绍的是STM32F103定时器触发ADC官方程序免费下载
    发表于 10-30 15:40 71次下载

    STM32F103系列单片机中的定时器工作原理解析

    STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗
    发表于 11-07 16:30 1.4w次阅读
    <b class='flag-5'>STM32F103</b>系列单片机中的<b class='flag-5'>定时器</b>工作原理解析

    使用STM32F103单片机实现定时器实验的详细资料说明

    本文档的主要内容详细介绍的是使用STM32F103单片机实现定时器实验的详细资料说明。
    发表于 04-07 08:00 5次下载
    使用<b class='flag-5'>STM32F103</b>单片机实现<b class='flag-5'>定时器</b>实验的详细资料说明

    STM32F103单片机TIM1定时器

    毕业后工作后首次使用STM32F103单片机(这里将作为日常学习与开发的调试记录)调试呼吸灯功能使用TIM1\2\3\4\5定时器。在调试过程中使用相同的配置,对
    发表于 11-18 15:06 14次下载
    <b class='flag-5'>STM32F103</b>单片机TIM1<b class='flag-5'>定时器</b>

    STM32F103-定时器

    STM32F103系列的单片机一共有11个定时器,其中:1个系统嘀嗒定时器2个看门狗定时器2个基本定时器(TIM6和TIM7)4个通用
    发表于 12-31 19:14 14次下载
    <b class='flag-5'>STM32F103</b>-<b class='flag-5'>定时器</b>

    STM32F03定时器基础知识基本简介

    STM32F103微控制定时器分为系统定时器(SysTick)、“看门狗”定时器(WatchDog)、基本
    的头像 发表于 07-03 17:08 3626次阅读
    <b class='flag-5'>STM32F</b>03<b class='flag-5'>定时器</b>基础知识基本简介

    学习STM32F103的DAC功能

    三勺最近在学习STM32F103的DAC功能,本文主要解释在配置DAC寄存实现相应功能时遇到的一些问题。
    的头像 发表于 10-24 16:00 2586次阅读
    <b class='flag-5'>学习</b><b class='flag-5'>STM32F103</b>的DAC<b class='flag-5'>功能</b>

    学习STM32F103的ADC功能

    三勺最近在学习STM32F103的ADC功能,居然连最简单的独立模式的单通道的电压采集都不能实现,这就不能忍了,这是对智商的侮辱。
    的头像 发表于 10-24 16:06 2125次阅读
    <b class='flag-5'>学习</b><b class='flag-5'>STM32F103</b>的ADC<b class='flag-5'>功能</b>