티스토리 뷰

STM32Fxx

STM32F429-TIM DMA

라이다 2018. 11. 8. 00:18
반응형

17. TIM DMA

           -이번 장은 Timer를 이용하여 DMA Control을 한다

           -아래 예제는 1초마다 DMA를 실행하여 데이터를 복사하는 방법이다

 

Block diagram


Tim1APB2 클럭을 받는다

 

CUBE MX 설정

1초마다 업데이트 되는지 확인을 위해 PG14output 설정




Half Word 데이터 하나만 복사할 것이므로 Increment Address 체크를 안 해주었다.



분주비에 의해 1clk = 1ms 이다.

 

Source Code

/* Private variables ---------------------------------------------------------*/

TIM_HandleTypeDef htim1;

DMA_HandleTypeDef hdma_tim1_up;

 

/* USER CODE BEGIN PV */

 

/* USER CODE BEGIN PV */

/* Private variables ---------------------------------------------------------*/

uint16_t num = 0x4000;

/* USER CODE END PV */

 

/* USER CODE BEGIN 2 */

__HAL_TIM_ENABLE_DMA(&htim1, TIM_DMA_UPDATE); HAL_DMA_Start(&hdma_tim1_up,(uint32_t)&num,(uint32_t)&GPIOG->ODR,1);

HAL_TIM_Base_Start(&htim1);

/* USER CODE END 2 */

 

/* USER CODE BEGIN 3 */

    if(num == 0x4000)

      num = 0x0000;

    else

      num = 0x4000;

    HAL_Delay(990);

 

GPIOG->ODR Output Data Register0~15번 비트가 GPIOG PORT0~15번 핀을 각각 담당한다 그러므로 0x4000은 이진수로 아래 표와 같이 표현된다.

PG15

PG14

PG13

PG12

PG11

PG10

PG9

PG8

PG7

PG6

PG5

PG4

PG3

PG2

PG1

PG0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

실행 결과

HAL_Delay에 의해 990ms 마다 num 값이 바뀌는데 1초마다 ODR 값을 업데이트 해주므로 LED 1초마다 켯다 꺼진다.

num값이 바뀌면서 ODR 값이 1초마다 업데이트 됨을 보여주기 위해 위와 같은 소스코드를 생성하였다.



 

 





반응형

'STM32Fxx' 카테고리의 다른 글

STM32F429 - SPI DMA  (1) 2018.11.10
STM32F429 - UART DMA  (0) 2018.11.10
STM32F429-DMA IT (Direct Memory Access Interrupt)  (0) 2018.11.08
STM32F429 - DMA poll(Direct Memory Access)  (0) 2018.11.04
STM32F429 - WWDG(Window Watch Dog)  (0) 2018.11.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함