F7串口中断运行无法进入?

2019-07-20 14:13发布

最近公司一个项目,使用的核心板是原子哥的F767,自己设计了外部电路,现在在串口通讯是有点问题无法解决。
其中用到几个串口,和定时器,其中串口1是和上位机通讯,串口1的优先级最高,抢占优先级是1,其他串口和定时器都是2和3,串口1需要将ADC采集的数据每100ms一次上传给上位机;同时接收上位机的控制指令。串口1我只打开了接收中断,在接受中断中的唯一操作是将接收到的字节存入到我事先准备好的缓存数组中。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)      
{
if(huart->Instance==USART1)
{
  UART1_RX_BUF[++UART1_ReceiveBuf_Count] = aRxBuffer_UART1[0];   //将接收到的字节存入自己定义的接收缓存数组中
  if(UART1_ReceiveBuf_Count%50==0) LED1_Toggle;
}
每次ADC采集完成(100ms),将采集的值存入到我自己定义的发送缓存数组中,串口1的发送是循环发送,主循环中每次最多发送一个字节,主循环很快。
  if(ADC_Sampling_Enable==0)   //1组采样完成
  {
   Vin1=2.5*ADS1251_Read_middle(ADC_Sample)/0x7fffff;
   ADC_Sampling_Enable=1;    //开启下一组采样
   UART1_DisposalTemp[0]='?';    //头
   UART1_DisposalTemp[1]='1';    //表示主板的信息
   UART1_DisposalTemp[2]='1';    //表示测量的电压
   UART1_DisposalTemp[3]='1';    //对应的档位
      ADC_float_to_ascll(Vin1,UART1_DisposalTemp) ;
    UART1_DisposalTemp[11]='#';
    //printf(urt_disposaltemp);
   for(i=0;i<12;i++)
   {
    UART1_TX_BUF[++UART1_SendBuf_Count]=UART1_DisposalTemp[i];   //ADC采样值存入到自己定义的发送缓存数组中,等待发送
   }
  }


  if(UART1_SendBuf_Count!=UART1_SendBuf_Current)  //main循环中发送串口数据,此处每次最多发一个字节
  {
    HAL_UART_Transmit(&UART1_Handler,(uint8_t*)(&UART1_TX_BUF[++UART1_SendBuf_Current]),1,1000); //发送接收到的数据
   while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET);  //等待发送结束
  }

问题如下:
串口1发送没问题,但是接收一段时间后会出现无法接收的现象,程序没有卡死,因为串口还在定时发送,但是就是无法进入串口接收中断。当我串口不发送时(把这句注释掉://UART1_TX_BUF[++UART1_SendBuf_Count]=UART1_DisposalTemp[i]; ),则串口接收就没问题。一开始以为接收中断是不是打开,调试时确认没打开(TXEIE和TCIE都是0);请教,这个可能是什么原因?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
正点原子
1楼-- · 2019-07-21 07:03
 精彩回答 2  元偷偷看……
善良的二哥
2楼-- · 2019-07-21 07:25
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-21 07:26
善良的二哥 发表于 2017-5-22 09:15
原子哥,我是在你们例程上稍作修改的,思路和你们例程应该是差不多的,程序我发出来了,可否帮试下。因为 ...

我习惯用寄存器。。。
正点原子
4楼-- · 2019-07-21 09:52
善良的二哥 发表于 2017-5-22 09:15
原子哥,我是在你们例程上稍作修改的,思路和你们例程应该是差不多的,程序我发出来了,可否帮试下。因为 ...

你说下你的一个简单测试方法,我按你的方法来写代码。
最简单可以复现这个bug的
善良的二哥
5楼-- · 2019-07-21 15:42
 精彩回答 2  元偷偷看……
善良的二哥
6楼-- · 2019-07-21 16:30
 精彩回答 2  元偷偷看……

一周热门 更多>