<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【LTDC】在 RGBLCD 屏上實現任意位置畫點和讀點

      引言

      此篇文章僅作筆記分享,內容來源為:

      【正點原子】全是干貨 | 手把手教你學STM32的LTDC

      這篇文章的目的就是熟悉在 RGBLCD 上的繪圖操作,了解如何往顯存中對應的位置寫數據。

      繪圖實質

      1. 由于我們的屏幕是 ATK 4.3 800 * 480,所以會對應在 SDRAM 中按順序開辟一個大小為 800 * 480 * 2 的內存,其中 2為一個像素的大小(RGB565一個像素點為兩個字節)。
      2. 幀緩沖的起始地址就是 SDRAM 中為屏幕所開辟的第一個內存地址(S_Addr)。
      3. 對于定位(x, y),我們就是要計算某個點對于顯存首地址的內存偏移是多少,其中分為了行上的 a 距離,和列上的 b 距離。
      4. 橫屏:位置 = (width * y + x) * 2,其中 width 是寬度 800,x 是列數(單位是像素),y 是行數(單位是像素),2是單個像素大?。?br> (uint16_t*)((uint32_t)s_addr + pixsize * (pwidth * y + x))
      5. 豎屏:位置 = (width * (height - x - 1) + y) * 2,其中 width 是寬度 800,其中 height 是寬度 480,x 是行數(單位是像素),y 是列數(單位是像素),2是單個像素大?。?br> (uint16_t*) ((uint32_t)s_addr + pixsize * (pwidth * (pheight - x - 1) + y))

      image

      程序

      LTDC 程序

      點擊查看代碼
      __attribute__((section (".RAM_SDRAM"))) uint16_t framebuf[pHeight][pWidth];
      
      #define LTDC_ADDR	0xC0000000
      
      /* 常用畫筆顏色 */
      #define WHITE           0xFFFF      /* 白色 */
      #define BLACK           0x0000      /* 黑色 */
      #define RED             0xF800      /* 紅色 */
      #define GREEN           0x07E0      /* 綠色 */
      #define BLUE            0x001F      /* 藍色 */ 
      #define MAGENTA         0xF81F      /* 品紅色/紫紅色 = BLUE + RED */
      #define YELLOW          0xFFE0      /* 黃色 = GREEN + RED */
      #define CYAN            0x07FF      /* 青色 = GREEN + BLUE */  
      
      /* 非常用顏色 */
      #define BROWN           0xBC40      /* 棕色 */
      #define BRRED           0xFC07      /* 棕紅色 */
      #define GRAY            0x8430      /* 灰色 */ 
      #define DARKBLUE        0x01CF      /* 深藍色 */
      #define LIGHTBLUE       0x7D7C      /* 淺藍色 */ 
      #define GRAYBLUE        0x5458      /* 灰藍色 */ 
      #define LIGHTGREEN      0x841F      /* 淺綠色 */  
      #define LGRAY           0xC618      /* 淺灰色(PANNEL),窗體背景色 */ 
      #define LGRAYBLUE       0xA651      /* 淺灰藍色(中間層顏色) */ 
      #define LBBLUE          0x2B12      /* 淺棕藍色(選擇條目的反色) */ 
      
      /* 寬度和高度 */
      #define pWidth	800
      #define pHeight	480
      
      /* 橫屏和豎屏 */
      #define HOR	true	// 橫屏
      #define VER	false	// 豎屏
      
      /* RGB類型 */
      #define RGB888		1
      #define RGB565		2
      #define RGB_TYPE	RGB565
      
      /* 像素大小 */
      #if RGB_TYPE == RGB888
      #define PIXSIZE 3	// 單個像素大小
      #endif
      #if RGB_TYPE == RGB565
      #define PIXSIZE 2	// 單個像素大小
      #endif
      
      
      void ltdc_draw_point(uint16_t x, uint16_t y, uint32_t color)
      {
      	if (HOR) {	// 橫屏
      		*(uint16_t*)((uint32_t)framebuf + PIXSIZE * (pWidth * y + x)) = color;
      	} else {	// 豎屏
      		*(uint16_t*)((uint32_t)framebuf + PIXSIZE * (pWidth * (pHeight - x - 1) + y)) = color;
      	}
      }
      
      uint32_t ltdc_read_point(uint16_t x, uint16_t y, uint32_t color)
      {
      	if (HOR) {	// 橫屏
      		return *(uint16_t*)((uint32_t)framebuf + PIXSIZE * (pWidth * y + x)) = color;
      	} else {	// 豎屏
      		return *(uint16_t*)((uint32_t)framebuf + PIXSIZE * (pWidth * (pHeight - x - 1) + y)) = color;
      	}
      }
      
      

      main() 測試程序

      點擊查看代碼
      	ltdc_draw_point(100, 100, RED);
      	ltdc_draw_point(110, 110, RED);
      	ltdc_draw_point(120, 120, RED);
      	ltdc_draw_point(130, 130, RED);
      	ltdc_draw_point(140, 140, RED);
      	ltdc_draw_point(150, 150, RED);
      	ltdc_draw_point(160, 160, RED);
      	ltdc_draw_point(170, 170, RED);
      	ltdc_draw_point(180, 180, RED);
      	ltdc_draw_point(190, 190, RED);
      	ltdc_draw_point(200, 200, RED);
      	
      	printf("pixcolor = %x \r\n", ltdc_read_point(140, 140, RED));
      

      測試結果

      image

      image

      博客導航

      博客導航

      posted @ 2025-10-24 17:46  膝蓋中箭衛兵  閱讀(8)  評論(0)    收藏  舉報
      ORCID iD icon https://orcid.org/0000-0001-5102-772X
      主站蜘蛛池模板: 国产高清在线不卡一区| 精品国产女同疯狂摩擦2| 亚洲成人av免费一区| 国产成人高清亚洲综合| 亚洲中文字幕日产无码成人片| 人妻精品动漫h无码| 无码成人午夜在线观看| 日韩一区二区a片免费观看| 成人国产精品免费网站| 97一期涩涩97片久久久久久久| 国产三级视频网站| 日韩av日韩av在线| 日韩一区二区三区在线观院| 国产九九视频一区二区三区| 精品国产自线午夜福利| 亚洲高清成人av在线| 亚洲一区二区三区小蜜桃| 欧美成本人视频免费播放| 日本丰满熟妇hd| 欧洲无码一区二区三区在线观看| 美腿丝袜亚洲综合第一页| 加勒比精品一区二区三区| 精品国产中文字幕av| 国产精品亚洲精品日韩已满十八小| 午夜福利国产精品视频| 无码中文字幕人妻在线一区二区三区 | 日韩美女一区二区三区视频| 亚洲成人av综合一区| 好紧好爽午夜视频| 激情伊人五月天久久综合| 美日韩精品综合一区二区| 99在线视频免费观看| 国产成人啪精品午夜网站| 国产亚洲一区二区三区啪| 男女真人国产牲交a做片野外| 黄色A级国产免费大片视频| 亚洲产在线精品亚洲第一站一 | 亚洲国产精品毛片av不卡在线| 亚洲高潮喷水无码AV电影| 亚洲精品麻豆一二三区| 久久久久久久久久久久中文字幕|