rt_thread nano中rt_kprintf()实现

在串口中直接添加这段rt_hw_console_output()控制台输出命令,然后编译并不会报错,但是并不会在串口中输出rt_thread的版本信息

在这里插入图片描述

void rt_hw_console_output(const char *str)
{
	rt_enter_critical();
    rt_size_t i = 0, size = 0;
    char a = '\r';
 
    size = rt_strlen(str);
    for (i = 0; i < size; i++)
    {
        if (*(str + i) == '\n')
        {
	        HAL_UART_Transmit(&huart1 , (uint8_t *)&a, 1 , 1);
 
        }
        HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);
    }
		rt_exit_critical();
}

需要在components.c文件中的rt_hw_board_init();函数中添加硬件的初始化SysInit()

void rt_hw_board_init()
{

    /* System Clock Update */
    SystemCoreClockUpdate();
    
    /* System Tick Configuration */
    _SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
		
	SysInit();//硬件初始化
    /* Call components board initial (use INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#endif

#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
    rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#endif
}

硬件初始化

void SysInit(void)
{
	
		HAL_Init();
		SystemClock_Config();
	  	MX_GPIO_Init();
		MX_USART1_UART_Init();

		
}

你可能感兴趣的:(rt_thread,nano,stm32)