OpenEdv-开源电子网

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

关于PWM呼吸灯实验问题,新人求助

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-7-13
在线时间
4 小时
发表于 2021-7-16 00:54:40 | 显示全部楼层 |阅读模式
1金钱
  1. #include "pwm.h"
复制代码
上面的是我的pwm.c代码,我对比过好多次,和原子哥给的源码基本上没差,但是我的LED就根本不亮,只有在主函数里加上LED.Init才能实现PWM,下面是原子哥的pwm.c,我直接复制他的pwm.c代码不用在主函数里加上LED.Init也能实现PWM呼吸灯,这是为什么?主函数我直接复制过来都一样的。







  1. #include "pwm.h"
  2. #include "led.h"
  3. #include "usart.h"

  4. //////////////////////////////////////////////////////////////////////////////////         
  5. //本程序只供学习使用,未经作者许可,不得用于其它任何用途
  6. //ALIENTEK STM32F407开发板
  7. //定时器PWM 驱动代码          
  8. //正点原子@ALIENTEK
  9. //技术论坛:www.openedv.com
  10. //创建日期:2014/5/4
  11. //版本:V1.0
  12. //版权所有,盗版必究。
  13. //Copyright(C) 广州市星翼电子科技有限公司 2014-2024
  14. //All rights reserved                                                                          
  15. //////////////////////////////////////////////////////////////////////////////////          


  16. //TIM14 PWM部分初始化
  17. //PWM输出初始化
  18. //arr:自动重装值
  19. //psc:时钟预分频数
  20. void TIM14_PWM_Init(u32 arr,u32 psc)
  21. {                                                          
  22.         //此部分需手动修改IO口设置
  23.        
  24.         GPIO_InitTypeDef GPIO_InitStructure;
  25.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  26.         TIM_OCInitTypeDef  TIM_OCInitStructure;
  27.        
  28.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);          //TIM14时钟使能   
  29.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);         //使能PORTF时钟       
  30.        
  31.         GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14); //GPIOF9复用为定时器14
  32.        
  33.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;           //GPIOF9
  34.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能
  35.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz
  36.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出
  37.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉
  38.         GPIO_Init(GPIOF,&GPIO_InitStructure);              //初始化PF9
  39.           
  40.         TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频
  41.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
  42.         TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
  43.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
  44.        
  45.         TIM_TimeBaseInit(TIM14,&TIM_TimeBaseStructure);//初始化定时器14
  46.        
  47.         //初始化TIM14 Channel1 PWM模式         
  48.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
  49.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
  50.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低
  51.         TIM_OC1Init(TIM14, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1

  52.         TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器

  53.   TIM_ARRPreloadConfig(TIM14,ENABLE);//ARPE使能
  54.        
  55.         TIM_Cmd(TIM14, ENABLE);  //使能TIM14

  56.                                                                                   
  57. }  


复制代码


最佳答案

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

GPIOF时钟挂载在AHB1,你的错了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3625
金钱
3625
注册时间
2019-8-14
在线时间
1054 小时
发表于 2021-7-16 00:54:41 | 显示全部楼层
本帖最后由 hou18 于 2021-7-16 12:31 编辑

GPIOF时钟挂载在AHB1,你的错了
回复

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-7-13
在线时间
4 小时
 楼主| 发表于 2021-7-16 00:56:47 | 显示全部楼层
  1. #include "pwm.h"
  2. #include "led.h"
  3. #include "usart.h"

  4. void PWM_Init(u32 arr,u32 psc)
  5. {
  6.         GPIO_InitTypeDef GPIO_InitStructer;
  7.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructer;
  8.         TIM_OCInitTypeDef TIM_OCInitStructer;
  9.        
  10.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);
  11.         RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
  12.        
  13.         GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);
  14.        
  15.         GPIO_InitStructer.GPIO_Mode = GPIO_Mode_AF;
  16.         GPIO_InitStructer.GPIO_OType = GPIO_OType_PP;
  17.         GPIO_InitStructer.GPIO_Pin = GPIO_Pin_9;
  18.         GPIO_InitStructer.GPIO_PuPd = GPIO_PuPd_UP;
  19.         GPIO_InitStructer.GPIO_Speed = GPIO_High_Speed;
  20.        
  21.         GPIO_Init(GPIOF,&GPIO_InitStructer);
  22.        
  23.         TIM_TimeBaseInitStructer.TIM_ClockDivision = TIM_CKD_DIV1;
  24.         TIM_TimeBaseInitStructer.TIM_CounterMode = TIM_CounterMode_Up;
  25.         TIM_TimeBaseInitStructer.TIM_Period = arr;
  26.         TIM_TimeBaseInitStructer.TIM_Prescaler = psc;
  27.         TIM_TimeBaseInit(TIM14,&TIM_TimeBaseInitStructer);
  28.        
  29.         TIM_OCInitStructer.TIM_OutputState= TIM_OutputState_Enable;
  30.         TIM_OCInitStructer.TIM_OCMode = TIM_OCMode_PWM1;
  31.         TIM_OCInitStructer.TIM_OCPolarity = TIM_OCPolarity_Low;
  32.         TIM_OC1Init(TIM14,&TIM_OCInitStructer);

  33.         TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable);
  34.         TIM_ARRPreloadConfig(TIM14,ENABLE);
  35.         TIM_Cmd(TIM14, ENABLE);
  36.        
  37. }
复制代码


//我的代码,上面好像看不见
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 01:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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