WifWaf / MH-Z19

For Arduino Boards (&ESP32). Additional Examples/Commands., Hardware/Software Serial
GNU Lesser General Public License v3.0
195 stars 39 forks source link

Problem in "byte MHZ19::getCRC(byte inBytes[])" #31

Closed michaelruck closed 3 years ago

michaelruck commented 3 years ago

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,

             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\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,

             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.

WifWaf commented 3 years ago

Thanks for this, a fix was put in place a few days ago in the master branch https://github.com/WifWaf/MH-Z19/pull/28

It will be moved to release later this week.

Cheers,