OpenEdv-开源电子网

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

有关PWM输出实验

[复制链接]

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2120
金钱
2120
注册时间
2011-9-3
在线时间
122 小时
发表于 2011-11-23 20:28:39 | 显示全部楼层 |阅读模式
 在研究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->SC=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            
}   

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-23 21:45:43 | 显示全部楼层
先试试不映射能否正常输出.
remap要开启复用功能时钟.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2120
金钱
2120
注册时间
2011-9-3
在线时间
122 小时
 楼主| 发表于 2011-11-23 22:53:51 | 显示全部楼层
已搞定。上面有个错误:
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了,谢谢原子兄的提醒。

回复 支持 反对

使用道具 举报

8

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2011-8-15
在线时间
3 小时
发表于 2012-2-18 17:34:20 | 显示全部楼层
试了下不行?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2012-3-5
在线时间
0 小时
发表于 2012-3-5 20:00:35 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

0

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2012-9-14
在线时间
61 小时
发表于 2012-9-14 20:17:22 | 显示全部楼层
回复【楼主位】螃蟹爱虫:
---------------------------------

等级:
注册时间:
2012/03/05 19:51 
文章: 4 
离线 
 mark 
回复 支持 反对

使用道具 举报

42

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
369
金钱
369
注册时间
2013-7-21
在线时间
35 小时
发表于 2013-7-24 12:29:19 | 显示全部楼层
战舰的实验 八,我不明白 怎么控制 WM的脉冲宽度
while(1)
{
  delay_ms(10);  
if(dir)led0pwmval++;
else led0pwmval--;

  if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;  
TIM_SetCompare2(TIM3,led0pwmval); //这里我不明白怎么可以通过这个函数来调节脉冲宽度的    
}
狗一样的学,猪一样的玩
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-24 14:55:27 | 显示全部楼层
PWM的脉宽是受哪个控制的?这个你知道么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2013-9-24
在线时间
0 小时
发表于 2013-9-25 23:53:35 | 显示全部楼层
PWM的脉宽是受TIMX_CCR控制,对吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 08:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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