国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32F407使用DMA加速刷新LVGL

這篇具有很好參考價值的文章主要介紹了STM32F407使用DMA加速刷新LVGL。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本人使用國產(chǎn)的實時操作系統(tǒng)RT-thread,屏幕使用的TFTLCD,屏幕IC是LIL9341

這里就不講移植了,如果需要,請評論,后面出;

前提:移植好LCD,移植好LVGL(不適用DMA能正常顯示)
  1. 使用STM32Cubemax配置DMA

lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔

上圖中,Burst Size的具體配置根據(jù)芯片參考手冊來選擇,如果要用FIFO的話就需要選擇

lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔

因為LVGL需要屏幕數(shù)據(jù)傳輸完后通知一下LVGL,所以這里要啟用DMA中斷

lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔

2、添加代碼

2.1、注冊DMA中斷
/*
*注冊的是傳輸完成中斷
*具體注冊的中斷服務(wù)函數(shù)在lv_port_disp.c中
*/
HAL_DMA_RegisterCallback(&hdma_memtomem_dma2_stream7, HAL_DMA_XFER_CPLT_CB_ID, LVGL_LCD_FSMC_DMA_pCallback);
lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔
2.2、lv_port_disp.c中添加代碼
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
		LCD_Address_Set(area->x1,area->y1,area->x2,area->y2); //<蓋函數(shù)是設(shè)置LCD屏幕的掃描區(qū)域
		HAL_DMA_Start_IT(&hdma_memtomem_dma2_stream7, (uint32_t)color_p, (uint32_t)&LCD->LCD_RAM,
																	((area->x2+1) - area->x1) * ((area->y2+1) - area->y1));
}

void LVGL_LCD_FSMC_DMA_pCallback(DMA_HandleTypeDef *_hdma)
{
	lv_disp_flush_ready(&disp_drv1);
}
/* 在LCD驅(qū)動文件中添加 */
void LCD_Address_Set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)
{
  LCD_WR_REG(0x2a);//列地址設(shè)置
  LCD_WR_DATA(x1>>8);
  LCD_WR_DATA(x1&0x00ff);
  LCD_WR_DATA(x2>>8);
  LCD_WR_DATA(x2&0x00ff);
  LCD_WR_REG(0x2b);//行地址設(shè)置
  LCD_WR_DATA(y1>>8);
  LCD_WR_DATA(y1&0x00ff);
  LCD_WR_DATA(y2>>8);
  LCD_WR_DATA(y2&0x00ff);
  LCD_WR_REG(0x2c);//儲存器寫(2C命令之后開始寫顏色數(shù)據(jù))
}
lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔
2.3、void LCD_Address_Set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)講解
2.3.1、列地址設(shè)置指令

指令:0X2A

列地址設(shè)置指令,在從左到右,從上到下的掃描方式(默認)下面,該指令用于設(shè)置橫坐標(x 坐標):

lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔

在默認掃描方式時,該指令用于設(shè)置 x 坐標,該指令帶有 4 個參數(shù),實際上是 2 個坐標值:SC 和 EC,即列地址的起始值和結(jié)束值,SC 必須小于等于 EC,且 0≤SC/EC≤239。

一般在設(shè)置 x 坐標的時候,我們只需要帶 2 個參數(shù)即可,也就是設(shè)置 SC 即可,因為如果 EC 沒有變化,我們只需要設(shè)置一次即可(在初始化 ILI9341 的時候設(shè)置),從而提高速度。

2.3.2、頁地址設(shè)置指令

指令:0X2B

頁地址設(shè)置指令,在從左到右,從上到下的掃描方式(默認)下面,該指令用于設(shè)置縱坐標(y 坐標):

lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔

用于設(shè)置 y 坐標,該指令帶有 4 個參數(shù),實際上是 2 個坐標值:SP 和 EP,即頁地址的起始值和結(jié)束值,SP 必須小于等于 EP,且 0≤SP/EP≤319。

一般在設(shè)置y 坐標的時候,我們只需要帶 2 個參數(shù)即可,也就是設(shè)置 SP 即可,因為如果 EP 沒有變化,我們只需要設(shè)置一次即可(在初始化 ILI9341 的時候設(shè)置),從而提高速度。

2.3.3、寫 GRAM 指令

指令:0X2C

寫 GRAM 指令,在發(fā)送該指令之后,我們便可以往 LCD的 GRAM 里面寫入顏色數(shù)據(jù)了,該指令支持連續(xù)寫:

lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔

在收到指令 0X2C 之后,數(shù)據(jù)有效位寬變?yōu)?16 位,我們可以連續(xù)寫入 LCD GRAM 值,而 GRAM 的地址將根據(jù) MY/MX/MV 設(shè)置的掃描方向進行自增。

成功?。。?很絲滑??!

lvgl dma,LVGL移植,arm,stm32,Powered by 金山文檔

開源地址:STM32F407使用DMA加速LVGL: STM32F407使用DMA加速LVGL (gitee.com)

基于單片指紋考勤系統(tǒng)設(shè)計(項目中還是有很多BUG,不夠完善):基于單片機的指紋考勤系統(tǒng)設(shè)計-RT-Thread-LVGL: 基于單片機得指紋考勤系統(tǒng) (gitee.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-822214.html

到了這里,關(guān)于STM32F407使用DMA加速刷新LVGL的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • stm32F407學(xué)習(xí)DAY.14 在DMA模式下進行USART串口數(shù)據(jù)收發(fā)(正點原子例程為例)

    stm32F407學(xué)習(xí)DAY.14 在DMA模式下進行USART串口數(shù)據(jù)收發(fā)(正點原子例程為例)

    目錄 一、DMA配置 1、DMA1和DMA2的請求映射 2、DMA掛載總線 3、DMA相關(guān)庫函數(shù) ?4、DMA配置過程(以串口1為例) 1)進行時鐘使能 2)等待DMA可配置 3)初始化DMA(串口1的TX為DMA2 數(shù)據(jù)流7 通道4,RX為DMA2 數(shù)據(jù)流5?通道4) a.DMA外設(shè)地址par: b.DMA存儲器0地址mar: c.數(shù)據(jù)傳輸量ndtr: 4)

    2024年02月04日
    瀏覽(22)
  • STM32F407 --USART使用

    目錄 1. 串口配置--普通模式 2. 實現(xiàn)數(shù)據(jù)的傳輸主函數(shù) 1)單引號雙引號的應(yīng)用數(shù)組傳輸 2)將調(diào)試信息用串口打印傳送到電腦上 1. 串口配置--普通模式 F407使用的M4內(nèi)核與F103使用的M3內(nèi)核不一樣,導(dǎo)致在使用配置上有區(qū)別。需要在F103配置的基礎(chǔ)上專門將GPIO的PIN配置成復(fù)用功能

    2024年02月16日
    瀏覽(26)
  • 從STM32F407到AT32F407(一)

    從STM32F407到AT32F407(一)

    雅特力公司的MCU有著性能超群,價格優(yōu)越的巨大優(yōu)勢,缺點是相關(guān)資料少一些,我們可以充分利用ST的現(xiàn)有資源來開發(fā)它。 我用雅特力的STM32F437開發(fā)板,使用原子?stm32f407的開發(fā)板自帶程序,測試串口程序,原設(shè)定串口波特率為115200,但是輸出亂碼,波特率改成230400,串口輸

    2024年02月02日
    瀏覽(30)
  • stm32f407 st-link v2的正確使用

    stm32f407 st-link v2的正確使用

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 一、安裝ST-LINK/V2 二、使用步驟 1.接線 2.配置 總結(jié) 之前一直在用串口下載,比較麻煩。在淘寶上看到10多塊的ST-LINK/V2下載器,小巧,接線少,還可以在線調(diào)試。但是到貨后使用卻一直連不上,

    2024年02月15日
    瀏覽(23)
  • RT-Thread使用PWM實現(xiàn)燈亮度調(diào)節(jié)——STM32F407

    RT-Thread使用PWM實現(xiàn)燈亮度調(diào)節(jié)——STM32F407

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 RT-Thread使用PWM實現(xiàn)燈亮度調(diào)節(jié)——STM32F407ZG 作為新入門的嵌入式選手,最近在學(xué)習(xí)RT-Thread操作系統(tǒng),鑒于自己健忘的記性,打算記錄下來后面好回顧學(xué)習(xí)。 今天要總結(jié)的是RT-Thread使用PWM實現(xiàn)燈亮度調(diào)節(jié)

    2024年02月15日
    瀏覽(16)
  • STM32F407——串口通信

    STM32F407——串口通信

    本文將對串口通信的分類和基于 stm32 的串口配置進行介紹,以及如何使用串口調(diào)試助手進行串口收發(fā)功能的調(diào)試,旨在幫助還不會使用 stm32 單片機串口資源進行通信的家人們快速學(xué)會如何使用串口來進行通信。 (純干貨、快速上手、零基礎(chǔ)也能會!?。。?(1)串口,即串

    2023年04月08日
    瀏覽(44)
  • STM32F407的時鐘

    STM32F407的時鐘

    時鐘源用來為環(huán)形脈沖發(fā)生器提供頻率穩(wěn)定且電平匹配的方波時鐘脈沖信號。它通常由石英 晶體振蕩器和與非門組成的正反饋振蕩電路組成,其輸出送至環(huán)形脈沖發(fā)生器。 F4開發(fā)指南P107 F4開發(fā)指南P108 HSI高速內(nèi)部時鐘源 High Speed Internal。RC 振蕩器,頻率為 16MHz??梢灾苯幼鳛?/p>

    2024年02月10日
    瀏覽(38)
  • STM32F407的介紹

    STM32F407的介紹

    內(nèi)核 32位 高性能ARM Cortex-M4處理器 時鐘: 高達168MHz,實際還可以超頻一點點 stm32f407的主頻通過PLL倍頻后能夠達到168MHz,而且芯片內(nèi)置一個16MHz的晶振和一個32KHz的晶振,可以滿足不同功耗的需求。 支持FPU(浮點運算)和DSP指令 144引腳 114個IO口 存儲器容量: 1024K FLASH, 192K

    2024年02月10日
    瀏覽(31)
  • 初識 STM32和STM32F407簡介

    初識 STM32和STM32F407簡介

    2007 年 6 月,ST 在北京發(fā)布了全球第一款基于 ARM Cortex M3 內(nèi)核的 32 位通用微控制 器芯片:STM32F103,以優(yōu)異的性能,豐富的資源,超高的性價比,迅速占領(lǐng)市場,從此一鳴 驚人,一發(fā)不可收拾,截止到 2020 年 6 月,STM32 累計出貨量超過 45 億顆。 戰(zhàn)艦開發(fā)板使用的 STM32F103ZET6

    2023年04月08日
    瀏覽(23)
  • STM32F407的PWM

    STM32F407的PWM

    泉水 STM32 的定時器除了 TIM6 和 7。其他的定時器都可以用來產(chǎn)生 PWM 輸出。 高級定時器 TIM1 和 TIM8 可以同時產(chǎn)生多達 7 路的 PWM 輸出。 通用定時器也能同時產(chǎn)生多達 4路的 PWM 輸出 STM32F407 最多可以同時產(chǎn)生 30 路 PWM 輸出! 這里我們僅利用 TIM14的 CH1 產(chǎn)生一路 PWM 輸出。 如上所

    2024年02月17日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包