亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uart.c

?? 周立公開發板
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機發展有限公司
**                                     研    究    所
**                                        產品一部 
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: 
**創   建   人: 
**最后修改日期: 
**描        述: 
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 
** 版  本: 
** 日 期: 
** 描 述: 
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#include "config.h"

#define 	TXD0 	1			//TXD0是引腳P0.0的第2功能
#define 	RXD0 	(1<<2)		//RXD0是引腳P0.1的第2功能
#define 	TXD1 	(1<<16)		//TXD1是引腳P0.8的第2功能
#define 	RXD1 	(1<<18)		//RXD1是引腳P0.9的第2功能

/*********************************************************************************************************
** 函數名稱: uint8 UARTn_Init(uint8 n,uint32 baud,uint8 datab,uint8 stopb,uint8 parity,uint8  INT_En)
** 功能描述: 對UARTn進行初始化
** 輸 入: 	n		0-UART0	1-UART1
**         	baud 	串口通信波特率
**         	datab	數據位個數,有效值為:5,6,7,8
**			stopb	停止位個數,有效值為:1,2
**			parity	奇偶校驗位,0-無校驗,1-奇校驗,2-偶校驗,3-強制為1,4-強制為0
**			INT_En	中斷控制字節,按位操作
**					bit0	1--RBR中斷使能,0--RBR中斷禁止
**					bit1	1--THRE中斷使能,0--THRE中斷禁止
**					bit3	1--RX線狀態中斷使能,0--RX線狀態中斷禁止
** 輸 出: 0 :初始化失敗
**         1 :初始化成功
** 全局變量:
** 調用模塊: 
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 UARTn_Init(uint8 n,uint32 baud,uint8 datab,uint8 stopb,uint8 parity,uint8  INT_En)
{
	uint32	bak;
	/*檢查參數的合理性*/
	if((n != 0)&&(n != 1))			return(0);		//只有兩個串口
	if((baud==0)||(baud>115200))	return(0);		//波特率:1~115200,否則出錯
	if((datab<5)||(datab>8))		return(0);		//數據位數:1~8,否則出錯
	if((stopb==0)||(stopb>2))		return(0);		//停止位:1、2,否則出錯
	if(parity>4)					return(0);		//奇偶校驗位有錯
	
	//設置UART引腳,且不影響其它引腳
	if(n == 0)	PINSEL0 = (PINSEL0 & (~0x0f)) | TXD0 | RXD0;		//設置UART0
	else		PINSEL0 = (PINSEL0 & (~(0x0f<<16))) | TXD1 | RXD1;	//設置UART1
	
	/*設置串口波特率*/
	*(volatile uint8 *)((&U0LCR) + n * 0x4000) = 0x80;				//DLAB=1
	*(volatile uint8 *)((&U0DLM) + n * 0x4000) = ((Fpclk/16)/baud)/256;
	*(volatile uint8 *)((&U0DLL) + n * 0x4000) = ((Fpclk/16)/baud)%256;
	/*設置串口模式*/
	bak = datab - 5;		//設置字長
	if(stopb==2)
		bak |= 0x04;		//判斷是否為2位停止位
	if(parity != 0)
	{
		parity -= 1;
		bak |= 0x08;
	}
	bak |= parity<<4;		//設置奇偶校驗位	
	*(volatile uint8 *)((&U0LCR) + n * 0x4000) = bak;	
	*(volatile uint8 *)((&U0IER) + n * 0x4000) = INT_En & 0x07;		//設置中斷使能寄存器
		
	return(1);		
}
/*********************************************************************************************************
** 函數名稱: void Set_FIFO(uint8 n,uint8 data)
** 功能描述: 設置FIFO
** 輸 入: 	 n	:0-UART0	1-UART1
**			 data:FIFO緩沖區的大小,只能為1,2,8、14個字節
** 輸 出: 	 0 :初始化失敗
**         	 1 :初始化成功
********************************************************************************************************/
uint8 Set_FIFO(uint8 n,uint8 data)
{
	if(n == 0)					//UART0
	{
		switch(data)
		{
			case  1:
				U0FCR = 0x01;	//緩沖區為1個字節
				return(1);
			case  4:
				U0FCR = 0x41;	//緩沖區為4個字節
				return(1);	
			case  8:
				U0FCR = 0x81;	//緩沖區為8個字節
				return(1);
			case  14:
				U0FCR = 0xc1;	//緩沖區為14個字節
				return(1);
			default:
				return(0);
		}
	}
	if(n == 1)					//UART1
	{
		switch(data)
		{
			case  1:
				U1FCR = 0x01;	//緩沖區為1個字節
				return(1);
			case  4:
				U1FCR = 0x41;	//緩沖區為4個字節
				return(1);	
			case  8:
				U1FCR = 0x81;	//緩沖區為8個字節
				return(1);
			case  14:
				U1FCR = 0xc1;	//緩沖區為14個字節
				return(1);
			default:
				return(0);
		}
	}	
	return(0);
}
/*********************************************************************************************************
** 函數名稱: void UARTn_SendData(uint8 n,uint8 *data_buf,uint8 count)
** 功能描述: 從串口發送數據
** 輸 入: 	n		:0-UART0	1-UART1
**			data_buf:發送數據緩沖區首地址
**			count	:發送字節數
** 輸 出:	無
** 全局變量:
** 調用模塊: 程序采用查詢方式,并且沒有使用FIFO
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void UARTn_SendData(uint8 n,uint8 *data_buf,uint8 count)
{
	uint8 i;
	for(i=0;i<count;i++)
	{
		*(volatile uint8 *)((&U0THR) + n * 0x4000) = data_buf[i];		//發送數據
		//等待數據發送完畢
		while(((*(volatile uint8 *)((&U0LSR) + n * 0x4000)) & 0x20)==0);	
	}
}
/*********************************************************************************************************
** 函數名稱: void UARTn_SendByte(uint8 n,uint8 data)
** 功能描述: 從串口發送數據
** 輸 入: 	n	:0-UART0	1-UART1
**			data:發送的數據
** 輸 出:	無
** 全局變量:
** 調用模塊: 程序采用查詢方式,并且沒有使用FIFO
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void UARTn_SendByte(uint8 n,uint8 data)
{
	*(volatile uint8 *)((&U0THR) + n * 0x4000) = data;				//發送數據
	while(((*(volatile uint8 *)((&U0LSR) + n * 0x4000)) & 0x20)==0);	//等待數據發送完畢
}
/*********************************************************************************************************
** 函數名稱: void UARTn_RcvData(uint8 n,uint8 *data_buf,uint8 count)
** 功能描述: 從串口接收數據
** 輸 入: 	n		:0-UART0	1-UART1
**			data_buf:接收數據緩沖區首地址
**			count	:接收字節數
** 輸 出:	無
** 全局變量:
** 調用模塊: 程序采用查詢方式,存在死等待,沒有使用FIFO
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void UARTn_RcvData(uint8 n,uint8 *data_buf,uint8 count)
{	
	uint8 i;
	for(i=0;i<count;i++)
	{
		while(((*(volatile uint8 *)((&U0LSR) + n * 0x4000)) & 0x01) == 0);	//等待接收標志置位
		data_buf[i] = (*(volatile uint8 *)((&U0RBR) + n * 0x4000));	//保存接收到的數據
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人高清电影在线| 黄色资源网久久资源365| 亚洲精品一线二线三线| 欧美体内she精高潮| 在线视频国内一区二区| 色婷婷av一区二区三区之一色屋| 成人午夜又粗又硬又大| 国产成人精品三级| av中文字幕亚洲| 美洲天堂一区二卡三卡四卡视频| 一二三区精品福利视频| 日本一区二区三区四区| 国产精品九色蝌蚪自拍| 国产亚洲精品aa| 欧美天天综合网| 欧美一级视频精品观看| 欧美一级片在线观看| 精品国产乱码久久久久久影片| 欧美精品久久一区| 69精品人人人人| 久久看人人爽人人| 精品视频在线免费看| 欧美高清dvd| 337p亚洲精品色噜噜| 91.com视频| 欧美精品一区二区三区蜜桃| 国产亚洲成av人在线观看导航 | 国产电影精品久久禁18| 成人黄色小视频| 一道本成人在线| 在线观看视频一区二区欧美日韩| 欧美日本在线播放| 日韩欧美在线一区二区三区| 欧美精选在线播放| 国产精品三级av在线播放| 国产欧美视频在线观看| 一区二区三区在线观看网站| 午夜精品福利在线| 国产一区在线不卡| 欧美亚洲国产怡红院影院| 欧美视频一区二| 欧美视频完全免费看| 精品久久久久久久久久久久久久久| 国产欧美日产一区| 日韩一区精品字幕| a级高清视频欧美日韩| 日韩欧美国产高清| 亚洲制服丝袜av| 成人综合在线网站| 欧美成人在线直播| 天天av天天翘天天综合网色鬼国产| 国产91露脸合集magnet| 欧美一级片在线| 亚洲午夜私人影院| 99久久久久久99| 久久久久久久久岛国免费| 午夜激情一区二区| 欧美日韩一二区| 亚洲资源在线观看| 99久久久免费精品国产一区二区| 欧美一区永久视频免费观看| 亚洲自拍另类综合| 成人av网址在线观看| 久久久亚洲精品一区二区三区 | 欧美性大战久久| 国产调教视频一区| 日本 国产 欧美色综合| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩中文字幕一区二区| 国产精品毛片无遮挡高清| 激情久久五月天| 日韩一区二区三区视频| 日韩专区欧美专区| 欧美日韩成人一区| 亚洲免费在线观看| 欧美在线一区二区三区| 亚洲色图丝袜美腿| 一本到高清视频免费精品| 欧美一区二区不卡视频| 午夜久久久久久| 色成人在线视频| 亚洲图片另类小说| a美女胸又www黄视频久久| 中文字幕一区二区三中文字幕| 福利视频网站一区二区三区| 7777精品久久久大香线蕉| 奇米一区二区三区av| 欧美日韩大陆在线| 美女尤物国产一区| 日韩欧美国产三级| 久99久精品视频免费观看| 久久综合国产精品| 国产高清不卡一区二区| 中文字幕一区日韩精品欧美| 成人福利视频在线看| 日本一区二区三区免费乱视频 | 成人18视频在线播放| 久久亚洲一区二区三区明星换脸| 日本欧美一区二区三区| 在线不卡a资源高清| 久国产精品韩国三级视频| 精品国产第一区二区三区观看体验| 国产一区二区免费在线| 久久久久国产成人精品亚洲午夜| 精品一区二区三区免费视频| 久久久亚洲综合| 成人综合婷婷国产精品久久蜜臀| 亚洲欧美自拍偷拍| 在线观看国产91| 男人操女人的视频在线观看欧美| 欧美成人精品高清在线播放| 国内成人免费视频| 夜夜嗨av一区二区三区| 91精品黄色片免费大全| 国产91丝袜在线观看| 亚洲一卡二卡三卡四卡无卡久久| 欧美福利视频导航| 91视频你懂的| 日本最新不卡在线| 亚洲激情在线播放| 日韩一级片网站| 成人av电影在线观看| 亚洲v日本v欧美v久久精品| 777欧美精品| 99精品视频一区| 美女一区二区三区| 国产欧美日韩一区二区三区在线观看 | 轻轻草成人在线| 国产亚洲欧美在线| 欧美精品粉嫩高潮一区二区| 国产高清亚洲一区| 亚洲美腿欧美偷拍| 久久五月婷婷丁香社区| 日本精品一区二区三区四区的功能| 精品亚洲国内自在自线福利| 亚洲男帅同性gay1069| 国产免费成人在线视频| 欧美人妇做爰xxxⅹ性高电影| 97精品超碰一区二区三区| 日日夜夜精品视频天天综合网| 亚洲国产高清在线| 日韩午夜激情av| 99久久亚洲一区二区三区青草| 亚洲18女电影在线观看| 中文字幕欧美日韩一区| 日韩免费高清电影| 欧美天堂亚洲电影院在线播放| 91免费看视频| 国产成人免费视频网站| 国产综合久久久久久鬼色| 亚洲一区二区三区视频在线播放| 亚洲乱码国产乱码精品精的特点 | 亚洲人精品一区| 国产精品家庭影院| 国产亚洲精品久| 成人欧美一区二区三区黑人麻豆 | 国产精品美女久久久久久| 91麻豆蜜桃一区二区三区| 国产精品自拍在线| 国产在线不卡一区| 国产呦精品一区二区三区网站| 天堂蜜桃91精品| 久久成人免费电影| 蜜桃久久精品一区二区| 激情综合网天天干| 精品综合久久久久久8888| 国产一区二区三区免费| 久久精品国产亚洲aⅴ| 久久在线免费观看| 国产精品电影一区二区| 中文字幕一区二区三区精华液| 亚洲三级在线免费| 亚洲一区在线视频观看| 秋霞影院一区二区| 国模套图日韩精品一区二区| 成人一区二区在线观看| 成人免费毛片aaaaa**| 欧洲在线/亚洲| 欧美电影在线免费观看| 久久久亚洲午夜电影| 国产精品嫩草影院com| 一区二区成人在线| 日韩激情视频网站| 日韩和的一区二区| 美女免费视频一区二区| 三级成人在线视频| 成人理论电影网| 欧亚一区二区三区| 国产色爱av资源综合区| 国产精品另类一区| 日韩va亚洲va欧美va久久| 久久精品国产77777蜜臀| 国产精品亚洲а∨天堂免在线| av不卡在线观看| 91精品国产色综合久久 | 青青草原综合久久大伊人精品优势| 国产成人av一区| 91麻豆6部合集magnet| 欧美成人video| 亚洲三级免费电影|