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

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

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

3天內不再提示

RT-Thread標準版裁剪記錄

冬至子 ? 來源:螺絲松掉的人 ? 作者:螺絲松掉的人 ? 2023-07-31 14:28 ? 次閱讀

以 bsp>stm32f407-robomaster-c 為例

RT-Thread 下的 BSP 里適配了非常豐富的工具,但有的時候既想直接使用這些便捷的工具,又想縮減代碼體量。這個時候可以選擇不使用 Nano 而是對標準版的 BSP 工程進行裁剪。并且由于 STM32 已經封裝了 HAL 庫,裁剪掉 RTT 的設備框架后也能保留一定的兼容性和開發的便捷性。

配置 menuconfig

RT-Thread Kernel

關閉鉤子函數相關;
軟件定時器功能在此我選擇保留使能;
debugging 功能在此我選擇保留使能;
線程通信相關,如信號量、郵箱等,按需使能;
RT-Thread Components

關閉設備框架;

Hardware Drivers Config
不使用其設備框架,全部關閉;
代碼修改
由于裁剪后不再使用設備驅動框架,各個使用到的外設模塊需要自行初始化,于是 applications 目錄下的 main.c 文件使用 STM32CubeMX 重新生成后的替換。并需要進一步的修改:不在 main 函數中進行初始化,而是使用 INIT_XXX_EXPORT 初始化,例如:

INIT_BOARD_EXPORT(MX_USART1_UART_Init);

SConscript 文件中也需要進一步的修改,添加必要的庫文件

由于不再使用設備驅動框架,在 rt-threadcomponentsdriversipcSConscript 中也需要添加以下代碼:

if not GetDepend('RT_USING_DEVICE'):
SrcRemove(src, 'waitqueue.c')
SrcRemove(src, 'pipe.c')
MSH 功能是保留并且需要使用的,但是由于不再使用 RT-Thread 的設備框架改為 Using console for rt_kprintf ,需要實現以下兩個函數實現輸入輸出:rt_hw_console_output , rt_hw_console_getchar

首先實現 rt_hw_console_output

注意:RT-Thread 系統中已有的打印均以 n 結尾,而并非 rn,所以在字符輸出時,需要在輸出 n 之前輸出 r,完成回車與換行,否則系統打印出來的信息將只有換行。

/**

  • @brief 重映射串口DEBUG_USART到rt_kprintf()函數
  • Note:DEBUG_USART是定義的宏,默認使用串口1
  • @param str:要輸出到串口的字符串
  • @retval 無
  • @attention

*/
#define DEBUG_USART huart1
void rt_hw_console_output(const char *str)
{
while (*str!='?')
{
if (*str=='n')
{
DEBUG_USART.Instance->DR = 'r';
while (__HAL_UART_GET_FLAG(&(DEBUG_USART), UART_FLAG_TXE) == RESET);
}
DEBUG_USART.Instance->DR = *(str++);
while (__HAL_UART_GET_FLAG(&(DEBUG_USART), UART_FLAG_TXE) == RESET);
}
}
實現 rt_hw_console_getchar

char rt_hw_console_getchar(void)
{
uint8_t ch = 0;
if (__HAL_UART_GET_FLAG(&(DEBUG_USART),UART_FLAG_RXNE)!=RESET)
{
HAL_UART_Receive(&(DEBUG_USART), &ch, 1, 1);
__HAL_UART_GET_FLAG(&(DEBUG_USART), UART_FLAG_RXNE);
}
else
{
if(__HAL_UART_GET_FLAG(&(DEBUG_USART),UART_FLAG_ORE)!=RESET)
{
__HAL_UART_CLEAR_FLAG(&(DEBUG_USART), UART_FLAG_ORE);
}
}
return ch;
}

至此 Finsh 組件可以正常使用了

總結

主要基于 bsp>stm32f407-robomaster-c 裁剪出了一個包含內核基本功能,并且可以使用 RT-Thread 大部分工具的工程,大大減小代碼體量。

裁剪前:

1.jpg

裁剪后:

1.jpg

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

    關注

    0

    文章

    18

    瀏覽量

    6730
  • RT-Thread
    +關注

    關注

    31

    文章

    1272

    瀏覽量

    39919
  • USART串口
    +關注

    關注

    0

    文章

    32

    瀏覽量

    6805
  • stm32cubemx
    +關注

    關注

    5

    文章

    280

    瀏覽量

    14751
  • HAL庫
    +關注

    關注

    1

    文章

    114

    瀏覽量

    6173
收藏 人收藏

    評論

    相關推薦

    RT-Thread記錄(一、版本開發環境及配合CubeMX)

    RT-Thread 學習記錄的第一篇文章,RT-Thread記錄(一、RT-Thread 版本、RT-T
    的頭像 發表于 06-20 00:28 ?5143次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>記錄</b>(一、版本開發環境及配合CubeMX)

    RT-Thread記錄(二、RT-Thread內核啟動流程)

    在前面我們RT-Thread Studio工程基礎之上講一講RT-Thread內核啟動流程.
    的頭像 發表于 06-20 00:30 ?4965次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>記錄</b>(二、<b class='flag-5'>RT-Thread</b>內核啟動流程)

    使用RT-Thread標準版如何實現空閑中斷?

    ;發送個信號量,或者置一個標志位,給串口處理線程或main;}}現在開始用RT-Thread 標準版,驅動框架還沒仔細研究,但是想按照以前的方式寫一個串口接收不定
    發表于 07-04 16:08

    下載rt-thread標準版nrf52832無法進行直接編譯是咋回事

    下載rt-thread 標準版nrf52832直接編譯會報錯是怎么回事?pkgs —update報錯如下:scons 缺文件 報錯如下:
    發表于 07-25 11:36

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發組(2015-03-31)。RT-Thread做為國內有較大影響力的開源實時操作系統,本文是RT-Thread實時操作系統的編程指南
    發表于 11-26 16:06 ?0次下載

    RT-Thread Smart已正式上線

    rt-smart內核即可包含基本功能,同時也可定制裁剪rt-smart用戶態應用環境采用musl libc提供POSIX接口調用及C運行環境,延續 RT-Thread 原有的生態,使
    的頭像 發表于 11-29 10:31 ?2775次閱讀

    記錄——基于 RT-Thread 實現 USB 虛擬串口

    記錄——基于 RT-Thread 實現 USB 虛擬串口記錄一下我在正點原子 F429 阿波羅開發板上實現 USB 虛擬串口的過程,希望可以幫助到其他想要學習 USB 的人。首先,我更新了一下
    發表于 12-02 17:21 ?6次下載
    <b class='flag-5'>記錄</b>——基于 <b class='flag-5'>RT-Thread</b> 實現 USB 虛擬串口

    RT-thread】如何將RT-thread系統移植到stm32

    設備,RT-Thread 又能使用在線的軟件包管理工具,配合系統配置工具實現直觀快速的模塊化裁剪,無縫地
    發表于 12-08 11:06 ?20次下載
    【<b class='flag-5'>RT-thread</b>】如何將<b class='flag-5'>RT-thread</b>系統移植到stm32

    RT-Thread全球技術大會:RT-Thread測試用例集合案例

    RT-Thread全球技術大會:RT-Thread測試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:34 ?2057次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:<b class='flag-5'>RT-Thread</b>測試用例集合案例

    RT-Thread學習筆記 RT-Thread的架構概述

    RT-Thread 簡介 作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發現 RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發表于 07-09 11:27 ?4482次閱讀
    <b class='flag-5'>RT-Thread</b>學習筆記 <b class='flag-5'>RT-Thread</b>的架構概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    基于RT-Thread Studio學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?3823次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學習

    基于 RT-Thread 的 RoboMaster 電控框架(一)

    記錄與分享,希望能幫助到更多初識 RT-Thread 的小伙伴,也歡迎大家交流分享,指正不足,共同進步。 背景
    的頭像 發表于 09-19 19:55 ?737次閱讀