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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uart.c

?? Cortex-M4+example
?? C
字號:
//-------------------------------------------------------------------------*
// 文件名: uart.c                                                          *
// 說  明: uart構(gòu)件源文件                                                  *
//-------------------------------------------------------------------------*

#include "uart.h"

//-------------------------------------------------------------------------*
//函數(shù)名: uart_init                                                        *
//功  能: 初始化uartx模塊。                                                *
//參  數(shù): uartch:串口號                                                    *
//        sysclk:系統(tǒng)總線時鐘,以MHz為單位                                 *
//        baud:波特率,如9600,38400等,一般來說,速度越慢,通信越穩(wěn)       *
//返  回: 無                                                               *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
void uart_init (UART_MemMapPtr uartch, uint32 sysclk, uint32 baud)
{
	register uint16 sbr, brfa;
	uint8 temp;

	//使能引腳
	if (uartch == UART0_BASE_PTR)
	{
		//在PTD6上使能UART0_TXD功能
		PORTD_PCR6 = PORT_PCR_MUX(0x3);
		//在PTD7上使能UART0_RXD
		PORTD_PCR7 = PORT_PCR_MUX(0x3); 
	}else if (uartch == UART1_BASE_PTR)
	{
		//在PTC4上使能UART1_TXD功能
		PORTC_PCR4 = PORT_PCR_MUX(0x3); 
		
		//在PTC3上使能UART1_RXD
		PORTC_PCR3 = PORT_PCR_MUX(0x3); 
	}else if (uartch == UART2_BASE_PTR)
	{
		//在PTD3上使能UART2_TXD功能
		PORTD_PCR3 = PORT_PCR_MUX(0x3); 
		//在PTD2上使能UART2_RXD
		PORTD_PCR2 = PORT_PCR_MUX(0x3); 
	}else if (uartch == UART3_BASE_PTR)
	{
		//在PTC17上使能UART3_TXD功能
		PORTC_PCR17 = PORT_PCR_MUX(0x3); 
		//在PTC16上使能UART3_RXD
		PORTC_PCR16 = PORT_PCR_MUX(0x3); 
	}else if (uartch == UART4_BASE_PTR)
	{
		//在PTE24上使能UART4_TXD功能
		PORTE_PCR24 = PORT_PCR_MUX(0x3); 
		//在PTE25上使能UART4_RXD
		PORTE_PCR25 = PORT_PCR_MUX(0x3); 
	}else if (uartch == UART5_BASE_PTR)
	{
		//在PTE8上使能UART5_TXD功能
		PORTE_PCR8 = PORT_PCR_MUX(0x3); 
		//在PTE9上使能UART5_RXD
		PORTE_PCR9 = PORT_PCR_MUX(0x3); 
	}
	 
	//使能串口時鐘    
	if(uartch == UART0_BASE_PTR)
		SIM_SCGC4 |= SIM_SCGC4_UART0_MASK;
	else
		if (uartch == UART1_BASE_PTR)
			SIM_SCGC4 |= SIM_SCGC4_UART1_MASK;
		else
			if (uartch == UART2_BASE_PTR)
				SIM_SCGC4 |= SIM_SCGC4_UART2_MASK;
			else
				if(uartch == UART3_BASE_PTR)
					SIM_SCGC4 |= SIM_SCGC4_UART3_MASK;
				else
					if(uartch == UART4_BASE_PTR)
						SIM_SCGC1 |= SIM_SCGC1_UART4_MASK;
					else
						SIM_SCGC1 |= SIM_SCGC1_UART5_MASK;
								
	//禁止發(fā)送接受
	UART_C2_REG(uartch) &= ~(UART_C2_TE_MASK
				| UART_C2_RE_MASK );
	
	//配置成8位無校驗?zāi)J?	UART_C1_REG(uartch) = 0;
	
	//計算波特率,串口0、1使用內(nèi)核時鐘,其它串口使用外設(shè)時鐘,系統(tǒng)時鐘為
	//外設(shè)時鐘的2倍
	if ((uartch == UART0_BASE_PTR) | (uartch == UART1_BASE_PTR))//
		sysclk+=sysclk;
	
	sbr = (uint16)((sysclk*1000)/(baud * 16));
	temp = UART_BDH_REG(uartch) & ~(UART_BDH_SBR(0x1F));
	UART_BDH_REG(uartch) = temp |  UART_BDH_SBR(((sbr & 0x1F00) >> 8));
	UART_BDL_REG(uartch) = (uint8)(sbr & UART_BDL_SBR_MASK);
	brfa = (((sysclk*32000)/(baud * 16)) - (sbr * 32));
	temp = UART_C4_REG(uartch) & ~(UART_C4_BRFA(0x1F));
	UART_C4_REG(uartch) = temp |  UART_C4_BRFA(brfa);    
	
	//使能發(fā)送接受
	UART_C2_REG(uartch) |= (UART_C2_TE_MASK
				| UART_C2_RE_MASK );
}

//-------------------------------------------------------------------------*
//函數(shù)名: uart_re1                                                         *
//功  能: 串行接受1個字節(jié)                                                  *
//參  數(shù): uartch: 串口號                                                   *
//         ch:    接收到的字節(jié)                                             *
//返  回: 成功:1;失敗:0                                                    *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
uint8 uart_re1 (UART_MemMapPtr uartch,uint8 *ch)
{
    uint32 k;
    
    for (k = 0; k < 0xfbbb; k++)//有時間限制
		if((UART_S1_REG(uartch) & UART_S1_RDRF_MASK)!= 0)//判斷接收緩沖區(qū)是否滿
		{
			*ch = UART_D_REG(uartch);
			return 1; 			//接受成功
		} 
	if(k>=0xfbbb) 
	{
		return 0;			//接受失敗
	} 
    return 0;
}

//-------------------------------------------------------------------------*
//函數(shù)名: uart_send1                                                       *
//功  能: 串行發(fā)送1個字節(jié)                                                  *
//參  數(shù): uartch: 串口號                                                   *
//         ch:    要發(fā)送的字節(jié)                                             *
//返  回: 無                                                               *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
void uart_send1 (UART_MemMapPtr uartch, uint8 ch)
{
    //等待發(fā)送緩沖區(qū)空
    while(!(UART_S1_REG(uartch) & UART_S1_TDRE_MASK));
    //發(fā)送數(shù)據(jù)
    UART_D_REG(uartch) = (uint8)ch;
 }

//-------------------------------------------------------------------------*
//函數(shù)名: uart_reN                                                         *
//功  能: 串行 接收n個字節(jié)                                                 *
//參  數(shù): uartch: 串口號                                                   *
//        buff: 接收緩沖區(qū)                                                 *
//		  len:接收長度                                             *
//返  回: 1:成功;0:失敗                                                    *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
uint8 uart_reN (UART_MemMapPtr uartch ,uint8* buff,uint16 len)
{
    uint16 m=0; 
    while (m < len)
    { 	          
  	    if(0==uart_re1(uartch,&buff[m]))
  	    	return 0;  //接收失敗
  	    else m++;
    } 
    
    return 1;          //接收成功
    
}

//-------------------------------------------------------------------------*
//函數(shù)名: uart_sendN                                                       *
//功  能: 串行 接收n個字節(jié)                                                 *
//參  數(shù): uartch: 串口號                                                   *
//        buff: 發(fā)送緩沖區(qū)                                                 *
//		  len:發(fā)送長度                                             *
//返  回: 無                                                               *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
void uart_sendN (UART_MemMapPtr uartch ,uint8* buff,uint16 len)
{
    int i;
	for(i=0;i<len;i++)
    {
		uart_send1(uartch,buff[i]);
    }
}

//-------------------------------------------------------------------------*
//函數(shù)名: enableuartreint                                                  *
//功  能: 開串口接收中斷                                                   *
//參  數(shù): uartch: 串口號                                                   *
//        irqno: 對應(yīng)irq號                                                 *
//返  回: 無                                                               *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
void enableuartreint(UART_MemMapPtr uartch,uint8 irqno)
{
	UART_C2_REG(uartch)|=UART_C2_RIE_MASK;   //開放UART接收中斷
	enable_irq(irqno);			 //開接收引腳的IRQ中斷
}

//-------------------------------------------------------------------------*
//函數(shù)名: disableuartreint                                                 *
//功  能: 關(guān)串口接收中斷                                                   *
//參  數(shù): uartch: 串口號                                                   *
//        irqno: 對應(yīng)irq號                                                 *
//返  回: 無                                                               *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
void disableuartreint(UART_MemMapPtr uartch,uint8 irqno)
{
	UART_C2_REG(uartch)&=~UART_C2_RIE_MASK;   //禁止UART接收中斷
	disable_irq(irqno);			  //關(guān)接收引腳的IRQ中斷
}















?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品在线一区二区| 国产精品伦理在线| 中文字幕av一区二区三区免费看 | 在线中文字幕一区| 日韩免费一区二区| 亚洲18色成人| 波多野结衣一区二区三区 | 欧美色图激情小说| 国产精品青草久久| 久久精品国产精品青草| 91黄色在线观看| 国产精品妹子av| 韩国v欧美v日本v亚洲v| 欧美一区二区三区啪啪| 亚洲成a天堂v人片| 91成人在线免费观看| 国产精品久久久久久久久久久免费看 | 亚洲欧洲日产国码二区| 国产很黄免费观看久久| 日韩区在线观看| 五月激情丁香一区二区三区| 色噜噜久久综合| 中文字幕亚洲在| 成人av高清在线| 久久精品人人做人人爽人人| 国精产品一区一区三区mba桃花| 日韩一区二区精品葵司在线| 日韩电影在线观看一区| 欧美乱妇15p| 日韩影院免费视频| 欧美日韩一区二区电影| 午夜不卡在线视频| 91麻豆精品国产91久久久久久久久 | 一区二区三区在线视频观看58| av不卡免费在线观看| 最新高清无码专区| 色综合视频在线观看| 一区二区三区毛片| 91精品在线观看入口| 色综合久久天天综合网| 精品久久人人做人人爽| 日韩黄色小视频| 精品久久久久久久人人人人传媒 | 久久精品一区八戒影视| 国产乱码精品一区二区三| 久久久久久毛片| 国产精品2024| 亚洲柠檬福利资源导航| 欧美综合天天夜夜久久| 日韩精品高清不卡| 精品国产伦一区二区三区观看方式 | 色综合久久88色综合天天免费| 一区二区三区在线观看欧美| 欧美视频完全免费看| 美腿丝袜亚洲综合| 国产亚洲va综合人人澡精品| 91视频com| 日韩综合在线视频| 国产亚洲精品aa| 精品视频色一区| 精品一区二区三区视频在线观看| 国产精品午夜在线观看| 欧洲另类一二三四区| 国产又黄又大久久| 亚洲激情图片qvod| 精品国产人成亚洲区| 97se亚洲国产综合在线| 日本成人超碰在线观看| 国产日韩精品久久久| 91成人免费在线| 国产精品538一区二区在线| 一级特黄大欧美久久久| 久久久久国产精品麻豆ai换脸| 在线免费观看成人短视频| 狠狠色综合播放一区二区| 亚洲精品网站在线观看| 久久久高清一区二区三区| 欧美日韩一区高清| 97精品电影院| 国产成人av一区二区三区在线| 亚洲成人精品影院| 亚洲欧洲日韩在线| 国产日产欧美一区| 欧美一级国产精品| 在线观看欧美精品| 成人a免费在线看| 韩国v欧美v日本v亚洲v| 日韩综合小视频| 一区二区三区在线视频免费| 欧美—级在线免费片| 欧美不卡视频一区| 欧美巨大另类极品videosbest | 日本高清视频一区二区| 国产成人亚洲综合a∨猫咪| 日本aⅴ免费视频一区二区三区| 亚洲图片你懂的| 国产欧美va欧美不卡在线| ww久久中文字幕| 91精品国产一区二区三区蜜臀| 91精品办公室少妇高潮对白| 不卡的电视剧免费网站有什么| 久久电影网站中文字幕| 日韩国产精品久久久久久亚洲| 亚洲午夜精品在线| 亚洲无人区一区| 亚洲影院理伦片| 亚洲一区二区成人在线观看| 一区二区三区色| 伊人夜夜躁av伊人久久| 日韩码欧中文字| 国产精品嫩草影院com| 欧美国产激情一区二区三区蜜月| 精品福利一二区| 26uuu欧美| 久久久久久9999| 国产精品久久久久久久久图文区 | 日韩欧美精品三级| 欧美一级午夜免费电影| 91精品久久久久久久99蜜桃| 91精品国产一区二区| 欧美精品免费视频| 欧美一区二区免费| 精品国产一区二区三区av性色| 久久―日本道色综合久久| 国产亚洲一区二区三区在线观看| 久久精品一区蜜桃臀影院| 中文在线资源观看网站视频免费不卡| 国产精品乱码一区二三区小蝌蚪| 国产欧美一区二区三区网站| 亚洲视频网在线直播| 亚洲一二三四区不卡| 欧美日韩精品专区| 国产专区欧美精品| 国产精品主播直播| av成人老司机| 欧美日韩一区中文字幕| 欧美卡1卡2卡| 久久久高清一区二区三区| 国产精品国产精品国产专区不片| 亚洲丝袜制服诱惑| 亚洲成av人片在www色猫咪| 精品在线一区二区三区| 国产99久久久国产精品免费看| 91在线丨porny丨国产| 欧美三级三级三级爽爽爽| 日韩精品中文字幕在线不卡尤物| 国产精品素人视频| 亚洲成年人影院| 国产高清久久久久| 色噜噜偷拍精品综合在线| 日韩免费性生活视频播放| 国产精品乱人伦一区二区| 视频一区二区三区中文字幕| 国产精品性做久久久久久| 欧美色图第一页| 国产日韩亚洲欧美综合| 视频一区视频二区中文| 成人激情午夜影院| 欧美一区二区三区在线视频| 国产欧美日韩在线观看| 天堂成人免费av电影一区| 高清av一区二区| 日韩视频不卡中文| 中文字幕一区二区不卡| 久久97超碰国产精品超碰| 91精品福利在线| 久久精品男人天堂av| 亚洲一区二区视频在线观看| 97超碰欧美中文字幕| 69堂国产成人免费视频| 国产精品国产a| 国产美女主播视频一区| 欧美日韩和欧美的一区二区| 国产精品久久久久一区二区三区共 | 亚洲成va人在线观看| jlzzjlzz欧美大全| 久久久精品国产免费观看同学| 日本视频免费一区| 欧洲精品一区二区| 中文字幕一区二区三区视频| 国产最新精品免费| 欧美不卡一区二区三区| 全部av―极品视觉盛宴亚洲| 欧美日韩国产精品自在自线| 亚洲视频你懂的| av网站免费线看精品| 久久九九久精品国产免费直播| 精品一区二区三区蜜桃| 欧美一区二区三区思思人| 午夜精品福利在线| 欧美性受xxxx| 亚洲影视资源网| 欧洲国内综合视频| 亚洲在线中文字幕| 91国偷自产一区二区开放时间 | 在线精品视频免费观看| 亚洲欧美偷拍卡通变态| 国产91在线|亚洲| 久久久亚洲国产美女国产盗摄| 亚洲五月六月丁香激情|