PC虛擬微控制器的LCD (假的VNC)

2021-08-21 02:09:21 字數 2055 閱讀 9447

本文已經在stm中文論壇發過,在這裡記錄一下

起因:手裡有塊nucleo-f767的板子,某天心血來潮,想玩一下gui,下面開始正題。

思路:1.微控制器+stemwin部分沒什麼說的,主要問題在於如何把螢幕資料傳到pc上顯示。

2.板子上有usb和網口,usb方便連線,於是選定usb口

3.usb協議選擇:在自定義、hid、usb-cdc之間選擇了usb-cdc,其實自定義效能最好了,不過上位機下位機的驅動可不是隨隨便便就搞得定的。選擇cdc下位機通過cubemax生成然後修改一下即可,上位機直接qt serialport即可,方便

4.stemwim底層驅動實現

a.實現void _setpixelindex(gui_device * pdevice, int x, int y, int pixelindex)函式;

定義協議 msg(u8)+x(u16)+y(u16)+pixelindex(u16)+checksum(u8);

轉字串新增頭 "@@"尾"##"

**

uint8_t str[128];

static void _setpixelindex(gui_device * pdevice, int x, int y, int pixelindex)

buf[7] = sum;

str[n++] = '@';

str[n++] = '@';

num=8;

for(int i=0;i>4;

if(a<10)a += 0x30;

else a = a - 10 + 0x41;

str[n++]=a;

a = buf[i]&0x0f;

if(a<10)a += 0x30;

else a = a - 10 + 0x41;

str[n++]=a;;

} str[n++] = '#';

str[n++] = '#';

// str[n++] = '\r';

// str[n++] = '\n';

//while(transmit_fs_stord(str,n)<0);

while(usbd_ok!=cdc_transmit_fs(str,n));

}#if (lcd_mirror_x == 0) && (lcd_mirror_y == 0) && (lcd_swap_xy == 0)

#undef xphys

#undef yphys

#endif

}

b.實現static void _fillrect(gui_device * pdevice, int x0, int y0, int x1, int y1)

直接貼**

static void _fillrect(gui_device * pdevice, int x0, int y0, int x1, int y1) 

buf[11] = sum;

str[n++] = '@';

str[n++] = '@';

num=12;

for(int i=0;i>4;

if(a<10)a += 0x30;

else a = a - 10 + 0x41;

str[n++]=a;

a = buf[i]&0x0f;

if(a<10)a += 0x30;

else a = a - 10 + 0x41;

str[n++]=a;;

} str[n++] = '#';

str[n++] = '#';

// cdc_transmit_fs(str,n);

// while(transmit_fs_stord(str,n)<0);

while(usbd_ok!=cdc_transmit_fs(str,n));

// if (gui_pcontext->drawmode & lcd_drawmode_xor)

// }

// } else

// }

// }

}

其他部分略過

微控制器和PC機之間的連線程式

pc計算機與微控制器串列埠通訊源程式下面是乙個微控制器與pc機通訊的程式,pc機程式用c語言來編寫,微控制器程式用組合語言來編寫1.pc機程式設計pc採用toubrc進行編寫。程式如下 include defineport0x3f8 利用串列埠1進行通訊 intch 15 main charc cl...

LCD段碼屏驅動對微控制器的要求

這裡lcd段碼屏驅動一般指的是段碼屏的com數 幾路驅動 偏壓比,偏壓比呢又跟相應的com數有關係。今天以常見的4com跟8com為例,跟大家 下。當段碼屏做4com驅動時,常用的偏壓比為1 2偏壓比跟1 3偏壓比,對微控制器需要什麼樣的要求?首先,微控制器的資源能夠支援4com驅動,然後檢視此微控...

微控制器(微控制器)的中斷系統及應用

2.中斷暫存器 3.中斷處理流程 4.最重要的事 中斷是指 處理器cpu正在處理某件事情的時候,外部發生了某一事件 如定時器計時已到 請求cpu迅速去處理,cpu暫停當前的工作,轉去處理所發生的事件,處理完以後,再回到原來被中斷的地方,繼續原來的工作。實現這種功能的部件稱為中斷系統。它由4個與中斷有...