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); } 现在不清楚哪里出了问题,初步怀疑中断配置,或栈空间分配问题,但是看了许多资料和修改了关于中断和栈的配置问题依然没有解决。 请坛子里的大神指条出路,谢了 |
手头刚好有一块STM8L152的discovery板子,把工程移植到该板子上,做了简单的时钟和GPIO的适配跑起来后,uart收发没有问题。 |
你中断里没有清除中断请求位,会导致类似死机现象。 |
:) |
检查一下硬件的问题吧。 |
签到,好多行,看看回复,谢谢! |
stm8l051F3串口接收中断方式接收数据复位 ,可以参考你的代码一下吗,我的一直有问题 |