//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. POJ 2773 Happy 2006 数学题

    题目地址:http://poj.org/problem?id=2773 因为k可能大于m,利用gcd(m+k,m)=gcd(k,m)=gcd(m,k)的性质,最后可以转化为计算在[1,m]范围内的个数 ...

  2. windows socket----select模型

    一般我们的网络编程都是用bind ,listen,accept,send/sendto,recv/recvfrom.在创建套接字的时候,是默认使用阻塞模式的,每当我们调用send/sendto等方法时 ...

  3. Microsoft2013校园招聘笔试题及解答

    继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently store the book orders ...

  4. (2)入门指南——(7)添加jquery代码(Adding our jQuery code)

    Our custom code will go in the second, currently empty, JavaScript file which we included from the H ...

  5. form表单标签的enctype属性的作用

    Enctype是指定将数据回发到server时浏览器使用的编码类型.其编码类型有下面三种 一. application/x-www-form-urlencoded         这是通过表单发送数据 ...

  6. Gulp.js简介

    Gulp.js简介 我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必 ...

  7. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  8. 推荐一个IT人必备的东西【用过的都懂,让我们的环境越来越好吧】

    有个东西叫IT人手册,不知道各位有用过吗?不过很可惜以前那个关掉了,那个网站说出了我们IT人太多的新声以及一些黑心公司,不过被迫压力下关闭了 我不是托,我只是分享 我觉得这种东西应该存在下去~!!!至 ...

  9. 做外贸,独立B2C商城好,还是平台好

    随着跨境电商热的来临,越来越多的国内企业选择进军跨国电商,那么企业要想进军以互联网跨国销售,通常会通过两种途径,一种是建立独立运营的B2C商城,还有一种是依托alibaba,dhgate,aliexp ...

  10. 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET

    基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...