본문 바로가기

인터럽트13

STM32 , 난수 발생 회로 프로그래밍으로 구현 ( EXTI 사용 ) D플립플롭을 4개 연결한 시프트 레지스터이고 이전의 디지털 금고와는 달리 같은 클락펄스가 들어간다. 프리셋 기능은 EXTI (외부 인터럽트)를 사용했다. 회로는 이전 글의 디지털 금고할때 쓰던 회로를 그대로 사용했는데 실제 사용하는건 왼쪽부터 LED 4개와 맨 아래의 버튼 1개 뿐이다. 15부터 시작해 무작위로 보이는 순서로 변화함 위의 상태도와 일치하게 순환한다. PG3과 연결된 버튼은 풀다운저항이고 Rising Edge 인터럽트로 설정한 버튼이 눌려 인터럽트 발생시, 각 플립플롭의 출력 Q값이 다 1111로 초기화된다. 소스코드 main.h 내 구조체 정의 typedef struct { uint8_t Q; uint8_t clockbefore; }JKFF; main.c 전역변수 선언 및 초기화 /* U.. 2022. 5. 25.
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 , 외부 인터럽트 ( EXTI ) 사용하기 EXTI는 External Interrupt의 약자로 인터럽트 Interrupt란 CPU(프로세스)가 프로그램을 실행하고 있을 때 입출력 하드웨어 등의 장치 등에서 예외상항이 발생하여 처리가 필요한 경우 프로세서에게 알려 처리할 수 있도록 하는 기능이다. 결과물 첫번째 스위치를 누르면 오른쪽으로 점멸하며 이동 두번째 스위치를 누르면 왼쪽으로 점멸하며 이동 세번째 스위치를 누르면 전체 점등 네번째 스위치를 누르면 전체 꺼짐 STM32F42시리즈는 다음과 같은 EXTI 구조를 가지고 있다. 각각의 PA0~PH0 핀이 EXTI0 에 연결되고 PA1~PH1이 EXTI1에 연결되는 식이다. 따라서 PD0번과 PC0번을 동시에 EXTI 용도로 설정할 수 없다. 위 사진에 보이듯이 EXTI0 - EXIT4 는 개별 .. 2022. 5. 22.