2016 - 2024

感恩一路有你

tim小程序在哪里打开 STM32实现定时与计数的方法有哪些?

浏览量:4557 时间:2023-07-07 21:42:45 作者:采采

STM32实现定时与计数的方法有哪些?

(一)系统时钟(SysTick)

设置的很很简单,以下是出现1ms网络中断的设置,和有一种10ms显示延迟的函数:

voidRCC_Configuration(void)

{

RCC_ClocksTypeDefRCC_ClockFreqSystemInit()//源自system_stm32f10x.c文件,只要动态创建此函数,则可成功RCC的配置.

RCC_GetClocksFreq(ampRCC_ClockFreq)

//SYSTICK分频--1ms的系统时钟中断

if(SysTick_Config(SystemFrequency/1000))

{

while(1)//Captureerror

}

}

voidSysTick_Handler(void)//在自动去处理函数中的程序

{

while(tim)

{

tim--

}

}

//动态创建程序:

Delay_Ms(10)

不过,前提是要设置好,变量tim要设置里成volatile类型的。

(二)第二种牵涉到定时器定时计数时间(TIMx)

/*TIM3时钟配置*/

TIM_TimeBaseStructure.TIM_Prescaler2//预分频(时钟分频)72M/(21)24M

TIM_TimeBaseStructure.TIM_CounterModeTIM_CounterMode_Up//向上升计数法

TIM_TimeBaseStructure.TIM_Period65535//货柜舱值18k/144125hz

TIM_TimeBaseStructure.TIM_ClockDivisionTIM_CKD_DIV1

TIM_TimeBaseStructure.TIM_RepetitionCounter0x0

TIM_TimeBaseInit(TIM3,ampTIM_TimeBaseStructure)

有定时时间计算出:

TIM_TimeBaseStructure.TIM_Prescaler2

//分频272M/(21)/224MHz

TIM_TimeBaseStructure.TIM_Period65535//数器值65535

((1TIM_Prescaler)/72M)*(1TIM_Period)((12)/72M)*(165535)0.00273秒366.2Hz*/

尽量两点(无论是大虾网,未经检验)

(1)TIMx(1-8),在库系统设置设置为的情况下,全是72M的时钟

(2)TIM_TimeBaseStructure.TIM_RepetitionCounter0

是重复一遍计数,就是反复重复逸出多少次才给你来一个逸出网络中断,

它填写的寄存器叫TIM1RCR.

如果不是这个值不配置,上电的时候寄存器值不过洗技能的,不过1秒网络中断四次,可能都变成N秒自动三次,让你完美头大!

假设不成立系统时钟是72Mhz,TIM1是由PCLK2(72MHz)换取,TIM2-7是由PCLK1能得到

关键是设定时钟预分频数,不自动重停泊寄存器周期的值

/*每1秒发生一次可以更新事件(进入掉线服务程序)。RCC_Configuration()的SystemInit()的

RCC-gtCFGR | (uint32_t)RCC_CFGR_PPRE1_DIV2因为TIM3CLK为72MHz。因此,每次来再次进入中

断服务程序间隔时间为

((1TIM_Prescaler)/72M)*(1TIM_Period)((17199)/72M)*(19999)1秒*/

定时器的都差不多设置

1、TIM_TimeBaseStructure.TIM_Prescaler7199//时钟预分频数.例如:时

钟频率72/(时钟预分频1)

2、TIM_TimeBaseStructure.TIM_Period9999//手动重加载寄存器周期的值(按时

时间)累计0xFFFF个频率后再产生个没更新的或掉线(也是说按时时间到)

3、TIM_TimeBaseStructure.TIM_CounterMode TIM1_CounterMode_Up//定时器

模式向上计数寄存器

4、TIM_TimeBaseStructure.TIM_ClockDivision 0x0//时间编缉值

5、TIM_TimeBaseInit(TIM2,ampTIM_TimeBaseStructure)//初始化设置定时器2

6、TIM_ITConfig(TIM2,TIM_IT_restore,ENABLE)//可以打开中断泻出自动

7、TIM_Cmd(TIM2,ENABLE)//再打开定时器

电动车控制器可以刷程序吗?

如果能把ST-LINK调试接口的4根线焊进去,就可以刷程序了。

串口RX,TX引脚也很比较方便焊出去,我直接用串口来对控制器发命令。

霍尔键入和MOS输出的引脚也找出去了。还有一个电流传感器的引脚。(市面上350瓦控制器,基本都都是上网通方案)

#defineHALL_UGPIOB,GPIO_PIN_5

#defineHALL_VGPIOB,GPIO_PIN_6

#defineHALL_WGPIOB,GPIO_PIN_7

#defineDOWN_MOS_UGPIOC,GPIO_PIN_2

#defineDOWN_MOS_VGPIOC,GPIO_PIN_1

#defineDOWN_MOS_WGPIOE,GPIO_PIN_5

#defineUP_MOS_PWM_COUNTER_U TIM1-gtCCR3L

#defineUP_MOS_PWM_COUNTER_VTIM1-gtCCR2L

#defineUP_MOS_PWM_COUNTER_WTIM1-gtCCR1L

#defineADC_PINGPIOB,GPIO_PIN_0

有霍尔的无刷电机,按结构6步驱程法,真的是太简单啊了。一开始认为是个很隐秘的东西,做个看看,会容易就能自己抄下来了。

TIM 时钟 TIM_TimeBaseStructure 系统

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。