我用stm8s103f3做串口的数据收发,数据发送正常,但是数据接收不管是中断方式还是轮训方式都无法接收数据串,只能收到每次数据串的第一个字节,下面是我的程序:[mw_shl_code=c,true]static volatile char rx;
static volatile bool new_rx = FALSE;
void main(void)
{
ErrorStatus clk_return_status = ERROR;
clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_MANUAL, CLK_SOURCE_HSE, DISABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
if (clk_return_status == SUCCESS) //SUCCESS or ERROR
{
CLK_HSECmd(ENABLE);
CLK_HSICmd(DISABLE);
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV4);
}
led_init();
UART1_Init((u32)460800, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
UART1_Cmd(ENABLE);
enableInterrupts();
led_on(0);
while(1)
{
if(new_rx)
{
new_rx = FALSE;
UART1_SendData8(rx);
led_toggle(0);
}
}
}
//UART1 RX Interrupt routine.
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
new_rx = TRUE;
UART1_GetITStatus(UART1_IT_OR);
if(UART1_GetITStatus(UART1_IT_RXNE))
{
rx = UART1_ReceiveData8();
}
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
写了这么多,真是多谢了~
你的stm8152k4?是什么呢?
我感觉我这边可能是因为波特率太高了
一周热门 更多>