ARM(11)
-
[Project] 블루투스 알람시계_0 구상
1. 시계가 작동하면 flash 메모리를 읽는다. flash 메모리에 key 값이 있다면 저장된 시간과 설정 값을 불러온다. 만약 없다면... flash 메모리에 초기값을 설정하고, 그 초기값으로 시간을 셋팅한다. 2. lcd_dispaly_number 변수를 만들어서 변수 값에 맞게 디스플레이를 변화시킬예정이다. lcd_dispaly_number = 0; // 시간 표시 lcd_dispaly_number = 1; // 시간 설정 lcd_dispaly_number = 2; // 알람 설정 lcd_dispaly_number = 3; // 멜로디 설정 lcd_dispaly_number 변수는 오직 HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) () 함수에서만 변경된다. < Nuc..
2022.07.22 -
[ARM] 블루투스 알람시계_2 [EXTI / UART]
Nucleo 보드의 유저 버튼에 외부인터럽트를 적용하여 사용할 생각이다. 생각중인 알람시계는 LCD에서 출력해야 할 부분은 3가지가 있다. 각 부분은 지연변수(flag)를 만들어서 값에 따라 LCD 화면에 표시되게 할 생각이다. flag 1. 시간 표시 flag 2. 시간 셋팅 flag 3. 알람 설정 또한 2,3번은 화면에 출력된 정보가 1번 화면으로 적용되게 해야한다. 따라서 Nucleo 보드의 유저 버튼이 짧게 클릭이 되면 flag값을 변경시키고 길게 클릭이 되면 LCD 화면에 출력된 정보가 저장되게 할 생각이다. #define LONG_CLICK_MIN 700 typedef struct { int time; uint8_t level; } ClickInfoDef; uint8_t flag; uint8..
2022.07.20 -
[ARM] 블루투스 알람시계_1 [IOC 설정]
STM32F429ZI와 STM32CubeIDE 를 이용해서 블루투스 알람시계를 제작하려고 한다. 먼저 해당글에서는 IOC 설정만 작성하였다. 1. RCC 설정 2. SYS 설정 3. RTC 설정 4. Clock Configuration 5. Code Generator 6. USART3 USART3 은 블루투스 통신에 사용할 예정이다. 사진의 Baud Rate는 115200 Bits/s 인데 사용할 블루투스 모듈 Baud Rate가 9600 Bits/s 이기 때문에 바꿔줘야한다. 7. EXTI (외부 인터럽트) GPIO_PIN_PC13 8. TIM3 9. ADC 설정 10. I2C : LCD판과 STM32 보드는 I2C를 이용해 통신한다. Pull-up 설정을 꼭 해줘야한다. 11. PWM : PWM 제어..
2022.07.20 -
[STM32] 가변 저항으로 ADC 값 조절하기
처음 폴링모드를 이용해서 가변 저항을 측정하려고 했는데 ADC 값이 4000정도에서 변화가 없었다. 인터럽트 사용 후 원하는 동작을 하였다. /* USER CODE BEGIN 0 */ int __io_putchar(int ch) { HAL_UART_Transmit(&huart3, (uint8_t*)&ch, 1, 10); return ch; } int ADC_value = 0; /* USER CODE END 0 */ /* USER CODE BEGIN 2 */ HAL_ADC_Start_IT(&hadc1); /* USER CODE END 2 */ /* USER CODE BEGIN 4 */ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { if(hadc->In..
2022.07.13 -
[ARM] I2C를 이용한 LCD 화면 출력하기
I2C1을 이용해서 통신을 할 생각이다. STM32F429ZI 데이터 시트를 보면 CN7번파트에 PB8, PB9를 I2C 통신핀으로 사용할 수 있어 보인다. I2C 버스는 SDA, SCL 라인이 Vdd 전원과 pull - up 저항으로 연결되어 있기 때문에 GPIO 에서 설정해줘야한다. PB8, PB9 모두 설정해주었다. 이렇게하면 ioc 설정은 완료 된다. LCD 화면에 원하는 문자를 출력하기 위해서는 아래의 주소에서 코드를 이용하면 할 수 있다. afiskon/stm32-i2c-lcd-1602: STM32: LCD 1602 w/ I2C adapter usage example (github.com)
2022.06.19 -
[ARM] I2C 통신
[I2C 버스 프로토콜] 마스터와 슬레이브의 역활을 나누어 통신을 한다. 하나의 마스터에 여러 개의 슬레이브가 연결되어있는데 통신은 1대 1로 이루어진다. 마스터는 데이터라인(SDA)과 클락라인(SCL) 2가지를 이용하여 슬레이브와 통신한다. HIGH신호로 대기중인 두 신호 중 데이터라인을 먼저 LOW로 떨어트린 후 약간의 시간 후에 클락 라인도 LOW신호로 떨어트린다. 위 동작은 연결된 모든 슬레이브로 전송되는데 슬레이브에서는 위의 동작을 통신 시작으로 받아 드린다. 이후 슬레이브는 전송 받은 슬레이브 주소에 따라 각각 통신을 유지 할지 결정한다. 전송 받은 주소 값에 맞는 슬레이브가 1대 1로 계속 통신을 하게 된다. 통신의 종료 신호는 클락라인에서 먼저 하이를 유지한후 일정 시간 후 데이터라인도 하..
2022.06.14