www.openedv.com
您好,欢迎您!    会员注册 | 登入 
公告:欢迎访问www.openedv.com开源电子网,开源共享共同进步,祝您新年快乐,万事如意!
设为首页 | 加入收藏
论坛首页 » STM32/STM8专区 前往: 
有关PWM输出实验
发表人 内容
[Down] [Up]
[楼主位] 螃蟹爱虫


等级:NO
注册时间:
2011/09/03 00:18
文章: 372
来自: 广东
离线

 在研究STM32中文参考手册的时候发现时钟的重映射功能,如下图:因此修改原子的PWM输出实验,增加TIM3完全重映射的命令(颜色区),如下面程序,但PC7没有输出PWM,大伙帮看看,谢谢。


程序段,
void PWM_Init_Map(u16 arr,u16 psc)
{        
 //此部分需手动修改IO口设置
 RCC->APB1ENR|=1<<1;       //TIM3时钟使能   
 AFIO->MAPR|=3<<10;  //把TIM3的CH1,CH2,CH3,CH4,分别重映射到PC6,PC7,PC8,PC9
 GPIOC->CRH&=0X0FFFFFFF;//PC7
 GPIOC->CRH|=0XB0000000;//复用输出
 GPIOC->ODR|=1<<7;//PC7上拉 

    

 TIM3->ARR=arr;//设定计数器自动重装值
 TIM3->PSC=psc;//预分频器不分频
 
 TIM3->CCMR1|=7<<12;  //CH2 PWM2模式  
 TIM3->CCMR1|=1<<11; //CH2预装载使能   

 TIM3->CCER|=1<<4;   //OC2 输出使能   

// TIM3->CR1=0x8000;   //ARPE使能     这里原子搞错了,应该是下面这句,用缓冲与不用缓冲在精度上是有差别的。
 TIM3->CR1=0x0080;   //ARPE使能
 TIM3->CR1|=0x01;    //使能定时器3            
}   



这篇文章被编辑了 1 次. 最近一次更新是在 2011/11/23 20:29

[加为好友] 回复 引用回复
[Down] [Up]
[1楼] 正点原子


等级:NO
注册时间:
2010/12/02 10:41
文章: 8095
来自: 湖南
在线

先试试不映射能否正常输出.
remap要开启复用功能时钟.



我的淘宝小店:http://shop62103354.taobao.com
[加为好友] 回复 引用回复
[Down] [Up]
[2楼] 螃蟹爱虫


等级:NO
注册时间:
2011/09/03 00:18
文章: 372
来自: 广东
离线

已搞定。上面有个错误:
GPIOC->CRH&=0X0FFFFFFF;//PC7
 GPIOC->CRH|=0XB0000000;//复用输出
应该为:
GPIOC->CRL&=0X0FFFFFFF;//PC7
 GPIOC->CRL|=0XB0000000;//复用输出
但单单改这个还不行。还需要开启辅助时钟和相应I/O口的时钟,如下:
RCC->APB2ENR|=1<<0;    //开启辅助功能时钟
RCC->APB2ENR|=1<<4;   //开启PC时钟。。。


按以上修改即可输出正常的PWM了,谢谢原子兄的提醒。



[加为好友] 回复 引用回复
[Down] [Up]
[3楼] bravejt

等级:NO
注册时间:
2011/08/15 17:07
文章: 33
离线

试了下不行?


[加为好友] 回复 引用回复
[Down] [Up]
[4楼] sillyboyhe

等级:NO
注册时间:
2012/03/05 19:51
文章: 4
离线

mark


[加为好友] 回复 引用回复
 
前往: 

Powered by ALIENTEK工作室 © 粤ICP备12000418号-1