网站大量收购闲置独家精品文档,联系QQ:2885784924

SPWM的产生SPWM的产生.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SPWM的产生SPWM的产生

关于定时器部分搞了2,3天,主要是想产生spwm波这一块,其他的了解了一下而已。 首先我先学习了产生pwm这一部分,然后学习到产生spwm,网上有一个例程是双通道产生互补的spwm,然后我又做了修改单通道产生双极性的spwm波。 首先先上双通道互补程序: 用的是野火的例程 main函数: #define CLI() __set_PRIMASK(1) #define SEI() __set_PRIMASK(0) int main(void) { CLI(); SEI(); TIM34_PWM_Init(); while (1) { } } bsp_pwm_output.c用户文件 void TIM3_PWM_Init(void) { TIM34_GPIO_Config(); TIM34_Mode_Config(); } static void TIM34_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM4|RCC_APB2Periph_AFIO, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, GPIO_InitStructure); } 其中,引脚PA6和PA7的复用功能就是TIM3的CH1通道,和CH2通道。所以要开启复用时钟。同时要注意,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器。使用任何一个外设都必须打开相应的时钟。这样的好处就是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,达到节能,实现低功耗的效果。具体见 游客,如果您要查看本帖隐藏内容请回复 ,这里TIM3,4为APB1的2倍频后,时钟为72MHZ。 static void TIM34_Mode_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_BDTRInitTypeDef TIM_BDTRInitStructure; NVIC_Configuration(); TIM_TimeBaseStructure.TIM_Period = 7199;//产生的spwm波的周期为T=1*7200/72M=100us(10KHz) TIM_TimeBaseStructure.TIM_Prescaler = 0;//设置预分频:不预分频,即为72MHz TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置时钟分频系数:不分频(这里用不到) TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;//不懂什么意思 TIM_TimeBaseInit(TIM3, TIM_TimeBaseStructure);//初始化定时器3的基础数据 TIM_DeInit(TIM4); //复位TIM4定时器,使之进入初始状态 其功能为复位外设PPP的所有寄存器至缺省值 TIM_TimeBaseStructure.TIM_Period=1; //自动装载寄存器的值 TIM_TimeBaseStructure.TIM_Prescaler= 3599; //时钟预分频数 使TIM4_CLK=20KHz TIM_TimeBaseStructur

文档评论(0)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档