当前位置:首页 > 嵌入式 > 嵌入式单片机MCU开发
[导读]作者在上期已经讲解完端口输出高低电平,这章建立实例来讲解PWM输出,在所用的芯片有个为PWM输出,就写个PWM例程,方便大家快速上手。 这里选用8PIN的单片机进行开发,引脚如下图所示,PWM引脚为5。

概述

作者在上期已经讲解完端口输出高低电平,这章建立实例来讲解PWM输出,在所用的芯片有个为PWM输出,就写个PWM例程,方便大家快速上手。 这里选用8PIN的单片机进行开发,引脚如下图所示,PWM引脚为5。 

PMS171B之PWM配置

 


tm2b寄存器是用来配置PWM的占空比的,0-7位代表数值为0-255。


  


tm2s寄存器是用来配置PWM的分频,7位代表PWM分辨率,6-5为预分频器,4-0位为Timer时钟分配器。  


tm2c寄存器是Timer2控制寄存器,如果需要输出PWM,3-2位应该设置为10让Timer选择PA3,1位设置为1选择为PWM模式。

PWM计算与配置

 


在本文中我们设置输出为1K,30%占空比的PWM,根据上图公式,Y=tm2[7:4],我们选择CLK(系统时钟),即0001。



/*单片机内部RC震动时钟为 IHRC默认为16M,因此,IHRC/4=4M,系统时钟为4M*/
    .ADJUST_IC    SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;


在上篇配置IO口中,我们已经如上图代码所示,设置时钟为4M,所以Y=4M。 此时我们设置预分频器为16,即tm2s[6:5]设置为10,根据:输出频率=Y÷[256S1(S2+1)]可以得知S2配置为0;输出频率=4M÷[25616(0+1)]=976Hz。tm2s配置如下所示:



tm2s=0b0_10_00000; //  8-bit PWM ,预分频=16,分频 = 0



设置30%占空比则为tm2b=255*30%=77,tm2b如下所示:


tm2b = 0x4d;//占空比 30%4d 50%7f 70%b4


设置完之后需要打开PWM模式,tm2c设置如下所示:


tm2c = 0b0001_10_1_0; // 系统时钟,输出 =PA3,PWM 模式

PWM输出完整代码


#include    "extern.h"//是程序的头文件。
BIT   PWM     :PA.3;  //端口定义
void    FPPA0 (void)//相当于程序的 main() 函数。
{
 /*单片机内部RC震动时钟为 IHRC默认为16M,因此,IHRC/4=4M,系统时钟为4M*/
    .ADJUST_IC    SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;
/*********PWM*********************/
tm2ct = 0x0; 
tm2b = 0x4d;//占空比 30%4d 50%7f 70%b4
//S1= tm2s[6:5] : 预分频器设定值(1, 4, 16, 64)
//S2 = tm2s[4:0] : 分频器值(十进制,0 ~ 31)
//输出频率 =4MHz÷ (   256 *   S1 (16) * (S2+1)1)  =  976Hz
tm2s = 0b0_10_00000; //  8-bit PWM ,预分频 = 16 ,分频 = 0
tm2c = 0b0001_10_1_0;  //  系统时钟,输出 =PA3 , PWM 模式
    while (1)
    {
        .delay 4000*500;
    }
}

演示效果


声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

最近一款项目开发,需要用到PWM输入信号采集电路。一般来说,PWM输出比较多,比如驱动LED,电机,风扇等等,输入则相对较少。这种情况下,没有这方面的硬件设计经验,接下来怎么办呢?

关键字: PWM 单片机 工程师

前几天测试电源负载跳变的时候,用到了555定时器,主要用来产生频率并控制占空比,好久没看这部分电路,也忘的差不多了,去网上搜了一下相关知识,就和大家聊聊。这是一款利用NE555进行调光的电路,如下图所示,R1、R2、R3...

关键字: 555定时器 PWM 占空比

或许单单跟大家说震荡电路,大家会觉得这电路很简单,跟地气是零距离;缺乏科技感,一点也不高大上。但其实,震荡电路还有一个名字叫方波发生器。说到方波发生器,这是在实验室中经常看到的:

关键字: 震荡电路 方波发生器 PWM

脉冲宽度调制(PWM) 是一种数字信号,最常用于控制电路。该信号在预定义的时间和速度中设置为高(5v或3.3v)和低(0v)。通常,我们将PWM的高电平称为1,低电平为0。

关键字: STM32 PWM 控制

​今天来介绍SWM32单片机的两个功能模块Systick和PWM。两个功能相对简单一些,所以放在一起介绍。

关键字: SWM32单片机 Systick PWM

摘要:详细介绍了一种光伏路灯控制器设计方案,该方案基于Buck-Boost双向变换器结构及同步整流技术,与其他设计方案相比,电路结构简单,成本低,效率高,优势明显。经样机试制证明,性能优良,效果突出。

关键字: 同步整流 双向变换器 PWM

摘要:为了实现对半导体制冷系统温度的精确控制,设计了基于AD590温度传感器、STM32F407单片机和模糊PID控制算法的半导体制冷温控系统,自动实现对PWM输出波形的占空比控制,使得工作温度保持恒定。模糊PID控制算...

关键字: 半导体制冷 模糊PID控制 PWM

在我之前的帖子中,我们拼凑了一个系统,找到了我们的组件,征服了强大的原理图,并进行了审查、审查和审查。许多人会称他们的设计部分完成,将原理图交给布局工程师,并在等待 PCB 时喝杯咖啡。但是,不要放弃!布局是我们物理实例...

关键字: 电机驱动 PWM

在我之前的文章中,我们拼凑了一个系统,找到了我们的组件,征服了强大的原理图并进行了审查、审查和审查。上次,我讨论了一些常见的布局错误、最佳实践以及我们如何确保印刷电路板 (PCB) 的最佳性能。由于这篇文章的受欢迎程度,...

关键字: 电机驱动 PWM

我们有我们的想法,我们有我们的电机旋转,我们找到了我们设计的主要组成部分......现在怎么办?现在我们可以从更困难的部分开始,例如原理图捕获、布局和调试/测试。我们可以在下面看到这些如何落入典型的 PCB 设计流程中。...

关键字: 电机驱动 PWM

嵌入式单片机MCU开发

3 篇文章

关注

发布文章

编辑精选

技术子站

关闭