[STM8] STM8L串口中断问题

[复制链接]
1631|1
 楼主| iangzy 发表于 2017-4-24 21:16 | 显示全部楼层 |阅读模式
本帖最后由 iangzy 于 2017-4-24 21:22 编辑

我这里的中断为何经常无法接收到数据?数据丢失了
  1. void USART1_Init(void)
  2. {
  3.     GPIO_Init(GPIOC, GPIO_Pin_3, GPIO_Mode_Out_PP_High_Fast);  //TXD   //txd初始化为高电平互补推挽输出模式
  4.     GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_In_PU_No_IT);      //RXD   //rxd初始化为不带中断上拉输入模式         
  5.    
  6.     CLK_PeripheralClockConfig (CLK_Peripheral_USART1,ENABLE);//开启USART时钟
  7.     USART_Init(USART1,115200,USART_WordLength_8b,USART_StopBits_1,USART_Parity_No,USART_Mode_Tx|USART_Mode_Rx);//设置USART参数115200,8N1,接收/发送
  8.     USART_ITConfig (USART1,USART_IT_RXNE,ENABLE);//使能接收中断
  9.     USART_Cmd (USART1,ENABLE);//使能USART
  10. }
  1. INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28)
  2. {
  3.     /* In order to detect unexpected events during development,
  4.        it is recommended to set a breakpoint on the following instruction.
  5.     */
  6.     u8 res=0;
  7.     if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  8.     {   
  9.         USART_ClearITPendingBit (USART1,USART_IT_RXNE);//清中断标志
  10.         res = USART_ReceiveData8 (USART1);                                 
  11.         if(USART_RX_STA<500)               
  12.         {
  13.               USART_RX_count=0;
  14.               if(USART_RX_STA==0)
  15.               {
  16.                   USART_RX_count_enable = 1;
  17.               }
  18.               USART_RX_BUF[USART_RX_STA++]=res;               
  19.         }
  20.         else
  21.         {
  22.                 USART_RX_STA|=1<<15;                                       
  23.         }
  24.     }
  25. }


airwill 发表于 2017-4-25 07:15 | 显示全部楼层
还是新人哪
不知道这 "经常" 怎么讲. 多少个字符里丢掉几个?  还是连续发送的时候会丢掉几个?

这种情况, 往往不是你的中断服务程序本身的问题, 而是这个系统的问题.
比如更改优先级的中断长期占有 CPU 时间, 导致这个中断没有机会响应中断. 或者中间关闭了中断允许.
另外, 你的波特率也不低, 中断服务里, 可以多读几次接受寄存器, 读到没有为止, 因为双缓冲问题.
还有可能是 软件 BUG
USART_RX_count=0;                                这个可以随便清零么
USART_RX_BUF[USART_RX_STA++]=res;     这里保持数据没错的
但是你对 USART_RX_STA 的操作太复杂了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

9

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部