0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

跟AB32VG1開發(fā)學(xué)習(xí)RGB交替閃爍

RT_THREAD ? 來源:RT_THREAD ? 作者:RT_THREAD ? 2021-11-21 09:14 ? 次閱讀

今天開始學(xué)習(xí)RGB交替閃爍。
這是一個最基本的io口控制例程??吹紸B32VG1編寫的內(nèi)容,感覺有些地方不懂,后面再說。現(xiàn)在先記錄整個學(xué)習(xí)過程。
1.查看硬件電路結(jié)構(gòu)

pYYBAGGZfPiAZLetAAAkGuecaVg341.pngled接口電路pYYBAGGZfRaAddn2AABl0X6T5Zo444.pngled接口電路2

這里采用了header4×2來轉(zhuǎn)接一下。便于胸口復(fù)用。
2.軟件設(shè)計(jì)與編寫
可以看到LED是低電平使能,在相應(yīng)的io口輪次輸出0,使得LED點(diǎn)亮。
獲得LED
設(shè)置pin模式,
輪次輸出相應(yīng)電平,點(diǎn)亮或熄滅相應(yīng)led
void RGB_Init(void)
{
// 獲得 led
Led.LED_R = rt_pin_get("PE.1");
Led.LED_G = rt_pin_get("PE.4");
Led.LED_B = rt_pin_get("PA.1");
// 設(shè)置引腳為輸出方式
rt_pin_mode(Led.LED_R, PIN_MODE_OUTPUT);
rt_pin_mode(Led.LED_G, PIN_MODE_OUTPUT);
rt_pin_mode(Led.LED_B, PIN_MODE_OUTPUT);

rt_kprintf("rgb init success\n");
}

//傳入參數(shù) on=1:對應(yīng)亮,on=0:對應(yīng)滅
//紅燈驅(qū)動
void RGB_Red(rt_bool_t on)
{
rt_pin_write(Led.LED_G, PIN_HIGH);
rt_pin_write(Led.LED_B, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_R, PIN_LOW);
} else {
rt_pin_write(Led.LED_R, PIN_HIGH);
}
}
//藍(lán)燈驅(qū)動
void RGB_Blue(rt_bool_t on){
rt_pin_write(Led.LED_G, PIN_HIGH);
rt_pin_write(Led.LED_R, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_B, PIN_LOW);
} else {
rt_pin_write(Led.LED_B, PIN_HIGH);
}
}
//綠燈驅(qū)動
void RGB_Green(rt_bool_t on)
{
rt_pin_write(Led.LED_R, PIN_HIGH);
rt_pin_write(Led.LED_B, PIN_HIGH);
if (on) {
rt_pin_write(Led.LED_G, PIN_LOW);
} else {
rt_pin_write(Led.LED_G, PIN_HIGH);
}
}

下面要做的是使得led能夠循環(huán)工作。
void rgb_switch(void)
{
static uint8_t led_num = 0;
if(led_num == 0)
RGB_Red(1);
else if(led_num == 1)
RGB_Blue(1);
else if(led_num == 2)
RGB_Green(1);
led_num++;
if(led_num == 3)
led_num = 0;
}
操作系統(tǒng)入口函數(shù)
void rgb_thread_entry(void* p)
{
RGB_Init();
while(1)
{
rt_thread_mdelay(500);
rgb_switch();
}
}
//這個函數(shù)不太明白是做什么的,應(yīng)該是線程控制函數(shù),不知道哪里有相應(yīng)的教程可以看到
static int Thread_RGB(void)
{
rgb_thread = rt_thread_create("rgb", rgb_thread_entry, RT_NULL, 512, 10, 10);
if(rgb_thread == RT_NULL)
{
rt_kprintf("Thread_GRB Init ERROR");
return RT_ERROR;
}
rt_thread_startup(rgb_thread);
}


然后看到該同學(xué)還設(shè)置了key.h函數(shù)。
//rgb.h
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-11-06 Administrator the first version
*/
#ifndef APPLICATIONS_RGB_H_
#define APPLICATIONS_RGB_H_

#endif /* APPLICATIONS_RGB_H_ */

不太明白為什么要做這個,是為了以后擴(kuò)展用?

修改主函數(shù)main.c
/*
* Copyright (c) 2020-2021, Bluetrum Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2020/12/10 greedyhao The first version
*/

/**
* Notice!
* All functions or data that are called during an interrupt need to be in RAM.
* You can do it the way exception_isr() does.
*/

#include
#include "board.h"

int main(void)
{
rt_kprintf("Hello, world\n");

while (1)
{
rt_thread_mdelay(500);
rt_thread_mdelay(500);
}
}
該同學(xué)把原來的按鍵控制刪掉后,給了兩個mdelay();不明白為什么要這樣寫。
3.執(zhí)行downloader
實(shí)現(xiàn)功能。

看完了這個學(xué)習(xí),感覺疑惑還是很多,
有關(guān)于系統(tǒng)本身的,也有關(guān)于這位同學(xué)的編寫代碼內(nèi)容的??墒仟?dú)學(xué)而無友,則孤陋而寡聞。
多向各位大佬學(xué)習(xí)。
爭取能夠看明白。

還有這個編輯界面不知道為什么無法直接在word中直接粘貼復(fù)制。

難道是需要排版才行?

ymf

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 電路
    +關(guān)注

    關(guān)注

    172

    文章

    5818

    瀏覽量

    171639
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6621

    瀏覽量

    123049
  • 中科藍(lán)訊
    +關(guān)注

    關(guān)注

    9

    文章

    53

    瀏覽量

    9827
收藏 人收藏

    評論

    相關(guān)推薦

    負(fù)載管的閃爍噪聲和熱噪聲的區(qū)別

    負(fù)載管的閃爍噪聲和熱噪聲是兩種不同的噪聲類型,它們在電子設(shè)備中的表現(xiàn)和影響各有特點(diǎn)。 閃爍噪聲(1/f噪聲) 定義 : 閃爍噪聲,也稱為1/
    的頭像 發(fā)表于 10-10 11:19 ?233次閱讀

    【RA-Eco-RA0E1-32PIN-V1.0開發(fā)板試用】軟件驅(qū)動TFT屏幕

    接上篇:【RA-Eco-RA0E1-32PIN-V1.0開發(fā)板試用】開發(fā)環(huán)境搭建及流水燈(附踩坑記錄) - 瑞薩單片機(jī)論壇 - 電子技術(shù)論壇 - 廣受歡迎的專業(yè)電子論壇! (elecfans.com
    發(fā)表于 08-26 21:45

    TINA-TI仿真,為什么VF1VG1的波形不一樣?

    為什么VF1VG1的波形不一樣? 還有就是如果我把波形的下降沿改為100N,VF1的波形就會被削頂,這個有是什么原因?
    發(fā)表于 08-19 07:15

    機(jī)智云ESP8266開發(fā)RGB彩燈控件

    用戶帶來了全新的家居體驗(yàn)。無論是個性化的燈光設(shè)置,還是智能化的遠(yuǎn)程管理,這款產(chǎn)品都展現(xiàn)了其在智能家居領(lǐng)域的引領(lǐng)地位。機(jī)智云esp8266開發(fā)RGB彩燈控件1、將
    的頭像 發(fā)表于 08-09 08:10 ?296次閱讀
    機(jī)智云ESP8266<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>RGB</b>彩燈控件

    智能家居之旅(7):HomeAssistant開發(fā)板的RGB顏色

    怎么上HomeAssistant,然后控制Ai-M61開發(fā)板的 RGB 燈的顏色,感覺這個項(xiàng)目用來控制家里的燈條就挺不錯的。 彩燈實(shí)體創(chuàng)建 1.彩燈實(shí)體資源啟用 彩燈實(shí)體在 HomeAssistant
    的頭像 發(fā)表于 07-03 16:39 ?395次閱讀
    智能家居之旅(7):HomeAssistant<b class='flag-5'>開發(fā)</b>板的<b class='flag-5'>RGB</b>顏色

    ESP32-C3-DevKitM-1跑示例程序Blink,RGB燈不閃的原因?

    新手學(xué)習(xí),買了兩塊ESP32-C3-DevKitM-1,到手后插入U(xiǎn)SB供電后,兩塊開發(fā)板的RGB燈藍(lán)色常亮。然后燒錄示例example
    發(fā)表于 06-21 06:01

    如何將LED連接到Arduino板并使其閃爍

     在本快速入門指南中,您將學(xué)習(xí)如何將 LED 連接到 Arduino 板并使其閃爍。
    的頭像 發(fā)表于 02-11 10:53 ?1861次閱讀
    如何將LED連接到Arduino板并使其<b class='flag-5'>閃爍</b>

    如何使用Arduino控制RGB LED

    在本指南中,您將學(xué)習(xí)如何使用Arduino控制RGB LED。RGB(紅-綠-藍(lán))LED可以通過混合不同強(qiáng)度的紅、綠、藍(lán)光來產(chǎn)生多種顏色。您將學(xué)習(xí)創(chuàng)建一個基本Arduino
    的頭像 發(fā)表于 02-11 10:28 ?4177次閱讀
    如何使用Arduino控制<b class='flag-5'>RGB</b> LED

    學(xué)習(xí)筆記分享|使用C庫函數(shù)控制ELF 1開發(fā)板的LED

    (ELF1/ELF1S開發(fā)板及顯示屏)在嵌入式Linux系統(tǒng)開發(fā)中,通過編程控制硬件資源是至關(guān)重要的技能之一,今天各位小伙伴分享一篇專注于
    的頭像 發(fā)表于 01-19 11:12 ?496次閱讀
    <b class='flag-5'>學(xué)習(xí)</b>筆記分享|使用C庫函數(shù)控制ELF <b class='flag-5'>1</b><b class='flag-5'>開發(fā)</b>板的LED

    VD6283TX環(huán)境光傳感器(2)----移植閃爍頻率代碼

    人造光源,如家庭和商業(yè)辦公室使用的,會在接入電網(wǎng)時(shí)產(chǎn)生閃爍,其頻率通常由所在國家的電力頻率決定,一般為50 Hz或60 Hz。由于電流在光源中的交替流動,這些光源會在50 Hz或60 Hz的電網(wǎng)下產(chǎn)生
    的頭像 發(fā)表于 12-28 10:17 ?487次閱讀
    VD6283TX環(huán)境光傳感器(2)----移植<b class='flag-5'>閃爍</b>頻率代碼

    【每周一練】+盤古1K開發(fā)板+2. 按鍵控制RGB led

    的Demo,再次基礎(chǔ)上學(xué)習(xí)實(shí)現(xiàn)功能。 1 代碼分析 官方提供的實(shí)力代碼其實(shí)已經(jīng)實(shí)現(xiàn)了題目要求實(shí)現(xiàn)的功能,所以我主要的目的就是學(xué)習(xí)實(shí)力代碼的實(shí)現(xiàn)方案,了解如何實(shí)現(xiàn)的。 官方代碼使用4個文件來實(shí)現(xiàn): 其中
    發(fā)表于 12-17 11:33

    LED燈閃爍的原因 LED燈閃爍故障解決方法

    LED燈閃爍的原因 LED燈閃爍故障解決方法 LED燈閃爍是指在正常使用過程中,LED燈的亮度或者頻率會不斷變化,從而產(chǎn)生閃爍的現(xiàn)象。閃爍
    的頭像 發(fā)表于 12-11 15:31 ?6272次閱讀

    【每周一練】盤古1K開發(fā)板 練習(xí)二:按鍵控制RGB

    實(shí)驗(yàn)?zāi)康?掌握按鍵消抖原理,實(shí)現(xiàn)按鍵控制RDB燈顏色更換 實(shí)驗(yàn)要求 設(shè)計(jì) 8 種彩燈效果,選擇一個按鍵作為控制輸入,按下一次換一種顯示效果 學(xué)習(xí)心得 學(xué)習(xí)RGB燈顏色控制 按鍵消抖原理
    發(fā)表于 12-10 16:43

    VD6283TX環(huán)境光傳感器驅(qū)動開發(fā)(3)----測試閃爍頻率代碼

    ST提供了6283A1_AnalogFlicker代碼在X-NUCLEO-6283A1獲取閃爍頻率,同時(shí)移植到VD6283TX-SATEL。
    的頭像 發(fā)表于 12-01 16:14 ?495次閱讀
    VD6283TX環(huán)境光傳感器驅(qū)動<b class='flag-5'>開發(fā)</b>(3)----測試<b class='flag-5'>閃爍</b>頻率代碼

    S3C2410A GPB端口低兩位與次低兩位兩個反邏輯LED指示燈的交替閃爍

    各位大神求指導(dǎo), S3C2410AGPB端口低兩位與次低兩位兩個反邏輯LED指示燈的交替閃爍,這個當(dāng)初沒好好學(xué),求指導(dǎo)
    發(fā)表于 11-14 20:22