刚做了个串口程序,发关正常,接收想采购中断方式,可是一接收到数据就死机,也不知道是死在哪 里。哪位有做好的串口程序中断接收的,分享一下吧,不胜感激!以下是我的程序在这里贴出来,望老手们指点迷津。
void main(void)//**************************主函数
{
uint8 i;
System_Init();
PVD_Config();
__enable_interrupt();
while (1)
{
/*Prompt_Tone(4);
delay_ms(500);
Prompt_Tone(0);
delay_ms(500);
Prompt_Tone(1);
delay_ms(500);
Prompt_Tone(2);
delay_ms(500);
Prompt_Tone(3);
delay_ms(500);
RLED_OFF();
delay_ms(500);*/
for(i = 0; i < 200; i++)
{
RLED_ON();
UART0_Send_Byte(i);
delay_ms(500);
RLED_OFF();
delay_ms(500);
}
}
}
void Uart_Init(void)//***********************串口初始化
{
CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);
GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_3, ENABLE);
GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_In_PU_No_IT);//RXD
USART_DeInit(USART1); //复位UART1
USART_Init(USART1, (uint32_t)9600, USART_WordLength_8b, USART_StopBits_1,USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx|USART_Mode_Rx));//串口初始化
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_Cmd(USART1, ENABLE);
}
#pragma vector = USART1_RX_IRQn//*****************************接收中断
__interrupt void UART1_RX_IRQHandler(void)
{uint8 RxBuffer[40];
USART_ClearFlag(USART1,USART_FLAG_RXNE);
Prompt_Tone(0);
RxBuffer[0] = USART_ReceiveData8(USART1); //Store the received byte in RxBuffer
UART0_Send_Byte(RxBuffer[0]);
return;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>