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

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

1. 介紹

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

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

?通過(guò)AHT21傳感器在LCD上顯示溫度

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

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

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

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

2. 硬件和軟件要求

2.1硬件

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

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

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

?外置RGB LED

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

?板載用戶(hù)LED

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

2.2軟件

?STM32CubeIDE(用于ioc和C代碼)

?FreeRTOS(通過(guò)STM32CubeMX / CubeIDE集成)

3. 項(xiàng)目概述和任務(wù)設(shè)計(jì)

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

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

?通過(guò)I2C從AHT21傳感器讀取溫度

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

?使用LCD互斥鎖安全地將溫度寫(xiě)入LCD

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

?使用ADC讀取電位器

?將ADC值映射到PWM占空比

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

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

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

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

4.LED閃爍任務(wù)

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

?用作顯示RTOS正在運(yùn)行的視覺(jué)心跳

主要功能:

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

?清除LCD

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

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

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

4. 一步- -步驟指南

4.1創(chuàng)建STM32CubeIDE項(xiàng)目

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

?文件→新建→STM32項(xiàng)目

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

?給它起一個(gè)名字,比如FreeRTOS_RT_Spark_Project。

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

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

?完成向?qū)б源蜷_(kāi)。ioc配置。

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

4.2.1配置AHT20傳感器I2C

1.打開(kāi).ioc文件中的Pinout & Configuration選項(xiàng)卡。

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

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

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

?SDA引腳:GPIO AHT SDA

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

?選擇“I2C”模式

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

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

4.2.2配置LCD接口(FSMC/8080)

1. 使能通過(guò)8080并行接口驅(qū)動(dòng)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庫(kù)的要求設(shè)置相應(yīng)的引腳(這應(yīng)該與repo代碼匹配)。

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

4.2.3配置RGB LED和電位器

1.RGB led (pwm):

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

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

?將引腳映射到RGB LED焊盤(pán)。

2.電位計(jì)(ADC):

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

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

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

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

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

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

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

4.3在STM32CubeMX中啟用FreeRTOS

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

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

3. 配置:

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

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

4.4生成代碼和集成庫(kù)

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

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

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

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

?確保項(xiàng)目屬性→C/ c++通用→路徑和符號(hào)中的包含路徑是正確的。

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

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

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

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

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

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

任何時(shí)候你訪問(wèn)LCD在一個(gè)任務(wù):

4.5.2溫度顯示任務(wù)

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

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

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

4.5.5 LED閃爍任務(wù)

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

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

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

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

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

2.通過(guò)USB連接RT - Spark板。

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

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

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

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

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

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

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

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

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

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

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

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

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

?你可以把這個(gè)實(shí)驗(yàn)擴(kuò)展成一個(gè)更高級(jí)的RTOS項(xiàng)目:

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

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

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

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

7. 結(jié)果和輸出

本文編譯自hackster.io

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

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

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

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

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

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

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

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

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

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

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

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

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

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

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

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

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

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

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

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

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