ARM接口编程—PWM(exynos 4412平台)

PWM简介

PWM(Pulse Width Modulation)即脉冲宽度调制,通过对脉冲的宽度进行调制,来获得所需要波形

ARM接口编程—PWM(exynos 4412平台)_第1张图片

PWM参数

  • 周期

一次高低电平所占用的时间

  • 占空比

一个周期中高电平时间与整个周期的比例称为占空比

PWM工作原理

ARM接口编程—PWM(exynos 4412平台)_第2张图片

pwm原理图

由电路原理图可知道蜂鸣器接在GPD0_0引脚上

ARM接口编程—PWM(exynos 4412平台)_第3张图片

GPIO配置

配置GPD0_0引脚为PWM模式,即TOUT_0

ARM接口编程—PWM(exynos 4412平台)_第4张图片

PWM控制器

这个寄存器用于配置一级分频值

ARM接口编程—PWM(exynos 4412平台)_第5张图片
这个寄存器用于配置二级分频

ARM接口编程—PWM(exynos 4412平台)_第6张图片

pwm控制寄存器

用于控制PWM的开始/停止
ARM接口编程—PWM(exynos 4412平台)_第7张图片
代码实现:

#include "exynos_4412.h"

void Delay(unsigned int Time)
{
	while(Time --);
}

int main()
{
	/*1.将GPD0_0引脚设置成PWM0的输出引脚*/
	GPD0.CON = GPD0.CON & (~(0xF)) | (0x2);
	/*2.设置PWM0的一级分频	一级分频倍数设置为100倍*/
	PWM.TCFG0 = PWM.TCFG0 & (~(0xFF)) | 99;
	/*2.设置PWM0的二级分频	二级分频倍数设置为1倍  递减计数器递减频率 = PLCK / (99 + 1) / 1 = 1M*/
	PWM.TCFG1 = PWM.TCFG1 & (~(0xF));
	/*4.设置PWM0为自动重装载,使其能够产生连续的脉冲信号*/
	PWM.TCON = PWM.TCON | (1 << 3);
	/*5.设置PWM0的频率为500HZ*/
	PWM.TCNTB0 = 2000;
	/*6.设置PWM0的占空比为50%*/
	PWM.TCMPB0 = 1000;
	/*7.将TCNTB0中的值手动装载到递减计数器*/
	PWM.TCON = PWM.TCON | (1 << 1);
	/*8.关闭手动更新*/
	PWM.TCON = PWM.TCON & (~(1 << 1));
	/*9.使能PWM0,递减计数器开始递减*/
	PWM.TCON = PWM.TCON | 1;

	while(1)
	{
		PWM.TCON = PWM.TCON | 1;
		Delay(1000000);
		PWM.TCON = PWM.TCON & (~(1));
		Delay(1000000);		
	}
	return 0;
}

你可能感兴趣的:(arm开发,单片机,嵌入式硬件)