新建STM32工程全局声明两个宏的原因

发布时间:2024-08-30  

在uVision中新建STM32工程后,需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中,此时需要在工程设置->C/C++选项卡下的Define文本框中键入这两个全局宏定义。


STM32F40_41xxx,USE_STDPERIPH_DRIVER

USE_STDPERIPH_DRIVER

这个说明你在使用标准外设驱动,有自己的外设配置文件,即stm32f10x_conf.h,详细可查看stm32f4xx.h中12026-12017行。关于stm32f4xx_conf.h


文件中的内容,是有选择的#inlude 'stm32f4xx_conf.h',这样只编译需要的外设文件,减少hex文件的体积。如果没有使用这个宏,或没有stm32f10x_conf.h文件,那么编译时会有一大堆莫名奇妙地错误,这是因为MDK中也自带了stm32f40x_xxxx.h文件,使得编译器使用MDK中.h文件,而.c文件和.h文件版本是不匹配的。


注意,如果是库文件的错误,那一定是你工程配置有问题。

Use Standard Peripheral Driver

在Keil MDK环境中使用STM32固件库建立工程时,可能会遇到编译不通过的问题。出现如下警告或错误提示:
warning:#223-D:function'assert_param'declaredimplicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

这时候我们需要在设置面板的“TargetOptions”中“C/C++”选项卡添加STM32F40_41xxx,USE_STDPERIPH_DRIVER。这样才能使编顺利通过。

知其然了,我们还得知其所以然。下面就一一道来。我们知道,程序的执行是从main.c文件开始的,其中必须包含有头文件stm32f4xx.h。打开stm32f4xx.h,查找USE_STDPERIPH_DRIVER,在第12026-12017行找到

#ifdef USE_STDPERIPH_DRIVER #include 'stm32f4xx_conf.h'

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    新建STM32工程全局声明两个宏的原因;在uVision中新建STM32工程后,需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中,此时需要在工程设置->C/C++选项......
    -- TOUCHSENSE -- USER 用户的全局声明应该输入USER程序块,因为仅该处的声明在以后的软件升级中被转移。 ● $ROBCOR.DAT 文件$ROBCOR.DAT包含特定机器人的机器人动态模型的数据。在轨......
    变量进阶与LED矩阵;局部变量:函数内部声明的变量,只在函数内部有效。 全部变量:在函数外部声明的变量,全局都有效,直到程序执行完毕。 全局变量负作用: 1.降低函数的独立性 2.降低......
    ARRAY 上限。单击“确定”(OK)。 在函数块调用中,将形参与全局数据块“DB_MaterialBuffer”中的变量互连。 创建一个 SCL 函数块并将其命名为“FB_Material”。按如下方式声明......
    ) 中声明以下两个变量: 创建全局数据块: 双击“添加新块”(Add new block) 命令。这样会打开“添加新块”(Add new block) 对话框。单击“数据块 (DB)”(Data......
    模块化编程(2024-08-14)
    本.c文件中调用的宏定义就放在.c文件中,需要被其他文件调用的宏定义放在头文件中; 3、尽量少用全局变量,必须用时,则放在.c文件中自己用,当该全局变量需要被外部调用时,则在.h文件中用extern声明一下。 ......
    全局变量就被定义成为一个全局静态变量。1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)2)初始化:未经初始化的全局静态变量会被程序自动初始化为03)作用域:全局静态变量在声明......
    放宽了对芯片制造商在内地经营的限制。 另据媒体报道,台积电今天在一份声明中表示,美国商务部工业和安全局(BIS)已建议台积电申请“经认证终端用户”(VEU,Validated End-User)认证项目,该项......
    通知编译器已经到了源程序的结尾 EQU--用于为程序中的数字常量、 标号等定义一个等效的字符名称, 相当于 C 中的 define EXPORT(或 GLOBAL ) --用于在程序中声明一个全局的标号 IMPORT......
    来说如果系统所需要的内存数小于内部RAM 数时,都应以小存储模式进行编译。在这种模式下 DATA 段是所有内部变量和全局变量的默认存储段,所有参数传递都发生在DATA 段中,如果有函数被声明为再入函数,编译......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>