初级会员

- 积分
- 59
- 金钱
- 59
- 注册时间
- 2020-10-16
- 在线时间
- 30 小时
|
1金钱
void USART3_IRQHandler(void)
{
unsigned int data;
uint8_t *msg_p=NULL;
if(USART3->SR & 0x0F)
{
data = USART3->DR;
}
#ifndef UART_DMA
else if(USART3->SR & USART_FLAG_RXNE)
{
data = USART3->DR;
ringbuf_put(&ring_fifo,data);
if(ringbuf_elements(&ring_fifo)==1)
USART_ITConfig(USART3, USART_IT_IDLE, ENABLE);
}
#endif
else if(USART3->SR & USART_FLAG_IDLE){
data=USART3->SR;
data=USART3->DR;
#ifndef UART_DMA
USART_ITConfig(USART3, USART_IT_IDLE, DISABLE);
#else
DMA_Cmd(USARx_DMA[3], DISABLE); //先停止DMA才行设置缓冲区大小
ring_fifo.put_ptr = MAX_RCV_LEN - DMA_GetCurrDataCounter(USARx_DMA[3]);
#endif
if((msg_p= strstr((const char *)ring_fifo.data, "+MIPL"))!=NULL) {
fifo_put(dl_buf_id,ringbuf_elements(&ring_fifo),ring_fifo.data);
}else if((msg_p= strstr((const char *)ring_fifo.data, "+CEREG:0"))!=NULL){
Led3_Set(LED_OFF);
}else if((msg_p= strstr((const char *)ring_fifo.data, "+CEREG:1"))!=NULL){
Led3_Set(LED_ON);
}else{
rsp_ok=1;
ring_fifo1.get_ptr=ring_fifo.get_ptr;
ring_fifo1.put_ptr= ring_fifo.put_ptr;
memcpy(ring_fifo1.data,ring_fifo.data,ringbuf_elements(&ring_fifo));
}
ringbuf_clear(&ring_fifo);
}
|
|