⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 优龙FS2410板的脉宽调制源码
💻 C
字号:
#include "def.h"
#include "option.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h"
#include "timer.h"
#include "mmu.h"
#define FCLK 200000000
#define HCLK (FCLK/2)
#define PCLK (HCLK/2)
#define UCLK 48000000
#define U32  unsigned int
U32	Console_Uart = 0;
U32	Console_Baud = 115200;
void Isr_Init(void);
static void BeepTest(void);
void Main(void)
{        MMU_Init();
	SetClockDivider(1, 1);
	SetSysFclk(DFT_FCLK_VAL);       
	Port_Init();
	Isr_Init();
	Uart_Select(Console_Uart);
	Uart_Init(0, Console_Baud);
 	
	
	printf("FS2410XP PWM Test,please Enter 'ESC' to exit\n");
	BeepTest(); //PWM 控制
	while(1);
}
void Isr_Init(void)
{
  //  pISR_UNDEF  = (U32)HaltUndef;
    //pISR_SWI    = (U32)HaltSwi;
    //pISR_PABORT = (U32)HaltPabort;
    //pISR_DABORT = (U32)HaltDabort;
    rINTMOD = 0x0;	  // All=IRQ mode
    rINTMSK = BIT_ALLMSK;	  // All interrupt is masked.        
}
static void ChgBeepFreq(void)
{
	U16 freq = (PCLK>>7)/rTCNTB0;
	
	if(freq>=10000)
		freq = 500;
	freq += 100;
	
	rTCNTB0 = (PCLK>>7)/freq;
	rTCMPB0 = rTCNTB0>>1;	// 50%
	rTCON &= ~0x1f;
	rTCON |= 0xb;		//disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0
	rTCON &= ~2;		//clear manual update bit
		
}

static void BeepTest(void)
{
	int this_tm_event;
	
	rGPBCON &= ~3;		//set GPB0 as tout0, pwm output
	rGPBCON |= 2;
		
	rTCFG0 &= ~0xff;
	rTCFG0 |= 15;			//prescaler = 15+1
	rTCFG1 &= ~0xf;
	rTCFG1 |= 2;			//mux = 1/8
	rTCNTB0 = (PCLK>>7)/100;
	rTCMPB0 = rTCNTB0>>2;	// 50%
	rTCON &= ~0x1f;
	rTCON |= 0xb;		//disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0
	rTCON &= ~2;		//clear manual update bit
	while (1)
	{ ChgBeepFreq();
	Delay(2000);
	}
	
	
	rGPBCON &= ~3;		//set GPB0 as tout0, pwm output
	rGPBCON |= 1;
	rGPBDAT &= ~1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -