embeded/Cortex-M3 STM2025. 6. 18. 11:11

실수로 자동으로 물어보는걸 꺼버렸더니.. 귀찮아졌다.

일단 ioc 수정 후, 저장, 우클릭 generate code

 

근데 상단에 톱니바퀴가 동일한 기능..

 

[링크 : https://blog.naver.com/chandong83/222863872771]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 uart tx dma  (0) 2025.06.18
stm32 pwm 주파수 계산  (0) 2025.06.05
stm32 timer로 gpio 토글하기  (0) 2025.06.05
stm32 pwm interrupt  (0) 2025.06.02
stm32 boot loader(shipping)  (0) 2025.05.13
Posted by 구차니
embeded/Cortex-M3 STM2025. 6. 18. 11:09

stm32 에서 uart tx를 dma로 구현하기

 

connectivity - usart 에서

DMA Settings에서 Add

 

TX를 DMA로 할거니까 USART1_TX를 선택

 

uart니까 우선순위가 높을 이유도 없으니 그냥 기본으로 하고, 바이트 단위로 증가가 기본 설정으로 잡힌다.

 

DMA 인터럽트와 usart 인터럽트를 활성화 하고

 

보내는 함수 자체는 별로 차이가 없긴한데,

_DMA가 붙은 녀석을 이용해서 버퍼가 차면 비울만큼 전송하도록 명령을 보내고

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)

 

TX 완료시에는 인터럽트가 뜨도록 해서 추가로 전송할지 정도만 구현하면 된다.

void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
}

 

[링크  https://blog.naver.com/chandong83/222863872771]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 cubeide ioc gen  (0) 2025.06.18
stm32 pwm 주파수 계산  (0) 2025.06.05
stm32 timer로 gpio 토글하기  (0) 2025.06.05
stm32 pwm interrupt  (0) 2025.06.02
stm32 boot loader(shipping)  (0) 2025.05.13
Posted by 구차니
embeded/Cortex-M3 STM2025. 6. 5. 21:08

귀찮아서 50% duty로 하면 아래와 같이 계산하면 된다.

mcu 클럭을 기준으로 period 값을 변수로 넣어 되긴 한데...

  int mcu_clk = 8000000; // 8M Hz
  int freq_calc = mcu_clk / (freq * 10);

  TIM_OC_InitTypeDef sConfigOC = {0};
      htim3.Instance = TIM3;
      htim3.Init.Prescaler = freq_calc - 1;  // PSC - 20k
      htim3.Init.Period = 10-1; // ARR? - 4k
      sConfigOC.Pulse = 5-1;  // CCR

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 cubeide ioc gen  (0) 2025.06.18
stm32 uart tx dma  (0) 2025.06.18
stm32 timer로 gpio 토글하기  (0) 2025.06.05
stm32 pwm interrupt  (0) 2025.06.02
stm32 boot loader(shipping)  (0) 2025.05.13
Posted by 구차니
embeded/Cortex-M3 STM2025. 6. 5. 11:34

timer 가 빠르고 빈번하게 설정되는게 아니라면 큰 문제는 없는데

희한하게 gpio 함수가 무거운가 timer 에서 직접 HAL_GPIO 함수를 호출하기 보다는

플래그를 설정하고 메인루프에서 값을 보고 바꾸는 편인데 되긴하나 보...다?

 

[링크 : https://blognavercomcheetah254.tistory.com/137]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 uart tx dma  (0) 2025.06.18
stm32 pwm 주파수 계산  (0) 2025.06.05
stm32 pwm interrupt  (0) 2025.06.02
stm32 boot loader(shipping)  (0) 2025.05.13
stm32flash  (0) 2025.05.08
Posted by 구차니
embeded/Cortex-M3 STM2025. 6. 2. 17:23

그나저나 stm32f4xx_hal_tim.c 에서 내가 만든 파일의 함수를 호출하게해서

pwm이 끝나면 카운트를 갂아 원하는 횟수만큼 소리내려고 했는데

interrupt 내에서 호출한 변수가 증가만 하고 리셋되지 않는 이상한 현상이 발생

해결책은 나중에 찾아봐야겠다.

/* stm32f4xx_hal_tim.c */


void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
{
  ...중략
  /* TIM Update event */
  if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
  {
    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) !=RESET)
    {
      __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
      HAL_TIM_PeriodElapsedCallback(htim);
    }
  }
  ...중략
}

[링크 https://m.blog.naver.com/eziya76/220934409487]

 

__HAL_TIM_CLEAR_IT(&htim3, TIM_IT_UPDATE);
__HAL_TIM_ENABLE_IT(&htim3, TIM_IT_UPDATE);

void TIM3_IRQHandler(void)
{
    if (__HAL_TIM_GET_FLAG(&htim3, TIM_FLAG_UPDATE)) {
        __HAL_TIM_CLEAR_IT(&htim3, TIM_IT_UPDATE);
        // PWM 1회 출력 후 이벤트 처리
    }
}

 

쉬운 방법으로 One pulse mode도 있다

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 pwm 주파수 계산  (0) 2025.06.05
stm32 timer로 gpio 토글하기  (0) 2025.06.05
stm32 boot loader(shipping)  (0) 2025.05.13
stm32flash  (0) 2025.05.08
stm32 timer로 gpio 에 연결된 led on/off  (0) 2025.03.26
Posted by 구차니
embeded/Cortex-M3 STM2025. 5. 13. 14:03

예전에도 넣어줬던가 모르겠네

2.3.8 Boot modes
At startup, boot pins are used to select one of three boot options:
• Boot from user Flash
• Boot from system memory
• Boot from embedded SRAM
The bootloader is located in the system memory. It is used to reprogram the flash memory by using USART1. For further details, refer to AN2606, available on www.st.com.

[링크  https://www.st.com/resource/en/datasheet/cd00161566.pdf]

[링크  https://www.st.com/resource/en/application_note/an2606-stm32-microcontroller-system-memory-boot-mode-stmicroelectronics.pdf]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 timer로 gpio 토글하기  (0) 2025.06.05
stm32 pwm interrupt  (0) 2025.06.02
stm32flash  (0) 2025.05.08
stm32 timer로 gpio 에 연결된 led on/off  (0) 2025.03.26
stm32 sleep mode  (0) 2025.03.10
Posted by 구차니
embeded/Cortex-M3 STM2025. 5. 8. 17:22

리눅스 배포판에 포함된 stm32용 bootloader용 uart / i2c 업데이트 프로그램

나중에 한번 써봐야지

 

stm32flash - flashing utility for STM32 through UART or I2C

[링크  https://manpages.ubuntu.com/manpages/bionic/man1/stm32flash.1.html]

[링크  https://sourceforge.net/p/stm32flash/wiki/Home/]

 

 

 

 

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 pwm interrupt  (0) 2025.06.02
stm32 boot loader(shipping)  (0) 2025.05.13
stm32 timer로 gpio 에 연결된 led on/off  (0) 2025.03.26
stm32 sleep mode  (0) 2025.03.10
STM32 float point support 활성화시 %f 출력 NaN  (0) 2025.03.07
Posted by 구차니
embeded/Cortex-M3 STM2025. 3. 26. 15:17

pwm 에서는 안되던데 아래 함수는 되려나?

 

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    GAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); 
}

[링크 : https://www.youtube.com/watch?v=sdr0EFT2LqU]

[링크 : https://m.blog.naver.com/eziya76/220934409487]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 boot loader(shipping)  (0) 2025.05.13
stm32flash  (0) 2025.05.08
stm32 sleep mode  (0) 2025.03.10
STM32 float point support 활성화시 %f 출력 NaN  (0) 2025.03.07
STM32 timer 사용하기  (0) 2024.12.13
Posted by 구차니
embeded/Cortex-M3 STM2025. 3. 10. 12:31

클럭을 12MHz정도로 낮췄더니

sleep mode로는 전력차이가 안나고

stop mode로 가야지 좀 차이가 난다.

uA 단위로는 standby mode로 가야 할 듯?

 

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI);
HAL_ResumeTick();

[링크 : https://blog.naver.com/wararat/221024526207]

[링크 : https://blog.naver.com/eziya76/221543393453]

 

 

멀 잘못했나.. sleep() 에서는 소비전력 차이가 없고 uart 인터럽트가 작동한다.

죽은거 맞아? 그렇다고 main loop가 살아나는건 또 아닌디..

[링크 : https://controllerstech.com/low-power-modes-in-stm32/]

Posted by 구차니
embeded/Cortex-M3 STM2025. 3. 7. 15:21

하나는 값이 나오고

다른 하나는 -nan 으로 나오는데 정체가 멀까?

 

아래는 갑싱 별로 차이나지 않는데 다양하게 이상한 출력을 보여주는 중

STM32의 float point enumation 문제가 있나?

Temperature: 2999(2999) -> 2.0°C
Temperature: 2999(2999) -> 26.7°C
Temperature: 2996 -> 26.4°C
Temperature: 2996 -> -nan°C
Temperature: 2998(2998) -> -0.0°C
Temperature: 2997(2997) -> 0.0°C
Temperature: 2996(2996) -> 2681562227601498728190175138316381969682918615886529120475031854806500724778654407474920833961662

 

인터럽트내에서 출력하면 그런건가 싶기도 하고.. 원인을 모르겠다.

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 timer로 gpio 에 연결된 led on/off  (0) 2025.03.26
stm32 sleep mode  (0) 2025.03.10
STM32 timer 사용하기  (0) 2024.12.13
STM32 PWM 으로 LED 점진적으로 깜박이기  (0) 2024.12.13
stm32 gpio ext interrupt 모드  (0) 2024.11.04
Posted by 구차니