精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32G0開發筆記:使用FreeRTOS系統的隊列Queue

CHANBAEK ? 來源:電子技術攻城獅 ? 作者:MakerInChina.cn ? 2023-01-16 14:50 ? 次閱讀

使用Platformio平臺的libopencm3開發框架來開發STM32G0,下面為使用FreeRTOS系統的隊列Queue。

1 新建項目

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

2 添加FreeRTOS庫

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

3 在FreeRTOS中使用Queue

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

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

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

  • 在串口中斷中發送數據到隊列中
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 向隊列發送數據,如果是不在中斷中則直接使用 xQueueSend 接口;

  • 在其他任務中取出數據
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}

使用接口函數 xQueueReceive 從隊列中取數據。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2266

    文章

    10871

    瀏覽量

    354788
  • 函數
    +關注

    關注

    3

    文章

    4304

    瀏覽量

    62427
  • FreeRTOS
    +關注

    關注

    12

    文章

    483

    瀏覽量

    62000
  • 隊列
    +關注

    關注

    1

    文章

    46

    瀏覽量

    10889
  • Queue
    +關注

    關注

    0

    文章

    16

    瀏覽量

    7254
收藏 人收藏

    評論

    相關推薦

    AN5096_介紹STM32G0系列硬件開發

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

    STM32G0開發筆記FreeRTOS和FreeModbus庫使用

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

    STM32G0開發筆記FreeRTOS和CLI組件使用

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

    STM32G0開發筆記:使用FreeRTOS系統

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

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

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

    STM32G0開發筆記:用PWM來實現LED呼吸燈效果

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

    STM32G0開發筆記:EEPROM M24C02的使用方法

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

    STM32G0開發筆記:SD卡模塊的使用方法

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

    STM32G0開發筆記:SPI接口的基本使用

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

    STM32G0開發筆記:多通道ADC與DMA的使用

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

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

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

    STM32G0開發筆記:串口中斷的使用

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

    STM32G0開發筆記:GPIO接按鍵的使用方式

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

    STM32G0開發筆記:LED燈示例

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

    STM32G0開發筆記:使用libopencm3庫

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