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

PWM简介

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

PWM参数

  • 周期

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

  • 占空比

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

PWM工作原理

pwm原理图

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

GPIO配置

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

PWM控制器

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

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

pwm控制寄存器

用于控制PWM的开始/停止

代码实现:

c 复制代码
#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;
}
相关推荐
晶振厂家-晶发电子2 天前
晶振在5G时代的角色:高精度时钟的核心支撑
单片机·嵌入式硬件·5g·晶振·电子元器件·晶振知识
F137298015572 天前
WD5030A 芯片,12V降5V,输出电流12A,电路设计
stm32·单片机·嵌入式硬件·汽车·51单片机
小莞尔2 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
三佛科技-187366133972 天前
分享机械键盘MCU解决方案
单片机·嵌入式硬件·计算机外设
李永奉2 天前
51单片机-使用IIC通信协议实现EEPROM模块教程
单片机·嵌入式硬件·51单片机
工大一只猿2 天前
51单片机学习
嵌入式硬件·学习·51单片机
小莞尔2 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
风_峰2 天前
Ubuntu Linux SD卡分区操作
嵌入式硬件·ubuntu·fpga开发
bing_feilong2 天前
STM32精准控制水流
单片机·嵌入式硬件
Hello_Embed2 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件