首页 > 其他分享 >RT-Thread Studio刚新建工程后直接打开main.c编译就board.c里产生报错,解决办法

RT-Thread Studio刚新建工程后直接打开main.c编译就board.c里产生报错,解决办法

时间:2023-10-28 17:14:28浏览次数:47  
标签:RT rt Thread void init 报错 board main

如题,RT-Thread Studio刚新建工程后直接打开main.c编译就产生报错。

具体为:刚新建了一个stm32F407ZGT6和一个STM32F103RCT6的工程,之后啥代码也没有改,直接打开main.c文件然后编译,直接报错。

报错定位在“drivers/board.c”,再具体定位在代码“RT_WEAK void rt_hw_board_init()”。


以下是代码原码:

board.c

#include <rtthread.h>
#include <board.h>
#include <drv_common.h>

RT_WEAK void rt_hw_board_init()
{
    extern void hw_board_init(char *clock_src, int32_t clock_src_freq, int32_t clock_target_freq);

    /* Heap initialization */
#if defined(RT_USING_HEAP)
    rt_system_heap_init((void *) HEAP_BEGIN, (void *) HEAP_END);
#endif

    hw_board_init(BSP_CLOCK_SOURCE, BSP_CLOCK_SOURCE_FREQ_MHZ, BSP_CLOCK_SYSTEM_FREQ_MHZ);

    /* Set the shell console output device */
#if defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE)
    rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif

    /* Board underlying hardware initialization */
#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#endif

}

解析:

RT_WEAK是一个RT-Thread特有的宏,用于指定一个弱函数。在C语言中,函数可以被定义为弱函数,当在其他文件中有相同名字的强函数时,链接器会优先选择强函数,忽略弱函数。

在RT-Thread中,RT_WEAK用于定义那些可以被其他文件覆盖的函数。

这个错误可能是由于编译器或环境不支持RT_WEAK这个宏。RT_WEAK是RT-Thread特有的宏,如果你在一个非RT-Thread的环境下编译这段代码,可能就会出现这样的错误。

 

可以改为:

__attribute__((weak)) void rt_hw_board_init()

 

然后编译,结果如下:0 error ,0 warning。

16:45:36 **** Incremental Build of configuration Debug for project new1 ****
make -j8 all 
arm-none-eabi-size --format=berkeley "rtthread.elf"
   text	   data	    bss	    dec	    hex	filename
  60256	   2152	   3336	  65744	  100d0	rtthread.elf

              Used Size(B)           Used Size(KB)
Flash:          62408 B               60.95 KB
RAM:             5488 B                5.36 KB

16:45:37 Build Finished. 0 errors, 0 warnings. (took 978ms)

 

标签:RT,rt,Thread,void,init,报错,board,main
From: https://www.cnblogs.com/salty-pineapple/p/17794275.html

相关文章

  • 基于32位Cortex™-M4的STM32F446RET7、STM32F429IGH6、STM32F423VHH6嵌入式微控制器(M
    描述STM32F432位Cortex™-M4微控制器(MCU)打开了进入数字信号控制器(DSC)市场的大门。这一系列器件与STM32F2系列引脚对引脚、软件相容,但是具有更好的性能、DSP性能、更多的SRAM,并改进了外设,如全双工I²S、低于1μA的RTC、2.4MSPS的ADC。意法半导体STM32F4MCU内含......
  • 基于高性能Cortex®-M7内核STM32F765VGT7、STM32F745IET6嵌入式微控制器
    STM32F732位MCU+FPU基于高性能的ARM®Cortex-M732位RISC内核®,工作频率高达216MHz。Cortex®-M7内核具有单浮点单元(SFPU)精度,支持所有ARM®单精度数据处理指令与数据类型。同时执行全套DSP指令和存储保护单元(MPU),增强应用安全性。1、STM32F765VGT7ICMCU32BIT1MB......
  • Angular dynamic import 技术详解
    Angular是一款由Google开发的开源前端框架,它能够帮助开发者更加高效地构建复杂的单页应用。Angular的一个重要特性是动态导入(Dynamicimports),它的出现大大提高了Angular应用的性能和用户体验。在讲解动态导入之前,我们需要先了解一下静态导入和动态导入的区别。在JavaScrip......
  • dynamic import 在 Angular 应用中的使用场合讲解
    Angular的Dynamicimports(动态导入)是一种强大的技术,它允许你在运行时按需加载模块,从而优化应用程序的性能和加载时间。在本文中,我将详细介绍什么是Angular的Dynamicimports以及如何使用它来提高应用程序的效率。我们将探讨Dynamicimports的工作原理、使用场景、语法示例以及最佳......
  • Technical support website(URL)
    Thissoftwarerespectsandprotectsthepersonalprivacyofallusersusingtheservice.Inordertoprovideyouwithmoreaccurateandpersonalizedservices,thissoftwarewilluseanddiscloseyourpersonalinformationinaccordancewiththeprovisions......
  • [mysql][maxwell] maxwell无法连接mysql8.x,报错信息“Access Denied”
    前提使用mysql-maxwell-kafka进行增量同步的时候,kafka消费组没有得到任何消息。一个个排到最后才发现最核心的问题是mysql,麻了真的是。kafka没问题查进程,有两台机子的kafka未启动打开日志,报错org.apache.zookeeper.KeeperException$NodeExistsException:KeeperErrorCode=N......
  • Spartacus lazy loading 模块中的配置管理
    如果在懒加载模块中提供了额外的配置,组合商店前端将其合并到全局应用配置中,以支持现有组件和服务的懒加载场景。在大多数情况下,尤其是当懒加载模块主要提供默认配置时,这种方式都能可靠地工作。然而,如果过度使用,特别是当两个模块为配置的同一部分提供不同的配置时,可能会导致问题。......
  • 实现 Angular Lazy loading 时应该避免 Static Imports 的原因
    在Angular应用开发中,Lazyloading(懒加载)是一种常用的优化技术,通过Codesplitting(代码拆分)实现。然而,在实现过程中,开发者往往会遇到一些常见的问题。本文将详细介绍在实现AngularLazyloading时应该避免的错误,并提供实际的示例进行说明。避免Lazy-Loaded代码的静态导入......
  • C#详解-Contains、StartsWith、EndsWith、Indexof、lastdexof 怎样性能最优
    简介:在C#中Contains、StarsWith和EndWith、IndexOf都是字符串函数。1.Contains函数用于判断一个字符串是否包含指定的子字符串,返回一个布尔值(True或False)。2.StartsWith函数用于判断一个字符串是否以指定的子字符串开头,返回一个布尔值(True或False)。3.EndsWith函数用于判断一个字......
  • 报错汇总
    pip:CouldnotinstallpackagesduetoanOSError:HTTPSConnectionPool起因:升级setuptools包ERROR:CouldnotinstallpackagesduetoanOSError:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):Maxretriesexceededwithurl:/packages/......