OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5724|回复: 4

VET6的TIM3重定义到PB4和PB5输出PWM

[复制链接]

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
发表于 2013-10-30 11:29:03 | 显示全部楼层 |阅读模式

我想让TIM3产生PWM,从PB4和PB5输出,怎么不行呢,那个重定义不对,还是哪里遗漏了什么,请大师指点迷津啊,

int main(void)
{
 tempkcount=0;
  RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOD |RCC_APB2Periph_USART1
                          | RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA
                          | RCC_APB2Periph_AFIO| RCC_APB2Periph_GPIOE,ENABLE  ) ;//  ?ò???±??
 // USART1_NVIC_Configuration(  ); //??????NVIC???? 
 SysTickInit();
  DaoHangInit( );
 ShuRuDingYi();
 ShuChuDingYi();
 DiBiaoInit();
  TIM3_PWM_Init();
 while(1)
 { 
  
    GPIO_SetBits (GPIOE ,GPIO_Pin_7 );       //?èD??????0 ????????????
  delays(1000);
 // GPIO_ResetBits (GPIOE,GPIO_Pin_7);
 // delays(1000);   
 }  
}


 


void PWM_Init(void)
{   GPIO_InitTypeDef  PWM_Output; 
  // RCC_APB2PeriphClockCmd ( RCC_APB2Periph_AFIO,ENABLE  );
   RCC_APB2PeriphClockCmd (RCC_APB1Periph_TIM3,ENABLE  );//?ò???±??
  //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); 

   PWM_Output.GPIO_Pin   = GPIO_Pin_6|GPIO_Pin_7;       //??????????±?????PB4.PB5
  WM_Output.GPIO_Mode  = GPIO_Mode_AF_PP;//GPIO_Mode_Out_PP ;   //??????????±??¨??
  WM_Output.GPIO_Speed = GPIO_Speed_10MHz ;  //??????????????±??¨??
  GPIO_Init (GPIOA,&WM_Output );        //?÷???á??????????????D??2????
 // GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE); //???¨??
 
}


 

 void TIM_Mode_Config(void )
{  
 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
 TIM_OCInitTypeDef TIM_OCInitStructure;
 u16 CCR1_Val=39000;u16 CCR2_Val=30000;//u16 CCR3_Val=250;u16 CCR4_Val=125;
 
 TIM_TimeBaseStructure.TIM_Period=40000 ;//?¨?±?÷??0??????999?????????¨?±????  ???????÷?????????¨750????>100K??(355->200K)
 TIM_TimeBaseStructure.TIM_Prescaler=1;//?è???¤·????????¤·??? ????36M ?ò???¨?±?÷3????1 
 TIM_TimeBaseStructure.TIM_ClockDivision=0;//?è???±??·????????? ??·???
 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //?ò??????????
 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //??????
 
 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//PWM???????¨??//??????PWM1????
 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
 
 TIM_OCInitStructure.TIM_Pulse=CCR1_Val;//?è????±??????±?????÷?????????????±??????·??ú??±?
 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; //?±?????÷????????CCR1_Val?±????????
 TIM_OC1Init(TIM3,&TIM_OCInitStructure);//?????¨??1
 TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
 
 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//?????¨??2
 TIM_OCInitStructure.TIM_Pulse=CCR2_Val; //?è???¨??2????????±???
 TIM_OC2Init(TIM3,&TIM_OCInitStructure); //?????¨??2
 TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable); 
 TIM_ARRPreloadConfig(TIM3,ENABLE);
 TIM_Cmd(TIM3,ENABLE);//?????¨?±?÷3
}

//------------------------------------
//PWM??????
//
//--------------------------------------------------------
void TIM3_PWM_Init(void)
{  
   PWM_Init( );
    TIM_Mode_Config( );
}

我在RBT6上是做出来了的。为什么这个VET6不行呢

dd
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-30 11:31:23 | 显示全部楼层
//TIM3 WM部分初始化 
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM3_PWM_Init(u16 arr,u16 psc)
{    
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<1;  //TIM3时钟使能    
RCC->APB2ENR|=1<<3;     //使能PORTB时钟
GPIOB->CRL&=0XFF0FFFFF; //PB5输出
GPIOB->CRL|=0X00B00000; //复用功能输出      
   
RCC->APB2ENR|=1<<0;     //开启辅助时钟    
AFIO->MAPR&=0XFFFFF3FF; //清除MAPR的[11:10]
AFIO->MAPR|=1<<11;      //部分重映像,TIM3_CH2->B5

TIM3->ARR=arr; //设定计数器自动重装值 
TIM3->SC=psc; //预分频器不分频

TIM3->CCMR1|=6<<12;   //CH2 WM2模式  
TIM3->CCMR1|=1<<11;  //CH2预装载使能    
TIM3->CCER|=1<<4;    //OC2 输出使能    
TIM3->CR1=0x0080;    //ARPE使能 
TIM3->CR1|=0x01;     //使能定时器3    
}    

这是战舰板的代码,战舰板的PWM例程,就是从PB5输出的,也是TIM3,也用了重映射。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-10-30 11:44:28 | 显示全部楼层
回复【2楼】正点原子:

//TIM3 WM部分初始化 
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM3_PWM_Init(u16 arr,u16 psc)
{    
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<1;  //TIM3时钟使能    
RCC->APB2ENR|=1<<3;     //使能PORTB时钟
GPIOB->CRL&=0XFF0FFFFF; //PB5输出
GPIOB->CRL|=0X00B00000; //复用功能输出      
   
RCC->APB2ENR|=1<<0;     //开启辅助时钟    
AFIO->MAPR&=0XFFFFF3FF; //清除MAPR的[11:
......
---------------------------------
请问下有库函数版本的嘛?拜托
dd
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-30 19:16:34 | 显示全部楼层
战舰板有库函数例程的。自己下载看下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-10-30 19:33:24 | 显示全部楼层
             谢谢,我果然没有买错开发板
dd
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-10 03:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表