STM32/touchGFX_STM32 (17) 썸네일형 리스트형 [KEIL][TIP!] keil IDE 한글 깨짐 해결법 * 목표 : 한글 입력 시 ??? 와 같이 깨지는 현상 해결하기 Edit - Configuration [STM32F746] USART6 송신 test * 목표 : USART6을 이용하여 "hello world" 송신 USART6은 stm32f746-disco 보드에서 사용자가 핀을 사용할 수 있는 유일한 방법이다. datasheet를 참고하면 TX / D1 (PC6) = USART6_TX RX / D0 (PC7) = USART6_RX 1. 보드 설정 - USART6 활성화 - FREERTOS task 생성 touchGFX와 함께 사용하기 때문에 uart 통신을 하는 task하나를 따로 하나 더 만들어서 사용하였다. 2. 코드 작성 printf를 사용하기 위해서는 추가해야할 2가지 코드가 있다. 1) #include 2) /* USER CODE BEGIN 0 */ #ifdef __GNUC__ /* With GCC/RAISONANCE, small prin.. [STM32F746] RS-232 1. 정의 - 직렬 통신 방식 중 하나 - 1:1통신(시리얼 통신) = 한 번에 한 비트씩 전송 2. 핀 구성 - 총 9개의 핀으로 구성되어 있음 - RX(Pin2), TX(Pin3), GND(Pin5)만으로 사용하는 경우 많음 - 나머지 핀은 시리얼 통신할 때 하드웨어 컨트롤이 필요한 경우에 사용 3. 주의해야 할 점 - Baud Rate에 따른 케이블의 최대 길이 - 속도가 올라갈 수록 케이블의 길이는 짧아져야 함 [touchGFX] Multi-Language * 목표 : 버튼을 통해 한/영 언어 선택 1. MVP 패턴 구조 2. 인터렉션 생성 3. Add a new language 4. 코드 작성 1) Screen1Presenter.hpp public: void toggleLanguage(); 2) Screen1Presenter.cpp #include #include void Screevoid Screen1Presenter::toggleLanguage() { LanguageId currentLanguage = Texts::getLanguage(); if(currentLanguage == (LANGUAGES::NUMBER_OF_LANGUAGES - 1)) { view.setLanguage(0); } else { view.setLanguage(currentLan.. [stm32F746] PWM * 목표 : PWM 생성하고 100ms마다 PWM 10씩 변화 1. TIM PWM 설정 2. 코드 작성 1) PWM 시작 함수 /* USER CODE BEGIN 2 */ if(HAL_TIM_PWM_Start(&htim12, TIM_CHANNEL_1) != HAL_OK) { Error_Handler(); } /* USER CODE END 2 */ 2) PWM 변화 /* USER CODE BEGIN WHILE */ uint16_t ccr = 0; while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ TIM12->CCR1 = ccr; ccr += 10; if(ccr > TIM12->ARR) ccr = 0; HAL_Delay(100); } /* USER .. [stm32F746] printf 사용 시 추가해야할 코드 #include ------------------------------------- /* USER CODE BEGIN 0 */ #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ /** * @brief Retargets the C library printf function to the U.. [stm32F746] UART + LED control * UART 통신을 통해 '0' -> LED OFF / '1' -> LED ON 1) USART1_IRQHandler() 함수 구현 - stm32f7xx_it.c 파일에 USART1 수신 인터럽트 발생 시 콜백 함수를 호출하고 플래그를 클리어해 주는 코드 작성 void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ if((__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET) && (__HAL_UART_GET_IT_SOURCE(&huart1, UART_IT_RXNE) != RESET)) { HAL_UART_RxCpltCallback(&huart1); // 콜백 함수 호출 __HAL_UART_CLEA.. [stm32F746] UART Echo 프로그램 * 목표 : USART 수신 인터럽트를 이용하여 수신 데이터를 링 버퍼에 저장하고 링 버퍼 데이터를 읽어 송신하는 Echo 1. USART1 인터럽트 설정 - 인터럽트 사용하기 위해 enable 설정 / Call HAL handler 체크 해제 2. 코드 작성 1) 링 버퍼 라이브러리 프로젝트 추가 2) USART1_IRQHandler() 함수 구현 - stm32f7xx_it.c 파일에 USART1 수신 인터럽트 발생 시 콜백 함수를 호출하고 플래그를 클리어해 주는 코드 작성 void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ if((__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET) && .. 이전 1 2 3 다음