/******************************************************************************
版权所有: 深圳**科技有限公司
文件名: 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;
}