메모리에 직접 접근하는 기술
CPU의 개입 없이 I/O 장치와 메모리 간의 데이터 전송을 허용하는 기술
CPU가 다른 작업을 수행하는 동안에도 I/O 장치에서 데이터를 전송할 수 있으므로 시스템 성능 향상됨
timers, ADC, SPIs. I2Cs, USARTs 에서 사용된다.
따라서 위 기능들을 사용할 때는 MSP Init을 해줘야 함.
아래 예시코드를 보면
UART_MSPInit 함수를 사용한다.
(주의할 점은 하단의 __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE); 가 안써져 있다. 써줘야 UART의 동작이 정상적으로 구현된다)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(huart->Instance==USART1)
{
/* USER CODE BEGIN USART1_MspInit 0 */
/* USER CODE END USART1_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_USART1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN USART1_MspInit 1 */
__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);
/* USER CODE END USART1_MspInit 1 */
}
}
'F💻W > 그 외' 카테고리의 다른 글
STM32 Clock Configuration System Clock 설정 (0) | 2023.06.30 |
---|---|
GPIO MODE의 종류와 설명 (0) | 2023.06.26 |
IAR 프로젝트 생성 후 초기 설정 (0) | 2023.02.21 |
NXP사 NCF3320제품 조사 (0) | 2022.10.24 |
RFID 시스템 정리 (0) | 2022.10.07 |
동기 / 비동기 / UART / I2C / I2S / SPI (2) | 2022.10.06 |