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

第1章_瑞薩MCU零基礎(chǔ)入門系列教程之單片機(jī)程序的設(shè)計(jì)模式

這篇具有很好參考價(jià)值的文章主要介紹了第1章_瑞薩MCU零基礎(chǔ)入門系列教程之單片機(jī)程序的設(shè)計(jì)模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949

配套資料獲取:https://renesas-docs.100ask.net

瑞薩MCU零基礎(chǔ)入門系列教程匯總: https://blog.csdn.net/qq_35181236/article/details/132779862


第1章 單片機(jī)程序的設(shè)計(jì)模式

本章目標(biāo)

  • 理解裸機(jī)程序設(shè)計(jì)模式
  • 了解多任務(wù)系統(tǒng)中程序設(shè)計(jì)的不同

1.1 裸機(jī)程序設(shè)計(jì)模式

裸機(jī)程序的設(shè)計(jì)模式可以分為:輪詢、前后臺(tái)、定時(shí)器驅(qū)動(dòng)、基于狀態(tài)機(jī)。前面三種方法都無(wú)法解決一個(gè)問(wèn)題:假設(shè)有 A、B 兩個(gè)都很耗時(shí)的函數(shù),無(wú)法降低它們相互之間的影響。第 4 種方法可以解決這個(gè)問(wèn)題,但是實(shí)踐起來(lái)有難度。

假設(shè)一位職場(chǎng)媽媽需要同時(shí)解決 2 個(gè)問(wèn)題:給小孩喂飯、回復(fù)工作信息,場(chǎng)景如圖所示,

后面將會(huì)演示各類模式下如何寫程序:

第1章_瑞薩MCU零基礎(chǔ)入門系列教程之單片機(jī)程序的設(shè)計(jì)模式,瑞薩MCU基礎(chǔ)入門教程,單片機(jī),設(shè)計(jì)模式,嵌入式硬件,瑞薩,瑞薩MCU,嵌入式

1.1.1 輪詢模式

示例代碼如下:

 // 經(jīng)典單片機(jī)程序: 輪詢
 void main()
 {
   while (1)
	 {
 		喂一口飯();
 		回一個(gè)信息();
 	 }
 }

在 main 函數(shù)中是一個(gè) while 循環(huán),里面依次調(diào)用 2 個(gè)函數(shù),這兩個(gè)函數(shù)相互之間有影響:如果“喂一口飯”太花時(shí)間,就會(huì)導(dǎo)致遲遲無(wú)法“回一個(gè)信息”;如果“回一個(gè)信息”太花時(shí)間,就會(huì)導(dǎo)致遲遲無(wú)法“喂下一口飯”。

使用輪詢模式編寫程序看起來(lái)很簡(jiǎn)單,但是要求 while 循環(huán)里調(diào)用到的函數(shù)要執(zhí)行得非常快,在復(fù)雜場(chǎng)景里反而增加了編程難度。

1.1.2 前后臺(tái)

所謂“前后臺(tái)”就是使用中斷程序。假設(shè)收到同事發(fā)來(lái)的信息時(shí),電腦會(huì)發(fā)出“滴”的一聲,這時(shí)候媽媽才需要去回復(fù)信息。示例程序如下:

 // 前后臺(tái)程序
 void main()
 {
 	 while (1)
 	 {
 		// 后臺(tái)程序
 		喂一口飯();
 	 }
 }

// 前臺(tái)程序
void 滴_中斷()
{
	回一個(gè)信息();
}
  • main 函數(shù)里 while 循環(huán)里的代碼是后臺(tái)程序,平時(shí)都是 while 循環(huán)在運(yùn)行;
  • 當(dāng)同事發(fā)來(lái)信息,電腦發(fā)出“滴”的一聲,觸發(fā)了中斷。媽媽暫停喂飯,去執(zhí)行“滴_中斷”給同事回復(fù)信息;

在這個(gè)場(chǎng)景里,給同事回復(fù)信息非常及時(shí):即使正在喂飯也會(huì)暫停下來(lái)去回復(fù)信息?!拔挂豢陲垺睙o(wú)法影響到“回一個(gè)信息”。但是,如果“回一個(gè)信息”太花時(shí)間,就會(huì)導(dǎo)致 “喂一口飯”遲遲無(wú)法執(zhí)行。

繼續(xù)改進(jìn),假設(shè)小孩吞下飯菜后會(huì)發(fā)出“啊”的一聲,媽媽聽到后才會(huì)喂下一口飯。喂飯、回復(fù)信息都是使用中斷函數(shù)來(lái)處理。示例程序如下:


// 前后臺(tái)程序
void main()
{
    while (1)
    {
        // 后臺(tái)程序
    }
}

// 前臺(tái)程序
void 滴_中斷()
{
    回一個(gè)信息();
}

// 前臺(tái)程序
void 啊_中斷()
{
    喂一口飯();
}

main 函數(shù)中的 while 循環(huán)是空的,程序的運(yùn)行靠中斷來(lái)驅(qū)使。如果電腦聲音“滴”、小孩聲音“啊”不會(huì)同時(shí)、相近發(fā)出,那么“回一個(gè)信息”、“喂一口飯”相互之間沒(méi)有影響。在不能滿足這個(gè)前提的情況下,比如“滴”、“啊”同時(shí)響起,先“回一個(gè)信息”時(shí)就會(huì)耽誤“喂一口飯”,這種場(chǎng)景下程序遭遇到了輪詢模式的缺點(diǎn):函數(shù)相互之間有影響。

1.1.3 定時(shí)器驅(qū)動(dòng)

定時(shí)器驅(qū)動(dòng)模式,是前后臺(tái)模式的一種,可以按照不用的頻率執(zhí)行各種函數(shù)。比如需要每 2 分鐘給小孩喂一口飯,需要每 5 分鐘給同事回復(fù)信息。那么就可以啟動(dòng)一個(gè)定時(shí)器,讓它每 1 分鐘產(chǎn)生一次中斷,讓中斷函數(shù)在合適的時(shí)間調(diào)用對(duì)應(yīng)函數(shù)。示例代碼如下:

// 前后臺(tái)程序: 定時(shí)器驅(qū)動(dòng)
void main()
{
    
        while (1)
    {
        // 后臺(tái)程序
    }
}

// 前臺(tái)程序: 每 1 分鐘觸發(fā)一次中斷
void 定時(shí)器_中斷()
{
    static int cnt = 0;
    cnt++;
    if (cnt % 2 == 0)
    {
        喂一口飯();
    }
    else if (cnt % 5 == 0)
    {
        回一個(gè)信息();
    }
}

main 函數(shù)中的 while 循環(huán)是空的,程序的運(yùn)行靠定時(shí)器中斷來(lái)驅(qū)使。

  • 定時(shí)器中斷每 1 分鐘發(fā)生一次,在中斷函數(shù)里讓 cnt 變量累加(代碼第 14 行)。
  • 第 15 行:進(jìn)行求模運(yùn)算,如果對(duì) 2 取模為 0,就“喂一口飯”。這相當(dāng)于每發(fā)生 2 次中斷就“喂一口飯”。
  • 第 19 行:進(jìn)行求模運(yùn)算,如果對(duì) 5 取模為 0,就“回一個(gè)信息”。這相當(dāng)于每發(fā)生 5 次

中斷就“回一個(gè)信息”。

這種模式適合調(diào)用周期性的函數(shù),并且每一個(gè)函數(shù)執(zhí)行的時(shí)間不能超過(guò)一個(gè)定時(shí)器周期。如果“喂一口飯”很花時(shí)間,比如長(zhǎng)達(dá) 10 分鐘,那么就會(huì)耽誤“回一個(gè)信息”;反過(guò)來(lái)也是一樣的,如果“回一個(gè)信息”很花時(shí)間也會(huì)影響到“喂一口飯”;這種場(chǎng)景下程序遭遇到了輪詢模式的缺點(diǎn):函數(shù)相互之間有影響。

1.1.4 基于狀態(tài)機(jī)

當(dāng)“喂一口飯”、“回一個(gè)信息”都需要花很長(zhǎng)的時(shí)間,無(wú)論使用前面的哪種設(shè)計(jì)模式,都會(huì)退化到輪詢模式的缺點(diǎn):函數(shù)相互之間有影響??梢允褂脿顟B(tài)機(jī)來(lái)解決這個(gè)缺點(diǎn),示例代碼如下:

// 狀態(tài)機(jī)
void main()
{
    while (1)
    {
        喂一口飯();
        回一個(gè)信息();
    }
}

在 main 函數(shù)里,還是使用輪詢模式依次調(diào)用 2 個(gè)函數(shù)。

關(guān)鍵在于這 2 個(gè)函數(shù)的內(nèi)部實(shí)現(xiàn):使用狀態(tài)機(jī),每次只執(zhí)行一個(gè)狀態(tài)的代碼,減少每次執(zhí)行的時(shí)間,代碼如下:

void 喂一口飯(void)
{
    static int state = 0;
    switch (state)
    {
    case 0:
    {
        /* 舀飯 */
         
            /* 進(jìn)入下一個(gè)狀態(tài) */
            state++;
        break;
    }
    case 1:
    {
        /* 喂飯 */
        /* 進(jìn)入下一個(gè)狀態(tài) */
        state++;
        break;
    }
    case 2:
    {
        /* 舀菜 */
        /* 進(jìn)入下一個(gè)狀態(tài) */
        state++;
        break;
    }
    case 2:
    {
        /* 喂菜 */
        /* 恢復(fù)到初始狀態(tài) */
        state = 0;
        break;
    }
    }
}

void 回一個(gè)信息(void)
{
    static int state = 0;

    switch (state)
    {
    case 0:
    {
        /* 查看信息 */
        /* 進(jìn)入下一個(gè)狀態(tài) */
        state++;
        break;
    }
    case 1:
    {
        /* 打字 */
        /* 進(jìn)入下一個(gè)狀態(tài) */
        state++;
        break;
    }
    case 2:
    {
        /* 發(fā)送 */
        /* 恢復(fù)到初始狀態(tài) */
        state = 0;
        break;
    }
    }
}

以“喂一口飯”為例,函數(shù)內(nèi)部拆分為 4 個(gè)狀態(tài):舀飯、喂飯、舀菜、喂菜。每次執(zhí)行“喂一口飯”函數(shù)時(shí),都只會(huì)執(zhí)行其中的某一狀態(tài)對(duì)應(yīng)的代碼。以前執(zhí)行一次“喂一口飯”函數(shù)可能需要 4 秒鐘,現(xiàn)在可能只需要 1 秒鐘,就降低了對(duì)后面“回一個(gè)信息”的影響。

同樣的,“回一個(gè)信息”函數(shù)內(nèi)部也被拆分為 3 個(gè)狀態(tài):查看信息、打字、發(fā)送。每次執(zhí)行這個(gè)函數(shù)時(shí),都只是執(zhí)行其中一小部分代碼,降低了對(duì)“喂一口飯”的影響。

使用狀態(tài)機(jī)模式,可以解決裸機(jī)程序的難題:假設(shè)有 A、B 兩個(gè)都很耗時(shí)的函數(shù),怎樣降低它們相互之間的影響。但是很多場(chǎng)景里,函數(shù) A、B 并不容易拆分為多個(gè)狀態(tài),并且這些狀態(tài)執(zhí)行的時(shí)間并不好控制。所以這并不是最優(yōu)的解決方法,需要使用多任務(wù)系統(tǒng)。

1.2 多任務(wù)系統(tǒng)

1.2.1 多任務(wù)模式

對(duì)于裸機(jī)程序,無(wú)論使用哪種模式進(jìn)行精心的設(shè)計(jì),在最差的情況下都無(wú)法解決這個(gè)問(wèn)題:假設(shè)有 A、B 兩個(gè)都很耗時(shí)的函數(shù),無(wú)法降低它們相互之間的影響。使用狀態(tài)機(jī)模式時(shí),如果函數(shù)拆分得不好,也會(huì)導(dǎo)致這個(gè)問(wèn)題。本質(zhì)原因是:函數(shù)是輪流執(zhí)行的。假設(shè)“喂一口飯”需要 t1~t5 這 5 段時(shí)間,“回一個(gè)信息需要”ta~te 這 5 段時(shí)間,輪流執(zhí)行時(shí):先執(zhí)行完 t1~t5,再執(zhí)行 ta~te,如下圖所示:

第1章_瑞薩MCU零基礎(chǔ)入門系列教程之單片機(jī)程序的設(shè)計(jì)模式,瑞薩MCU基礎(chǔ)入門教程,單片機(jī),設(shè)計(jì)模式,嵌入式硬件,瑞薩,瑞薩MCU,嵌入式

對(duì)于職場(chǎng)媽媽,她怎么解決這個(gè)問(wèn)題呢?她是一個(gè)眼明手快的人,可以一心多用,她這

樣做:

  • 左手拿勺子,給小孩喂飯
  • 右手敲鍵盤,回復(fù)同事
  • 兩不耽誤,小孩“以為”媽媽在專心喂飯,同事“以為”她在專心聊天
  • 但是腦子只有一個(gè)啊,雖然說(shuō)“一心多用”,但是誰(shuí)能同時(shí)思考兩件事?
  • 只是她反應(yīng)快,上一秒鐘在考慮夾哪個(gè)菜給小孩,下一秒鐘考慮給同事回復(fù)什么信息
  • 本質(zhì)是:交叉執(zhí)行,t1~t5 和 ta~te 交叉執(zhí)行,如下圖所示:

第1章_瑞薩MCU零基礎(chǔ)入門系列教程之單片機(jī)程序的設(shè)計(jì)模式,瑞薩MCU基礎(chǔ)入門教程,單片機(jī),設(shè)計(jì)模式,嵌入式硬件,瑞薩,瑞薩MCU,嵌入式

基于多任務(wù)系統(tǒng)編寫程序時(shí),示例代碼如下:

// RTOS 程序
喂飯任務(wù)()
{
    while (1)
    {
        喂一口飯();
    }
}

回信息任務(wù)()
{
    while (1)
    {
        回一個(gè)信息();
    }
}

void main()
{
    // 創(chuàng)建 2 個(gè)任務(wù)
    create_task(喂飯任務(wù));
    create_task(回信息任務(wù));

    // 啟動(dòng)調(diào)度器
    start_scheduler();
}
  • 第 21、22 行,創(chuàng)建 2 個(gè)任務(wù);
  • 第 25 行,啟動(dòng)調(diào)度器;
  • 之后,這 2 個(gè)任務(wù)就會(huì)交叉執(zhí)行了;

基于多任務(wù)系統(tǒng)編寫程序時(shí),反而更簡(jiǎn)單了:

  1. 上面第 2~8 行是“喂飯任務(wù)”的代碼;
  2. 第 10~16 行是“回信息任務(wù)”的代碼,編寫它們時(shí)甚至都不需要考慮它和其他函數(shù)的相互影響。就好像有 2 個(gè)單板:一個(gè)只運(yùn)行“喂飯任務(wù)”這個(gè)函數(shù)、另一個(gè)只運(yùn)行“回信息任務(wù)”這個(gè)函數(shù)。

多任務(wù)系統(tǒng)會(huì)依次給這些任務(wù)分配時(shí)間:你執(zhí)行一會(huì),我執(zhí)行一會(huì),如此循環(huán)。只要切換的間隔足夠短,用戶會(huì)“感覺(jué)這些任務(wù)在同時(shí)運(yùn)行”。如下圖所示:

第1章_瑞薩MCU零基礎(chǔ)入門系列教程之單片機(jī)程序的設(shè)計(jì)模式,瑞薩MCU基礎(chǔ)入門教程,單片機(jī),設(shè)計(jì)模式,嵌入式硬件,瑞薩,瑞薩MCU,嵌入式

1.2.2 互斥操作

多任務(wù)系統(tǒng)中,多個(gè)任務(wù)可能會(huì)“同時(shí)”訪問(wèn)某些資源,需要增加保護(hù)措施以防止混亂。比如任務(wù) A、B 都要使用串口,能否使用一個(gè)全局變量讓它們獨(dú)占地、互斥地使用串口?示例代碼如下:

// RTOS 程序
int g_canuse = 1;
void uart_print(char *str)
{
    if (g_canuse)
    {
        g_canuse = 0;
        printf(str);
        g_canuse = 1;
    }
}

task_A()
{
    while (1)
    {
        uart_print("0123456789\n");
    }
    
}

task_B()
{
    while (1)
    {
        uart_print("abcdefghij");
    }
}

void main()
{
    // 創(chuàng)建 2 個(gè)任務(wù)
    create_task(task_A);
    create_task(task_B);
    // 啟動(dòng)調(diào)度器
    start_scheduler();
}

程序的意圖是:task_A 打印“0123456789”,task_B 打印“abcdefghij”。在 task_A 或task_B 打印的過(guò)程中,另一個(gè)任務(wù)不能打印,以避免數(shù)字、字母混雜在一起,比如避免打印這樣的字符:“012abc”。

第 6 行使用全局變量 g_canuse 實(shí)現(xiàn)互斥打印,它等于 1 時(shí)表示“可以打印”。在進(jìn)行實(shí)際打印之前,先把 g_canuse 設(shè)置為 0,目的是防止別的任務(wù)也來(lái)打印。

這個(gè)程序大部分時(shí)間是沒(méi)問(wèn)題的,但是只要它運(yùn)行的時(shí)間足夠長(zhǎng),就會(huì)出現(xiàn)數(shù)字、字母混雜的情況。下圖把 uart_print 函數(shù)標(biāo)記為①~④個(gè)步驟:

void uart_print(char *str)
{
    if (g_canuse){
            g_canuse = 0;printf(str);  ③
            g_canuse = 1;}
}

如果 task_A 執(zhí)行完①,進(jìn)入 if 語(yǔ)句里面執(zhí)行②之前被切換為 task_B:在這一瞬間,g_canuse 還是 1。

task_B 執(zhí)行①時(shí)也會(huì)成功進(jìn)入 if 語(yǔ)句,假設(shè)它執(zhí)行到③,在 printf 打印完部分字符比如“abc”后又再次被切換為 task_A。

task_A 繼續(xù)從上次被暫停的地方繼續(xù)執(zhí)行,即從②那里繼續(xù)執(zhí)行,成功打印出“0123456789”。這時(shí)在串口上可以看到打印的結(jié)果為:“abc0123456789”。

是不是“①判斷”、“②清零”間隔太遠(yuǎn)了,uart_print 函數(shù)改進(jìn)成如下的代碼呢?

void uart_print(char *str)
{
    g_canuse--;        ① 減一 
    if (g_canuse == 0) ② 判斷
    {
        printf(str);   ③ 打印
    }
    g_canuse++;        ④ 加一
}

即使改進(jìn)為上述代碼,仍然可能產(chǎn)生兩個(gè)任務(wù)同時(shí)使用串口的情況。因?yàn)椤阿贉p一”這個(gè)操作會(huì)分為 3 個(gè)步驟:a.從內(nèi)存讀取變量的值放入寄存器里,b.修改寄存器的值讓它減一,c.把寄存器的值寫到內(nèi)存上的變量上去。

如果task_A執(zhí)行完步驟a、b,還沒(méi)來(lái)得及把新值寫到內(nèi)存的變量里,就被切換為task_B:在這一瞬間,g_canuse 還是 1。

task_B 執(zhí)行①②時(shí)也會(huì)成功進(jìn)入 if 語(yǔ)句,假設(shè)它執(zhí)行到③,在 printf 打印完部分字符比如“abc”后又再次被切換為 task_A。

task_A 繼續(xù)從上次被暫停的地方繼續(xù)執(zhí)行,即從步驟 c 那里繼續(xù)執(zhí)行,成功打印出“0123456789”。這時(shí)在串口上可以看到打印的結(jié)果為:“abc0123456789”。

從上面的例子可以看到,基于多任務(wù)系統(tǒng)編寫程序時(shí),訪問(wèn)公用的資源的時(shí)候要考慮“互斥操作”。任何一種多任務(wù)系統(tǒng)都會(huì)提供相應(yīng)的函數(shù)。

1.2.3 同步操作

如果任務(wù)之間有依賴關(guān)系,比如任務(wù) A 執(zhí)行了某個(gè)操作之后,需要任務(wù) B 進(jìn)行后續(xù)的處理。如果代碼如下編寫的話,任務(wù) B 大部分時(shí)間做的都是無(wú)用功。

// RTOS 程序
int flag = 0;

void task_A()
{
    while (1)
    {
        // 做某些復(fù)雜的事情
        // 完成后把 flag 設(shè)置為 1
        flag = 1;
    }
}

void task_B()
{
    while (1)
    {
        if (flag)
        {
            // 做后續(xù)的操作
        }
    }
}

void main()
{
    // 創(chuàng)建 2 個(gè)任務(wù)
    create_task(task_A);
    create_task(task_B);
    // 啟動(dòng)調(diào)度器
    start_scheduler();
}

上述代碼中,在任務(wù) A 沒(méi)有設(shè)置 flag 為 1 之前,任務(wù) B 的代碼都只是去判斷 flag。而任務(wù) A、B 的函數(shù)是依次輪流運(yùn)行的,假設(shè)系統(tǒng)運(yùn)行了 100 秒,其中任務(wù) A 總共運(yùn)行了 50秒,任務(wù) B 總共運(yùn)行了 50 秒,任務(wù) A 在努力處理復(fù)雜的運(yùn)算,任務(wù) B 僅僅是浪費(fèi) CPU 資源。

如果可以讓任務(wù) B 阻塞,即讓任務(wù) B 不參與調(diào)度,那么任務(wù) A 就可以獨(dú)占 CPU 資源加快處理復(fù)雜的事情。當(dāng)任務(wù) A 處理完事情后,再喚醒任務(wù) B。示例代碼如下:

//RTOS 程序
void task_A()
{
    while (1)
    {
        // 做某些復(fù)雜的事情
        // 釋放信號(hào)量,會(huì)喚醒任務(wù) B;
    }
}

void task_B()
{
    while (1)
    {
        // 等待信號(hào)量, 會(huì)讓任務(wù) B 阻塞
        // 做后續(xù)的操作
    }
}

void main()
{
    // 創(chuàng)建 2 個(gè)任務(wù)
    create_task(task_A);
    create_task(task_B);
    // 啟動(dòng)調(diào)度器
    start_scheduler();
}
  • 第 15 行:任務(wù) B 運(yùn)行時(shí),等待信號(hào)量,不成功時(shí)就會(huì)阻塞,不在參與任務(wù)調(diào)度。
  • 第 7 行: 任務(wù) A 處理完復(fù)雜的事情后,釋放信號(hào)量會(huì)喚醒任務(wù) B。
  • 第 16 行:任務(wù) B 被喚醒后,從這里繼續(xù)運(yùn)行。

在這個(gè)過(guò)程中,任務(wù) A 處理復(fù)雜事情的時(shí)候可以獨(dú)占 CPU 資源,加快處理速度。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-708720.html


本章完

到了這里,關(guān)于第1章_瑞薩MCU零基礎(chǔ)入門系列教程之單片機(jī)程序的設(shè)計(jì)模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 第18章_瑞薩MCU零基礎(chǔ)入門系列教程之GPT

    第18章_瑞薩MCU零基礎(chǔ)入門系列教程之GPT

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 了解RA6M5處理器的

    2024年02月09日
    瀏覽(38)
  • 第27章_瑞薩MCU零基礎(chǔ)入門系列教程之freeRTOS實(shí)驗(yàn)

    第27章_瑞薩MCU零基礎(chǔ)入門系列教程之freeRTOS實(shí)驗(yàn)

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 學(xué)會(huì)使用RASC創(chuàng)建

    2024年02月09日
    瀏覽(59)
  • 第10章_瑞薩MCU零基礎(chǔ)入門系列教程之中斷控制單元簡(jiǎn)介

    第10章_瑞薩MCU零基礎(chǔ)入門系列教程之中斷控制單元簡(jiǎn)介

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲取:https://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本書使用的RA處理器R7FAM5系

    2024年02月09日
    瀏覽(29)
  • 第3章_瑞薩MCU零基礎(chǔ)入門系列教程之開發(fā)環(huán)境搭建與體驗(yàn)

    第3章_瑞薩MCU零基礎(chǔ)入門系列教程之開發(fā)環(huán)境搭建與體驗(yàn)

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo): 搭建 Renesas 的

    2024年02月09日
    瀏覽(25)
  • 第6章_瑞薩MCU零基礎(chǔ)入門系列教程之串行通信接口(SCI)

    第6章_瑞薩MCU零基礎(chǔ)入門系列教程之串行通信接口(SCI)

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 了解串行通信協(xié)

    2024年01月24日
    瀏覽(32)
  • 第28章_瑞薩MCU零基礎(chǔ)入門系列教程之基于面向?qū)ο蟮墓こ探Y(jié)構(gòu)

    第28章_瑞薩MCU零基礎(chǔ)入門系列教程之基于面向?qū)ο蟮墓こ探Y(jié)構(gòu)

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲?。?https://item.taobao.com/item.htm?id=728461040949 配套資料獲取:https://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 在前面的章節(jié)里,講解了瑞

    2024年02月09日
    瀏覽(34)
  • 第21章_瑞薩MCU零基礎(chǔ)入門系列教程之事件鏈接控制器ELC

    第21章_瑞薩MCU零基礎(chǔ)入門系列教程之事件鏈接控制器ELC

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲取: https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 了解ELC基本概念

    2024年02月08日
    瀏覽(35)
  • 第26章_瑞薩MCU零基礎(chǔ)入門系列教程之獨(dú)立看門狗定時(shí)器-IWDT

    第26章_瑞薩MCU零基礎(chǔ)入門系列教程之獨(dú)立看門狗定時(shí)器-IWDT

    本教程基于韋東山百問(wèn)網(wǎng)出的 DShanMCU-RA6M5開發(fā)板 進(jìn)行編寫,需要的同學(xué)可以在這里獲取: https://item.taobao.com/item.htm?id=728461040949 配套資料獲?。篽ttps://renesas-docs.100ask.net 瑞薩MCU零基礎(chǔ)入門系列教程匯總 : https://blog.csdn.net/qq_35181236/article/details/132779862 本章目標(biāo) 了解A6M5處理器的

    2024年02月08日
    瀏覽(49)
  • STC8H系列單片機(jī)入門教程之ADC基礎(chǔ)知識(shí)(四)

    STC8H系列單片機(jī)入門教程之ADC基礎(chǔ)知識(shí)(四)

    目錄 一、A/D轉(zhuǎn)換過(guò)程 二、ADC轉(zhuǎn)換流程圖 三、采樣定理 四、ADC基本參數(shù) 4.1、分辨率 4.2、采樣速率 4.3、轉(zhuǎn)換時(shí)間 4.4、量程? 4.5、最低有效位 五、靜態(tài)參數(shù) 5.1、微分非線性 5.2、積分非線性 六、逐次逼近型模數(shù)轉(zhuǎn)換器 七、ADC常用分壓電路 八、示例代碼 ADC即模數(shù)轉(zhuǎn)換器,用來(lái)

    2024年04月11日
    瀏覽(23)
  • 【奇葩瑞薩-004】RX系列單片機(jī)的GPIO初始化

    以RX66T單片機(jī)和RX130單片機(jī)為例。 端口的配置,就是寫入端口配置相關(guān)寄存器的過(guò)程。 就瑞薩RX系列單片機(jī)而言,包括PORT寄存器和MPC寄存器。 PDR:GPIO方向寄存器,讀/寫型 1:輸出 0:輸入(默認(rèn)值) PORTm.PDR.BITn對(duì)應(yīng)Pmn。 有些端口只內(nèi)建了輸入邏輯門電路,即便將其PDR位設(shè)置

    2024年02月14日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包