STM32F429 热敏打印机驱动

#include "cmsis_os.h" 
#include "main.h"

uint8_t  stepfata[][4]={
{1,0,0,1},
{0,0,0,1},
{0,0,1,1},
{0,0,1,0},
{0,1,1,0},
{0,1,0,0},
{1,1,0,0},
{1,0,0,0},
{1,0,0,0},
{0,0,0,0}

};

 

/*
 uint8_t  stepfata[][4]={
{1,1,0,0},
{0,1,0,0},
{0,1,1,0},
{0,0,1,0},
{0,0,1,1},
{0,0,0,1},
{1,0,0,1},
{1,0,0,0},


};
*/

#define A1 HAL_GPIO_WritePin(PRN_AP_GPIO_Port,PRN_AP_Pin,GPIO_PIN_SET)
#define A0 HAL_GPIO_WritePin(PRN_AP_GPIO_Port,PRN_AP_Pin,GPIO_PIN_RESET)

#define B1 HAL_GPIO_WritePin(PRN_BP_GPIO_Port,PRN_BP_Pin,GPIO_PIN_SET)
#define B0 HAL_GPIO_WritePin(PRN_BP_GPIO_Port,PRN_BP_Pin,GPIO_PIN_RESET)

#define A_1 HAL_GPIO_WritePin(PRN_AM_GPIO_Port,PRN_AM_Pin,GPIO_PIN_SET)
#define A_0 HAL_GPIO_WritePin(PRN_AM_GPIO_Port,PRN_AM_Pin,GPIO_PIN_RESET)


#define B_1 HAL_GPIO_WritePin(PRN_BM_GPIO_Port,PRN_BM_Pin,GPIO_PIN_SET)
#define B_0 HAL_GPIO_WritePin(PRN_BM_GPIO_Port,PRN_BM_Pin,GPIO_PIN_RESET)


#define  stepMotorDisable()     HAL_GPIO_WritePin(MT_SLEEP_GPIO_Port, MT_SLEEP_Pin, GPIO_PIN_RESET)

#define  stepMotorEnable()     HAL_GPIO_WritePin(MT_SLEEP_GPIO_Port, MT_SLEEP_Pin, GPIO_PIN_SET)

void setpmotor_Rotateonestep()
{
    


int i;
//taskENTER_CRITICAL();    
for(i=0;i<10;i++){

    stepfata[i][0]?A0:A1;
    stepfata[i][1]?B0:B1;
    stepfata[i][2]?A_0:A_1;    
    stepfata[i][3]?B_0:B_1;    
    
     HAL_Delay(2);
}
//taskEXIT_CRITICAL();

}

void PRN_DI(int i){i?HAL_GPIO_WritePin(PRN_DI_GPIO_Port,PRN_DI_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_DI_GPIO_Port,PRN_DI_Pin,GPIO_PIN_RESET);}
void PRN_CLK (int i){i?HAL_GPIO_WritePin(PRN_CLK_GPIO_Port,PRN_CLK_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_CLK_GPIO_Port,PRN_CLK_Pin,GPIO_PIN_RESET);} 
void PRN_LAT (int i){i?HAL_GPIO_WritePin(PRN_LAT_GPIO_Port,PRN_LAT_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_LAT_GPIO_Port,PRN_LAT_Pin,GPIO_PIN_RESET);}
void PRN_STB1 (int i){i?HAL_GPIO_WritePin(PRN_STB1_GPIO_Port,PRN_STB1_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_STB1_GPIO_Port,PRN_STB1_Pin,GPIO_PIN_RESET);}
void PRN_STB2 (int i){i?HAL_GPIO_WritePin(PRN_STB2_GPIO_Port,PRN_STB2_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_STB2_GPIO_Port,PRN_STB2_Pin,GPIO_PIN_RESET);}
void PRN_STB3 (int i){i?HAL_GPIO_WritePin(PRN_STB3_GPIO_Port,PRN_STB3_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_STB3_GPIO_Port,PRN_STB3_Pin,GPIO_PIN_RESET);}
void PRN_STB4 (int i){i?HAL_GPIO_WritePin(PRN_STB4_GPIO_Port,PRN_STB4_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_STB4_GPIO_Port,PRN_STB4_Pin,GPIO_PIN_RESET);}
void PRN_STB5 (int i){i?HAL_GPIO_WritePin(PRN_STB5_GPIO_Port,PRN_STB5_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_STB5_GPIO_Port,PRN_STB5_Pin,GPIO_PIN_RESET);}
void PRN_STB6 (int i){i?HAL_GPIO_WritePin(PRN_STB6_GPIO_Port,PRN_STB6_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_STB6_GPIO_Port,PRN_STB6_Pin,GPIO_PIN_RESET);}

void PRN_EN (int i){i?HAL_GPIO_WritePin(PRN_EN_GPIO_Port,PRN_EN_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(PRN_EN_GPIO_Port,PRN_EN_Pin,GPIO_PIN_RESET);}

void initPrint(){
stepMotorDisable()    ;
PRN_EN(1);    
PRN_LAT(1);
PRN_CLK(0);
PRN_STB1(0);
PRN_STB2(0);    
PRN_STB3(0);
PRN_STB4(0);
PRN_STB5(0);
PRN_STB6(0);
}

uint8_t paper_err()//0 no paper ;1 paper inside
{


    return HAL_GPIO_ReadPin(PRN_PP_DET_GPIO_Port,PRN_PP_DET_Pin);
        
    
}

void prndelay()
{
    int i;
    for(i=0;i<5;i++)
    __nop();
    
}

void prndelay2()
{
static    int k;
    uint16_t i;
    uint16_t j;
    for(i=0;i<2000;i++)
      for(j=0;j<20;j++)
    k++;//__nop();
    
}

#define PT_TIME 1
int printLine(uint8_t  *p){//print a line
    int i=0;

if(paper_err()==0)   return -1;    
    

    
    
PRN_EN(0);

    for(i=0;i<384;i++)
    {

    *(p+i)?PRN_DI(1):PRN_DI(0);

    PRN_CLK(0);            
    prndelay();    
    PRN_CLK(1);     //output a line of dots 
    prndelay();            
    PRN_CLK(0);        
    }
    

    
    PRN_LAT(1);//latch data
    prndelay();
    PRN_LAT(0);
    prndelay();
    PRN_LAT(1);    
    


    
    
    PRN_STB1(1);
  prndelay2();//HAL_Delay(PT_TIME);
    PRN_STB1(0);
      
        
    PRN_STB2(1);
  prndelay2();// HAL_Delay(PT_TIME);
    PRN_STB2(0);
       
    
    PRN_STB3(1);    
   prndelay2();//HAL_Delay(PT_TIME);
    PRN_STB3(0);
   
    
    
    PRN_STB4(1);    
  prndelay2();// HAL_Delay(PT_TIME);
    PRN_STB4(0);
        
    
    PRN_STB5(1);
  prndelay2();// HAL_Delay(PT_TIME);
    PRN_STB5(0);    
            
    
    PRN_STB6(1);
   prndelay2();//HAL_Delay(PT_TIME);
    PRN_STB6(0);
     

 

    PRN_EN(1);

stepMotorEnable();   

  setpmotor_Rotateonestep();
stepMotorDisable();    
    
    
    

    return 0;
    
}

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值