stm8s103f3串口接收数据串问题

2019-07-19 20:52发布

我用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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
fankai
1楼-- · 2019-07-20 13:54
旦丁中号 发表于 2017-3-22 08:51
也不行额,好郁闷。。你之前有遇到类似的情况么?

别急,我改改程序试试
旦丁中号
2楼-- · 2019-07-20 19:08
fankai 发表于 2017-3-22 12:40
我这里用的是stm8152k4,接收字符串,在发送回来,没问题[mw_shl_code=c,true]u8 receive_data[50];
u8 re ...

写了这么多,真是多谢了~
你的stm8152k4?是什么呢?
我感觉我这边可能是因为波特率太高了
fankai
3楼-- · 2019-07-20 21:07
 精彩回答 2  元偷偷看……
旦丁中号
4楼-- · 2019-07-21 02:38
 精彩回答 2  元偷偷看……
旦丁中号
5楼-- · 2019-07-21 02:39
fankai 发表于 2017-3-22 15:36
是stm8l152k4,L系列,在原来的基础上改了下,波特率改了之后呢,可以正常了吗

好的谢谢。我波特率用115200就可以正常工作,用460800就会出现接收溢出错误,它的官方手册还这么说,我按照里面说的设置 fCPU/16 也没啥作用打算再换个芯片跑高点的波特率,真是谢谢你了~

一周热门 更多>