//TIM1 分频
#define TIM1_DIV1 (1-1)
#define TIM1_DIV2 (2-1)
#define TIM1_DIV4 (4-1)
#define TIM1_DIV8 (8-1)
#define TIM1_DIV9 (9-1)
#define TIM1_DIV18 (18-1)
#define TIM1_DIV72 (72-1) #define TIM1PinA_Enb TIM1->CCER |= 0X0001 //比较通道1输出到IO
#define TIM1PinB_Enb TIM1->CCER |= 0X0010 //比较通道2输出到IO
#define TIM1PinC_Enb TIM1->CCER |= 0X0100 //比较通道3输出到IO
#define TIM1PinA_Dis TIM1->CCER &= ~0X0001 //比较通道1禁止输出到IO
#define TIM1PinB_Dis TIM1->CCER &= ~0X0010 //比较通道2禁止输出到IO
#define TIM1PinC_Dis TIM1->CCER &= ~0X0100 //比较通道3禁止输出到IO #define VT_PWM 1000 //PWM 计数最大值 频率8K
//#define VT_PWM 500 //PWM 计数最大值 频率16K //*************************************
// 函数名称:TIM1_PWMMode_Init
// 函数功能:TIM1 作PWM模式初始化 用作比较输出用
// 入口参数:计数个数 分频数
// 出口参数:无
// 返回值 :无
// 此设置适合用作BLDC驱动控制中驱动三对MOS
//***************************************
void TIM1_PWMMode_Init(int16_t Tcon,uint16_t psc)
{ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
TIM_DeInit(TIM1); //复位定时器 TIM1->ARR = Tcon ; //定时器重装载值
TIM1->PSC = psc ; //时钟预分频系数
TIM1->CR1 &= ~(1<<4) ; //向上计数 TIM1->CR1 |= (1<<7); //使能自动重装载 //清除更新中断 比较1234中断标志
TIM1->SR &= ~0X001F ; // 通道1 2 3 配置为PWM1模式
TIM1->CCMR1 = 0X6868 ; //
TIM1->CCMR2 = 0X0068 ;
// 不使能比较通道1 2 3输出到IO 且1电平为有效电平
TIM1->CCER = 0X0000 ;
//
TIM1->CCR1 = 0 ;
TIM1->CCR2 = 0 ;
TIM1->CCR3 = 0 ;
TIM1->CCR4 = 0 ;
// 关更新中断 比较1-4中断
TIM1->DIER &= ~0X001F ;
// TIM1->DIER |= 0X0002 ; //开比较1 中断 TIM1->BDTR |= (1<<15) ; //主输出使能 !!!
//清除更新事件标记位 并初始化所有寄存器
TIM1->EGR &= ~0X0001 ; TIM1->CR1 |= 0X0001 ; //开启时钟 } //*************************************
// 函数名称:ToPWM_Value
// 函数功能:设置PWM占空比
// 入口参数:计数个数 分频数
// 出口参数:无
// 返回值 :无
//***************************************/
void ToPWM_Value(uint16_t InValue)
{
TIM1->CCR1 = InValue ;
TIM1->CCR2 = InValue ;
TIM1->CCR3 = InValue ;
} //*************************************
// 函数名称:BLDC_RUN_ONESTEP
// 函数功能:电机六步走向
// 入口参数:电机运行的当前步
// 出口参数:无
//***************************************/
void BLDC_RUN_ONESTEP(uint32_t STEP)
{
switch(STEP)
{
case 1 : // AB
TIM1PinB_Dis ;
TIM1PinC_Dis ;
TIM1PinA_Enb ;
UdePinA_Off ;
UdePinC_Off ;
UdePinB_On ;
break ;
case 2 : //AC
TIM1PinB_Dis ;
TIM1PinC_Dis ;
TIM1PinA_Enb ;
UdePinA_Off ;
UdePinB_Off ;
UdePinC_On ;
break ;
case 3 : //BC
TIM1PinA_Dis ;
TIM1PinC_Dis ;
TIM1PinB_Enb ;
UdePinA_Off ;
UdePinB_Off ;
UdePinC_On ;
break ;
case 4 ://BA
TIM1PinA_Dis ;
TIM1PinC_Dis ;
TIM1PinB_Enb ;
UdePinB_Off ;
UdePinC_Off ;
UdePinA_On ;
break ;
case 5 ://CA
TIM1PinA_Dis ;
TIM1PinB_Dis ;
TIM1PinC_Enb ;
UdePinB_Off ;
UdePinC_Off ;
UdePinA_On ;
break ;
case 6 : //CB
TIM1PinA_Dis ;
TIM1PinB_Dis ;
TIM1PinC_Enb ;
UdePinA_Off ;
UdePinC_Off ;
UdePinB_On ; break ;
default : break ;
}
} //----实例应用------
//72M/(9) = 8M pwm周期=(1/8)*1000=125U
TIM1_PWMMode_Init(VT_PWM,TIM1_DIV9) ; //PWM 频率设置初始化 频率F=8K // ToPWM_Value(500) ; //设置三相驱动的PWM占空比 500/1000 = 50%
// TIM1PinA_Enb ; //PWM输出到IO 此时可在IO上看到有PWM信号输出

STM32F103 TIM1输出PWM设置的更多相关文章

  1. STM32F103定时器输出PWM波控制直流电机

    这个暑假没有回家,在学校准备九月份的电子设计竞赛.今天想给大家分享一下STM32高级定时器输出PWM波驱动直流电机的问题.. 要想用定时器输出的PWM控制直流电机,,首先要理解“通道”的概念..一个定 ...

  2. STM32定时器输出PWM频率和步进电机控制速度计算

    1.STM32F4系列定时器输出PWM频率计算 第一步,了解定时器的时钟多少: 我们知道AHP总线是168Mhz的频率,而APB1和APB2都是挂在AHP总线上的. (1)高级定时器timer1, t ...

  3. stm32定时器学习二——PWM设置

    /* STM32 嵌入式学习入门(5)——PWM的实现 上一篇博文介绍了定时器和PWM的基本的原理,本篇博文从代码层面来介绍PWM的具体实现.同样,还是以博主所用的开发板——正点原子开发板STM32F ...

  4. STM32—TIMx输出PWM信号驱动MG996R舵机

    文章目录 一.前言 二.MG996R舵机简介 三.TIM定时器简介 四.通用定时器TIMx 1.TIMx主要功能 2.TIMx框图 3.计数单元 4.时钟选择 5.输出比较PWM 五.TIM3输出双路 ...

  5. STM32F0xx_TIM输出PWM配置详细过程

    前言 前面我说过STM32的定时器功能很强大,今天就来总结一下它的另外一个“强大”功能:TIM的比较输出功能,输出可调PWM波形.直接调用函数接口“TIM2_CH1_PWM(uint32_t Freq ...

  6. STM32 精确输出PWM脉冲数控制电机(转)

    STM32 精确输出PWM脉冲数控制电机 发脉冲两种目的1)速度控制2)位置控制 速度控制目的和模拟量一样,没有什么需要关注的地方发送脉冲方式为PWM,速率稳定而且资源占用少 stm32位置控制需要获 ...

  7. STM32F4_TIM输出PWM波形(可调频率、占空比)

    Ⅰ.概述 上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述. 提供实例工程中比较实用的函数:只需要调用该函数, ...

  8. Response输出excel设置文本样式

    在网上查了些Response导出excel然后设置样式的方法,发现没有一个可行的于是开始自己研究, 发现可以通过输出样式的方式进行配置,我要设置的是全文本格式在excel样式是这样的mso-numbe ...

  9. PHP使用echo输出标签设置CSS样式问题

    使用php是可以输出HTML标签的,这为页面设计带来很大方便. 在此记录php输出标签设置CSS样式的问题: echo可使用''.""或你不用引号,如果想要输出带CSS样式的HTM ...

随机推荐

  1. ubuntu环境ceph配置入门(一)

    环境:ubuntu server 14.04 64bit,安装ceph版本号0.79 正常情况下应有多个主机,这里为了高速入门以一台主机为例,多台主机配置方式类似. 1. 配置静态IP及主机名 静态I ...

  2. UVa11183 Teen Girl Squad, 最小树形图,朱刘算法

    Teen Girl Squad  Input: Standard Input Output: Standard Output You are part of a group of n teenage ...

  3. 14.2.5.5 Change Buffer

    14.2.5.5 Change Buffer change buffer是一个指定的数据结构 用于caches 数据到secondary index pages 当影响的pages 不是在buffer ...

  4. Swift - UIColor使用自定义的RGB配色

    1,比如rgb 色值为55. 186 .89 那么给UIColor设置里面要除以255 1 UIColor(red: 55/255, green: 186/255, blue: 89/255, alp ...

  5. HDU4911-Inversion(树状数组)

    Inversion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  6. js封装的类似java StringBuilder类

    使用js的时候,经常会使用字符串拼接,但是在IE6和IE7没有对+作优化,所以性能会很低,鉴于此,我封装了StringBuilder类,用于拼接字符串,直接把代码贴出来如下: function Str ...

  7. ANDROID L——Material Design综合应用(Demo)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Material Design: Material Design是Google推出的一个全 ...

  8. [Android代码阅读]分类简介

    分类简介: 阅读他人的代码,可以学到很多东西,从思路,到方案,一系列都可以在项目代码中体现,所以,此分类专门用于记录阅读过的项目代码,并在上面给出自己的理解和注释 在此,感谢原作者开源分享项目代码

  9. Android 实现环形进度按钮circular-progress-button

    ※效果 ※简单介绍 显示运行进度的button,可用于数据的提交.系统登录等.动画效果非常棒.提高用户体验. ※使用说明 Declare button inside your layout XML f ...

  10. JavaScript 中的事件类型3(读书笔记思维导图)

    Web 浏览器中可能发生的事件有很多类型.如前所述,不同的事件类型具有不同的信息,而“ DOM3级事件”规定了以下几类事件. UI(User Interface,用户界面)事件:当用户与页面上的元素交 ...