F๐Ÿ’ปW/์˜ค๋Š˜์˜ ๋””๋ฒ„๊น…

ST๋กœ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ

์ฒœ์ˆญ์ด 2023. 6. 8. 15:56

์‚ฌ์šฉ MCU : STM32F100C6T6B

 

CubeMX๋กœ ํ•€์„ ์„ค์ •ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ.

 

IAR๋กœ ๋””๋ฒ„๊น…

 

Datasheet:

STM32F100xB.pdf
1.74MB


1. CubeMX๋กœ ํ•€ ์„ธํŒ…

ํ•€ ์ด๋ฆ„์€ ๊ณต๊ฐœ ๋ชปํ•ด!

 

1-1. TIM ์„ค์ •

Trigger Mode , ITR0, Internal Clock

TIM2๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ณ  ๋‚ด๋ถ€ํด๋Ÿญ์„ ์‚ฌ์šฉ, ํŠธ๋ฆฌ๊ฑฐ ๋ ๋•Œ ITR0 ์ธํ„ฐ๋ŸฝํŠธ ์‚ฌ์šฉ

 

1-2. TIM ์ธํ„ฐ๋ŸฝํŠธ Enabled

 

1-3. TIM prescaler, counter period ์กฐ์ •

mcu ๋ฐ์ดํ„ฐ ์‹œํŠธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด "24 MHz maximum frequency ...." ๋ผ๊ณ  ์จ์žˆ๋‹ค.

Prescaler๋Š” (24-1)๊ฐ’์œผ๋กœ ์„ค์ •.

Counter Period๋Š” 1์ดˆ๋กœ ์„ค์ •ํ•ด์คŒ

 

 

1-4. SPI

mcu์™€ ์Šฌ๋ ˆ์ด๋ธŒ์นฉ์€ SPIํ†ต์‹ ์„ ํ•œ๋‹ค. 

Full-Duplex Master mode๋กœ ์„ค์ •ํ•˜๊ณ  NSS๋Š” ์„ค์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์Šฌ๋ ˆ์ด๋ธŒ์นฉ์—์„œ NSS๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ.

** ์—ฌ๊ธฐ์„œ SPI Prescaler๋Š” Baud Rate๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. (Prescaler๋ฅผ ์กฐ์ •ํ•˜๋ฉด Baud rate๊ฐ€ ์•Œ์•„์„œ ๋งž์ถฐ์ง)

์Šฌ๋ ˆ์ด๋ธŒ์นฉ์ด ๋ณดํ†ต 2Mbits์˜ Baud Rate๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— ๊ทธ ์–ธ์ €๋ฆฌ๋ฅผ ๋งž์ถฐ์ค€๋‹ค.

 

 

1-5. UART ์„ค์ •

๋น„๋™๊ธฐ ๋ชจ๋“œ๋กœ ์„ค์ •.

SPIํ†ต์‹ ์€ ์นฉ๋ผ๋ฆฌ์˜ ์„ค์ •์„ ์œ„ํ•ด์„œ๋ผ๋ฉด, UART๋Š” ์‚ฌ์šฉ์ž์™€ ํ•˜๋“œ์›จ์–ด๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์„ค์ •ํ•œ๋‹ค.

 

 

1-6. UART ์ธํ„ฐ๋ŸฝํŠธ ์„ค์ •

 

 

1-7. RCC ์„ค์ •

์ฃผ๋ณ€์žฅ์น˜์— ๋“ค์–ด๊ฐ€๋Š” ํด๋Ÿญ์„ ์œ„ํ•œ ์„ค์ •

 

 

1-8. SYS ์„ค์ •

Serial Wire๋กœ ๋””๋ฒ„๊น…ํ•œ๋‹ค๋Š” ์„ค์ •

 

 

1-9. Clock Configuration์—์„œ HCK๋ฅผ 24๋กœ ๋งž์ถฐ์ฃผ๊ณ , 

 

1-10. Project Manager์—์„œ Min version์€ V8๋กœ ์ƒ์„ฑ.

(์ตœ์‹ ๋ฒ„์ „์œผ๋กœ ์ƒ์„ฑํ•ด๋ณด๊ณ  ์—๋Ÿฌ๊ฐ€ ๋งŽ์ด ๋œจ๋ฉด V8๋กœ ๋‚ฎ์ถฐ์„œ ๋‹ค์‹œ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ)

 

 

GENERATE CODE ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด์„œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ !


๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ์ ํŠธ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์„ค์ •ํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ ํ•ด์ฃผ๊ธฐ.

๊ธฐ๋ณธ ์ƒ์„ฑ๋œ ์ฝ”๋“œ๋„ ์กฐ๊ธˆ ์ˆ˜์ •ํ•ด์•ผ ํ•จ!

 

 

2-1. ์ œ์ผ ๋งŒ๋งŒํ•œ LED ํ…Œ์ŠคํŠธ

HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);

HAL_Delay(500);

๋ฉ”์ธ๋ฌธ์— ์ด ๋‘ ์ค„ ๋„ฃ์–ด์ฃผ๊ณ  0.5์ดˆ๋งˆ๋‹ค ๊นœ๋นก์ด๋Š”์ง€ ์ฒดํฌ

 

 

2-2. ํƒ€์ด๋จธ ํ…Œ์ŠคํŠธ

ํƒ€์ด๋จธ๋Š” ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.

HAL_TIM_Base_Start_IT ํ•จ์ˆ˜์—์„œ #if ~ #endif ์˜์—ญ์„ ์ฃผ์„ํ•ด์•ผ ํ•œ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ฃผ์„ํ•˜์ง€ ์•Š์œผ๋ฉด ์—ฌ๊ธฐ์„œ ๋น ์ ธ๋ฒ„๋ ค ๋‚ด๋ถ€์˜ ํƒ€์ด๋จธ ENABLE ํ•จ์ˆ˜๊นŒ์ง€ ์‹คํ–‰์ด ์•ˆ๋จ. 

๋”ฐ๋ผ์„œ ์ฃผ์„์ฒ˜๋ฆฌ ํ•ด์ฃผ๊ณ , ๋ฐ˜ํ™˜ ์ง์ „์— ํ•œ ์ค„ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ.

HAL_TIM_Base_Start_IT ํ•จ์ˆ˜๋ฅผ ํƒ€์ด๋จธ INIT ํ•จ์ˆ˜ ํ•˜๋‹จ์— ๋„ฃ์–ด์ฃผ๊ธฐ.

TIM2_Init ํ•จ์ˆ˜ ํ•˜๋‹จ์— ์ž‘์„ฑํ•ด์คŒ

 

 

__weak๋กœ ์„ ์–ธ๋œ HAL_TIM_PeriodElapsedCallback ํ•จ์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ด์„œ ์ผ์ • ๊ฐ„๊ฒฉ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค. (์•„๋งˆ๋„ 1msec ๋งˆ๋‹ค ์‹คํ–‰๋ ๋ผ๋‚˜,,?)

์ „์—ญ์œผ๋กœ ์„ ์–ธํ•œ TIM2_CNT๊ฐ€ ์นด์šดํŠธ์—…๋œ๋‹ค.

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim -> Instance == TIM2) {
    TIM2_CNT+=1;
  }
}

์นด์šดํŠธ์—…๋˜๋Š” TIM2_CNT ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด LED๋ฅผ ์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค ๊นœ๋นก์ด๋Š” ๋™์ž‘์„ ์ž‘์„ฑํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค.

 

 

main ํ•จ์ˆ˜์˜ while๋ฌธ ๋‚ด๋ถ€์— ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์จ์ฃผ๋ฉด, LED๊ฐ€ 1์ดˆ์— ๋‹ค์„ฏ๋ฒˆ ๊นœ๋นก์ธ๋‹ค.

  while (1)
  {
    /* USER CODE END WHILE */
    if (TIM2_CNT >= 100){
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
      TIM2_CNT = 0;
  }

 

 

2-3. UART ํ…Œ์ŠคํŠธ

HAL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” UART ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ• ๊ฒ๋‹ˆ๋‹ค~

์ฐธ๊ณ ๋กœ ์„ธ๋ฒˆ์งธ ํŒŒ๋ผ๋ฉ”ํ„ฐ๋Š” ์ „๋‹ฌํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ธธ์ด๋กœ ๊ทธ๋ƒฅ ๋Œ€๊ฐ• 20์ •๋„๋กœ ์žก์•˜๊ณ ,

๋„ค๋ฒˆ์งธ ํŒŒ๋ผ๋ฉ”ํ„ฐ๋Š” Timeout ๋ณ€์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„๋•Œ ๋Œ€๊ธฐ์‹œ๊ฐ„์ธ ๊ฒƒ ๊ฐ™๋‹ค.

for(uint8_t i=0;i<10;i++)  
   HAL_UART_Transmit(&huart1, " 1000 10000 soong \r\n", 20, 5);

์ฒœ ๋งŒ ์ˆญ์„ ์—ด๋ฒˆ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•ด๋ณด๊ฒ ์ˆญ. 

 

Docklight ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ™•์ธํ•œ ๊ฒฐ๊ณผ.

 

 

3. ๋ฒ„ํผ ํ…Œ์ŠคํŠธ

uint8_t  FIFO_TEST_BUFF[256]; ์ฒ˜๋Ÿผ ๋ฒ„ํผ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๊ณ ,  for๋ฌธ์œผ๋กœ ๋ฒ„ํผ์— ๊ฝ‰ ์ฑ„์›Œ์„œ ๋‹ด์•„์ฃผ์ž.

๊ทธ๋Ÿฐ ๋‹ค์Œ UART ํ†ต์‹ ์œผ๋กœ ์ถœ๋ ฅํ•˜๋ฉด์„œ ๋ฒ„ํผ ๋‚ด๋ถ€๋ฅผ ํ™•์ธํ•ด์ฃผ๋ฉด ๋ฒ„ํผ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ!

'F๐Ÿ’ปW > ์˜ค๋Š˜์˜ ๋””๋ฒ„๊น…' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[SILAB] Simplicity Studio ๋ชจ๋“ˆ์— Write ์•ˆ๋  ๋•Œ  (0) 2023.06.26
I2C ํ…Œ์ŠคํŠธ  (0) 2023.06.15