2019.04.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 - UART 설정  (0) 2019.04.24
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
W7500P - SWD와 PA3, PA4  (0) 2019.04.12
Posted by 초보 HW 엔지니어 로망와니

댓글을 달아 주세요