This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to suppress an error

In ST motor control code I have a section that compiles with warnings in the STM32CubeIDE & build okay but in Keil MDK gives an error and won't build.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
#define PH_KIDIV_LOG 38
#define PH_KDDIV_LOG 10
#define PH_KPDIV (1<<PH_KPDIV_LOG)
#define PH_KIDIV (1<<PH_KIDIV_LOG)
#define PH_KDDIV (1<<PH_KDDIV_LOG)
PID64_Handle_t g_PhaseLockPID =
{
.hDefKpGain = 27586,
.hDefKiGain = 22611,
.wUpperIntegralLimit = (int64_t) IQMAX * (int64_t)PH_KIDIV, // HERE
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

The left shift is 38 but it is a 64-bit word. This is error #63: shift count is too large. Can someone explain why I get the error in this case? How can I fix this or make Keil ignore it?

0