步骤:

  1. 使能定时器3和相关IO时钟(LED-PB5)
    使能定时器3时钟:RCC_APB1PeriphClockCmd();
    使能GPIOB时钟:RCC_APB2PeriphClockCmd();
  2. 初始化IO口为复用功能输出 GPIO_Init();
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  3. PB5输出PWM(定时器3通道2),需要部分重映射
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//开启AFIO时钟设置
    GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);//部分重映射
  4. 初始化定时器 (重装载值ARR,与分频系数PSC等)
    TIM_TimeBaseInit();//决定PWM周期
  5. 初始化输出比较参数:
    TIM_OC2Init();//通道2输出比较初始化
  6. 使能预装载寄存器
    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);//定时器3 通道2
  7. 使能定时器
    TIM_Cmd();
  8. 不断改变比较值CCRx,达到不同的占空比效果
    TIM_SetCompare2(); //通道2,改变比较值CCRx
void TIM3_PWM_Init(u16 arr,u16 psc)
{GPIO_InitTypeDef     GPIO_InitStrue;TIM_OCInitTypeDef     TIM_OCInitStrue;TIM_TimeBaseInitTypeDef     TIM_TimeBaseInitStrue;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //使能TIM3和相关GPIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);// 使能GPIOB时钟(LED在PB5引脚),使能AFIO时钟(定时器3通道2需要重映射到BP5引脚)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStrue.GPIO_Pin=GPIO_Pin_5;     // TIM_CH2GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;    // 复用推挽GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;    //设置最大输出速度GPIO_Init(GPIOB,&GPIO_InitStrue);                //GPIO端口初始化设置GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);TIM_TimeBaseInitStrue.TIM_Period=arr;    //设置自动重装载值TIM_TimeBaseInitStrue.TIM_Prescaler=psc;        //预分频系数TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up;    //计数器向上溢出TIM_TimeBaseInitStrue.TIM_ClockDivision=TIM_CKD_DIV1;        //时钟的分频因子,起到了一点点的延时作用,一般设为TIM_CKD_DIV1TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue);        //TIM3初始化设置(设置PWM的周期)TIM_OCInitStrue.TIM_OCMode=TIM_OCMode_PWM2;        // PWM模式2:CNT>CCR时输出有效TIM_OCInitStrue.TIM_OCPolarity=TIM_OCPolarity_High;// 设置极性-有效为高电平TIM_OCInitStrue.TIM_OutputState=TIM_OutputState_Enable;// 输出使能TIM_OC2Init(TIM3,&TIM_OCInitStrue);        //TIM3的通道2PWM 模式设置TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);        //使能预装载寄存器TIM_Cmd(TIM3,ENABLE);        //使能TIM3}

main功能实现

int main(void){  u16 led0pwmval=0;    u8 dir=1;    delay_init();            //延时函数初始化    LED_Init();           //初始化与LED连接的硬件接口TIM1_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz while(1){delay_ms(10);   if(dir)led0pwmval++;else led0pwmval--;    if(led0pwmval>300)dir=0;if(led0pwmval==0)dir=1;                      TIM_SetCompare1(TIM1,led0pwmval);     }
}
//控制 LED0_PWM_VAL 的值从 0 变到 300,然后又从 300 变到 0,如此循环,因此 DS0 的亮度也会跟着从暗变到亮,然后又从亮变到暗。

STM32F205 PWM配置相关推荐

  1. 在linux环境下安装wiringpi库,wiringPi库的pwm配置及使用说明

    本文介绍树莓派(raspberry pi)在linux c 环境下的硬件pwm配置及使用方法. 1. 下载安装wiringPi 此步骤建议参考官网指南,wiringPi提供了对树莓派的硬件IO访问,包 ...

  2. MTK 驱动(47)---使用PWM配置背光如何配置,及频率计算

    [MT6582_LCD]使用PWM配置背光如何配置,及频率计算 2016年07月08日 10:10:22 阅读数:1175 MT6582 使用PWM配置背光及频率计算 [SOLUTION]   以GP ...

  3. STM32F103 16路PWM 配置

    1. 前言 底层库:基于原子的标准库函数 适用芯片:STM32F103系列型号芯片,其他型号未测试(注:已测型号:C8T6.CBT6.RCT6.RET6.ZET6) 所用到的定时器:TIM1.TIM2 ...

  4. 玩转TM4C1294XL(5)——PWM配置(死区互补输出)

    1.简介        简单介绍芯片内部的PWM模块,分享PWM的配置.本人是边学习边记录,内容仅作参考,有错误的地方请见谅. 2.PWM介绍        本部分内容参考自TI官方手册.       ...

  5. 灵动微单片机MM32的PWM配置

    MM32SPIN422C 今天我们来聊聊这个芯片: 本产品使用高性能的 ARM ® Cortex TM -M0 为内核的 32 位微控制器,内嵌三相半桥栅极驱 动器与 MOSFET.最高工作频率可达 ...

  6. PB3------TIM2_CH2通道的pwm配置及注意事项

    本文涉及到PB3-- PB11的pwm配置,其中PB3对应TIM2_CH2通道,PB11对应TIM2_CH4通道. PB3为JTDO管脚,如果想将PB3用为普通IO口,需调用 GPIO_PinRema ...

  7. STM32F4 TIM1输出PWM配置

    芯片使用的是STM32F407VET6,在项目中使用PWM控制LCD背光亮度,硬件设计使用PB0--TIM1-CH2N,使用时出现PWM的输出受LCD显示内容相关函数影响 原因: 使用硬件PB0--T ...

  8. STM32F0xx定时器输出PWM配置

    #include "stm32f0xx.h" #define FCY_DIV 1// #define FCY_DIV_1 2//FCY_DIV_1=FCY_DIV+1//2分频比 ...

  9. STM32 多个定时器 多路PWM配置

    实验过程中的笔记   在持续更新中  只是一个简化版本 利用定时器1 2 3 4 配置的PWM输出 高级定时器的 PWM 输出,与普通定时器稍有区别,必须通过函数 TIM_CtrlPWMOutputs ...

  10. NVT平台PWM配置

    1.IO映射 #if (LCD_BACKLIGHT_CTRL == LCD_BACKLIGHT_BY_PWM) #define GPIO_LCD_BLG_PWM P_GPIO_47 #define P ...

最新文章

  1. BERT面向语言理解的深度双向变换预训练
  2. shell 统计一个词出现的概率_如何在Mac上设置系统范围的字数统计服务
  3. java spring-webflux netty
  4. 初次联系导师短信模板_2020考研复试:提前联系导师的6点注意事项(附邮件模板)...
  5. artDialog对话框在PHP下的简单应用-artDialog弹出层篇
  6. 《MySQL——连接查询》
  7. 安装ipfs-api的命令变了,最新版的命令如下
  8. java用for语句实现菱形_编写Java程序,应用for循环打印菱形、三角形
  9. 云效(原RDC)+ 容器服务完成持续集成
  10. c语言对c99标准声明,C语言中C89与C99的区别
  11. JS倒计时:从某个固定时间开始倒记
  12. android mvvm_Android MVVM设计模式
  13. 已解决:An error occurred at line: 1 in the generated java file The type java.io.ObjectInputStream canno
  14. Inno Setup脚本
  15. ucinet网络分析使用总结
  16. AMS1117输入电源加反后换元件
  17. Ms08067实验室 JAVA代码审计实战班:开课喽!!
  18. matlab信号加入白噪音再分离,Matlab中给信号增加白噪声
  19. Android垂直方向滚动的跑马灯,带gif
  20. Minecraft Java版1.11_Editing Java版1.11-pre1

热门文章

  1. 基于小波变换的数字水印技术
  2. 关于android RTP驱动的问题
  3. Mac下实现Word文档批量转换为PDF
  4. obs录制视频做up主流程
  5. 根据开始日期,结束日期,计算出日历上有几周的方法
  6. 前端页面预览word_jquery word 在线预览 jquery word预览插件
  7. linux查看网口位置命令,Linux下查看网卡信息及确定网卡位置
  8. Altium Designer10.1051图文安装教程
  9. LeetCode题目分类整理
  10. 全新ThihkPHP聚合支付系统源码+兼容全部易支付