在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于stm32,u8g2菜單之間切換(三)寫u8g2的一些必要函數

stm32嵌入式應用學習 ? 來源:stm32嵌入式應用學習 ? 作者:stm32嵌入式應用學 ? 2025-03-07 12:53 ? 次閱讀

要想stm應用u8g2繪制界面需要對u8g2原函數

u8g2_Setup_ssd1306_i2c_128x128_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb)里面后兩個參數實現函數。

因為使用的軟件實現i2c,所以u8x8_msg_cb byte_cb這個參數直接使用自帶的u8x8_byte_sw_i2c即可,我們只要實現u8x8_msg_cb gpio_and_delay_cb這個參數寫一個函數:

uint8_t u8x8_gpio_and_delay(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr)
{
switch (msg)
{
case U8X8_MSG_DELAY_100NANO: // delay arg_int * 100 nano seconds
__NOP();
break;
case U8X8_MSG_DELAY_10MICRO: // delay arg_int * 10 micro seconds
for (uint16_t n = 0; n < 320; n++)
{
__NOP();
}
break;
case U8X8_MSG_DELAY_MILLI: // delay arg_int * 1 milli second
HAL_Delay(1);
break;
case U8X8_MSG_DELAY_I2C: // arg_int is the I2C speed in 100KHz, e.g. 4 = 400 KHz
Tims_delay_us(5);
break; // arg_int=1: delay by 5us, arg_int = 4: delay by 1.25us
case U8X8_MSG_GPIO_I2C_CLOCK: // arg_int=0: Output low at I2C clock pin
if(arg_int==1)
{
HAL_GPIO_WritePin(OLEDSCK_GPIO_Port,OLEDSCK_Pin,GPIO_PIN_SET);
}
else

if(arg_int==0)
{HAL_GPIO_WritePin(OLEDSCK_GPIO_Port,OLEDSCK_Pin,GPIO_PIN_RESET);}

break; // arg_int=1: Input dir with pullup high for I2C clock pin
case U8X8_MSG_GPIO_I2C_DATA: // arg_int=0: Output low at I2C data pin
if(arg_int==1)
{
HAL_GPIO_WritePin(OLEDSDA_GPIO_Port,OLEDSDA_Pin,GPIO_PIN_SET);
}
else

if(arg_int==0)
{HAL_GPIO_WritePin(OLEDSDA_GPIO_Port,OLEDSDA_Pin,GPIO_PIN_RESET);}


break; // arg_int=1: Input dir with pullup high for I2C data pin
case U8X8_MSG_GPIO_MENU_SELECT:
u8x8_SetGPIOResult(u8x8, /* get menu select pin state */ 0);
break;
case U8X8_MSG_GPIO_MENU_NEXT:
u8x8_SetGPIOResult(u8x8, /* get menu next pin state */ 0);
break;
case U8X8_MSG_GPIO_MENU_PREV:
u8x8_SetGPIOResult(u8x8, /* get menu prev pin state */ 0);
break;
case U8X8_MSG_GPIO_MENU_HOME:
u8x8_SetGPIOResult(u8x8, /* get menu home pin state */ 0);
break;
default:
u8x8_SetGPIOResult(u8x8, 1); // default return value
break;
}
return 1;
}
wKgZPGfKekaALLi7AABuU-SQPTs776.png

劃線的地方是需要根據我們自己對stm32 io口配置和us、ms延時函數自己需要修改的。實現后寫入函數參數:

u8g2_Setup_ssd1306_i2c_128x128_f(&u8g2, U8G2_R0, u8x8_byte_sw_i2c, u8x8_gpio_and_delay);

接下來就可以測試下:

#include"u8g2.h"
#include"u8x8.h"
#include"TimeDelay.h"
#include"icon.h"
#include "ui.h"
{……..}
u8g2_Setup_ssd1306_i2c_128x128_f(&u8g2, U8G2_R0, u8x8_byte_sw_i2c, u8x8_gpio_and_delay); // 初始化u8g2 結構體
u8g2_InitDisplay(&u8g2); //對緩存進行初始化 // 初始化u8x8_gpio_and_delay函數
u8g2_SetPowerSave(&u8g2, 0); //wake up 屏幕 // 初始化u8x8_byte_hw_i2c函數
u8g2_ClearBuffer(&u8g2); //清除緩存區
HAL_Delay(1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
u8g2_DrawLine(&u8g2, -16,-16, 127, 127);
 u8g2_DrawLine(&u8g2, 0,50, 100, 50);
u8g2_DrawLine(&u8g2, 0,0, 0,100);
u8g2_SetFont(&u8g2,u8g2_font_helvR08_tr);
u8g2_DrawButtonUTF8(&u8g2,4, 20, U8G2_BTN_BW2, 0, 2, 2, "Btn" );
u8g2_SetFont(&u8g2,u8g2_font_ncenB14_tr);
u8g2_DrawStr(&u8g2,0,45,"Hello World!");
u8g2_SendBuffer(&u8g2);
u8g2_ClearBuffer(&u8g2);
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2287

    文章

    10988

    瀏覽量

    361588
  • u8g2
    +關注

    關注

    0

    文章

    18

    瀏覽量

    2062
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32U5+8bit_8080 LCD怎么配置touchgfx?

    我參與的項目使用STM32U575做為主空,使用fmc來驅動8080接口的8bitLCD,配置touchgfx時不能配置為8bit,其他選型例如DMA2D也使用不了,我該怎么做?
    發表于 04-28 08:12

    STM32U5+8bit_8080 LCD怎么配置touchgfx?

    我參與的項目使用STM32U575做為主空,使用fmc來驅動8080接口的8bitLCD,配置touchgfx時不能配置為8bit,其他選型例如DMA2D也使用不了,我該怎么做?
    發表于 04-27 07:11

    使用STM32G031G6U6控制繼電器,PA8無法輸出高低電平的原因?

    使用STM32G031G6U6控制繼電器,發現PA8無法輸出高低電平。配置如下: GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP
    發表于 03-13 06:46

    關于stm32u8g2菜單之間切換)用u8g2菜單無限左右循環

    u8g2_DrawXBMP();? 函數畫圖需要的是我們圖片的地址而不是整個圖片數組。 下面是源碼: ? int ui_run(int *a,int *a_tag,uint8_
    的頭像 發表于 03-11 09:10 ?357次閱讀

    關于stm32u8g2菜單之間切換(1)

    在移植U8g2
    的頭像 發表于 03-05 16:43 ?349次閱讀

    關于stm32u8g2菜單之間切換(二)u8g2的移植

    移植是基于stm32cubeide,oled屏是1306驅動128x64的。接口用iic軟件模擬,hal庫iic硬件貌似有bug。 1,先在網上下載u8g2包。 2,解壓后找到源文件文件夾。 3
    的頭像 發表于 03-04 09:52 ?691次閱讀
    <b class='flag-5'>關于</b><b class='flag-5'>stm32</b>,<b class='flag-5'>u8g2</b><b class='flag-5'>菜單</b><b class='flag-5'>之間</b><b class='flag-5'>切換</b>(二)<b class='flag-5'>u8g2</b>的移植

    深入了解U8g2與LVGL圖形庫

    在單片機開發領域,圖形顯示功能變得越來越重要。無論是工業控制界面、智能家居設備,還是手持儀器儀表,都需要個高效且易用的圖形庫來實現豐富的可視化效果。U8g2 和 LVGL 就是其中兩款備受關注的圖形庫,它們各有特點,適用于不同的應用場景。今天,我們就來深入了解這兩個圖形
    的頭像 發表于 02-13 11:01 ?1445次閱讀

    比亞迪仰望U8迎來重磅OTA升級

    近日,仰望U8 迎來重磅OTA,仰望U8豪華版迎來V2.1.0 OTA大版本升級,實現了19項功能新增,16項功能優化;仰望U8越野玩家版迎來OTA V2.1.1上線 ,新增18大功能,17項功能優化。其中,仰望
    的頭像 發表于 12-26 14:37 ?675次閱讀

    51單片機STC8H8K64U通過RA8889/RA8876如何控制彩屏 I2C源碼下載

    用51單片機STC8H8K64U驅動彩屏,控制器采用瑞佑RA8889. 使用軟件模擬I2C方式通信,驅動大屏顯示。
    的頭像 發表于 11-01 11:02 ?951次閱讀
    51單片機STC<b class='flag-5'>8H8K64U</b>通過RA8889/RA8876如何控制彩屏 I<b class='flag-5'>2</b>C源碼下載

    課程上線 | STM32單片機入門教程(1)基于HAL庫的多核心開發(F1/F4/G0/U5)

    ?好消息!華清遠見STM32入門視頻課程《基于HAL庫的STM32多核心開發》正式上線,已更新90講,持續更新中,8月份將全部上線。課程優勢真人出鏡,手把手教學板玩轉
    的頭像 發表于 08-08 16:42 ?634次閱讀
    課程上線 | <b class='flag-5'>STM32</b>單片機入門教程(1)基于HAL庫的多核心開發(F1/F4/<b class='flag-5'>G</b>0/<b class='flag-5'>U</b>5)

    【CH32V208開發板】圖形庫u8g2的oled顯示

    c_128x64_noname_f/u8g2_Setup_ssd1306_i2c_128x32_univision_f4.修改“u8g2_d_memory.c”文件,這個文件里面其實就是“u8g2_d_setup.c”文件對應的
    發表于 07-29 23:11

    求助,請問ESP32-S2-DevKitM-1開發板的IIC引腳是哪些?

    購買的ESP32-S2-DevKitM-1,說是有兩路IIC,可是到處找的資料,都沒說是哪些引腳,使用Arduino里的Adafruit_SSD1306或者U8g2庫對0.96吋OLED12864
    發表于 07-01 07:03

    菱plcfx2n和fx3u有什么區別

    菱PLC FX2N和FX3U是兩款非常受歡迎的可編程邏輯控制器(PLC),它們在工業自動化領域有著廣泛的應用。盡管它們在某些方面有相似之處,但它們之間也存在
    的頭像 發表于 06-20 09:50 ?5622次閱讀

    怎樣stm8的中斷函數

    求指導,怎樣stm8的中斷函數,翻了一些資料沒翻到!!
    發表于 05-15 07:20

    stm8s105k4用硬件示波器量,沒有收到任何數據,但是直進入到接收中斷里去,為什么?

    Index1], g_u8Index1); /* 獲取下個字符 */ g_u8Index1++; } 奇怪的現象是在DealReceiveData這個函數增加斷點后,按F1
    發表于 05-14 08:17
    主站蜘蛛池模板: 色综合天天综一个色天天综合网 | 日韩欧美高清一区 | 久久夜色精品国产亚洲 | 国产精品美女免费视频大全 | 免费手机黄色网址 | 欧美色乱 | 欧美人与z0xxxx另类 | 成年人www | 国产精品久久婷婷六月丁香 | 天天影视欧美综合在线观看 | 午夜大片在线观看 | 久久久久久久久久久9精品视频 | 色综合天天色 | 午夜在线亚洲男人午在线 | 欧美又黄又嫩大片a级 | 午夜视频观看 | 五月激激 | 亚洲一区二区福利视频 | 国产精品丝袜xxxxxxx | 天天色天天搞 | 四虎国产精品免费视 | 在线观看s色 | 久久久久久夜精品精品免费 | 男人性天堂 | 久久午夜宅男免费网站 | 在线三级播放 | 日色视频 | 国产综合久久久久影院 | 亚洲+国产+图片 | 国产在线播放你懂的 | 国产黄色片在线观看 | 手机在线免费视频 | 永久免费看黄 | 西西人体44renti大胆亚洲 | 欧美一级高清免费播放 | 国产资源视频在线观看 | 午夜久久久久久久 | 国产精品香蕉在线一区 | 日本免费一区二区在线观看 | 精品三级网站 | 欧美又粗又硬又大久久久 |