momobo 发表于 2016-10-18 16:32:51

stm8l051F3串口接收中断方式接收数据复位

stm8l051F3,串口接收采用中断方式,下发一个字节直接复位
debug下直接出现仿真器断线,如下:
data:image/png;base64,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
串口发送采用查询方式,向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);
}
现在不清楚哪里出了问题,初步怀疑中断配置,或栈空间分配问题,但是看了许多资料和修改了关于中断和栈的配置问题依然没有解决。
请坛子里的大神指条出路,谢了

momobo 发表于 2016-10-19 13:30:14

手头刚好有一块STM8L152的discovery板子,把工程移植到该板子上,做了简单的时钟和GPIO的适配跑起来后,uart收发没有问题。

xmshao 发表于 2016-10-20 17:30:36

你中断里没有清除中断请求位,会导致类似死机现象。

asssdz-382474 发表于 2016-10-20 20:58:57

:):):):):):):):):):):)

lulugl 发表于 2016-10-21 09:55:46

检查一下硬件的问题吧。

asmhai 发表于 2016-11-15 01:34:18

签到,好多行,看看回复,谢谢!

有一个地方 发表于 2019-8-20 17:40:46

stm8l051F3串口接收中断方式接收数据复位 ,可以参考你的代码一下吗,我的一直有问题
页: [1]
查看完整版本: stm8l051F3串口接收中断方式接收数据复位