์ธํ๋ํ๊ต ๊ณต๊ณผ๋ํ์์ ์ ์๊ณตํ ํ์ฌ ํ์๋ฅผ ๋ฐ์์ผ๋ฉฐ ์๋ฒ ๋๋ ์์คํ ์ฉ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ก์จ ์๋ ๊ฐ์ ๊ฒฝ๋ ฅ์ ์์์ต๋๋ค. ์๋ฒ ๋๋ ์์คํ ๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ์ ๋ฌธ ๊ฐ์ฌ๋ก๋ ํ๋ ์ค์ ๋๋ค. ์์ดํฐ 3GS ๋ฑ์ฅ๊ณผ ๊ฐ์ ์๊ธฐ์ ๋งฅ(๋ถ)์ ์ ๋ฌธํ์๊ณ , ๊ทธ๋๋ถํฐ ๋งฅ(๋ถ) ์๋ํ์ ๊ด์ฌ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. '๋งฅ(๋ถ)์์ ์ฌ์ฉํ ์ ์๋ ์๋ฆฌ ๋ฆฌ๋ชจํธ', 'ํค๋ณด๋๋ง์์คํธ๋ก๋ฅผ ์ด์ฉํ ๊ตฌ๊ธ๋ฒ์ญ๊ธฐ' ๊ฐ์ ์คํ ์์ค๋ฅผ ๊นํ๋ธ(https://github.com/guileschool) ์ ๋๊ณ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์ํ๊ณ ์์ต๋๋ค. ์คํ ์์ค ํ๋์จ์ด '๋น๊ธ๋ณธ๋ธ๋' ์๋ ๋ง์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋งฅ(๋ถ) ์๋ํ๋ฅผ ์ด์ฉํ์ฌ ์์ฐ์ฑ์ ๋์ผ ์ ์๋ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ถ์ผ์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์๊ณ , ์ด๋ฅผ ํ์๋ก ํ๋ ์ฌ๋๋ค์ ๋๊ณ ์์ต๋๋ค.
๊ฐ์ ์์ฒญ ๋ฐ ๊ธฐํ ๋ฌธ์์ฌํญ์ guileschool@gmail.com์ผ๋ก ๋ณด๋ด์ฃผ์ธ์ :)
Courses
Reviews
- ARM Cortex-M Processor Programming
- FreeRTOS Programming
- ARM Cortex-M Processor Programming
- ARM Cortex-M Processor Programming
Posts
Q&A
๋๋ฒ๊ฑฐ๋ชจ๋์ ์ง์ ์ด ์๋ฉ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์ ํํ ์คํํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
- 0
- 2
- 32
Q&A
prvExampleTaskHook ํจ์ ํธ์ถ ๋ถ๋ถ์ ๋ํด ๋ฌธ์๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์, yongdeok1985๋!์ง๋ฌธํ์ ํํฌํจ์๋ ์ผ๋ฐ์ ์ผ๋ก๋ ์ ์ฌ์ฉ๋์ง ์์ ํจ์์ธ๋ฐ์, ๋ณธ ๊ฐ์์ ๊ฒฝ์ฐ 12_LOGICSNIFFS ์์ ์์ ๋ฌธ๋งฅ์ ํ ์๊ฐ์ ์ธก์ ํ๊ณ ์ ์ฌ์ฉํ์์ต๋๋ค.์์ค์ฝ๋ ์ธ์ฉ#include "logicSniff.h" #include void vLogicSniffMultiSetLED5( unsigned int channel, int xValue ); void vLogicSniffMultiSetLED6( unsigned int channel, int xValue ); void vLogicSniffSetLED( unsigned int channel, int xValue ); BaseType_t prvExampleTaskHook( void * pvParameter ) { /* Perform an action. This could be anything. In this example, the hook is used to output debug trace information. pxCurrentTCB is the handle of the currently executing task. (vWriteTrace() is not an API function. It's just used as an example.) */ vLogicSniffMultiSetLED5(LS_CHANNEL_ALL5, 0); // All Leds Clear vLogicSniffMultiSetLED6(LS_CHANNEL_ALL6, 0); // All Leds Clear vLogicSniffSetLED( pxCurrentTCB->uxTCBNumber, 1 ); printf("%d ", (int)pxCurrentTCB->uxTCBNumber); /* This example does not make use of the hook return value so just returns 0 in every case. */ return 0; }prvExampleTaskHook() ํจ์๋ vTaskSetApplicationTaskTag()๋ฅผ ํตํด ํ์ฌ ํ์คํฌ์ hook ํจ์๋ก ๋ฑ๋ก๋์์ผ๋ฉฐ, ์ดํ ํด๋น ํ์คํฌ์์ xTaskCallApplicationTaskHook(NULL, param)์ ํธ์ถํ์ ๋ ์คํ๋ฉ๋๋ค. ์ฆ, ์๋์ผ๋ก ํธ์ถ๋์ง ์์ผ๋ฉฐ, ์ง์ xTaskCallApplicationTaskHook()์ ํธ์ถํด์ผ๋ง ๋์ํฉ๋๋ค.
- 0
- 2
- 42
Q&A
๋ณด๋ STM32H735IG์ ๊ฐ์ ํธํ ์ฌ๋ถ ๋ฌธ์
STUDY COMP! ์๋ ํ์ธ์~~์์ฒญํ์ STM32H735G-DK ํฌํ ์์ ์ด ์๋ฃ๋์ด ์์ค์ฝ๋๋ฅผ ์ฌ๋ ค๋๋ ธ์ต๋๋ค.์ ๊ฐ ํด๋น STM32 ๋ณด๋๋ฅผ ๊ฐ์ง๊ณ ์์ง์์ ์์ค์ฝ๋ ์์ฑ ์์ ๋ง ํ์ฌ ์ ๋ฌ๋๋ฆฝ๋๋ค๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํฌํ ์ด ์๋์๋์ง ์ฌ๋ถ๋ ๋ณธ์ธ์ด ์ง์ ํ์ธํ์ ์ผ ํฉ๋๋ค๊ธฐ๊ธฐ์์ ํ ์คํธ ํด๋ณด์๊ณ ๋ฌธ์ ์ ์ด ๋ฐ๊ฒฌ๋์๋ฉด ๊ธ ๋จ๊ฒจ์ฃผ์ธ์
- 1
- 3
- 56
Q&A
๋ณด๋ STM32H735IG์ ๊ฐ์ ํธํ ์ฌ๋ถ ๋ฌธ์
์๋ ํ์ธ์. ๊ฐ์ ๊ตฌ๋งค ํ ์ด ์ง๋ฌธ๋์ ์ฌ์ฉํ์๋ ค๋ ๋ณด๋์ ํฌํ ์ ์์ฒญ์ฃผ์๋ฉด ์ค์ต ์์ ๋ฅผ ํด๋น ๋ณด๋์์ ์ฌ์ฉํ์ค ์ ์๋๋ก ์์ ํด์ ์ ๋ฌ๋๋ฆฝ๋๋ค.ํฌํ ์์ ์ด ์๋ฃ๋์์ต๋๋ค ๐ . ์ ๊ธ ์ฐธ๊ณ ํด์ฃผ์ธ์.
- 1
- 3
- 56
Q&A
[ L152RE ] ์์ท ์ํํธํ์ด๋จธ ์คํ ์ ๋์๋์?
์๋ ํ์ธ์. chul17.choi ๋!์๋์ ๊ฐ์ด 'task.c' ์ฝ๋๋ฅผ ์์ฑํ์ฌ์ผ ๋์ํฉ๋๋ค.์ฐธ๊ณ ๋ฐ๋๋๋ค./* TODO #1:์์ท ์ํํธ์จ์ด ํ์ด๋จธ(xOneShotTimer)์ ๊ตฌํ */#if 1/* Create the one shot timer, storing the handle to the created timer in xOneShotTimer. */xOneShotTimer = xTimerCreate(/* Text name for the software timer - not used by FreeRTOS. */"OneShot",/* The software timer's period in ticks. */mainONE_SHOT_TIMER_PERIOD,/* Setting uxAutoRealod to pdFALSE creates a one-shot software timer. */pdFALSE,/* This example does not use the timer id. */0,/* The callback function to be used by the software timer being created. */prvOneShotTimerCallback );#endif /* TODO #2:์๋ ๋ฐ๋ณต ์ํํธ์จ์ด ํ์ด๋จธ(xAutoReloadTimer)์ ๊ตฌํ */#if 1/* Create the one shot timer, storing the handle to the created timer in xOneShotTimer. */xAutoReloadTimer = xTimerCreate(/* Text name for the software timer - not used by FreeRTOS. */"AutoReload",/* The software timer's period in ticks. */mainAUTO_RELOAD_TIMER_PERIOD,/* Setting uxAutoRealod to pdFALSE creates a one-shot software timer. */pdTRUE,/* This example does not use the timer id. */0,/* The callback function to be used by the software timer being created. */prvAutoReloadTimerCallback );#endif
- 1
- 2
- 41
Q&A
Deferred Interrupt Processing ์ํ ์์ ๋ฌธ์ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. chul17.choi ๋!์ด๋ฒ ์ง๋ฌธ์ ๊ฒฝ์ฐ๋ ์๋ ์ ์ฐธ๊ณ ํ์๋ฉด ๋ ๊ฒ ๊ฐ๋ค์.์์ฃผ ์ ์ค๋ช ํ๊ณ ์์ต๋๋ค. ใ ใ
- 1
- 2
- 41
Q&A
ํฌํ ์๋น์ค ๋ถํ๋๋ฆฝ๋๋ค
๋ ธ์น์กฐ๋์ด ๋ง์ํ์ ํฌํ ์๋ฃ๋ ์๋ ๋งํฌ์์ ๋ค์ด๋ก๋ ํ์ค ์ ์์ต๋๋ค.https://www.inflearn.com/courses/lecture?courseId=327240&type=LECTURE&unitId=147777ํน์ฌ ์ฌ์ฉํ์๋ ์ปดํ์ผ๋ฌ ๋ฒ์ ผ๊ณผ ์ด ์๋ฃ๊ฐ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์์ผ๋ ๊ทธ๋๋ ์๋ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.https://www.inflearn.com/community/questions/1230491/caddr-t-undeclared-%EB%AC%B8%EC%A0%9C
- 1
- 2
- 41
Q&A
RTOS Secure Boot ๊ด๋ จ ์๋ฃ ๋ฌธ์
์๋ ํ์ธ์. ์ ๋๋!Secure Boot๋ RTOS ํ๊ฒฝ์์ ์ค์ํ ๋ณด์ ์์ ์ค ํ๋์ฃ . ๋ค๋ง, ์ ๋ ์ค๋ฌด์์ Secure Boot๋ฅผ ์ง์ ๋ค๋ค๋ณธ ๊ฒฝํ์ด ์์ด์ ๊น์ด ์๋ ๋ต๋ณ์ ๋๋ฆฌ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ํ์ง๋ง ๋ณดํต Secure Boot ๊ฐ๋ ์ RTOS๋ณด๋ค๋ ํ๋์จ์ด(SoC/MCU)์ ๋ณด์ ๋ถํ ๋ฉ์ปค๋์ฆ๊ณผ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์, ์ฌ์ฉํ์๋ ํ๋์จ์ด ์ ์กฐ์ฌ์ Secure Boot ๊ฐ์ด๋๋ ๊ณต์ ๋ฌธ์๋ฅผ ๋จผ์ ํ์ธํด๋ณด์๋ฉด ๋์์ด ๋ ๊ฒ ๊ฐ๋ค์.
- 2
- 1
- 85
Q&A
lcd ํ๋ก๊ทธ๋จ ์ํ
์๋ ํ์ธ์, new ๊ฐ๋ฐ์๋!LCD ํ๋ก์ ํธ์ ๊ฒฝ์ฐ Nucleo-F103RB ๋ณด๋์์๋ง ์ปดํ์ผ๋ฐ ๋์ ์ฌ๋ถ๊ฐ ํ์ธ๋์์ต๋๋ค. ๋ง์ํ์ STM32F429ZI-disc1 ์ด๋ Nucleo-F429ZI ๋ณด๋์ ๊ฒฝ์ฐ๋ ์ปดํ์ผ๋ฐ ๋์ ์ฌ๋ถ๊ฐ ํ์ธ๋์ง ์์์์ ์๋ ค๋๋ฆฌ๊ณ , ๋ง์ฝ ๋น๋์์ผ ์คํ์ ํด๋ณด์๊ฒ ๋ค๊ณ ํ๋ฉด ์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.์ฐ์ ์์คํ์ผ์ ๋ฐ์์ฃผ์ธ์.liquidcrystal_i2c.cliquidcrystal_i2c.h์ด ์์ค๋ฅผ ๊ธฐ์กด LCD ํ๋ก์ ํธ ํ์ผ๋ด์ SRC ๋ก ๋ฃ์ด์ฃผ์ ํ ๋น๋ํ์๋ฉด ๋ฉ๋๋ค.๋๋ฒ๊น ์ ๊ฐ์ ์์์ ์ฐธ๊ณ ํด์ ํด๋ณด์ธ์.
- 1
- 2
- 69
Q&A
timebase source๋ฅผ systick timer๋ก ํ์ ์ด์
์๋ ํ์ธ์, ๊น์๋ช ๋!์ ์๊ฒฌ์ ์ ๋ฆฌํด์ ์ ๋ฌํ๊ธฐ ์ํด ์๊ฐ์ด ์ข ํ์ํ์ต๋๋ค. ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค.์์งํ ๋ง์๋๋ฆฌ๋ฉด, ์ ๊ฐ ์ด ๊ฐ์๋ฅผ ์ค๋นํ๋ฉด์ ์ด ๋ถ๋ถ์ ๋ํด์ ํฌ๊ฒ ์์ํ์ง ์์๋ ๊ฒ์ ํ์คํฉ๋๋ค.๊ทธ ์ด์ ๋ ๊ฐ๋จํฉ๋๋ค. CORTEX-M ์ systick ์ ๊ทธ ์ด๋ฆ ์์์ ์ ๋๋ฌ๋ ์๋ฏ์ด TICK ์ ์ฉ ํ์ด๋จธ์ธ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ , ๊ณผ๊ฑฐ๋ถํฐ FREERTOS ์์ ์ค๊ณง ์ฌ์ฉํด์๋ ํ์ด๋จธ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ง์ดํฌ๋ก์จ ์ค์์ค์์๋ ์ญ์๋ ๊ฐ ์ฌ์ฉํด์ค๋ ํ์ด๋จธ ์ด๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋์ ์ ๋ ํ์ ๊ฒฝ๊ณ ๋ฉ์์ง์ ํฌ๊ฒ ์๋ฏธ๋ฅผ ๋์ง ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ , ST ์ง์์ด ๋ง๋ค์ด๋ธ ๊ทธ ๊ฒฝ๊ณ ๋ฉ์์ง๋ ๊ทธ๋ฆฌ ์๋ฆ๋ต์ง ๋ชปํฉ๋๋ค(๊ฐ๋ ฅํ ์ถ์ฒํ๋ค๋? ์ด์ฉ๋ผ๋ ๊ฑฐ์ง? ์ฐ๋ผ๋ ๋ง์ธ๊ฐ ๋ง๋ผ๋ ๊ฒ์ธ๊ฐ) .์ด๋ฏธ ์ค๋๋์ ๋ฎ์ ์ฐ์ ์์(15)์ ์ฌ์ฉํด ์จ RTOS ํฑ ์ธํฐ๋ฝํธ์ ์ฐ์ ์์๋ฅผ ์ ๋ฐ๋์ ๋ ผ๋ฆฌ์ธ ๋์ ์ฐ์ ์์(0)๋ก ๋ฐ๊พธ๋ ค๋ฉด ๋ณด๋ค ๊ฐ๋ ฅํ ๋ถ๋ช ํ ์ด์ ๊ฐ ์์ด์ผ ํ๊ฒ ์ต๋๋ค.์ฐ์ ์์๊ฐ ๋์์ผ ํ๋ค๋ ์ฃผ์ฅ์ถ์ฒ: https://shpp.freertos.org/FreeRTOS_Support_Forum_Archive/January_2016/freertos_SysTick_interrupt_priority_99f02a87j.html๊ทธ๋ค์ ์ฃผ์ฅ์ ์ด๋ ์ต๋๋ค. 1์ด์ 1000๋ฒ ๋น ๋ฅธ ์๋?๋ก ๋ฐ์ํ๋ ํ์ด๋จธ ์ธํฐ๋ฝํธ๊ฐ ๋ค๋ฅธ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ์ ๊ฒฝ์ฐ ์ธํฐ๋ฝํธ๋ฅผ ๋์น ์ ์๋ ์ํ์ผ๋ก์ธํด ์๊ฐ ๋ฒ ์ด์ค์ ์ค์ฐจ๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ฐ์ ์์๋ฅผ ๋์ฌ์ ์ด ๋ฌธ์ ๋ฅผ ์๋ฐฉํ ํ์๊ฐ ์๋ค.ํ์ง๋ง,FREERTOS ์ ์์์ ๋ง์ดํฌ๋ก์จ ์ค์์ค์ ์ ์์์ธ ๋ฆฌ์ฒ๋๋ฒ ๋ฆฌ์ ์์ ์ด ๋ผ๋ธ๋ก์ ๋ชจ๋ OS ์ฉ ํ์ด๋จธ ํฑ ์ธํฐ๋ฝํธ์ ์ฐ์ ์์๋ ์คํ๋ ค ๋ฎ์์ผ ํ๋ค๊ณ ๋งํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ์ ์ด๋ค์ ๋ ผ๋ฆฌ๊ฐ ๋ ํ ์์ด๋ณด์ ๋๋ค. ํ๋ฒ ์์ ์ด์ ์ค๋์ ๊ธ์ ํจ๊ป ๋ณด์์ฃ .์ฐ์ ์์๊ฐ ๋ฎ์์ผ ํ๋ค๋ ์ฃผ์ฅ(์ฌ์ง)์ถ์ฒ: https://www.iar.com/knowledge/learn/programming/6-misconceptions-about-the-rtos-tick๋ง๋ฌด๋ฆฌ ๊ฒฐ๋ก ์ ๋๋ค.SysTick ์ฐ์ ์์ ์ค์ ์ ์ ๋ต์ด ์๋ ๋ฌธ์ ๊ฐ ์๋๋ผ, ์ฌ์ฉํ๋ RTOS์ ํน์ฑ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ ๊ฐ์ง ์ฃผ์ฅ์ ์ฐธ๊ณ ํ๋, ์์ ์ ํ๋ก์ ํธ์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ํ๋จํด์ผ ํฉ๋๋ค.RTOS ์ ์์๋ค์ ๊ถ๊ณ (FreeRTOS, ฮผC/OS ์ ์์)๋ ์ค๋ ํ์ฅ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ํ์์ผ๋ฏ๋ก ์ด๋ฅผ ์ ๋ขฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ST์ ๋ฌธ์๋ฅผ ํตํด ์ ์๋ ๋ฐฉ์ ์ญ์ ํน์ ์์ฉ ์ฌ๋ก์ ์ ํจํ ์ ์์ต๋๋ค.
- 1
- 2
- 122