本文已經在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個與中斷有...