Ucos-II+ucGUI390+ARM2410+LCD+触摸屏基本整合成功(更新于2007-3-15)

 

 

ucos-II+ucGUI390+ARM9s3c2410+LCD +触摸屏基本整合成功
(最近更新于2007-3-15)
 
环境: ads2.2 ARM9 s3c2410
 
注意:由于编译器( ads1.2 2.2 )对全局变量初始化为 0 的不完全支持,有时必须手动初始化为 0 ,切记!!!
 
一、     ucos-II 移植到 ARM9s3c2410
可从官网下载移植代码,基本无需改动。
在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 
 
二、     ucGui390 移植到 ARM9s3c2410
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  
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值