stm8l051F3,串口接收采用中断方式,下发一个字节直接复位
debug下直接出现
仿真器断线,如下:
串口发送采用查询方式,向PC发数据没有问题。
USART初始化代码如下:
void uart_init(void)
{
CLK_PeripheralClockConfig(UART_CLK, ENABLE);
GPIO_Init(UART_GPIOx, UART_PIN_TX, GPIO_Mode_Out_PP_High_Slow);//TXD
GPIO_Init(UART_GPIOx, UART_PIN_RX, GPIO_Mode_In_PU_No_IT);//RXD
GPIO_ExternalPullUpConfig(UART_GPIOx, UART_PIN_TX, ENABLE);
GPIO_ExternalPullUpConfig(UART_GPIOx, UART_PIN_RX, ENABLE);
USART_DeInit(UART_DEVICE);
USART_Init(UART_DEVICE, (u32)BAUD_RATE, USART_WordLength_8b, USART_StopBits_1,
USART_Parity_No, USART_Mode_Tx|USART_Mode_Rx);
USART_ClearITPendingBit(UART_DEVICE, USART_IT_RXNE);
USART_ITConfig(UART_DEVICE, USART_IT_RXNE, ENABLE);
USART_Cmd(UART_DEVICE, ENABLE);
}
中断处理函数:
INTERRUPT_HANDLER(USART1_RX_IRQHandler, 28)
{
u8 ch;
ch = USART_ReceiveData8(UART_DEVICE);
USART_SendData8(UART_DEVICE, ch);
}
现在不清楚哪里出了问题,初步怀疑中断配置,或栈空间分配问题,但是看了许多资料和修改了关于中断和栈的配置问题依然没有解决。