Stm32F2系列图形界面触摸屏(AN3128)到 STM32F407- EVAL开发板笔记

 STM32F4系列和STM32F2系列是PIN对PIN,

 选择STM32  AN3128开发包  STM322XG-EVAL 做对应修改,就可以移植到STM32F407-EVAL.

 移植前准备工作.  AN3128压缩包(图形库DEMO),  stm32f2-f4_demobuild.zip(触摸屏初始化)

 移植后的代码已上传在我的资源。

(1)改时钟 F2和F4的主频,时序关系对应.

#define PLL_M      25

#define PLL_N      336

/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2

/* USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ */
#define PLL_Q      7
uint32_t SystemCoreClock = 168000000;

(2) LCD初始化函数

void STM322xG_LCD_Init(void)

/* Adjust the Gamma Curve ------------------------------------------------*/

#define ECHO  1 

#if ECHO
    LCD_WriteReg(LCD_REG_48, 0x0007);
    LCD_WriteReg(LCD_REG_49, 0x0007);
    LCD_WriteReg(LCD_REG_50, 0x0007);
    LCD_WriteReg(LCD_REG_53, 0x0007);
    LCD_WriteReg(LCD_REG_54, 0x0007);

    LCD_WriteReg(LCD_REG_55, 0x0700);

    LCD_WriteReg(LCD_REG_56, 0x0700);
    LCD_WriteReg(LCD_REG_57, 0x0700);
    LCD_WriteReg(LCD_REG_60, 0x0700);
    LCD_WriteReg(LCD_REG_61, 0x1F00);
#else
    LCD_WriteReg(LCD_REG_48, 0x0006);
    LCD_WriteReg(LCD_REG_49, 0x0101);
    LCD_WriteReg(LCD_REG_50, 0x0003);
    LCD_WriteReg(LCD_REG_53, 0x0106);
    LCD_WriteReg(LCD_REG_54, 0x0b02);
    LCD_WriteReg(LCD_REG_55, 0x0302);
    LCD_WriteReg(LCD_REG_56, 0x0707);
    LCD_WriteReg(LCD_REG_57, 0x0007);
    LCD_WriteReg(LCD_REG_60, 0x0600);
    LCD_WriteReg(LCD_REG_61, 0x020b);
 #endif
 (3) TSC 触摸屏函数 
 相关部分修改如下:
    void TSC_Read(void) 
  //getDisplayCoordinateX( TSC_Value_X, TSC_Value_Y );

  //getDisplayCoordinateY( TSC_Value_X, TSC_Value_Y );    
    u32_TSXCoordinate =319 - Read_X();
  u32_TSYCoordinate =Read_Y();

    (void)Read_Z(); //必须
    touch_done = 1;

//参考源代码.仿写3个函数

uint16_t Read_X(void)

{

  int32_t x, xr;

x = I2C_ReadDataBuffer(pTscHwParam.TSC_DeviceRegister, IOE_REG_TSC_DATA_Y);

  /* first correction */

  xr =  (x * 320) >> 12;

  /* second correction */

  xr = ((xr * 32)/29) - 17;

  if(xr <= 0)

    xr = 0;

return (uint16_t)(xr);

}

uint16_t Read_Z(void)

{

  uint32_t z;

  z = I2C_ReadDataBuffer(pTscHwParam.TSC_DeviceRegister, IOE_REG_TSC_DATA_Z);

  if(z <= 0)

    z = 0;

  return (uint16_t)(z);

}

uint16_t Read_Y(void)

{

  int32_t y, yr;

  y= I2C_ReadDataBuffer(pTscHwParam.TSC_DeviceRegister, IOE_REG_TSC_DATA_X);

  yr= (y * 240) >> 12;

  yr = ((yr * 240) / 217) - 12;

  if(yr <= 0)

    yr = 0;

  return (uint16_t)(yr);

}
至此,一切就都OK了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值