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

📄 ini.c

📁 LPC2134的bootloader , 请用ADS查看地址设定。
💻 C
字号:
typedef  unsigned char uchar;
typedef  unsigned int uint;

#include "config.h"
#include "pin.h"
#include "LPC2294.h"
#include "extern.h"
#include "PubFunc.h"


extern void InitIrq(void);
typedef struct UartMode
{
	uint8 datab;		// 字长度,5/6/7/8可选
	uint8 stopb;		// 停止位,1/2可选
	uint8 parity;		// 奇偶校验位,0-无校验,1-奇校验,2-偶校验
}UARTMODE;


void RTCInit (void)
{
	PREINT = Fpclk / 32768 - 1;	// 设置基准时钟分频器
	PREFRAC = Fpclk - (Fpclk / 32768) * 32768;	
	
	CIIR = 0x01;					// 设置秒值的增量产生1次中断
    ILR = 0x03;						// 清除RTC增量和报警中断标志
	CCR  = 0x11;					// 启动RTC	
}

int8 UART0_Init (uint32 baud, UARTMODE set)
{

	uint32 bak;
	
	/* 参数过滤 */
	if ((baud ==0 ) || (baud > 115200))	return (0);
	if ((set.datab <5) || (set.datab > 8))	return (0);
	if ((set.stopb == 0) || (set.stopb > 2)) 	return (0);
	if (set.parity > 4)	return (0);
	
	/* 设置串口波特率 */
	U0LCR = 0x80;						// DLAB = 1	
	bak   = (Fpclk >> 4) / baud;
	U0DLM = bak >> 8;
	U0DLL = bak & 0xFF;
	
	/* 设置串口模式 */
	bak   = set.datab - 5;				// 设置字长
	if (set.stopb == 2)	bak |= 0x04;	// 判断是否为2位停止位
	
	if (set.parity != 0)
	{
		set.parity = set.parity - 1;
		bak |= 0x08;
	}
	bak |= set.parity << 4;				// 设置奇偶校验
	
	U0LCR = bak;
	
	return (1);
}

int8 UART1_Init (uint32 baud, UARTMODE set)
{

	uint32 bak;
	
	/* 参数过滤 */
	if ((baud ==0 ) || (baud > 115200))	return (0);
	if ((set.datab <5) || (set.datab > 8))	return (0);
	if ((set.stopb == 0) || (set.stopb > 2)) 	return (0);
	if (set.parity > 4)	return (0);
	
	/* 设置串口波特率 */
	U1LCR = 0x80;						// DLAB = 1	
	bak   = (Fpclk >> 4) / baud;
	U1DLM = bak >> 8;
	U1DLL = bak & 0xFF;
	
	/* 设置串口模式 */
	bak   = set.datab - 5;				// 设置字长
	if (set.stopb == 2)	bak |= 0x04;	// 判断是否为2位停止位
	
	if (set.parity != 0)
	{
		set.parity = set.parity - 1;
		bak |= 0x08;
	}
	bak |= set.parity << 4;				// 设置奇偶校验
	
	U1LCR = bak;
	
	return (1);
}



void mcu_init(void)
{
	UARTMODE set;
   	PINSEL0 = (5 << 0) | (5 << 16);			// 两个串口使能
	PINSEL1 =  ( 1 << 12)|( 1 << 13)|(0x400);	
   	PINSEL2 = PINSEL2 & (~0x08);			// P1[25:16]连接GPIO
   	IO0DIR = (LCD_RW|LCD_A0 | SAM_V | SAM2_RST  | SAM2_IO | SAM1_RST | SAM1_IO | LCD_BKL | LED_DOWN | LED_UP 
   			 |RC530_MOSI | RC530_RST | AT45DB_CS | RC530_NSS | FM1 | LCD_E1 | LCD_E2 | U_CS);	

	IO1DIR = (LCD_DB0 | RC530_CLK | LCD_DB1 | LCD_DB2 | LCD_DB3 | LCD_DB4 | LCD_DB5 | LCD_DB6 | LCD_DB7);
	IO0SET = (LCD_RW|LCD_A0 | SAM_V | AT45DB_CS | SAM2_RST  | SAM2_IO | SAM1_RST | SAM1_IO /*| LCD_led */| LED_DOWN | LED_UP
   			 |RC530_MOSI | RC530_RST | RC530_NSS | FM1 | LCD_E1 | LCD_E2);	
   	IO0CLR = LCD_BKL | FM1;
	IO1SET = (LCD_DB0 | RC530_CLK | LCD_DB1 | LCD_DB2 | LCD_DB3 | LCD_DB4 | LCD_DB5 | LCD_DB6 | LCD_DB7);
	

	set.datab  = 8;
	set.stopb  = 1;
	set.parity = 0;	
	UART0_Init(38400, set);				// 串口初始化
	UART1_Init(9600,set);
	
	
	InitIrq();

}

⌨️ 快捷键说明

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