본문 바로가기

분류 전체보기

(243)
19.[stm32f103][hal]USB HID 키보드 1. STM32CubeMX 설정18 편에서 했던 HID 마우스 설정이랑 같습니다.http://hnydiy.tistory.com/31 이렇게 하면 기본적으로 마우스 설정으로 되서 usbd_hid.cusbd_hid.h 위에 2 파일에서 값을 바꿔줘야 합니다. 2. usbd_hid.c Middlewares 에 있는 usbd_hid,c 에서 변경 전 변경 후 __ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END ={ 0x05, 0x01, 0x09, 0x02, 0xA1, 0x01, 0x09, 0x01, 0xA1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00,..
18.[stm32f103][hal]USB HID 마우스 1. STM32CubeMX 설정 PA1 Output 설정한 이유는 제가 쓰는 JK 에서 구매한 Dragonboard 에서의 회로도에서 PA1으로 ON/OFF 하는 기능이 추가 되어 있어서 이걸 High 시켜줘야 USB 가 작동 됩니다. 보통은 그냥 PA11 PA12만 연결하면 됩니다. 이렇게 연결하신 분들은 PA1 설정 안하셔도 됩니다. 2. main.c #include "main.h" #include "stm32f1xx_hal.h" #include "usb_device.h" /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private variables ------------------------------------------------..
2.[stm32f103][C언어] static 프로젝트 파일 : static void 함수 이름(void) 이런게 많이 보이네요~ 그래서 한번 해보았습니다. 같은 함수이름을 쓰고 싶을 때 앞에다가 static 이라고 쓰면 같은 이름의 함수 를 쓸수 있습니다. 위에 그림 처럼 같은 함수를 a.c b.c 의 소스 파일을 만들어 봤습니다.결과는 에러가 나면서 실패하게 되네요~~ 하지만 b.c 에 static을 붙이니 오류가 사라집니다. 그렇지만 static 붙은 함수는 그 페이지에서만 쓸수 있습니다.static void fun1 같은 경우는 b.c 에서만 쓸수 잇다는 거지요~만약에 main.c에서 fun1() 을 쓰면 a.c 것을 쓰게 됩니다.
16.[stm32f103][hal]lcd -1602(1) 1. 프로젝트 파일 2. Cube 설정 3. 파일 확인하기 위에 첨부파일을 그냥 붙여넣기 하셔도 되는데 만드는 과정은 처음 프로젝트를 만들면 main.h 에 #include "main.h" #include "stm32f1xx_hal.h" 이렇게 있으실겁니다. 이걸 지우고 include.h로 묶어 놨어요~~ 헤더파일 만드는 과정은 4. 소스 해석 lcd_1602.h #ifndef __lcd_1602_H #define __lcd_1602_H #include "include.h" #define LCD_CMD 0 #define LCD_DATA 1 /* * LCD Command Set */ #define CMD_CLR 0X01 #define CMD_HOME 0X02 #define CMD_ENTRY 0x06 #de..
15.[stm32f103][hal] 타이머 (6) _ Timer PWM One Pulse Mode 1. STM32Cube 설정 원펄스 모드 에 대해서 알아볼까 합니다. 원펄스 모드 말 그대로 한번만 펄스를 준다는 말이지요~ 소스랑 결과를 같이 보시면 이해가 빨리 될거 같습니다. TIM8 설정 부분에서 Repetition 부분이 새로 생긴게 보일실겁니다. 이부분이 몇번의 펄스를 주는가 입니다. 2. 소스 int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM8_Init(); /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1); /* USER CODE END 2 */ while (1) { HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1); H..
14.[stm32f103][hal] 타이머 (5) _ Timer PWM Interrupt 1.stm32Cube 설정 주파수 = 8000000/80/1000 = 100Hz 듀티비 = 100(주파수)/100(설정값) * 10 = 10% 2. 소스 main.c int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM8_Init(); /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start_IT(&htim8, TIM_CHANNEL_1); /* USER CODE END 2 */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } stm32f1xx_it.c void TIM8_CC_IRQHandler(void..
13.[stm32f103][hal] 타이머 (4) _ Timer PWM 1. stm32cube 설정 시간 계산 T = Counter Period / (APB2 timer clocks / Prescaler) %Counter Period 는 최소 100이상이여야한다. %값은 16비트제한으로 최대 65536 입니다. %정확한 카운터를 위해서는 -1을 해야한다. duty비(%) = 100/(Prescaler / Pulse) 시간 계산은 T = 8000000/8 / 1000 = 1ms 듀티비는 100 이면 10% 입니다. 2. 소스 int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM8_Init(); HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1); while (1) { } } m..
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..