220 lines
7.2 KiB
C
220 lines
7.2 KiB
C
/*C*****************************************************************************
|
|
* NAME: print.c
|
|
*-------------------------------------------------------------------------------
|
|
* RELEASE:
|
|
* REVISION: 1.0
|
|
*-------------------------------------------------------------------------------
|
|
* PURPOSE:
|
|
*
|
|
*******************************************************************************/
|
|
/*_____ I N C L U D E S ______________________________________________________*/
|
|
|
|
#include "main_def.h" //全局声明
|
|
|
|
uint8_t printBuf[gunNumber][C_printBuf];
|
|
uint32_t printQueue[gunNumber][C_printQueue];
|
|
|
|
volatile printProStae_TypeDef printState = noSend;
|
|
|
|
|
|
|
|
//******************************************************************************
|
|
// printUsartIsr(void) 打印串口中断
|
|
//******************************************************************************
|
|
void printUsartIsr(void)
|
|
{
|
|
//TC中断
|
|
if((printUsart->SR & USART_FLAG_TC) != 0)
|
|
{
|
|
// printUsart->CR1 &= ~USART_Mode_Tx;
|
|
printUsart->CR1 &= ~USART_FLAG_TC; //禁止TC中断
|
|
printUsart->SR &= ~USART_FLAG_TC; //清除TC中断标志
|
|
printState = noSend;
|
|
}
|
|
//RX中断
|
|
else if((printUsart->SR & USART_FLAG_RXNE) != 0)
|
|
{
|
|
printUsart->CR1 &= ~USART_FLAG_RXNE; ///禁止接收中断
|
|
printUsart->SR &= ~USART_FLAG_RXNE; ///清接收中断
|
|
}
|
|
}
|
|
|
|
//******************************************************************************
|
|
// printTxDmaInt 打印DMA串口中断
|
|
//******************************************************************************
|
|
void printTxDmaInt(void)
|
|
{
|
|
printT_DMAy_Channelx->CCR &= ~0x01; //使用能DMA
|
|
printT_DMAy_Channelx->CCR &= ~DMA_IT_TC; //禁止DMA中断
|
|
print_DMA->IFCR |= 0X01 << ((printTxDmaChNb - 1)<< 2); ///清DMA中断
|
|
printUsart->CR1 |= USART_FLAG_TC; //使能TC中断
|
|
printUsart->CR3 &= ~(0X01 << 7); //禁用口发送触发
|
|
}
|
|
|
|
//******************************************************************************
|
|
//printSend
|
|
//******************************************************************************
|
|
void printSend(uint8_t *pData, uint8_t len)
|
|
{
|
|
printState = sending;
|
|
printUsart->CR1 &= ~USART_Mode_Rx;
|
|
printUsart->CR1 |= USART_Mode_Tx;
|
|
///初始化默认值
|
|
//启动DMA数据发送
|
|
printT_DMAy_Channelx->CMAR = (u32)pData; ///初始化源寄存器地址
|
|
printT_DMAy_Channelx->CPAR = (u32)(&(printUsart->DR)); ///初始化目的寄存器地址
|
|
printT_DMAy_Channelx->CNDTR = len; ///初始化数据个数
|
|
//使能串口DMA
|
|
print_DMA->IFCR |= 0X01 << ((printTxDmaChNb - 1) << 2);
|
|
printT_DMAy_Channelx->CCR |= DMA_IT_TC; ///使能DMATC中断
|
|
printT_DMAy_Channelx->CCR |= 0x01; ///使用能DMA
|
|
printUsart->SR &= ~USART_FLAG_TC ; ///清除TC中断标志
|
|
printUsart->CR1 &= ~USART_FLAG_TC ; ///禁止TC中断
|
|
printUsart->CR3 &= ~(0x01 << 6);
|
|
printUsart->CR3 |= 0X01 << 7; //启用串口触发DMA
|
|
}
|
|
|
|
//********************************************************************************************************
|
|
//** 函数名称:print_init()
|
|
//** 函数功能:硬件初始化。
|
|
//** 入口参数:
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t print_init(uint8_t *pData)
|
|
{
|
|
*pData++ = ESC;
|
|
*pData = 0x40;
|
|
return 2;
|
|
}
|
|
|
|
//********************************************************************************************************
|
|
//** 函数名称:printSetChinese()
|
|
//** 函数功能:设置中文打印
|
|
//** 入口参数:
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t printChinese(uint8_t *pData)
|
|
{
|
|
*pData++ = 0X1C;
|
|
*pData++ = '&';
|
|
return 2;
|
|
}
|
|
//********************************************************************************************************
|
|
//** 函数名称:printCR()
|
|
//** 函数功能:打印当前所有,并走一行
|
|
//** 入口参数:
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t printCR(uint8_t *pData)
|
|
{
|
|
*pData = PCR;
|
|
return 1;
|
|
}
|
|
|
|
//********************************************************************************************************
|
|
//** 函数名称:printLF()
|
|
//** 函数功能:走纸。
|
|
//** 入口参数:
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t printLF(uint8_t *pData)
|
|
{
|
|
*pData = LF;
|
|
return 1;
|
|
}
|
|
|
|
//********************************************************************************************************
|
|
//** 函数名称:LFnRow()
|
|
//** 函数功能:执行N点行走纸。
|
|
//** 入口参数:行数
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t LFnRow(uint8_t *pData,uint8_t row)
|
|
{
|
|
*pData++ = ESC;
|
|
*pData++ = J;
|
|
*pData = row;
|
|
return 3;
|
|
}
|
|
//********************************************************************************************************
|
|
//** 函数名称:setPageLen()
|
|
//** 函数功能:设置页长。
|
|
//** 入口参数:页长 (0表示256页)
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t setPageLen(uint8_t *pData,uint8_t pageLen)
|
|
{
|
|
|
|
*pData++ = ESC;
|
|
*pData++ = 0x43;
|
|
*pData = pageLen;
|
|
|
|
return 3;
|
|
}
|
|
|
|
//********************************************************************************************************
|
|
//** 函数名称:setLeftSpace(uint8 spaceNumber)
|
|
//** 函数功能:设置左间距。
|
|
//** 入口参数:间距数
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t setLeftSpace(uint8_t *pData,uint8_t spaceNumber)
|
|
{
|
|
*pData++ = ESC;
|
|
*pData++ = 0x6c;
|
|
*pData = spaceNumber;
|
|
|
|
return 3;
|
|
}
|
|
//********************************************************************************************************
|
|
//** 函数名称:setRightSpace(uint8 spaceNumber)
|
|
//** 函数功能:设置右间距。
|
|
//** 入口参数:间距数
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t setRightSpace(uint8_t *pData,uint8_t spaceNumber)
|
|
{
|
|
*pData++ = ESC;
|
|
*pData++ = 0x51;
|
|
*pData = spaceNumber;
|
|
|
|
return 3;
|
|
}
|
|
//********************************************************************************************************
|
|
//** 函数名称:setWordSpace(uint8 wordSpace)
|
|
//** 函数功能:设置字间距。
|
|
//** 入口参数:间距数
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t setWordSpace(uint8_t *pData, uint8_t wordSpace)
|
|
{
|
|
*pData++ = ESC;
|
|
*pData++ = 0x70;
|
|
*pData = wordSpace;
|
|
|
|
return 3;
|
|
}
|
|
|
|
//********************************************************************************************************
|
|
//** 函数名称:setRowSpace(uint8 rowSpace)
|
|
//** 函数功能:设置字间距。
|
|
//** 入口参数:间距数
|
|
//** 出口参数:字节数量
|
|
//*********************************************************************************************************/
|
|
uint8_t setRowSpace(uint8_t *pData, uint8_t rowSpace)
|
|
{
|
|
*pData++ = ESC;
|
|
*pData++ = 0x31;
|
|
*pData = rowSpace;
|
|
return 3;
|
|
}
|
|
//F*****************************************************************************
|
|
//* NAME:
|
|
//* PURPOSE:
|
|
//* PARAMS:
|
|
//* return:
|
|
//******************************************************************************
|
|
|
|
|
|
|