示例#1
0
BOOL UART_GetIntStatus(UART0_Type* UARTx, uint32_t Int) {
    assert_param(IS_UART_ALL_PERIPH(UARTx));
    assert_param(IS_UART_INT(Int));

    if (0 != (UARTx->INT_SEEN & Int)) {
        return TRUE;
    }

    return FALSE;
}
示例#2
0
void UART_EnableInt(UART0_Type* UARTx, uint32_t Int, BOOL enable) {
    assert_param(IS_UART_ALL_PERIPH(UARTx));
    assert_param(IS_UART_INT(Int));

    if (enable) {
        UARTx->INT_MASK &= ~Int;
    } else {
        UARTx->INT_MASK |= Int;
    }

    UARTx->INT_MASK &= UART_Int_All;
}
示例#3
0
文件: uart.c 项目: oldjohnh/car
/***********************************************************************************************
 功能:使用中断发送串口数据
 形参:UART_Type 串口选择
			 @arg  UART0: 串口0
			 @arg  UART1: 串口1
			 @arg  UART2: 串口2
			 @arg  UART3: 串口3
			 @arg  UART4: 串口4

			 *DataBuf : 发送的数据 缓冲区指针
			  Len     : 发送的数据长度
 返回:0
 详解:0
************************************************************************************************/
void UART_SendDataInt(UART_Type* UARTx,uint8_t* pBuffer,uint8_t NumberOfBytes)
{
	//参数检测
	assert_param(IS_UART_ALL_PERIPH(UARTx));
	
	//内存拷贝
	memcpy(UART_TxIntStruct1.TxBuf,pBuffer,NumberOfBytes);
	UART_TxIntStruct1.Length = NumberOfBytes;
	UART_TxIntStruct1.Offset = 0;
	UART_TxIntStruct1.IsComplete = FALSE;
	//使用中断方式传输 不使用DMA
	UARTx->C5 &= ~UART_C5_TDMAS_MASK; 
	//使能传送中断
	UARTx->C2 |= UART_C2_TIE_MASK;
}
示例#4
0
/* return value is actual read data size */
uint8_t UART_Read(UART0_Type* UARTx, uint8_t Size, uint8_t* Data) {
    uint8_t count;

    assert_param(IS_UART_ALL_PERIPH(UARTx));
    assert_param(Data);

    if (!UARTx->RUN_b.EN) {
        return 0;
    }

    count = 0;
    while (UARTx->STATUS_b.RNE && count < Size) {
        *(Data + count++) = (UARTx->RX_BUF & 0x00FF);
    }

    return count;
}
void ADCx_CLK_en(ADCxControl* ADCx, uint32_t ADC_CLKSRC, uint32_t ADC_CLK_DIV)
{
  /* Check the parameters */
  assert_param(IS_UART_ALL_PERIPH(UARTx));
	assert_param(IS_UART_CLKSRC(UART_CLKSRC));
   
  if (ADCx == ADC0)
  {  
    CLK_CNTR->ADC0_CLK = 0;
    CLK_CNTR->ADC0_CLK = (ADC_CLKSRC<< ADCx_CLKSRC_offs) | ADCx_CLK_EN | ADC_CLK_DIV;    
  }  
  else
  {  
    CLK_CNTR->ADC1_CLK = 0;
    CLK_CNTR->ADC1_CLK = (ADC_CLKSRC<< ADCx_CLKSRC_offs) | ADCx_CLK_EN | ADC_CLK_DIV;
  }  
}
示例#6
0
uint8_t UART_Write(UART0_Type* UARTx, uint8_t Size, uint8_t* Data) {
    uint8_t count;

    /* Check the parameters */
    assert_param(IS_UART_ALL_PERIPH(UARTx));
    assert_param(Data);

    if (!UARTx->RUN_b.EN) {
        return 0;
    }

    count = 0;
    while (!UARTx->STATUS_b.TF && count < Size) {
        UARTx->TX_BUF = *(Data + count++);
    }

    return count;
}
示例#7
0
文件: uart.c 项目: oldjohnh/car
/***********************************************************************************************
 功能:开启UART DMA支持s
 形参:UART_Type 串口选择
			 @arg  UART0: 串口0
			 @arg  UART1: 串口1
			 @arg  UART2: 串口2
			 @arg  UART3: 串口3
			 @arg  UART4: 串口4

			 UART_DMAReq : DMA中断源

			 NewState    : 使能或者关闭
			 @arg  ENABLE : 使能
			 @arg  DISABLE: 禁止
 返回:0
 详解:需要DMA构件的支持 需要使用DMA构件中的 Iscomplete函数判断是否发送完成
************************************************************************************************/
void UART_DMACmd(UART_Type* UARTx, uint16_t UART_DMAReq, FunctionalState NewState)
{
	//参数检查
	assert_param(IS_UART_IT(UART_DMAReq));
	assert_param(IS_UART_ALL_PERIPH(UARTx));
	assert_param(IS_FUNCTIONAL_STATE(NewState));
	
	switch(UART_DMAReq)
	{
		case UART_DMAReq_Tx:
			(NewState == ENABLE)?(UARTx->C5 |= UART_C5_TDMAS_MASK):(UARTx->C5 &= ~UART_C5_TDMAS_MASK);
			break;
		case UART_DMAReq_Rx:
			(NewState == ENABLE)?(UARTx->C5 |= UART_C5_RDMAS_MASK):(UARTx->C5 &= ~UART_C5_RDMAS_MASK);
			break;
			default:break;
	}
}
示例#8
0
文件: uart.c 项目: oldjohnh/car
/***********************************************************************************************
 功能:配置中断开启
 形参:UART_Type 串口选择
			 @arg  UART0: 串口0
			 @arg  UART1: 串口1
			 @arg  UART2: 串口2
			 @arg  UART3: 串口3
			 @arg  UART4: 串口4

			 UART_IT : 支持的中断
 返回:0
 详解:0
************************************************************************************************/
void UART_ITConfig(UART_Type* UARTx, uint16_t UART_IT, FunctionalState NewState)
{
	//参数检查
	assert_param(IS_UART_ALL_PERIPH(UARTx));
	assert_param(IS_UART_IT(UART_IT));
	assert_param(IS_FUNCTIONAL_STATE(NewState));
	switch(UART_IT)
	{
		case UART_IT_TDRE:
			(ENABLE == NewState)?(UARTx->C2 |= UART_C2_TIE_MASK):(UARTx->C2 &= ~UART_C2_TIE_MASK);
			break;
		case UART_IT_TC:
			(ENABLE == NewState)?(UARTx->C2 |= UART_C2_TCIE_MASK):(UARTx->C2 &= ~UART_C2_TCIE_MASK);
			break;
		case UART_IT_RDRF:
			(ENABLE == NewState)?(UARTx->C2 |= UART_C2_RIE_MASK):(UARTx->C2 &= ~UART_C2_RIE_MASK);
			break;
		case UART_IT_IDLE:
			(ENABLE == NewState)?(UARTx->C2 |= UART_C2_ILIE_MASK):(UARTx->C2 &= ~UART_C2_ILIE_MASK);
			break;
		default:break;
	}
}
示例#9
0
void UART_ClearInt(UART0_Type* UARTx, uint32_t Int) {
    assert_param(IS_UART_ALL_PERIPH(UARTx));
    assert_param(IS_UART_INT(Int));

    UARTx->INT_SEEN = Int;
}
示例#10
0
void UART_Enable(UART0_Type* UARTx, BOOL enable) {
    assert_param(IS_UART_ALL_PERIPH(UARTx));

    UARTx->RUN_b.EN = enable;
}