본문 바로가기
반응형

stm3288

STM32 , 74HC595 시프트 레지스터로 FND 제어하기 , 카운터 / 시계 ( SysTick 타이머 사용) 시프트 레지스터 두개로 4개의 FND를 제어할 수 있는 아두이노 호환보드를 사용하여 카운터 및 시계를 만들어 보겠습니다. 0부터 9999 까지 세는 카운터 시계, 왼쪽 두자리가 분이고 오른쪽 두자리가 초 확장보드의 회로도 직렬입력-병렬출력 시프트레지스터인 74595칩이 두 개가 달렸다. 왼쪽 칩의 SDI가 아두이노 8번핀과 연결되어 있고 Shift Clock 과 Latch Clock은 각각 7번핀 4번핀에서 두 칩에 동시에 들어간다. FND에 표시할 숫자를 결정하는 부분은 오른쪽 74595 칩이고 그 숫자를 4개중에 어디에 표시할 지는 왼쪽 74595 칩에 의해 결정된다. 예를 들어 왼쪽 74595칩의 QA, QB, QC, QD가 모두 HIGH라면 같은 숫자가 들어간다. 그리고 delay 없이 1번, 2.. 2022. 6. 2.
STM32 프로젝트 , 팩맨 게임 ( ADC in DMA mode 로 조이스틱 이용한 방향제어 , I2C LCD , Timer 인터럽트 및 PWM 사용 ) 코드는 GitHub에 공개되어 있으니 자유롭게 참고하여도 됩니다.다만, 본 프로젝트를 그대로 가져가 교육기관 프로젝트로 사용하는 것은 지양하기 바라며, 그렇게 사용할 경우에는 출처를 표기하기 바랍니다.  개인 프로젝트제작기간 : 3일보드 : STM32F429ZITool : STM32CubeIDE I2C LCD 모듈, 조이스틱, 수동부저 사용  https://github.com/joeteo/Pacman GitHub - joeteo/Pacman: STM32 Pacman game with LCD and JoystickSTM32 Pacman game with LCD and Joystick. Contribute to joeteo/Pacman development by creating an account on Gi.. 2022. 5. 31.
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 , PWM 주기 변경으로 수동 부저 ( Passive Buzzer ) 제어 , 실시간으로 ARR 변경시 동작 멈추는 현상 해결 , 멜로디 출력 일단 부저 (Buzzer)에는 수동부저 (Passive) 와 능동부저 (Active) 가 있다. 차이점은 Passive는 다리길이가 똑같고 Active 는 +쪽 다리가 더 길다. 하지말 둘 다 극성이 있어서 +라고 적힌 곳에 데이터선 그리고 다른곳에 GND를 연결해야 한다. 바닥면 생김새도 다르고 또 하나 큰 차이점은 Active Buzzer는 HIGH 신호를 공급하기만 하면 바로 소리가 난다. 반면 Passive Buzzer는 아무 소리도 안난다. 음계에 맞는 주파수를 조절해줘야 한다. 지난번 글에서는 서보모터 제어를 위해 펄스폭을 조정했었다. 한편 부저는 소리크기를 전압레벨 또는 펄스폭을 조정하거나 저항을 달아서 조절할 수 있는데 지금은 항상 같은 소리크기로 출력할 것이기 때문에 펄스폭은 50% 고정.. 2022. 5. 27.
WinMerge 텍스트 및 파일 비교 프로그램 (무료) 무료 텍스트 및 파일 비교툴 WinMerge 다운로드 링크 : https://winmerge.org/downloads/?lang=en Download WinMerge - WinMerge Download WinMerge The easiest way to install WinMerge is to download and run the Installer. Read the online manual for help using it. WinMerge 2.16.20 The current WinMerge version is 2.16.20 and was released at 2022-04-27. For detailed info on what is new, winmerge.org 설치 후 폴더 단위로 두 폴더를 선택 후 오.. 2022. 5. 27.
STM32 , UART 통신 ( 수신 ) 을 이용한 PWM 서보모터 ( SG90 ) 제어 + 펄스폭 찾아내는 팁 UART 설정 USART3을 비동기식으로 켜준다. Parameter는 디폴트로 놔두고 폴링방식을 사용할거면 NVIC 세팅을 켜주지 않아도 된다. 만약 MCU/MPU Selector로 시작했다면 보드매뉴얼을 보고 핀도 제대로 잡아주어야 한다. Timer 설정 클락설정은 아래와 같다. Timer 의 클락이 어떤 버스에서 제공되는지는 datasheet 20페이지의 블록 다이어그램을 보면 알 수 있다. 내가 사용할 TIM2가 쓰는 클락은 APB1이다. Internal Clock 소스로 설정해주고 PWM Generation CH1을 선택해준다. TIM2, PWM CH1에 어떤핀이 연결되어 있는지는 보드매뉴얼을 보고 알 수 있다. Board Selector 를 선택했다면 MX툴에서 그냥 채널 활성화 시키면 해당핀이.. 2022. 5. 26.
STM32 , Timer Interrupt 타이머 인터럽트 사용하기 (TIM2) 이전의 동기식 / 비동기식 카운터 프로그래밍으로 구현하기 글에서 이어진다. 2022.05.23 - [MCU/STM32 (ARM Cortex-M)] - STM32 , 동기식 / 비동기식 카운터 프로그래밍으로 구현하기 ( + Timer 사용 방법 ) STM32 , 동기식 / 비동기식 카운터 프로그래밍으로 구현하기 ( + Timer 사용 방법 ) 4비트 상향 카운터 4비트 하향 카운터 main.h 먼저 main.h 에 플립플롭에 필요한 변수들을 묶어 구조체로 정의해주었다. 함수에 매개변수를 여러개 둘 필요없이 보다 간략하게 짤 수 있다. /* USER CODE eteo.tistory.com 프로젝트 파일은 위 글 똑같고 while문 내에서 지역변수를 토글시키며 HAL_Delay(500) 한 이전버전과 달리 T.. 2022. 5. 25.
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 , 동기식 / 비동기식 상향/ 하향 카운터 프로그래밍으로 구현하기 ( JK 플립플롭 , IC 7490 / 7492 ) 4비트 상향 카운터 4비트 하향 카운터 main.h 먼저 main.h 에 플립플롭에 필요한 변수들을 묶어 구조체로 정의해주었다. 함수에 매개변수를 여러개 둘 필요없이 보다 간략하게 짤 수 있다. /* USER CODE BEGIN Private defines */ typedef struct { uint8_t clockbefore; uint8_t Q; uint8_t Qbar; }JKFF; /* USER CODE END Private defines */ 사실 하드웨어의 동작과 달리 여기서 Qbar의 역할은 없는데 그냥 넣었다. main.c 뒤에 나오는 memset 함수 사용을 위해 string.h 를 포함해주었다. /* USER CODE BEGIN Includes */ #include /* USER CODE .. 2022. 5. 23.
STM32 , 외부 인터럽트 ( EXTI ) 사용하기 EXTI는 External Interrupt의 약자로 인터럽트 Interrupt란 CPU(프로세스)가 프로그램을 실행하고 있을 때 입출력 하드웨어 등의 장치 등에서 예외상항이 발생하여 처리가 필요한 경우 프로세서에게 알려 처리할 수 있도록 하는 기능이다. 결과물 첫번째 스위치를 누르면 오른쪽으로 점멸하며 이동 두번째 스위치를 누르면 왼쪽으로 점멸하며 이동 세번째 스위치를 누르면 전체 점등 네번째 스위치를 누르면 전체 꺼짐 STM32F42시리즈는 다음과 같은 EXTI 구조를 가지고 있다. 각각의 PA0~PH0 핀이 EXTI0 에 연결되고 PA1~PH1이 EXTI1에 연결되는 식이다. 따라서 PD0번과 PC0번을 동시에 EXTI 용도로 설정할 수 없다. 위 사진에 보이듯이 EXTI0 - EXIT4 는 개별 .. 2022. 5. 22.
반응형