OpenEdv-开源电子网

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

PWM占空比疑问,谢谢了各位

[复制链接]

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
发表于 2014-9-17 10:24:10 | 显示全部楼层 |阅读模式
5金钱
希望占空比是固定的 类似于20%,可是无论我怎样修改,软件仿真出来的占空比都是那样 不变

实验9 PWM输出实验.rar

1.75 MB, 下载次数: 133

最佳答案

查看完整内容[请看2#楼]

说明都在附件里,你看看!不明白再联系!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-1-2
在线时间
14 小时
发表于 2014-9-17 10:24:11 | 显示全部楼层
说明都在附件里,你看看!不明白再联系!
pwm模式.png

实验9 PWM输出实验.rar

273.09 KB, 下载次数: 115

回复

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-9-17 10:25:15 | 显示全部楼层
网上查了很多资料 感觉自己的程序应该没问题,可是就是不对,弄了2天实在是 弄不懂了
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2014-9-1
在线时间
2 小时
发表于 2014-9-17 14:01:11 | 显示全部楼层
占空比位没设置吧
TIM_OCInitStructure.TIM_Pulse   设置占空比位
回复

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-9-17 14:23:38 | 显示全部楼层
回复【3楼】xunfeng0862:
---------------------------------
不是用这个函数TIM_SetCompare2()在主函数中设置吗??
您说的这个 我也试了 也是一样的波形
回复

使用道具 举报

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-4-26
在线时间
0 小时
发表于 2014-9-17 19:10:52 | 显示全部楼层
没用开发板?
不努力,就什么也得不到
回复

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-9-17 22:02:44 | 显示全部楼层
回复【5楼】fresh杰尼龟:
---------------------------------
⊙﹏⊙b汗 不得软件仿真合适后才下到开发板了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-17 23:13:16 | 显示全部楼层
[mw_shl_code=c,true] int main(void) { u16 led0pwmval=0; u8 dir=1; delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); //LED端口初始化 TIM3_PWM_Init(899,0); //不分频。PWM频率=72000/900=8Khz while(1) { // delay_ms(10); // if(dir)led0pwmval++; // else led0pwmval--; // // if(led0pwmval>300)dir=0; // if(led0pwmval==0)dir=1; TIM_SetCompare2(TIM3,led0pwmval); } } [/mw_shl_code]
把delay_ms(10)的屏蔽去掉
建议改为100或者更大,测试下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-9-18 07:53:17 | 显示全部楼层
回复【7楼】正点原子:
-------------------------
原子哥  把我例程main中的while{}内if(led0pwmval>300)dir=0;中的300  换成800  或者10,别的不动,编译后软件仿真出来高电平都是从0.056240—0.063249
回复

使用道具 举报

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-4-26
在线时间
0 小时
发表于 2014-9-18 08:55:29 | 显示全部楼层
回复【6楼】红尘灬醉逍遥:
---------------------------------
呃,软件仿真这个东西我不怎么用,我都是用IAR直接下载完在板上调试
不努力,就什么也得不到
回复

使用道具 举报

4

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-1-2
在线时间
14 小时
发表于 2014-9-18 15:10:45 | 显示全部楼层
回复【8楼】红尘灬醉逍遥:
---------------------------------
这个貌似是那个10ms的延时导致的,可能你测试的一直是在那个所谓的10ms延时中的占空比,多找找其他的不同位置测测,也许会有收获!
仅限个人个人观点!你说的波形我给你发过去了,你看看是不是你要的意思!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-18 23:27:02 | 显示全部楼层
回复【8楼】红尘灬醉逍遥:
---------------------------------
delay_ms屏蔽取消了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-9-19 07:50:28 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
当然取消了。。。。。。
回复

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-9-19 07:54:28 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
软件仿真的图像终于变化了 可是我啥都没动呀。。。原子哥 我慢慢在研究吧
回复

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-9-20 14:36:47 | 显示全部楼层
回复【14楼】帅的被人砍1203:
---------------------------------
很感谢 你 谢谢帅哥。。
用示波器 就能显示出来 占空比的大小 ,而用软件就不能。。不知道是不是我甚至断点问题。。
{
  u16 led0pwmval=720;                                      //设置断点
// u8 dir=1;
delay_init();       //延时函数初始化   
NVIC_Configuration();   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);  //串口初始化为9600
  LED_Init();      //LED端口初始化
  TIM3_PWM_Init(899,0);  //不分频。PWM频率=72000/900=8Khz
    while(1)
{
//  delay_ms(10);  
// if(dir)led0pwmval++;
// else led0pwmval--;
//
//  if(led0pwmval>300)dir=0;
// if(led0pwmval==0)dir=1;  
TIM_SetCompare2(TIM3,led0pwmval);    //设置断点
}  
有效电平 是否可以理解为 1
无效电平为0、、????
回复

使用道具 举报

4

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-1-2
在线时间
14 小时
发表于 2014-9-20 20:08:04 | 显示全部楼层
回复【15楼】红尘灬醉逍遥:
---------------------------------
一、你不用设置断点,直接软件仿真一段时间后停止直接就可以查看波形了,不知道你是什么意思,我软件仿真没问题。 
二、在这里是可以理解有效电平为1 ,无效电平为0!
回复

使用道具 举报

19

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-9-21 09:25:49 | 显示全部楼层
回复【16楼】帅的被人砍1203:
---------------------------------
有可能 是我设置断点的问题 从而造成 波形疑问 。。。
我弄懂了  谢了  帅哥
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-1 13:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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