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;
}
相关推荐
才鲸嵌入式4 分钟前
STM32 USB协议栈源码分析
stm32·单片机·嵌入式·驱动·usb·硬件·phy
m0_555762907 分钟前
STM32嵌入式软件设计的完整流程
stm32·单片机·嵌入式硬件
yumgpkpm26 分钟前
Hadoop 与AI大模型实战:从Hive、Impala(Cloudera CDH、CDP)海量数据到 AI 决策的落地方法
arm开发·人工智能·hive·zookeeper·flink·kafka·cloudera
BT-BOX26 分钟前
【普中】基于51单片机模拟风扇控制数码管显示设计
单片机·嵌入式硬件·51单片机
国科安芯30 分钟前
商业航天级抗辐照MCU与电源芯片在硅微条探测器系统中的应用分析
单片机·嵌入式硬件·架构·安全威胁分析·安全性测试
TEC_INO30 分钟前
Stm32_1
stm32·单片机·嵌入式硬件
Molesidy10 小时前
【Embedded Development】【bootloader】基于MCU的bootloader详细介绍以及基于MCU串口的IAP实战详细教程
单片机·嵌入式硬件·bootloader
长安第一美人11 小时前
php出现zend_mm_heap corrupted 或者Segment fault
开发语言·嵌入式硬件·php·zmq·工业应用开发
沐欣工作室_lvyiyi11 小时前
基于单片机的两轮自平衡循迹小车(论文+源码)
单片机·嵌入式硬件·小车·两轮自平衡
清风66666612 小时前
基于单片机的8路抢答器设计与实现
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业