日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]IAR7.4+STM32CUBEMX調(diào)試通過(guò)。顯示部分,作為麥知智能小車的一部分。顯示屏是OLED 1.3寸,控制器是sh1106,但像素是128*64,價(jià)格達(dá)到驚人的45元/片。只提供代碼,而不同時(shí)說(shuō)明硬件電路圖,是導(dǎo)致情景不能復(fù)現(xiàn)的主要原

IAR7.4+STM32CUBEMX調(diào)試通過(guò)。

顯示部分,作為麥知智能小車的一部分。顯示屏是OLED 1.3寸,控制器是sh1106,但像素是128*64,價(jià)格達(dá)到驚人的45元/片。


只提供代碼,而不同時(shí)說(shuō)明硬件電路圖,是導(dǎo)致情景不能復(fù)現(xiàn)的主要原因。


這個(gè)是委托方提供的原理圖和硬件,他每條線都有上拉電阻,顯然是打算用模擬SPI。


我在代碼里,將cs,dc,res配置為開(kāi)漏輸出,或者推挽輸出,都可以正常顯示圖像。

不知道cs,dc,res在推挽模式下,會(huì)不會(huì)有問(wèn)題,所以使用cube配置為OD,低速,而SCLK,SDA默認(rèn)為PP(配置SPI的默認(rèn)設(shè)置)


與ugfx接口的底層驅(qū)動(dòng):


/*

*ThisfileissubjecttothetermsoftheGFXLicense.Ifacopyof

*thelicensewasnotdistributedwiththisfile,youcanobtainoneat:

*

*http://ugfx.org/license.html

*file:board_SSD1306.h

*author:yu

*date:2015.12.14

*site:www.mazclub.com

*/

/**

*@fileboards/addons/gdisp/board_SSD1306_spi.h

*@briefGDISPGraphicDriversubsystemboardinterfacefortheSSD1306display.

*

*@noteThisfilecontainsamixofhardwarespecificandoperatingsystemspecific

*code.YouwillneedtochangeitforyourCPUand/oroperatingsystem.

*/

#ifndef_GDISP_LLD_BOARD_H

#define_GDISP_LLD_BOARD_H

#include"stm32f1xx_hal.h"

#include"cmsis_os.h"

//Thecommandbytetoputonthefrontofeachpageline

//#defineSSD1306_PAGE_PREFIX0x40//Co=0,D/C=1

//Foramultipledisplayconfigurationwewouldputallthisinastructureandthen

//setg->boardtothatstructure.

#defineOLED_DC_Port(GPIOC)

#defineOLED_DC_Pin(GPIO_PIN_15)

#defineOLED_CS_Port(GPIOA)

#defineOLED_CS_Pin(GPIO_PIN_8)

#defineOLED_RES_Port(GPIOC)

#defineOLED_RES_Pin(GPIO_PIN_14)

#defineOLED_RES(a)if(a)

HAL_GPIO_WritePin(OLED_RES_Port,OLED_RES_Pin,GPIO_PIN_SET);

else

HAL_GPIO_WritePin(OLED_RES_Port,OLED_RES_Pin,GPIO_PIN_RESET)

#defineOLED_DC(a)if(a)

HAL_GPIO_WritePin(OLED_DC_Port,OLED_DC_Pin,GPIO_PIN_SET);

else

HAL_GPIO_WritePin(OLED_DC_Port,OLED_DC_Pin,GPIO_PIN_RESET)

#defineOLED_CS(a)if(a)

HAL_GPIO_WritePin(OLED_CS_Port,OLED_CS_Pin,GPIO_PIN_SET);

else

HAL_GPIO_WritePin(OLED_CS_Port,OLED_CS_Pin,GPIO_PIN_RESET)

#defineSET_RSTHAL_GPIO_WritePin(OLED_RES_Port,OLED_RES_Pin,GPIO_PIN_SET);

#defineCLR_RSTHAL_GPIO_WritePin(OLED_RES_Port,OLED_RES_Pin,GPIO_PIN_RESET);

externSPI_HandleTypeDefhspi1;

staticvoidinit_board(GDisplay*g){

//Aswearenotusingmultipledisplayswesetg->boardtoNULLaswedon'tuseit.

g->board=0;

}

staticvoidpost_init_board(GDisplay*g){

(void)g;

}

staticvoidsetpin_reset(GDisplay*g,bool_tstate){

(void)g;

if(state)

CLR_RST

else

SET_RST

}

staticvoidacquire_bus(GDisplay*g){

(void)g;

}

staticvoidrelease_bus(GDisplay*g){

(void)g;

}

staticvoidwrite_cmd(GDisplay*g,uint8_tcmd){

(void)g;

OLED_DC(0);

OLED_CS(0);

HAL_SPI_Transmit(&hspi1,&cmd,1,1);

OLED_CS(1);

}

staticvoidwrite_data(GDisplay*g,uint8_t*data,uint16_tlength){

(void)g;

OLED_DC(1);

OLED_CS(0);

HAL_StatusTypeDefstatus=HAL_SPI_Transmit(&hspi1,data,length,20);

if(status!=HAL_OK){

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_SET);

HAL_Delay(200);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_RESET);

}

OLED_CS(1);

}



ugfx默認(rèn)支持chibios,是其一部分,使用IAR編譯,會(huì)有警告,只能忽略,還沒(méi)看到什么不良影響。


外設(shè)初始化代碼,由CUBE生成,在此不需列出。


使用demo里面的代碼,畫一個(gè)矩形。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉