STM32F4开发板----定时器(004)

发布者:SerendipityDawn最新更新时间:2019-05-30 来源: eefocus关键字:STM32F4  开发板-  定时器 手机看文章 扫描二维码
随时随地手机看文章

定时器

定时器功能:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和pwm)


1.通用定时器

1.1 初始化基本定时参数

/**

  * @brief  TIM Time Base Init structure definition  

  * @note   This structure is used with all TIMx except for TIM6 and TIM7.  

  */


typedef struct

{

  uint16_t TIM_Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.

                                       This parameter can be a number between 0x0000 and 0xFFFF */

  uint16_t TIM_CounterMode;       /*!< Specifies the counter mode.

                                       This parameter can be a value of @ref TIM_Counter_Mode */

  uint32_t TIM_Period;            /*!< Specifies the period value to be loaded into the active

                                       Auto-Reload Register at the next update event.

                                       This parameter must be a number between 0x0000 and 0xFFFF.  */

  uint16_t TIM_ClockDivision;     /*!< Specifies the clock division.

                                      This parameter can be a value of @ref TIM_Clock_Division_CKD */

  uint8_t TIM_RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter

                                       reaches zero, an update event is generated and counting restarts

                                       from the RCR value (N).

                                       This means in PWM mode that (N+1) corresponds to:

                                          - the number of PWM periods in edge-aligned mode

                                          - the number of half PWM period in center-aligned mode

                                       This parameter must be a number between 0x00 and 0xFF.

                                       @note This parameter is valid only for TIM1 and TIM8. */

} TIM_TimeBaseInitTypeDef;


1.2 输出比较参数

/**

  * @brief  TIM Output Compare Init structure definition  

  */


typedef struct

{

  uint16_t TIM_OCMode;        /*!< Specifies the TIM mode.

                                   This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */

  uint16_t TIM_OutputState;   /*!< Specifies the TIM Output Compare state.

                                   This parameter can be a value of @ref TIM_Output_Compare_State */

  uint16_t TIM_OutputNState;  /*!< Specifies the TIM complementary Output Compare state.

                                   This parameter can be a value of @ref TIM_Output_Compare_N_State

                                   @note This parameter is valid only for TIM1 and TIM8. */

  uint32_t TIM_Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register.

                                   This parameter can be a number between 0x0000 and 0xFFFF */

  uint16_t TIM_OCPolarity;    /*!< Specifies the output polarity.

                                   This parameter can be a value of @ref TIM_Output_Compare_Polarity */

  uint16_t TIM_OCNPolarity;   /*!< Specifies the complementary output polarity.

                                   This parameter can be a value of @ref TIM_Output_Compare_N_Polarity

                                   @note This parameter is valid only for TIM1 and TIM8. */

  uint16_t TIM_OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.

                                   This parameter can be a value of @ref TIM_Output_Compare_Idle_State

                                   @note This parameter is valid only for TIM1 and TIM8. */

  uint16_t TIM_OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.

                                   This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State

                                   @note This parameter is valid only for TIM1 and TIM8. */

} TIM_OCInitTypeDef;



1.3 输入比较参数初始化

/**

  * @brief  TIM Input Capture Init structure definition  

  */


typedef struct

{


  uint16_t TIM_Channel;      /*!< Specifies the TIM channel.

                                  This parameter can be a value of @ref TIM_Channel */

  uint16_t TIM_ICPolarity;   /*!< Specifies the active edge of the input signal.

                                  This parameter can be a value of @ref TIM_Input_Capture_Polarity */

  uint16_t TIM_ICSelection;  /*!< Specifies the input.

                                  This parameter can be a value of @ref TIM_Input_Capture_Selection */

  uint16_t TIM_ICPrescaler;  /*!< Specifies the Input Capture Prescaler.

                                  This parameter can be a value of @ref TIM_Input_Capture_Prescaler */

  uint16_t TIM_ICFilter;     /*!< Specifies the input capture filter.

                                  This parameter can be a number between 0x0 and 0xF */

} TIM_ICInitTypeDef;



1.4 TIM1 and TIM8 高级定时器死区初始化

/**

  * @brief  BDTR structure definition

  * @note   This structure is used only with TIM1 and TIM8.    

  */


typedef struct

{


  uint16_t TIM_OSSRState;        /*!< Specifies the Off-State selection used in Run mode.

                                      This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */


  uint16_t TIM_OSSIState;        /*!< Specifies the Off-State used in Idle state.

                                      This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */


  uint16_t TIM_LOCKLevel;        /*!< Specifies the LOCK level parameters.

                                      This parameter can be a value of @ref TIM_Lock_level */


  uint16_t TIM_DeadTime;         /*!< Specifies the delay time between the switching-off and the

                                      switching-on of the outputs.

                                      This parameter can be a number between 0x00 and 0xFF  */


  uint16_t TIM_Break;            /*!< Specifies whether the TIM Break input is enabled or not.

                                      This parameter can be a value of @ref TIM_Break_Input_enable_disable */


  uint16_t TIM_BreakPolarity;    /*!< Specifies the TIM Break Input pin polarity.

                                      This parameter can be a value of @ref TIM_Break_Polarity */

[1] [2]
关键字:STM32F4  开发板-  定时器 引用地址:STM32F4开发板----定时器(004)

上一篇:STM32F4开发板----ADC(005)
下一篇:STM32F4开发板----外部中断(003)

推荐阅读最新更新时间:2024-11-17 12:52

TQ2416开发板TIMER中断应用控制设备
本期介绍的新一代ARM9开发板TQ2416的控制设备代码应用,使用TIMER代码,进行对设备的时段控制。Timer语法,定时器代码,功能是在指定的时间间隔内反复触发指定窗口的定时器事件。   下面是资深博主dengchonglin分享的关于TIMER代码如何应用在TQ2416开发板。   如果需要使用 TQ2416开发板 做一个控制设备,需要实现 US 级别的中断~!   而且还不能用 FOR 循环来实现,因为FOR循环是暂用资源的计时。这样会使开发板的CPU开销太大,无法承载,使用TIMER代码可以更好地运行控制程序。   看了一下 DATASHEET 里面有 5 个TIMER TIMER0~3 PWM 输
[单片机]
关于stm32定时器定时周期计算
1.TIMx(1-8),在库设置默认的情况下,都是72M的时钟; 名为TIMx的有八个,其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在 APB1总线上。其中TIM1&TIM8称为高级控制定时器(advanced control timer).他们所在的APB2总线也比APB1总线要好。APB2可以工作在72MHz下,而APB1最大是36MHz。 定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器。 下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系
[单片机]
关于stm32<font color='red'>定时器</font>定时周期计算
S3C2440定时器相关配置
定时器配置的相关寄存器如下(以s3c2440手册顺序列出) 1. TCFG0:定时器配置寄存器0 功能:定义器的死区长度及预标定器值的设置 说明:bit 设置定时器0和1的预标定器值,bit 设置定时器2、3和4的预标定器值。 2. TCFG1:定时器配置寄存器1 功能:DMA方式选择、时钟分频以及外部时钟选择 注意:bit =0000时,不选择DMA(初学者) 3. TCON:定时器控制寄存器 功能:自动重载是否开启,输出反相是否开启,手动更新设置,定时器的开启和停止。 4. TCNTB:定时器缓存寄存器 功能:存储定时器初始计数值。当递减计数器减为0时,定义时器中断请求生成通知CPU定时器操作完成。此时相应的TCNTB的值装载
[单片机]
S3C2440 开发板实战(2):start.S初认识 + SDRAM配置 + 重定位
1、看门狗部分 废话不多说,直接开始配置,首先就是要关闭暂时不使用的看门狗,找到看门狗的寄存器:WTCON,将其第0位置0,即禁用看门狗,即: # define pWTCON 0x53000000 //WTCON地址 ldr r0, =pWTCON mov r1, #0x0 str r1, //关闭看门狗 2、时钟部分 在S3C2440中有三种时钟频率,分别为FCLK, HCLK, PCLK,分别控制不同种类的外设,在时钟树中可以进行查找,这里不做过多赘述,在以后的博客中有应用。 从芯片手册中查找FCLK, HCLK, PCLK 的最高频率,在范围内我们选择设置FCLK = 400MHZ, H
[单片机]
S3C2440 <font color='red'>开发板</font>实战(2):start.S初认识 + SDRAM配置 + 重定位
基于STM32单片机高级控制定时器TIM1和TIM8的功能解析
高级控制定时器(TIM1 和TIM8) TIM1和TIM8定时器的功能包括: ● 16位向上、向下、向上/ 下自动装载计数器 ● 16位可编程( 可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535 之间的任意数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ●使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA : ─ 更新:计数器向上溢出/ 向下溢出,计数器初始化(
[单片机]
基于STM32单片机高级控制<font color='red'>定时器</font>TIM1和TIM8的功能解析
STM32F4 SPI通信自发自收使用经验
SPI的配置函数如下 void SPI_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; SPI_InitTypeDef SPI_InitStructure; /* Peripheral Clock Enable -------------------------------------------------*/ /* Enable the SPI clock */ SPIx_CLK_INIT(SPIx_CLK, ENABLE); /* Enable GPIO cloc
[单片机]
51单片机 定时器时钟
1.main.c 注:Sec,Min,Hour可不进行赋值 #include REGX52.H #include Delay.h #include LCD1602.h #include Timer0.h unsigned char Sec=55,Min=59,Hour=23; void main() { LCD_Init(); Timer0Init(); LCD_ShowString(1,1, Clock: ); LCD_ShowString(2,1, : : ); while(1) { LCD_ShowNum(2,1,Hour,2); LCD_Sh
[单片机]
STM32 定时器输出比较非主动模式
STM32的定时器可以工作在输出比较非主动模式TIM_OCMode_Inactive,这个模式下,当定时器的计数值达到比较值时就会强制将引脚电平拉低。但是由于定时器通道对应的引脚配置成GPIO_Mode_AF_PP时,它默认的电平时低电平,如果这时候工作在输出比较非主动模式,即时强制拉低,这样的话引脚一直是低电平,完全没有现象。由于水平所限,我也不知道该如何使用定时器输出比较非主动模式才能体现它的 非主动 这个特性。我下面要讲的例子虽然用的是定时器输出比较非主动模式来输出PWM波,但是完全体现不出这个特格特点来。还请见谅! 下面就讲讲定时器在输出比较非主动模式下如何生成PWM波的。还是基于我自己的规范工程! 1、工程的修改 1
[单片机]
STM32 <font color='red'>定时器</font>输出比较非主动模式
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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