历史上的今天
今天是:2024年10月14日(星期一)
2018年10月14日 | Tiny4412的LCD操作
2018-10-14 来源:eefocus
// 4412一共有5个window,每一个window可以设两个buffer
// ALPHA :决定是否半透明
// COLOR KEY :决定是否显示
// OSD :决定一个窗口的显示区域
#include "regs.h"
void enable_mmu(unsigned long ttb);
void init_ttb(unsigned long *ttb_base);
void mmap(unsigned long *ttb_base, unsigned long va, unsigned long pa);
void memset(char *buf, char ch, int size);
void memcpy(char *dst, char *src, int size);
void do_irq(unsigned long regs[]);
void (*printf)(char *, ...) = 0x43e11434;
void main(void)
{
unsigned long fb = 0x53000000;
clean_screen(fb, 800, 480);
GPF0CON = 0x22222222;
GPF1CON = 0x22222222;
GPF2CON = 0x22222222;
GPF3CON = 0x22222222;
//Blacklight
GPD0CON &= ~(0xf << 4);
GPD0CON |= (0x1 << 4);
GPD0DAT &= ~(0x1 << 1);
//system register
LCDBLK_CFG = 2; //FIMD Bypass模式
LCDBLK_CFG2 = 1;
//clock configure
CLK_SRC_LCD0 = 6; //SCLKMPLL_USER_T is Source Clk == 800M
CLK_DIV_LCD = 0; //SCLK_FIMD0 == SCLKMPLL_USER_T == 800M
CLK_GATE_IP_LCD = 1; //门限寄存器输出打开
#define CLKVAL_F 13
VIDCON0 = (CLKVAL_F << 6);
VIDCON1 = (1 << 5) | ( 1 << 6) | (1 << 7) | (1 << 9);
VIDCON2 = 0;
VIDTCON0 = 2 | (2 << 8) | (20 << 16);
VIDTCON1 = 2 | (2 << 8) | (40 << 16);
VIDTCON2 = 799 | (479 << 11);
VIDTCON3 = 0;
SHADOWCON = 0x1;
//----------------------------
WINCON0 = 1 | (0xb << 2); //24bpp
VIDOSD0A = 0;
VIDOSD0B = 479 | (799 << 11);
VIDOSD0C = 480 * 800;
//windows 0's buffer 0
VIDW00ADD0B0 = fb;
VIDW00ADD1B0 = fb + 800 * 480 * 4; //24bpp,实际使用32位,浪费一个字节
VIDW00ADD2 = 800;
//Video output enable
VIDCON0 |= 1 | (1 << 1);
}
#define RGB888(r, g, b) (((r) << 16) | ((g) << 8) | (b) )
void clean_screen(unsigned long *fb, int w, int h)
{
int i, j;
for (i = 0; i < h; i ++) {
for (j = 0; j < w; j ++) {
fb[i * w + j] = RGB888(0, 255, 0);
}
}
}
===================================================================
Makefile文件:
default:
arm-linux-gcc -c test.c -o test.o
arm-linux-ld -Ttext=0x70003000 test.o -o test
arm-linux-objcopy -O binary test test.bin
clean:
rm -f test.o test test.bin *~
==============================================================
下一篇:Tiny4412的Uart操作
史海拾趣
|
中国半导体行业协会理事长俞忠钰::中国集成电路设计业发展新思路 来源:电子工程专辑 昨天,2006年(第四届)泛珠三角集成电路联谊暨市场推介会在深圳的麒麟山庄举行。与往年不同,此届联谊会的范围已扩大到全国,来自全国7个IC产业基地的代表以及香港科技园的负责人均参加了此次盛会。会上,中国半导体行业协 ...… 查看全部问答> |
|
最近正在做一个小实验,就是利用51连接8255控制端口输出。 简言之,我想控制8个二极管,以前是直接用P1口控制,比如输入P1=0xfe;我现在想试试将8255与51相连,8个灯与8255的PA口相连,但小弟不知两点:1、8255与51引脚如何连线;2、51如何通过控制 ...… 查看全部问答> |
|
如果程序中即有C代码,又有汇编代码,那汇编代码编译连接后,会被放到物理地址的什么地址,这个由哪里的设置决定 在keil的options里设置的片内FLASH 我的片内FLASH起始地址为:0xC00000 编译后C代码都写到这里了,可是汇编的代码却写到0x000A6A ...… 查看全部问答> |
|
一、独立看门狗IWDG概述 1.)看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。2.)功能图:(由于本人无法贴图,请见参考手册,125页) 3 ...… 查看全部问答> |
|
以下是程序中有?号的行不懂?请高手帮忙解答,灰常感谢~ /*******************************************函数名称:LocateXY功 能:向液晶输入显示字符位置的坐标信 ...… 查看全部问答> |
|
#include \"hw_memmap.h\"#include \"hw_types.h\"#include \"hw_ints.h\"#include \"interrupt.h\"#include \"sysctl.h\"#include \"gpio.h\"#include \"pwm.h\" unsigned long Sysclk = 12000000UL;#define PB0_PWM2 GPIO_PIN_0&nb ...… 查看全部问答> |
|
如题,做ARM-LINUX 嵌入式开发,不是有ADS这个工具嘛,在WINDOWS 环境下,用ADS这个编译工具,写完并且编译好需要下载到开发板中的程序,然后,还能用AXD这个工具进行在线调试开发板,这是不是就够了呢。 那为什么还需要在LINUX环境中,比如RED HA ...… 查看全部问答> |




