STM32 , UART 통신으로 피아노 연주하기 , PWM Frequency 제어 ( Passive Buzzer )
STM32F429 보드와 수동부저를 사용하여 멜로디를 연주해 보았다. 인터럽트 방식 UART 통신으로 시리얼 모니터에 숫자를 입력하는 해당하는 음계가 연주된다. 회로와 timer 설정은 지난번에 올린글과 동일하다. 거기서 uart3 설정만 켰다. 2022.05.27 - [MCU/STM32 (ARM Cortex-M)] - STM32 , PWM 주기 변경으로 수동 부저 ( Passive Buzzer ) 제어 , 실시간으로 ARR 변경시 동작 멈추는 현상 해결 , 멜로디 출력 소스코드 전역변수 구간 /* USER CODE BEGIN PV */ typedef enum { N = 0, C = 956, D = 852, E = 758, F = 716, G = 638, A = 568, B = 506, C6 = 478 ..
2022. 5. 27.
STM32 , 디지털 금고 프로그래밍으로 구현 ( 시프트 레지스터 응용 )
시프트 레지스터를 응용한 디지털 금고를 프로그래밍으로 구현하였습니다. 올바른 비밀번호인 3190을 순서대로 입력하면 LED가 오른쪽 왼쪽으로 번갈아 이동하면서 켜지고, 틀린 번호를 입력하면 LED가 깜빡이면서 초기화 되서 다시 입력해야 합니다. 버튼 3, 1, 9, 0 은 PG0-3 과 연결해두었고 버튼 2, 4, 5, 6, 7, 8 은 PC7-12 와 연결해두었다. LED는 PD0-5 이다. D 플립플롭은 입력과 출력이 버퍼와 마찬가지이다. 시프트 레지스터라서 처음 입력이 1으로 고정이고 각 플립플롭의 출력 Qa, Qb, Qc, Qd의 값은 0으로 초기화된 상태에서 시작하기 때문에 올바른 순서대로 클락펄스를 주어야 비트 1이 이동한다. 소스코드 /* USER CODE BEGIN PFP */ void J..
2022. 5. 24.
STM32 레지스터 직접 접근해서 LED를 이용한 카운터, 7 segment FND 출력 제어하기
먼저 PC8, 9, 10, 11 핀을 output 모드로 사용해 0x0-0xF 까지의 카운터를 구현하였고, PD0, 1, 2, 3, 4, 5, 6 핀을 output 모드로 사용해 FND에 0-9까지의 숫자를 출력하였다. 참고로 핀을 선택할때 내가 한 것처럼 이어진 핀을 선택해야 나중에 코드짜기가 쉽다. 그리고 아무리 MODER 에 원하는 값을 대입해도 현재 해당 GPIOx 핀이 MX 툴에서 활성화된게 아무것도 없으면 모드 설정이 안되더라.. 아마 MX_GPIO_Init(); 함수 내에 설정이 안되서 그런거 같은데 MODER은 MX툴 쓰는게 편한거 같다. unsigned char 배열을 사용해 0x0부터 0xF까지의 숫자를 미리 넣어주었다. /* USER CODE BEGIN 2 */ GPIOC->MODER..
2022. 5. 19.