گھر > خبریں > مواد

FTDI ماخذ FT_App_Clocks.c

May 08, 2019

# Fclude "FT_Platform.h"

#ifdef MSVC_PLATFORM

# stdlib.h> شامل کریں

# stdio.h> شامل کریں

# string.h> شامل کریں

شامل کریں

شامل کریں

#ختم کرو اگر


# نمونہ SAMAPP_DELAY_BTW_APIS (1000)

#deafine SAMAPP_ENABLE_DELAY () Ft_Gpu_Hal_Sleep (SAMAPP_DELAY_BTW_APIS)

# ڈیفالٹ SAMAPP_ENABLE_DELAY_VALUE (ایکس) Ft_Gpu_Hal_Sleep (ایکس)

#define F16 (ے) ((ft_int32_t) ((ے) * 65536))

#define WRITE2CMD (a) Ft_Gpu_Hal_WrCmdBuf (phost، a، sizeof (a))


/ * ڈسپلے قرارداد کے لئے عالمی متغیر مختلف ڈسپلے پینل کی حمایت کرنے کے لئے * /

/ * پہلے سے طے شدہ WQVGA - 480x272 * /

ft_int16_t FT_DispWidth = 480؛

ft_int16_t FT_DisHighight = 272؛

ft_int16_t FT_DispHCycle = 548؛

ft_int16_t FT_DispHoffset = 43؛

ft_int16_t FT_DispHSync0 = 0؛

ft_int16_t FT_DispHSync1 = 41؛

ft_int16_t FT_DispVCycle = 292؛

ft_int16_t FT_DispVOffset = 12؛

ft_int16_t FT_DispVSync0 = 0؛

ft_int16_t FT_DispVSync1 = 10؛

ft_uint8_t FT_DispPCLK = 5؛

ft_char8_t FT_DispSwizzle = 0؛

ft_char8_t FT_DisPCLKPol = 1؛


/ * عالمی بفر اصلاح کے لئے استعمال کیا جاتا ہے * /

Ft_Gpu_Hal_Context_t میزبان، * phost؛


ft_uint32_t Ft_CmdBuffer_Index؛

ft_uint32_t Ft_DlBuffer_Index؛


# بذریعہ BUFFER_OPTIMIZATION

ft_uint8_t Ft_DlBuffer [FT_DL_SIZE]؛

ft_uint8_t Ft_CmdBuffer [FT_CMD_FIFO_SIZE]؛

#ختم کرو اگر


ft_void_t فیلڈ

{

# بذریعہ BUFFER_OPTIMIZATION

/ * بفر میں حکم ہدایت کاپی کریں *

ft_uint32_t * pBuffcmd؛

pBuffcmd = (ft_uint32_t *) اور Ft_CmdBuffer [Ft_CmdBuffer_Index]؛

* pBuffcmd = cmd؛

#ختم کرو اگر

#ifdef ARDUINO_PLATFORM

Ft_Gpu_Hal_WrCmd32 (فوسٹ، سی ایم ڈی)؛

#ختم کرو اگر


/ * کمانڈ انڈیکس میں اضافہ * /

Ft_CmdBuffer_Index + = FT_CMD_SIZE؛

}


ft_void_t Ft_App_WrDlCmd_Buffer (Ft_Gpu_Hal_Context_t * phost، ft_uint32_t cmd)

{

# بذریعہ BUFFER_OPTIMIZATION

/ * بفر میں حکم ہدایت کاپی کریں *

ft_uint32_t * pBuffcmd؛

pBuffcmd = (ft_uint32_t *) اور Ft_DlBuffer [Ft_DlBuffer_Index]؛

* pBuffcmd = cmd؛

#ختم کرو اگر


#ifdef ARDUINO_PLATFORM

Ft_Gpu_Hal_Wr32 (فوسٹ، (RAM_DL + Ft_DlBuffer_Index)، سینٹیڈی)؛

#ختم کرو اگر

/ * کمانڈ انڈیکس میں اضافہ * /

Ft_DlBuffer_Index + = FT_CMD_SIZE؛

}


ft_void_t فیلڈ

{

# بذریعہ BUFFER_OPTIMIZATION

ft_uint16_t لمبائی = 0؛

لمبائی = strlen (s) + 1؛ // آخری ختم کے لئے آخری

strcpy (& Ft_CmdBuffer [Ft_CmdBuffer_Index]، s)؛


/ * لمبائی میں اضافہ اور 4 بائٹس کی طرف سے اسے سیدھ کریں /

Ft_CmdBuffer_Index + = ((لمبائی + 3) اور ~ 3)؛

#ختم کرو اگر

}


ft_void_t فیٹآپ فلاش ڈیل بوفر (Ft_Gpu_Hal_Context_t * phost)

{

# بذریعہ BUFFER_OPTIMIZATION

اگر (Ft_DlBuffer_Index> 0)

Ft_Gpu_Hal_WrMem (فوسٹ، RAM_DL، Ft_DlBuffer، Ft_DlBuffer_Index)؛

#ختم کرو اگر

Ft_DlBuffer_Index = 0؛

}


ft_void_t فیٹآپ فلاش کیو بوفر (Ft_Gpu_Hal_Context_t * phost)

{

# بذریعہ BUFFER_OPTIMIZATION

اگر (Ft_CmdBuffer_Index> 0)

Ft_Gpu_Hal_WrCmdBuf (فوسٹ، Ft_CmdBuffer، Ft_CmdBuffer_Index)؛

#ختم کرو اگر

Ft_CmdBuffer_Index = 0؛

}


/ * API سے 100 سے 0 * ڈسپلے PWM کو تبدیل کرکے فیڈ آؤٹ اثر دینے کے لئے API

ft_void_t SAMAPP_fadeout ()

{

ft_int32_t میں؛

کے لئے (i = 100؛ i> = 0؛ i - = 3)

{

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PWM_DUTY، i)؛


Ft_Gpu_Hal_Sleep (2)؛ // 2 MS کے لئے نیند

}

}


/ * API 0 سے 100 تک ڈسپلے PWM کو تبدیل کرکے ڈسپلے فیڈین اثر کو انجام دینے اور آخر میں 128 * /

ft_void_t SAMAPP_fadein ()

{

ft_int32_t میں؛

کے لئے (i = 0؛ i <= 100؛="" i="" +="">

{

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PWM_DUTY، i)؛

Ft_Gpu_Hal_Sleep (2)؛ // 2 MS کے لئے نیند

}

/ * آخر میں پی ڈبلیو ایم 100٪ * /

i = 128؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PWM_DUTY، i)؛

}


/ * API پچھلے DLSWAP کی حیثیت کو چیک کرنے اور نئے ڈی ایل کے DLSWAP انجام دینے کے لئے API * /

/ * پچھلے DLSWAP کی حیثیت کے لئے چیک کریں اور اگر ابھی تک کچھ ایم ایس کے لئے انتظار نہیں کیا جائے اور پھر دوبارہ چیک کریں * /

ft_void_t SAMAPP_GPU_DLSwap (ft_uint8_t DL_Swap_Type)

{

ft_uint8_t سویپ ٹائپ = DLSWAP_FRAME، Swap_Done = DLSWAP_FRAME؛


اگر (DL_Swap_Type == DLSWAP_LINE)

{

سویپ ٹائپ = DLSWAP_LINE؛

}


/ * ایک نئی ڈی ایل سویپ کو انجام دیں * /

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_DLSWAP، سویپ ٹائپ)؛


/ * دیر تک تک پہنچتے رہیں *

جبکہ (Swap_Done)

{

Swap_Done = Ft_Gpu_Hal_Rd8 (phost، REG_DLSWAP)؛


اگر (DLSWAP_DONE! = Swap_Done)

{

Ft_Gpu_Hal_Sleep (10)؛ // 10ms کے لئے انتظار

}

}

}


ft_void_t Ft_BootupConfig ()

{


/ * محفوظ طرف کے لئے ایک پاور سائیکل * /

Ft_Gpu_Hal_Powercycle (فونٹ، FT_TRUE)؛

Ft_Gpu_Hal_Rd16 (فوسٹ، RAM_G)؛

/ * کل گھڑی کو بیرونی گھڑی میں سیٹ کریں * /

Ft_Gpu_HostCommand (phost، FT_GPU_EXTERNAL_OSC)؛

Ft_Gpu_Hal_Sleep (10)؛


/ * سوئچ PLL آؤٹ پٹ 48MHz * /

Ft_Gpu_HostCommand (phost، FT_GPU_PLL_48M)؛

Ft_Gpu_Hal_Sleep (10)؛


/ * محفوظ طرف کے لئے ایک بنیادی ری سیٹ کیا * * /

Ft_Gpu_Host کمانڈ (فسٹس، FT_GPU_CORE_RESET)؛


/ * رسائی کے پتہ 0 FT800 * /

Ft_Gpu_HostCommand (phost، FT_GPU_ACTIVE_M)؛


Ft_Gpu_Hal_Wr8 (فوسٹ، REG_GPIO_DIR، 0x80 | Ft_Gpu_Hal_Rd8 (فوسٹ، REG_GPIO_DIR))؛

Ft_Gpu_Hal_Wr8 (فاسٹ، REG_GPIO، 0x080 | Ft_Gpu_Hal_Rd8 (فاسٹ، REG_GPIO))؛

{

ft_uint8_t chipid؛

// FT800 تیار ہے تو چیک کرنے کے لئے رجسٹرڈ ID پڑھیں.

چپڈ = Ft_Gpu_Hal_Rd8 (phost، REG_ID)؛

جبکہ (چپ! = 0x7C)

چپڈ = Ft_Gpu_Hal_Rd8 (phost، REG_ID)؛

#ifdef MSVC_PLATFORM

پرنف ("بیک اپ کے بعد VC1 رجسٹرڈ ID٪ x"، چپڈ)؛

#ختم کرو اگر

}

/ * LCD ڈسپلے کی ترتیب * /

# نمائش SAMAPP_DISPLAY_QVGA

/ * QVGA LCD ڈسپلے کے لئے مخصوص قیمت * /

FT_DispWidth = 320؛

FT_DispHeight = 240؛

FT_DispHCycle = 408؛

FT_DispHoffset = 70؛

FT_DispHSync0 = 0؛

FT_DispHSync1 = 10؛

FT_DispVCycle = 263؛

FT_DiscVset = 13؛

FT_DispVSync0 = 0؛

FT_DispVSync1 = 2؛

FT_DispPCLK = 8؛

FT_DispSwizzle = 2؛

FT_DispPCLKPol = 0؛

#ختم کرو اگر


Ft_Gpu_Hal_Wr16 (فوسٹ، REG_HCYCLE، FT_DispHCycle)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_HOFFSET، FT_DispHoffset)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_HSYNC0، FT_DispHSync0)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_HSYNC1، FT_DispHSync1)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_VCYCLE، FT_DispVCycle)؛

Ft_Gpu_Hal_Wr16 (فاسٹ، REG_VOFFSET، FT_DispVOffset)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_VSYNC0، FT_DDVVync0)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_VSYNC1، FT_DDVVync1)؛

Ft_Gpu_Hal_Wr8 (فاسٹ، REG_SWIZZLE، FT_DispSwizzle)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PCLK_POL، FT_DSPPCLKPOL)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PCLK، FT_DSPPCLK)؛ // اس ڈسپلے کے بعد LCD پر نظر آتا ہے.

Ft_Gpu_Hal_Wr16 (پوسٹر، REG_HSIZE، FT_ ڈس کلیمر)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_VSIZE، FT_DispHeight)؛



/ * رابطے کی ترتیب - مزاحمت کی قیمت کو 1200 تک ترتیب دیں - یہ قیمت کسٹمر کی ضروریات کے لئے مخصوص ہے اور تجربے سے حاصل کیا جاتا ہے * /

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_TOUCH_RZTHRESH، 1200)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_GPIO_DIR، 0xff)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_GPIO، 0x0ff)؛

}


# نمونہ SAMAPP_ENABLE_APIS_SET0

# نمونہ SAMAPP_ENABLE_APIS_SET0


/ * گناہ اور کاسم ٹیبل کی مرضی کے مطابق عمل درآمد - صحت سے متعلق 16 بٹ * /

FT_PROGMEM ft_prog_uint16_t sintab [] = {

0، 402، 804، 1206، 1607، 2009، 2410، 2811، 3211، 3611، 4011، 4409، 4807، 5205، 5601، 5997، 6392،

6786، 7179، 7571، 7961، 8351، 8739، 9126، 9511، 9895، 10278، 10659، 11038، 11416، 11792، 12166، 12539،

12909، 13278، 13645، 14009، 14372، 14732، 15090، 15446، 15799، 16150، 16499، 16845، 17189، 17530، 17868،

18204، 18537، 18867، 19194، 19519، 19840، 2015 9، 20474، 20787، 21096، 21402، 21705، 22004، 22301، 22594،

22883، 23169، 23452، 23731، 24006، 24578، 24811، 25072، 25329، 25582، 25831، 26077، 26318، 26556، 26789،

27019، 27244، 27466، 27683، 27896، 28105، 28309، 28510، 28706، 28897، 29068، 29268، 29446، 29621، 29790، 29 955،

30116، 30272، 30424، 30571، 30713، 30851، 30 984، 31113، 31236، 31356، 31470، 31580، 31684، 31785، 31880، 31 970،

32056، 32137، 32284، 32350، 32412، 32468، 32520، 32567، 32609، 32646، 32678، 32705، 32727، 32744، 32757،

32764، 32767، 32764}؛


ft_int16_t qsin (ft_uint16_t a)

{

ft_uint8_t f؛

ft_int16_t s0، s1؛


اگر (ایک اور 32768)

واپسی - قسن (ایک & 32767)؛

اگر (ایک اور 16384)

ایک = 32768 - ایک؛

f = a & 127؛

s0 = ft_pgm_read_word (sintab + (a >> 7))؛

s1 = ft_pgm_read_word (sintab + (a >> 7) + 1)؛

واپسی (s0 + ((ft_int32_t) f * (s1 - s0) >> 7))؛

}

/ * کاسمیٹریشن * /

ft_int16_t qcos (ft_uint16_t a)

{

واپسی (قسن (ایک + 16384))؛

}

#ختم کرو اگر


/ ************************************************* **************************** /

/ * مختلف رنگوں کے ساتھ مختلف آفسیٹ پر چند پوائنٹس کو ظاہر کرنے کے لئے مثال کے کوڈ * /




/ * FT800 کے بعد بوٹ اپ کے بعد گرافکس پرائمری نمونے کیس * /

/ * ابتدائی بوٹ اپ ڈی ایل - پس منظر سبز رنگ بنانا * /

const ft_uint8_t FT_DLCODE_BOOTUP [12] =

{

255،255،255،2، // GPU ہدایات CLEAR_COLOR_RGB

7،0،0،38، // GPU ہدایت کلید

0،0،0،0، // GPU ہدایت DISPLAY

مستحکم فو_یوٹ 8_t home_star_icon [] = {0x78،0x9C، 0xE5،0x94،0xBF، 0x4E، 0xC2،0x40،0x1C، 0xC7،0x7F، 0x2D، 0x04،0x8B، 0x20،0x45،0x76،0x14،0x67،0xA3،0xF1،0x0D ، 0x64،0x75،0xD2،0x डी 5،0x09،0x27،0x17،0x13،0xE1،0x0D، 0xE4،0x0D، 0x78،0x04،0x98،0x5 डी، 0x30،0x26،0x0E، 0x4A، 0xA2،0x3E، 0x82،0x0E، 0x8E ، 0x82،0xC1،0x38،0x62،0x51،0x0C، 0x0A، 0x42،0x7F، 0xDE، 0xB5،0x77،0xB4،0x77،0x17،0x28،0x21،0x26،0x46،0xFD، 0x26،0xCD، 0xE5،0xD3،0x7C ، 0xFB، 0xBB، 0xFB، 0xFD، 0xB9،0x02،0xCC، 0xA4،0xE8،0x99،0x80،0x61،0xC4،0x8A، 0x9F، 0xCB، 0x6F، 0x31،0x3B، 0xE3،0x61،0x7A، 0x98،0x61،0xC ، 0x37،0xF6،0xFC، 0xC8،0xDD، 0x45،0x00،0xDD، 0xBA، 0xC4،0x77،0xE6،0xEE، 0x40،0xEC، 0x0E، 0xE6،0x91،0xF1،0xD2،0x00،0x42،0x34،0x5E، 0xCE ، 0xE5،0x08،0x16،0xA0،0x84،0x68،0x67،0x B4،0x86،0xC3،0x ڈی 5،0x26،0x2C، 0x20،0x51،0x17،0xA2،0xB8،0x03،0xB0،0xFE، 0x49،0x ڈی ڈی، 0x54،0x15 ، 0xD8،0xEE، 0x73،0x11،0x 9.0x 9 डी، 0xD4،0x1A، 0xB7،0xA5،0x26،0xC4،0x91،0xA9،0x0B، 0x06،0xEE، 0x72،0xB7،0xFB، 0xC5،0x16،0x80،0xE9،0xF1 ، 0x07،0x8 ڈی، 0x3F، 0x15،0x5F، 0x1C، 0x0B، 0xFC، 0x0A، 0x90،0xF0،0xF3،0x09،0xA9،0x90،0xC4،0xC6،0x37،0xB0،0x93،0x BF، 0xE1،0x71،0x ڈی بی، 0xA9،0xD7،0x41،0xAD، 0x46،0xEA، 0x19،0xA9،0xD5،0xCE، 0x93،0x B3،0x35،0x73،0x0A، 0x69،0x59،0x91،0xC3،0x0F، 0x22، 0x1B، 0x1D، 0x91،0x13،0x3 ڈی، 0x91،0x73،0x43،0xF1،0x6C، 0x55،0xDA، 0x3A، 0x4F، 0xBA، 0x25،0xCE، 0x4F، 0x04،0xF1،0xC5،0xCF، 0x71،0xDA، 0x3C، 0xD7،0xB9،0xB2،0x48،0x B4،0x89،0x38،0x20،0x4B، 0x2A، 0x5،0x0C، 0xD5،0xEF، 0x5B، 0xAD، 0x96،0x45،0x8A، 0x41،0x96،0x7A، 0x1F، 0x60،0x0D، 0x7D، 0x22،0x75،0x82،0x2B، 0x0F، 0xFB، 0xCE، 0x51،0x3D، 0x2E، 0x3A، 0x21،0xF3،0x1C، 0xD9،0x38،0x86،0x2C، 0xC6،0x05،0xB6،0x7B، 0x9A، 0x8F، 0x0F، 0x97،0x1B، 0x72،0x6F، 0x1C، 0xEB، 0xAE، 0xFF، 0xDA، 0x97،0x0D، 0xBA، 0x43،0x32،0xCA، 0x66،0x34،0x3D، 0x54،0xCB، 0x24،0x9B، 0x43،0xF2، 0x70،0x3E، 0x42،0x بی بی، 0xA0،0x95،0x11،0x37،0x46،0xE1،0x4F، 0x49،0xC5،0x1B، 0xFC، 0x3C، 0x3A، 0x3E، 0xD1،0x65،0x0E، 0x6F، 0x58،0xF8،0xE، 0x5B، 0xDB، 0x55،0xB6،0x41،0x34،0xCB، 0xBE، 0xDB، 0xA9،0xD،0،085،0x6B، 0xB3،0x17،0x9C، 0x61،0x0C، 0x9B، 0xA2،0x5D، 0x61،0x10، 0xED، 0x2A، 0x9B، 0xA2،0x5D، 0x61،0x10،0xED، 0x2A، 0x9، 0xA2،0x5D، 0x61،0x10،0xED، 0x2A، 0x9B، 0xED، 0xC9،0xFC، 0xDF، 0x14،0x54،0x8F، 0x80، 0x 7A، 0x06،0xF5،0x23،0xA0،0x9F، 0x41،0xF3،0x10،0x30،0x4F، 0x41،0xF3،0x18،0x30،0xCF، 0xCA، 0xFC، 0xFF، 0x35،0xC9،0x79،0xC9،0x89،0xFA، 0x33،0xD7،0x1D، 0xF6،0x5E، 0x84،0x5C، 0x56،0x6E، 0xA7،0xDA، 0x1، 0xF9،0xFA، 0xAB، 0xF5،0x97،0xFF، 0x2F، 0xED، 0x89،0x7E، 0x29،0x9E، 0xB4، 0x9F، 0x74،0x1E، 0x69،0xDA، 0xA4،0x9F، 0x81،0x94،0xEF، 0x4F، 0xF6،0xF9،0x0B، 0xF4،0x65،0x51،0x08}؛


ft_void_t ہوم سیٹ اپ ()

{

Ft_Gpu_Hal_WrCmd32 (فوسٹ، CMD_INFLATE)؛

Ft_Gpu_Hal_WrCmd32 (phost، 250 * 1024L)؛

Ft_Gpu_Hal_WrCmdBuf (phost، home_star_icon، sizeof (home_star_icon))؛

Ft_Gpu_CoCmd_Dlstart (phost)؛ // آغاز

Ft_App_WrCoCmd_Buffer (فاسٹ، کلی (1.11))؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (255، 255، 255))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، BITMAP_HANDLE (13))؛ // پس منظر ستاروں کے لئے ہینڈل

Ft_App_WrCoCmd_Buffer (فوسٹ، بٹمپ سرورس (250 * 1024L))؛ // گرام میں شروع ایڈریس

Ft_App_WrCoCmd_Buffer (phost، BITMAP_LAYOUT (L4، 16، 32))؛ // شکل

Ft_App_WrCoCmd_Buffer (فاسٹ، BITMAP_SIZE (دورہ، ریپیٹ، ریپیٹ، 512، 512))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، BITMAP_HANDLE (14))؛ // پس منظر ستاروں کے لئے ہینڈل

Ft_App_WrCoCmd_Buffer (فوسٹ، بٹمپ سرورس (250 * 1024L))؛ // گرام میں شروع ایڈریس

Ft_App_WrCoCmd_Buffer (phost، BITMAP_LAYOUT (L4، 16، 32))؛ // شکل

Ft_App_WrCoCmd_Buffer (فاسٹ، BITMAP_SIZE (قریب، بارڈر، بورڈ، 32، 32))؛

Ft_App_WrCoCmd_Buffer (phost، DISPLAY ())؛

Ft_Gpu_CoCmd_Swap (phost)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

}

مستحکم ft_uint8_t sk = 0؛

ft_uint8_t پڑھنے_کیز ()

{

مستحکم فو_یوٹ 8_t پڑھیں_tag = 0، temp_tag = 0، ret_tag = 0؛

Read_tag = Ft_Gpu_Hal_Rd8 (phost، REG_TOUCH_TAG)؛

ret_tag = نوڈل؛

اگر (Read_tag! = NULL) اگر اجازت دی گئی تو کلیدی طور پر جاری کیا جائے

{

اگر (temp_tag! = Read_tag)

{

temp_tag = Read_tag؛

sk = Read_tag؛ // متغیر کو طے کرنے کے لئے پڑھیں ٹیگ لوڈ کریں

}

}

اور

{

اگر (temp_tag! = 0)

{

ret_tag = temp_tag؛

}

سکی = 0؛

}

واپسی ret_tag؛

}

چار * معلومات [] = {"FT800 گھڑیوں کی درخواست"


"اے پی پی انٹرایکٹو گھڑیوں کا مظاہرہ کرنے کے لئے،"

"گھڑیوں کا استعمال کرتے ہوئے، ٹریک،"

"& RTC کنٹرول."

باطل فوٹ پلے ساؤنڈ (ft_uint8_t آواز، ft_uint8_t vol، ft_uint8_t مidi)

{

ft_uint16_t ویل = (مڈی < 8)=""> آواز؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_SOUND، ویل)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PLAY، 1)؛

}

ft_void_t معلومات ()

{

ft_uint16_t dloffset = 0، z؛

Ft_CmdBuffer_Index = 0؛

Ft_Gpu_CoCmd_Dlstart (phost)؛

Ft_App_WrCoCmd_Buffer (فاسٹ، کلی (1.11))؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (255،255،255))؛

Ft_Gpu_CoCmd_Text (فوسٹ، FT_DispWidth / 2، FT_DispHeight / 2،26، OPT_CENTERX | OPT_CENTERY، "براہ کرم ڈاٹ پر ٹپ کریں")؛

Ft_Gpu_CoCmd_Calibrate (phost، 0)؛

Ft_App_WrCoCmd_Buffer (phost، DISPLAY ())؛

Ft_Gpu_CoCmd_Swap (phost)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

Ft_Gpu_CoCmd_Logo (فاسٹ)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

جبکہ (0! = Ft_Gpu_Hal_Rd16 (فوسٹ، REG_CMD_READ))؛

dloffset = Ft_Gpu_Hal_Rd16 (phost، REG_CMD_DL)؛

dloffset - = 4؛

Ft_Gpu_Hal_WrCmd32 (فوسٹ، CMD_MEMCPY)؛

Ft_Gpu_Hal_WrCmd32 (فوسٹ، 100000L)؛

Ft_Gpu_Hal_WrCmd32 (فوسٹ، رام ڈی ایل)؛

Ft_Gpu_Hal_WrCmd32 (phost، dloffset)؛

کیا

{

Ft_Gpu_CoCmd_Dlstart (phost)؛

Ft_Gpu_CoCmd_Append (فوسٹ، 100000L، ڈلوفسیٹ)؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_A (256))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_A (256))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_B (0))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_C (0))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_D (0))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_E (256))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_F (0))؛

Ft_App_WrCoCmd_Buffer (phost، SAVE_CONTEXT ())؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (219،180،150))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، COLOR_A (220))؛

Ft_App_WrCoCmd_Buffer (phost، BEGIN (EDGE_STRIP_A))؛

Ft_App_WrCoCmd_Buffer (phost، VERTEX2F (0، FT_DispHeight * 16))؛

Ft_App_WrCoCmd_Buffer (فونٹ، VERTEX2F (FT_DispWidth * 16، FT_DispHeight * 16))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، کولوریہ (255))؛

Ft_App_WrCoCmd_Buffer (phost، RESTORE_CONTEXT ())؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (0،0،0))؛

// معلومات

Ft_Gpu_CoCmd_Text (فوسٹ، FT_DispWidth / 2،20،28، OPT_CENTERX | OPT_CENTERY، info [0])؛

Ft_Gpu_CoCmd_Text (فوسٹ، FT_DispWidth / 2،60،26، OPT_CENTERX | OPT_CENTERY، info [1])؛

Ft_Gpu_CoCmd_Text (فوسٹ، FT_DispWidth / 2،90،26، OPT_CENTERX | OPT_CENTERY، info [2])؛

Ft_Gpu_CoCmd_Text (فوسٹ، FT_DispWidth / 2،120،26، OPT_CENTERX | OPT_CENTERY، info [3])؛

Ft_Gpu_CoCmd_Text (فوسٹ، FT_DispWidth / 2، FT_DispHeight-30، 26، OPT_CENTERX | OPT_CENTERY، "کھیلنا کلک کریں")؛

اگر (sk! = 'P')

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (255،255،255))؛

اور

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (100،100،100))؛

Ft_App_WrCoCmd_Buffer (phost، BEGIN (FTPOINTS))؛

Ft_App_WrCoCmd_Buffer (phost، POINT_SIZE (20 * 16))؛

Ft_App_WrCoCmd_Buffer (phost، TAG ('P'))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، VERTEX2F ((FT_DispWidth / 2) * 16، (FT_DispHeight-60) * 16))؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (180،35،35))؛

Ft_App_WrCoCmd_Buffer (phost، BEGIN (BITMAPS))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، VERTEX2II ((FFDWWthth / 2) -14، (FT_DispHeight-75)، 14،4))؛

Ft_App_WrCoCmd_Buffer (phost، DISPLAY ())؛

Ft_Gpu_CoCmd_Swap (phost)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

} جبکہ (Read_Keys ()! = 'P')؛

Ft_Play_Sound (0x50،255،0xx0)؛

}

# مزید ممالک COUNTRIES 12


چار، ملک [] = {"بھارت"، "سنگاپور"، "نیوزی لینڈ"، "جاپان"، "ڈنمارک"، "چین"، "آسٹریلیا"، "بیلجیم"، "بحرین"، "اٹلی"، "ناروے "،" جرمنی "}؛


typedef struct

{

ft_uint8_t ghr؛

ft_uint8_t gmin؛

ft_uint8_t arith؛

} t_gmtprp؛


[12] = {{5،30، '+'}، {8،0، '+'}، {12،45، '+'}، {9،0، '+'}، {4، 0، '+'}، {8،0، '+'}، {10،0، '+'}، {1،0، '+'}، {3،0، '+'}، {1، 0، '+'}، {1،0، '+'}، {1،0، '+'}}؛

جامد ساخت {

پر دستخط مختصر ڈریگریشن؛

int vel؛ // رفتار

طویل بیس؛ 1 / 16ths پکسل میں // اسکرین X سمنوی

لمبی حد؛

} سکومر؛

ساختہ

{

ft_uint8_t Hrs؛

ft_uint16_t دماغ؛

ft_uint16_t سیکنڈ؛

ft_uint16_t msecs؛

} ist، utc؛

مستحکم فو_void_t scroller_init (ft_uint32_t کی حد)

{

scroller.dragprev = -32768؛

scroller.vel = 0؛ // رفتار

scroller.base = 0؛ 1 / 16ths پکسل میں // اسکرین X سمنوی

scroller.limit = limit؛

}

مستحکم ft_void_t scroller_run ()

{

ft_int32_t تبدیلی؛


دستخط مختصر SX = Ft_Gpu_Hal_Rd16 (فوسٹ، REG_TOUCH_SCREEN_XY + 2)؛


اگر ((sx! = -32768) & (scroller.dragprev! = -32768))

{

scroller.vel = (scroller.dragprev - sx) <>

}

اور

{

تبدیل = زیادہ سے زیادہ (1، abs (scroller.vel) >> 5)؛

اگر (scroller.vel <>

scroller.vel + = تبدیلی؛

اگر (scroller.vel> 0)

scroller.vel - = تبدیلی؛

}

scroller.dragprev = sx؛

scroller.base + = scroller.vel؛

scroller.base = زیادہ سے زیادہ (0، منٹ (scroller.base، scroller.limit))؛

}

مستحکم ft_uint8_t clk_adj = 0؛

مستحکم ft_uint16_t min_val؛

ft_uint8_t temp [7]؛

#ifdef ARDUINO_PLATFORM

بائٹ decToBcd (بائٹ ویل)

{

واپسی ((ویل / 10 * 16) + (ویل٪ 10))؛

}

// عام بیزاری نمبروں پر بائنری کوڈڈ کی شکل بدلیں

بائٹ BCDToDec (بائٹ والو)

{

واپسی ((ویل / 16 * 10) + (ویل٪ 16))؛

}

باطل Rtc_puts ()

{

temp [0] = 0x80 | ist.Secs؛

temp [1] = decToBcd (ist.Mins)؛

temp [2] = decToBcd (ist.Hrs)؛

hal_rtc_i2c_write (0، (ft_uint8_t *) اور temp، 7)؛

}

// ds1307 سے تاریخ اور وقت لیتا ہے

باطل Rtc_gets ()

{

hal_rtc_i2c_read (0، (ft_uint8_t *) اور temp، 3)؛

temp [0] & = 0x7f؛

temp [1] & = 0x7f؛

temp [2] & = 0x7f؛

ist.Hrs = bcdToDec (temp [2])؛

ist.Mins = bcdToDec (temp [1])؛

ist.Secs = bcdToDec (temp [0])؛

}

#ختم کرو اگر

مستحکم ft_uint16_t Get_TagRotary_Value (ft_uint16_t ٹیگال، ft_uint16_t رینج، ft_uint16_t max_rotation، ft_uint16_t CT) // -180 کے لئے 90

{

ft_int32_t trackval = 0؛

مستحکم ft_int16_t thcurr = 0، prevth = 0، adj = 0؛

جامد فوٹ_int32_t کے ارد گرد = 0؛

مستحکم ft_uint16_t ریٹال = 0؛

trackval = Ft_Gpu_Hal_Rd32 (فوسٹ، REG_TRACKER)؛

اگر (trackval)

{

thcurr = (trackval >> 16)؛

اگر (adj == ٹیگول)

{

adj_val + = (ft_int16_t) (thcurr - غالب)؛

اگر (adj_val <>

adj_val + = (max_rotation * 65536L)؛

اگر (adj_val> = ((max_rotation * 65536L))

adj_val - = (max_rotation * 65536L)؛

ریٹال = (adj_val / (65536L / رینج))؛

}

غالب = thcurr؛

ایڈو = ٹریکول & 0xff؛

clk_adj = 0؛

}

اور

{

اگر (adj = = 0) clk_adj = 1؛

اور پھر ریٹٹ = CT؛

adj_val = ((ct / 60) * 65536L) + ((ct٪ 60) * (65536L / range))؛

adj = 0؛

}

واپسی کی واپسی؛

}

مستحکم ft_uint8_t temp_mins = 0، temp_secs = 0، temp_Hrs؛

#if وضاحت (MSVC_PLATFORM) || وضاحت (MSVC_FT800EMU)

SYSTEMTIME str_t؛

#ختم کرو اگر

باطل ٹائمر (ft_uint8_t نام)

{

مستحکم ft_uint8_t temp_time = 0؛

چار hrs_t [2]، min_t [2]، * temp؛

مستحکم ft_uint16_t temp_m = 0، Hrs = 0؛

مستحکم ft_uint16_t temp_msecs = 0، temp_secs = 0؛

ft_uint32_t t؛

ft_int32_t دماغ؛

دماغ = gmt_prp [نام]. gmin؛

Hrs = gmt_prp [name] .ghr؛

دماغ = ممنوع + (گھنٹے * 60)؛

اگر (gmt_prp [نام]. کے ساتھ == '+')

منٹ = min_val + دماغ؛

اگر (gmt_prp [نام]. کے ساتھ == '-')

{

منٹ = min_val-Mins؛

اگر (دماغ <>

منٹ = 720-منٹ؛

}

t = ft_millis ()؛

t = t٪ 1000L؛

utc.Hrs = (دماغ / 60)٪ 12؛

utc.Mins = (دماغ)٪ 60؛

#if وضاحت (MSVC_PLATFORM) || وضاحت (MSVC_FT800EMU)

GetLocalTime (& str_t)؛

ist.Secs = str_t.wSecond؛

#ختم کرو اگر

اگر (temp_mins! = str_t.wMinute)

{

ist.Mins = ist.Mins + (str_t.wMinute-temp_mins)؛

temp_mins = str_t.wMinute؛

}

اگر (temp_Hrs! = (str_t.wHour-8))

{

ist.Hrs = ist.Hrs + ((str_t.wHour-8) -Temp_Hrs)؛

temp_Hrs = str_t.wHour-8؛

}


اگر (ist.Secs! = temp_secs)

{

temp_secs = ist.Secs؛

temp_msecs = 1000L-t؛

}

utc.mSecs = (t + temp_msecs)٪ 1000L؛

utc.Secs = ist.Secs؛

اگر (clk_adj)

{

clk_adj = 0؛

ist.Mins = min_val٪ 60؛

ist.Hrs = (min_val / 60)٪ 12؛

}

}

ft_void_t گھڑی (ft_uint8_t clksize، ft_uint8_t اختیارات)

{

ft_uint8_t

clk_s = clksize / 10، per_f، n_f، نام، ٹیگ؛


ft_uint16_t dx = (clk_s * 2) + (2 * clksize)،

dy = (FT_DispHeight / 2) + clksize + 10،

Temp_m، Hrs؛

ft_uint32_t t؛


ft_uint8_t col = FT_DispWidth / dx؛

ft_int16_t آکس، اوی، ایس ایکس، ڈریگ = 0، prev = 0، ڈریگ = 0، میں، cts = 0، th، pv؛

ft_int32_t ٹریک، دماغ؛

per_f = col؛

n_f = (ممالک) / per_f؛

اوہ = (FT_DispHeight / 2)؛

scroller_init (16 * (ممالک) * (dx) -FT_DispWidth))؛

#if وضاحت (MSVC_PLATFORM) || وضاحت (MSVC_FT800EMU)

GetLocalTime (& str_t)؛

ist.Hrs = str_t.wHour-8؛ // کے لئے سائن اپ

ist.Mins = str_t.wMinute؛

ist.Secs = str_t.wSecond؛

temp_mins = ist.Mins؛

temp_secs = ist.Secs؛

temp_Hrs = ist.Hrs؛

#else

Rtc_gets ()؛

#ختم کرو اگر

کیا

{

ٹیگ = Ft_Gpu_Hal_Rd8 (phost، REG_TOUCH_TAG)؛

temp_m = (ist.Mins + (ist.Hrs * 60))٪ 720L؛

min_val = Get_TagRotary_Value (ٹیگ، 60،12، temp_m)؛


اگر ((Ft_Gpu_Hal_Rd32 (فوسٹ، REG_TRACKER) اور 0xff) == 0)

{

scroller_run ()؛

ڈریگ = scroller.base >> 4؛

cts = drag / dx؛

ڈریگ = ڈریگ٪ dx؛

} اور

{

scroller.vel = 0؛

}

Ft_Gpu_CoCmd_Dlstart (phost)؛

Ft_App_WrCoCmd_Buffer (فاسٹ، کلی (1.11))؛

Ft_App_WrCoCmd_Buffer (phost، TAG_MASK (1))؛

Ft_App_WrCoCmd_Buffer (phost، TAG (0))؛

Ft_Gpu_CoCmd_Gradient (phost، 0، 135، 0x000000، 0، 272، 0x605040)؛

کے لئے (i = -1؛ i <(per_f +="" 2)؛="" i="">

{

آکس = (کلکسیز + clk_s) + (dx * i)؛

آکس- ڈریگ؛

نام = (ممالک + i + cts)٪ ممالک؛

ٹائمر (نام)؛

اگر (ٹیگ == نام + 1) Ft_Gpu_CoCmd_BgColor (phost، 0x4040a0)؛ اور

Ft_Gpu_CoCmd_BgColor (phost، 0x101040)؛

Ft_App_WrCoCmd_Buffer (فونٹ، ٹیگ (نام + 1))؛

Ft_Gpu_CoCmd_Clock (فاسٹ، آکس، FT_DispHeight / 2، کلکسیز، 0، utc.Hrs، utc.Mins، utc.Secs، utc.mSecs)؛

Ft_Gpu_CoCmd_Track (phost، آکس، FT_DispHeight / 2،1،1، نام + 1)؛

}

Ft_App_WrCoCmd_Buffer (فونٹ، TAG_MASK (0))؛

کے لئے (i = -1؛ i <(per_f +="" 2)؛="" i="">

{

آکس = (کلکسیز + clk_s) + (dx * i)؛

آکس- ڈریگ؛

نام = (ممالک + i + cts)٪ ممالک؛

Ft_Gpu_CoCmd_Text (فوسٹ، آکس، ڈی، 29، OPT_CENTERX، ملک [نام])؛

}

Ft_App_WrCoCmd_Buffer (phost، DISPLAY ())؛

Ft_Gpu_CoCmd_Swap (phost)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

#if FT_801_ENABLE کی وضاحت کی

Ft_Gpu_Hal_Sleep (30)؛

#ختم کرو اگر

} جبکہ (1)؛

}

#ifdef MSVC_PLATFORM

/ * اہم داخلہ پوائنٹ * /

ft_int32_t اہم (ft_int32_t argc، ft_char8_t * argv [])

#ختم کرو اگر

#if کی وضاحت (ARDUINO_PLATFORM) || وضاحت (MSVC_FT800EMU)

ft_void_t سیٹ اپ ()

#ختم کرو اگر

{

Ft_Gpu_HalInit_t halinit؛

halinit.TotalChannelNum = 1؛


Ft_Gpu_Hal_Init (& halinit)؛

host.hal_config.channel_no = 0؛

#ifdef MSVC_PLATFORM_SPI

میزبان. ہال_config.spi_clockrate_khz = 12000؛ // میں KHZ

#ختم کرو اگر

#ifdef ARDUINO_PLATFORM_SPI

میزبان. ہال_config.spi_clockrate_khz = 4000؛ // میں KHZ

#ختم کرو اگر

Ft_Gpu_Hal_Open (& میزبان)؛

فاسٹ = اور میزبان؛

Ft_BootupConfig ()؛


پرنف ("reg_touch_rz = 0x٪ x"، Ft_Gpu_Hal_Rd16 (phost، REG_TOUCH_RZ))؛

پرنف ("reg_touch_rzthresh = 0x٪ x"، Ft_Gpu_Hal_Rd32 (phost، REG_TOUCH_RZTHRESH))؛

پرنف ("reg_touch_tag_xy = 0x٪ x"، Ft_Gpu_Hal_Rd32 (phost، REG_TOUCH_TAG_XY))؛

پرنف ("reg_touch_tag = 0x٪ x"، Ft_Gpu_Hal_Rd32 (phost، REG_TOUCH_TAG))؛



/ * یہ اسکرین کو صاف کرنے کیلئے اختیاری ہے * /

Ft_Gpu_Hal_WrMem (فاسٹ، RAM_DL، (ft_uint8_t *) FT_DLCODE_BOOTUP، سائزف (FT_DLCODE_BOOTUP))؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_DLSWAP، DLSWAP_FRAME)؛

Ft_Gpu_Hal_Sleep (1000)؛ // بوٹنگ اپ کی سکرین دکھائیں.


ہوم آفسیٹ ()؛

معلومات ()؛

گھڑی (80،0)؛

/ * تمام کھلی ہینڈل بند کریں * /

Ft_Gpu_Hal_Close (phost)؛

Ft_Gpu_Hal_DeInit ()؛

#ifdef MSVC_PLATFORM

واپسی 0؛

#ختم کرو اگر

}

باطل لوپ ()

{

}



/ * اس سے باہر کچھ نہیں *