一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

STM32G0開發(fā)筆記:使用FreeRTOS系統(tǒng)的隊列Queue

CHANBAEK ? 來源:電子技術(shù)攻城獅 ? 作者:MakerInChina.cn ? 2023-01-16 14:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,下面為使用FreeRTOS系統(tǒng)的隊列Queue。

1 新建項目

  • PIO主頁新建項目,框架選擇libopencm3,開發(fā)板選擇 MonkeyPi_STM32_G070RB;
  • 新建完成后在src目錄新建主程序文件main.c;
  • 然后更改項目文件platformio.ini的燒寫和調(diào)試方式:
1upload_protocol = cmsis-dap
2debug_tool = cmsis-dap

2 添加FreeRTOS庫

將上一節(jié)工程中的FreeRTOS目錄直接拷貝到當(dāng)前工程的lib目錄下即可,添加完成后重新打開項目,以便VSCode獲取代碼索引;

3 在FreeRTOS中使用Queue

這里將串口接收的數(shù)據(jù)存放到隊列中,然后在其他任務(wù)中可以取出來進行打印顯示;

  • 創(chuàng)建隊列
1xQueueHandle uart_queue;
2
3//create queue
4    uart_queue = xQueueCreate(16, sizeof(char));

使用 xQueueCreate 接口創(chuàng)建隊列,上面為創(chuàng)建16個單位的char類型存儲隊列;

  • 在串口中斷中發(fā)送數(shù)據(jù)到隊列中
1/**
 2 * @brief uart1 isr function
 3 * 
 4 */
 5void usart1_isr(void)
 6{
 7    //receive interrupt
 8    if (((USART_CR1(USART1) & USART_CR1_RXNEIE) != 0) &&
 9        ((USART_ISR(USART1) & USART_ISR_RXNE) != 0)) {
10
11        char c = usart_recv(USART1);
12
13        xQueueSendFromISR(uart_queue, &c, NULL);
14    }
15}

因為是在中斷中,因此使用 xQueueSendFromISR 向隊列發(fā)送數(shù)據(jù),如果是不在中斷中則直接使用 xQueueSend 接口;

  • 在其他任務(wù)中取出數(shù)據(jù)
1static void app_uart_task(void *param)
 2{
 3    char str[32] = {0};
 4    char i=0;
 5
 6    printf(" app uart task\\n");
 7
 8    while(1){
 9        char c;
10        if( xQueueReceive(uart_queue, &c, 5) == pdPASS) {
11
12            //printf("recv:%c\\n", c);
13
14            if(c == '\\n'){
15                printf(" recv_str: %s\\n", str);
16                memset(str,0,32);
17                i=0;
18            }else{
19                if(i<32){
20                    str[i++] = c;
21                }else{
22                    i = 0;
23                }
24            }
25        }
26    }
27}

使用接口函數(shù) xQueueReceive 從隊列中取數(shù)據(jù)。

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

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365034
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64898
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    493

    瀏覽量

    64363
  • 隊列
    +關(guān)注

    關(guān)注

    1

    文章

    46

    瀏覽量

    11084
  • Queue
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    7423
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    AN5096_介紹STM32G0系列硬件開發(fā)

    AN5096_介紹STM32G0系列硬件開發(fā)
    發(fā)表于 11-21 08:11 ?4次下載
    AN5096_介紹<b class='flag-5'>STM32G0</b>系列硬件<b class='flag-5'>開發(fā)</b>

    STM32G0開發(fā)筆記FreeRTOS和FreeModbus庫使用

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為FreeRTOS和FreeModbus庫使用。
    的頭像 發(fā)表于 01-16 14:44 ?7016次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:<b class='flag-5'>FreeRTOS</b>和FreeModbus庫使用

    STM32G0開發(fā)筆記FreeRTOS和CLI組件使用

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為FreeRTOS和CLI組件使用。
    的頭像 發(fā)表于 01-16 14:47 ?4590次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:<b class='flag-5'>FreeRTOS</b>和CLI組件使用

    STM32G0開發(fā)筆記:使用FreeRTOS系統(tǒng)

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,下面為使用FreeRTOS系統(tǒng)。
    的頭像 發(fā)表于 01-16 15:07 ?3044次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:使用<b class='flag-5'>FreeRTOS</b><b class='flag-5'>系統(tǒng)</b>

    STM32G0開發(fā)筆記:使用ADC進行NTC溫度采集

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,以下使用ADC進行NTC溫度采集。
    的頭像 發(fā)表于 01-16 15:12 ?1.1w次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:使用ADC進行NTC溫度采集

    STM32G0開發(fā)筆記:用PWM來實現(xiàn)LED呼吸燈效果

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,下面使用PWM來實現(xiàn)LED呼吸燈效果。
    的頭像 發(fā)表于 01-16 15:15 ?2784次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:用PWM來實現(xiàn)LED呼吸燈效果

    STM32G0開發(fā)筆記:EEPROM M24C02的使用方法

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為EEPROM M24C02的使用方法。
    的頭像 發(fā)表于 01-16 15:19 ?3497次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:EEPROM M24C02的使用方法

    STM32G0開發(fā)筆記:SD卡模塊的使用方法

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,下面介紹SD卡模塊的使用方法。
    的頭像 發(fā)表于 01-19 16:27 ?2867次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:SD卡模塊的使用方法

    STM32G0開發(fā)筆記:SPI接口的基本使用

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,下面介紹SPI接口的基本使用。
    的頭像 發(fā)表于 01-17 10:38 ?3761次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:SPI接口的基本使用

    STM32G0開發(fā)筆記:多通道ADC與DMA的使用

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為多通道ADC與DMA的使用。
    的頭像 發(fā)表于 01-17 10:41 ?7992次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:多通道ADC與DMA的使用

    STM32G0開發(fā)筆記:定時器timer的基本使用方法

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為定時器timer的基本使用方法。
    的頭像 發(fā)表于 01-17 10:43 ?4421次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:定時器timer的基本使用方法

    STM32G0開發(fā)筆記:串口中斷的使用

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為串口中斷的使用。
    的頭像 發(fā)表于 01-17 10:46 ?2884次閱讀

    STM32G0開發(fā)筆記:GPIO接按鍵的使用方式

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,下面為GPIO接按鍵的使用方式。
    的頭像 發(fā)表于 01-17 10:48 ?2197次閱讀

    STM32G0開發(fā)筆記:LED燈示例

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,下面為LED燈示例。
    的頭像 發(fā)表于 01-17 10:52 ?1820次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:LED燈示例

    STM32G0開發(fā)筆記:使用libopencm3庫

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,開發(fā)環(huán)境為VSCode+PIO插件,這里以開發(fā)
    的頭像 發(fā)表于 01-17 10:56 ?2502次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)筆記</b>:使用libopencm3庫