datasheet

15-HAL库之定时器学习

2019-08-16来源: eefocus关键字:HAL库  定时器  计数器

1.基本定时器(TIM6/TIM7)

包含时钟源(CK_INT),1个16位自动重载递增计数器(CK_ARR),1个16位可编程预分频器(CK_PSC),计数器寄存器(CK_CNT),触发DAC的控制器组成。时钟源为APB外设时钟,定时事件生成事件主要由CK_PSC和CK_ARR两个寄存器值觉得。例如需要1s延时,时钟源周期为100us,设置CK_ARR为9999,CK_CNT从0开始到9999,总共技术10000次,即1s后更新事件和中断标志。


 


typedef struct

{

   uint32_t Prescaler;           //预分频系数,0~65535,时钟源经过该系数才是定时器时钟

   uint32_t CounterMode;         //计数模式,向上或向下,基本定时器只有向上

   uint32_t Period;              //时钟周期

   uint32_t ClockDivision;       //时钟分频,基本定时器无此功能

   uint32_t RepetitionCounter;   //重复计数,高级控制定时器所用

   uint32_t AutoReloadPreload;   //自动预装载值

}TIM_Base_InitTypeDef;

应用例子如下:


#include "basic_tim.h"

TIM_HandleTypeDef Basic_Tim6;

void Basic_Tim_Config(void){

HAL_TIM_Base_MspInit(&Basic_Tim6);

__HAL_RCC_TIM6_CLK_ENABLE();

Basic_Tim6.Instance=TIM6;

Basic_Tim6.Init.Prescaler=10799;  //TIM6频率=APB2/(Prescaler+1)=10000Hz

Basic_Tim6.Init.Period=9999; //累计10000个周期后产生中断(1s)

Basic_Tim6.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE;

HAL_TIM_Base_Init(&Basic_Tim6);

 

HAL_NVIC_SetPriority(TIM6_DAC_IRQn,1,1);

HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);  //优先级配置

}

2.高级定时器(TIM1/TIM8)


包含1个16位自动重载计数器,由可编程预分频器驱动,多达6个独立通道(6路输出控制,4路输入捕获),在基础定时器的基础上引入了外部引脚,可用于多种用途,例如测量输入信号的脉冲宽度(输入捕获),生成输出波形(输出比较,PWM等)。发生更新(计数器上溢/下溢、计数器初始化),突发事件,输入捕获,输出比较时会生成中断/DMA请求。


3.通用定时器


TIM2和TIM5是32位递增/递减/递增递减自动重载计数器,TIM3和TIM4是16位,4个独立通道。


TIM9~TIM15是16位自动重载递增计数器,2个独立通道。

关键字:HAL库  定时器  计数器

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic471328.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:14-HAL库之I2C通信
下一篇:HAL库之485+DMA通信(STM32F746)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

16.HAL库之SPI和QSPI

沿进行数据变化。DDR模式:在该模式下,指令阶段在SCLK下降沿发送数据,而在地址,交替字节,数据阶段在SCLK上升沿和下降沿均发送数据。双闪存模式:使用两个外部SPI四线,可将flash扩大一倍。QSPI配置:时钟使能,管脚定义,QSPI配置,flash初始化,QSPI读/写函数定义。void Qspi_Config(){ __HAL_RCC_QSPI_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); Flash_GPIO.Pin=GPIO_PIN_2; Flash_GPIO.Mode=GPIO_MODE_AF_PP
发表于 2019-08-16
16.HAL库之SPI和QSPI

HAL库之485+DMA通信(STM32F746)

(uint32_t bound){  __HAL_RCC_GPIOD_CLK_ENABLE();  __HAL_RCC_USART2_CLK_ENABLE();   GPIO_InitTypeDef GPIO_Init2;   GPIO_Init2.Pin = GPIO_PIN_4;              //485_RTS  GPIO_Init2.Mode =GPIO_MODE_OUTPUT_PP;  GPIO_Init2.Pull = GPIO_NOPULL;  GPIO_Init2.Speed
发表于 2019-08-16
HAL库之485+DMA通信(STM32F746)

14-HAL库之I2C通信

发送停止传输信号P。读数据时,主机向从机发应答信号,当主机希望停止接收数据时,发送非应答信号。起始信号和停止信号见上图。数据有效性见上图。2.基于HAL库的I2C配置步骤:时钟使能—GPIO管脚配置—I2C配置初始化:void MyI2C_Init(void){ __HAL_RCC_GPIOB_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_6;  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;  GPIO_InitStruct.Pull
发表于 2019-08-16
14-HAL库之I2C通信

13-HAL库DMA系统总结

。2.DMA相关函数解析关于DMA,ST官方提供了HAL库(封装函数)和LL库(直接操作寄存器)。和GPIO定义类似,需要先使能相关时钟,定义句柄结构体DMA_HandleTypeDef mydma2,随后进行DMA的各项配置,最后进行初始化。typedef struct __DMA_HandleTypeDef{    DMA_Stream_TypeDef          *Instance;                       
发表于 2019-08-16
13-HAL库DMA系统总结

12-HAL库串口通信总结

1.定义了三种传输方式:阻塞传输,中断传输、DMA传输HAL_UART_Transmit;  HAL_UART_ReceiveHAL_UART_Transmit_IT;    HAL_UART_Receive_ITHAL_UART_Transmit_DMA;    HAL_UART_Receive_DMA此外还定义了两个中断回调函数,供中断和DMA使用,分别在数据传输一半和完成时使用voidHAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);void HAL_UART_TxHal
发表于 2019-08-16

5.HAL库之时钟系统及定时器SYSTICK

; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; //时钟源选择PLLCLK=216MHz  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; //分频系数AHBPRESC=1,得到HCLK=216MHz  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;//分频系数APB1PRESC=4,得到APB1外设时钟54MHz,定时器108MHz  RCC_ClkInitStruct.APB2CLKDivider
发表于 2019-08-16
5.HAL库之时钟系统及定时器SYSTICK

小广播

何立民专栏

单片机及嵌入式宝典

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

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