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

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

?? 75x_uart.c

?? FreeRTOS V4.2.1,增加了AVR32 UC3 和 LPC2368 的支持
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name          : 75x_uart.c
* Author             : MCD Application Team
* Date First Issued  : 03/10/2006
* Description        : This file provides all the UART software functions.
********************************************************************************
* History:
* 07/17/2006 : V1.0
* 03/10/2006 : V0.1
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "75x_uart.h"
#include "75x_mrcc.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* UART LIN Mask */
#define UART_LIN_Disable_Mask           0xFEFF /* LIN Disable Mask */
#define UART_LIN_Enable_Mask            0x0100 /* LIN Enable Mask */

/* UART Mask */
#define UART_Enable_Mask                0x0001 /* UART Enable Mask */
#define UART_Disable_Mask               0xFFFE /* UART Disable Mask */

/* UART LoopBack */
#define UART_LoopBack_Disable_Mask      0xFF7F/* LoopBack Disable Mask */
#define UART_LoopBack_Enable_Mask       0x0080/* LoopBack Enable Mask */

#define UART_WordLength_Mask            0xFF9F  /* UART Word Length Mask */
#define UART_Parity_Mask                0xFF79  /* UART Parity Mask */
#define UART_HardwareFlowControl_Mask   0x3FFF  /* UART Hardware Flow Control Mask */
#define UART_TxRxFIFOLevel_Mask         0xFFC0  /* UART Tx Rx FIFO Level Mask */
#define UART_LINBreakLength_Mask        0xE1FF  /* UART LIN Break Length Mask */
#define UART_BreakChar_Mask             0x0001  /* UART Break Character send Mask */
#define UART_FLAG_Mask                  0x1F    /* UART Flag Mask */
#define UART_Mode_Mask                  0xFCFF  /* UART Mode Mask */
#define UART_RTSSET_Mask                0xF7FF  /* RTS signal is high */
#define UART_RTSRESET_Mask              0x0800  /* RTS signal is low */

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : UART_DeInit
* Description    : Deinitializes the UARTx peripheral registers to their default
*                  reset values.
* Input          : UARTx: where x can be 0,1 or 2 to select the UART peripheral.
* Output         : None
* Return         : None
*******************************************************************************/
void UART_DeInit(UART_TypeDef* UARTx)
{
  /* Reset the UARTx registers values */
  if(UARTx == UART0)
  {
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_UART0,ENABLE);
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_UART0,DISABLE);
  }
  else if(UARTx == UART1)
  {
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_UART1,ENABLE);
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_UART1,DISABLE);
  }
  else if(UARTx == UART2)
  {
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_UART2,ENABLE);
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_UART2,DISABLE);
  }
}

/*******************************************************************************
* Function Name  : UART_Init
* Description    : Initializes the UARTx peripheral according to the specified
*                  parameters in the UART_InitStruct .
* Input          : - UARTx: where x can be 0,1or 2 to select the UART peripheral.
*                  - UART_InitStruct: pointer to a UART_InitTypeDef structure
*                    that contains the configuration information for the
*                    specified UART peripheral.
* Output         : None
* Return         : None
*******************************************************************************/
void UART_Init(UART_TypeDef* UARTx, UART_InitTypeDef* UART_InitStruct)
{

  u32 APBClock = 0;
  u32 IntegerDivider = 0;
  u32 FractionalDivider = 0;
  MRCC_ClocksTypeDef  MRCC_ClocksStatus;
     
  /* Clear the WLEN bits */
  UARTx->LCR &= UART_WordLength_Mask;
  /* Set the WLEN bits according to UART_WordLength value */
  UARTx->LCR |= UART_InitStruct->UART_WordLength;

  /* Choose Stop Bits */
  if(UART_InitStruct->UART_StopBits == UART_StopBits_1)
  {
    /* One Stop Bit */
    UARTx->LCR &= UART_StopBits_1;
  }
  else
  {
    /* Two Stop Bits */
    UARTx->LCR |= UART_StopBits_2;
  }

  /* Clear SPS, EPS and PEN bits */
  UARTx->LCR &= UART_Parity_Mask;
  /* Set PS, EPS and PEN bits according to UART_Parity value */
  UARTx->LCR |= UART_InitStruct->UART_Parity;

  /* Configure the BaudRate --------------------------------------------------*/
  /* Get the APB frequency */
  MRCC_GetClocksStatus(&MRCC_ClocksStatus);
  APBClock = MRCC_ClocksStatus.PCLK_Frequency;
  
  /* Determine the integer part */
  IntegerDivider = ((100) * (APBClock) / (16 * (UART_InitStruct->UART_BaudRate)));
  UARTx->IBRD = IntegerDivider / 100; 

  /* Determine the fractional part */
  FractionalDivider = IntegerDivider - (100 * (UARTx->IBRD));
  UARTx->FBRD = ((((FractionalDivider * 64) + 50) / 100));
  
  /* Choose the Hardware Flow Control */
  /* Clear RTSEn and CTSEn bits */
  UARTx->CR &=  UART_HardwareFlowControl_Mask;
  /* Set RTSEn and CTSEn bits according to UART_HardwareFlowControl value */
  UARTx->CR |= UART_InitStruct->UART_HardwareFlowControl;

  /* Configure the UART mode */
  /* Clear TXE and RXE bits */
  UARTx->CR &= UART_Mode_Mask;
  /* Set TXE and RXE bits according to UART_Mode value */
  UARTx->CR |= UART_InitStruct->UART_Mode;

  /* Enable or disable the FIFOs */
  /* Set the FIFOs Levels */
  if(UART_InitStruct->UART_FIFO == UART_FIFO_Enable)
  {
    /* Enable the FIFOs */
    UARTx->LCR |= UART_FIFO_Enable;
    
    /* Clear TXIFLSEL and RXIFLSEL bits */
    UARTx->IFLS &=  UART_TxRxFIFOLevel_Mask;
    
    /* Set RXIFLSEL bits according to UART_RxFIFOLevel value */
    UARTx->IFLS |= (UART_InitStruct->UART_RxFIFOLevel << 3);
    
    /* Set TXIFLSEL bits according to UART_TxFIFOLevel value */
    UARTx->IFLS |= UART_InitStruct->UART_TxFIFOLevel;
  }
  else
  {
    /* Disable the FIFOs */
    UARTx->LCR &= UART_FIFO_Disable;
  }
}

/*******************************************************************************
* Function Name  : UART_StructInit
* Description    : Fills each UART_InitStruct member with its default value.
* Input          : UART_InitStruct: pointer to a UART_InitTypeDef structure which
*                  will be initialized.
* Output         : None
* Return         : None
*******************************************************************************/
void UART_StructInit(UART_InitTypeDef* UART_InitStruct)
{
  /* UART_InitStruct members default value */
  UART_InitStruct->UART_WordLength = UART_WordLength_8D;
  UART_InitStruct->UART_StopBits = UART_StopBits_1;
  UART_InitStruct->UART_Parity = UART_Parity_Odd ;
  UART_InitStruct->UART_BaudRate = 9600;
  UART_InitStruct->UART_HardwareFlowControl = UART_HardwareFlowControl_None;
  UART_InitStruct->UART_Mode = UART_Mode_Tx_Rx;
  UART_InitStruct->UART_FIFO = UART_FIFO_Enable;
  UART_InitStruct->UART_TxFIFOLevel = UART_FIFOLevel_1_2;
  UART_InitStruct->UART_RxFIFOLevel = UART_FIFOLevel_1_2;
}

/*******************************************************************************
* Function Name  : UART_Cmd
* Description    : Enables or disables the specified UART peripheral.
* Input          : - UARTx: where x can be 0,1 or 2 to select the UART peripheral
*                  - NewState: new state of the UARTx peripheral.
*                    This parameter can be: ENABLE or DISABLE.
* Output         : None
* Return         : None
*******************************************************************************/
void UART_Cmd(UART_TypeDef* UARTx, FunctionalState NewState)
{
  if (NewState == ENABLE)
  {
    /* Enable the selected UART by setting the UARTEN bit in the CR register */
    UARTx->CR |= UART_Enable_Mask;
  }
  else
  {
    /* Disable the selected UART by clearing the UARTEN bit in the CR register */
    UARTx->CR &= UART_Disable_Mask;
  }
}

/*******************************************************************************
* Function Name  : UART_ITConfig
* Description    : Enables or disables the specified UART interrupts.
* Input          : - UARTx: where x can be 0,1 or 2 to select the UART peripheral
*                  - UART_IT: specifies the UART interrupts sources to be 
*                    enabled or disabled. This parameter can be any combination 
*                    of the following values:                   
*                       - UART_IT_OverrunError: Overrun Error interrupt
*                       - UART_IT_BreakError: Break Error interrupt
*                       - UART_IT_ParityError: Parity Error interrupt
*                       - UART_IT_FrameError: Frame Error interrupt
*                       - UART_IT_ReceiveTimeOut: Receive Time Out interrupt
*                       - UART_IT_Transmit: Transmit interrupt
*                       - UART_IT_Receive: Receive interrupt
*                       - UART_IT_CTS: CTS interrupt 
*                  - NewState: new state of the UARTx peripheral.
*                  This parameter can be: ENABLE or DISABLE.
* Output         : None
* Return         : None
*******************************************************************************/
void UART_ITConfig(UART_TypeDef* UARTx, u16 UART_IT, FunctionalState NewState)
{
  if(NewState == ENABLE)
  {
    /* Enables the selected interrupts */
    UARTx->IMSC |= UART_IT;
  }
  else
  {
    /* Disables the selected interrupts */
    UARTx->IMSC &= ~UART_IT;
  }
}

/*******************************************************************************
* Function Name  : UART_DMAConfig
* Description    : Configures the UART0 DMA interface.
* Input          : - UART0_DMAtransfer : specifies the configuration of DMA request.
*                    This parameter can be:
*                         - UART0_DMATransfer_Single: Single DMA transfer
*                         - UART0_DMATransfer_Burst: Burst DMA transfer
*                  - UART0_DMAOnError: specifies the DMA on error request.
*                    This parameter can be:
*                         - UART0_DMAOnError_Enable: DMA receive request enabled
*                           when the UART error interrupt is asserted.
*                         - UART0_DMAOnError_Disable: DMA receive request disabled
*                           when the UART error interrupt is asserted.
* Output         : None
* Return         : None
*******************************************************************************/
void UART_DMAConfig(u16 UART0_DMATransfer, u16 UART0_DMAOnError)
{
  if(UART0_DMATransfer == UART0_DMATransfer_Single)
  {
    /* Configure the DMA request from the UART0 as single transfer */
    UART0->DMACR &= UART0_DMATransfer_Single;
  }
  else
  {
    UART0->DMACR |= UART0_DMATransfer_Burst;
  }
  
  if(UART0_DMAOnError == UART0_DMAOnError_Enable)
  {
    UART0->DMACR &= UART0_DMAOnError_Enable;
  }
  else
  {
    UART0->DMACR |= UART0_DMAOnError_Disable;
  }
}

/*******************************************************************************
* Function Name  : UART_DMACmd
* Description    : Enables or disables the UART0抯 DMA interface.
* Input          : - UART0_DMAReq: specifies the DMA request.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧日韩精品视频| 亚洲一区二区精品视频| 亚洲国产成人av网| 国产精品123| 欧美日本在线播放| 国产欧美日韩视频一区二区| 欧美aaaaaa午夜精品| 99re8在线精品视频免费播放| 精品国内二区三区| 日韩精品亚洲专区| 91福利区一区二区三区| 国产欧美日韩激情| 国产二区国产一区在线观看| 日韩欧美亚洲国产另类| 亚洲福利视频一区| 欧美日韩一区二区三区在线看| 国产精品久线在线观看| 国产不卡在线播放| 亚洲国产精品精华液ab| 国产91丝袜在线播放| 精品久久国产97色综合| 麻豆国产精品视频| 日韩免费一区二区| 麻豆极品一区二区三区| 日韩精品在线一区二区| 日韩精品色哟哟| 激情国产一区二区| 亚洲成在线观看| 99久久综合精品| 欧美国产欧美综合| 精品一区二区免费看| 日韩欧美中文字幕精品| 免费观看30秒视频久久| 欧美va亚洲va| 国产精品资源网站| 欧美国产禁国产网站cc| 国产69精品久久777的优势| 亚洲国产精品t66y| 成人晚上爱看视频| 一区在线观看视频| 欧美唯美清纯偷拍| 日本最新不卡在线| 精品国产123| 国产精品资源网| 亚洲欧美在线aaa| 欧美午夜电影网| 欧美国产日本韩| av在线播放成人| 一区二区三区日韩在线观看| 欧美日韩久久一区| 经典三级视频一区| 日韩一区中文字幕| 欧美日韩免费高清一区色橹橹| 日本欧美一区二区| 国产婷婷一区二区| 欧美亚洲尤物久久| 精品影院一区二区久久久| 久久免费电影网| 色94色欧美sute亚洲线路二| 日本不卡123| 亚洲国产高清aⅴ视频| 欧美中文字幕一区| 国产一区在线观看视频| 亚洲免费资源在线播放| 日韩欧美国产电影| 99国产精品久久久久| 日本不卡一区二区| 国产精品视频一二| 欧美日韩高清一区二区三区| 国产精品一区二区在线观看网站| 亚洲一区在线免费观看| 精品国产乱码久久久久久图片| 成人国产精品免费观看视频| 日韩精品午夜视频| 综合分类小说区另类春色亚洲小说欧美| 欧美三区在线观看| 成人中文字幕电影| 男男gaygay亚洲| 又紧又大又爽精品一区二区| 26uuu亚洲| 欧美日韩精品一区二区天天拍小说 | 久久蜜臀精品av| 欧美午夜不卡在线观看免费| 成人av综合一区| 免费成人在线视频观看| 亚洲专区一二三| 国产精品福利一区| 国产亚洲欧洲一区高清在线观看| 欧美日韩国产综合草草| 99精品久久只有精品| 狠狠色2019综合网| 日韩vs国产vs欧美| 亚洲一区二区三区四区在线观看| 日本一区二区不卡视频| 久久亚洲精华国产精华液| 欧美午夜电影一区| 日本道色综合久久| 9色porny自拍视频一区二区| 国产精品一区二区果冻传媒| 久久精品国产99国产精品| 日韩成人午夜电影| 亚洲成人午夜电影| 亚洲一区二区三区在线| 一区二区三区.www| 亚洲女同女同女同女同女同69| 国产精品福利一区二区| 中文av一区二区| 中文字幕不卡在线观看| 国产清纯白嫩初高生在线观看91| 精品福利二区三区| 欧美精品一区二区三区很污很色的| 日韩亚洲欧美一区二区三区| 91精品国产综合久久久蜜臀图片| 欧美高清性hdvideosex| 欧美美女一区二区| 欧美一区二区免费视频| 欧美一区欧美二区| 精品国产91洋老外米糕| 国产亚洲精品bt天堂精选| 久久久久久日产精品| 久久精品人人爽人人爽| 国产欧美日韩精品一区| 亚洲欧美在线另类| 亚洲国产毛片aaaaa无费看| 调教+趴+乳夹+国产+精品| 日韩精品色哟哟| 精品中文av资源站在线观看| 国内精品第一页| 波多野结衣在线一区| 色综合色综合色综合| 欧美羞羞免费网站| 日韩精品一区在线| 欧美国产亚洲另类动漫| 亚洲图片你懂的| 亚洲国产精品久久一线不卡| 日本不卡不码高清免费观看| 国产一区二区不卡| 94-欧美-setu| 在线成人av网站| 国产日产欧美一区| 亚洲福利一区二区三区| 久久精品国产一区二区| 成人动漫精品一区二区| 欧美午夜精品免费| 久久免费美女视频| 一个色综合网站| 国产麻豆欧美日韩一区| 91成人免费网站| 精品国产第一区二区三区观看体验| 中文字幕av一区二区三区免费看| 亚洲制服欧美中文字幕中文字幕| 精品写真视频在线观看| 色婷婷国产精品| 日韩欧美一区在线| 亚洲视频网在线直播| 美女www一区二区| 91丨porny丨户外露出| 91精品福利在线一区二区三区| 日本一区二区免费在线| 午夜国产精品一区| 成人h动漫精品一区二| 日韩欧美一区二区不卡| 尤物在线观看一区| 成人午夜av电影| 日韩午夜在线影院| 一区二区在线观看不卡| 国产精品91一区二区| 欧美日韩国产影片| 亚洲视频一区二区免费在线观看| 久久99精品国产.久久久久| 91蜜桃传媒精品久久久一区二区| 精品动漫一区二区三区在线观看| 一区二区三区高清在线| www.色精品| 久久网这里都是精品| 日韩在线观看一区二区| 欧美伊人久久大香线蕉综合69 | 国产精品自拍网站| 91麻豆精品国产91久久久使用方法| 中文字幕制服丝袜一区二区三区| 国模无码大尺度一区二区三区| 这里只有精品电影| 亚洲夂夂婷婷色拍ww47| 色婷婷综合五月| 自拍偷拍亚洲欧美日韩| 国产福利一区二区| 欧美成人免费网站| 青青草97国产精品免费观看无弹窗版| 色婷婷国产精品综合在线观看| 国产精品超碰97尤物18| 成人99免费视频| 国产精品国产精品国产专区不蜜| 国产激情一区二区三区四区| 久久久精品国产免大香伊| 国产在线不卡一区| 久久午夜国产精品| 国产精品自拍网站| 中文字幕欧美激情一区| 国产suv精品一区二区883| 国产欧美一区二区精品仙草咪|