当前位置:首页 > 单片机 > 单片机
[导读] 注意:由于编译器(ads1.2或2.2)对全局变量初始化为0的不完全支持,有时必须手动初始化为0,切记!!! 一、ucos II移植到ARM9 s3c2410 可从官网下载移植代码,基本无需改动。 在os_cpu_a.s中的函数UCOS_IRQHand

注意:由于编译器(ads1.2或2.2)对全局变量初始化为0的不完全支持,有时必须手动初始化为0,切记!!!
一、ucos II移植到ARM9 s3c2410

可从官网下载移植代码,基本无需改动。

在os_cpu_a.s中的函数UCOS_IRQHandler中的bl OSIntEnter和bl C_IRQHandler之间插入如下代码(见邵贝贝,第2版,第104页的说明:L3.18(4) ):
ldr r0, =OSIntNesting
ldrb r0,[r0]
cmp r0,#1
bne XX
ldr r0,=OSTCBCur
ldr r1,[r0]
str sp,[r1] ; store sp in preempted tasks's TCB
XX
二、ucGui 390移植到ARM9 s3c2410
1. Lcd驱动:
1) 画点函数:
对dm2410实验板上的lcd,左上为原点(0,0),函数如下:
void LCD2410_SetPixel(int xp, int yp, U16 color, int dindex)
{
*(pLCDBuffer565 + SCREEN_WIDTH*yp + xp) = color;
}
为了达到更快的显示速度,别忘了开启Cache!!!
2)LCD控制器的初始化,对2410函数如下:
int LCD2410_Init(void)
{
if(!isLcdInit)
{
InitLcdPort();
InitLcdRegs();
isLcdInit = 1;
return 0;
}
return 1;
}
void InitLcdPort(void)
{
// LCD port initialize.
s2410IOP->GPCUP = 0xFFFFFFFF;
s2410IOP->GPCCON = 0xAAAAAAAA;
s2410IOP->GPDUP = 0xFFFFFFFF;
s2410IOP->GPDCON = 0xAAAAAAAA;
s2410IOP->GPGCON &= ~(3 << 8); /* Set LCD_PWREN as output */
s2410IOP->GPGCON |= (1 << 8);
s2410IOP->GPGDAT |= (1 << 4); //* Backlight ON
}
void InitLcdRegs(void)
{
s2410LCD->LCDCON1 = (CLKVAL_TFT << 8) | //* VCLK = HCLK / ((CLKVAL + 1) * 2) -> About 7 Mhz
(EACH_FRAME. << 7) | //* 0 : Each Frame
(3 << 5) | // TFT LCD Pannel
(12 << 1) | //Y: // 16bpp Mode
(0 << 0) ; // Disable LCD Output
s2410LCD->LCDCON2 = (VBPD << 24) | //* VBPD : ((32-1)&0xff) = 0x1f
(LINEVAL_TFT << 14) | //* LINEVAL_TFT : 480 - 1
(VFPD << 6) | //* VFPD : ((11-1)&0xff) = 0xa
(VSPW << 0) ; //* VSPW : ((2-1) &0x3f) = 0x1
s2410LCD->LCDCON3 = (HBPD << 19) | //* HBPD : ((88-1)&0x7f)
(HOZVAL_TFT << 8) | //* HOZVAL_TFT : 800 - 1
(HFPD << 0) ; //* HFPD : ((40-1)&0xff)
s2410LCD->LCDCON4 = (MVAL << 8) | //* MVAL : 13
(HSPW << 0) ; //* HSPW : ((128-1)&0xff)
s2410LCD->LCDCON5 = (0 << 12) | // BPP24BL : LSB valid
(1 << 11) | // FRM565 MODE : 5:5:5:1 Format
(0 << 10) | // INVVCLK : VCLK Falling Edge
(1 << 9) | // INVVLINE : Inverted Polarity
(1 << 8) | // INVVFRAME : Inverted Polarity
(0 << 7) | // INVVD : Normal
(0 << 6) | // INVVDEN : Normal
(0 << 5) | // INVPWREN : Normal
(0 << 4) | // INVENDLINE : Normal
(1 << 3) | // PWREN : Disable PWREN
(0 << 2) | // ENLEND : Disable LEND signal
(0 << 1) | // BSWP : Swap Disable
(1 << 0) ; // HWSWP : Swap Enable
s2410LCD->LCDSADDR1 = ((FRAMEBUF_DMA_BASE >> 22) << 21) |
((M5D(FRAMEBUF_DMA_BASE >> 1)) << 0);
s2410LCD->LCDSADDR2=M5D( (FRAMEBUF_DMA_BASE+(LCD_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );
s2410LCD->LCDSADDR3=(((LCD_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);
s2410LCD->LCDINTMSK|=(3); // MASK LCD Sub Interrupt
s2410LCD->LPCSEL&=(~7); // Disable LPC3600
s2410LCD->TPAL=0; // Disable Temp Palette
s2410LCD->LCDCON1 |= 1;
}
其中,部分变量、常量定义如下:
#define LCD_XSIZE_TFT (800)
#define LCD_YSIZE_TFT (480)
#define HOZVAL_TFT (LCD_XSIZE_TFT-1)
#define LINEVAL_TFT (LCD_YSIZE_TFT-1)
#define MVAL (13)
#define MVAL_USED (1)
#define EACH_FRAME (0)
//STN/CSTN timing parameter for LCBHBT161M(NANYA)
#define WLH (3)
#define WDLY (3)
#define LINEBLANK (1 &0xff)
#define VBPD ((32-1)&0xff)
#define VFPD ((11-1)&0xff)
#define VSPW ((2-1) &0x3f)
#define HBPD ((88-1)&0x7f)
#define HFPD ((40-1)&0xff)
#define HSPW ((128-1)&0xff)
#define CLKVAL_TFT (0)
#define M5D(n) ((n) & 0x1fffff)
#define SCREEN_WIDTH 800 //800
#define SCREEN_HEIGHT 480 //480
#define FRAMEBUF_DMA_BASE (0x35000000)
U16* pLCDBuffer565=(U16*)FRAMEBUF_DMA_BASE;
3)填写配置文件LCDConf.h
#define LCD_XSIZE (800) /* X-resolution of LCD, Logical coor. */
#define LCD_YSIZE (480) /* Y-resolution of LCD, Logical coor. */
#define LCD_BITSPERPIXEL (16)
#define LCD_CONTROLLER 1
#define LCD_SWAP_RB_0 1
2.触摸屏驱动:

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

  本文主要搭建一个多生理参数测量系统的数据处理平台,在FPGA中嵌入一个32位Nios II软核处理器,用于控制数据的传输、存储及显示。主要完成了此数据处理平台硬件系统的定制及编写相应程序,以控制数

关键字: NIOS ii 生理

据9月9日消息,索尼Xperia 5 Ⅱ将于9月17日正式发布。 该机现已通过FCC认证,FCC文件显示索尼Xperia 5 Ⅱ配备的充电器型号为Sony UCH32,支持18W快充。

关键字: xperia 5 1 ii

最近项目开发需要用到ucos,之前有听说过,但没用过,之前一直从事的与Linux相关的开发工作,基于应用的学习,所以本文偏向于应用的认知,只具备以下的认知即可进行开发啦,OS,其实都差不多。    本文只是个人学习uco...

关键字: ucos

  引言   汽车的普及为人们的生活带来了方便,同时也给人们提出了一大难题——汽车防盗。本设计是为了解决以往汽车防盗产品的缺点和不足而开发的集成传感、报警和远程图

关键字: 数据采集 操作系统 s3c2410 汽车防盗系统

  引言   巡航控制系统(CCS)是20世纪60年代发展起来的,又称为恒速行驶系统。巡航控制系统工作时,ECU根据各种传感器输送来的信号判断汽车的运行状况,通过执行元件自动调节节气门的

关键字: ARM 三星 Linux ecu s3c2410 电子控制系统

  在过去一百年里(l906-2005),全球地表平均温度升高了0.74摄氏度,未来20年,每十年全球温度将会升高0.2摄氏度。气候变暖已成为不容忽视的、直接影响全球生产和生活问题。  

关键字: can总线 s3c2410

  在此设计的基于 GPRS 的远程安防监控系统,是采用的是摄像机传送视频信号经压缩编码后,通过内部总线传送到内置的 Web 服务器。用户在监控端可以直接通过浏览器观看 Web服务器上的摄像机视

关键字: GPRS s3c2410 安防监控

7 月 14 日消息 苹果 Apple IIe 电脑在 37 年前的 1983 年问世,但不要以为它不能胜任现代的任务。有 Twitter 用户近日展示了如何让 Apple IIe 实现现代化的的任

关键字: apple ii

华硕在2019年经历了一年的复苏,其坚实的Zenfone 6和强大的ROG Phone II游戏引擎将于今年问世。 尽管Zenfone在11月收购了Android 10,但该公司现在正为ROG Phone II推出稳定的...

关键字: 10 Android ii phone rog 华硕

Linux内核对其驱动程序进行了修改,来支持Macintosh II系统上的Apple Desktop Bus。

关键字: ii Linux macintosh 驱动
关闭
关闭