?? main.c
字號:
/* 包含文件 */
#include "def.h"
#include "2410lib.h"
#include "option.h"
#include "2410addr.h"
#include "interrupt.h"
void test_pwm(); /* 函數聲明 */
/********************************************************************
// Function name : Main
// Description : JXARM9-2410 PWM實驗主程序
// 實現功能:
// 實現JXARM9-2410 PWM方式控制蜂鳴器
// Return type : void
// Argument : void
*********************************************************************/
void Main(void)
{
unsigned char data[6] = {0, 1, 2, 3, 4, 5};
/* 配置系統時鐘 */
ChangeClockDivider(1,1); // 1:2:4
ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz
/* 初始化端口 */
Port_Init();
/* 初始化串口 */
Uart_Init(0,115200);
Uart_Select(0);
/* 打印提示信息 */
PRINTF("\n---蜂鳴器測試程序---\n");
/* 端口設置 */
rGPBUP = rGPBUP & ~(0x1f) | 0x1f; //GPB4 ~ 0
rGPBCON = rGPBCON & ~(0x3ff) | 0x2aa; //Function Setting TCLK0, TOUT3 ~ 0
rGPGUP = rGPGUP & ~(0x800) | 0x800; //GPG11
rGPGCON = rGPGCON & ~(0xc00000) | 0xc00000; //TCLK1
rGPHUP = rGPHUP & ~(0x200) | 0x200; //GPH9
rGPHCON = rGPHCON & ~(0x3<<18) | (0x2<<18); //CLKOUT0
rMISCCR = rMISCCR & ~(0xf0) | 0x40; //Select PCLK with CLKOUT0
/* 開始測試 */
test_pwm();
while(1);
}
/*****************************************************************************
// Function name : test_pwm
// Description : 測試PWM,通過蜂鳴器輸出脈沖
// Return type : int
// Argument : void
*****************************************************************************/
void test_pwm()
{
int index, rate ;
unsigned short div;
int freq;
/* 設置定時器的預分頻率值:TIME0/1=255, TIME2/3=0, TIME4/5=0 */
rTCFG0=0xFF;
/* 設置定時器的工作模式:中斷模式,設置分頻率值:TIME0為1/4,其他為1/2 */
rTCFG1=0x1;
/* 輸出脈沖:頻率從4000HZ到14000HZ, 使用2/3的占空比 */
for ( freq = 500; freq < 14000; freq+=500 )
{
div = (PCLK/256/4)/freq;
rTCON=0x0;
rTCNTB0= div;
rTCMPB0= (2*div)/3;
rTCON=0xa; /* 手工裝載定時器的計數值 */
rTCON=0x9; /* 啟動定時器,并周期模式觸發 */
for( index = 0; index < 800000; index++);
rTCON=0x0; /* 延時并停止定時器 */
}
/* 輸出脈沖:頻率1000HZ, 使用1/100 - 95/100的占空比 */
div = (PCLK/256/4)/1000;
for ( rate = 1; rate < 100; rate += 5 )
{
rTCNTB0= div;
rTCMPB0= (rate*div)/100; /* 修改占空比 */
rTCON=0xa; /* 手工裝載定時器的計數值 */
rTCON=0x9; /* 啟動定時器,并周期觸發 */
for( index = 0; index < 800000; index++);
rTCON=0x0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -