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

📄 uartutil.c

📁 基于MMA7260QR2的跌落检查程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/************************************************************************************
* Includes the UART Utils.
*
* (c) Copyright 2008, Freescale Semiconductor, Inc. All rights reserved.
*
* No part of this document must be reproduced in any form - including copied,
* transcribed, printed or by any electronic means - without specific written
* permission from Freescale.
*
* Last Inspected:
* Last Tested:
*
************************************************************************************/
#include "../../PLM/Interface/EmbeddedTypes.h"
#include "../../PLM/LibInterface/Interrupt.h"
#include "../../SMAC/Interface/GlobalDefs.h"
#include "UartUtil.h"

/******************************************************************************/
/******************************************************************************/

/************************************************************************************
*************************************************************************************
* Private macros
*************************************************************************************
************************************************************************************/

/************************************************************************************
*************************************************************************************
* Private prototypes
*************************************************************************************/
void UartEventRead1(UartReadCallbackArgs_t* args);
void UartEventWrite2(UartWriteCallbackArgs_t* args);
void UartEventRead2(UartReadCallbackArgs_t* args);
void UartEventWrite1(UartWriteCallbackArgs_t* args);
void GpioUart1Init(void);
void GpioUart2Init(void);

/************************************************************************************
*************************************************************************************
* Private type definitions
*************************************************************************************
************************************************************************************/

/************************************************************************************
*************************************************************************************
* Public memory declarations
*************************************************************************************
************************************************************************************/
 
/************************************************************************************
*************************************************************************************
* Private memory declarations
*************************************************************************************
************************************************************************************/

UartReadStatus_t gu8SCIStatus = gUartReadStatusComplete_c;
uint8_t gu8SCIDataFlag = FALSE;
uint16_t gu16SCINumOfBytes = 0;

/************************************************************************************
*************************************************************************************
* Public functions
*************************************************************************************
************************************************************************************/

/************************************************************************************  
* Uart_Init
*
* Initializate the Uart module.
*************************************************************************************/
void Uart_Init(void) 
{
  UartConfig_t pConfig;
  UartCallbackFunctions_t pCallback;
  
#if gUart_PortDefault_d == UART_1

  //initialize GPIOs for UART1 and UART2 
  GpioUart1Init();  

  //configure the uart parameters 
  pConfig.UartParity = gUartParityNone_c;
  pConfig.UartStopBits = gUartStopBits1_c;
  pConfig.UartBaudrate = gUartDefaultBaud_c;
  pConfig.UartFlowControlEnabled = gUart1_EnableHWFlowControl_d;
  pConfig.UartRTSActiveHigh = FALSE;

  
  //mount the interrupts corresponding to UART driver
  IntAssignHandler(gUart1Int_c, (IntHandlerFunc_t)UartIsr1);
  ITC_SetPriority(gUart1Int_c, gItcNormalPriority_c);
  //enable the interrupts corresponding to UART driver
  ITC_EnableInterrupt(gUart1Int_c);

  //initialize the uart
  UartOpen(UART_1,gPlatformClock_c);  
  UartSetConfig(UART_1, &pConfig);  

#if gUart1_EnableHWFlowControl_d == TRUE
  UartSetCTSThreshold(UART_1, gUart_RxFlowControlSkew_d);
#endif

  //configure the Uart Rx and Tx Threshold
  UartSetTransmitterThreshold(UART_1, 5);
  UartSetReceiverThreshold(UART_1, 5);

  //set pCallback functions
  pCallback.pfUartWriteCallback = UartEventWrite1;
  pCallback.pfUartReadCallback = UartEventRead1;
  UartSetCallbackFunctions(UART_1, &pCallback);
#endif

#if gUart_PortDefault_d == UART_2

  //initialize GPIOs for UART1 and UART2
  GpioUart2Init();  

  //configure the uart parameters
  pConfig.UartParity = gUartParityNone_c;
  pConfig.UartStopBits = gUartStopBits1_c;
  pConfig.UartBaudrate = gUartDefaultBaud_c;
  pConfig.UartFlowControlEnabled = gUart2_EnableHWFlowControl_d;

        //mount the interrupts corresponding to UART driver
  IntAssignHandler(gUart2Int_c, (IntHandlerFunc_t)UartIsr2);
  ITC_SetPriority(gUart2Int_c, gItcNormalPriority_c);
  //enable the interrupts corresponding to UART driver
  ITC_EnableInterrupt(gUart2Int_c);
  
  //initialize the uart
  UartOpen(UART_2,PLATFORM_CLOCK);
  UartSetConfig(UART_2,&pConfig);

#if gUart2_EnableHWFlowControl_d == TRUE
  UartSetCTSThreshold(UART_2, gUart_RxFlowControlSkew_d);
#endif

  //configure the Uart Rx and Tx Threshold
  UartSetTransmitterThreshold(UART_2,5);
  UartSetReceiverThreshold(UART_2,5);

  //set pCallback functions
  pCallback.pfUartWriteCallback = UartEventWrite2;
  pCallback.pfUartReadCallback = UartEventRead2;
  UartSetCallbackFunctions(UART_2,&pCallback);

#endif /* gUart2_Enabled_d */
  // global enable interrupts in AITC driver
  IntEnableIRQ();
}                                       

/************************************************************************************  
* GpioUart1Init
*
* This function initializate the gpio磗 for the Uart1 module
*************************************************************************************/
void GpioUart1Init(void)
{
  register uint32_t tmpReg;

  GPIO.PuSelLo |= (GPIO_UART1_RTS_bit | GPIO_UART1_RX_bit);  // Pull-up select: UP type
  GPIO.PuEnLo  |= (GPIO_UART1_RTS_bit | GPIO_UART1_RX_bit);  // Pull-up enable
  GPIO.InputDataSelLo &= ~(GPIO_UART1_RTS_bit | GPIO_UART1_RX_bit); // read from pads
  GPIO.DirResetLo = (GPIO_UART1_RTS_bit | GPIO_UART1_RX_bit); // inputs
  GPIO.DirSetLo = (GPIO_UART1_CTS_bit | GPIO_UART1_TX_bit);  // outputs
        
  tmpReg = GPIO.FuncSel0 & ~((FN_MASK << GPIO_UART1_RX_fnpos) | (FN_MASK << GPIO_UART1_TX_fnpos));
  GPIO.FuncSel0 = tmpReg | ((FN_ALT << GPIO_UART1_RX_fnpos) | (FN_ALT << GPIO_UART1_TX_fnpos));
  tmpReg = GPIO.FuncSel1 & ~((FN_MASK << GPIO_UART1_CTS_fnpos) | (FN_MASK << GPIO_UART1_RTS_fnpos));
  GPIO.FuncSel1 = tmpReg | ((FN_ALT << GPIO_UART1_CTS_fnpos) | (FN_ALT << GPIO_UART1_RTS_fnpos));
}

/************************************************************************************  
* GpioUart2Init
*
* This function initializate the gpio磗 for the Uart2 module
*************************************************************************************/
void GpioUart2Init(void)
{
  register uint32_t tmpReg;

  GPIO.PuSelLo |= (GPIO_UART2_RTS_bit | GPIO_UART2_RX_bit);  // Pull-up select: UP type
  GPIO.PuEnLo  |= (GPIO_UART2_RTS_bit | GPIO_UART2_RX_bit);  // Pull-up enable
  GPIO.InputDataSelLo &= ~(GPIO_UART2_RTS_bit | GPIO_UART2_RX_bit); // read from pads
  GPIO.DirResetLo = (GPIO_UART2_RTS_bit | GPIO_UART2_RX_bit); // inputs
  GPIO.DirSetLo = (GPIO_UART2_CTS_bit | GPIO_UART2_TX_bit);  // outputs

  tmpReg = GPIO.FuncSel1 & ~((FN_MASK << GPIO_UART2_CTS_fnpos) | (FN_MASK << GPIO_UART2_RTS_fnpos)\
  | (FN_MASK << GPIO_UART2_RX_fnpos) | (FN_MASK << GPIO_UART2_TX_fnpos));
  GPIO.FuncSel1 = tmpReg | ((FN_ALT << GPIO_UART2_CTS_fnpos) | (FN_ALT << GPIO_UART2_RTS_fnpos)\
  | (FN_ALT << GPIO_UART2_RX_fnpos) | (FN_ALT << GPIO_UART2_TX_fnpos));
}

/*******************************************************************************  
* UartEventRead1 
*
* Callabck function for the reception process in the Uart1
*******************************************************************************/
void UartEventRead1(UartReadCallbackArgs_t* args)
{
  gu8SCIDataFlag = TRUE;
  gu16SCINumOfBytes = args->UartNumberBytesReceived;
  gu8SCIStatus = args->UartStatus;
}

/*******************************************************************************  
* UartEventWrite1
*
* Callback function for the transmission interruption in the Uart1.
*******************************************************************************/
void UartEventWrite1(UartWriteCallbackArgs_t* args)
{
}

/*******************************************************************************  
* UartEventRead12
*
* Callabck function for the reception process in the Uart2
*******************************************************************************/
void UartEventRead2(UartReadCallbackArgs_t* args)
{
  gu8SCIDataFlag = TRUE;        
}

/*******************************************************************************  
* UartEventWrite2
*

⌨️ 快捷键说明

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