본문 바로가기
  • SpokeHouse
728x90
728x90

STM329

GetTick 함수 활용 - Non blocking Delay 안녕하세요 스포크하우스 오토입니다.이번시간에는 시스템 Tick을 활용하여 시스템을 Non blocking  하면서 딜레이처럼 사용할 수 있는 타이머? 딜레이? 를 포스팅하겠습니다.지난번 GPIO 컨트롤을 활용하여 LED를 on/off하였는데 그걸 활용하여 실습하겠습니다.2024.04.24 - [STM32/STM32C] - STM32C031 - GPIO control STM32C031 - GPIO control안녕하세요 (주)스포크하우스 오토입니다.이번에는 STM32C031 사용하여 GPIO 컨트롤 하는 방법에 대해 포스팅해보겠습니다.앞으로 ADC, PWM, i2c, spi 등 mcu 관련 포스팅을 전체적으로 진행해보겠습니다spokehouse.tistory.com못보신분들은 위에 포스팅 참고해주시면 될것같.. 2024. 4. 29.
STM32C031 - GPIO control 안녕하세요 (주)스포크하우스 오토입니다.이번에는 STM32C031 사용하여 GPIO 컨트롤 하는 방법에 대해 포스팅해보겠습니다.앞으로 ADC, PWM, i2c, spi 등 mcu 관련 포스팅을 전체적으로 진행해보겠습니다.대망의 첫 MCU 포스팅을 시작하겠습니다.먼저 GPIO란 다용도 입출력이라는 의미를 가지고 있습니다. general-purpose input/output 의 약자가 되겠습니다.전압레벨을 High, Low 로 세팅해주면서 다양한 기능을 할 수 있는 것이죠첫시간이니 만큼 GPIO를 High, Low, Toggle 시키는 방법에 대해서 포스팅하겠습니다.먼저 저는 STM32CubeMX를 사용하여 코드를 생성한다음 VSCode로 코드작성 및 디버깅을 진행하고 있는점 참고해주세요VSC.. 2024. 4. 24.
STM32F103 - I2C로 센서 데이터 읽어오기-조도센서 BH1750 안녕하세요 오토입니다. 이번 메모 포스팅은 STM32F103 과 I2C를 사용하여 조도센서 BH1750 의 데이터를 확보하는 메모입니다. 일단 항상 마찬가지로 IDE 세팅 해줍니다. 인터럽트 켜주구요 GPIO까지 세팅해주고 나면 끝납니다. 다음으로는 관련 헤더파일과 소스파일 생성해주고 코드 넣어줍니다. 헤더파일. #ifndef INC_BH1750_H_ #define INC_BH1750_H_ //Device Address //Please note that arduino uses 7 bit addresses, STM32 uses 8 #define BH1750_NO_GROUND_ADDR_WRITE (0xB9 + 0) #define BH1750_NO_GROUND_ADDR_READ (0xB9 + 1) #defin.. 2023. 12. 16.
STM32F103 - ADC DMA 읽어오기 안녕하세요 오토입니다. 이번 메모 포스팅은 STM32F103에서 ADC 값을 DMA로 읽어오는 방법에 대해 메모하고자합니다. 간단한 제품의 경우 POLLING 방식으로 계속 데이터를 확보하면 되는데 현재 진행중인 제품은 무선통신이 우선적으로 동작하여 신뢰성을 확보하여야 하기 때문에 프로세서의 부담을 줄이고자 DMA로 데이터를 확보하기로 하고 진행하였다. 먼저 IDE에서 파라미터들 세팅해준다 인터럽트도 일단 켜주고 다음으로 DMA REQUEST 추가 해준다 클럭도 이렇게 세팅해주고 코드를 제네레이션 해주면 일단 세팅은 마무리된다 지금 하고있는 작업은 전류센서의 데이터를 확보하기 위함이며, ACS712 제품이다. 관련 소스 파일 및 헤더파일 생성해주고 헤더파일. #ifndef INC_ADCACS712CURR.. 2023. 12. 9.
STM32F103 - TIMER 인터럽트 만들기 안녕하세요 오토입니다. 이번 메모 포스팅은 간단한 TIMER 만들기 메모입니다. 타이머 하나 살리구요 클럭소스는 internal Clock으로 하겠습니다. 파라메터들 세팅 해주시구요 저는 지금 1set 만들려고해요 참고하시고 prescaler는 mcu마다 최대로 쓰는 internal Clock이 다르니까 잘보시고 하시면됩니다. 인터럽드 걸려야되니까 체크해주구요 HAL_TIM_Base_Start_IT(&htim3);//sub timer 1sec 스타트 때려주시고 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == htim3.Instance) { ms_count++; if(ms_count >= 1000) { m.. 2023. 12. 2.
STM32F103 - UART DMA로 문자열 한번에 받기 안녕하세요 오토입니다. 통신 모듈이나 기타 인터페이스에서 문자열이 정해진 프로토콜이 아닌 길이가 변경되서 들어오면 일반 HAL 드라이버에서 리시브로는 잘안되고 너무 복잡스런 상황이 생깁니다. 하나씩 받아서 링퍼버 만든거에 넣고 링버퍼 확인해서 꺼내오고 초기화 해주고 해봤는데... 항상 느끼지만 복잡하면 실수와 버그가 늘고.. 하다가 머리털 다빠질것같아 여기저기 뒤적거리다가 괜찮을것 같은 소스 땡겨다가 수정좀 했더니 잘돌아가서 메모 합니다 일단 UART2 DMA로 사용할거고 세팅 해줍니다. 통신 모듈이 BAUD RATE가 9600이라 맞춰주고 DMA 챕터? 카테고리? 에서 ADD 해줍니다. 인터럽트 켜주시고 저장하고 코드 제네레이션 해줍니다. 메인에서 UART2 이니셜 되었는지 확인해주고 다음으로 넘어갑니.. 2023. 11. 25.
728x90
728x90