STM32F103 TIM1输出PWM设置
//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设置的更多相关文章
- STM32F103定时器输出PWM波控制直流电机
这个暑假没有回家,在学校准备九月份的电子设计竞赛.今天想给大家分享一下STM32高级定时器输出PWM波驱动直流电机的问题.. 要想用定时器输出的PWM控制直流电机,,首先要理解“通道”的概念..一个定 ...
- STM32定时器输出PWM频率和步进电机控制速度计算
1.STM32F4系列定时器输出PWM频率计算 第一步,了解定时器的时钟多少: 我们知道AHP总线是168Mhz的频率,而APB1和APB2都是挂在AHP总线上的. (1)高级定时器timer1, t ...
- stm32定时器学习二——PWM设置
/* STM32 嵌入式学习入门(5)——PWM的实现 上一篇博文介绍了定时器和PWM的基本的原理,本篇博文从代码层面来介绍PWM的具体实现.同样,还是以博主所用的开发板——正点原子开发板STM32F ...
- STM32—TIMx输出PWM信号驱动MG996R舵机
文章目录 一.前言 二.MG996R舵机简介 三.TIM定时器简介 四.通用定时器TIMx 1.TIMx主要功能 2.TIMx框图 3.计数单元 4.时钟选择 5.输出比较PWM 五.TIM3输出双路 ...
- STM32F0xx_TIM输出PWM配置详细过程
前言 前面我说过STM32的定时器功能很强大,今天就来总结一下它的另外一个“强大”功能:TIM的比较输出功能,输出可调PWM波形.直接调用函数接口“TIM2_CH1_PWM(uint32_t Freq ...
- STM32 精确输出PWM脉冲数控制电机(转)
STM32 精确输出PWM脉冲数控制电机 发脉冲两种目的1)速度控制2)位置控制 速度控制目的和模拟量一样,没有什么需要关注的地方发送脉冲方式为PWM,速率稳定而且资源占用少 stm32位置控制需要获 ...
- STM32F4_TIM输出PWM波形(可调频率、占空比)
Ⅰ.概述 上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述. 提供实例工程中比较实用的函数:只需要调用该函数, ...
- Response输出excel设置文本样式
在网上查了些Response导出excel然后设置样式的方法,发现没有一个可行的于是开始自己研究, 发现可以通过输出样式的方式进行配置,我要设置的是全文本格式在excel样式是这样的mso-numbe ...
- PHP使用echo输出标签设置CSS样式问题
使用php是可以输出HTML标签的,这为页面设计带来很大方便. 在此记录php输出标签设置CSS样式的问题: echo可使用''.""或你不用引号,如果想要输出带CSS样式的HTM ...
随机推荐
- POJ 2773 Happy 2006 数学题
题目地址:http://poj.org/problem?id=2773 因为k可能大于m,利用gcd(m+k,m)=gcd(k,m)=gcd(m,k)的性质,最后可以转化为计算在[1,m]范围内的个数 ...
- windows socket----select模型
一般我们的网络编程都是用bind ,listen,accept,send/sendto,recv/recvfrom.在创建套接字的时候,是默认使用阻塞模式的,每当我们调用send/sendto等方法时 ...
- Microsoft2013校园招聘笔试题及解答
继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently store the book orders ...
- (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 ...
- form表单标签的enctype属性的作用
Enctype是指定将数据回发到server时浏览器使用的编码类型.其编码类型有下面三种 一. application/x-www-form-urlencoded 这是通过表单发送数据 ...
- Gulp.js简介
Gulp.js简介 我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必 ...
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- 推荐一个IT人必备的东西【用过的都懂,让我们的环境越来越好吧】
有个东西叫IT人手册,不知道各位有用过吗?不过很可惜以前那个关掉了,那个网站说出了我们IT人太多的新声以及一些黑心公司,不过被迫压力下关闭了 我不是托,我只是分享 我觉得这种东西应该存在下去~!!!至 ...
- 做外贸,独立B2C商城好,还是平台好
随着跨境电商热的来临,越来越多的国内企业选择进军跨国电商,那么企业要想进军以互联网跨国销售,通常会通过两种途径,一种是建立独立运营的B2C商城,还有一种是依托alibaba,dhgate,aliexp ...
- 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET
基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...