假设 系统时钟是72Mhz,TIM1 是由PCLK2 (72MHz)得到,TIM2-7是由 PCLK1 得到
关键是设定 时钟预分频数,自动重装载寄存器周期的值
/*每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2表明TIM3CLK为72MHz。因此,每次进入中
断服务程序间隔时间为
时间=1/频率×次数
((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒 */
定时器的基本设置
1、 TIM_TimeBaseStructure.TIM_Prescaler = 7199;//时钟预分频数 例如 :时
钟频率=72/(时钟预分频+1)
2、TIM_TimeBaseStructure.TIM_Period = 9999; // 自动重装载寄存器周期的值(定时
时间) 累计 0xFFFF个频率后产生个更新或者中断(也是说定时时间到)
3、 TIM_TimeBaseStructure.TIM_CounterMode = TIM1_CounterMode_Up; //定时器
模式 向上计数
4、 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //时间分割值
5、 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//初始化定时器2
6、 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //打开中断 溢出中断
7、 TIM_Cmd(TIM2, ENABLE);//打开定时器
或者:
TIM_TimeBaseStructure.TIM_Prescaler = 35999;//分频35999 72M/
(35999+1)/2=1Hz 1秒中断溢出一次
TIM_TimeBaseStructure.TIM_Period = 2000; //计数值2000
((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+35999)/72M)*(1+2000)=1秒 */
关键字:STM32 定时器 时间计算
引用地址:
STM32学习之:定时器时间计算
推荐阅读最新更新时间:2024-03-16 16:17
通用同步异步收发器 (USART)的使用
今日实验:实现STM32F407开发板与PC端的串口通信 两台计算机进行通信时,最少可以只要三根线,分别为RXD、TXD、GND ;单片机也是一个微型计算机。 前期知识 关于TTL电平 TTL是Transistor-Transistor Logic,即晶体管-晶体管逻辑的简称,它是计算机处理器控制的设备内部各部分之间通信的标准技术。TTL电平信号应用广泛,是因为其数据表示采用二进制规定,+5V等价于逻辑”1”,0V等价于逻辑”0”。 数字电路中,由TTL电子元器件组成电路的电平是个电压范围,规定: 输出高电平 =2.4V,输出低电平 =0.4V; 输入高电平 =2.0V,输入低电平 =0.8V。 关于RS232电平 R
[单片机]
基于STM32、FreeRTOS实现硬件看门狗+软件看门狗监测多任务的方法
我们都知道硬件看门狗的目的:是用来监测系统,防止系统死机,并在死机的情况下使系统复位重启。 在RTOS操作系统中,如果任务(线程)较多,出现高优先级任务长时间占用CPU资源,低优先级任务长时间得不到执行这种想象,那么我们的系统就是具有Bug的系统。 如上描述,假如我们的线程没有死机,只是长时间得不到执行。在这种异常情况下,我们又不希望系统复位,只希望执行特定代码,那我们该如何来避免这种问题呢? Ⅰ 关于看门狗 硬件看门狗:利用一个定时器计数电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时“喂狗”。 因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内
[单片机]
51系列单片机定时器的实用方法
定时/计数器 0 和定时/计数器1都有4种定时模式。 16位定时器对内部机器周期进行技术,机器周期加1,定时器值加1,1MHZ模式下,一个机器周期为1us 。 定时器工作模式寄存器TMOD,不可位寻址,需整体赋值,高4位用于定时器1,第四位用于定时器0。 C/T:为定时器功能选择位,C/T=0对机器周期计数,C/T=1,对外部脉冲计数。 GATE:门控位,GATE=0,软件置位TRn即可启动计时器,GATE=1需外部中断引脚为高电平时才能软件置位TRn启动计时器,一般取GATE=0。 定时器控制寄存器TCON: TFn:Tn溢出标志位,当定时器溢出时,硬件置位TFn,中断使能的情况下,申请中断,CPU响应中断后,硬件自
[单片机]
什么是中断 stm32中断服务函数
中断概念: 中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的时间处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。 中断作用: 计算机与外设之间的联系一般通过两种方法:一是通过CPU控制来进行数据的传送;二是在专门的芯片控制下进行数据的传送。我们所说的DMA,就是不用CPU控制,外设同内存之间相互传送数据的通道,在这种方式下,外设利用DMA通道直接将数据写入存储器或将数据从存储器中读出,而不用CPU参与,系统的速度会大大增加。 你打开stm32的启动文件,例如startup_stm32f10x_hd.s 里面有很多中断跳转的
[单片机]
关于STM32软硬件兼容性相关的知识
Ⅰ、写在前面 很多朋友初学STM32的时候,对STM32芯片很多相关知识都不是很了解,导致了在学习的路上很迷茫,甚至半途放弃。希望本文的内容对初学的朋友有一定帮助。 常见问题: 1.我开发板是STM32F103ZE芯片,但网上找到的软件工程基于STM32F103R8芯片的,我能直接将工程下载并调试吗? 2.我有 STM32F205 R8的原理图和封装库,但现在需要画STM32F405RC芯片的板子,能直接替换使用吗? 以上问题在你阅读本文之后就会得到比较明确的答案。 关于本文的更多详情请往下看。 Ⅱ、本文要点 从本文的标题可以看得出来,主要是站在“STM32兼容性”的角度来分析问题。 在开发STM32项目中
[单片机]
STM32单片机ADC库函数的定义和使用方法
ADC的基本概念希望各位网友查阅相应的手册,上面对ADC有比较详尽的介绍,包括误差的分析和消除。这里主要介绍ADC的基本库函数的定义和使用。 1.ADC_DeInit函数的功能是将外设ADCx的全部寄存器重设为默认值。 ADC_DeInit(ADC2); 2.ADC_Init函数的功能是根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器。其中ADC_InitTypeDef定义在stm32f10x_adc.h中。其结构体如下所示: typedef struct { u32 ADC_Mode;//可以设置ADC_Mode FunctionalState ADC_ScanConvMode;//规定了模数转换工
[单片机]
STM32之窗口看门狗原理
stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立看门狗是限制喂狗时间在0-x内,x由你的相关寄存器决定。喂狗的时间不能过晚。 窗口看门狗,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。喂狗的时间不能过早也不能过晚。 图1 窗口看门狗的 上窗口就是配置寄存器WWDG- CFR里设定的W ; 下窗口是固定的0x40; 当窗口看门狗的计数器在上窗口值之外,或是低于下窗口值都会产生复位。 图2 && 上窗口的值可以只有设定,7位二进制数最大只可以设定为127(0x7F),最小又必须大于下窗口的0x40,所以其
[单片机]
【STM32】DAC基本原理、寄存器、库函数(DAC一般步骤)
STM32F1xx官方资料: 《STM32中文参考手册V10》-第12章 数字模拟转换DAC DAC的基本介绍 DAC的基本定义 Digital-to-Analog Converter的缩写。指数/模转换器或者数字/模拟转换器。是指将离散的数字信号转换为连续变量的模拟信号的器件。 典型的数字模拟转换器将表示一定比例电压值的数字信号转换为模拟信号。 STM32的DAC模块是12位数字输入,电压输出型的DAC。 DAC的主要特征 2个DAC转换器:每个转换器对应1个输出通道; 8位或者12位单调输出; 12位模式下数据左对齐或者右对齐; 同步更新功能; 噪声波形生成; 三角波形生成; 双DAC通道同时或者分别转换;
[单片机]