[링크 : https://os.mbed.com/forum/mbed/topic/33580/]
[링크 : https://m.blog.naver.com/rlackd93/222449859004]
대충 본걸로는 두 개 같이 정상적(?)으로 사용하는건 쉽지않거나 사실상 불가능한 수준?
가능 + 방향
일단 mbed 는 cpp 이고
stm32 hal은 c로 되어있는데 cpp 컴파일러에서 extern c를 통해서 c를 끌어올수 있으니
mbed에서 stm32 hal을 끌어올수는 있다 정도?
차이점
arm 의 레지스터를 접근해서 설정하도록 구현되어 있어서
mbed hal과 stm32 hal은 코드레벨에서 호환되지 않는다.
서로 관리하는 구조체도 달라서 두개를 무작정 쓰다 보면 충돌나기 쉽고
isr이 관련될 경우 mbed쪽은 다시 덮어 써버리면서 stm32 hal쪽이 정상작동하지 않게 될 가능성이 높아 보인다.
추가로 라이브러리 레벨에서는.. mbed가 cpp를 써서 그런가
isr을 런타임중에 교체 가능하도록 구성되어 있어서 이걸 stm32 hal로 구현하려면 어우..
함수 포인터로 비슷하게 할순 있겠지만 아무튼.. 제법 깊게 짱박혀 있어서 구현해보려면 좀 더 깊숙히 봐야할 것 같다.
mbed 예제보다가 가장 신기했던 타이머 이벤트 추가하는 Timeout 클래스
| #include "mbed.h" Timeout response; DigitalIn button (p14); DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); void blink() { led2 = 1; wait(0.5); led2 = 0; } int main() { while(true) { if(button == 1){ response.attach(&blink, 3.0); led3=1; } else { led3=0; } led1=!led1; wait(0.2); } } |
[링크 : https://os.mbed.com/teams/TVZ-Mechatronics-Team/wiki/Timers-interrupts-and-tasks]

[링크 : https://os.mbed.com/docs/mbed-os/v6.16/apis/timeout.html]
'embeded > Cortex-M3 STM' 카테고리의 다른 글
| stm32 다른 영역으로 점프(부트로더) (0) | 2026.03.06 |
|---|---|
| stm32cubeide cpp 변환이후 generate code (0) | 2026.02.25 |
| Mbed studio on ubuntu 22.04 (0) | 2026.02.23 |
| stm32f103c8t6 cpp std::cout 실패 (0) | 2026.02.18 |
| stm32 rtc tamper (0) | 2026.01.29 |
