【巨窩】stm32c8t6 驅動ssd1306 oled IIC顯示屏,HAL庫,cubeMX配置。
前言和介紹
第一篇博文。看了國內很多硬體部落格,對半路出家的人來說學學習成本高,不否認從底層學起能夠掌握更深層次內容,但效率和耐心也是影響專案進度的因素。所以就暴力入門,複製黏貼,圖多費話少。第一步不管io口中斷,也不點led燈,也沒有ADC。先把螢幕點了再說,這樣的好處在於之後學習不再枯燥。壞處在於不夠底層了,然而對我這種人來說,常規方式的流程就是“入門到放棄”。
需要軟體
1.keil mdk 5.開發環境,用來寫程式碼,編譯,下載。(網上下載安裝的安裝包和教程都很多)
2.cubeMX 用來自動生成程式碼,生成的程式碼配置了針腳的方式,這和之前的開發方式不一樣,以前用
需要原料
oled12864一塊ssd1306 iic介面的。
stm32 c8t6 最小系統板一塊。
開發環境,喜聞樂見的keil5 MDK+HAL庫。還配合了cube mx。
說以下幾點。
1.u8g庫以前是arduino用的,國外網友一直在不斷的更新,如今相容了很多的晶片和螢幕,ssd1306就是其中之一。
2.這個移植不是我做的,是一個俄羅斯朋友做的,並且共享到了github上。連結如下:https://github.com/SL-RU/stm32libs 點選clone or download下載zip檔案。有條件的同學可以點選星星支援下毛子。
3.u8g圖形庫用起來很方便,比商家給的那個例程不知道高到那裡去了,具體這麼幾個方面。
(1)可以畫點
(2)可以畫線,這部分意味著可以自己自制示波器了。
(3)可以畫三角,畫圓。
4.u8g庫是開源的庫,相容很多種螢幕,比如st7735 1.8tft。這對很多小型的穿戴式裝置很受用。希望有能力的同學可以幫助移植這些庫。共享精神!
畫圓
畫線
在stm32上使用這個庫時候,不能像arduino一樣直接輸出變數,只能輸出字串意味著:一個變化的數要用特別的方式輸出。
辦法就是用sprintf函式。
如下:可以將double型的變數Z直接輸出。
void OLED_showdouble(uint16_t x, uint16_t y,double z)
{
char str[20];
sprintf(str,"%6.3f",z);
SSD1306_GotoXY(1,1);
SSD1306_Puts(str, &Font_11x18, 1);
}
輸出成功。
這一步意味著有了顯示,可以輸出變數。
上圖是增加了一個血氧飽和度哦採集模組,可以示波。
示波器的具體程式碼如上 寫的比較菜。歡迎點贊
有人回覆繼續更新沒人回覆就看心情