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

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

?? uart.c

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

#include "uart.h"

//-------------------------------------------------------------------------*
//函數名: uart_init                                                        *
//功  能: 初始化uartx模塊。                                                *
//參  數: uartch:串口號                                                    *
//        sysclk:系統總線時鐘,以MHz為單位                                 *
//        baud:波特率,如9600,38400等,一般來說,速度越慢,通信越穩       *
//返  回: 無                                                               *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
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;
								
	//禁止發送接受
	UART_C2_REG(uartch) &= ~(UART_C2_TE_MASK
				| UART_C2_RE_MASK );
	
	//配置成8位無校驗模式
	UART_C1_REG(uartch) = 0;
	
	//計算波特率,串口0、1使用內核時鐘,其它串口使用外設時鐘,系統時鐘為
	//外設時鐘的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);    
	
	//使能發送接受
	UART_C2_REG(uartch) |= (UART_C2_TE_MASK
				| UART_C2_RE_MASK );
}

//-------------------------------------------------------------------------*
//函數名: uart_re1                                                         *
//功  能: 串行接受1個字節                                                  *
//參  數: uartch: 串口號                                                   *
//         ch:    接收到的字節                                             *
//返  回: 成功: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)//判斷接收緩沖區是否滿
		{
			*ch = UART_D_REG(uartch);
			return 1; 			//接受成功
		} 
	if(k>=0xfbbb) 
	{
		return 0;			//接受失敗
	} 
    return 0;
}

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

//-------------------------------------------------------------------------*
//函數名: uart_reN                                                         *
//功  能: 串行 接收n個字節                                                 *
//參  數: uartch: 串口號                                                   *
//        buff: 接收緩沖區                                                 *
//		  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;          //接收成功
    
}

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

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

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















?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情综合五月色丁香| 中文字幕一区二区三区蜜月 | 欧美日韩精品高清| 狠狠色狠狠色综合日日91app| 亚洲人成人一区二区在线观看 | 91免费国产在线| 青青草97国产精品免费观看 | 国产精品国产精品国产专区不蜜| 欧美中文字幕一区二区三区| 国产成人日日夜夜| 男女男精品视频网| 亚洲线精品一区二区三区| 久久精品一二三| 日韩精品专区在线影院重磅| 欧美亚男人的天堂| 懂色av一区二区在线播放| 日韩中文字幕一区二区三区| 亚洲欧美成人一区二区三区| 欧美激情一区二区三区在线| 精品日韩99亚洲| 777午夜精品免费视频| 91福利在线导航| 99久久精品国产导航| 国产麻豆精品久久一二三| 午夜电影一区二区三区| 一区二区三区国产精华| 中日韩av电影| 久久久久国产免费免费| 欧美大片一区二区| 91精品国产91热久久久做人人| 一本色道久久综合亚洲aⅴ蜜桃 | 成人黄色在线视频| 精品一区二区三区不卡| 午夜精品国产更新| 午夜久久久久久久久| 亚洲国产日韩av| 一区二区理论电影在线观看| 亚洲色大成网站www久久九九| 国产精品卡一卡二| 亚洲欧美一区二区在线观看| 亚洲视频一区在线| 亚洲欧美激情在线| 亚洲免费看黄网站| 亚洲精品免费看| 亚洲免费观看在线观看| 一区二区三区中文字幕电影| 一区二区久久久| 亚洲一区二区偷拍精品| 亚洲国产一二三| 亚洲va欧美va人人爽午夜| 亚洲h精品动漫在线观看| 一区二区三区四区在线免费观看| 亚洲免费在线观看视频| 一区二区三区丝袜| 亚洲一区二区三区四区在线免费观看| 亚洲一区二区在线免费观看视频| 亚洲成人资源网| 日韩精品免费专区| 久久精品国产99| 国产成人aaa| 91丨porny丨在线| 欧美日韩激情在线| 日韩一区二区在线观看视频| 亚洲精品一区二区在线观看| 中文字幕av一区二区三区| 综合久久国产九一剧情麻豆| 亚洲国产成人高清精品| 狠狠色丁香九九婷婷综合五月| 国产激情视频一区二区三区欧美| 夫妻av一区二区| 一本大道综合伊人精品热热| 欧美三级三级三级爽爽爽| 日韩一级高清毛片| 国产精品你懂的| 水野朝阳av一区二区三区| 国产一二三精品| 日本国产一区二区| 日韩视频中午一区| 国产精品免费av| 亚洲成年人影院| 国产剧情一区二区| 99视频有精品| 日韩欧美一卡二卡| 亚洲三级在线看| 日本欧美在线看| 成人a级免费电影| 欧美肥妇bbw| 国产精品久久看| 日韩精品一二三| 成人免费高清视频| 91精品国产aⅴ一区二区| 亚洲成人动漫一区| 国产精品亚洲午夜一区二区三区| 成人激情免费网站| 欧美精品高清视频| 亚洲色图视频免费播放| 久久99热这里只有精品| 91色视频在线| 久久亚洲欧美国产精品乐播| 一区二区激情视频| 丁香婷婷综合色啪| 欧美一区在线视频| 一区二区三区四区在线| 国产mv日韩mv欧美| 欧美tk—视频vk| 视频在线在亚洲| 91美女片黄在线观看91美女| 久久久电影一区二区三区| 日韩黄色在线观看| 成人黄色免费短视频| 欧美乱妇15p| 亚洲精品国产第一综合99久久 | 日日噜噜夜夜狠狠视频欧美人| 99久久免费国产| 国产日本欧美一区二区| 久久激情五月婷婷| 在线不卡a资源高清| 亚洲品质自拍视频| 97精品电影院| 国产精品国产三级国产aⅴ入口| 国内精品国产三级国产a久久| 欧美日本一区二区在线观看| 亚洲激情图片一区| 91丨九色丨黑人外教| 国产色综合久久| 精东粉嫩av免费一区二区三区| 欧美日本免费一区二区三区| 亚洲欧美激情插| 成人国产精品免费观看视频| 国产欧美一区二区精品性色| 国产一区啦啦啦在线观看| 日韩欧美一区中文| 蜜乳av一区二区三区| 91精品国产91久久久久久最新毛片| 亚洲va韩国va欧美va精品| 欧美日韩在线播放三区| 亚洲国产视频a| 欧美日韩不卡一区| 亚洲一区二区精品久久av| 91福利在线导航| 性做久久久久久免费观看欧美| 欧美中文字幕一区二区三区亚洲| 亚洲免费av网站| 欧美综合亚洲图片综合区| 五月天精品一区二区三区| 欧美高清视频在线高清观看mv色露露十八 | 91精品国产综合久久蜜臀| 日日摸夜夜添夜夜添国产精品| 欧美日本不卡视频| 久久精品噜噜噜成人av农村| 欧美成人免费网站| 国产精品996| 一区二区中文字幕在线| 在线精品视频免费观看| 亚洲成人第一页| 欧美成人性战久久| 国产精品香蕉一区二区三区| 日韩美女啊v在线免费观看| 欧美日韩美少妇| 老司机精品视频在线| 国产亚洲一二三区| 色综合中文综合网| 青青草97国产精品免费观看无弹窗版| 日韩限制级电影在线观看| 国产麻豆日韩欧美久久| 亚洲视频在线观看三级| 这里只有精品视频在线观看| 国产精品一区二区在线看| ...av二区三区久久精品| 欧美日韩国产综合一区二区| 久久av老司机精品网站导航| 国产女人18毛片水真多成人如厕| 色偷偷成人一区二区三区91| 日本欧洲一区二区| 国产精品乱子久久久久| 91麻豆精品国产91久久久久久| 国产在线精品国自产拍免费| 一区二区三区四区不卡视频| 精品国偷自产国产一区| 色欲综合视频天天天| 青娱乐精品视频| 亚洲视频在线一区观看| 欧美tk丨vk视频| 在线看国产日韩| 大陆成人av片| 捆绑调教美女网站视频一区| 亚洲欧美一区二区三区孕妇| 日韩精品一区二区三区四区视频 | 日韩欧美激情一区| jiyouzz国产精品久久| 蜜臀va亚洲va欧美va天堂| 亚洲图片欧美激情| 欧美va在线播放| 欧美性感一区二区三区| 国产精品一区二区三区四区| 亚洲一二三四在线| 中文一区在线播放| 日韩欧美中文字幕精品| 在线观看av一区二区| 成人免费观看av|