OpenEdv-开源电子网

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

实现不了PWM灯的闪烁 大神看看 找了好久都找不出原因

[复制链接]

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
发表于 2014-10-17 22:50:49 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]#include"TIMER.h" #include"led.h" void TIM1_PWM_Init(u16 arr,u16 psc) { RCC->APB2ENR|=1<11; //outside clock enable GPIOA->CRH&=0XFFFFFFF0; //clear gpioa GPIOA->CRH|=0X0000000B; //multiplexing output TIM1->ARR=arr; TIM1->SC=psc; TIM1->CCMR1|=7<<4; TIM1->CCMR1|=1<<3; TIM1->CCER|=1<<0; //ENABLE ch1 TIM1->BDTR|=1<<15; //high timer MOE TIM1->CR1=0X0080; //APRE enable TIM1->CR1|=1<<0; //TIMER ENABLE } void TIM3_Init(u16 arr,u16 psc) { RCC->APB1ENR|=1<<1; //outside clock enable TIM3->ARR=arr; TIM3->SC=psc; TIM3->DIER|=1<<0; //up to date enable interrupt TIM3->CR1|=1<<0; //enable MY_NVIC_Init(1,3,TIM3_IRQn,2); } void TIM3_IRQHandler() { if(TIM3->SR&0X0001) //go to interrupt LED1=!LED1; TIM3->SR=0X00; //clear interrupt flag } #ifndef _TIMER_H #define _TIMER_H #include"sys.h" #define led0_PWM_val TIM1->CCR1 void TIM3_Init(u16 arr,u16 psc); void TIM1_PWM_Init(u16 arr,u16 psc); #endif[/mw_shl_code] [mw_shl_code=c,true] #include<sys.h> #include<usart.h> #include<delay.h> #include<LED.h> #include<TIMER.h> int main(void) { u16 led0val=0; u8 dir=0; Stm32_Clock_Init(9); //set system clock delay_init(72); //delay init LED_Init(); // TIM3_Init(4999,7199); //(arr+1)*(psc+1)/72M TIM1_PWM_Init(899,0); //80K while(1) { delay_ms(5); /* led0val++; if(led0val==300) led0val=0; led0_PWM_val=led0val; */ if(dir) led0val++; else led0val--; if(led0val>300) dir=0; if(led0val==0) dir=1; led0_PWM_val=led0val; } } [/mw_shl_code]

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-18 00:24:07 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
 楼主| 发表于 2014-10-18 07:55:21 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
回复【2楼】正点原子:
---------------------------------
LED0一直都是亮着,但是并没有出现亮度的变化!延时的时间也变过,没有作用!
回复

使用道具 举报

8

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-27
在线时间
120 小时
发表于 2014-10-18 08:46:25 | 显示全部楼层
你的led0_PWM_val  变化后配置给定时器了没?while(1)里面好像没这个操作啊
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13138
金钱
13138
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-10-18 09:19:00 | 显示全部楼层
调用  setcompare 函数
学无止境
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
 楼主| 发表于 2014-10-18 09:23:16 | 显示全部楼层
回复【4楼】红木甲板:
---------------------------------
前面有define led0_pwm_val  tim3->CCR1  定义过了 val的值变化肯定会使CCR1的变化!
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
 楼主| 发表于 2014-10-18 09:24:03 | 显示全部楼层
回复【5楼】jermy_z:
---------------------------------
我学的是寄存器的版本,没听说过这个函数……
回复

使用道具 举报

20

主题

232

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2013-6-1
在线时间
0 小时
发表于 2014-10-18 13:01:32 | 显示全部楼层
-------------
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
 楼主| 发表于 2014-10-20 09:12:09 | 显示全部楼层
回复【8楼】Scy:
怎么填,求教!刚刚开始学这STM,有点乱!
回复

使用道具 举报

4

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2012-12-19
在线时间
0 小时
发表于 2014-10-20 09:31:51 | 显示全部楼层
你这只是对你自己定义的变量操作,没见你把变量值写到PWM比较寄存器里啊
目前在玩STM32,BBB,RPi
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-20 19:41:48 | 显示全部楼层
回复【6楼】有你就足够:
---------------------------------
最好用示波器看看引脚波形,可能是你的输出极性问题,导致看不出效果,实际有PWM,这个你得示波器看看才行。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
 楼主| 发表于 2014-10-24 08:37:19 | 显示全部楼层
回复【10楼】w0rmis20:
--------------------------------定义了寄存器的变量操作,那该怎么把变量写入寄存器呢?
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
 楼主| 发表于 2014-10-24 08:44:17 | 显示全部楼层
回复【10楼】w0rmis20:
---------------------------------
是不是直接写成 TIM1->CCR1=ledpwmval ?
回复

使用道具 举报

4

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2012-12-19
在线时间
0 小时
发表于 2014-10-24 16:39:32 | 显示全部楼层
是的的~~~~
回复

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
 楼主| 发表于 2014-10-25 12:51:39 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
今天用示波器测了下PA8的波形  没有波形输出!一直为0!原子哥帮我把配置看看有没有出问题!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-25 23:05:43 | 显示全部楼层
回复【15楼】有你就足够:
---------------------------------
我看着代码也没啥问题哦,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 01:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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