前言:
上一節,我們完成了GD32VF103在RT_Thread Nano上的移植,本節我們為其增加控制臺輸出功能,以及通過FinSH組件和用戶交互功能。
一、基礎知識
1.FinS H簡介
RT-Thread FinSH 是 RT-Thread 的命令行組件(shell),提供一套供用戶在命令行調用的操作接口,主要用於調試或查看系統信息。它可以使用串口 / 乙太網 / USB 等與 PC 機進行通信,使用 FinSH 組件基本命令的效果圖如下所示:
二、添加步驟
1.導入工程
將上一節內容進行複製,修改.project中工程名字為lesson3
重新import進來新的工程
2.控制臺輸出
適配號控制臺輸出,就可以使用RT_Thread中rt_kprintf()函數進行串口信息的列印,方便調試Bug、獲取系統當前運行狀態。
(1) 串口初始化
在gd32vf102c_start.c中定義調試串口初始化函數void uart_debug_init(void),同時在gd32vf103c_start.h中聲明。
然後再board.c中rt_hw_board_init()函數中調用uart_debug_init()。
(2) 實現 rt_hw_console_output
在gd32vf102c_start.c文件中,實現rt_hw_console_output如下:
void rt_hw_console_output(const char str){ rt_enter_critical(); while(str != &39;) { if (&39; == *str) { usart_data_transmit(EVAL_COM0, &39; ); while ( usart_flag_get(EVAL_COM0, USART_FLAG_TBE)== RESET); } usart_data_transmit(EVAL_COM0, (uint8_t) *str++ ); while ( usart_flag_get(EVAL_COM0, USART_FLAG_TBE)== RESET); } rt_exit_critical();}
(3) 修改main.c中led_process_thread_entry函數
void led_process_thread_entry(void parameter){ rt_err_t ret = RT_EOK; while(1) { / insert 500 ms delay / rt_thread_mdelay(500); / toggle the LED / gpio_bit_write(GPIOA, GPIO_PIN_1, (bit_status)(1-gpio_input_bit_get(GPIOA, GPIO_PIN_1))); rt_kprintf(&34;); / insert 500 ms delay */ rt_thread_mdelay(500); }}
增加rt_kprintf(&34;);函數,每隔1S列印一次數據。
三、運行結果
運行結果如下所示