U20_driver_差异文件

/******************************************************************************
版权所有: 	深圳**科技有限公司   
文件名:    driver_adc.c
作者:      wangdy
创建日期:  2021/5/31
描述:      adc驱动接口 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
			????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include "driver_adc.h"
#include "yc_adc.h"
#include <string.h>

/*************************************变量*************************************/

_ADC_CHANNEL_VALUE  adc_channel_value = {0};

/*************************************函数*************************************/

/*******************************************************************************
* 名称:		ADC_GPIO_Config       
* 描述:		ADC相关GPIO初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void ADC_GPIO_Config()
{ 
	//bat 电池电量检测
	GPIO_Config(PORT_BAT_POWER_CHECK, PIN_BAT_POWER_CHECK, ANALOG);
	//ntc 电池温度检测
	GPIO_Config(PORT_BATTERY_TEMPER_NTC_TEMP_CHECK, PIN_BATTERY_TEMPER_NTC_TEMP_CHECK, ANALOG);  
	//打印头NTC 
	GPIO_Config(PORT_PRINTHEAD_NTC_TEMP_CHECK, PIN_PRINTHEAD_NTC_TEMP_CHECK, ANALOG); 
	//光耦ADC值检测 
	GPIO_Config(PORT_OC_PAPER_CHECK, PIN_OC_PAPER_CHECK, ANALOG); 
}

/*******************************************************************************
* 名称:		ADC_Basic_Config       
* 描述:		ADC 基本初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void ADC_Basic_Config(void)
{
	ADC_InitTypeDef ADCInitStruct;

	//bat
    ADCInitStruct.ADC_Channel = ADC_CHANNEL_BAT_POWER_CHECK;
    ADCInitStruct.ADC_Mode = ADC_GPIO;
    ADC_Init(&ADCInitStruct);
	
	//电池ntc
    ADCInitStruct.ADC_Channel = ADC_CHANNEL_BATTERY_TEMPER_NTC_TEMP_CHECK;
    ADCInitStruct.ADC_Mode = ADC_GPIO;
    ADC_Init(&ADCInitStruct);
	
	//打印头ntc
    ADCInitStruct.ADC_Channel = ADC_CHANNEL_PRINTHEAD_NTC_TEMP_CHECK;
    ADCInitStruct.ADC_Mode = ADC_GPIO;
    ADC_Init(&ADCInitStruct);
	
	//光耦ADC值检测 
    ADCInitStruct.ADC_Channel = ADC_CHANNEL_OC_PAPER_CHECK;
    ADCInitStruct.ADC_Mode = ADC_GPIO;
    ADC_Init(&ADCInitStruct);
}

//===============================对外接口=======================================

/*******************************************************************************
* 名称:		ADC_Configure       
* 描述:		ADC初始化     
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void ADC_Configure(void)
{
	ADC_GPIO_Config();
	ADC_Basic_Config();
}


/*******************************************************************************
* 名称:		ADC_Basic_Config       
* 描述:		ADC 基本初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
uint16_t ADC_Get_Value(ADCChannelTypeEnum channel)
{
	switch(channel)
	{
		case ADC_BAT_POWER:
		{
			adc_channel_value.adc_data.Power_Bat_Value = ADC_GetVoltage(ADC_CHANNEL_BAT_POWER_CHECK);
			return adc_channel_value.adc_data.Power_Bat_Value;
			break;
		}
		case ADC_BATTERY_NTC_TEMP:		
		{
			adc_channel_value.adc_data.Battery_NTC_Value = ADC_GetVoltage(ADC_CHANNEL_BATTERY_TEMPER_NTC_TEMP_CHECK);
			return adc_channel_value.adc_data.Battery_NTC_Value;
			break;
		}
		case ADC_PRINTHEAD_NTC_TEMP:	
		{
			adc_channel_value.adc_data.PrintHead_NTC_Value = ADC_GetVoltage(ADC_CHANNEL_PRINTHEAD_NTC_TEMP_CHECK);
			return adc_channel_value.adc_data.PrintHead_NTC_Value;
			break;
		}
		case ADC_OC_PAPER:	
		{
			adc_channel_value.adc_data.OC_Pater_Value = ADC_GetVoltage(ADC_CHANNEL_OC_PAPER_CHECK);
			return adc_channel_value.adc_data.OC_Pater_Value;
			break;
		}
		default:
		{
			return 0;
			break;
		}
	}
}

/*******************************************************************************
* 名称:		ADC_Get_SlowValue       
* 描述:		ADC 获取快速信息 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
uint16_t ADC_Get_Value_Fast(ADCChannelTypeEnum channel)
{
	switch(channel)
	{
		case ADC_BAT_POWER:
		{
			adc_channel_value.adc_data.Power_Bat_Value = ADC_GetVoltage_Fast(ADC_CHANNEL_BAT_POWER_CHECK);
			return adc_channel_value.adc_data.Power_Bat_Value;
			break;
		}
		case ADC_BATTERY_NTC_TEMP:		
		{
			adc_channel_value.adc_data.Battery_NTC_Value = ADC_GetVoltage_Fast(ADC_CHANNEL_BATTERY_TEMPER_NTC_TEMP_CHECK);
			return adc_channel_value.adc_data.Battery_NTC_Value;
			break;
		}
		case ADC_PRINTHEAD_NTC_TEMP:	
		{
			adc_channel_value.adc_data.PrintHead_NTC_Value = ADC_GetVoltage_Fast(ADC_CHANNEL_PRINTHEAD_NTC_TEMP_CHECK);
			return adc_channel_value.adc_data.PrintHead_NTC_Value;
			break;
		}
		case ADC_OC_PAPER:	
		{
			adc_channel_value.adc_data.OC_Pater_Value = ADC_GetVoltage_Fast(ADC_CHANNEL_OC_PAPER_CHECK);
			return adc_channel_value.adc_data.OC_Pater_Value;
			break;
		}
		default:
		{
			return 0;
			break;
		}
	}
}




























/******************************************************************************
版权所有: 	深圳普实科技有限公司   
文件名:    driver_adc.h
作者:      wangdy
创建日期:  2021/5/31
描述:      adc驱动 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容      
******************************************************************************/

/*********************************防止多次编译*********************************/
#ifndef _DRIVER_ADC_H
#define _DRIVER_ADC_H

/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>
#include "yc_adc.h"

/************************************宏定义************************************/

#define   ADC_CHANNEL_NUM								4		


//BAT-CHECK    //读电池电压
#define   PIN_BAT_POWER_CHECK							GPIO_Pin_9
#define   PORT_BAT_POWER_CHECK							GPIOC
#define   ADC_CHANNEL_BAT_POWER_CHECK   				ADC_CHANNEL_4

//电池温度检测 
#define   PIN_BATTERY_TEMPER_NTC_TEMP_CHECK				GPIO_Pin_6
#define   PORT_BATTERY_TEMPER_NTC_TEMP_CHECK			GPIOC
#define   ADC_CHANNEL_BATTERY_TEMPER_NTC_TEMP_CHECK    	ADC_CHANNEL_1

//打印头NTC检测 
#define   PIN_PRINTHEAD_NTC_TEMP_CHECK					GPIO_Pin_8
#define   PORT_PRINTHEAD_NTC_TEMP_CHECK					GPIOC
#define   ADC_CHANNEL_PRINTHEAD_NTC_TEMP_CHECK   		ADC_CHANNEL_3

//光耦ADC值检测 
#define   PIN_OC_PAPER_CHECK							GPIO_Pin_7
#define   PORT_OC_PAPER_CHECK							GPIOC
#define   ADC_CHANNEL_OC_PAPER_CHECK  					ADC_CHANNEL_2       


/************************************结构体************************************/

//确定读哪路ADC 
typedef enum
{
	ADC_BAT_POWER,		
	ADC_BATTERY_NTC_TEMP,	
	ADC_PRINTHEAD_NTC_TEMP,
	ADC_OC_PAPER,
}ADCChannelTypeEnum;

#pragma pack(push)
#pragma pack(1)

typedef union
{
	uint16_t  adc_buf[ADC_CHANNEL_NUM];
	
    struct _ADC_CHANNEL_DATA
	{
		uint16_t Power_Bat_Value;					//电池电压检测 
		uint16_t Battery_NTC_Value;					//电池ntc温度ad 
		uint16_t PrintHead_NTC_Value;				//打印头温度检测 
		uint16_t OC_Pater_Value;					//纸张光耦检测 
	}adc_data;
}_ADC_CHANNEL_VALUE;

#pragma pack(pop)


/**********************************可导出变量**********************************/

extern _ADC_CHANNEL_VALUE  adc_channel_value;

/***********************************函数实现***********************************/
void ADC_Configure(void);
uint16_t  ADC_Get_Value(ADCChannelTypeEnum channel);
uint16_t  ADC_Get_Value_Fast(ADCChannelTypeEnum channel);		//获取快慢速信息 

#endif






























/******************************************************************************
版权所有:  深圳**科技 
文件名:    driver_iwdg.c 
作者:      wangdy
创建日期:  2021/05/31
描述:      看门狗驱动接口 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
			????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include "yc_wdt.h"
#include "driver_timer.h"

/*************************************变量*************************************/



/*************************************函数*************************************/

/*******************************************************************************
* 名称:		WDT_Configuration       
* 描述:		看门狗配置   初始化      
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void WDT_Configuration(void)
{
    WDT_SetReload(31);(2^(31-1))/(96*1000000) = 11.18(s)
    WDT_ModeConfig(WDT_CPUReset);
    WDT_Enable();
}




























/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    driver_spi.c 
作者:      wangdy
创建日期:  2020/06/29
描述:      stm32单片机的串口驱动整合,将接收与发送合并至一起,并且不使用DMA发送 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
			????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include "yc_spi.h"
#include "yc_gpio.h"
#include "driver_spi.h"

/*************************************变量*************************************/

/*************************************函数*************************************/
void SPI_PrintHead_GPIO_Disability(void)          //开机关闭打印头
{
	//GPIO复用设置
 

	GPIO_InitTypeDef GPIO_InitStruct;
	//GAP 
	GPIO_InitStruct.GPIO_Pin = PIN_SPI_PRINTEHEAD_SCK;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(PORT_SPI_PRINTEHEAD_SCK, &GPIO_InitStruct);
	GPIO_Config(PORT_SPI_PRINTEHEAD_SCK, PIN_SPI_PRINTEHEAD_SCK, 0xc0); 
	
	GPIO_InitStruct.GPIO_Pin = PIN_SPI_PRINTEHEAD_MOSI;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(PORT_SPI_PRINTEHEAD_MOSI, &GPIO_InitStruct);
	GPIO_Config(PORT_SPI_PRINTEHEAD_MOSI, PIN_SPI_PRINTEHEAD_MOSI, 0xc0); 
	
//	GPIO_InitStruct.GPIO_Pin = PIN_PAPER_CHECK_SENSOR_EN_3;
//    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
//    GPIO_Init(PORT_PAPER_CHECK_SENSOR_EN_3, &GPIO_InitStruct);
//	GPIO_Config(PORT_PAPER_CHECK_SENSOR_EN_3, PIN_PAPER_CHECK_SENSOR_EN_3, 0xc0); 


}
/*******************************************************************************
* 名称:		SPI_PrintHead_GPIO_Config       
* 描述:		SPI相关GPIO初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void SPI_PrintHead_GPIO_Config(void)
{
	//GPIO复用设置
    GPIO_Config(PORT_SPI_PRINTEHEAD_SCK, PIN_SPI_PRINTEHEAD_SCK, SPID0_SCK);
    GPIO_Config(PORT_SPI_PRINTEHEAD_MOSI, PIN_SPI_PRINTEHEAD_MOSI, SPID0_MOSI);
}

/*******************************************************************************
* 名称:		SPI_PrintHead_Basic_Config       
* 描述:		SPI_PrintHead_Basic_Config 基本控制  
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void SPI_PrintHead_Basic_Config(void)
{
	SPI_InitTypeDef SPI_InitStruct;
	
	SPI_InitStruct.Mode = SPI_Mode_Master;
    SPI_InitStruct.BaudRatePrescaler = SPI_BaudRatePrescaler_2;
    SPI_InitStruct.CPHA = SPI_CPHA_First_Edge;
    SPI_InitStruct.CPOL = SPI_CPOL_Low;
    SPI_InitStruct.RW_Delay = 33;
	
	SPI_Init(SPI0, &SPI_InitStruct);  
	
	//MyPrintf("spi0 finish\r\n");	
}


/*******************************************************************************
* 名称:		SPI_PrintHead_Configure       
* 描述:		SPI 打印头初始化   
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void SPI_PrintHead_Configure(void)
{
	SPI_PrintHead_GPIO_Config(); 
	SPI_PrintHead_Basic_Config();
}

/*******************************************************************************
* 名称:		SPI_PrintHead_SendData       
* 描述:		SPI 打印头数据发送    
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void SPI_PrintHead_SendData(uint8_t *data,uint16_t len)
{
	SPI_SendBuff(SPI0,data,len);
}



























/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    driver_spi.h  
作者:      wangdy
创建日期:  2021/5/31
描述:      SPI控制 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
			????    ????/??/??  ??????  参考样式       
******************************************************************************/

/*********************************防止多次编译*********************************/
#ifndef _DRIVER_SPI_H
#define _DRIVER_SPI_H

/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>


/************************************宏定义************************************/

//-----SPI-打印头----------------------------------------------------------

//PRINTEHEAD-SPI-MOSI
#define   PIN_SPI_PRINTEHEAD_MOSI			GPIO_Pin_13
#define   PORT_SPI_PRINTEHEAD_MOSI			GPIOB
//PRINTEHEAD-SPI-SCK
#define   PIN_SPI_PRINTEHEAD_SCK			GPIO_Pin_14
#define   PORT_SPI_PRINTEHEAD_SCK			GPIOB


/************************************结构体************************************/


/**********************************可导出变量**********************************/


/***********************************函数实现***********************************/
void SPI_PrintHead_Configure(void);
void SPI_PrintHead_GPIO_Disability(void);
void SPI_PrintHead_SendData(uint8_t *data,uint16_t len);


#endif

























/******************************************************************************
版权所有:  深圳**科技 
文件名:    driver_timer.c
作者:      wangdy
创建日期:  2021/05/31
描述:      定时器驱动接口 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
			????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include "yc_timer.h"
#include "driver_timer.h"

/*************************************变量*************************************/



/*************************************函数*************************************/

/*******************************************************************************
* 名称:		timer_config       
* 描述:		定时器io  初始化      
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void timer_all_config(void)
{
	timer1_config();			//步进电机控制  
    timer2_config();			//加热时间控制  
	timer3_config();			//1ms普通定时器 
//	timer4_config();            //10ms RFID控制定时器
//	TIME_RFID_START;
//	Timer_SetCounter(100000);
}

/*******************************************************************************
* 名称:		timer1_config       
* 描述:		定时器 初始化      
* 输入参数:	无 
* 输出参数:	无   
* 其它:		步进电机打印控制   
*******************************************************************************/
void timer1_config(void)
{
    TIM_InitTypeDef TIM_InitStruct;
    TIM_InitStruct.period = (TIMER_CLOCK/TIMER1_PERIOD);      //48000
    TIM_InitStruct.TIMx = TIM1;
    TIM_Init(&TIM_InitStruct);

	/* Configure timer for counting mode */
    TIM_ModeConfig(TIM1, TIM_Mode_TIMER);

    /* The last step must be enabled */
    TIM_Cmd(TIM1, DISABLE);
}


/*******************************************************************************
* 名称:		timer2_config       
* 描述:		定时器2 初始化      
* 输入参数:	无 
* 输出参数:	无   
* 其它:		加热时间控制  
*******************************************************************************/
void timer2_config(void)
{
    TIM_InitTypeDef TIM_InitStruct;
    TIM_InitStruct.period = (TIMER_CLOCK/TIMER2_PERIOD);   //9600
    TIM_InitStruct.TIMx = TIM2;
    TIM_Init(&TIM_InitStruct);

	/* Configure timer for counting mode */
    TIM_ModeConfig(TIM2, TIM_Mode_TIMER);

    /* The last step must be enabled */
    TIM_Cmd(TIM2, DISABLE);
}


/*******************************************************************************
* 名称:		timer3_config       
* 描述:		定时器3 初始化      
* 输入参数:	无 
* 输出参数:	无   
* 其它:		正常时基控制   
*******************************************************************************/
void timer3_config(void)
{
    TIM_InitTypeDef TIM_InitStruct;
    TIM_InitStruct.period = (TIMER_CLOCK/TIMER3_PERIOD);	//96000
    TIM_InitStruct.TIMx = TIM3;
    TIM_Init(&TIM_InitStruct);

	/* Configure timer for counting mode */
    TIM_ModeConfig(TIM3, TIM_Mode_TIMER);

    /* The last step must be enabled */
    TIM_Cmd(TIM3, DISABLE);
}
/*******************************************************************************
* 名称:		timer4_config       
* 描述:		定时器4 初始化      
* 输入参数:	无 
* 输出参数:	无   
* 其它:		rfid 
*******************************************************************************/
void timer4_config(void)
{
    TIM_InitTypeDef TIM_InitStruct;
    TIM_InitStruct.period = (TIMER_CLOCK/TIMER4_PERIOD);	//960000
    TIM_InitStruct.TIMx = TIM4;
    TIM_Init(&TIM_InitStruct);

	/* Configure timer for counting mode */
    TIM_ModeConfig(TIM4, TIM_Mode_TIMER);

    /* The last step must be enabled */
    TIM_Cmd(TIM4, DISABLE);
}

/*******************************************************************************
* 名称:		TIM_SetnUsPeriod       
* 描述:		定时器 初始化      
* 输入参数:	无 
* 输出参数:	无   
* 其它:		设置几us的定时 
*******************************************************************************/
void TIM_SetnUsPeriod(TIM_NumTypeDef TIMx, uint32_t Period)
{
	TIM_SetPeriod(TIMx,TIMER_1US_PERIOD*Period);
	
//	if(TIMx == TIM2)
//	{
//		MyPrintf("tim%d = %d\r\n",TIMx,Period);
//	}
}


























/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    driver_uart0.c 
作者:      wangdy
创建日期:  2020/06/29
描述:      stm32单片机的串口驱动整合,将接收与发送合并至一起,并且不使用DMA发送 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
			????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include "yc_spi.h"
#include "yc_gpio.h"
#include "driver_uart0.h"

/*************************************变量*************************************/

/*************************************函数*************************************/

/*******************************************************************************
* 名称:		UART0_GPIO_Config       
* 描述:		串口0初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void UART0_GPIO_Config(void)
{
	/* Configure serial ports 0 RX and TX for IO. */
	GPIO_Config(PORT_UART0_TX, PIN_UART0_TX, UART0_TXD);
	GPIO_Config(PORT_UART0_RX, PIN_UART0_RX, UART0_RXD);
}


/*******************************************************************************
* 名称:		UART0_Basic_Config       
* 描述:		串口0基本功能初始化  
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void UART0_Basic_Config(int baudrate)
{
	UART_InitTypeDef UART_InitStruct;

  /* USARTx configured as follow:
  - BaudRate = 115200 baud  
  - Word Length = 8 Bits
  - Stop Bit = 1 Stop Bit
  - Parity = No Parity
  - Hardware flow control disabled (RTS and CTS signals)
  - Receive and transmit enabled
  */
	UART_InitStruct.BaudRate = baudrate;			
	UART_InitStruct.DataBits = Databits_8b;
	UART_InitStruct.StopBits = StopBits_1;
	UART_InitStruct.Parity = Parity_None;
	UART_InitStruct.FlowCtrl = FlowCtrl_None;
	UART_InitStruct.Mode = Mode_duplex;
	
	UART_Init(UART0, &UART_InitStruct);
}

/*******************************************************************************
* 名称:		UART0_RX_Config       
* 描述:		串口0接收初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void UART0_RX_Config(void)
{
	UART_SetRxITNum(UART0, 64);
    UART_SetITTimeout(UART0, 0xff);
}


/*******************************************************************************
* 名称:		UART_Configuration       
* 描述:		SPI相关GPIO初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void UART0_Configuration(int baudrate)
{
	UART0_GPIO_Config();
	UART0_Basic_Config(baudrate);
	//UART0_RX_Config();
}

/*******************************************************************************
* 名称:		UART0_SendByte       
* 描述:		串口0单字节发送 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void UART0_SendByte(uint8_t ch)
{
	UART_SendData(UART0,ch);
}


/*******************************************************************************
* 名称:		UART0_SendStr       
* 描述:		串口0发送字符串  
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void UART0_SendStr(uint8_t* ptr,uint16_t len)
{
	UART_SendBuf(UART0,ptr,len);
}































/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    driver_uart1.c 
作者:      wangdy
创建日期:  2020/06/29
描述:      stm32单片机的串口驱动整合,将接收与发送合并至一起,并且不使用DMA发送 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
			????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include "yc_uart.h"
#include "yc_gpio.h"
#include "yc_systick.h"
#include "driver_uart1.h"

/*************************************变量*************************************/

bool	Uart_SendFlag = false;

/*************************************函数*************************************/

/*******************************************************************************
* 名称:		UART1_GPIO_Config       
* 描述:		串口1初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void UART1_GPIO_Config(void)
{
	/* Configure serial ports 0 RX and TX for IO. */
	GPIO_Config(PORT_UART1_TX, PIN_UART1_TX, UART1_TXD);
	GPIO_Config(PORT_UART1_RX, PIN_UART1_RX, UART1_RXD);
}


/*******************************************************************************
* 名称:		UART1_Basic_Config       
* 描述:		串口1基本功能初始化  
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void UART1_Basic_Config(int baudrate)
{
	UART_InitTypeDef UART_InitStruct;

  /* USARTx configured as follow:
  - BaudRate = 115200 baud  
  - Word Length = 8 Bits
  - Stop Bit = 1 Stop Bit
  - Parity = No Parity
  - Hardware flow control disabled (RTS and CTS signals)
  - Receive and transmit enabled
  */
	UART_InitStruct.BaudRate = baudrate;			
	UART_InitStruct.DataBits = Databits_8b;
	UART_InitStruct.StopBits = StopBits_1;
	UART_InitStruct.Parity = Parity_None;
	UART_InitStruct.FlowCtrl = FlowCtrl_None;
	UART_InitStruct.Mode = Mode_duplex;
	
	UART_Init(UART1, &UART_InitStruct);
}

/*******************************************************************************
* 名称:		UART1_RX_Config       
* 描述:		串口1接收初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
static void UART1_RX_Config(void)
{
	UART_SetRxITNum(UART1, 64);
    UART_SetITTimeout(UART1, 0xff);
}


/*******************************************************************************
* 名称:		UART_Configuration       
* 描述:		串口1  初始化 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void UART1_Configuration(int baudrate)
{
	UART1_GPIO_Config();
	UART1_Basic_Config(baudrate);
	//UART1_RX_Config();
}

/*******************************************************************************
* 名称:		UART1_SendByte       
* 描述:		串口1单字节发送 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void UART1_SendByte(uint8_t ch)
{
	UART_SendData(UART1,ch);
}


/*******************************************************************************
* 名称:		UART1_SendStr       
* 描述:		串口1发送字符串  
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
void UART1_SendStr(uint8_t* ptr,uint16_t len)
{
	UART_SendBuf(UART1,ptr,len);
}

/*******************************************************************************
* 名称:		UART1_GetByte       
* 描述:		串口1获取字节接收 
* 输入参数:	无 
* 输出参数:	无   
* 其它:		无   
*******************************************************************************/
bool UART1_GetByte(uint8_t *byte)
{
	uint8_t  recv_byte = 0;
	Boolean state = FALSE;
	static uint16_t  temp_count = 0;
	
	#if 0 
		while(FALSE == state)
		{
			state = UART_IsRXFIFONotEmpty(UART1);
			
			//如果检测到了串口有数据  则直接退出 
			if(state == TRUE)
			{
				break;
			}
			
			//否则变量追加 
			temp_count++;
			if(temp_count >= 3000)
			{
				temp_count = 0;
				return 0xFF;
			}
		}
	#endif
	#if 0
		if(true == Uart_SendFlag)
		{
			Uart_SendFlag = false;					//发送标记信息 
			
			while(state == FALSE)
			{
				state = UART_IsRXFIFONotEmpty(UART1);
				
				if(state)
				{
					temp_count = 0;
					
					byte = UART_ReceiveData(UART1);
					//MyPrintf("Recv:%02X\n", byte);
					break;
				}
				else 
				{
					temp_count++;
					if(temp_count >= 10000)
					{
						temp_count = 0;
						break;
					}
				}
			}
			
			//MyPrintf("Uart Null,cnt = %d\n", temp_count);
		}
	#endif
		
	state = UART_IsRXFIFONotEmpty(UART1);
	if(state)
	{
		recv_byte = UART_ReceiveData(UART1);
		*byte = recv_byte;
		return true;
	}
	
	*byte = recv_byte;
	return false;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值