使用STM8S003定时器的PWM功能输出PWM波
一、使用定时器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波相关推荐
- STM8学习笔记---利用PWM功能输出SPWM波
要生成SPWM波,其关键是要生成一组正弦规律变化的数字,然后将数字对应成PWM输出的占空比,按照顺序输出占空比就行.生成正弦波的方法在 使用C语言产生正弦波数据 这篇博客有详细说明,这里就不说了. 本 ...
- 【笔记------STM32】高级定时器TIM1,CH3N输出PWM的示例
CHxN的pwm就是一个互补输出的问题,我更愿意称它叫CHx的互补通道,这样理解没有歧义. 新手照着下面配寄存器就可以配置好. 这里也提供一个演示: 配置CH3N输出PWM,顺便配置了CH4输出PWM ...
- STM32高级定时器TIM1、TIM15输出PWM
1.TIM初始化基本过程及源码 (a)GPIO.TIM结构体变量申明 (b)GPIO.TIM时钟使能 (c)GPIO基本配置 (d)TIM配置.通道设置 (e)TIM使能 源码如下: /** * @b ...
- STM32F103使用DAC功能输出三角波
在DAC的主要特征中可以看出,DAC内部还带有波形发生器. DAC 主要特征 2个DAC转换器:每个转换器对应1个输出通道 8位或者12位单调输出 12位模式下数据左对齐或者右对齐 同步更新功能 噪声 ...
- STM32_TIM输出PWM波形
前言 今天讲解"STM32F103 TIM输出PWM波形",提供的软件工程支持最大输出18MHz的PWM波形,函数接口只有两个参数:频率Freq 和 占空比Dutycycle. ...
- STM32—TIM3输出PWM信号驱动MG996R舵机(按键控制)
文章目录 一.前言 二.MG996R舵机简介 三.通用定时器TIMx 四.TIM3输出PWM信号代码详解 上传代码 一.前言 利用STM32的TIM3的通道1输出PWM信号,驱动MG996R舵机,按键 ...
- 嵌入式系统开发13——STM32输出PWM实现呼吸灯
本文主要介绍在STM32F103C8T6上,利用定时器输出PWM波形,进而驱动LED实现呼吸灯. 目录 一.任务要求 二.PWM简介 1.什么是PWM 2.相关概念 3.PWM的产生 4.PWM的通道 ...
- 高级定时器实例-PWM互补输出与刹车功能
前言 仅以此篇文章梳理我编写该实例的过程 概述 我手中的正点原子STM32MINI板所用的主控型号为STM32F103C8T6,因此高级定时器只有TIM1和TIM8,本章我所使用的资源为TIM1的CH ...
- STM32H743+CubeMX-低功耗定时器LPTIM输出PWM波
文章目录 一.前言 二.CubeMX 2.1.Clock Configuration 2.2.LPTIM2 Mode and Configuration 2.3.Parameter Settings ...
最新文章
- 面试官:如何实现一个高性能的,短链接生成服务?(附源码)
- php将pdf文件存入数据库,关于tcpdf:在我的php数据库中制作pdf文件
- mysql为什么要转es_MySQL用得好好的,为什么要转ES?
- Angular实现dialog对话框封装
- [Swift]LeetCode478. 在圆内随机生成点 | Generate Random Point in a Circle
- 象棋马走日全球变暖——(bfs例题)
- java的pdf转永中_永中pdf转word下载|
- Oracle官网 账号及密码
- 人在深圳的100怕!——谨以此文献给所有的深圳打拼者
- 币圈进化,IFO、IHO玩法更高级,李笑来Candy“糖果”野望未来
- 图书馆管理系统测试计划说明书
- 【转】ACM比赛经验
- 如果你已经厌倦了情人节的玫瑰
- 虾皮shopee跨境电商靠谱吗
- 春生冬至时——今日冬至
- php 正则表达式 环视,正则表达式教程五 —— 环视(零宽断言)
- JARVISOJ RE
- 常用LINUX命令汇总
- 加密网站地址——从根本解决盗连
- 2018.10.25【NOIP练习】最大疯子树(树形DP)
热门文章
- 电能质量监测装置及系统
- 拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从???
- 每天一篇论文 365/365 Visual Odometry Revisited: What Should Be Learnt?
- python 批量造数据
- 京东登陆界面正则匹配
- 永恒之蓝漏洞攻击完整步骤
- 【随笔记】Deepin20 安装docker
- 硬件开发笔记(一):高速电路设计Cadence Aleegro软件介绍和安装过程
- VMware下安装win10启动后进入Boot Manger界面如何解决
- 以下python注释代码中_以下 Python注释代码不正确的是()