STM32/이론 6

STM32 외부인터럽트 알아보기

안녕하세요. 오늘은 STM32 외부인터럽트에대해 알아보겠습니다.먼저 데이터시트에 있는 외부인터럽트 블록도를 보겠습니다. (STM32F103RB)AMBA APBbus : 주변장치와 통신하기위해 사용하는 버스입니다. 외부인터럽트는 APB2 버스를 사용합니다.Peripheral Interface : APB 버스를 통해 들어오는 데이터를 처리하여 레지스터에 전달하거나 레지스터에서 데이터를 읽습니다.PCLK2 : 클럭입니다. APB2버스를 사용하므로 PLCK2 클럭을 사용합니다.빗금 숫자 19의 의미 : 레지스터의 크기가 19라는 의미입니다. 해당 MCU는 19개의 외부인터럽트가 있습니다.Input Line : 외부 인터럽트가 발생할수있는 라인입니다.  아래의 그림을보면 EXTI0은 PA0 or PB0 or PC..

STM32/이론 2024.11.09

STM32 PWM TIMER 알아보기

안녕하세요. 오늘은 STM32 PWM TIMER에 대해 알아보겠습니다. PWM은 Pulse width modulation의 줄임말이고 디지털신호를 아날로그신호를 사용하는걸 의미합니다. DC모터의 제어나 LED 밝기조절할때 사용합니다. 이 글에서는 PWM을 사용하여 주파수값에 따라서 LED밝기가 어떻게 변하는지 알아보겠습니다 먼저 PWM을 사용하기위해 클럭을 설정해줍니다 데이터시트 RCC쪽에서 어떤 타이머가 어떤 버스를 사용하는지 확인 가능합니다 이 글에서는 TIM1,2를 사용할거고 사용할 클럭은 48MHz로 설정했습니다 48MHz를 분주하기위해서 prescale이라는걸 사용합니다. Period를 설정해기위해 auto-reload register를 설정합니다. 100을 설정했다고하면 CNT값이 0->1->..

STM32/이론 2023.12.31

STM32 GPIO제어하기 INPUT MODE

안녕하세요. 오늘은 NUCLEO-F103RB 보드로 HAL라이브러리를 사용하여 GPIO READ를 제어해보겠습니다. 먼저 사용할핀을 INPUT 설정하겠습니다 PC12는 회로도상 아무것도 연결해있지않고 풀업설정을 하지않고 테스트해보겠습니다 /* USER CODE BEGIN WHILE */ while (1) { if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_12)) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,1); // LED ON } else { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,0); // LED OFF } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } PC12의 상태에따라서 PA5번핀의 ..

STM32/이론 2023.11.18

STM32 GPIO제어하기OUTPUT_3편(MX_GPIO_Init함수 분석)

안녕하세요. 오늘은 NUCLEO-F103RB 보드로 HAL라이브러리를 사용하여 GPIO OUTPUT를 제어해보겠습니다. 3편에서는 OUTPUT을 설정할때 사용하는 코드를 분석해보겠습니다 우선 GPIO의 설정을 하는 MX_GPIO_Init(); 함수입니다 static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level..

STM32/이론 2023.10.22

STM32 GPIO제어하기OUTPUT_2편(컨피규레이션 설정)

안녕하세요. 오늘은 NUCLEO-F103RB 보드로 HAL라이브러리를 사용하여 GPIO OUTPUT를 제어해보겠습니다. 1편에서 사용방법을 간단하게 확인해봤었고 2편에서는 자세히 알아보겠습니다 사용 보드: NUCLEO-F103RB 개발환경 : STM32CubeIDE 1편에서 설정했던 PA5를 GPIO_Output으로 설정했었고 PA5의 컨피규레이션 옵션을 알아보겠습니다 *GPIO output level GPIO의 초기상태를 Low로 할지 High로 할지 선택하는 옵션입니다. 선택하는 옵션에 따라서 아래의 코드가 변합니다 MX_GPIO_Init함수는 처음 프로젝트를 만들면 호출하는 함수이고 GPIO를 세팅하는 코드들이 모여있는 함수입니다. *GPIO mode GPIO의 모드를 Push pull/Open d..

STM32/이론 2023.10.14

STM32 GPIO제어하기 OTUPUT_1편(LED깜빡이기)

안녕하세요. 오늘은 NUCLEO-F103RB 보드로 HAL라이브러리를 사용하여 GPIO WRITE를 제어해보겠습니다. 1편에서는 사용방법만 간단하게 확인해보고 2편에서는 자세히 알아보겠습니다. 사용 보드: NUCLEO-F103RB 개발환경 : STM32CubeIDE NUCLEO-F103RB 보드에는 LED가 기본적으로 달려있어서 달려있는 LED를 사용하면 편리합니다. 빨강 네모에 있는 LD2를 사용하면 됩니다. 그리고 LD2는 초록색이고 PA5에 연결되어 있습니다. stm32cubeIDE에는 코드제너레이터가 있으므로 매우 편리합니다 0번부터 3번까지 진행하여 PA5핀을 출력설정해줍니다. 그리고나서 저장을 누르면 코드가 자동으로 생성됩니다. 이제 main.c에 가서 코드를 작성합니다 HAL라이브러리를 사용..

STM32/이론 2023.10.02