亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? display_driver.txt

?? A display driver for the controller named brief Structures and code specific to the Solomon Systech
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
www.pudn.com > src.rar > ddi_display_controller_HX8347A.c
 

   1. ////////////////////////////////////////////////////////////////////////////////   
   2. //! \addtogroup ddi_display   
   3. //! @{   
   4. //   
   5. // Copyright (c) 2004-2005 SigmaTel, Inc.   
   6. //   
   7. //! \file ddi_display_controller_ssd1289.c   
   8. //! \brief Structures and code specific to the Solomon Systech 1289 controller   
   9. //! \date 03/2006   
  10. //!   
  11. ////////////////////////////////////////////////////////////////////////////////   
  12. ////////////////////////////////////////////////////////////////////////////////   
  13. // Includes and external references   
  14. ////////////////////////////////////////////////////////////////////////////////   
  15. #include <types.h>   
  16. #include <drivers\ddi_display.h>   
  17. #include <stdarg.h>   
  18. #include <registers\regspower.h>  // need this to check for alkaline battery    
  19. #include <registers\hw_irq.h>   
  20. #include "..\ddi_display_controller.h"   
  21. #include <components\gfx.h>   
  22. #include <hw\hw_lcdif.h>   
  23. #include <hw\hw_gpio.h>   
  24. #include <drivers\ddi_gpio.h>   
  25. #include <drivers\ddi_pwm.h>   
  26. #include <drivers\ddi_lcdif.h>   
  27. #include <drivers\ddi_icoll.h>   
  28. #include <string.h>   
  29. #if defined(RTOS_THREADX)   
  30. #include <os\os_thi_api.h>   
  31. #endif   
  32. #include <registers\regspwm.h>   
  33. #include <registers\regspinctrl.h>   
  34. #include <hw\vmemory.h>   
  35. #include <interrupts.h>   
  36. #include <drivers\ddi_etm.h>   
  37.    
  38. #include <drivers\ddi_rtc.h>   
  39. ////////////////////////////////////////////////////////////////////////////////   
  40. // Externs   
  41. ////////////////////////////////////////////////////////////////////////////////   
  42. ddi_display_Rotation_t g_ddi_display_eRotation = DDI_DISPLAY_ROTATION_NONE;   
  43. gfx_BitmapTypeEnum_t g_ddi_display_eBitmapType = BITMAP_TYPE_16BPP_565;   
  44.    
  45. #if defined(RTOS_THREADX)   
  46. //! Handler for the DMA completion callback   
  47. extern void g_ddi_display_DmaCompletionCallback(void *);   
  48. #endif   
  49.    
  50.    
  51. ////////////////////////////////////////////////////////////////////////////////   
  52. // Definitions   
  53. ////////////////////////////////////////////////////////////////////////////////   
  54.    
  55. // 16bit interface for TopSun   
  56. #define DDI_LCDIF_WORDLENGTH_16BITS 1   
  57.    
  58. #ifndef DDI_DISPLAY_BACKLIGHT_PWM_CHANNEL   
  59. #define DDI_DISPLAY_BACKLIGHT_PWM_CHANNEL 2   
  60. #endif   
  61.    
  62. #ifndef DDI_DISPLAY_DATA_SETUP_XCLKS    
  63. #define DDI_DISPLAY_DATA_SETUP_XCLKS 1   
  64. #endif   
  65.    
  66. #ifndef DDI_DISPLAY_DATA_HOLD_XCLKS   
  67. #define DDI_DISPLAY_DATA_HOLD_XCLKS  1   
  68. #endif   
  69.    
  70. #ifndef DDI_DISPLAY_CMD_SETUP_XCLKS    
  71. #define DDI_DISPLAY_CMD_SETUP_XCLKS  1   
  72. #endif   
  73.    
  74. #ifndef DDI_DISPLAY_CMD_HOLD_XCLKS    
  75. #define DDI_DISPLAY_CMD_HOLD_XCLKS   1   
  76. #endif   
  77.    
  78. #ifndef DDI_DISPLAY_DEFAULT_SIZE_HORIZONTAL    
  79. #define DDI_DISPLAY_DEFAULT_SIZE_HORIZONTAL 320   
  80. #endif   
  81.    
  82. #ifndef DDI_DISPLAY_DEFAULT_SIZE_VERTICAL   
  83. #define DDI_DISPLAY_DEFAULT_SIZE_VERTICAL 240   
  84. #endif   
  85.    
  86. //! Min allowed brightness percentage   
  87. #define MIN_BRIGHTNESS_PERCENTAGE 0   
  88. //! Alkaline batttery can't support the power needed for high brightness   
  89. #define ALKALINE_MIN_BRIGHTNESS_PERCENTAGE 10   
  90.    
  91. //! Max allowed brightness percentage   
  92. #define MAX_BRIGHTNESS_PERCENTAGE 81   
  93. //! Alkaline batttery can't support the power needed for high brightness   
  94. #define ALKALINE_MAX_BRIGHTNESS_PERCENTAGE 20   
  95.    
  96.    
  97. //! Defines the CDIV value for OS independent PWM control   
  98. #define BACKLIGHT_PWM_CDIV BV_PWMn_PERIOD_CDIV__DIV_64   
  99. //! Defines the period in divided clocks for OS independent PWM control   
 100. #define BACKLIGHT_PWM_PERIOD 200   
 101.    
 102. // When the controller is using the LCDIF in 16bit bus mode, command bytes   
 103. // cannot be sent in a packed 16 bit word transfer.  Each command byte must    
 104. // be in its own 16-bit word transfer.  Furthermore, the command byte has to   
 105. // in the lower byte of the 16-bit word.  In 16bit mode, 2 command bytes   
 106. // cannot be packed into 1 16-bit word.   
 107. #ifdef DDI_LCDIF_WORDLENGTH_16BITS   
 108. #define DDI_DISPLAY_WORD_TYPE uint16_t   
 109. #define DDI_DISPLAY_WORDLENGTH WORDLENGTH_16BITS   
 110. #define DDI_DISPLAY_DATA_SWIZZLE NO_SWAP   
 111. #else   
 112. #define DDI_DISPLAY_WORD_TYPE uint8_t   
 113. #define DDI_DISPLAY_WORDLENGTH WORDLENGTH_8BITS   
 114. #define DDI_DISPLAY_DATA_SWIZZLE HWD_BYTE_SWAP    
 115. #endif   
 116.    
 117. // Max width for the controller   
 118. #define DDI_DISPLAY_CONTROLLER_MAX_WIDTH 320   
 119.    
 120. // Max height for the controller   
 121. #define DDI_DISPLAY_CONTROLLER_MAX_HEIGHT 240   
 122.    
 123. // Max bytes per pixel   
 124. #define DDI_DISPLAY_CONTROLLER_MAX_BYTES_PER_PIXEL 2   
 125.    
 126. //! Specifies how many DMA descriptors are allocated for the display driver.   
 127. //! This will determine the maximum size of the frame buffer that can be   
 128. //! transferred with one DMA transaction.  Each DMA descriptor is limited to   
 129. //! 64k bytes of data.   
 130. #define NUM_DMA_DESCRIPTORS (1 + \   
 131.     ((DDI_DISPLAY_CONTROLLER_MAX_WIDTH * DDI_DISPLAY_CONTROLLER_MAX_HEIGHT * \   
 132.      DDI_DISPLAY_CONTROLLER_MAX_BYTES_PER_PIXEL) / (64 * 1024)))    
 133.    
 134. //! Gpio configuration for video mode operation   
 135. #define GPIO_VSYNC_CONFIG_MASK (GPIO_MASK_SEL3 | GPIO_MASK_INPUT | GPIO_MASK_IRQ_RISING)   
 136.    
 137. //! Interrupt vector for VSYNC   
 138. #define GPIO_VSYNC_IRQ_VECTOR VECTOR_IRQ_GPIO1   
 139.    
 140. //! VSYNC interrupt enable/disable bit   
 141. #define GPIO_VSYNC_IRQ_BIT (0x00200000) // Bit 21 in GPIO bank 1 (LCD_BUSY)   
 142.    
 143. //! VSYNC interrupt pin   
 144. #define GPIO_VSYNC_IRQ_PIN LCD_BUSY   
 145.    
 146. //! Macro to enable the VSYNC interrupt   
 147. #define ENABLE_VSYNC_IRQ() HW_PINCTRL_PIN2IRQ1_SET(GPIO_VSYNC_IRQ_BIT) //HW_PINCTRL_IRQEN1_SET(GPIO_VSYNC_IRQ_BIT)   
 148.    
 149. //! Macro to disable the VSYNC interrupt   
 150. #define DISABLE_VSYNC_IRQ() HW_PINCTRL_PIN2IRQ1_CLR(GPIO_VSYNC_IRQ_BIT) //HW_PINCTRL_IRQEN1_CLR(GPIO_VSYNC_IRQ_BIT)   
 151.    
 152. //! Macro to check if the VSYNC IRQ status bit is set   
 153. #define CHECK_VSYNC_IRQ_STATUS() ( HW_PINCTRL_IRQSTAT1_RD() & GPIO_VSYNC_IRQ_BIT )   
 154.    
 155. //! Macro to clear the VSYNC IRQ status   
 156. #define CLEAR_VSYNC_IRQ_STATUS() ( HW_PINCTRL_IRQSTAT1_CLR(GPIO_VSYNC_IRQ_BIT) )   
 157.    
 158. //! Timeout value for the VSYNC signal   
 159. #define VSYNC_TIMEOUT_TICKS TX_WAIT_FOREVER   
 160.    
 161. //! Entry mode register of the HX8347   
 162. typedef union _EntryMode    
 163. {   
 164.     uint16_t V;   
 165.     struct {   
 166.         //uint8_t LG:3;   
 167.         //uint8_t AM:1;   
 168.         //uint8_t ID:2;   
 169.         //uint8_t TY:2;   
 170.         //uint8_t DMode:2;   
 171.         //uint8_t WMode:1;   
 172.         //uint8_t OEDef:1;   
 173.         //uint8_t TRANS:1;   
 174.         //uint8_t DFM:2;   
 175.         //uint8_t VSMode:1;   
 176.          uint8_t Reserved:3;   
 177.      uint8_t BGR:1;   
 178.      uint8_t ML:1;   
 179.      uint8_t MV:1;   
 180.      uint8_t MX:1;   
 181.      uint8_t MY:1;   
 182.      uint8_t Reserved1:8;   
 183.     } B;   
 184. } Hx8347aEntryMode;//SSD1289EntryMode;   
 185.    
 186.    
 187.    
 188. //! Display control register of the SSD1289   
 189. typedef union _Hx8347aDisplayControl   
 190. {   
 191.     uint16_t V;   
 192.     struct {   
 193.         //uint8_t D0:1;   
 194.         //uint8_t D1:1;   
 195.         //uint8_t Reserved:1;   
 196.         //uint8_t CM:1;   
 197.         //uint8_t DTE:1;   
 198.         //uint8_t GON:1;   
 199.         //uint8_t Reserved2:2;   
 200.         //uint8_t SPT:1;   
 201.         //uint8_t VLE:2;   
 202.         //uint8_t PT:2;   
 203.         //uint8_t Reserved3:3;   
 204.          uint8_t Reserved:2;   
 205.      uint8_t D0:1;   
 206.      uint8_t D1:1;   
 207.      uint8_t DTE:1;   
 208.      uint8_t GON:1;   
 209.      uint8_t PT0:1;   
 210.      uint8_t PT1:1;   
 211.      uint8_t Reserved1:8;   
 212.     } B;   
 213. } Hx8347aDisplayControl;//SSD1289DisplayControl;   
 214.    
 215. ////////////////////////////////////////////////////////////////////////////////   
 216. // Prototypes   
 217. ////////////////////////////////////////////////////////////////////////////////   
 218.    
 219. #ifdef RTOS_THREADX     // VSYNC only supported in threadx builds   
 220. //! Handler for the VSYNC interrupt   
 221. //static void ddi_display_controller_VsyncIsr(void *);   
 222. #endif   
 223.    
 224. ////////////////////////////////////////////////////////////////////////////////   
 225. // Variables   
 226. ////////////////////////////////////////////////////////////////////////////////   
 227.    
 228. ////////////////////////////////////////////////////////////////////////////////   
 229. // Globals   
 230. ////////////////////////////////////////////////////////////////////////////////   
 231.    
 232. //! Current screen width in pixels, modified when display is rotated   
 233. uint16_t g_ddi_display_u16ScreenWidth = DDI_DISPLAY_DEFAULT_SIZE_HORIZONTAL;   
 234.    
 235. //! Current screen height in pixels, modified when display is rotated   
 236. uint16_t g_ddi_display_u16ScreenHeight = DDI_DISPLAY_DEFAULT_SIZE_VERTICAL;   
 237.    
 238. //! Number of DMA descriptors that the display driver has allocated.  This is   
 239. //! calculated with the NUM_DMA_DESCRIPTORS macro.  Even though this will not   
 240. //! change during run-time, it is stored as a variable to allow each controller   
 241. //! support module to define its own value and build as a lib.   
 242. uint8_t g_ddi_display_NumDmaDesc = NUM_DMA_DESCRIPTORS;   
 243.    
 244. //! Array of DMA descriptors.  These descriptors will be chained together as   
 245. //! necessary for the amount of data required to transfer for each draw operation   
 246. hw_lcdif_DmaDesc_t g_ddi_display_DmaDescChain[NUM_DMA_DESCRIPTORS] __OCRAM_NCNB_DATA;   
 247.    
 248. //! Pointer to the DMA descriptor chain.  Necessary to allow building as a lib   
 249. hw_lcdif_DmaDesc_t *g_ddi_display_pDmaDescChain = g_ddi_display_DmaDescChain;   
 250.    
 251. //! Current video mode of the driver.   
 252. ddi_display_VideoMode_t g_ddi_display_VideoMode = DDI_DISPLAY_ASYNC_MODE;   
 253.    
 254. #ifdef RTOS_THREADX     // VSYNC only supported in threadx builds   
 255. //! Semaphore for video mode operation   
 256. //static TX_SEMAPHORE *pVideoSemaphore = NULL;   
 257. #endif   
 258. ////////////////////////////////////////////////////////////////////////////////   
 259. // Code   
 260. ////////////////////////////////////////////////////////////////////////////////   
 261.    
 262. ////////////////////////////////////////////////////////////////////////////////   
 263. //! \brief static delay function   
 264. //!   
 265. //! \fntype Function   
 266. //!   
 267. //! delay function   
 268. //!    
 269. //!   
 270. ////////////////////////////////////////////////////////////////////////////////   
 271. /*  
 272. static void delay(uint32_t u32DelayValue)  
 273. {  
 274. #if defined(DDI_DISPLAY_ALL_TX_DRIVERS) && defined(RTOS_THREADX)  
 275.     tx_thread_sleep(OS_MSECS_TO_TICKS(u32DelayValue));  
 276. #else  
 277.     volatile uint32_t i;  
 278.     //u32DelayValue = u32DelayValue*1000; //// *256;  
 279.     for( i = 0; i < u32DelayValue; i++ )  
 280.     {  
 281. #pragma asm  
 282.        nop  
 283.        nop ; tmptmp  
 284.        nop ; tmptmp  
 285.        nop ; tmptmp  
 286.        nop ; tmptmp  
 287.        nop ; tmptmp  
 288.        nop ; tmptmp  
 289.        nop ; tmptmp  
 290.        nop ; tmptmp  
 291.        nop ; tmptmp  
 292. #pragma endasm          
 293.     }  
 294. #endif  
 295. }  
 296. */   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品日韩区二区麻豆天美| 综合久久久久久| 国产日韩欧美一区二区三区综合| 亚洲欧洲成人自拍| 卡一卡二国产精品| 日本大香伊一区二区三区| 欧美精品一区二区三区四区| 亚洲高清免费一级二级三级| 成人国产精品免费观看| 日韩视频一区在线观看| 亚洲一区二区在线观看视频| 成人av网在线| 久久精品一区二区三区不卡 | 色综合久久久网| 日韩精品一区二区三区中文精品 | 99在线热播精品免费| 日韩精品一区二区三区在线观看| 一区二区日韩av| 99免费精品在线观看| 国产三级欧美三级| 免费视频最近日韩| 欧美精品日韩一本| 亚洲私人影院在线观看| 成人一二三区视频| 欧美激情资源网| 极品尤物av久久免费看| 91精品国产一区二区| 亚洲3atv精品一区二区三区| 欧美性受xxxx黑人xyx性爽| 亚洲人成人一区二区在线观看| 成人性色生活片免费看爆迷你毛片| 精品免费一区二区三区| 久久99最新地址| 日韩视频一区二区在线观看| 日韩精品午夜视频| 欧美一区二区视频观看视频| 日韩成人一区二区| 日韩一区二区三区电影在线观看| 婷婷国产v国产偷v亚洲高清| 欧美猛男超大videosgay| 五月开心婷婷久久| 欧美一级精品大片| 国内精品视频666| 久久伊99综合婷婷久久伊| 国产精品亚洲第一区在线暖暖韩国 | 色综合久久综合中文综合网| 国产盗摄一区二区三区| 91丨九色丨蝌蚪丨老版| 黄色日韩三级电影| 亚洲综合色丁香婷婷六月图片| 国产精品亲子乱子伦xxxx裸| 国产精品你懂的在线| 欧美日韩国产乱码电影| 日韩精品中文字幕在线一区| 91麻豆成人久久精品二区三区| 国产欧美精品区一区二区三区| 成人av网址在线| 亚洲综合色自拍一区| 这里只有精品99re| 国产一区二区三区四区五区美女| 国产欧美日韩不卡| 欧美午夜在线观看| 麻豆精品在线看| 2017欧美狠狠色| 色综合激情久久| 免费观看一级特黄欧美大片| 国产日韩一级二级三级| 欧美优质美女网站| 寂寞少妇一区二区三区| 亚洲美女在线国产| 精品国产电影一区二区| av高清久久久| 久久精品国产精品亚洲综合| 国产精品美女久久久久久| 欧美欧美欧美欧美首页| 成人av在线观| 精油按摩中文字幕久久| 亚洲乱码国产乱码精品精小说| 日韩亚洲欧美在线| 一本色道久久综合精品竹菊| 精彩视频一区二区| 亚洲午夜久久久久| 欧美高清在线视频| 欧美一二三四在线| 一本色道久久综合亚洲aⅴ蜜桃 | 国产午夜亚洲精品不卡| 欧美伊人久久久久久久久影院| 国产专区欧美精品| 日韩和欧美一区二区三区| 一区二区三区四区不卡在线 | 亚洲成人免费观看| 国产精品久久免费看| 日韩欧美在线不卡| 欧美日韩中文字幕精品| 91社区在线播放| 国产jizzjizz一区二区| 日本aⅴ亚洲精品中文乱码| 一区二区三区在线观看视频| 久久久久久亚洲综合| 日韩一区二区三区精品视频 | 91精品国产麻豆国产自产在线| 91美女视频网站| hitomi一区二区三区精品| 国产一区二区三区免费看| 日本三级亚洲精品| 亚洲国产精品麻豆| 亚洲天堂2016| 亚洲欧美日韩一区二区 | 欧美一卡2卡3卡4卡| 欧美三级电影在线看| 日本韩国精品在线| 色综合久久久网| 91精品1区2区| 色婷婷国产精品久久包臀| 一本色道久久综合亚洲精品按摩| av电影在线观看完整版一区二区| 成人激情小说网站| 成人av电影免费在线播放| www.欧美亚洲| 99国产精品国产精品毛片| 一本到不卡免费一区二区| 色www精品视频在线观看| 欧美中文字幕一区二区三区亚洲| 91行情网站电视在线观看高清版| 91黄色免费看| 欧美精品自拍偷拍| 日韩欧美电影一二三| 337p日本欧洲亚洲大胆色噜噜| 2020国产精品自拍| 国产精品拍天天在线| 亚洲精选免费视频| 天天色 色综合| 另类中文字幕网| 国产成人福利片| 91视视频在线观看入口直接观看www | 精品久久久久香蕉网| 国产亚洲欧美日韩日本| 中文字幕av一区二区三区免费看| 综合精品久久久| 亚洲国产裸拍裸体视频在线观看乱了| 五月激情综合婷婷| 狠狠色狠狠色综合| 99re这里都是精品| 337p亚洲精品色噜噜噜| 国产三级精品在线| 亚洲一区二区综合| 久久97超碰国产精品超碰| a4yy欧美一区二区三区| 欧美日韩黄色一区二区| 精品欧美一区二区在线观看| 国产精品美女www爽爽爽| 亚洲一区二区三区美女| 国产一区 二区| 欧美综合天天夜夜久久| 久久色在线观看| 伊人一区二区三区| 国产美女主播视频一区| 99这里都是精品| 精品久久久久久久久久久院品网 | 日韩欧美一区中文| 亚洲欧洲性图库| 免费观看在线综合| 99久久精品免费看国产免费软件| 欧美卡1卡2卡| 亚洲免费在线看| 国产九色sp调教91| 欧美日韩国产首页| 国产精品久久久久四虎| 久久精品国产久精国产爱| 日本丶国产丶欧美色综合| 国产偷国产偷亚洲高清人白洁| 亚洲成人精品一区二区| 99久久精品免费看国产免费软件| 精品奇米国产一区二区三区| 亚洲第一久久影院| 91网站在线观看视频| 久久久亚洲欧洲日产国码αv| 三级成人在线视频| 在线中文字幕一区二区| 自拍偷拍国产亚洲| 国产精品一二三区| 精品国产欧美一区二区| 五月天中文字幕一区二区| 91高清视频在线| 日韩一区在线免费观看| 国产盗摄视频一区二区三区| 欧美一区二区三区日韩视频| 一区二区三区高清不卡| 色偷偷成人一区二区三区91 | 国产一区二区三区在线观看精品 | 爽好久久久欧美精品| 日本韩国欧美一区| 亚洲精品乱码久久久久久久久| 99久久综合狠狠综合久久| 国产欧美中文在线| 丁香激情综合国产| 中文字幕av一区二区三区 | 韩国女主播一区| 精品欧美乱码久久久久久1区2区| 蜜桃视频免费观看一区|