File MHZ19.cpp
Lines 736 to746
The variable CRC, written in capital letters collides with a macro defined in CMSIS, resulting in a bunch of compiler errors.
Writing the variable crc in lower case letters solves the issue.
In file included from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:131,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/stm32/stm32_def.h:28,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/stm32/clock.h:43,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring_time.h:23,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring.h:38,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/Arduino.h:36,
from C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.h:14,
from C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:11:
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp: In member function 'byte MHZ19::getCRC(byte*)':
C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:685:43: error: expected ')' before '*' token
685 | #define CRC ((CRC_TypeDef *)CRC_BASE)
| ~ ^
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:736:17: note: in expansion of macro 'CRC'
736 | byte x = 0, CRC = 0;
| ^~~
C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:685:43: error: expected ')' before '*' token
685 | #define CRC ((CRC_TypeDef *)CRC_BASE)
| ~ ^
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:736:17: note: in expansion of macro 'CRC'
736 | byte x = 0, CRC = 0;
| ^~~
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:740:25: error: lvalue required as left operand of assignment
740 | CRC += inBytes[x];
| ^
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:743:17: error: 'crc' was not declared in this scope
743 | CRC = 255 - crc;
| ^~~
In file included from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:131,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/stm32/stm32_def.h:28,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/stm32/clock.h:43,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring_time.h:23,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring.h:38,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/Arduino.h:36,
from C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.h:14,
from C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:11:
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:744:5: note: in expansion of macro 'CRC'
744 | CRC++;
| ^~~
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:744:8: error: lvalue required as increment operand
744 | CRC++;
| ^~
In file included from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:131,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/stm32/stm32_def.h:28,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/stm32/clock.h:43,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring_time.h:23,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/wiring.h:38,
from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\cores\arduino/Arduino.h:36,
from C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.h:14,
from C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:11:
C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:685:30: error: invalid conversion from 'CRC_TypeDef*' to 'byte' {aka 'unsigned char'} [-fpermissive]
685 | #define CRC ((CRC_TypeDef *)CRC_BASE)
| ~^~~~~~~~~~~~~~~~~~~~~~~~
| |
| CRC_TypeDef*
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:746:12: note: in expansion of macro 'CRC'
746 | return CRC;
| ^~~
exit status 1
Fehler beim Kompilieren für das Board Generic STM32F1 series.
File MHZ19.cpp Lines 736 to746 The variable CRC, written in capital letters collides with a macro defined in CMSIS, resulting in a bunch of compiler errors.
Writing the variable crc in lower case letters solves the issue.
You are welcome Michael
Error: Arduino: 1.8.13 (Windows 7), Board: "Generic STM32F1 series, BluePill F103C8, Maple DFU Bootloader original, Enabled (generic 'Serial'), None, Low/Full Speed, Smallest (-Os default), Newlib Standard"
In file included from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:131,
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp: In member function 'byte MHZ19::getCRC(byte*)':
C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:685:43: error: expected ')' before '*' token
685 | #define CRC ((CRC_TypeDef *)CRC_BASE)
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:736:17: note: in expansion of macro 'CRC'
736 | byte x = 0, CRC = 0;
C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:685:43: error: expected ')' before '*' token
685 | #define CRC ((CRC_TypeDef *)CRC_BASE)
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:736:17: note: in expansion of macro 'CRC'
736 | byte x = 0, CRC = 0;
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:740:25: error: lvalue required as left operand of assignment
740 | CRC += inBytes[x];
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:743:17: error: 'crc' was not declared in this scope
743 | CRC = 255 - crc;
In file included from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:131,
C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:685:30: error: increment of read-only location '(CRC_TypeDef*)((1073741824 + 131072) + 12288)'
685 | #define CRC ((CRC_TypeDef *)CRC_BASE)
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:744:5: note: in expansion of macro 'CRC'
744 | CRC++;
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:744:8: error: lvalue required as increment operand
744 | CRC++;
In file included from C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:131,
C:\Users\Michael\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:685:30: error: invalid conversion from 'CRC_TypeDef*' to 'byte' {aka 'unsigned char'} [-fpermissive]
685 | #define CRC ((CRC_TypeDef *)CRC_BASE)
C:\Users\Michael\Documents\Arduino\libraries\MH-Z19\src\MHZ19.cpp:746:12: note: in expansion of macro 'CRC'
746 | return CRC;
exit status 1
Fehler beim Kompilieren für das Board Generic STM32F1 series.