当前位置:首页 > 单片机 > 单片机
[导读]1.硬件原理2440有5个16位定时器,其中0、1、2、3有PWM功能,有一根输出引脚,可以产生周期性高低电平变化。定时器4没有输出引脚。2.芯片手册3.mini2440电路图4.S3C2440寄存器定时器时钟源是PCLK,先通过2个预分频器T

1.硬件原理

2440有5个16位定时器,其中0、1、2、3有PWM功能,有一根输出引脚,可以产生周期性高低电平变化。定时器4没有输出引脚。

2.芯片手册

3.mini2440电路图

4.S3C2440寄存器

定时器时钟源是PCLK,先通过2个预分频器TCFG0TCFG1降低频率,降频后就确定了定时器工作频率。初始设定值TCMPBn(用于比较反转输出电平)、TCNTBn。TCON控制定时器启动。TCMPBn的值装入TCMPn,TCNTBn的值装入TCNTn,每个定时器周期,TCNTn减1,可以通过TCNTOn读取计数值。当和TCMPn相等时,反转电平输出。减到0时,再次反转,如果TCON设置自动加载,则重复如上步骤。

pwm.h


/*******************************************************************

*Copyright(C),2011-2012,XXX.

*FileName:pwm.h

*Author:HuangYinqing

*Version:1.0

*Date::2012-04-22

*Description:脉宽调制蜂鸣器驱动.

*FunctionList:

*History:

******************************************************************/

#ifndef__PWM_H__

#define__PWM_H__

#definePRESCALER024

#defineMUX00x2

#definePWM_CLK(50000000/(PRESCALER0+1)/(2<<(MUX0+1)))

/*函数声明*/

voidPWMInit(unsignedlongulFreq);

voidPWMTest(void);

#endif


pwm.c


/*******************************************************************

*Copyright(C),2011-2012,XXX.

*FileName:pwm.c

*Author:HuangYinqing

*Version:1.0

*Date::2012-04-22

*Description:脉宽调制蜂鸣器驱动.

*FunctionList:

*History:

******************************************************************/

#include"common.h"

#include"core.h"

#include"drv.h"

/********************************************************************

函数功能:PWM初始化。

入口参数:无。

返回:无。

备注:定时器频率=PCLK/(预分频+1)/分频值;

预分频24,分频8,定时器频率250kHz

********************************************************************/

voidPWMInit(unsignedlongulFreq)

{

rGPBCON&=~(0x3<<0);

rGPBCON|=0x2<<0;

rTCFG0&=~(0xff<<0);

rTCFG0|=PRESCALER0<<0;//预分频24

rTCFG1&=~(0xf<<0);

rTCFG1|=MUX0<<0;//分频8

rTCNTB0=PWM_CLK/ulFreq;//周期

rTCMPB0=rTCNTB0>>1;//占空比50%

rTCON&=~0x1f;

rTCON|=(1<<0)|(1<<1)|(1<<3);//自动重载,手动加载,使能定时器

rTCON&=~(1<<1);//清除手动加载

}

/********************************************************************

函数功能:停止蜂鸣器。

入口参数:无。

返回:无。

备注:无。

********************************************************************/

voidBuzzerStop(void)

{

rGPBCON&=~3;

rGPBCON|=1;//==设置输出

rGPBDAT&=~1;

}

/********************************************************************

函数功能:设置蜂鸣器频率。

入口参数:

ulFreq:蜂鸣器频率。

返回:无。

备注:无。

********************************************************************/

voidPWMSetFreq(unsignedlongulFreq)

{

rTCNTB0=PWM_CLK/ulFreq;

rTCMPB0=rTCNTB0>>1;

}

/********************************************************************

函数功能:PWM测试函数。

入口参数:无。

返回:无。

备注:无。

********************************************************************/

voidPWMTest(void)

{

charucKey;

unsignedlongulFreq;

while(1)

{

ucKey=Uart0GetChar();

if(ucKey=='+')

{

if(ulFreq<2000)

{

ulFreq+=10;

PWMSetFreq(ulFreq);

}

}

if(ucKey=='-')

{

if(ulFreq>11)

{

ulFreq-=10;

PWMSetFreq(ulFreq);

}

}

if(ucKey==ESC_KEY)

{

BuzzerStop();

return;

}

}

}


time.h


/*******************************************************************

*Copyright(C),2011-2012,XXX.

*FileName:timer.h

*Author:HuangYinqing

*Version:1.0

*Date::2012-04-22

*Description:定时器4驱动.

*FunctionList:

*History:

******************************************************************/

#ifndef__TIMER_H__

#define__TIMER_H__

#definePRESCALER10xf9

#defineMUX40x2

/*定时器4计数*/

externvolatileunsignedlongg_ulTimer4Count;

/*函数声明*/

voidTimer4Init(void);

#endif


timer.c


/*******************************************************************

*Copyright(C),2011-2012,XXX.

*FileName:timer.c

*Author:HuangYinqing

*Version:1.0

*Date::2012-04-22

*Description:定时器4驱动.

*FunctionList:

*History:

***********

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

关键字: mini2440 u-boot 移植 dm9000驱动

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

关键字: eeprom i2c mini2440 u-boot 移植

从NandFlash启动CPU的时候,CPU会自动通过其内部硬件结构复制NandFlash中的前4K代码到cpu的自带SRAM中,注意这是CPU自带的SRAM,区别于本文所讲的SDRAM,本文所指的SDRAM是外接SDR...

关键字: s3c2440 sdram 硬件篇

以下是驱动的源码。#includelinux/config.h//配置头文件#includelinux/kernel.h//用于调用kmalloc和kfree#includelinux/sched.h//调度,进程睡眠,...

关键字: gpio mini2440 驱动led

接上一篇:s3c2440硬件篇之三:NandFlash(1)介绍s3c2440读NAND Flash的步骤:①设置NFCONF 在HCLK=100Mhz的情况下,TACLS=0,TWRPH0=3,TWRPH1=0,则 N...

关键字: s3c2440 硬件篇 读nandflash

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc...

关键字: Linux mini2440 内核 开发环境 移植

通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种异步收发传输器。UART以全双工方式传输数据,最简单的连线只有2根,TxD用于发送,RxD...

关键字: mini2440 uart 硬件篇

//定义LED设备的名称,这里是leds,这个模块加载后,会自动在/dev目录里创建该名字的设备文件。#define DEVICE_NAME "leds"//mini2440开发板上有4个LED(发光...

关键字: LED驱动 mini2440

S3C2440芯片对外提供的引脚上,只给出了27根地址线,单靠芯片上的27根引脚只能访问128M的外设空间。为了扩大外设的访问范围,S3C2440芯片又提供了8个片选信号nGCS0~nGSC7。当某个片选信号nGSCx有...

关键字: mini2440 内存初始化

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

关键字: mini2440 u-boot 移植 引导内核
关闭
关闭