Tim’s iT Blog

本文提供了一系列关于如何搭建 vSphere 5.1 实验室环境的详细教程,包括嵌套 ESXi 5.1 的配置与初始设置等关键步骤。对于希望在本地或虚拟环境中部署与测试 VMware 技术的 IT 专业人士来说,这些资源非常宝贵。
* 函数名:TIM2_Master__TIM3_Slave_Configuration * 描述 :主从定时器配置 * 输入 :电机转速speed,转角angle * 输出 :无 * 调用 :主函数 * 返回值:无 ****************************/ void TIM2_Master__TIM3_Slave_Configuration(u32 PulseFrequency, u32 pulse) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; u16 nPDTemp ; u16 pulse_number; float p=PulseFrequency; TIM_Cmd(TIM2, DISABLE); nPDTemp = (11.25/p); //TIM2重装值是11.25时1s转一圈(电机32细分下) pulse_number = (16.7778*pulse);//TIM3重装值是16.7778时转1°(电机32细分下) // 时基配置:配置PWM输出定时器——TIM2 /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = nPDTemp; //定时周期为nPDTemp TIM_TimeBaseStructure.TIM_Prescaler = 999; //预分频值1000,即f=72khz TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分频因子,会影响滤波器采样频率,与本实验无影响 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; //指定重复计数器值 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); // 输出配置:配置PWM输出定时器——TIM2 /* PWM1 Mode configuration: Channel1 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //TIM 脉冲宽度调制模式 1 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //高电平有效 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能输出 TIM_OCInitStructure.TIM_Pulse = nPDTemp>>1;//50% //比较tim_ccr的值,输出脉冲发生跳变 TIM_OC1Init(TIM2, &TIM_OCInitStructure); //初始化 TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能 TIMx 在 CCR1 上的预装载寄存器 TIM_ARRPreloadConfig(TIM2, ENABLE); //使能或者失能 TIMx 在 ARR 上的预装载寄存器 // 时基配置:配置脉冲计数寄存器——TIM3 TIM_TimeBaseStructure.TIM_Period = pulse_number; //0x1900是360°;//改变给电机的脉冲个数 TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // 输出配置:配置输出比较非主动模式定时器——TIM3 // Output Compare Active Mode configuration: Channel1 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Inactive; //输出比较非主动模式,(匹配时设置输出引脚为无效 电平,当计数值为比较/捕获寄存器值相同时,强制输出为低电平) TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0xFFFF; // 这里的配置值意义不大 TIM_OC1Init(TIM3, &TIM_OCInitStructure); // 配置TIM2为主定时器 // Select the Master Slave Mode TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); //设置 TIM2 主/从模式并使能 // Master Mode selection TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); //使用更新事件作为触发输出 // 配置TIM3为从定时器 // Slave Mode selection: TIM3 TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Gated); //选择 TIM3为从模式 TIM_SlaveMode_Gated-当触发信号(TRGI)为高电平时计数器时钟使能 TIM_SelectInputTrigger(TIM3, TIM_TS_ITR1); //选择 TIM3 输入触发源 TIM_TS_ITR1-TIM 内部触发 1 TIM_ITRxExternalClockConfig(TIM3, TIM_TS_ITR1);//设置 TIM3 内部触发为外部时钟模式 TIM_TS_ITR1-TIM 内部触发 1 TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE); //使能TIM3 TIM 捕获/比较 1 中断源 TIM_Cmd(TIM2, ENABLE); TIM_Cmd(TIM3, ENABLE); } 这是原文链接:https://blog.youkuaiyun.com/weixin_42232871/article/details/89740422,请解释一下这段代码是干什么用的,定时器2和3都是怎么用的呢
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值