728x90

Semiconductor, Embedded/1. STM32, Arduino 30

STM32 - 알람 시계 구현하기 (1) (시간, 알람 띄우기)

이번 글에서는 알람 시계를 가장 기본 단계에서 구현할 것이다.1. 지정한 날짜, 시간을 기준으로 시계가 동작하고2. 알람으로 설정한 시간에 Alarm이 울렸다는 화면을 띄우는 작업을 할 것이다. https://insoobaik.tistory.com/638  STM32 - I2C를 이용한 LCD 문자 출력 (함수 분석)https://insoobaik.tistory.com/624 STM32 - LCD 문자 출력 (I2C)https://insoobaik.tistory.com/626 STM32 - I2C 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comI2C 이론에 이어 I2Cinsoobaik.tistory.comI2C에 대한 함수 분석은 위 글을 참고한다..

STM32 - I2C를 이용한 LCD 문자 출력 (함수 분석)

https://insoobaik.tistory.com/624 STM32 - LCD 문자 출력 (I2C)https://insoobaik.tistory.com/626 STM32 - I2C 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comI2C 이론에 이어 I2C 통신을 이용하여 LCD에 문자를 출력해볼 것이다.LCDinsoobaik.tistory.com이전에 LCD에 I2C를 이용하여 문자를 출력했었는데, LCD를 출력하기까지 함수를 제대로 파악하지 않고 사용했다.이번 글은 LCD를 사용하기 위한 함수에 대해 자세히 알아보기 위해 LCD 관련 DataSheet와 함수에 대해 파악해보려 한다. LCD 관련 코드#include "lcd.h"extern I2..

STM32 - OC (Output Capture)

OC (Output Capture)출력 비교 모드는 카운터(CNT)의 출력값이 캡쳐/비교기에 설정된 비교값(CCRx)과 일치할 때 인터럽트나 (CCxl)나 해당 핀에 출력(OCx)이 발생하는 모드다.이전 PWM의 경우 TIM의 PSC의 값과 ARR값에 의해 타이머의 주기가 정해지고, CCR 값에 의해 Duty ratio를 통해 PWM가 정해지는 것을 알게되었다.OC (Output Compare) 또한 마찬가지로 PSC와 ARR에 의해  타이머의 주기가 정해지고 CCR의 값에 의해 비교가 발생한다.위 DataSheet를 보게되면 CCR의 값이 003A로 설정되어 있을 경우 CNT가 003A를 만나게되면 OC1의 출력 값이 반전되고, 중간에 CCR의 값이 B201로 바뀌게 되면 CNT가 B201을 만나게 되..

STM32 - RTC (Real Time Clock), Alarm을 통한 시간 및 알람 출력

RTC (Real Time Clock)RTC는 기본적으로 초고속 클럭이 필요하지 않기 때문에 LSE를 사용한다.  STM32는 RCC(Reset and Clock Control)를 통해 HSI, HSE, LSI, LSE를 설정하게 된다.HSE는 MCO 즉, ST-Link로부터 클럭을 전달 받고, LSE의 경우 Nucleo 보드에 장착된 크리스탈에 의해 클럭 신호가 생성된다.Clock Configuration을 보게 되면 LSE는 32.768KHz를 사용중이다. STM32 RTC는 Clock Source 외에도 Alarm 용도로 사용 가능하다.RTC의 Parameter Settings를 보게되면 기본적으로 시간과 관련된 Parameter를 확인 가능하다. 시간 포맷을 정함과 동시에 Asynchronous ..

STM32 - PWM를 이용한 모터 제어 및 부저를 이용한 멜로디 생성

PWM(Pulse Width Modulation) 출력의 주파수는 Auto Reload 값(ARR)에 결정되며 duty ratio는 Capture Compare(CCR)값에 의해 결정된다. PWM 출력 발생 모드는 Mode 1, Mode 2에 따라 구분된다.Mode 1Up Counting일 때 Count 값이 CCR보다 작으면 1을 Count값이 CCR보다 같거나 크면 0을 출력한다.Mode 2Up Counting일 때 Count 값이 CCR보다 작으면 0을 Count값이 CCR보다 같거나 크면 1을 출력한다. ARR(Auto-Reload Register)ARR은 주기적인 PWM 신호의 주기를 설정하는 레지스터다. 주로 타이머의 설정 중 하나다.주기 = Timer Clock 속도 / (ARR 값 + 1)..

HAL 함수 모음 (GPIO, EXTI, UART, ADC, DAC, TIM...)

기본HAL_PPP_Process()인터럽트 모드에서 프로세서를 시작하는 함수사용자의 코드에서 이 함수를 호출하면 프로세스가 인터럽트 모드에서 시작 HAL_PPP_IRQHandler()PPP 주변장치의 인터럽트 핸들러인터럽트 모드에서 프로세스를 시작하기 전에 stm32f4xx_it.c 파일에서 해당되는 인터럽트 핸들러가 코딩되어 있어야함. __weak HAL_PPP_ProcessCpltCallback()작업 완료시 호출되는 콜백 함수콜백 함수는 드라이버 내에서 약함 함수(weak function)으로 선언되어 있음사용자가 유저 작성 코드 내에서 콜백 함수를 다시 선언하는 것이 가능즉, 사용자가 콜백 함수 내에 원하는 작업을 코딩하여 작성하는 것이 가능 __weak HAL_PPP_ProcessErrorCal..

Clock Configuration, UART 글자 깨짐 현상 해결 방법

MPU/MCU Select를 통해 생성했을 때 Board Select을 했을 때 문제가 없었던 UART 통신에서 문자가 깨지는 현상이 발생하였다. 문제점UART를 통해 Console 창에 문자는 출력되지만 문자가 깨져서 나오는 상황 처음 문제가 발생했을 때 생각한 원인들은 이랬다.1. 인코딩이 잘못되고 있다.2. baud rate가 맞지 않아서 글자 깨짐3. 그 외 Port가 잘못되거나 ST-Link와의 통신에서 문제가 있을 것이다. 1. 에 대한 해결책으로 인코딩과 관련된 모든 설정을 변경해보았지만 결과가 같았다.3. 에 대한 해결책으로 USART 1,2,3 등 많은 USART 포트를 사용해봤지만 결과가 동일했다. 2. 에 대한 해결책으로일반적으로 우측 부분에 관한 Clock만 생각했기 때문에 우측 부..

STM32 - Clock, Timer 구현 (SysTick, Timer 사용)

https://insoobaik.tistory.com/631 STM32 - TIM 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comTIM 이론에 이어 실제로 TIM을 Necleo board에 구현해 볼 것이다.LSE, LSI, HSI, HSE 총 4개가 있는데 일반적으로 External 즉, 크리스탈을 이용하여 생성된 클럭이 안전하다.RTC의 경우에도 LSE를 사용한다.STM32F429의 경우 HSE는 ST-Link 파트에 붙어있는 MCO로부터 클럭을 받아 사용하게 된다. Clock Configuration을 통해 설정이 가능하며, DataSheet를 통해 각 타이머가 사용하는 APB도 알 수 있다.각 타이머는 위 DataSheet와 같이 동작하게 ..

STM32 - TIM 이론

STM32F429의 Clock은 최대 180MHz 속도로 동작할 수 있다. 단 동작 속도가 빠르면 전력 소모가 많기 때문에 전력 소모를 고려하여 최대 속도로 동작 시킬 필요가 없다. STM32F429Nucleo Board는 내부에 16MHz의 CPU clock과 32KHz의 RTC(Real Time Clock)가 있다.CPU clock은 HSE, HSI 중 하나를 선택할 수 있고 초단위 시간을 측정하는 RTC LSE, LSI 중 하나를 선택 가능하다.HSE : High Speed ExternalHSI : High Speed InternalLSE : Low Speed External (32.768KHz)LSI : Low Speed Internal (32KHz) RTC clock에 해당하는 LSE 32.76..

STM32 - LCD 문자 출력 (I2C)

https://insoobaik.tistory.com/626 STM32 - I2C 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comI2C 이론에 이어 I2C 통신을 이용하여 LCD에 문자를 출력해볼 것이다.LCD에 문자를 출력하기 위해 아두이노 LCM1602 IIC 쉴드를 사용할 것이다. 해당 쉴드에는 PCF8574가 내장되어 있다.PCF8574는 I2C 통신 프로토콜을 이용하여 데이터를 주고 받는다. Slave 주소를 정하는 7bit는 앞에 0100은 고정이며 A0, A1, A2에 의해 Slave가 정해진다.슬레이브 주소를 정하는 A0, A1, A2의 경우 Pull Up 저항이 달려있기 때문에 A0, A1, A2에는 1의 값이 전달된다.코드를 생성..

728x90