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

當(dāng)前位置:首頁 > 工業(yè)控制 > 電路設(shè)計項目集錦
[導(dǎo)讀]本項目利用FreeRTOS和STM32CubeIDE,在RT- thread RT- Spark開發(fā)板上實現(xiàn)了一個簡單的實時操作系統(tǒng)(RTOS)應(yīng)用。

1. 介紹

本項目利用FreeRTOS和STM32CubeIDE,在RT- thread RT- Spark開發(fā)板上實現(xiàn)了一個簡單的實時操作系統(tǒng)(RTOS)應(yīng)用。

單板上運行4個并發(fā)任務(wù)(線程):

?通過AHT21傳感器在LCD上顯示溫度

?使用電位器調(diào)整RGB LED亮度

?在LCD上顯示遞增計數(shù)器

?閃爍狀態(tài)指示燈

LCD是在任務(wù)之間共享的,因此使用互斥鎖來保護(hù)獨占訪問。所有任務(wù)都在無限循環(huán)中運行,并在每次更新后延遲自己,以便其他任務(wù)可以運行。

2. 硬件和軟件要求

2.1硬件

?RT- thread RT- Spark開發(fā)板(基于stm32)

?板載1.3" 240×240 LCD (ST7789, FSMC/8080接口)

?1板載AHT2溫濕度傳感器(I2C)

?外置RGB LED

?外部電位計(連接到ADC引腳)

?板載用戶LED

?Micro USB電纜,用于電源和編程

2.2軟件

?STM32CubeIDE(用于ioc和C代碼)

?FreeRTOS(通過STM32CubeMX / CubeIDE集成)

3. 項目概述和任務(wù)設(shè)計

該應(yīng)用程序使用四個FreeRTOS任務(wù):

1.溫度顯示任務(wù)

?通過I2C從AHT21傳感器讀取溫度

?將值轉(zhuǎn)換為人類可讀的格式

?使用LCD互斥鎖安全地將溫度寫入LCD

2.RGB亮度控制任務(wù)

?使用ADC讀取電位器

?將ADC值映射到PWM占空比

?更新一個或多個通道的RGB LED改變亮度

3.計數(shù)器顯示任務(wù)

?維護(hù)一個遞增的整數(shù)計數(shù)器

?定期鎖定LCD互斥鎖,更新LCD上的計數(shù)器,并解鎖互斥鎖

4.LED閃爍任務(wù)

?以固定的間隔切換一個簡單的狀態(tài)LED

?用作顯示RTOS正在運行的視覺心跳

主要功能:

?初始化硬件和外設(shè)

?清除LCD

?創(chuàng)建所有四個任務(wù)

?啟動調(diào)度程序。

?可選配置低功耗/休眠模式

4. 一步- -步驟指南

4.1創(chuàng)建STM32CubeIDE項目

1.在STM32CubeIDE中創(chuàng)建一個新的STM32項目。

?文件→新建→STM32項目

?選擇RT - Spark板使用的MCU(如果在板數(shù)據(jù)庫中出現(xiàn),則選擇RT - Spark板本身)。

?給它起一個名字,比如FreeRTOS_RT_Spark_Project。

2.生成啟用HAL驅(qū)動程序的基本項目。

?最初接受默認(rèn)的時鐘設(shè)置。

?完成向?qū)б源蜷_。ioc配置。

4.2.Ioc引腳和外設(shè)配置

4.2.1配置AHT20傳感器I2C

1.打開.ioc文件中的Pinout & Configuration選項卡。

2. 啟用I2C外設(shè)(例如,I2C1或I2C2,取決于RT - Spark原理圖和文檔)。

3. 設(shè)置引腳以匹配RTSpark AHT21連接:

?SCL引腳:GPIO AHT SCL(來自原理圖1.3)

?SDA引腳:GPIO AHT SDA

4. 在I2C設(shè)置中:

?選擇“I2C”模式

?配置速度(例如,標(biāo)準(zhǔn)模式100 kHz,除非你改變它)

添加:I2C配置和所用引腳的屏幕截圖。

4.2.2配置LCD接口(FSMC/8080)

1. 使能通過8080并行接口驅(qū)動ST7789 LCD的FSMC/FMC (Flexible Static Memory Controller)。

2. 根據(jù)RT - Spark原理圖(圖1.1)配置數(shù)據(jù)線db0 - db7、控制線CS、DC、WR、RD和背光引腳(LCD_BL)。

3. 根據(jù)您使用的現(xiàn)有LCD庫的要求設(shè)置相應(yīng)的引腳(這應(yīng)該與repo代碼匹配)。

4. 確保GPIO的速度和輸出類型符合LCD驅(qū)動代碼的要求。

4.2.3配置RGB LED和電位器

1.RGB led (pwm):

?選擇一個TIMx定時器,并在連接到RGB LED引腳(由RTSpark板定義)的通道上啟用PWM模式。

?將每個顏色通道配置為PWM輸出,具有合適的頻率(例如,1-10 kHz)。

?將引腳映射到RGB LED焊盤。

2.電位計(ADC):

?使能ADC外設(shè)(如ADC1)。

?選擇連接到電位器的通道(請參閱文檔/電路板手冊)。

?根據(jù)代碼的讀取方式設(shè)置連續(xù)或單一轉(zhuǎn)換模式。

4.2.4配置狀態(tài)指示燈和其他gpio

1. 識別用于閃爍的LED引腳(板載用戶LED)。

2. 在Pinout中設(shè)置為GPIO Output。

3. 配置代碼所需的任何其他gpio(例如,重置引腳,背光啟用等)。

4.3在STM32CubeMX中啟用FreeRTOS

1. 在。iocMiddleware部分,啟用FreeRTOS。

2. 選擇一個與您的項目設(shè)置匹配的基本堆方案(例如,heap_4)。

3. 配置:

?每個任務(wù)的最小堆棧大小

?總堆大小(足夠4個任務(wù)+其他分配)

4.4生成代碼和集成庫

1. 點擊項目→生成代碼(或按齒輪圖標(biāo)),讓STM32CubeIDE基于ioc生成源文件。

2. 在項目中添加/導(dǎo)入LCD驅(qū)動程序和AHT21傳感器驅(qū)動程序:

?復(fù)制LCD驅(qū)動程序。c和。h文件到Core/Src和Core/Inc(或適當(dāng)?shù)奈募A)。

?也復(fù)制AHT21驅(qū)動程序的。c和。h文件。

?確保項目屬性→C/ c++通用→路徑和符號中的包含路徑是正確的。

3. 將這些驅(qū)動程序包含在應(yīng)用程序代碼中(例如,main.c或?qū)S玫腶pp.c):

4.5實現(xiàn)互斥鎖和任務(wù)

現(xiàn)在我們用FreeRTOS把所有的東西捆綁在一起。

4.5.1創(chuàng)建LCD互斥鎖

在你的應(yīng)用程序代碼中(例如,main.c的頂部附近):

在main()中啟動調(diào)度器之前:

任何時候你訪問LCD在一個任務(wù):

4.5.2溫度顯示任務(wù)

偽結(jié)構(gòu)(適應(yīng)你現(xiàn)有的代碼):

4.5.3 RGB亮度任務(wù)(鍋控)

4.5.4計數(shù)器顯示任務(wù)

4.5.5 LED閃爍任務(wù)

4.6創(chuàng)建任務(wù)并啟動調(diào)度程序

在硬件初始化之后和vTaskStartScheduler()之前的main()中:

4.7構(gòu)建、flash和測試

1.在STM32CubeIDE中構(gòu)建項目。

?修復(fù)任何缺失的包含或類型錯誤,使用您的repo作為參考。

2.通過USB連接RT - Spark板。

3. 選擇正確的調(diào)試配置并刷新固件。

4. 復(fù)位單板,觀察:

?液晶顯示溫度和計數(shù)器(在不同的區(qū)域或風(fēng)格)。

?RGB LED亮度隨著電位器的轉(zhuǎn)動而變化。

?狀態(tài)指示燈以正常速率閃爍。

5. 它是如何工作的(摘要)

?FreeRTOS管理四個任務(wù),每個任務(wù)都有一個無限循環(huán)和自己的職責(zé)。

?任務(wù)通過調(diào)用vTaskDelay()來進(jìn)行協(xié)作,這將產(chǎn)生CPU,以便其他任務(wù)可以運行。

?LCD互斥鎖確保一次只有一個任務(wù)使用LCD,防止重復(fù)寫入。

?AHT21傳感器提供超過I2C的實時溫度數(shù)據(jù)。

?電位器輸入通過ADC讀取并映射到PWM占空比以控制RGB亮度。

?LED閃爍任務(wù)為RTOS調(diào)度器提供了一個簡單的視覺心跳。

6. 可能的改進(jìn)

?你可以把這個實驗擴展成一個更高級的RTOS項目:

?從AHT21添加濕度顯示,并在LCD上顯示溫度/濕度。

?使用隊列在任務(wù)之間發(fā)送數(shù)據(jù)(例如,傳感器任務(wù)→顯示任務(wù))。

?添加按鈕輸入以更改顯示模式或RGB模式。

?更積極地實現(xiàn)低功耗模式,并在定時器或中斷時喚醒。

7. 結(jié)果和輸出

本文編譯自hackster.io

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉