OpenEdv-开源电子网

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

PWM使用问题,大侠

[复制链接]

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
发表于 2013-3-11 16:12:34 | 显示全部楼层 |阅读模式
我在PWM这章,用TIM2的4通道(PA3)来代替输出PWM,为什么PA3输出不对。    
(原子用TIM3的1通道复用PB5,我修改它的程序取消了复用,直接用TIM2的4通道,在初始化里挨个修改设置),我都检查几次,就是没发现问题,请大侠看看!(其中,我在仿真里,查看的到CNT计数,就是IO口无输出)
void TIM2_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<0; //TIM2时钟使能    ****
RCC->APB2ENR|=1<<2;     //使能PORTA时钟 ****
GPIOA->CRL&=0XFFFF0FFF; //PA3输出    *****
GPIOA->CRL|=0X00003000;           通用推免(不是复用) *****

  TIM2->ARR=arr;   //设定计数器自动重装值//刚好1ms    
TIM2->SC=psc;   //预分频器7200,得到10Khz的计数时钟
 
TIM2->CCMR2|=7<<12;   //CH4 PWM2模式  ****
TIM2->CCMR2|=1<<11; //CH2预装载使能    *****
TIM2->CCER|=1<<12;   //OC4 输出使能****
  
TIM2->CR1=0x0080;   //ARPE使能 
//TIM3->DIER|=1<<0;   //允许更新中断
TIM2->CR1|=0x01;     //使能定时器2  
}  
都是按手册规矩办事,脑壳都抓烂了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-11 16:24:22 | 显示全部楼层
觉得操作寄存器太繁琐点了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-11 16:25:58 | 显示全部楼层
CCR值呢?改了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-11 16:36:53 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
...其他初始化..
//TIM3_PWM_Init(166,2879); //不分频。PWM频率=72000/(899+1)=80Khz
TIM2_PWM_Init(166,1879);
JTAG_Set(2);
    while(1)
{
  // delay_ms(10);  
// if(dir)led0pwmval++;
// else led0pwmval--;  
  // if(led0pwmval>300)dir=0;
// if(led0pwmval==0)dir=1;      
// LED0_PWM_VAL=121;  
//LEDX_PWM_VAL=121;     
LED4_PWM_VAL=121;
}

我在TIMER.H在#define LED0_PWM_VAL TIM3->CCR1  的下一行定义
#define LED4_PWM_VAL TIM2->CCR4  
如上主程序中给了值(TIM3都可以,为什么我基本上没加东西TIM2就不行呢)
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-11 16:42:00 | 显示全部楼层
是什么原因呢,这么简单的修改都不成 ,恼火啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-11 17:15:54 | 显示全部楼层
回复【5楼】zhangyi3312:
---------------------------------
会不会软仿?
建议软仿真查看下寄存器值。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-11 17:16:27 | 显示全部楼层
请问大侠们 还可能有哪个地方没设置好吗
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-11 17:20:10 | 显示全部楼层
会软件仿真,需要看个寄存器啊 ,我在自动运行时候,CNT在计数,在变。就是没输出!
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-11 17:23:57 | 显示全部楼层
这么不能粘贴呢
未命名.jpg
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-11 18:13:52 | 显示全部楼层
TIM2->CCR4的值为0哦....
可以传图片,点击:回复文章!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-12 08:43:28 | 显示全部楼层


有数字啊,仿真图片PA3没输出啊
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-12 09:59:28 | 显示全部楼层

d这个是原子大哥的寄存器情况
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-12 09:59:59 | 显示全部楼层
没发现任何异常,请原子大哥看看
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-12 10:24:22 | 显示全部楼层
这代码,我实测通过了的:
//TIM2 WM部分初始化 
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM3_PWM_Init(u16 arr,u16 psc)
{    
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<0;  //TIM2时钟使能    
RCC->APB2ENR|=1<<2;     //使能PORTA时钟
GPIOA->CRL&=0XFFFF0FFF; //PB5输出
GPIOA->CRL|=0X0000B000; //复用功能输出            

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

TIM2->CCMR2|=7<<12;   //CH4 WM2模式  
TIM2->CCMR2|=1<<11;  //CH4预装载使能    
TIM2->CCER|=1<<12;    //OC4 输出使能    
TIM2->CR1=0x0080;    //ARPE使能 
TIM2->CR1|=0x01;     //使能定时器3    
}    


你的IO口设置为推挽输出...我倒...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2013-3-12 11:04:43 | 显示全部楼层
拜谢原子哥 知道错了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-23 14:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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