44binit.s ----- 初始化中断、存储器、堆栈等
源代码在线查看: main.c.bak
/****************************************************************************
【文 件 名 称】44Btest.c
【功 能 描 述】三星S3C44B0X板demo程序代码
【程 序 版 本】2.0
【创建人及创建日期】龚俊//2003-07-02 15:27
【修改人及修改日期】龚俊//2004-2-12 9:18
****************************************************************************/
//***************************************************************************
#include
#include
#include "..\inc\def.h"
#include "..\inc\option.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\timer.h"
//*****************************************************************************
void Time_Pwm_Beep(void)
{
rPCONE = 0x55ab;
//PE8-P0的引脚功能依次为:ENDIAN TOUT4、3、2、1、0 RXD0 TXD0 FOUT
rPUPE |= 0xf0; //TOUT4、3、2、1、0设置成不上拉,其他引脚上拉
rTCFG0 = rTCFG0 & (~0xff) | 0x3f; //死区长度为2; Prescaler0=3f
//定时器输入时钟频率计算公式 = MCLK/{prescaler+1}/{divider value}
rTCFG1 = rTCFG1 & (~0xf) | 0x2;
//定时器时钟 = (MCLK/prescaler+1)/8
rTCNTB0 = 60; //决定TOUT 0引脚PWM输出信号的频率
rTCMPB0 = 30; //决定TOUT 0引脚PWM输出高电平的信号宽度(rTCMPB0
rTCON = rTCON & (~0xf) | 0x0a;
//自动重装,输出取反关闭,更新TCNTBn、TCMPBn,死区控制器关闭
rTCON = rTCON & (~0xf) | 0x09; //开启蜂鸣器的叫声
}
/****************************************************************************
【功能说明】系统主函数
****************************************************************************/
void Main(void)
{
U16 BeepFreq = 800;
rNCACHBE0 = ((Non_Cache_End>>12)12);
//在上面的数据区域不使用高速缓存
rSYSCFG = CACHECFG; //8K字节cache,写缓冲使能,data abort使能
Port_Init(); //IO口初始化
Uart_Select( 0 ) ; //选择串口0
Uart_Init( 32000000, 57600 ) ;
//串口初始化,波特率为115200(系统主频为32MHz)
Uart_Printf( "\n\n\t优龙科技\n" ) ;
Uart_Printf( "Http://www.ucdragon.com\n\n" ) ;
Uart_Printf( "S3C44B0X定时器(PWM)测试!\n" ) ;
rPCONE = (rPCONE & 0x3ff3f) | ((0x2) //GPE3引脚功能设置为TOUT(PWM输出)
rPUPE = rPUPE | (1 //禁止GPE3引脚的上拉电阻
Uart_Printf( "请按"+"增加PWM的输出频率,按"-"减小PWM的输出频率 :\n\n" ) ;
SetBeepPwm( BeepFreq, 50 ) ;
while( 1 )
{
U8 key;
key = Uart_Getch();
Uart_SendByte( key );
if( key == '+' )
if( BeepFreq < 20000 )
BeepFreq += 100 ;
if( key == '-' )
if( BeepFreq > 100 )
BeepFreq -= 100 ;
SetBeepPwm( BeepFreq, 50 ) ;
Uart_Printf( "\tNow beep frequence is %d\n", BeepFreq ) ;
}
}
//***************************************************************************