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

📄 uart.lst

📁 完成数据的采集
💻 LST
📖 第 1 页 / 共 2 页
字号:
###############################################################################
#                                                                             #
#                                                       04/Dec/2008  16:07:53 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION                    #
# Copyright 1999-2007 IAR Systems. All rights reserved.                       #
#                                                                             #
#    Cpu mode     =  thumb                                                    #
#    Endian       =  little                                                   #
#    Source file  =  E:\ELE\yten\pro\message\uart.c                           #
#    Command line =  E:\ELE\yten\pro\message\uart.c -D EMB_FLASH -lcN         #
#                    E:\ELE\yten\pro\Release\List\ -o                         #
#                    E:\ELE\yten\pro\Release\Obj\ --no_cse --no_unroll        #
#                    --no_inline --no_code_motion --no_tbaa --no_clustering   #
#                    --no_scheduling --debug --endian little --cpu Cortex-M3  #
#                    -e --fpu None --dlib_config "C:\Program Files\IAR        #
#                    Systems\Embedded Workbench 5.0                           #
#                    Evaluation\ARM\INC\DLib_Config_Normal.h" -I              #
#                    E:\ELE\yten\pro\ -I E:\ELE\yten\pro\..\LIBRARY\INC\ -I   #
#                    "C:\Program Files\IAR Systems\Embedded Workbench 5.0     #
#                    Evaluation\ARM\INC\" -On                                 #
#    List file    =  E:\ELE\yten\pro\Release\List\uart.lst                    #
#    Object file  =  E:\ELE\yten\pro\Release\Obj\uart.o                       #
#                                                                             #
#                                                                             #
###############################################################################

E:\ELE\yten\pro\message\uart.c
      1          #include"includes.h"
      2          #include"ytep.h"
      3          #include"ytepfunction.h"
      4          const			Int16U	BAUD_TAB[]={19500-50,9600,4800-50};
      5          /*************************************************************************/
      6          Boolean FifoPush(pUartFifo_t Fifo, USART_TypeDef* USARTx)
      7          {
      8          	volatile Int32U IndxTmp;
      9          	Fifo->Timer=0;
     10                  Fifo->PopIndx=0;
     11          	if(Fifo->PushIndx<20)
     12          	{
     13          		IndxTmp=Fifo->PushIndx;
     14          		Fifo->Buffer[IndxTmp]=USART_ReceiveData(USART1);//USARTx->DR;
     15          		Fifo->PushIndx++;  
     16                          return (FALSE);
     17          	}else
     18                  {      
     19                   IndxTmp =USART_ReceiveData(USART1);       
     20          	  return (TRUE);
     21                  }
     22          	
     23          }
     24          /*************************************************************************/
     25          Boolean   FifoPop(pUartFifo_t Fifo,USART_TypeDef* USARTx)
     26          {
     27          	volatile Int32U IndxTmp;
     28          	if(Fifo->PopIndx<=(Fifo->PushIndx+1))
     29          	{
     30          		IndxTmp=Fifo->PopIndx;
     31          		USARTx->DR=Fifo->Buffer[IndxTmp];
     32          		Fifo->PopIndx++;
     33          	}else
     34          	{
     35          	 return (FALSE);
     36          	}
     37          	return (TRUE);
     38          } 
     39          /////////////////////////////////////////////
     40          void Uart1Isr(void)
     41          {
     42             volatile unsigned int uart;
     43            if(USART_GetFlagStatus(USART1,USART_FLAG_ORE))
     44            {
     45              USART_ClearFlag(USART1,USART_FLAG_ORE);
     46              Uart1LineEvents.bOE = TRUE;
     47            }
     48            if(USART_GetFlagStatus(USART1,USART_FLAG_FE))
     49            {
     50              USART_ClearFlag(USART1,USART_FLAG_FE);
     51              // Framing Error
     52              Uart1LineEvents.bFE = TRUE;
     53            }
     54            if(USART_GetFlagStatus(USART1,USART_FLAG_NE))
     55            {
     56              USART_ClearFlag(USART1,USART_FLAG_NE);
     57              // Noise Error
     58              Uart1LineEvents.bFE = TRUE;
     59            }
     60            if(USART_GetFlagStatus(USART1,USART_FLAG_PE))
     61            {
     62              USART_ClearFlag(USART1,USART_FLAG_PE);
     63              // Parity Error
     64              Uart1LineEvents.bPE = TRUE;
     65            }
     66            
     67            if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE))// Push a new data into the receiver buffer
     68            {
     69            	//USART1_485RXD; 
     70                  uart=FifoPush(pUart1RxFifo,USART1); // Push a new data into the receiver buffer         
     71            }
     72          
     73            if(USART_GetFlagStatus(USART1,USART_FLAG_TXE)
     74               && (USART_GetITStatus (USART1,USART_IT_TXE) == SET))
     75            {
     76            	USART_ClearFlag(USART1,USART_FLAG_TXE);
     77            	USART1_485TXD; 
     78              if(FifoPop(pUart1TxFifo,USART1));
     79              else
     80              {
     81                USART_ITConfig(USART1,USART_IT_TXE ,DISABLE);//USART_IT_TXE指明是CRx,
     82                USART1_485RXD;
     83                pUart1RxFifo->UsartStatus=pUart1TxFifo->UsartStatus=0;
     84                USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
     85              }
     86            }
     87            //if(Uart1RxFifo.PushIndx>20)
     88            //USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
     89             //uart=USART1->SR;    
     90             //uart=USART1->DR; 
     91             //uart=USART1->CR1  ;
     92            
     93          }
     94          /****************************************************
     95          *
     96          *
     97          *****************************************************/
     98          Boolean	UsartRXD(pUartFifo_t Fifo,pUartFifo_t TFifo)
     99          {
    100          	Int16U	x,x1;
    101                  x=0;
    102          	if(Fifo->UsartStatus!=0)
    103                  {
    104                    USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
    105                    if(++TFifo->Timer>=250) Fifo->UsartStatus=0;
    106                    return FALSE;
    107                  }
    108          	USART1_485RXD;
    109                  TFifo->Timer=0;
    110                  ++Fifo->Timer;
    111          	if((Fifo->PushIndx!=0)&&(Fifo->Timer>=C_FifoRxd)) //
    112          		{ 
    113                                  if(Fifo->PushIndx>=2)
    114          			x=Fifo->PushIndx-2;                    
    115          			x1=Fifo->Buffer[x+1];
    116                                  x1<<=8;
    117          			x1+=Fifo->Buffer[x];	
    118          			x=cal_crc(Fifo->Buffer,(Int8U)x);
    119          			if((x==x1)&&(Fifo->Buffer[0]==_YT._ELE[0]))
    120          			{       
    121                                          USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
    122          				Fifo->Timer=Fifo->PushIndx=0;
    123          				Fifo->UsartStatus=1;                                                         
    124          				return TRUE;
    125          			}
    126                                  Fifo->Timer=0,Fifo->PushIndx=0;//USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
    127          		}else    
    128          	if(Fifo->Timer>=C_FifoRxd)
    129          	{
    130          		Fifo->Timer=0,Fifo->PushIndx=0;//没收到数据
    131          		 
    132          		USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//接收非空使能
    133          	        
    134                  }
    135                         
    136          		return 	FALSE;

⌨️ 快捷键说明

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