一、使用定时器TIM2的CH1、CH2、CH3通道PWM输出

1. 在使用stm8s系列的单片机的时候,使用的头文件大部分都是通用的stm8s.,第一步修改头文件:

/* Uncomment the line below according to the target STM8S or STM8A device used in your
   application. */

/* #define STM8S208 */      /*!< STM8S High density devices with CAN */
 /* #define STM8S207  */    /*!< STM8S High density devices without CAN */
 /* #define STM8AF52Ax */    /*!< STM8A High density devices with CAN */
 /* #define STM8AF62Ax */    /*!< STM8A High density devices without CAN */
 /* #define STM8S105 */      /*!< STM8S Medium density devices */
 /* #define STM8AF626x */    /*!< STM8A Medium density devices */
  #define STM8S103       /*!< STM8S Low density devices */
 /* #define STM8S903 */      /*!< STM8S Low density devices */

2. 取消stm8s103的注释,103和003的寄存器地址都是一样的,所以我们这里用103替代003.

3. 引脚使用PWM功能时无需配置GPIO状态,直接配置寄存器即可。例如TIM2的库函数配置如下:

TIM2_TimeBaseInit(TIM2_PRESCALER_1, 7999);         /*    1分频 ,计数值8000,频率=16M/8000=2kHZ   */
   
    /* PWM1 Mode configuration: Channel1 */
    TIM2 Channel1 duty cycle = [TIM2_CCR1/(TIM2_ARR + 1)] * 100 = 50%*/ 
    TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,2000, TIM2_OCPOLARITY_HIGH);
    TIM2_OC1PreloadConfig(ENABLE);

/* PWM2 Mode configuration: Channel2 */
    TIM2_OC2Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE,2000, TIM2_OCPOLARITY_HIGH);
    TIM2_OC2PreloadConfig(ENABLE);

/* PWM3 Mode configuration: Channel3*/

TIM2_OC3Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE,2000, TIM2_OCPOLARITY_HIGH);
    TIM2_OC3PreloadConfig(ENABLE);

TIM2_Cmd(ENABLE);

4.  配置完成后,调试输出2kHz 占空比为25%的PWM波,如下图所示:

5. 因为TIM2的这3个PWM通道都没有用到Alternative功能,不需要配置Options Bytes。

二、使用定时器TIM1的CH1、CH2、CH3通道的PWM功能

1. TIM1的CH1、CH2为需要配置的引脚复用功能,在调试程序之前,需要配置Option Bytes。AFR0设置为Alternate active.

2. TIM1三通道输出PWM寄存器实例:

CLK->CKDIVR= 0x00; //内部16M时钟不分频
  TIM2->PSCR = 0x00; //定时器2预分频系数为1
  TIM2->CR1 = 0x01; //内部计数器使能;
  TIM2->ARRH = 0x00;//0140,320分频,16M/320=50K,实测49.75K
  TIM2->ARRL = 0x8a;//自动装载寄存器低位;实测013e正好为50.0K
  /*PWM通道1设置*/
  TIM2->CCER1 |= 0x01; //开启OC1信号输出脚
  TIM2->CCMR1 = 0x60; //PWM1模式
  TIM2->CCR1H = 0x00; //占空比高位
  TIM2->CCR1L = 0x37; //占空比低位
  TIM2->CCMR1 |= 0x08; //输出比较1预装载使能
  /*PWM通道2设置*/
  TIM2->CCER1 |= 0x10; //开启OC2信号输出脚
  TIM2->CCMR2 = 0x60; //PWM1模式
  TIM2->CCR2H = 0x00; //占空比高位
  TIM2->CCR2L = 0x37; //占空比低位
  TIM2->CCMR2 |= 0x08; //输出比较2预装载使能
  /*PWM通道3设置*/
  TIM2->CCER2 |= 0x01; //开启OC3信号输出脚
  TIM2->CCMR3 = 0x60; //PWM1模式
  TIM2->CCR3H = 0x00; //占空比高位
  TIM2->CCR3L = 0x37; //占空比低位
  TIM2->CCMR3 |= 0x08; //输出比较3预装载使能
  TIM2->CR1 |= 0x01;

使用STM8S003定时器的PWM功能输出PWM波相关推荐

  1. STM8学习笔记---利用PWM功能输出SPWM波

    要生成SPWM波,其关键是要生成一组正弦规律变化的数字,然后将数字对应成PWM输出的占空比,按照顺序输出占空比就行.生成正弦波的方法在 使用C语言产生正弦波数据 这篇博客有详细说明,这里就不说了. 本 ...

  2. 【笔记------STM32】高级定时器TIM1,CH3N输出PWM的示例

    CHxN的pwm就是一个互补输出的问题,我更愿意称它叫CHx的互补通道,这样理解没有歧义. 新手照着下面配寄存器就可以配置好. 这里也提供一个演示: 配置CH3N输出PWM,顺便配置了CH4输出PWM ...

  3. STM32高级定时器TIM1、TIM15输出PWM

    1.TIM初始化基本过程及源码 (a)GPIO.TIM结构体变量申明 (b)GPIO.TIM时钟使能 (c)GPIO基本配置 (d)TIM配置.通道设置 (e)TIM使能 源码如下: /** * @b ...

  4. STM32F103使用DAC功能输出三角波

    在DAC的主要特征中可以看出,DAC内部还带有波形发生器. DAC 主要特征 2个DAC转换器:每个转换器对应1个输出通道 8位或者12位单调输出 12位模式下数据左对齐或者右对齐 同步更新功能 噪声 ...

  5. STM32_TIM输出PWM波形

    前言 今天讲解"STM32F103  TIM输出PWM波形",提供的软件工程支持最大输出18MHz的PWM波形,函数接口只有两个参数:频率Freq 和 占空比Dutycycle. ...

  6. STM32—TIM3输出PWM信号驱动MG996R舵机(按键控制)

    文章目录 一.前言 二.MG996R舵机简介 三.通用定时器TIMx 四.TIM3输出PWM信号代码详解 上传代码 一.前言 利用STM32的TIM3的通道1输出PWM信号,驱动MG996R舵机,按键 ...

  7. 嵌入式系统开发13——STM32输出PWM实现呼吸灯

    本文主要介绍在STM32F103C8T6上,利用定时器输出PWM波形,进而驱动LED实现呼吸灯. 目录 一.任务要求 二.PWM简介 1.什么是PWM 2.相关概念 3.PWM的产生 4.PWM的通道 ...

  8. 高级定时器实例-PWM互补输出与刹车功能

    前言 仅以此篇文章梳理我编写该实例的过程 概述 我手中的正点原子STM32MINI板所用的主控型号为STM32F103C8T6,因此高级定时器只有TIM1和TIM8,本章我所使用的资源为TIM1的CH ...

  9. STM32H743+CubeMX-低功耗定时器LPTIM输出PWM波

    文章目录 一.前言 二.CubeMX 2.1.Clock Configuration 2.2.LPTIM2 Mode and Configuration 2.3.Parameter Settings ...

最新文章

  1. 面试官:如何实现一个高性能的,短链接生成服务?(附源码)
  2. php将pdf文件存入数据库,关于tcpdf:在我的php数据库中制作pdf文件
  3. mysql为什么要转es_MySQL用得好好的,为什么要转ES?
  4. Angular实现dialog对话框封装
  5. [Swift]LeetCode478. 在圆内随机生成点 | Generate Random Point in a Circle
  6. 象棋马走日全球变暖——(bfs例题)
  7. java的pdf转永中_永中pdf转word下载|
  8. Oracle官网 账号及密码
  9. 人在深圳的100怕!——谨以此文献给所有的深圳打拼者
  10. 币圈进化,IFO、IHO玩法更高级,李笑来Candy“糖果”野望未来
  11. 图书馆管理系统测试计划说明书
  12. 【转】ACM比赛经验
  13. 如果你已经厌倦了情人节的玫瑰
  14. 虾皮shopee跨境电商靠谱吗
  15. 春生冬至时——今日冬至
  16. php 正则表达式 环视,正则表达式教程五 —— 环视(零宽断言)
  17. JARVISOJ RE
  18. 常用LINUX命令汇总
  19. 加密网站地址——从根本解决盗连
  20. 2018.10.25【NOIP练习】最大疯子树(树形DP)

热门文章

  1. 电能质量监测装置及系统
  2. 拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从???
  3. 每天一篇论文 365/365 Visual Odometry Revisited: What Should Be Learnt?
  4. python 批量造数据
  5. 京东登陆界面正则匹配
  6. 永恒之蓝漏洞攻击完整步骤
  7. 【随笔记】Deepin20 安装docker
  8. 硬件开发笔记(一):高速电路设计Cadence Aleegro软件介绍和安装过程
  9. VMware下安装win10启动后进入Boot Manger界面如何解决
  10. 以下python注释代码中_以下 Python注释代码不正确的是()