我的学习之旅(13) printk.c

49 篇文章 0 订阅
49 篇文章 0 订阅

printk.c主要实现字符和字符串的打印包括x和y坐标以及字符的颜色。具体功能是:

printk_char()在指定坐标打印字符;console初始化前调试打印使用。

printk_string()在指定坐标处开始打印字符串;console初始化前调试打印使用。

printk()在当前坐标(g_x,g_y)处开始打印字符串;

snprintf()格式化字符串

具体代码:

#include <printk.h>
#include <stdarg.h>
#include <mem.h>
#include <console.h>
#include <tty.h>

static char *g_print_buf = (char *)MEM_PRINTK_BUF;

/*console初始化前的调试打印调用函数。在x ,y坐标处打印带颜色的一个字符*/
void printk_char(unsigned char x, unsigned char y, unsigned char c, unsigned char color)
{
    unsigned short offset;
    unsigned char *p;
    
    offset = (unsigned short)y * DISP_MAX_X *2 + (unsigned short)x * 2;
    p = (unsigned char *) (DISP_BASE_ADDR + offset);
    *p++ = c;
    *p++ = color;
    
    return;
}

/*console初始化前的调试打印调用函数。在x ,y坐标起始处打印带颜色的一串字符*/
void printk_string(unsigned char x, unsigned char y, unsigned char *s, unsigned char color)
{
    unsigned short offset;
    unsigned char *p;
    
    if( !s)
        return;
    
    offset = (unsigned short)y*DISP_MAX_X*2 + (unsigned short)x*2;
    p = (unsigned char *)(DISP_BASE_ADDR+offset);
    while(*s) {
        *p++=*s++;
        *p++= color;
    }
    return;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值