请问各位吧又有没有遇到如题情况?
我用了两个串口中断UART1,UART4,两个串口都可能接收到数据,但是我只需要用其中一组数据即可,所以我在第一个串口中断产生后关闭另一个串口的接收中断,以防其数据冲突,在处理完命令后,我再打开所有的串口中断接收功能,此时该串口的UARTx->CR的寄存器根本就配不进去,而用Keil Debug 手动配置则可以,这是STM32的BUG还是自己程序的问题呢?不知道各位大虾遇到如此问题没?
中断子程序:
void USART1_IRQHandler(void)
{
static uint8_t i =0 ,idle ;
static uint8_t NewFrameFlag = 0 ;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//产生接收中断
{
// //LED1 ^= 1 ;
if(CloseUT_Flag == 0)
{
CloseUT_Flag = 1 ;
UART4->CR1 &=~ (1<<5) ; //关闭串口4的接收中断
}
RxBuf[i] = USART_ReceiveData(USART1);
主程序处理部分:
if(NewFEndFlag==1)
{
pro_process();
if(Sleng!=0)
{
if((CurFrame.DAddr==HUB_ADDR)&&(MyAddr==1))
UART_send_array(UART4,(uint8_t*)(&CurFrame),Sleng);
else
UART_send_array(USART1,(uint8_t*)(&CurFrame),Sleng);
}
Sleng = 0 ;
NewFEndFlag = 0 ;
CloseUT_Flag = 0 ;
UART4->CR1 |= 1<<5 ; //打开串口中断
USART1->CR1 |= 1<<5 ; //打开串口中断
}
|