Arm Mbed OS support forum

Mbed에서 error 발생시

AVR만 사용하다 Mbed 를 처음 공부하고 있습니다. I2C slave interrupt 로 구동시킬려고 합니다. 현재 MBED 에 있는 폴링방식은 잘됩니다. Mbed library에 있는 I2CSlaveX 및 I2CSlave-irq 를 받아 사용해 봤는데 compiler 중 error 가 발생합니다. 아마 I2CSlave-irq는 사용하는 CPU(STM32-f103rb) 가 달라서 그런것 같은데 이부분을 어떻게 바꾸어야 할지 모르겠습니다.

void enable_irq() {
NVIC_SetVector(I2C1_EV_IRQn, (uint32_t)(&i2c_it_handler));

NVIC_SetPriority(I2C1_EV_IRQn, 1);     // set the priority to 1 (0 is the most important priority)
I2C1->CR1 |= I2C_CR1_ADDRIE;           // this line enable the I2c fonction if the master has call the right adress 
I2C1->CR1 = I2C_CR1_PE | I2C_CR1_ADDRIE; 

NVIC_EnableIRQ(I2C1_EV_IRQn);

}

그리고 I2CSlaveX에서도 compiler하면 아래와 같은 error가 발생하는데 도저히 찾을 수가 없네요. mbed가 사용하기 쉬운데 library 가 없는 경우에는 직접 code를 만들어줘야할 것 같은데 구체적으로 어떤 컴파일러를 기준으로 해야하는지요? STM에 일부 찾아보니 CubeMX, HAL 등에 있는 code를 가져와 사용해 봐도 compile이 안되고 error가 생기는 경우가 많습니다. 어떻게 공부하고 해결해야 할지 답답합니다.

Error: Expression must have pointer type in “I2CSlaveX/I2CSlaveX.cpp”, Line: 24, Col: 18