본문 바로가기

공부/STM32F1

(35)
12.[stm32f103][hal] 타이머 (3) _ Timer OC(Output Compare) Interrupt 1. stm32cube 설정 2. 소스 main.c int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM8_Init(); HAL_TIM_OC_Start_IT(&htim8,TIM_CHANNEL_1); while (1) { } } stm32f1xx_it.c 에 보면 맨 밑에 내려가면 아래와 같은 함수가 생성되어 있을겁니다. 그 안에 HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_7); 추가하면 됩니다. void TIM8_CC_IRQHandler(void) { /* USER CODE BEGIN TIM8_CC_IRQn 0 */ HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_7); /* USER CODE..
11.[stm32f103][hal] 타이머 (2) _ Timer OC(Output Compare) 1. STM32CubeMX 설정 시간 공식 ((APB1or2 timer clock / Prescaler-1) / Counter Period-1) =((8000000 / (8)) / (1000)) =500Hz 1/500 = 0.002 = 2ms 2. 소스 int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM8_Init(); /* USER CODE BEGIN 2 */ HAL_TIM_OC_Start(&htim8,TIM_CHANNEL_1); /* USER CODE END 2 */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }..
10.[stm32f103][hal] 타이머 (1) _ 개요 데이터시트(stm32f103) 1. 타이머 종류는 총 5가지가 있습니다. SysTick Timer 시스템 타이머 hal_delay 가 이걸로 작동하고 있습니다. IWDG,WWDG Independent Watchdog Timer, Window Watchdog Timer Basic Timer 간단한 기능을 하는 내부 타이머 Tim6,7 General purpose timer 범용 타이머 Tim2,3,4,5 Advanced control timer 고급 타이머 (범용타이머+@) Tim1,8 2. STM32Cube 설정 설정하려고 TIM을 여는 순간 영어 + 이상한 용어들로 인해 맨붕... 천천히 살펴보아요~ Slave Mode : 외부 신호에 의해 펄스를 On/Off 시킬때 사용하는 모드에요~기본적으로 Dis..
9.[stm32f103][hal] RCC_MCO 로 Clock 확인하기 1. RCC 설명 RCC 은 클럭을 컨트롤하는 레지스터입니다. 크게 HSI,HSE,PLL,SYSCLK 등이 있습니다. HSI: 내부에서 제공하는 Clock HSE: 외부에서 제공하는 Clock PLL: Clock을 증폭 SYSCLK: 결과물 LSE : 외부 정교한 클락 (RTC)에 사용됨 이렇게 설명할수 있겠습니다. 2. MCO 설명 arm 에서는 클럭을 외부에서 측정할 수 있게 제공하는 기능이 있습니다. 그것이 MCO (Microcontroller Clock Output) PA8번입니다. PA8번 핀을 통해서 HSI LSE HSE PLL SYSCLK 를 측정할 수 있습니다. 3. 핀설정 4. PLL 없이 HSE로 설정 후 측정하기 5. PLL 설정 후 SYSCLK 측정하기 6. 소스 설정대로만 하면 기..
8.[stm32f103][hal] 외부 인터럽트 1. 회로도 PC0 : 인터럽트 0 PC1 : 인터럽트 1 PE3 : 출력 PE4 : 출력 테스트를 LED를 항상 켜져 있다가 외부키 가 눌리면 OFF 시키도록 하려고 합니다 2. STM32CUBE 설정 NVIC 쪽 Enabled를 체크해야 아래와 같은 소스가 자동으로 만들어집니다. 이 부분이 인터럽트 처리 함수 입니다. 3. 소스 main.c int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_SET); while (1) { } /* USER CODE END 3 */ }..
6.[stm32f103][hal] printf 사용하기 1. 소스 #include "main.h" #include "stm32f1xx_hal.h" UART_HandleTypeDef huart1; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART1_UART_Init(void); int fputc(int ch, FILE *f) { uint8_t temp[1]={ch}; HAL_UART_Transmit(&huart1, temp, 1, 2); return(ch); } int main(void) { HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured ..
5.[stm32f103][hal]usart1 polling 1. Cube 설정 2. 소스 #include "main.h" #include "stm32f1xx_hal.h" UART_HandleTypeDef huart1; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART1_UART_Init(void); int main(void) { HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); HAL_StatusTypeDef R_stat; uint8_t UsartD..
4.[stm32f103][hal] Fatal error: ST-LINK, No MCU device found 0. 원인 st-link/v2를 써서 디버깅 할떄!!이경우 sys 부분을 설정 하지 않으면 "Fatal error: ST-LINK, No MCU device found" 라는 에러 메세지를 볼수 있을 겁니다.이런 오류가 나는 이유가 디버깅을 하려면 SWDIO,SWCLK pin (PA13,PA14)을 설정해야 작동을 하는데 설정을 안했기 때문입니다. 1. 준비하기 1. 일단 BOOT0 를 1로 만들어서 Boot mode를 System memory를 만든다. 저와 같은 STM32 Dragon 쓰시는 분은 ISP 부분을 삼각형 이랑 가운데를 점퍼로 연결하면 됩니다. 그리고 나서 RESET 버튼을 눌러주세요. 2. 설치하기 http://www.st.com/en/development-tools/flasher-st..