반응형
Notice
Recent Posts
Recent Comments
Link
Brise
[STM32CubeMX] STM32F429-disc0 엔코더값 입력받기(quadrature encoder pulse) -1 본문
MCU
[STM32CubeMX] STM32F429-disc0 엔코더값 입력받기(quadrature encoder pulse) -1
naudhizb 2017. 4. 28. 23:20반응형
이 예제는 다음 유튜브 동영상을 참고하여 만들었습니다.
먼저 이전 글에 있던 STM32CubeMX 프로젝트 파일을 불러옵니다.
2017/04/27 - [STM32CubeMX] STM32F429-DISC0 LCD 출력하기
STM32F429-DISC0보드의 경우 LCD와 SDRAM이 많은 핀을 차지하여 TIM2를 이용하여 encoder모드로 설정합니다.
Configuration 탭에서 TIM2를 설정합니다.
Counter Period의 값을 설정하여 타이머 카운터의 최대값을 설정할 수 있습니다.
(최대 값을 넘으면 0으로 다시 바뀝니다.)
테스트용 유저 생성 코드는 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32f4xx_hal.h" /* USER CODE BEGIN Includes */ #include "stm32f429i_discovery_lcd.h" /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ DMA2D_HandleTypeDef hdma2d; I2C_HandleTypeDef hi2c3; LTDC_HandleTypeDef hltdc; SPI_HandleTypeDef hspi5; TIM_HandleTypeDef htim2; SDRAM_HandleTypeDef hsdram1; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); static void MX_DMA2D_Init(void); static void MX_FMC_Init(void); static void MX_I2C3_Init(void); static void MX_LTDC_Init(void); static void MX_SPI5_Init(void); static void MX_TIM2_Init(void); /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE END PFP */ /* USER CODE BEGIN 0 */ uint32_t enc_counter = 0; /* USER CODE END 0 */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA2D_Init(); MX_FMC_Init(); MX_I2C3_Init(); MX_LTDC_Init(); MX_SPI5_Init(); MX_TIM2_Init(); /* USER CODE BEGIN 2 */ BSP_LCD_Init(); BSP_LCD_LayerDefaultInit(LCD_BACKGROUND_LAYER, LCD_FRAME_BUFFER); BSP_LCD_LayerDefaultInit(LCD_FOREGROUND_LAYER, LCD_FRAME_BUFFER); BSP_LCD_SelectLayer(LCD_FOREGROUND_LAYER); BSP_LCD_DisplayOn(); BSP_LCD_Clear(LCD_COLOR_WHITE); BSP_LCD_SetTextColor(LCD_COLOR_DARKGRAY); //BSP_LCD_SetFont(&Font12); HAL_TIM_Encoder_Start(&htim2,TIM_CHANNEL_1); uint8_t arr[100] = {0,}; /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { enc_counter = TIM2->CNT; sprintf(arr,"CNT : %010d",enc_counter); BSP_LCD_DisplayStringAtLine(1,arr); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } | cs |
실행 동영상
반응형
'MCU' 카테고리의 다른 글
STM32F401RE-nucleo CMSIS UART 예제 (0) | 2017.12.05 |
---|---|
STM32F429-DISC1 디스커버리 보드 BSP와 CubeMX 연동하여 사용하기 (0) | 2017.11.11 |
[STM32CubeMX] STM32F429-DISC0 엔코더값 입력받기(quadrature encoder pulse) -2 (0) | 2017.04.29 |
[STM32CubeMX] STM32F429-DISC0 LCD 출력하기 (0) | 2017.04.27 |
[atmega128] RC servo 예제 (0) | 2017.04.22 |
[atmega128] adc 예제 (0) | 2017.04.22 |
아트메가 인공호흡용 아두이노 소스 (0) | 2017.04.15 |
Comments