以 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 大部分工具的工程,大大減小代碼體量。
裁剪前:
裁剪后:
-
軟件定時器
+關注
關注
0文章
18瀏覽量
6730 -
RT-Thread
+關注
關注
31文章
1272瀏覽量
39919 -
USART串口
+關注
關注
0文章
32瀏覽量
6805 -
stm32cubemx
+關注
關注
5文章
280瀏覽量
14751 -
HAL庫
+關注
關注
1文章
114瀏覽量
6173
發布評論請先 登錄
相關推薦
評論