历史上的今天
返回首页

历史上的今天

今天是:2025年03月05日(星期三)

正在发生

2020年03月05日 | STM32开发笔记95: 处理UNUSED宏

2020-03-05 来源:eefocus

单片机型号:STM32F091RCT6


使用C语音在PlatformIO中进行STM32Cube的工程设计,一切正常,希望使用C++语音进行程序开发,顾将main.c文件改为main.cpp文件,再次编译报如下警告:


In file included from C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_rcc.h:45:0,

                 from C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_conf.h:185,

                 from C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal.h:46,

                 from include/main.h:31,

                 from src5_LogicLayermain.cpp:22:

src5_LogicLayermain.cpp: In function 'void MX_GPIO_Init()':

C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_rcc.h:664:48: warning: conversion to void will not access object of type 'volatile uint32_t {aka volatile long unsigned int}'

                                         UNUSED(tmpreg);

C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_def.h:87:27: note: in definition of macro 'UNUSED'

 #define UNUSED(x) ((void)(x))

                           ^

src5_LogicLayermain.cpp:166:3: note: in expansion of macro '__HAL_RCC_GPIOF_CLK_ENABLE'

   __HAL_RCC_GPIOF_CLK_ENABLE();

   ^~~~~~~~~~~~~~~~~~~~~~~~~~

C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_rcc.h:650:48: warning: conversion to void will not access object of type 'volatile uint32_t {aka volatile long unsigned int}'

                                         UNUSED(tmpreg);

C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_def.h:87:27: note: in definition of macro 'UNUSED'

 #define UNUSED(x) ((void)(x))

                           ^

src5_LogicLayermain.cpp:167:3: note: in expansion of macro '__HAL_RCC_GPIOB_CLK_ENABLE'

   __HAL_RCC_GPIOB_CLK_ENABLE();

   ^~~~~~~~~~~~~~~~~~~~~~~~~~

C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_rcc.h:643:48: warning: conversion to void will not access object of type 'volatile uint32_t {aka volatile long unsigned int}'

                                         UNUSED(tmpreg);

C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_def.h:87:27: note: in definition of macro 'UNUSED'

 #define UNUSED(x) ((void)(x))

                           ^

src5_LogicLayermain.cpp:168:3: note: in expansion of macro '__HAL_RCC_GPIOA_CLK_ENABLE'

   __HAL_RCC_GPIOA_CLK_ENABLE();

警告的内容较多,可以一级级分析,最后可将警告语句定位在下列文件:


C:userssnmplink.platformiopackagesframework-stm32cubef0DriversSTM32F0xx_HAL_DriverInc/stm32f0xx_hal_rcc.h:664:48


代码如下:


#define __HAL_RCC_GPIOA_CLK_ENABLE()   do {

                                        __IO uint32_t tmpreg;

                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOAEN);

                                        /* Delay after an RCC peripheral clock enabling */

                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOAEN);

                                        UNUSED(tmpreg);

                                      } while(0U)

#define __HAL_RCC_GPIOB_CLK_ENABLE()   do {

                                        __IO uint32_t tmpreg;

                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOBEN);

                                        /* Delay after an RCC peripheral clock enabling */

                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOBEN);

                                        UNUSED(tmpreg);

                                      } while(0U)

#define __HAL_RCC_GPIOC_CLK_ENABLE()   do {

                                        __IO uint32_t tmpreg;

                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOCEN);

                                        /* Delay after an RCC peripheral clock enabling */

                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOCEN);

                                        UNUSED(tmpreg);

                                      } while(0U)

#define __HAL_RCC_GPIOF_CLK_ENABLE()   do {

                                        __IO uint32_t tmpreg;

                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOFEN);

                                        /* Delay after an RCC peripheral clock enabling */

                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOFEN);

                                        UNUSED(tmpreg);

                                      } while(0U)

#define __HAL_RCC_CRC_CLK_ENABLE()   do {

                                        __IO uint32_t tmpreg;

                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN);

                                        /* Delay after an RCC peripheral clock enabling */

                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN);

                                        UNUSED(tmpreg);

                                      } while(0U)

#define __HAL_RCC_DMA1_CLK_ENABLE()   do {

                                        __IO uint32_t tmpreg;

                                        SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN);

                                        /* Delay after an RCC peripheral clock enabling */

                                        tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN);

                                        UNUSED(tmpreg);

                                      } while(0U)

推荐阅读

史海拾趣

C&K Switches公司的发展小趣事

C&K Switches公司的历史可以追溯到其创立之初。作为一家机电开关和互连解决方案的设计商和制造商,C&K在成立的早期阶段便以其在开关领域的精湛技艺和创新理念崭露头角。公司凭借对技术的深入研究和不断创新,逐渐在工业、交通运输、航空航天和数据通信等领域积累了丰富的经验。这一时期,C&K不断扩大产品线,提升产品质量,为公司的长远发展奠定了坚实的基础。

EnerSys公司的发展小趣事

EnerSys一直致力于技术创新和研发投入。公司拥有一支专业的研发团队,不断推出具有竞争力的新产品和解决方案。例如,EnerSys在锂电池领域取得了重要突破,成功开发出高能量密度、长寿命的锂电池产品。这些创新产品不仅满足了客户的多样化需求,还推动了公司在电子行业中的持续发展。

Devar Inc公司的发展小趣事

随着电商的兴起,Devar Inc公司看到了智能包装的巨大潜力。公司研发了一系列智能包装解决方案,利用传感器、RFID技术和物联网技术,实现了产品的追踪、溯源和防伪功能。同时,Devar还积极探索将AR技术应用于包装设计中,为消费者提供与产品包装互动的体验。这些创新不仅提升了产品的附加值,也增强了消费者对品牌的认同感。

DEMMELPRODUCTS公司的发展小趣事

在追求技术创新和市场拓展的同时,DEMMELPRODUCTS公司始终将品质管理放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的质量控制。此外,公司还积极引入先进的生产设备和技术,不断提高生产效率和产品质量。通过持续改进和优化,DEMMELPRODUCTS公司的产品品质得到了客户和行业的广泛认可。

AZ Displays公司的发展小趣事

随着技术的不断进步和市场需求的不断变化,AZ Displays的产品应用领域也在不断拓展。除了传统的消费电子领域外,公司的产品还广泛应用于航空电子、医疗、导航系统、工业控制等多个领域。通过与各行业合作伙伴的紧密合作,AZ Displays成功打开了新的市场大门,实现了业务的快速增长。

EXCELTA公司的发展小趣事

随着科技的不断进步和市场的不断变化,Excelta始终将技术创新作为公司发展的核心驱动力。公司投入大量资金和资源进行技术研发和产品创新,不断推出具有竞争力的新产品。其中,一款高性能的微型连接器产品凭借其出色的性能和稳定性在市场上取得了巨大成功。此外,Excelta还积极探索新的应用领域和市场机会,为公司的持续发展注入了新的活力。

问答坊 | AI 解惑

MCGS组态软件设计及其应用

一、引言     过去工业控制计算机系统的软件功能都靠软件人员编程实现。工作量大,软件通用性差,且易产生错误。随着工业控制要求的不断提高,专门用于工业控制的组态软件应运而生,它是一套功能齐全的组态生成工具软件,通用性强,而 ...…

查看全部问答>

ARM c程序的问题

_irqHandler PROC    1. STMFD   sp!,{r0-r4,r12,lr}    2. mov     r4,#0x80000000  //中断控制寄存器首地址(假设的)    3. ldr     r0,[r4,#0] ...…

查看全部问答>

请教一个sd卡驱动的问题

最近在做sd卡驱动的移植,读手册时有几个参数看不明白。比如,我板子的sd卡控制器寄存器有两个位可以设置sd卡dma的类型,原文如下: DMA type: It indicates which DMA transaction type is used. These 2 bits are valid when the DMA_EN is e ...…

查看全部问答>

wince 桌面快捷方式

请问: wince中的文件夹有没有后缀名? 我想把一个名为NandFlash的文件夹,放到桌面快捷方式, 我在WINCE500\\PLATFORM\\SMDK2440\\FILES创建了一个NandFlash.LNK文件,里面写上22#\\windows\\NandFlash 我又在Project.bib 里面加上 NandFlash ...…

查看全部问答>

请教: 文件读写

本帖最后由 dontium 于 2015-1-23 13:25 编辑 #include(iostream.h) #include(stdio.h) fid=fopen(\\"d:/en_dsp/enc.sea\\",\\"rb\\"); if (fid==NULL)     {      cout<<\\"can\\\'t open f ...…

查看全部问答>

PCI设备识别不正常

首先我的程序在某些主板上是可以正常工作的(具体型号我也搞不懂),设置的是从设备,内部只有从设备状态机。没有接入奇偶检验,仲裁和热插拔。 问题是在一些主板上发现设置为从设备时无法找到设备,设置为主设备可以找到,但是通过软件读取配置信 ...…

查看全部问答>

0

居然要全部下完才能都打开?这个有点不厚道…

查看全部问答>

LM3S程序求教

//————————————————头文件————————————————————#include \"inc/hw_ints.h\"//硬件中断#include \"inc/hw_memmap.h\"#include \"inc/hw_types.h\"//硬件类型#include \"driverlib/gpio.h\"//GPIO#include \"dri ...…

查看全部问答>

RAW_TASK.C 具体教学问题

RAW_TASK.C具体教学问题1  raw_task_create教学问题: 1 代码是怎么实现系统只能创建一个 idle 任务的? 2 RAW_TASK_OBJ 结构体第一个成员task_stack 的地址等于结构体的地址吗? 3 RAW_TASK_OBJ 结构体成员中task_stack 为什么是放在第 ...…

查看全部问答>

最近申请了一个省创项目,关于无线通信的战术动作命令腕表,不知带怎么开始,望大...

二、项目研究背景(可以是已有的基础,与本项目有关的研究积累和已取得的成绩,已具备的条件,尚缺少的条件及方法等)    随着社会的发展,人们身边的不安全因素越来越多。当人们处于特殊紧急环境,并且需要及时对威胁自己或他人的生命安 ...…

查看全部问答>