초보의 아웅다웅 설계하기/W7500P

W7500P - UART 설정

로망와니 2019. 4. 24. 19:19

W7500P에서 UART RX를 인터럽트 구조로 잡은 상태에서 UART를 연결하지 않으니 정상동작을 하지 않았습니다.

때문에 UART RX 단자를 처음 셋팅때 연결되어있는지 확인하고 연결이 되어 있으면 인터럽트로 동작하도록 잡았는데 가만 생각해보니 풀업 설정만 해도 될 것 같았습니다.

void UART_Config(uint8_t uart, uint32_t baud)
{
uint8_t RXStatus = 0;
  GPIO_InitTypeDef GPIO_InitStruct;
UART_InitTypeDef UART_InitStructure;

if(uart == USART_0){
PAD_AFConfig(PAD_PA, GPIO_Pin_14, PAD_AF0); 
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_Pad = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStruct);

/* UART Configuration for UART1*/
UART_StructInit(&UART_InitStructure, baud);
UART_Init(UART0,&UART_InitStructure);

// if(RXStatus == 1){
/* Configure Uart1 Interrupt Enable*/
UART_ITConfig(UART0,(UART_IT_FLAG_RXI),ENABLE);
/* NVIC configuration */
NVIC_ClearPendingIRQ(UART0_IRQn);
NVIC_EnableIRQ(UART0_IRQn);
DEBUGPRINT("RXStatus0 %d\r\n", RXStatus);
// }
}
else if(uart == USART_1){
// PAD_AFConfig(PAD_PC, GPIO_Pin_3, PAD_AF1); 
// GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
// GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
// GPIO_InitStruct.GPIO_Pad = GPIO_PuPd_UP;
// GPIO_Init(GPIOC, &GPIO_InitStruct);
// RXStatus = GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_3);

PAD_AFConfig(PAD_PC, GPIO_Pin_3, PAD_AF0); 
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_Pad = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStruct);

/* UART Configuration for UART1*/
UART_StructInit(&UART_InitStructure, baud);
UART_Init(UART1,&UART_InitStructure);

// if(RXStatus == 1){
/* Configure Uart1 Interrupt Enable*/
UART_ITConfig(UART1,(UART_IT_FLAG_RXI),ENABLE);
 /* NVIC configuration */
NVIC_ClearPendingIRQ(UART1_IRQn);
NVIC_EnableIRQ(UART1_IRQn);
// }
}
else if(uart == USART_2){
// PAD_AFConfig(PAD_PC, GPIO_Pin_11, PAD_AF1); 
// GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;
// GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
// GPIO_Init(GPIOC, &GPIO_InitStruct);
// RXStatus = GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_11);

PAD_AFConfig(PAD_PC, GPIO_Pin_11, PAD_AF0); 
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_Pad = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStruct);

S_UART_Init(baud);

// if(RXStatus == 1){
S_UART_ITConfig((S_UART_CTRL_RXI),ENABLE); 
 /* NVIC configuration */
NVIC_ClearPendingIRQ(UART2_IRQn);
NVIC_EnableIRQ(UART2_IRQn);
DEBUGPRINT("RXStatus2 %d\r\n", RXStatus);
// }
}
}

'초보의 아웅다웅 설계하기 > W7500P' 카테고리의 다른 글

W7500P 플래쉬 라이팅을 위한 FLM 파일 생성  (0) 2021.01.20
W7500P - BOR  (0) 2019.04.17
W7500P - 리셋타이밍  (0) 2019.04.16
W7500P Soft I2C Setting  (0) 2019.04.16
W7500P UART Setting  (0) 2019.04.16